DEVCON2:Martin Swende:以太坊安全概况

Unknown view 47 2016-9-20 08:12
share to
Scan QR code with WeChat

DEVCON2:Martin Swende:以太坊安全概况 (1)

记者:Cathy

涵盖生态系统里面不同参与者,比如矿工、full-节点(全节点)、交易所、合约开发者、应用开发者、及钱包应用者的关注点和它们所面临的威胁;就存在的威胁、规避风险、陷阱以及最佳实践等话题进行讨论。讲话会触及到未来的挑战,对比以太坊和当今互联网的安全状态。我们能从过去学到什么?怎么可以在3.0做的更好?

关于以太坊安全方面的建议。说到安全,这是个很模糊的概念。谈到安全,就会自然联想到风险。风险会导致损失的产生,通常说风险的等级取决于风险发生的可能性及影响。对于降低风险,其可能性及影响,我们有一些比较常见的方法来解决。

DEVCON2:Martin Swende:以太坊安全概况 (2)

这里是一些安全顾虑:比如钱包、如何与合约互动、如何和Dapps进行互动,还有开发服务,这个是围绕Dapp或合约进行,还有微小网络的安全。不同威胁有不同方案,所谓的威胁,也是有范围的。

首先来看终端用户,及有钱包的用户。我们知道用钱包是有不同隔离方案的,比如有冻结啊,热钱包冷钱包之类。冷钱包可以看成自己的银行。我们还有备用钱包就是冻结钱包。如果没有钱包,那么就只能用现金交易,风险就是会损失货币,这里我们列出的是冷钱包方法与特性。首先是在不被信任的设备上使用是,要确保是安全的。如果有人盗用,我们要避免让其获得密钥。这个也有方法,比如我们用eraser-on-tamper,HSM等。我们希望电子钱包可以小到随时使用,比如下图,这个可以看成计算机。

我们希望就算钱币丢失,还能有备用钱包抵御风险。我们可以通过加密,设置密码。有人觉得密码不可靠,有人会忘记密码。当然你也可以搞个水晶箱,把密码封在里面。

DEVCON2:Martin Swende:以太坊安全概况 (3)

这里有些风险保障方法。首先,我们可以对钱包进行定义,比如某段时间只能用一部分钱,如果超过时间,那么钱就无法提取。这样就算有人偷盗,我们也能通过定义使其无法提取。其次,我们也能用多重签名来传递钱包,这样取款就会需要一定条件。第三,我们要确保电脑不会被攻击。如果作为一个矿工,那么有可能要24小时和其他矿工绑定,这种绑定是没有任何监管审查的,这样我们要尽可能的不要在电脑里方有价值的东西。或许我们可以用一些虚拟机。

什么是被验证的合约?这个就是在区块链上被部署的合约,它会有一个源代码,为第三方持有。这样我们在使用合约或源代码时,要注意它有任意性。我们要指导这个任意性从哪里来,是否会被盗用。而且我们要了解,在使用合约前,是否有别人获得权限。我们知道,可能随着区块链的不断应用,有不同平台能够进行交互,这样我们要防止其他平台应用的风险,这就是随机性或任意性。我们也要防止女巫攻击,也就是攻击者用不同身份在网络运行,其实就是一个人。当然我们也要避免rage-quitting这种气矿,避免合约中途放弃,这样会给合约其他方造成风险。

DEVCON2:Martin Swende:以太坊安全概况 (4)

接下来是关于DAPP的安全。我们都了解,它就是HTML/JS页面,可以访问Web3的API,并和以太坊交互。如果网络断了,那么对DAPP也有影响。我们可以讲WEB看成中心化托管机构。我们目前还没有管理模式,我们这个DAPP浏览器通常和钱包br0ken web相连,所以签署时,要和签收者本人确定按合约走。我们使用DAPP时,不要用CDN,要用HTTP和STS。搭建DAPP前一定要了解网络安全。

DEVCON2:Martin Swende:以太坊安全概况 (5)

其实在java语言里,我们已经提到很多,我们要对合约进行审查,对源代码审核,这个很简单。这不是对代码在审核,也是对合约信息数据审核。第二我们要保证对合约进行测试,我们要尽可能了解虚拟机的设置,和内部购置,这里大家可以看到,这里有以太币从一个地址分到了另一个地址,这就造成了女巫攻击。这个是智能合约的缺陷,我们看到调用深度的攻击,还有重入漏洞,还有恶意程序库,还有gas的耗尽。

DEVCON2:Martin Swende:以太坊安全概况 (6)

还有一些模式,可以供参考,私有网络自身并非私有,但是很多私有内容还是被第三方监管控制,当然这个前提是访问网络的人要有私有网络的代币,或者以太币等。所以开发人员在设计智能合约时要尽可能降低风险,找出哪里有问题,哪里会出现问题,而solidity有很好的地方可以借鉴学习,这里有虚拟机工作机制。我们也要使用更好的实践,我们希望搭建的东西让所有人都能使用。

DEVCON2:Martin Swende:以太坊安全概况 (7)

如图这里是我列出的一些方案,大家可以参考一下。比如116,就是如何进行合约调用重入。我们要尽可能避免重入攻击及风险。还有102,就是和ECADD和环签名相关的内容。这里有些项目已经有了变化,所以未来团队会有所调整。

DEVCON2:Martin Swende:以太坊安全概况 (8)

作者:Cathy | 来源:Chainb

btcfans公众号

Scan QR code with WeChat

From the Internet
Disclaimer:

Previous: DEVCON2: Solidity的形式化验证 Next: DEVCON2:Vitalik Buterin——紫色革命

Related