「私鑰的生命週期」你以為保存好私鑰就好了嗎?

「私鑰的生命週期」你以為保存好私鑰就好了嗎?

在區塊鏈系統中,由於沒有中心化機構負責管理備份用戶敏感數據,用戶私鑰的生成、存儲、使用、找回、銷燬、更新都需要我們自己保障。因此對於私鑰的整個生命週期,都需要有嚴格的方式方法對其進行管理控制,確保資產的安全性。


一、私鑰的生成


私鑰:一個256位的二進制隨機數,自身的質量完全取決於產生私鑰的隨機數的質量。若祕鑰產生過程隨機性不足,使其可預測,那麼後續一切對其進行的安全保護措施都是徒勞。


隨機數是以現代密碼學為基礎的信息安全系統的基石,整個系統的安全性完全依賴於隨機數序列的生成效率和質量。高質量的隨機數的核心是“不可預測性”。對於隨機數來說分為兩種:偽隨機和真隨機。


偽隨機也就是假隨機,一般依靠種子和算法,知道種子或者已經產生的隨機數,可以獲得接下來的隨機數,具有可預測性。當前主流的區塊鏈系統就是用該方法生成的私鑰.......


真隨機數一般基於硬件的設計,根據外界的溫度、電壓、電磁場、環境噪聲等產生隨機數,隨機的不可預測性大大增加。金融領域的安全密碼芯片均是採用此設計。


「私鑰的生命週期」你以為保存好私鑰就好了嗎?


我們詳細看下是如何從一個隨機數生成私鑰的?


生成私鑰的第一步也是最重要的一步,是要找到足夠安全的熵源,即隨機性來源。生成一個比特幣私鑰在本質上與"在 1 到 2256 之 間選一個數字"無異。只要選取的結果是不可預測或不可重複的,那麼選取數字的具體方法並不重要。比特幣軟件使用操作系統底層的隨機數生成器來產生 256 位 的熵(隨機性)。通常情況下,操作系統隨機數生成器由人工的隨機源進行初始化,也可能需要通過幾秒鐘內不停晃動鼠標等方式進行初始化。


更準確地說,私鑰可以是 1 和 n-1 之間的任何數字,其中 n 是一個常數(n=1.158*1077,略小於 2256),並由比特幣所使用的橢圓曲線的階所定義。要生成這樣的一個私鑰,我們隨機選擇一個 256 位的數字,並檢查它是否小於 n-1。從編程的角度來看,一般是通過在一個密碼學安全的隨機源中取出一長串隨 機字節,對其使用 SHA256 哈希算法進行運算,這樣就可以方便地產生一個 256 位的數字。如果運算結果小於 n-1,我們就有了一個合適的私鑰。否則,我 們就用另一個隨機數再重複一次。


「私鑰的生命週期」你以為保存好私鑰就好了嗎?


二、私鑰的保存


每個比特幣地址都對應一個私鑰,掌握私鑰就是掌握了其對應地址中的比特幣。通俗的說就是,一把鑰匙打開一把鎖,如果比特幣地址是鎖,那麼私鑰就是這把鎖的鑰匙。

私鑰的存儲和使用一般分為軟實現和硬實現。


軟實現即存儲和使用都以軟件形式。密鑰生成後作為文件或字符串保存在用戶終端或者託管到服務器,使用時直接或通過簡單的口令控制讀取到私鑰明文到內存,通過CPU完成私鑰計算。這種存儲和使用方式顯然有很多安全風險,容易被黑客或內鬼複製、竊取、暴力破解等。


硬實現一般是依託專用密碼安全芯片或者密碼設備作為載體。一般有物理保護、敏感數據保護、密鑰保護等機制,確保私鑰必須由專用硬件產生。在任何時間、任何情況下,私鑰均不能以明文形式出現在密碼設備外;密碼設備內部存儲的密鑰應具備有效的密鑰保護機制,防止解剖、探測和非法讀取。私鑰不可導出,僅可計算輸出簽名值。


但無論是軟還是硬,只要其他人知道了你的私鑰,就能轉走你的資產。記住,誰手握私鑰,誰才是資產真正的主人。


「私鑰的生命週期」你以為保存好私鑰就好了嗎?


三、私鑰的使用安全


在私鑰使用時,需要保證使用環境安全,對於私鑰文件的訪問、讀取、寫入需要有相關權限控制。在使用完成後,需要將緩存在內存中的所有敏感數據使用專用函數清除,防止敏感數據洩露。從密碼破譯角度來說,私鑰在使用一定週期後,應該更換密鑰,這就是涉及私鑰銷燬和更新的問題,我們後面有介紹到。


四、私鑰恢復


傳統中心化的銀行如果U盾丟失或者忘記密碼,則可以通過賬戶系統重新綁定一個新的U盾(私鑰)即可。賬戶和私鑰是邏輯上的綁定關係,由中心化的銀行在滿足風控要求下操作。還有一些傳統中心化支付機構,當用戶資產憑證丟失後,可通過中心化機構通過自己的身份憑證找回相關的數據。


但在區塊鏈系統中,沒有中心化機構幫助我們備份私鑰等敏感數據。因此在設計系統的私鑰管理方案時,需要提供多種備份恢復方式,如使用助記詞或使用密碼加本地密文文件的方式恢復私鑰數據。但是如果你的助記詞也丟失了,就等於啥都丟了。


「私鑰的生命週期」你以為保存好私鑰就好了嗎?


五、私鑰銷燬


當用戶需要銷燬私鑰數據時,需要保證存儲備份的所有私鑰數據,都被完全刪除銷燬。


六、私鑰更新


在區塊鏈領域,私鑰是唯一代表用戶身份或數字資產的憑證,如果需要更新私鑰則要重新綁定註冊或者數字資產轉移。所以當你需要更換私鑰時,需要保證新的私鑰被安全生成或導入,資產也已經安全轉移,舊的私鑰被安全銷燬。


「私鑰的生命週期」你以為保存好私鑰就好了嗎?


一切始於可見性,私鑰的安全關係著數字資產的安全,個人隱私的安全,所以安全地確保私鑰生命週期的每一步非常重要。

相關推薦

推薦中...