DH密鑰交換和ECDH原理

?原文?http://blog.csdn.net/sudochen/article/details/9164427

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

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

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

下面是DH交換的過程圖:

本圖片來自wiki

下面我們進行一個實例

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

2.愛麗絲選擇一個秘密整數(shù)a=6, 計算A = g^a mod p并發(fā)送給鮑伯。??

A = 5^6 mod 23 = 8.?

3.鮑伯選擇一個秘密整數(shù)b=15, 計算B = g^b mod p并發(fā)送給愛麗絲。??

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。交換雙方可以在不共享任何秘密的情況下協(xié)商出一個密鑰。ECC是建立在基于橢圓曲線的離散對數(shù)問題上的密碼體制,給定橢圓曲線上的一個點P,一個整數(shù)k,求解Q=kP很容易;給定一個點P、Q,知道Q=kP,求整數(shù)k確是一個難題。ECDH即建立在此數(shù)學難題之上。密鑰磋商過程:

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

1) Alice生成隨機整數(shù)a,計算A=a*G。?#生成Alice公鑰

2) Bob生成隨機整數(shù)b,計算B=b*G。?#生產(chǎn)Bob公鑰

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

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

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

5) Bob收到Alice傳遞的A,計算Q =b*A#Bob通過自己的私鑰和Alice的公鑰得到對稱密鑰Q

6) Alice收到Bob傳遞的B,計算Q`=a*B#Alice通過自己的私鑰和Bob的公鑰得到對稱密鑰Q'

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(密鑰磋商)兩種套件

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • PBKDF2是什么? PBKDF2(Password-Based Key Derivation Function)...
    Fitz_Lee閱讀 2,330評論 0 0
  • DH算法原理 DH 是 Diffie-Hellman的首字母縮寫,是Whitefield與Martin Hellm...
    spyder_men閱讀 4,921評論 0 0
  • 一、準備知識 在開始介紹前,需要首先了解一下消息摘要、數(shù)字簽名、數(shù)字證書的知識 1、消息摘要 - Message ...
    浪夠_閱讀 2,839評論 1 2
  • 一言半句便通玄,何用丹經(jīng)千萬篇?人若不為形所累,眼前便是 大羅天。若要煉形煉神,須識歸根復命。所以道:“歸根自有歸...
    地中海的傳說閱讀 2,168評論 1 1
  • 大概喜歡你是我犯得最大的一個錯了,把自己折磨成現(xiàn)在這個樣子,我有時候很煩,不想談戀愛不想結婚,但我覺得我可能應該靜...
    sunshineghfg閱讀 221評論 0 0

友情鏈接更多精彩內(nèi)容