如何保證錢包私鑰安全

本文主要從技術(shù)實現(xiàn)角度講解數(shù)字貨幣錢包該怎樣去保護(hù)用戶私鑰。

0x01 理解數(shù)字貨幣錢包

對于數(shù)字貨幣錢包來說,它并不是裝錢的,而是裝密鑰的工具,準(zhǔn)確來說,就是裝私鑰的工具。有了私鑰就可以擁有根據(jù)其對應(yīng)公鑰計算出的地址上的數(shù)字貨幣的支配權(quán)。
作為錢包開發(fā)者,如何存儲和使用用戶私鑰便是錢包安全的關(guān)鍵所在。

0x02 私鑰的加密存儲

下面是使用imToken錢包App創(chuàng)建錢包的截圖。從截圖上可以清楚的看到我們在錢包的時候需要輸入密碼來保護(hù)私鑰。那這個私鑰究竟是如何被保護(hù)的呢?私鑰的生成和輸入的密碼有沒有關(guān)系呢?


這里一般有兩種誤解:

  1. 根據(jù)輸入的密碼生成私鑰
  2. 使用輸入的密碼對私鑰直接進(jìn)行加密,然后將加密的內(nèi)容存到自己手機(jī)上。

如果錢包應(yīng)用開發(fā)者真的這么做的話,估計大家每天都是排著隊丟幣了 :)。

你想啊,如果是第一種情況,那如果兩個人用同樣的密碼不就可以互相看到對方錢包了么。

如果是第二種情況,在你輸入密碼進(jìn)入錢包應(yīng)用后,私鑰就要被加載并駐留在內(nèi)存里。你在網(wǎng)上搜一下“從內(nèi)存提取密碼工具”,保證可以搜到一大把。另外一個風(fēng)險是,用戶輸入的密碼都不是太長并且很多時候有規(guī)律可循,這樣當(dāng)加密后的私鑰數(shù)據(jù)泄漏后,黑客通過暴力破解結(jié)合彩虹表等工具將私鑰破解的幾率還是比較高的。

事實上,私鑰的生成永遠(yuǎn)和你輸入的密碼沒有半毛錢關(guān)系,要么是隨機(jī)生成,要么是根據(jù)助記符(一串隨機(jī)生成的英文或其它語言詞組)生成,保證每個人的私鑰都是唯一的。
私鑰的加密過程一般來說是下面這樣的:
第一步:錢包應(yīng)用會生成一個32字節(jié)隨機(jī)數(shù),我們稱之為主密鑰。
第二步:使用用戶輸入的密碼對主密鑰加密,生成主密鑰密文。
第三步:使用主密鑰對錢包私鑰進(jìn)行加密,生成私鑰密文。
第四步:清除主密鑰和私鑰,保留主密鑰密文和私鑰密文。

你可以會有疑問,這樣黑客拿到密文后先暴力破解主密鑰,再破解私鑰不也很容易么?其實在具體實現(xiàn)的時候,每個密文在生成的時候不只是用輸入的密碼,還有相應(yīng)的密文生成參數(shù),想通過密文和密碼直接解密得到明文沒那么容易的。

0x03 私鑰的使用

從上一部分的解釋我們知道,錢包應(yīng)用里保存的是主密鑰密文和私鑰密文。

當(dāng)我們登錄錢包后,錢包應(yīng)用會通過我們輸入的密碼對主密鑰密文解密,將解密后的主密鑰駐留內(nèi)存。

當(dāng)我們進(jìn)行轉(zhuǎn)賬等需要私鑰簽名的操作時,通過主密鑰解密私鑰密文得到私鑰,使用后立即將私鑰從內(nèi)存清除。

當(dāng)我們需要修改密碼時,實際上只是修改了主密鑰密文,并不會觸碰私鑰相關(guān)部分。

這樣,基本上將私鑰明文暴露的幾率降到最低,最大限度的保證私鑰的安全。

還有疑問?歡迎加入我的知識星球,盡我所能為你答疑解惑。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容