查看原文
其他

安全聚焦 | CertiK已完成对MYKEY以太坊智能合约的审计

CertiK CertiK 2021-02-05

MYKEY与CertiK开展合作,由CertiK对其发布在以太坊网络上的智能合约进行安全审计。

为了确保审计的顺利进行,CertiK运用形式化验证平台,并委派安全专家及工程师对源代码分别进行机器分析和人工审查。本次审计重点关注以太坊智能合约的设计情况和实践情况

MYKEY Lab是基于多条公有区块链的自主身份系统,是基于KeyID自主身份协议的首个应用实例。

MYKEY Lab的目标是通过实现以下三个关键特性来创建一个完整的堆栈资产管理平台:

1.多链钱包:MYKEY作为多链钱包,支持多种智能合约平台。

2.信任网络:基于可验证声明形成的账户与账户间的信任网络。

3.数据的可靠存储:身份账户控制的去中心化存储安全区。

当私有密钥丢失时,MYKEY设置有身份账户找回机制,平台上的用户能够通过冻结或解冻帐户来自主控制资产。平台的附加功能包括通用ID名、反垃圾邮件、协议升级能力、增强安全性的全面设计等。

MYKEY Lab的区块链应用程序开发

MYKEY Lab通过数字货币存储、交易、财富管理、游戏、社区等平台,为用户创建一站式的数字生活体验平台

多链钱包不仅能支持多个智能合约平台,还具有以下功能:

1.创建钱包

2.签署交易

3.多重签名

4.管理加密资产

5.提交提案

6.恢复密钥

MYKEY于2019年初在EOS上发布,并预计将于今年年底在以太坊区块链上发布。MYKEY Lab能够运行在大部分现有的大型区块链上,但由于账户在每一条区块链上均以智能合约的方式存在,因此它的钱包功能暂时不支持非智能合约平台。

在信任网络中,用户拥有数据控制权,这一做法可以从根本上保护用户隐私权。每个账户都包含一个通用且唯一的ID名称、一个身份账户文件和一个由身份合约控制的、基于去中心化存储的数据安全区。

MYKEY系统及其工作流程

每个MYKEY账户都有一个对应的Account Proxy合约地址,并非从外部获得的。在创建一个新的MYKEY账户时,MYKEY Lab会将生成的备份密钥设置为默认密钥,用户还可在账户中添加更多其他备份密钥。

所有与MYKEY Lab用户相关的数据都储存在Account Storage合约中,包括账户管理密钥、6个备份操作密钥、delayltem以及多重签名协议。

同样,所有逻辑模块包括转账、多重签名、DAPP、账户相关逻辑。负责处理所有逻辑合约升级的LogicManager允许合约根据其业务拓展和漏洞修复进行自我升级。

下图展示了智能合约钱包设计的工作流程:

审计结果

在对源代码进行全面审计之后,CertiK对MYKEY Lab提出了一些修改建议:

1.最好使用“pull-over-push”模式进行所有权的转移工作。Openzepplin的合约可作为参考。

2.CertiK建议针对状态更改函数生成事件日志。这不仅可用于历史追踪和用户行为分析,还能直接为用户提供合约之外的外部调用。

3.考虑到close()函数可以调用低级操作码selfdestruct(自毁),所以建议利用该函数来防止漏洞出现。

4.应该将函数isActionWithDualSigs()改为修饰符。

总体来说,MYKEY以太坊智能合约代码符合设计规范且运行良好,具有良好的可扩展性,不易受到任何已知的经典漏洞攻击或其他安全问题的影响,安全程度较高


了解更多

General Information: info@certik.org

Audit & Partnerships: bd@certik.org

Website: certik.org

Twitter: @certik.org

Telegram: t.me/certik.org

Medium:medium.com/certik

币乎:bihu.com/people/1093109


往期回顾

请点击“阅读原文”访问CertiK官方网站

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存