作者| 宇星出品|白話區塊鏈(ID:hellobtc)

在《想要安全地保管資產,先要知道錢包的這些知識》中,我們可以了解到在區塊鏈的這些錢包中,公鑰可以比作是銀行賬戶,而賬戶地址類似於銀行卡號,私鑰可以被看成銀行卡號以及銀行卡密碼的組合。

這樣一類比似乎對區塊鏈中的私鑰、公鑰、地址這些名詞有了比較清晰的認識,但是其實在這些名詞的背後的理論支撐是非對稱加密技術,它是什麼樣的技術呢,今天大白就給大家科普一下。

01 對稱加密是什麼?

首先,在講非對稱加密之前,先簡單講一下對稱加密。

對稱加密也叫做單密鑰加密,指的是用同一個密鑰對信息進行加密和解密。簡單講就是上鎖和開鎖都是一把鑰匙。

比如在現實生活中,你想寄一封信給你的朋友,為了信的內容不被他人剽竊,你會想著用一把鑰匙把信件鎖在安全的櫃子裡,然後再將物品連同櫃子一起寄給朋友,而你的朋友只能用你這把鑰匙才能打開這個櫃子進而取出信件。

這樣一來就保證了信件在郵寄過程中不被他人看到。在密碼學中以上過程可以理解為如下:

在上圖的過程中,“上鎖”和“開鎖”都用的同一把鑰匙,這把鑰匙就相當於對稱加密中的“私鑰”,而“上鎖”和“開鎖”過程就相當於“加密”和“解密”過程,“信件”則是我們要加密的信息,信息加密後則是“密文”,解密後則是“明文”。

但是細心的小伙伴可能會想到,信件上鎖放入櫃子固然安全,但是開這個櫃子必須要用上鎖的那把鑰匙,那麼問題是這把鑰匙怎麼給朋友?

鑰匙一旦選擇郵寄,那就存在安全隱患,除非親手把鑰匙給朋友,那這樣的話幹嘛不親手把信件直接給朋友。所以對稱加密的一個問題是密鑰配送困難問題。

針對密鑰配送這一難題,密碼學史上偉大的發明——非對稱加密出現了。

02 非對稱加密是什麼?

非對稱加密有一對密鑰,分別是私鑰和公鑰,公鑰和私鑰一一對應,私鑰需要保密,而公鑰則是可以公開的。加密和解密不是用同一個密鑰。

回到之前的例子,你朋友去配了一對鑰匙(鑰匙A和鑰匙B),鑰匙A上鎖櫃子之後,必須要鑰匙B才能開鎖櫃子。

你朋友把鑰匙A郵寄給你,你用這把鑰匙把信件鎖到櫃子中,然後將櫃子郵寄給你朋友,你朋友用鑰匙B打開櫃子取出信件。

細心的小伙伴又想到了,朋友把鑰匙A寄給自己的時候,可能會被快遞人員偷配鑰匙,但是快遞人員即使持有鑰匙A,他也不能打開櫃子,因為鑰匙A上鎖櫃子之後,只有鑰匙B才能開鎖,整個過程,鑰匙B一直在朋友手上,只要朋友不把鑰匙B弄丟,這個櫃子就只能由朋友打開。

在非對稱加密中,鑰匙A就相當於公鑰,它被人知道也沒有關係,鑰匙B相當於私鑰,它需要持有人小心保存,不能丟失。

“上鎖櫃子”和“開鎖櫃子”相對於“加密過程”和“解密過程”,而且在非對稱加密中,最重要的是加密和解密用的不是同一把密鑰,而是一對密鑰,即私鑰和公鑰。

比特幣公鑰就是通過私鑰推導而來,公鑰繼續轉換變成賬戶地址,而且是不能反向推導出私鑰的,私鑰和公鑰是一對,用戶需要妥善保管好自己的私鑰,而公鑰和賬戶地址都是可以公開的。

上述過程體現的是公鑰加密,私鑰解密。區塊鏈中當別人給你轉賬的時候,你的收款地址(公鑰)是公開給他人的,而轉入的資產只有持有私鑰的你才可以“解密”它,對它自由支配。

還有一種情況是私鑰加密,公鑰解密。典型的應用場景就是數字簽名,A採用自己的私鑰加密文件信息後發送給B,並將公鑰也發送給B,B利用這個公鑰對信息解密。

如果C和D也有這個公鑰,那C和D也可以解密這個文件信息,但是只有持有私鑰的A才能加密這個信息,因此可以確保這個文件信息確確實實是由A發出的,這就比較適用於一些公司老總做電子簽名,以確保簽名是老總籤的。

在區塊鏈中,你的收款地址就相當於公鑰,人人可以看到,但是如果你要轉移你的資產給朋友,你需要輸入密碼(私鑰)進行數字簽名,來表示這個資產確確實實是由你發出的。

通過上述講解,相信大家已經認識到私鑰的重要性了吧,你一般是如何保存自己私鑰的呢?歡迎在留言區分享你的觀點。