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