340 likes | 1.11k Views
橢圓曲線密碼系統 ( ECC ). 橢圓曲線密碼系統是由 Neil Koblitz 和 Victor Miller 兩位學者分別於 1985 年首先提出 。 RSA 系統中需要使用長度為 1024 位元的模數,才能達到足夠的安全等級,而 ECC 只需使用長度為 160 位元的模數即可。 橢圓曲線密碼系統植基於橢圓曲線離散對數問題。即在有限體 F 之下,給定橢圓曲線 E 上的兩相異點 P 及 Q ,其中當點 P 的秩 (order) 若夠大時 ( 大於 160 位元 ) ,要找出一整數 k 使得 Q=kP 是很難的計算難題。. 橢圓曲線. 一般 橢圓曲線 為三次方程式.
E N D
橢圓曲線密碼系統(ECC) • 橢圓曲線密碼系統是由Neil Koblitz和Victor Miller兩位學者分別於1985年首先提出。 • RSA系統中需要使用長度為1024位元的模數,才能達到足夠的安全等級,而ECC只需使用長度為160位元的模數即可。 • 橢圓曲線密碼系統植基於橢圓曲線離散對數問題。即在有限體F之下,給定橢圓曲線E上的兩相異點P及Q,其中當點P的秩(order)若夠大時(大於160位元),要找出一整數k使得Q=kP是很難的計算難題。
橢圓曲線 • 一般橢圓曲線為三次方程式
橢圓曲線密碼系統(ECC) • 一般的橢圓曲線密碼系統所考慮的橢圓曲線為 y2=x3+ax+b • 我們考慮有限體(finite field)Fpn上滿足此類橢圓曲線的點(x,y)。我們用Epn(a,b)來表示的解集合。 Epn(a,b) = {(x,y) | x,yFpn, y2=x3+ax+b} • Example: E23(1,12) = {(x,y) | x,yF23, y2=x3+12x+1} = {(0,1),(0,22),(3,8),(3,15), (5,5),(5,18),(6,6),(6,17), (13,10),(13,13),(17,9),(17,14), (18,0),(19,2),(10,21)}
橢圓曲線密碼系統(ECC) • y2=x3+ax+b • 在Fp下我們要求4a3+27b2 0 • 在F2n下我們要求b 0 • 橢圓曲線有一個特殊的點,記為O,它並不在橢圓曲線上,此點稱為無限遠的點(the point at infinity)。 • 在適當定義Epn(a,b)中點的運算及加入O後會形成group。 • 在本課程中,我們僅介紹Fp的情形。
Ep(a,b)中點的加法 • 兩個相異的點P和Q相加: • 假設P不與Q對稱於x軸,則點R= P + Q與經過P、Q兩點的割線與橢圓曲線之另一交點對稱於x軸。 • 假設P與Q對稱於x軸,則P + Q=O
Ep(a,b)中點的加法 • 雙倍的點: • 點2P = P + P與經過P的切線與橢圓曲線之另一交點對稱於x軸。
Ep(a,b)中點的加法 • 若P=(x,y),則-P為與P對稱於x軸之點。即-P=(x,-y) • 對所有的點PFp,則P+O=O+P=P,P+(-P)=0 • 令P=(x1,y1)Fp及Q=(x2,y2)Fp且P -Q,則P+Q=(x3,y3),其中, • k為正整數, kP表k個P相加。
Example • 橢圓曲線y2=x3+16x+10(mod 23),(18,14)+(5,10)=? • 所以(18,14)+(5,10) =(2,21)
橢圓曲線的加密範例(Koblitz,1985) Bob先選定橢圓曲線y2=x3+ax+b與有限體Fp並選擇橢圓曲線上一點G。 Bob選定私鑰k並計算出B=kG。 Bob將公開金鑰(B,G)公布。 Alice隨機選一正整數r並並計算出R=rG 接著Alice將明文編碼成橢圓曲線上一點M後計算成密文C=M+rB 並將(R,C)傳送給Bob。 Bob收到密文後利用私鑰計算出明文編碼M = C - kR 。
橢圓曲線加密的安全性 • 考慮等式R=kG,其中 R,G為Ep(a,b)上的點, k為小於點 G的order的整數。 • 不難發現,給定 k和 G,根據加法法則,計算 R很容易;但給定R和 G,求 k就相對困難了。 • 這就是橢圓曲線加密算法採用的難題。
ECCDH金鑰交換協定 • 目前最常用來傳送ECC金鑰的金鑰交換協定,是修正過的Diffie-Hellman金鑰交換協定。其基本想法是將各自的公鑰傳給對方,接著即可計算出一把共享的私鑰,並用此私鑰產生出相對應新的公鑰。 • 在ECC運算裡,金鑰交換協定稱為ECCDH。 • ECCDH公鑰演算法是由雙方都使用相同的橢圓曲線所計算出來的,曲線上會有一個特殊且唯一的點稱為無窮遠的點(point at infinity),接著使用者任選一亂數做為私鑰,並將亂數乘以無窮遠的點之結果傳送給其他使用者,其他使用者接收到之後,因為接收者知道橢圓曲線與無窮遠的點,所以使用傳送方的乘積再做運算,就可以讓雙方共享一把相同的金鑰。
ECCDH金鑰交換協定 • 首先,Alice與Bob選擇先選定橢圓曲線y2=x3+ax+b與有限體Fp並選擇橢圓曲線上一點G。 • Alice任選擇一小於p的亂數dA,接著計算dA乘以點G ,得到一點QA= dA G 。dA與QA就分別是Alice的私鑰與公鑰。 • Alice將公鑰QA傳送給使用者Bob。 • Bob任選擇一小於p的亂數dB,接著計算dB乘以點G ,得到一點QB= dB G ,dB與QB就分別是Bob的私鑰與公鑰 • Bob將公鑰QB傳送給Alice。 • Alice可利用Bob傳送過來的公鑰QB來計算出共享金鑰S =dA QB = dA dB G 。 • Bob可利用Alice傳送過來的公鑰QA來計算出共享金鑰S =dB QA = dA dB G 。
ECCDH金鑰交換協定 • 首先,Alice與Bob選擇先選定橢圓曲線y2 = x3 – 4與有限體F211並選擇橢圓曲線上一點G=(2,2)。 • Alice任選一小於p的亂數dA= 203,得點QA=dAG = (203)*(2,2)=(130,203)並將公鑰(130,203)傳送給使用者Bob。 • Bob任選擇一小於p的亂數dB= 121,得點QB= dB G = (121)*(2,2) = (115,48),並將公鑰(115,48)傳送給Alice。 • Alice可利用Bob傳送過來的公鑰QB來計算出共享金鑰S =dA QB = (203)*(115,48) = (161,169) 。 • Bob可利用Alice傳送過來的公鑰QA來計算出共享金鑰S =dB QA = (121)*(130,203) = (161,169)。
量子密碼學 • 前使用的密碼系統中,如DES、RSA、ElGamal或橢圓曲線密碼系統,其安全程度都僅屬於計算安全 (Computational Secure) 。 • 量子電腦的出現,使得現存的密碼系統都將不再安全。 • 有機會利用量子電腦來發展出無條件安全的密碼系統
量子電腦的基本概念 • 量子電腦 (Quantum Computer)是利用量子物理的法則所設計的一種電腦。 • 與傳統電腦最大的差別在於量子電腦可以同步地處理同一件工作,因此可大幅縮減在運算上所需花費的時間。 • 量子電腦的基本元素稱之為量子位元 (Quantum Bits),簡稱為qubits。
量子電腦的特性 • 疊加性 (Superposition) 假設每一個量子位元都可能會有兩種狀態,不是順時針旋轉就是逆時針旋轉,若我們把一個粒子放到一個暗箱裡,然後用一個微弱的脈衝打進去,此時箱子內的粒子可能是順時針,也可能是逆時針,若不打開箱子看,我們無法得知這個粒子旋轉的方向。這種所有狀態都可能出現的情況就稱為疊加性。 • 測量性 (Measurement) 在箱子打開之前,量子是以疊加的狀態存在,也就是順時針旋轉或逆時針旋轉都有可能。一旦箱子被打開後,答案就公佈了,量子的疊加性也隨之消失。
量子電腦的特性(續) • 可逆性 (Reversing) 在量子運算中,所有運算在未經測量前都是可逆的。 • 不可複製性 (No-cloning) 無法對處於疊加狀態中的量子進行複製。 • 糾纏性 (Entanglement) 無法分解成任意兩個量子態的乘積。
量子電腦對傳統密碼學的威脅 • 以猜數字遊戲為例,一方從0到9的數字中任選四個不同的數字,由另一方來猜,總共有10 × 9 × 8 × 7 = 5040 種可能的答案。 • 若把這個猜謎遊戲交給傳統電腦來執行,就算電腦依序測試各種可能的答案,例如,先猜0123,若不對,接著就猜0124,如此不斷地猜下去,徹底嘗試過5040種可能的答案,也只需要幾秒鐘的時間就可以找到正確的答案。
量子電腦對傳統密碼學的威脅(續) 由於量子電腦可以對同一個問題的不同狀態進行同步的處理,所以量子電腦可以更有效率地來執行這個猜謎遊戲。其作法如下: • 我們可以用14個位元來表示任何由4個數字所組成的十進位數字,例如「00000001111011」就相當於十進位的「0123」,「00000001111100」相當於十進位的「0124」。 • 然後將每一個位元用一個量子位元來表示,再將這14個量子位元同時放到一個箱子中。 • 打入弱脈衝,使之旋轉方線產生變化,此時這14個量子就進入疊加狀態了,它同時代表214種可能發生的狀態,然後把這些處於疊加狀態的粒子放入量子電腦中執行。 • 由於量子電腦可以同時嘗試所有可能的答案,一個單位時間後,量子電腦就會告訴我們正確的謎底為何,而傳統電腦可能需要5040個單位時間,才能完成所有可能答案的搜查。
量子密碼學 • 概念是利用光子的偏震方向來代表「0」或「1。 • 偏震方向的定義有兩種,分別是直線方案 (Rectilinear)與斜線方案(Diagonal)。 • 直線方案中偏振方向「|」代表「1」,偏振方向「-」代表「0」。 • 斜線方案中偏振方向「\」代表「1」,偏振方向「/」代表「0」。 • 而用來測量偏振方向的偵測器也可分為兩種,分別為直線型「+」,與斜線型「×」,「 + 」型偵測器可用來判定「|」及「-」偏振的光子;同理, 「×」型偵測器可用來判定「\」及「/」偏振的光子。
利用量子密碼進行秘密通訊 • 春嬌隨意用直線或斜線方案來傳送一連串可代表0或1位元的光子給志明。 • 由於志明不知道春嬌依序用了哪些方案來傳送這些光子,故志明也隨意選用直線或斜線偵測器來測定光子的偏振方向。若志明所選的偵測器恰好與春嬌發送時所選用的方案一樣時,則志明可正確地測量出該光子是代表0或是1位元;反之,若選用的偵測器與春嬌發送時所選用的不一樣時,則有一半的機率可以正確地猜出所要表示的位元。 • 因此春嬌與志明要確認哪些位元是判定正確的位元、哪些是誤判的位元。確認方法只針對依序所使用方案做一確認並沒有談及所判定的結果為何。
利用量子密碼進行秘密通訊(續) • 春嬌與志明核對完之後,他們捨去掉那些使用錯誤偵測器所得到的位元,而保留用正確的偵測器所判定的位元。因此雙方可共同得到一段由正確判定位元所組成的加密金鑰。 • 不過春嬌與志明所持有的這個加密金鑰也可能會有錯誤,原因是在傳遞的過程中攻擊者還是有可能會進行竊聽。春嬌與志明可以執行一個簡單的錯誤檢查協定,例如雙方所協議出來的金鑰長度共有1064個位元,春嬌就從中選取64個位元與志明做比對,若比對的結果有誤,就表示在傳送的過程中遭到監聽,金鑰的協議需要重新來過;若無誤,則春嬌與志明大可相信他們手中的金鑰是一致的。 • 金鑰協議無誤後,就可利用此一協議出來的金鑰來做加解密,由於春嬌選擇要傳送的量子位元是隨機的,志明選擇用來判定偏振方向的偵測器也是隨機的,所協議出來的金鑰也可當做一次性密碼系統(One-Time Pad)的金鑰來使用,因此可以達到無條件的安全。
範例 • /| / /| \ /| --\ • 010 011 0101 • x+x x+x x++x (春) • xxx ++x x+x+ (志) • 0?0 ?11 01?? (核對) • 001101 • 01 (比對) / + | or ― | x / or \ • 正確 key = 0110 • 錯誤 竊聽 從新來過