中國國家主席習近平 10 月 24 日大讚區塊鏈技術:「中國要把區塊鏈作為核心技術、自主創新的重要突破口,加速推動區塊鏈技術和產業創新發展….」頓時幣圈的夥伴們都醒了,揣摩上意讓比特幣(BTC)價格大漲40%,看到這現象領導們八成滴咕著:我是要你們大鳴大放區塊鏈底層應用,誰叫你們去炒幣啊!!

SOURCE:Fortune Insight
不過,迎接中國明年一月開始的「密碼法」,各類科普區塊鏈基礎概念的確也潮了起來。自己做過些區塊鏈應用,以前常常要對小白長輩們解釋什麼是私鑰,公鑰可以幹嘛,講久了開始用生活中的例子來對應,效果似乎不錯。這篇就用口語來解釋下支撐比特幣安全性的「公開密鑰加密」(也稱為非對稱式密碼學) 的基本概念。
什麼是公開密鑰加密,Wiki給的註解是這樣的:
如果任何人使用公鑰加密明文,得到的密文可以透過不安全的途徑(如網路)傳送,只有對應的私鑰持有者才可以解密得到明文;其他人即使從網路上竊取到密文及加密公鑰,也無法(在數以年計的合理時間內)解密得出明文。
看的有點矇了,一句話來說,在不安全的網絡環境中傳資料需要加解密處理,而「公鑰(Public Key)」用來加密,「私鑰(Private Key)」用來解密,但那又是什麼意思?
先來個情境題,假設Alice要去郵局寄一段需要保密的訊息給Bob, 因為擔心傳輸過程中旁人看到訊息內容,Alice買了個保險箱,塞進了要保護的明文紙條上鎖(加密)後寄出,接著在下一個包裹裝入了鑰匙,分批寄給了Bob。最後打了個電話過去說有兩個包裹,一個是加密文件,一個是解密方法,Bob記得查收裡頭內容…。

這個情境有沒有似曾相識?把敏感資訊檔案Zip壓縮起來加上密碼,Email給朋友後再想辦法讓對方拿到密碼解檔。或是在通訊軟體中跟家人交代網路銀行ID,再透過其他的手段(email等)傳遞密碼。
這些方式在不安全的網路中是很容易被監聽,拼湊,甚至攔截竄改後重寄給收件人。原因是解密用的鑰匙在傳輸中太容易曝光了。
所以聰明的密碼學家想了個辦法,一樣Alice要送訊息給Bob,但這一次是要求Bob自己先去買鎖頭、把鑰匙留在身邊,先將未上鎖的鎖頭寄給Alice, Alice將訊息用Bob的鎖頭鎖上(加密)後寄出。Bob收到後用身邊的鑰匙解鎖(解密),少了傳遞密碼這一段安全性大幅提升。

所以對應起來:
「公鑰」是鎖頭,任何訊息都可以拿來上鎖(加密)
「私鑰」就是鑰匙,用來解密,留在身邊不上網傳輸
「公鑰用來加密,私鑰用來解密」這樣回頭看Wiki的解釋有沒有更清楚。另一個每天都會遇到的CASE,瀏覽器訪問網站有時要填入敏感資料(比方信用卡號,帳密等)此時受信任的網站伺服器在接收前先發公鑰給瀏覽器,使用公鑰(鎖頭)加密後傳輸,伺服器再用對應的私鑰解密,確保安全,這就是公開密鑰加密的基礎概念。
接著有人會問,公鑰在外頭流通,有可能拆解公鑰猜出私鑰嗎?
這當然有可能,這個破解過程也稱為碰撞攻擊,生活的例子就像是你忘了帶鑰匙請鎖匠開門,有些門十秒就開了,有些門師傅弄半天跟你搖搖頭說不行。
鎖匠開門大多是知道鎖的機制,因此即使沒有原始鑰匙都能打開。而現代密碼學就是增加鎖的複雜度,最基本的是無法分解鎖的結構,也就是近乎要嘗試所有私鑰(不斷嘗試各種鑰匙組合)的才可能成功,讓破解者付出龐大時間資源代價,在限定運算時間內(比方100年)達到安全牢固的標準了。
在虛擬貨幣世界中,私鑰是證明數字資產所有權的唯一簽章,在區塊鏈世界是認章不認人的。對應到現實銀行帳戶上,私鑰的權力就像:
- 提款卡+密碼
- 存摺+印章
- 網路銀行帳號+密碼
也就是掉了私鑰就像上面任一組合遺失,都有可能資產被盜走。而比特幣的公鑰是從私鑰演算來的,這個算法過程只能單向,幾乎不可能從公開的地址反推回私鑰。

下一章將會介紹hash(哈希,也稱為雜湊值)的生活應用,如果這篇文章您覺得還可以請給我個掌聲,要是真的為你解惑了(或說是觀念有通不用再死背)那就鼓掌5次以上吧👏。
