如果你還不了解什麼是數位簽章和雜湊函數,請看這一篇文章,在理解這兩者之後,就可以來理解非對稱式加密的運作原理。
看完這篇文章,你/妳將會學到:
1. 如何發行/驗證數位簽章?
2. 數位簽章的優點?
3. 數位簽章在區塊鏈上的應用?
4. 數位簽章的潛在風險?
非對稱式加密、數位簽章原理介紹
認識了 SHA256 之後(若是還不清楚的人,可以參考我們的上一篇文章)總算可以了解什麼是非對稱式加密了。首先,每個人會獲得一組公鑰(Public Key)及私鑰(Private Key 或 Secret Key),而這兩支「鑰匙」都是由一串 0 和 1 所組成。 (什麼是公鑰、私鑰?請參考)
其中公鑰是公開的資訊,也就是網路上的所有人都能查詢到任意使用者的公鑰。而私鑰則是只有使用者本人才會知道的一串數字。
當使用者要「簽名」時,只要把文件內容及私鑰一起送入 SHA256 函數,就能產生一組 256 位元(256 個 0 和 1)的數字,而這串數字就是所謂的數位簽章,以故事中的例子來說,靜香若想給小夫 100 元就會是:
根據 SHA256 的特性,不論輸入的訊息長短,輸出的內容都會是 256 位元的數字。而這串數字,將會和訊息內容一起被廣播到其他的節點,當其他人收到這組數字時,就能用公鑰驗證這個簽章的正確性。
如何驗證數位簽章
在現實生活中,我們可以通過比對一個人過去的簽名字跡,來確認眼前的簽名是否為本人所寫。而對於數位簽章,則是能透過公鑰與驗證函數來確認這串數字是否為本人所發送的。驗證函數就是驗證者輸入訊息內容、數位簽章及公鑰後,會給出 True 或 False 兩種結果的函數,參考下方圖片:
還記得前面提到公鑰屬於公開資訊嗎?因此網路上的任何人都能拿這些訊息去驗證簽章的有效性。當得到 True 的結果時,表示這個數位簽章的確是由發送者本人的私鑰經過 SHA256 所產生出來的。因為私鑰是不公開資訊,這個世界上只有本人才知道,所以可以確定這個簽章是本人的「親筆簽名」。
數位簽章相比傳統簽章的優點
對於傳統簽章,有心人士可以透過模仿筆跡,或是複製一個一模一樣的印章來偽造出簽名。但是在數位簽章中,每次產生的數組都不一樣。也就是說,每筆交易的每次簽名都是獨一無二的,即使知道這次的簽名長什麼樣子,也無法預測下次的簽名會是哪串數字。
這是因為每次簽名時輸入進 SHA256 中的訊息除了私鑰之外,還包含了該次交易的訊息內容,只要訊息內容不同,所產生的數組就會不同,更精確地說,只要內容稍微有一點點的改變,所產生的結果就會完全不同,這在密碼學中稱之為雪崩效應(Avalanche Effect),可以參考以下的圖片來更好地理解:
可以看到,兩則訊息只有一個字的不同,得到的結果卻完全不同,這樣的特性讓有心人士無法複製簽名。圖片中的網站在這裡,有興趣的人可以自己來試試看。
數位簽章在區塊鏈上的應用
回到上一集開頭的例子,大雄又接收到了一則訊息,內容和上次的一樣,只是這次在最後附上了一組數位簽章:
於是大雄就在自己的電腦上使用驗證函數確認,得到的結果是 False,因此判斷這則訊息並不是由靜香本人發出,很可能是有人想陷害她!而網路上的其他節點也透過相同的方式驗證,並得到相同的結果,最後並沒有任何人將這筆帳目記載自己的帳本上,靜香也得以逃過被陷害的命運,可喜可賀。
數位簽章的潛在風險
前面提到,個人的私鑰只有自己知道,一旦使用者忘記了自己的私鑰,將會再也無法發行任何簽名。也就是說,該使用者的所有加密貨幣會被永久地鎖在他的帳戶中。
如果想要更簡單的入相關概念,可以看我們這個影片:
如果是傳統金融(例如銀行),忘記密碼時還可以透過聯繫銀行人員,請他們幫忙找回密碼。但是在區塊鏈上,沒有任何人可以幫忙找回私鑰。因為前面有提到,依照現在的科技,即使耗費數千年,也無法從簽章回推使用者的私鑰。
另一方面,區塊鏈也不像傳統金融有兩道、或是三道的認證手續(例如在刷卡時的簡訊認證),只要擁有私鑰,就能進行任何交易。一旦私鑰外洩,駭客可以輕易地將該帳戶的所有加密貨幣轉走。
因此,使用者必須更加小心地保管私鑰,必須同時保證不會忘記、也不能外流,關於更多安全性的內容,可以參考這篇文章:如何收藏及保護你的加密貨幣、數位資產?
總結
在這篇文章中,我們完整地介紹了數位簽章的運作原理,以及在區塊鏈上的應用,它可以有效地幫助使用者辨認訊息是否由本人傳送,保證了區塊鏈的安全性。在最後也提到使用數位簽章的潛在風險。
以上這些都只是我們遇到的第一個問題。下集,我們會介紹誰來負責擔任驗證者的角色,以及礦工是如何挖「礦」的,敬請期待!