-
Recent Posts
Recent Comments
Categories
Links
Daily Archives: November 5, 2019
Diffie-Hellman Key Exchange整理
在雙方要做加密通信時,需要共同協商出密鑰,無論是加解密同一把,或是加密/解密分開, 都需要某種方式讓雙方得到密鑰。最簡單的做法就是透過事先設定好密鑰,或是另外透過安全的傳輸傳輸密鑰。 但是密鑰要在安全傳輸的通道裡傳輸,安全傳輸的通道怎麼來的,例如可能是實體的額外的線路,也可能是兩方私下先共同約定好特定密鑰的加密通道,不過這兩種做法似乎都要先約定好,是否有辦法直接在不安全的通道裡在雙方都沒有事先溝通的參數的情況下協商出一把只有雙方才知道的密鑰呢? 這個問題等同於如果有一個人在偷聽兩個陌生人的加密對話,從頭聽到尾(包括兩個人加密協商階段也能偷聽到的情況下),是否可以讓偷聽的人無法知道兩個陌生人原始的對話,也就是避免偷聽的人解開兩人通信使用的密鑰,答案是可以,這邊必須注意的是 – 偷聽是只在旁邊偷偷觀察,不是MTIM中間人攻擊 關於這個問題可參考 https://en.wikipedia.org/wiki/Key_exchange 比較多詳細的描述 Diffie-Hellman密鑰交換算法可以解決這個問題: 即使是在不安全的通道裡雙方還是可以協商出一同一把密鑰,而竊聽的人無法輕易得知那把密鑰。 他的做法是給定兩個數 p, g p是質數、g是 primitive root modulo p https://en.wikipedia.org/wiki/Primitive_root_modulo_n Alice、Bob透過不安全的通道交換p, g的資訊(所以這個資訊可能被第三者知道) Alice挑了一個數字a 計算出 A=g^a mod p,然後將A數字給BobBob挑了一個數字b 計算出 B=g^b mod p,然後將B數字給AliceAlice將拿到的B 計算出 K1=B^a mod pBob將拿到的A 計算出 K2=A^b mod p事實上 K1 … Continue reading
Posted in General
Leave a comment