2023-10-24|閱讀時間 ‧ 約 3 分鐘

TLS 中的加密演算法 - Diffie Hellman

TLS (Transport Layer Security)是一種加密的安全協定,被用在加密的網路傳輸,本篇會介紹TLS的handshake(握手機制),以及其中的使用的演算法Diffie Hellman Algorithm。

本篇第一段以擬人的描述說明鑰匙交換的概念,第二段展示演算法的數學。


案例中以Alice 、Bob作為主角,進行加密的溝通。

第一步Alice會先跟Bob約定用某一個鑰匙加解密,這個公鑰(public key)稱為鑰匙p,此時Alice以及Bob會各自產出一把私鑰,安全的保存在各自的電腦,分別為鑰匙a、鑰匙b。

再來Alice要對Bob進行加密溝通前,會把私鑰a跟鑰匙p合成的鑰匙ap,傳遞給Bob,Bob將收到的鑰匙ap加上自己的私鑰b再合成鑰匙abp ,而Bob也回傳給Alice一把由私鑰b跟鑰匙p合成的鑰匙bp,同樣Alice將鑰匙bp加上自己的私鑰a合成鑰匙abp,最終得到Alice及Bob都同時擁有鑰匙abp,他們就可以開始進行加密傳遞訊息了。


數學上公鑰會用質數p,元根g來作為數字

假定Alice & Bob決定用p=23 g=5約定,Alice選擇一個數字a=6,

計算A=g^a mod p=8後傳給Bob,Bob挑選數字b=15

計算B=g^b mod p=19 送給Alice

此時Bob和Alice可以利用已經約定好的p, g以及對方傳來的A,B算出一個只有對方知道的密鑰K

由 de:Benutzer:DaMutz — 自己的作品, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=4265606

算式:

K=A^b mod p=(g^a mod p)^b mod p =g^ab mod p

= B^a mod p =(g^b mod p)^a mod p

Alice用 B^a mod p = 19⁶ mod 23 算出K=2

Bob用A^b mod p=8¹⁵ mod 23 算出K=2

實務上a, b, p的數字都會非常大,在a,b 是100位數,p 是300位的質數情況下,破解這段方程變得幾乎不可能。

Reference: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.