密碼學_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祕鑰交換演算法被破解目前還是不可能的!