這次提到的概念是比上次的「Symmetric-key Algorithm (對稱加密)」來的更進階的「Public-key Cryptography (非對稱加密)」,其概念被廣泛運用在數位簽章。
前言
若你還不了解「Symmetric-key Algorithm (對稱加密)」是什麼,建議在閱讀本文前,先看看我前一篇文章「Symmetric-key Algorithm (對稱加密)」,否則可能會搞不清楚在本篇中,基於上一篇介紹裡所使用的單字意思。
對稱加密所無法解決的難題
在上一篇的對稱加密概念介紹中,其作法可以有效的使多方溝通之間存在更高的安全性,但共享密鑰也同時意味著「對方有與你相同的權限」,你能加密訊息後發布,對方也能,你能透過密鑰解密,對方也能。
在很多時候,A方與B方雖然需要加密溝通,但卻必須分清楚雙方身份,否則可能存在偽造的風險,注意,這邊所說的A、B方並不一定是單一的,他可以是群體,也就是說有某一群人稱為A,某另一群人稱為B,而雙方都有著相同的密鑰可以用來加密及解密訊息,這兩群人透過對稱加密來加密訊息並溝通,但這僅能保護雙方在溝通時,不被非A、B兩方的人了解密文意思而已,並不能驗證該訊息的發送者身份是A還是B,因為雙方的密鑰是相同的,因此萬一有某人為B方,而他卻聲稱自己是A方的人,並且使用密鑰加密訊息發給B方,那B方又該如何驗證該人的身份?
Public-key Cryptography (非對稱加密)
為了解決上述問題,我們必須改成「加密與解密使用不同密鑰」,於是「Public-key Cryptography (非對稱加密)」誕生了。
公鑰、私鑰
- 由於加密與解密需要使用不同密鑰,因此若是要達到雙方可以溝通的效果,至少需要要4把鑰匙,在一開始的時候,雙方各別生產一對密鑰,這一對密鑰一把當公鑰,一把當私鑰,注意,這兩把密鑰並不是分開獨立生成的,它們之間有著數學關連,至於分成公、私鑰是做什麼的,等等會解釋,目前只要先記得,這兩把鑰匙是一對,不可被拆散的。
- 在這邊提醒一個重點,雖然說一對公鑰與私鑰之間有著關聯,可是並不能透過單一一把鑰匙推算出另一把鑰匙,也就是說,今天就算別人知道你的公鑰,對方也是無法破解出該公鑰所對應的私鑰。
釋出公鑰
將公鑰交給對方,用於給對方在之後進行解密使用。
加密、解密
- 接下來就是非對稱加密的特殊之處了,這時候雙方手上都持有自己的私鑰及對方的公鑰,「自己的私鑰」用於「加密」,「對方的公鑰」用於「解密」。
- 下方示意圖是B方傳送訊息給A方的情境,B方運用自己的私鑰加密後傳送給A方,而A方則使用B方的公鑰進行解密。
- 運用私鑰所加密的訊息只有該私鑰所對應的公鑰才能解密。
- 所以萬一有人想偽造身份,除非是偷到密鑰,否則是不可行的。
運用
非對稱加密被運用在許多地方,而常見的數位簽章 (Digital Signature)也是利用此概念來達到辨識身份及加密的原理。另外,許多標榜像是加密傳輸、加密聊天等應用,也都看得到非對稱加密的蹤影,只要私鑰不洩漏,基本上不會有第二則密文可以被該公鑰解密成有意義的明文。
P.S. 非對稱加密中常見的加密演算法有:
RSA、DH、ECDH、ECDSA (橢圓曲線數字簽名算法)、ElGamal、SM2。
有興趣的朋友可以點擊連結或自行上網研究。