导读
继上篇对当前数字资产领域的安全形势进行了深度分析后,本文将介绍区块链数字资产领域的安全措施与相关的解决方案。
区块链技术是数字资产的新兴载体。相较传统互联网,区块链因其不可篡改、不灭失的特征,对安全性的事先验证等程序机制提出了极高要求。
智能合约是新一代区块链技术的标志性设计,它利用事先定义的接口和协议自动完成合约步骤。以太坊图灵完备的特点在给了智能合约广阔舞台的同时,也背负了巨大的安全压力。如何保证合约本身的可控性、可调度性,以及执行过程中的可信性,成为软件安全和资产安全层面亟待解决的问题。
智能与安全无关
智能合约这个术语由密码学家尼克·萨博在上世纪九十年代中期首次提出。他将其定义为:能够自动执行合约条款的计算机程序。
合约语言的图灵完备意味着,理论上,智能合约可以具备任何功能,执行所有计算。对合约功能的宽松限制不可避免地引入了更多危险。
声音 | 英国金融行为监管局:英国的加密和外汇增长了三倍:据coindesk报道,英国金融行为监管局(FCA)称,英国的加密和外汇增长了三倍,数量从530增加到1834。尽管案件数量有所增加,但总损失实际上从约3800万英镑(4800万美元)下降到2700万英镑(3400万美元)。[2019/5/21]
先回放一段经典案例。TheDAO事件可以说是智能合约发展史上的一场狂风暴雨。截止到2016年6月17日被攻击之前,该众筹合约已经募集了一亿五千万美金,攻击者利用合约漏洞发动攻击,导致300多万以太币资产被分离出TheDAO资产池。
这一切,都源于TheDAO智能合约中一个splitDAO函数的小小漏洞,攻击者通过该漏洞,不断的从资金池中分离资产给自己。
在该案例中,攻击者仅利用了智能合约的不完备性,就成功窃取了资金池内近三分之一的资产。可见,在智能合约框架下,事先检查合约本身是否存在机制漏洞,是安全问题的关键。一份安全、完备的智能合约应该具备如下功能:
英国金融行为监管局FCA:提供与加密货币衍生品相关服务的公司必须符合FCA手册中的所有相关规定:英国金融行为监管局FCA周五称,提供与加密货币衍生品相关服务的公司必须符合FCA手册中的所有相关规定,否则或将面临强制措施。FCA称,尽管其当前并未监管虚拟货币,但与货币或通过ICO发行的代币相关的交易或组织交易活动、提供建议或其他服务的行为可能需要获得FCA的授权许可,包括加密货币期货、加密货币CFD合约和加密货币期权。[2018/4/6]
编制模板框架,确定编程人员,保证代码的准确性。最重要的是,技术层面的内容如何获得合约双方认可;合约验证。任何程序都有bug,如果合约内容明显有利于其中一方,需要进行修复,保证合约逻辑正确;合约定制。根据不同场景定制适配的智能合约模板,根据需求对合约进行组合,形成复合合约;合约一致性。检验智能合约的执行代码与文本是否一致,不一致的合约可信度不高;执行过程中的可控性、可调度性和安全性。
英国央行的金融政策委员会目前正在仔细审查加密货币对英国金融系统的影响:英国央行行长卡尼表示:“英国央行的金融政策委员会目前正在仔细审查加密货币对英国金融系统的影响,而更加严格的监管不仅可以防范等犯罪活动并保护投资者,还可以通过其底层技术来进行更广阔的应用。”[2018/3/2]
形式化方法的引入
为了达到智能合约的理想状态,Certik等行业先行者从硬件设计领域引入了形式化方法,即:用数学工具进行定义、开发和验证。
硬件电路和软件工程归根结底都是数学问题。如果所有的设计开发都能按照严密的数理逻辑进行,那么开发出来的系统就会像数学本身一样完美:永远正常工作。
通俗地说,形式化方法就像一套完备的法律,规定了每个角色能做什么和不能做什么,并对角色之间的关系进行界定。类似于社会系统架构对不同角色进行分类,在承认个体天性的同时,使系统的复杂程度降低了多个维度。
形式化方法包括形式规约和形式化验证两个层面。
形式规约使用具有精确语法和语义的形式语言来刻画系统行为和特性。在形式化的过程中对对象进行分类、识别和拟合。形式规约约束了系统的代码组成,从系统设计流程上确保了输入组合的有穷性。同时,它也是验证系统正确性的依据。
形式化验证则在形式规约的基础上,建立系统行为及其与性质的关系,从而验证该系统是否满足预期的关键性质。这一过程可以和立法、司法程序类比,即:在对被审判人的权利、义务和其行为进行规范后,总是可以对他进行合理的判断。
形式化方法应用于智能合约的整个生命周期。
传统的合约开发并没有成体系地引入形式化方法,因此,一般先用非正式规范来设计合约,然后用形式化规范力求准确地描述合约,并将合约引入形式化的空间。再通过模型检验工具检查合约,或使用演绎法证明合约可被正常执行。最后,通过模型工具,将形式化空间中抽象的合约生成代码,通过不断测试生成序列,确保文本和程序代码的一致性。
形式化的规约旨在理解合约代码中内容的抽象本质,相当于对合约进行解读。在验证安全之后,通过使用可执行模型,将较高级别的抽象模型转换为较低级别的代码。
形式化方法使智能合约的生成和执行有了规范性约束,保证了合约的可信性,使智能合约的生产过程和执行效果得到了保障。
智能合约形式化验证的原理
形式化验证本身就是使用数学方法严格证明一个程序正确性的过程。
传统的验证方法主要是模拟和测试,即通过实验对系统进行查错。一般的方法是,在一端按系统要求或者自定义输入,观察在另一点的输出。这种方法耗费大量的时间,而且由于实验所能涵盖的系统行为有限,很难找出所有的潜在错误。
冯.诺伊曼(VonNeumann)I948年发表的相关论文就对这一问题有所触及,但未能提供解决方案。
1969年,托尼·霍尔提出了将程序正确性验证形式化的命题。
形式化验证方法可以检查程序的各种属性,如公平性、可达性、有界性和无状态二义性等,从理论上对程序做了全面检验,合格即被认为安全。
在从理论到实践的漫长过程中,形式化验证演化出了很多不同的操作方法。目前一线的技术公司多采用模型检测法,步骤如下:
建模。选择合适的建模语言和建模工具,使用模型检测工具能够接受的形式语言来描述合约。描述。阐明所要验证的合约性质,包括合约的状态可达性、死锁、活锁、有界性等。验证。对合约的状态空间进行搜索,发现问题并进行修改,对合约进行迭代验证。
模型检测是对有穷状态系统的一种形式化确认方法,其理论逻辑为:给定一个合约和规约,按照规约生成对应的合约模型,通过证明合约在模型中成立,以此证明合约满足约定规则。
有穷状态模型在建模时有一定难度,需要采集大量样本,并在其中提取逻辑,但因为状态是可穷的,可以保证搜索过程及时终止,因此,在工程上是实际的。
一些一线的技术公司已经将上述方法和流程应用到了区块链智能合约的安全验证上,但效果仍有待检验。
结论
形式化验证理论过去一直服务于集成电路的功能验证,发展多年,已经非常成熟。
智能合约是区块链系统发展应用的重要内容,也是目前传统网络安全公司尚未触及的安全盲区。市场已经发现了形式化验证对于智能合约安全的重要性。然而,安全机制的建立从数学理论变成现实,仍然需要时间。
来源链接:mp.weixin.qq.com
本文来源于非小号媒体平台:
加密谷Live
现已在非小号资讯平台发布1篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/3626862.html
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
文摘|EOSIODawn3.0现已推出
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。