了解對稱加密與非對稱加密後,接下來就來介紹,加密貨幣的「私鑰」、「公鑰」和「地址」是什麼,三者又是如何產生的。以下就以比特幣的協議來介紹地址、公鑰、私鑰,流程較為複雜,我會簡化某些流程,方便大家閱讀。
私鑰(private key )
「私鑰」是一段由電腦隨機產生的亂數,包含了大約五十個數字和大小寫字母, 沒有固定的邏輯和規則。私鑰與公鑰是成對產生的,世界上只會有一組,不會重複,在加密貨幣的世界裡,公鑰會散布在網路上,但「私鑰」只能本人持有,因此「私鑰」就代表資產的所有權,誰擁有「私鑰」誰就擁有該錢包地址中的使用權,所以千萬要好好保管你的「私鑰」,不要隨便交付任何人,也不要將它記在任何可能被竊取的電腦或雲端硬碟。
公鑰( public key )
比特幣的「公鑰」是透過稱為「橢圓曲線加密」的演算法(也就是上圖的 SECP256K1)對「私鑰」進行加密後所產生的一組亂數。「橢圓曲線密碼學」的算法為不可逆,也就是說,即使「公鑰」暴露,也不會影響「私鑰」的安全性,因為沒辦法藉由「公鑰」推算出「私鑰」。這點非常重要,可說整個加密貨幣密碼學的匿名和安全都是架構於這個基礎之上。
地址 ( address )
比特幣地址是根據「公鑰」經過兩次雜湊函數(上圖的 SHA256)轉換為「公鑰哈希」,這個過程同樣是不可逆的,之後再將「公鑰哈希」經過編碼推算得到地址。地址的功能是接收比特幣,某個地址收到比特幣後, 只有擁有該地址對應「私鑰」的人才能使用它。
如果讀到這,你腦袋一片混亂,那就看完這張圖,然後記住:
- 通過『私鑰』可以得到計算過程中所有的值。(所以千萬要保管好)
- 私鑰鎖起來的,公鑰可以解開。公鑰鎖的,私鑰可以解開。
- 只有『公鑰哈希』和『錢包地址』可以通過互逆運算進行轉換,所以它們是等價的。之所以要進行編碼是為了「可讀性」。
*本文由 AMIS 首席科學家 – 陳昶吾博士協助審閱。