一种基于HCPN的智能合约安全模式形式化与验证方法技术

技术编号:33835357 阅读:16 留言:0更新日期:2022-06-16 11:50
本发明专利技术公开了一种基于HCPN的智能合约安全模式形式化与验证方法,将智能合约的安全模式采用提交展示方法转换为BPMN模型,通过预设映射规则,将BPMN模型转换为CPN模型,分析CPN模型生成第一状态空间报告;将智能合约源代码转换为HCPN模型,分析HCPN模型生成第二状态空间报告;分别将第一、第二状态空间报告描述为一组属性,使用ASK

【技术实现步骤摘要】
一种基于HCPN的智能合约安全模式形式化与验证方法


[0001]本申请属于智能合约
,尤其涉及一种基于HCPN的智能合约安全模式形式化与验证方法。

技术介绍

[0002]智能合约是跨区块链网络运行的一个自动可执行的程序。由于区块链网络在理论上是安全的,攻击者只能利用漏洞来攻击智能合约。众所周知的THE DAO智能合约攻击是利用递归调用的漏洞来攻击智能合约的,最终导致了近60亿美元的损失。从那时起,保护智能合约已成为本领域的一个重要课题,出现并开发了各种分析工具来检测漏洞。
[0003]Weiqin Zou、David Lo等人通过实验证明:1、没有有力有效的方法来保证智能合约代码的安全;2、现有的开发工具仍然非常基础;3、编程语言和虚拟机仍然有许多限制;4、在资源受限的运行环境下,性能问题难以处理;5、在线资源(包括高级的/更新的文档或者社区支持)仍然有限。也就是说,检查智能合约的现有的漏洞使用分析工具是不足以保证智能合约的正确性和安全性的。由于工具的局限性,需要保证智能合约的正确性和可靠性在开发阶段通过一些安全模式。国外的多次会议描述了一套安全模式和良好实践,开发人员可以遵循这些模式来提高其代码的可靠性,并提前避免漏洞,比如Wohrer M,Zdun U他们从不同的来源收集数据,以回答他们关于稳固性中常见代码模式的问题,以及这些模式可以通过这些模式解决哪些问题,然后,他们使用扎根理论技术来分析他们收集到的数据,并提出了六种基于可靠性语言的安全模式,他们详细描述了安全模式,并以坚固性的例子说明了它们。<br/>[0004]然而,这些模式已经在文本描述中呈现出来,并且缺乏正式的公式,这使得它们无法在源代码中检测它们的实现。此外,由于业务逻辑的复杂性和智能合约的特点,这使得开发人员更难遵循特定的说明。
[0005]NejcZupan等人和Wen Hu等人介绍了他们的安全工作,通过建模和验证模型来生成一个安全的智能合约。还有Zhentian Liu、Jing Liu、Wang Duo和Xudong He等人使用CPN建模作为智能合约的正式验证,但是它们没有提供正式的属性或所需的属性,也没有提供安全模式。

技术实现思路

[0006]本申请的目的是提供一种基于HCPN的智能合约安全模式形式化与验证方法,以针对上述目前学者研究的不足。
[0007]为了实现上述目的,本申请技术方案如下:
[0008]一种基于HCPN的智能合约安全模式形式化与验证方法,包括:
[0009]将智能合约的安全模式采用提交展示方法转换为BPMN模型,通过预设映射规则,将BPMN模型转换为CPN模型,分析CPN模型生成第一状态空间报告;
[0010]盲拍智能合约,将智能合约源代码转换为HCPN模型,分析HCPN模型生成第二状态
空间报告;
[0011]分别将第一、第二状态空间报告描述为一组属性,使用ASK

CTL公式将所述一组属性表述为一个SML函数,运行所述SML函数,根据运行结果验证所述智能合约是否遵循所述安全模式。
[0012]进一步的,所述基于HCPN的智能合约安全模式形式化与验证方法,还包括:
[0013]采用ASK

CTL查询来查询是否没有死锁标记、没有活节、没有自环终端标记。
[0014]进一步的,所述分析CPN模型生成第一状态空间报告,包括:
[0015]在主要输入位置两个库所start和req中添加了标记作为初始标记。
[0016]进一步的,所述分析HCPN模型生成第二状态空间报告,包括:
[0017]在主要输入位置四个库所start、Breq、Rreq和Rwithd中添加了标记作为初始标记。
[0018]本申请提出的一种基于HCPN的智能合约安全模式形式化与验证方法,将Commit

Reveal提交

揭示模式的预期行为描述为ASK

CTL/SML公式,然后使用CPN工具检查其在盲拍合约中的实现,而这有助于发现代码中的错误和漏洞。本申请在未来将为开发人员的分析提供更多的安全模式,便于开发人员的访问和理解,便于调查在智能合约环境中被滥用的安全模式,将原本不易的通过映射规则进行建模的方式变为自动建模过程。
附图说明
[0019]图1为本申请基于HCPN的智能合约安全模式形式化与验证方法流程图;
[0020]图2为本申请BPMN模型示意图;
[0021]图3为本申请实施例状态空间报告示意图;
[0022]图4为本申请实施例ASK

CTL/SML结果示意图。
具体实施方式
[0023]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
[0024]在一个实施例中,如图1所示,提出了一种基于HCPN的智能合约安全模式形式化与验证方法,包括:
[0025]步骤S1、将智能合约的安全模式采用提交展示方法转换为BPMN模型,通过预设映射规则,将BPMN模型转换为CPN模型,分析CPN模型生成第一状态空间报告。
[0026]WohrerM.和ZdunU.曾将安全模式规则定义为“应用一个承诺方案,以确保价值提交是绑定和隐藏的,直到合并阶段结束,之后价值被揭示,并可公开验证该价值保持不变”。安全模式的非正式描述分为三个阶段:在第一阶段(Commit阶段)为提交的数据提交一个加密的值和一个盐,第二阶段(Reveal展示阶段),显示原始数据,即重新提交原始数据和盐。最后将初始提交的数据与原始数据进行匹配,直到两者匹配成功。
[0027]本申请将安全模式这种非正式的描述转换为一个BPMN模型(业务流程建模与标记),如图2所示,该模型用两个类矩形表示安全模式的两个阶段,每个阶段都有两个活动,从时钟判断开始,将判断它是在提交阶段还是显示阶段,然后再对两阶段的值一致性验证。
[0028]然后,利用Dechsupa C,Vatanawood W和Meghzili S,Chaoui A各自所提到的映射规则,将缺乏形式化语义的BPMN模型转换为CPN模型,添加一些具体的对象来作为一系列的描述。CPN模型从start位置开始(其颜色集:(INTxINTxSTRINGxINT)分别表示提交时间、显示时间、地址和合约的帐号)和req位置(其颜色集:(STRINGxINTxINT)分别表示用户的地址、帐号和请求时间)。
[0029]为了进行模拟,本申请将Commit提交阶段由commit变迁和hashV库所表示。Reveal阶段由reveal变迁、actualV库所和match变迁来表示。本申请添加了一个time

out变迁来表示无效的时间(在提交阶段之前或显示阶段之后提交)。在主要输入位置两个库所(start和req)中添本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于HCPN的智能合约安全模式形式化与验证方法,其特征在于,所述基于HCPN的智能合约安全模式形式化与验证方法,包括:将智能合约的安全模式采用提交展示方法转换为BPMN模型,通过预设映射规则,将BPMN模型转换为CPN模型,分析CPN模型生成第一状态空间报告;盲拍智能合约,将智能合约源代码转换为HCPN模型,分析HCPN模型生成第二状态空间报告;分别将第一、第二状态空间报告描述为一组属性,使用ASK

CTL公式将所述一组属性表述为一个SML函数,运行所述SML函数,根据运行结果验证所述智能合约是否遵循所述安全模式。2.根据权利要求1所述的基于HCPN的智能合约安全模式形式化与...

【专利技术属性】
技术研发人员:程宏兵萨丽应金益
申请(专利权)人:浙江工业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1