[轉]SM2算法第二十二篇:DH與ECDH秘鑰協商原理


SM2算法第二十二篇:DH與ECDH秘鑰協商原理

轉載地址:http://blog.csdn.net/qq_30866297/article/details/51465439

標簽: ECDHDH密鑰協商
 分類:

下面我們以Alice和Bob為例敘述Diffie-Hellman密鑰交換的原理。

1,Diffie-Hellman交換過程中涉及到的所有參與者定義一個組,在這個組中定義一個大質數p,底數g。

2,Diffie-Hellman密鑰交換是一個兩部分的過程,Alice和Bob都需要一個私有的數字a,b。

下面是DH交換的過程圖:

本圖片來自wiki

下面我們進行一個實例

1.愛麗絲與鮑伯協定使用p=23以及g=5.

2.愛麗絲選擇一個秘密整數a=6, 計算A = g^a mod p並發送給鮑伯。 
   A = 5^6 mod 23 = 8.

3.鮑伯選擇一個秘密整數b=15, 計算B = g^b mod p並發送給愛麗絲。 
   B = 5^15 mod 23 = 19.

4.愛麗絲計算s = B a mod p 
  19^6 mod 23 = 2.

5.鮑伯計算s = A b mod p 
   8^15 mod 23 = 2.

 

ECDH密鑰交換:

ECDH:

       ECC算法和DH結合使用,用於密鑰磋商,這個密鑰交換算法稱為ECDH。交換雙方可以在不共享任何秘密的情況下協商出一個密鑰。ECC是建立在基於橢圓曲線的離散對數問題上的密碼體制,給定橢圓曲線上的一個點P,一個整數k,求解Q=kP很容易;給定一個點P、Q,知道Q=kP,求整數k確是一個難題。ECDH即建立在此數學難題之上。密鑰磋商過程:

假設密鑰交換雙方為Alice、Bob,其有共享曲線參數(橢圓曲線E、階N、基點G)。

1) Alice生成隨機整數a,計算A=a*G。

2) Bob生成隨機整數b,計算B=b*G。

3) Alice將A傳遞給Bob。A的傳遞可以公開,即攻擊者可以獲取A。

    由於橢圓曲線的離散對數問題是難題,所以攻擊者不可以通過A、G計算出a。

4) Bob將B傳遞給Alice。同理,B的傳遞可以公開。

5) Bob收到Alice傳遞的A,計算Q =b*A

6) Alice收到Bob傳遞的B,計算Q`=a*B

Alice、Bob雙方即得Q=b*A=b*(a*G)=(b*a)*G=(a*b)*G=a*(b*G)=a*B=Q' (交換律和結合律),即雙方得到一致的密鑰Q。

        目前Openssl里面的ECC算法的套件支持是ECDSA/ECDH。在國密的SSL套件中,可以使用ECDSA/ECC(密鑰加密傳輸),ECDSA/ECDH(密鑰磋商)兩種套件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM