說完對稱式金鑰後的優缺點,那麼公開金鑰的缺點就是算的速度比對稱式慢。
原因在於公開金鑰的安全性都在解數學問題,而對稱式金鑰有的是用區塊加密,區塊加密有的可以支援同步運算,並且運算量沒有公開金鑰這麼大。
優點就是有數位簽章、解決了對稱式金鑰的金鑰管理問題,因為每個人都是2把鑰匙,一個公開金鑰和對應的私密金鑰就能和其他人做溝通。
對於公開金鑰和對稱式可以截長補短,因此就有了混合式的加密。
目前最常使用的就是TLS,也就是http的https。
那個簡單的混合式就是Diffie-Hellman key exchange,可以達成金鑰交換產生出會話金鑰session key。
其中的一個方法在去年的Day23有說明,這次用的是ECC:
首先會先選擇要使用的橢圓曲線,以及所要的參數P(基點)。
A選擇一個隨機數x當私鑰並計算X=xp當作公鑰,B也選擇一個隨機數y當私鑰並計算Y=yp,之後A把X給B,B把Y給A,之後A計算xY=xyP,B計算yX=xyP。
我們可以得知xY=Xy=xyP,這就完成金鑰交換。