基于區(qū)塊鏈技術(shù)開發(fā)的MYKEY Lab自主身份系統(tǒng)介紹
MYKEY與CertiK開展合作,由CerTIK對(duì)其發(fā)布在以太坊網(wǎng)絡(luò)上的智能合約進(jìn)行安全審計(jì)。
為了確保審計(jì)的順利進(jìn)行,CerTIK運(yùn)用形式化驗(yàn)證平臺(tái),并委派安全專家及工程師對(duì)源代碼分別進(jìn)行機(jī)器分析和人工審查。本次審計(jì)重點(diǎn)關(guān)注以太坊智能合約的設(shè)計(jì)情況和實(shí)踐情況。
MYKEY Lab是基于多條公有區(qū)塊鏈的自主身份系統(tǒng),是基于KeyID自主身份協(xié)議的首個(gè)應(yīng)用實(shí)例。
MYKEY Lab的目標(biāo)是通過實(shí)現(xiàn)以下三個(gè)關(guān)鍵特性來創(chuàng)建一個(gè)完整的堆棧資產(chǎn)管理平臺(tái):
1.多鏈錢包:MYKEY作為多鏈錢包,支持多種智能合約平臺(tái)。
2.信任網(wǎng)絡(luò):基于可驗(yàn)證聲明形成的賬戶與賬戶間的信任網(wǎng)絡(luò)。
3.?dāng)?shù)據(jù)的可靠存儲(chǔ):身份賬戶控制的去中心化存儲(chǔ)安全區(qū)。
當(dāng)私有密鑰丟失時(shí),MYKEY設(shè)置有身份賬戶找回機(jī)制,平臺(tái)上的用戶能夠通過凍結(jié)或解凍帳戶來自主控制資產(chǎn)。平臺(tái)的附加功能包括通用ID名、反垃圾郵件、協(xié)議升級(jí)能力、增強(qiáng)安全性的全面設(shè)計(jì)等。
MYKEY Lab的區(qū)塊鏈應(yīng)用程序開發(fā)
MYKEY Lab通過數(shù)字貨幣存儲(chǔ)、交易、財(cái)富管理、游戲、社區(qū)等平臺(tái),為用戶創(chuàng)建一站式的數(shù)字生活體驗(yàn)平臺(tái)。
多鏈錢包不僅能支持多個(gè)智能合約平臺(tái),還具有以下功能:
1.創(chuàng)建錢包
2.簽署交易
3.多重簽名
4.管理加密資產(chǎn)
5.提交提案
6.恢復(fù)密鑰
MYKEY于2019年初在EOS上發(fā)布,并預(yù)計(jì)將于今年年底在以太坊區(qū)塊鏈上發(fā)布。MYKEY Lab能夠運(yùn)行在大部分現(xiàn)有的大型區(qū)塊鏈上,但由于賬戶在每一條區(qū)塊鏈上均以智能合約的方式存在,因此它的錢包功能暫時(shí)不支持非智能合約平臺(tái)。
在信任網(wǎng)絡(luò)中,用戶擁有數(shù)據(jù)控制權(quán),這一做法可以從根本上保護(hù)用戶隱私權(quán)。每個(gè)賬戶都包含一個(gè)通用且唯一的ID名稱、一個(gè)身份賬戶文件和一個(gè)由身份合約控制的、基于去中心化存儲(chǔ)的數(shù)據(jù)安全區(qū)。
MYKEY系統(tǒng)及其工作流程
每個(gè)MYKEY賬戶都有一個(gè)對(duì)應(yīng)的Account Proxy合約地址,并非從外部獲得的。在創(chuàng)建一個(gè)新的MYKEY賬戶時(shí),MYKEY Lab會(huì)將生成的備份密鑰設(shè)置為默認(rèn)密鑰,用戶還可在賬戶中添加更多其他備份密鑰。
所有與MYKEY Lab用戶相關(guān)的數(shù)據(jù)都儲(chǔ)存在Account Storage合約中,包括賬戶管理密鑰、6個(gè)備份操作密鑰、delayltem以及多重簽名協(xié)議。
同樣,所有邏輯模塊包括轉(zhuǎn)賬、多重簽名、DAPP、賬戶相關(guān)邏輯。負(fù)責(zé)處理所有邏輯合約升級(jí)的LogicManager允許合約根據(jù)其業(yè)務(wù)拓展和漏洞修復(fù)進(jìn)行自我升級(jí)。
下圖展示了智能合約錢包設(shè)計(jì)的工作流程:
審計(jì)結(jié)果
在對(duì)源代碼進(jìn)行全面審計(jì)之后,CerTIK對(duì)MYKEY Lab提出了一些修改建議:
1.最好使用“pull-over-push”模式進(jìn)行所有權(quán)的轉(zhuǎn)移工作。Openzepplin的合約可作為參考。
2.CerTIK建議針對(duì)狀態(tài)更改函數(shù)生成事件日志。這不僅可用于歷史追蹤和用戶行為分析,還能直接為用戶提供合約之外的外部調(diào)用。
3.考慮到close()函數(shù)可以調(diào)用低級(jí)操作碼selfdestruct(自毀),所以建議利用該函數(shù)來防止漏洞出現(xiàn)。
4.應(yīng)該將函數(shù)isActionWithDualSigs()改為修飾符。
總體來說,MYKEY以太坊智能合約代碼符合設(shè)計(jì)規(guī)范且運(yùn)行良好,具有良好的可擴(kuò)展性,不易受到任何已知的經(jīng)典漏洞攻擊或其他安全問題的影響,安全程度較高。