阅读论文Formal verification of smart contracts based on users and blockchain behaviors models

1 题目(Formal verification of smart contracts based on users and blockchain behaviors models)

1.1 作者、出处、年份、发表期刊/会议

Tesnim Abdellatify, Kei-Leo Brousmiche∗
∗IRT SystemX, Paris-Saclay, France, Email: kei-leo.brousmiche@irt-systemx.fr
yEDF R&D, Paris-Saclay, France, Email: tesnim.abdellatif@edf.fr

1.2 本文要解决的问题

利用智能合同漏洞的攻击不断增加。为了对抗这些攻击并避免破坏,已经探索了几种方法,例如使用形式验证记录漏洞或模型检查。但是,这些方法无法捕获区块链和用户行为属性。本文提出了一种新的形式化建模方法来验证智能契约在其执行环境中的行为。将这种形式主义应用于一个具体的智能合同实例,并用统计模型检验的方法分析其违约行为。

1.3 写在读之前

想知道该文是如何构建智能合约的用户账户和合约账户的行为模型的,并且如何使用该模型验证出智能合约中存在的漏洞。

1.4 技术路线

1. 用BIP框架对智能合约进行建模

BIP(行为交互属性)框架使用了基于组件的建模方法。
原子组件用于描述系统行为,得到的行为模型本质上是有限状态机,各个状态机之间通过端口间传递变量进行通信以及扩展。连接器将来自不同子组件的端口关联起来。它们表示交互模式集,即必须联合执行的非空端口集。对于每个交互,连接器提供保护和数据传输,以便跨交互中涉及的端口交换数据。

2.从模型中的各个组件之间的连接中找到可能产生漏洞的场景。

本文以将用户id和合约账户绑定为例,在BIP框架中对这些行为进行仿真,并使用SMC对其结果进行分析,从而揭示黑客可以破坏智能契约行为的场景。
通过引入一个黑客行为模型,分析了注册智能合同执行的安全性。黑客的目的是通过将用户的别名注册到自己的地址来窃取用户的身份。关于区块链接口,有三种可能的场景。

场景1:黑客从挖掘的块中检索用户注册后的名称。
场景2:当还没有挖掘用户事务时,黑客从挂起的事务数据中检索名称。
场景3:黑客从网络中获取名称,即直接从用户与区块链的调用交互中获取。

3.用SMC引擎对三个场景的行为进行自动化验证

通过概率统计模型检测(SMC)评价功能,分析了三个场景黑客成功可能性
在这里插入图片描述

分析了仿真的执行轨迹,给出了仿真的成功路径。在方案1中,注册智能契约行为正确,拒绝黑客尝试注册用户名,该用户名已经在契约地址别名映射中注册。在scenario o2中,当黑客和用户事务都在挂起的事务列表中时,黑客就成功了。由于是随机挖掘,黑客事务可以先被挖掘和执行。在scenario o3中,黑客在用户发送register call事务时拦截事务。因为在scenario - 02中,黑客需要等待用户的事务出现在pending transaction列表中,所以黑客成功的机会比scenario - o3要小。为了避免这种攻击,注册过程可能需要两个步骤。用户首先注册名称的散列,然后在第二个事务中注册实际的对应名称。

在场景1中,黑客永远无法成功注册用户名。注册契约拒绝注册,因为别名已经在AddressToAlias列表中注册。在场景2中,黑客平均有12%的时间来攻击寄存器。在场景3中,黑客平均有25%的时间来攻击寄存器。

1.5 结论

针对智能契约和区块链属性,提出了一种具有强语义的建模形式。通过将这种形式化方法应用到智能契约的具体示例中,我们对其行为和与执行环境的交互进行了建模,并使用相同的方法表示。在BIP框架中对这些行为进行仿真,并使用SMC对其结果进行分析,从而揭示黑客可以破坏智能契约行为的场景。本文提出的模型可以通过多种方式进行扩展。我们的第一个观点是进一步建模和分析区块链属性,如矿工的数量、协商一致协议、gaz开销或时间约束。另一个视角是基于正式模型的场景的自动生成,以检测关键的动作序列。本文主要贡献

1.6本文主要贡献

设计了利用组件建模的方式对智能合约进行建模,提供了一种新的建模思路。
基于组件的建模方式的可扩展性非常好,可以用于更多的场景。
考虑到了区块链的行为属性,而不单单是智能合约本身的语法和语义,通过把对区块链系统运行方式进行建模并且加入分析模型中,使得分析覆盖的范围更大。

1.7本文不足之处

1. 没有考虑到运行时时出现的出乎意料的状况。
2. 本文只论述了单用户和合约账户之间的交互,这样建模比较容易,而没有考虑到如果是多用户之间进行交互的建模,以及多用户情境之下是否会造成模型的复杂度大大提升,这里没有给出研究。

1.8有用的参考文献

[1] Ethereum, February 2017. Available at: https://goo.gl/EvMgwn.
[2] Parity name registry, November 2017. Available at:
https://goo.gl/3zGzdw.
[3] T. Abdellatif, J. Combaz, and J. Sifakis. Model-based Implementation of
Real-time Applications. In Proceedings of the Tenth ACM International
Conference on Embedded Software, EMSOFT ’10, pages 229–238, New
York, NY, USA, 2010. ACM.
[4] N. Atzei, M. Bartoletti, and T. Cimoli. A Survey of Attacks on Ethereum
Smart Contracts (SoK). In International Conference on Principles of
Security and Trust, pages 164–186. Springer, 2017.
[5] A. Basu, M. Bozga, and J. Sifakis. Modeling Heterogeneous Realtime Components in BIP. In Fourth IEEE International Conference
on Software Engineering and Formal Methods (SEFM’06), pages 3–12,
September 2006.
[6] S. Bensalem, M. Bozga, T-H. Nguyen, and J. Sifakis. D-Finder: A
Tool for Compositional Deadlock Detection and Verification. In CAV,
volume 9, pages 614–619. Springer, 2009.

1.9值得我借鉴之处

先用一个很简单的合约来描述solidity写成的合约的关键字,用一般的测试方法测试显示似乎该合约没有漏洞,但又引出使用模型检测的方法可以检测出漏洞。
接着介绍BIP框架的基本概念(基本是模型检测的基本概念),然后用灯开关的例子介绍BIP中组件建模的概念。通过组件建模把上文提到的看似没有漏洞的合约进行建模。得到了一个包含了用户、黑客、合约账户三方的组件模型。从合约账户的各个组件入手分析可能被黑客利用的漏洞,然后用SMC的方法分析出各种方式成功的可能性,并且用图表展现出来。

总结出三种不同架构的模型驱动方法:
Agent-based, process-based和state machine方法。
第一种方法是Frantz和Nowostawski在论文《从制度到代码:迈向智能合同的自动化生成》中描述的[80]。它基于Crawford和Ostrom[81]的制度概念语法,属于制度分析领域。制度语法用于将制度分解为基于规则的语句。以下这些语句将以结构化的形式进行编译。制度的语法根源于基于主体的建模(ABM)。ABM是一种将现象建模为相互作用的动态系统的计算模型[82]。模型由一组代理组成,这些代理封装了组成系统的各个个体的行为,而执行由模拟这些行为组成[83]。通常,代理的行为是通过一组语句来建模的,其中的行为变得显式。在这种情况下,语句由五个部分组成,共同缩写为ADICO

第二种方法在Weber等人[85]的论文《使用区块链进行不可信业务流程监视和执行》中进行了描述。此方法的目标是跨组织的业务流程。本文的重点是供应链,其中智能契约用于解决协作业务流程中的信任缺失问题。业务流程规范的业务流程建模符号(BPMN)[86]是用作PIM转换为坚固的代码提供一个自动化的和不可改变的交易历史,提供中介在这个过程中控制逻辑,并获得一个审计跟踪的完整业务流程协作。

为了创建需求,我们对两个主要角色进行了区分,即领域专家角色和开发人员角色。领域专家知道应该在smart契约中包含哪些概念,而开发人员具有将这些领域概念转换为技术概念的专门知识。MDA框架的不同阶段可以指导开发过程中这两个角色之间的通信和互操作。对于每个组件,将描述不同的角色如何使用模型,以及如何根据这些角色调整需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值