有趣的簡寫越來越多了,而且越來越長了...
我個人認為這個章節應該擺在對稱加密和非對稱密碼的中間來介紹,
不過因為我想要將橢圓曲線密碼學的東西納進來一起講,
所以只好先介紹完橢圓曲線。
想法是這樣的:
兩個人只能在不安全通道上進行通訊(也就是沒有安全通道傳遞密鑰)、而且沒有事先協議的情況之下,
有沒有可能進行安全通訊。
答案是可以的,我們可以在不安全的通道上進行密鑰的協議。
換一個說法是,
如果攻擊者可以竊聽兩人之間的通訊訊息,
他也沒辦法得到密鑰。
DHKE方法可以讓兩個人協議出密鑰,在用此密鑰進行對稱式加密。
假設 Alice 和 Bob 在不安全通道上進行通訊。
這裡有一個比較生動的表示方法。
兩個人一開始都有一杯同樣顏色的顏料,
也各自有自己的秘密顏料,沒有人知道秘密的顏色。
接著將共有顏料跟祕密顏料混和在一起,
並傳給對方。
拿到對方混和顏料的兩人都各自將自己的秘密顏料加到裡面。
於是兩人得到共同的秘密。
(這杯共同秘密顏料裡面有:共同顏料+兩人的秘密顏料)
OS:到底是誰想到這種表示方法的...
以上的說明只是一種比喻,這個比喻的漏洞就是調色是可以逆推的,
而 DHKE 的運算是不可逆推的。
來看看這個交換密鑰的方法,
首先兩人都擁有的數字是 和p 、
兩人各自的秘密(私鑰)是 a 和 b。
(以下的運算都要 mod p)
於是第一步兩人分別將 提升到 a 次方及 b 次方,成為公鑰(稱為A及B)。
接著交換公鑰。
收到對方公鑰之後,兩人在各自將公要提升到自己的私要次方,即得到共享秘密。
而共享秘密即是:
而運用這個共享秘密兩人就可以進行對稱式加密通訊。
如果你想要實際操作DHKE的話,可以找一個人陪你玩(?)。
如果沒有人要陪你玩的話,你可以到下面這個網站實際操作看看,
(只是比較無聊一點)
https://www.irongeek.com/diffie-hellman.php
昨天講了橢圓曲線密碼學的基礎,
今天就要來實際看他可以幹嘛。
ECC可以運用在密鑰的交換上,因為他具有很好的不可逆運算性質,
因此可以套用在原本使用離散對數的 DHKE 上面,稱作ECDH。
有了ECC的基本概念,ECDH 其實會比 DHKE 還要好理解。
其實跟DHKE一樣,兩人有各自的私鑰(a, b),還有公開的基點(G)
藉由倍數關係,
獲得共同的密鑰,進行對稱式加密 ( AES )。
要注意的是,橢圓曲線上的運算結果是一個座標,我們用算出來的 x 座標當密鑰。
DHKE這樣看似公鑰密碼系統的密鑰協定算法,其實是在 RSA 公布前就出現了,
而他最後所達成的是對稱式密鑰的交換,不能完全算是非對稱式加密。
以下要介紹的演算法,是基於DHKE的非對稱式加密演算法。
ElGamal是埃及密碼學家طاهر الجمل 的英文翻譯,
他將 DHKE 延伸成一種加密演算法。
ElGamal 大致上和 DHKE 一模一樣,只是他減少了訊息需要被傳送的次數,
以及最後是直接用此共同密鑰加密傳送訊息。
可以看到這個圖片上所表示的,
接收者先公開自己的公鑰,也就是上圖的 (a, p, y) (對應到以上所提的 ,p,A)
傳送者將要傳送的訊息加密後連同提升過的 一起傳送給對方。
接收者就可以運用已有的方式解密。
先前說過,對稱式加密的好處是速度快,而非對稱式安全性較高,
因此就很適合用非對稱式加密將「對稱式密鑰(比如說AES的密鑰)」加密後傳送,
再使用該密鑰進行快速的對稱式加密。
結束。
之後來講雜湊函數,掰掰~
圖片來源:
https://warroom.rsmus.com/encryption-basics-dhke/
https://www.researchgate.net/figure/The-DHKE-algorithm-51_fig21_331287260
http://cryptowiki.net/index.php?title=El_Gamal_Scheme
https://billatnapier.medium.com/little-protects-you-on-line-like-ecdh-lets-go-create-it-a14188eabded