前段時間,我做了一個視頻 三分鐘講清楚比特幣,在這個視頻中,我分享了了解比特幣的一個基本事實和兩個核心, 其中第一個核心就是數字籤名,數字籤名保證了誰都無法拿到我們的帳戶權限,而 POW 工作量證明保證誰都不可以隨便更改我們的帳戶餘額,最終這兩個核心保證比特幣資產神聖不可侵犯。
而數字籤名的根本就是密碼學,今天我講講加密的事情。
比特幣的安全性依賴於數字籤名技術的安全性
在《比特幣:一種點對點的電子現金系統》( Bitcoin: A Peer-to-PeerElectronic Cash System )的第二章《交易》裡定義:
一枚電子貨幣( an electronic coin )是這樣的一串數字籤名:每一位所有者通過對前一次交易和下一位擁有者的公鑰( Public key ) 籤署一個隨機散列的數字籤名,並將這個籤名附加在這枚電子貨幣的末尾,電子貨幣就發送給了下一位所有者。而收款人通過對籤名進行檢驗,就能夠驗證該鏈條的所有者。
其中提到的數字籤名方案,無論是 RSA,還是 ECDSA 或 Schnorr 加密算法,都是非對稱加密算法。
那麼什麼是非對稱加密?什麼又是對稱加密?
對稱加密( Symmetric Cryptography )
對稱密鑰加密,又稱私鑰加密。是指信息的發送方和接收方採用同一個密鑰去進行數據的加密和解密。如下圖所示:
優點:加密/解密速度快,適合大數據量加密
缺點:密鑰的管理與分配存在風險
如何把密鑰發送到接收方(需要解密數據的人)?如果接收方住在我們小區,那麼可以把密鑰抄紙上,直接跑過去給他。但是,如果他住在別的城市,別的國家,怎麼辦?郵寄嗎?太慢!通過 Email 發送嗎?被黑客攔截了怎麼辦?
為了解決這個問題,就有了非對稱加密。
非對稱加密( Asymmetric Cryptography )
非對稱加密,又稱公鑰加密,它解決了對稱加密的缺陷,使得比特幣更安全。非對稱加密和對稱加密,兩者的主要區別在於:對稱加密使用共享(單一)密鑰加密解密數據,而非對稱加密使用密鑰對解密數據。如下圖所示,兩把鑰匙不同。
優點:安全性高,解決了對稱加密的缺陷缺點:加密和解密速度比對稱密鑰加密慢
非對稱加密使用的密鑰對,就是公鑰(public key)和私鑰(private key)。公鑰可以對外發布,人人可見。而私鑰則自己保管,不外洩。
非對稱加密使用這密鑰對中的一個密鑰進行加密,另一個密鑰進行解密。比如用公鑰加密,那麼用私鑰解密。用私鑰加密,就用公鑰來解密。
用公鑰加密信息,用私鑰解密信息
舉個例子,小明和小王是特工,使用非對稱加密算法保證信息傳遞的安全。
1、小明和小王,都知道對方的公鑰。2、小明發送「任務 A 」給小王。小明使用小王的公鑰對信息加密。加密之後,信息變成 「XXXXXXX」。就算信息被有心人截獲,由於沒有小王的私鑰,也無從解密,不能得知「任務A」的信息,更不能進行篡改。3、小王收到信息,用自己的私鑰去解密信息,讀取「任務 A 」。4、接著,小王通過小明的公鑰,把回饋「已收到,任務 A 開始執行」用小明的公鑰加密,發給小明。5、同理,小明用自己的私鑰解開信息。而第三人因為沒有小明的私鑰,就算捕獲信息,也不能讀取內容,更不能篡改。
用私鑰加密信息,用公鑰解密信息
這種情況是用來確保:信息是由私鑰擁有方發布的,且是完整的、正確的。這被稱作數字籤名。公鑰的形式就是數字證書。
舉個例子,銀行發布一個客戶端補丁供所有用戶更新。
1、為了確保客戶下載的是完整、正確、沒有被篡改的補丁,銀行為這個補丁打上一個數字籤名,就是用銀行的私鑰對這個程序加密,然後發布。2、小明的電腦裡,已裝有銀行的數字證書,就是銀行對外發布的公鑰3、小明下載補丁,用數字證書(公鑰)去解密這個補丁的數字籤名,如果解密成功,補丁才能安裝使用。
通過數字證書(公鑰)解密,小明知道這個補丁確實是銀行發布的,是完整的、正確的、沒有動過手腳的,可以放心使用。
非對稱加密在區塊鏈中的主要應用
1、身份驗證:通過私鑰驗證身份,是否擁有對應的公鑰,對應的錢包地址。2、加密:加密過程中,編碼信息,只有擁有私鑰的人,才能解密和閱讀經過加密的區塊鏈數據。
總結
打個簡單的比方,對稱加密,就像你家大門的鑰匙,丟了它,撿到鑰匙的人就可以通過這把鑰匙打開你家大門,有失竊的可能。非對稱加密,就像一對鑰匙AB,而且是鎖門是鑰匙 A,開門是鑰匙 B,那麼就算你丟了鎖門的鑰匙 A ,拿到鑰匙 A 的人,也不能打開你家大門,家裡還是安全的。
總之,非對稱加密讓區塊鏈技術更安全,更健壯。看完這篇,對稱加密和非對稱加密你了解了嗎?
參考文章
《比特幣白皮書:一種點對點的電子現金系統(吳忌寒翻譯版)》《How Does Symmetric and Asymmetric Public Key Cryptography Work?》《如何用通俗易懂的話來解釋非對稱加密?》