1. 程式人生 > >密碼學_Diffine-Hellman祕鑰交換 3

密碼學_Diffine-Hellman祕鑰交換 3

開始先問個問題:對稱加密和非對稱加密的對稱指的是什麼? 答案請看第四節               

 接著第二節繼續來,現在有個黑客,他監視了Alice和Bob公鑰交換的全過程並且想拿到這個共享祕鑰K,因為 XA,XB是私有的,只對Alice和Bob自己知道,黑客並不知道,所有黑客看到的過程裡只有 q, α, YA,YB, 也就是hacker只能通過這些資訊來推算K,要想知道K, hacker必須通過離散對數計算,對於大素數求其離散對數是極其困難的,所以黑客沒招!!

總之一句話: 本演算法的安全性是建立在:求 素數的模 素數冪運算 相對容易,但計算離散對數很難. 

上面說了那麼多,下面舉個簡單例子:

q=353, α=3, XA=97,XB=233, 求對應的公鑰?

這題求公鑰還是非常簡單的,YA= α^XA mod q = 3 ^ 97 mod 353= 

YB =α^ XB mod q = 3^ 233 mod 353= 

上面兩個式子怎麼解? 用什麼定理解呢?

YA=3 ^ 97 mod 353

3^2≡9  mod 353

3^4≡ 81 mod 353

3^8≡ 81*81 ≡207 mod 353

3^16≡ 207*207≡136 mod 353 

3^32≡ 236*236≡ 140 mod 353

3^64≡ 140*140≡ 19600≡ 185 mod 353

so then  YA= 3^97 = 3^(64+32+1)≡185*140*3 mod 353≡ 40 

同理求出 YB=248

這裡想問一下: 上面計算過程用的什麼定理?沒錯,是中國剩餘定理(the Chinese Remainder Theorem- CRT)

現在他們各自的公鑰都解出來了,接下來是交換公鑰,各自拿到對方的公鑰之後再計算出共享祕鑰,

Alice拿到YB後計算: K=(YB)^XA mod 353= 248^97 mod 353 = 160

Bob拿到YA後計算:K=(YA)^XB mod 353=40^233 mod 353= 160

同樣,上面兩個計算也用CRT求解即可,

現在,我們黑客能獲得 q:353, α=3, YA=40, YB=248

這個例子裡我們用的數值都比較小,所有hacker想破解K的方法是什麼?

即,K= YB^ XA mod 353= YA^ XB mod 353

這個等式裡的未知數是XA,XB

只要知道其中一個就能立即知道共享祕鑰,

但恰巧的是hacker可以通過 YA=α^XA mod 353=40 反解出 XA,也就是用窮舉攻擊求離散對數,

但真實情況下數值是很大的,不可行

綜上,Diffine-Hellman祕鑰交換演算法被破解目前還是不可能的!