Renaissance Labs

Posted on Mar 09, 2022Read on Mirror.xyz

智能合约审计工具

https://github.com/melonproject/oyente

https://github.com/trailofbits/manticore

https://github.com/ConsenSys/mythril

审计步骤

面谈开发者->评审.sol文件->编译->分析代码流->运行oyente->运行Manticore->运行MAIAN->手工复审

区块链源头-密码学与密钥安全

区块链为什么有那么大的魔力,在于它的底层原理,在于它的源头,那个技术背书-密码学

区块链中的哪些地方用到了密码学:

1.哈希算法 比特币系统中使用的两个哈希函数分别是:SHA-256,主要用于完成PoW(工作量证明)计算;RIPEMD160,主要用于生成比特币地址;

2.Merkle哈希树基于哈希值的二叉树或多叉树,在计算机领域,Merkle树大多用来进行完整性验证处理,在分布式环境下,其进行完整性验证能大量减少数据传输和计算的复杂程度;

3.椭圆曲线算法 比特币中使用基于secp256k1椭圆曲线数学的公钥密码学算法进行签名与验证签名,一方面可以保证用户的账户不被冒名顶替,另一方面保证用户不能否认其所签名的交易。用私钥对交易信息签名,矿工用用户的公钥验证签名,验证通过,则交易信息记账,完成交易;

4.对称加密算法比特币官方客户端使用AES(对称分组密码算法)加密钱包文件,用户设置密码后,采用用户设置饿密码通过AES对钱包私钥进行加密,确保客户端私钥的安全。

最终的原则还是:保护好私钥。从私钥的整个生命周期来看,可以从以下几个方面进行安全分析

1.硬件模块抗拆毁、抗功耗分析、错误注入攻击等侧信道分析能力;

  1. 随机数生成算法强度,随机数发生器产生随机数的随机性;
  2. 密钥与密钥参与运算过程都在硬件当中;
  3. 密钥导入导出过程全在硬件中实现;
  4. 密钥恢复与备份; 主要关注加密货币,私钥通过助记符来协助恢复, 助记符的安全是关键。

现有的安全措施—算法白盒 静态白盒:算法+密钥+白盒密码技术->算法密码库(白盒库) 静态白盒更新密钥,需要重新生成白盒库。

动态白盒:白盒库无需更新,密钥+白盒密码技术->白盒密钥 白盒密钥传入相匹配的白盒库可以进行正常的加密或解密功能。

实现过程如下图:

https://image.3001.net/images/20180724/15324178566767.png!small

区块链安全技术总结

现有的安全措施—密钥随机化:

椭圆曲线算法实现生成密钥 再配合代码加固,代码混淆方法

现有的安全措施—协同签名/解密:

需要一个可信的后台服务器,解密/签名密钥由客户端和服务器端协同产生,且子密钥由各自保管。这种方法安全性和效率相对较高。

参考

https://www.freebuf.com/vuls/178587.html