時間:2023-08-09|瀏覽:276
OCC原生錢包采用了Keystore存儲方案。Keystore是一種介于去中心化身份鑒別方案與中心化身份鑒別方案之間的解決方案。它不是中心化的,因此可以防止服務(wù)器濫用用戶權(quán)力的問題。但同時,它只能是離線的,所以可能會遭受離線暴力攻擊。
通常,一個完整的Keystore存儲方案必須包含以下幾個模塊或算法:隨機(jī)數(shù)發(fā)生器模塊、基于口令(或其他身份信息)的密鑰生成算法、認(rèn)證加密方案。
1. 隨機(jī)數(shù)生成算法:Keystore是私鑰存儲的解決方案,需要一種產(chǎn)生私鑰的方法。通常為了避免私鑰之間沖突和避免被暴力破解,私鑰的生成采用隨機(jī)方式。這也是封閉系統(tǒng)產(chǎn)生密鑰(私鑰、對稱密鑰)的主要方式。軟件系統(tǒng)不能產(chǎn)生真正的隨機(jī)數(shù),需要依賴底層操作系統(tǒng)或API中的隨機(jī)數(shù)發(fā)生器。OCC錢包Keystore系統(tǒng)基于Go語言的隨機(jī)數(shù)發(fā)生器接口。
2. 基于口令的密鑰生成算法:OCC錢包采用了RFC5869標(biāo)準(zhǔn)中的HKDF算法(HMAC-based Extract-and-Expand Key Derivation Function)作為基于口令的對稱密鑰生成算法。該標(biāo)準(zhǔn)廣泛應(yīng)用于IKEv2、PANA、EAP-AKA等協(xié)議中,是一種基于HMAC的密鑰生成算法。該算法需要生成64字節(jié)(512位)的隨機(jī)數(shù)作為鹽值(salt)來參與對稱密鑰導(dǎo)出運(yùn)算。鹽值將記錄在最終的Keystore文件中,以便在恢復(fù)對稱密鑰時使用。如果使用其他身份信息來代替口令,如指紋、面部等身份信息,則可以得到基于其他身份信息的密鑰生成算法,前提是需要具備相應(yīng)的專業(yè)設(shè)備,如采集指紋信息的硬件錢包可以采用基于指紋的方案。
3. 認(rèn)證加密方案:Keystore文件僅對用戶的私鑰進(jìn)行加密存儲是不夠的。例如,用戶輸入錯誤的口令可能會恢復(fù)出一個私鑰,但這個私鑰并不是真正擁有資產(chǎn)的私鑰,錢包并不知道恢復(fù)的私鑰是否正確。這是因?yàn)樵谒借€恢復(fù)過程中,由于解密算法沒有識別口令正確性而導(dǎo)致的(加密功能本身并不具備識別功能)。為了保證安全,OCC在項(xiàng)目源碼層面不提供通過口令產(chǎn)生私鑰的接口,并且要求第三方開發(fā)者堅(jiān)決不使用這種方法。這樣可以保護(hù)終端用戶資產(chǎn)的安全。
熱點(diǎn):17年比特幣 區(qū)塊鏈 區(qū)塊鏈?zhǔn)澜?/a> 比特幣 比特幣走勢 比特幣走勢圖 特幣