公钥密码--Diffie-Hellman密钥协商算法
公鑰密碼--Diffie-Hellman密鑰協商算法
- 算法過程
- 正確性
- 安全性
博主是初學公鑰密碼,本意是想整理一些經典的密碼系統,加深記憶也方便日后查找;整理成一個系列公鑰密碼,方便檢索。
如果有錯,歡迎指正。
Diffie-Hellman密鑰協商算法是由Whitfield Diffie,Martin E.Hellman在1976年發表的“New Directions in Cryptography”一文中提出。Diffie-Hellman算法的思想是通過交換信息,來協商出只有雙方知道的密鑰。
算法過程
全局公開(敵手可以看到)兩個參數:
- 素數ppp
- 整數aaa,aaa是ppp的原根
A,BA,BA,B雙方進行協商,希望得到一個只有雙方知道的密鑰。
- AAA選擇隨機數XAX_AXA?,XA<pX_A<pXA?<p,計算YA=aXAY_A=a^{X_A}YA?=aXA? mod ppp,公開YAY_AYA?
- BBB選擇隨機數XBX_BXB?,XB<pX_B<pXB?<p,計算YB=aXBY_B=a^{X_B}YB?=aXB? mod ppp,公開YBY_BYB?
現在全局公開的參數多了兩個:
- YAY_AYA?
- YBY_BYB?
現在A,BA,BA,B可以用YA,YBY_A,Y_BYA?,YB?進行計算,得到協商密鑰:
- AAA計算YBXAY_B^{X_A}YBXA?? mod ppp
- BBB計算YAXBY_A^{X_B}YAXB?? mod ppp
通過下面的正確性證明,我們可以知道YBXAY_B^{X_A}YBXA?? mod p=YAXBp=Y_A^{X_B}p=YAXB?? mod ppp,則A,BA,BA,B協商出了只有雙方知道的密鑰。
正確性
- 要證YBXAY_B^{X_A}YBXA?? mod p=YAXBp=Y_A^{X_B}p=YAXB?? mod ppp
因為
- YB=aXBY_B=a^{X_B}YB?=aXB? mod p→YBXAp\rightarrow Y_B^{X_A}p→YBXA?? mod p=(aXBp=(a^{X_B}p=(aXB? mod p)XAp)^{X_A}p)XA? mod p=aXBXAp=a^{X_BX_A}p=aXB?XA? mod ppp
- YA=aXAY_A=a^{X_A}YA?=aXA? mod p→YAXBp\rightarrow Y_A^{X_B}p→YAXB?? mod p=(aXAp=(a^{X_A}p=(aXA? mod p)XBp)^{X_B}p)XB? mod p=aXAXBp=a^{X_AX_B}p=aXA?XB? mod ppp
證畢。
安全性
根據原根定義,aia^iai可生成1……p?11……p-11……p?1的所有數,即aaa mod ppp, a2a^2a2 mod ppp,……ap?1a^{p-1}ap?1 mod ppp是p?1p-1p?1個互不相同的整數。
- 離散對數:對于任意b,1≤b≤p?1b,1\le b\le p-1b,1≤b≤p?1,有b=aib= a^ib=ai mod ppp,iii被稱為bbb的以aaa為底數的模ppp的離散對數。
- 離散對數問題: 已知b,a,pb,a,pb,a,p,計算iii。
離散對數問題屬于NPNPNP復雜性類。
Diffie-Hellman密鑰協商算法的安全性基于離散對數問題的困難假設。
因為敵手只能看到全局公開的四個參數p,a,YA,YBp,a,Y_A,Y_Bp,a,YA?,YB?,基于離散對數問題的困難性,敵手幾乎無法在多項式時間內算出XA,XBX_A,X_BXA?,XB?,則我們認為Diffie-Hellman密鑰協商算法是安全的。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的公钥密码--Diffie-Hellman密钥协商算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现代密码学3.4--CPA安全,多次加密
- 下一篇: 公钥密码--Elgamal