名詞解釋
迪菲-赫爾曼密鑰交換(英語:Diffie–Hellman key exchange,縮寫為DH
) 是一種密鑰交換協(xié)議(不是加密算法)镐作,雙方使用DH確定對稱密鑰后藏姐,要使用加密算法實(shí)現(xiàn)加密和解密。
前向保密(英語:Forward Secrecy该贾,FS
)羔杨,指的是如果長期使用的密鑰泄漏了,不會(huì)導(dǎo)致過去的會(huì)話被解密杨蛋。比如你的一對公鑰/私鑰泄漏了兜材,過去的會(huì)話就可以被解密出來。
DH原理
圖示.png
g一般是2或者5逞力,p是一個(gè)質(zhì)數(shù)曙寡。一般來講服務(wù)端
持有g(shù)與p,g與p一般放在xxx.dh文件中
如何生成dh文件
2048代表p是一個(gè)2048位的大數(shù)寇荧,可以指定:
openssl dhparam -5 -out redis.dh 2048
或
openssl dhparam -2 -out redis.dh 2048
密鑰交換步驟:
- 服務(wù)端生成一個(gè)自然數(shù)a=6(保密的举庶,不傳輸),并傳輸以下三個(gè)值給客戶端
- A = 56 mod 23 = 8
- g = 5
- p = 23
- 客戶端生成一個(gè)自然數(shù)b=15(保密的砚亭,不傳輸)灯变,并傳輸以下一個(gè)值給服務(wù)端
- B = 515 mod 23 = 19
- 服務(wù)端計(jì)算key = Ba mod p
- 196 mod 23 = 2
- 客戶端計(jì)算key = Ab mod p
- 815 mod 23 = 2
- 雙方均獲得密鑰 key = 2
數(shù)學(xué)原理
(ga mod p )b mod p 等價(jià)于 gab mod p
(gb mod p )a mod p 等價(jià)于 gba mod p
所以服務(wù)端與客戶端計(jì)算得到的密鑰是相同的。
redis應(yīng)用DH配置實(shí)踐