CN113079221A - 一种基于Coq的安全跨链协议生成方法 - Google Patents
一种基于Coq的安全跨链协议生成方法 Download PDFInfo
- Publication number
- CN113079221A CN113079221A CN202110621642.3A CN202110621642A CN113079221A CN 113079221 A CN113079221 A CN 113079221A CN 202110621642 A CN202110621642 A CN 202110621642A CN 113079221 A CN113079221 A CN 113079221A
- Authority
- CN
- China
- Prior art keywords
- protocol
- cross
- chain
- verification
- coq
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1059—Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
本发明提出一种基于Coq的安全跨链协议生成方法,所述方法包括以下步骤:步骤一:确定协议需求;步骤11:确定协议基本目标;步骤12:确定协议使用范围和流程;步骤13:确定协议约束;步骤14:建立需求形式化规范;步骤二:协议分析;分析协议具体内容,将协议流程序列化,并获得模型元素:步骤三:协议建模与验证;步骤31:行为建模;步骤32:需求形式化规范描述;步骤33:性质验证;步骤四:协议代码自动生成;步骤41:将逻辑部分消除;步骤42:生成信息部分代码;步骤五:进行一致性验证;步骤51:静态测试验证;步骤52:动态测试验证;步骤53:生成一致性验证报告。
Description
技术领域
本发明属区块链协议生成技术领域,涉及一种基于Coq的安全跨链协议生成方法。
背景技术
目前全球区块链的数量正在不断增多,价值孤岛问题也愈加严重。市场对于区块链之间的交互性也提出了更高的要求---从简单的通信到安全的价值转移。跨链技术是连接区块链的重要方法,是链联网能否成为继互联网、物联网的下一个基础网络架构的重要技术。同时区块链的跨链技术也是提升区块链吞吐量、增强事务处理能力、提高可扩展性的重要手段。
目前跨链技术主要解决的问题:
(1)查询:读取和验证其他链的状态和事件的正确性;
(2)安全的资产转移:通过技术手段来实现安全、可靠、高效的链上资产转移途径,避免引入第三方交易平台后带来中心化节点的问题;
(3)数字资产锁定:将锁定在区块链上的数字资产和其他链上的特定事进行关联。
(4)提升区块链交易的处理能力:区块链的吞吐量和可拓展性一直是区块链的重要瓶颈,跨链技术为区块链架构提供更优化的选择和更高的可拓展性。
目前区块链的跨链技术都处于研发阶段,由于跨链技术的使用场景多涉及大量金额,因此对于跨链技术的安全性要求更高。目前区块链跨链技术的安全性主要分为两类:(1)区块链底层系统结构给跨链技术的安全性造成影响;(2)跨链技术的原理和实现机制本身存在着安全问题。
随着区块链行业的发展,区块链的安全挑战也越来越严峻。根据成都链安的历年的统计数据,2018年区块链的生态经济损失超过20亿美元,2019年区块链生态经济损失60亿美元,而2020年的损失达到121亿美元。区块链技术内置的数字货币一直被黑客所垂涎,黑客通过寻找区块链的底层技术的漏洞或者处理事务的逻辑漏洞来牟利。跨链技术通常会锚定大量的数字货币,亦是黑客攻击的主要对象。因此,需要安全可信的跨链协议保证跨链安全。
基于形式化方法验证区块链协议,可以最大程度地提高交易的安全性。常见的形式化验证方法包括定理证明和模型检测。在定理证明中,会用到很多交互式定理证明器,也被称为辅助证明工具。Coq是最常用的定理证明器,实现了一种基于归纳构造演算的基础理论,能够将高阶逻辑和多类型的函数式编程语言相结合。在推理和验证中,Coq具有强大的表达能力,可通过构造简单的项,执行简单的证明,学习复杂的算法,直到建立完善的理论。同时,Coq支持用户边证明、边修改的交互式操作,使得证明中的错误和不足及时得到改正和完善。
目前市场上已经有人实现基于XML描述的安全协议代码自动实现技术,该技术主要分为三个模块:安全协议XML描述文档生成模块、解释器模块、底层支撑模块。安全协议XML描述文档生成模块,主要是用户通过图形界面配置安全协议,自动生成安全协议的XML描述文档,解释器模块负责对XML描述文档进行解析并生成相关的协议代码,底层支撑模块为解释器模块的代码生成提供支撑。该方法避免了传统的安全协议手工编码实现过程容易引入缺陷并减少实现安全协议的时间开销的优点。同时可以根据用户自定义选择生成不同语言的代码。但是该技术存在不能检测协议模型本身存在逻辑漏洞的问题,该技术并不涉及对协议模型的安全验证。
急需解决以下技术问题:
(1)提升跨链协议的安全性。防止协议模型本身存在逻辑漏洞,造成使用过程中的经济损失;(2)提升跨链协议编码实现效率。
发明内容
为解决上述技术问题,本发明提出了一种基于Coq的安全跨链协议生成方法。
采用以下技术方案:
一种基于Coq的安全跨链协议生成方法,包括以下步骤:
步骤一:确定协议需求;
步骤11:确定协议基本目标;
步骤12:确定协议使用范围和流程;
步骤13:确定协议约束;
步骤14:建立需求形式化规范;
步骤二:协议分析;
分析协议具体内容,将协议过程序列化,并获得模型元素:
步骤三:协议建模与验证;
步骤31:协议行为建模;所述行为建模指对跨链协议的整个交互行为流程进行建模,包括执行交易前跨链交易双方的准备工作、跨链交易双方的交互行为、交易完成后进行的交易确认环节,所述协议行为建模能够完整描述跨链协议的整个交互行为流程;
步骤32:需求形式化规范描述;
步骤33:性质验证;所述性质指通过步骤32所生成的需求形式化规范描述,每一个需求形式化规范描述都是一条需要验证的性质;
步骤四:协议代码自动生成;
步骤41:将逻辑部分消除;所述逻辑部分是指在Coq语言中,采用命题逻辑,包括and逻辑与、or逻辑或这些逻辑操作符连接的逻辑表达式;
步骤42:生成信息部分代码;所述信息部分是指在Coq文件中,除逻辑部分之外的语句;
步骤五:对测试结果进行一致性验证;
步骤51:静态测试验证;所述静态测试验证是指采用静态代码分析工具,进行测试验证,给出测试验证的结果;
步骤52:动态测试验证;所述动态测试验证是指采用动态测试验证工具进行测试验证,给出测试验证结果;
步骤53:生成一致性验证报告,指综合静态测试验证和动态测试验证的结果,给出最终的验证报告。
其中,所述步骤11包括:逐条列出跨链协议的功能需求,所述需求包括:读取链的状态、验证链上事件的正确性;
所述功能需求是指跨链协议需要具备的功能,包括:进行跨链交易,跨链协议应该能够获取到参与交易的两个用户所在区块链的状态;两个用户完成交易后,需要在各自区块链上完成正确性验证,正确性验证通过后,跨链协议能够获知交易正确性验证的结果,最终确认跨链交易完成。
优选地,所述步骤12包括:采用不同共识算法的异构区块链之间进行跨链交易时,明确所述协议的底链类型,同时根据协议的基本目标和协议实现的方式明确协议流程。
其中,所述步骤14包括:根据所述协议需求的分析,明确跨链协议的验证需求,采用形式化语言描述所有跨链协议的需求形式化规范,作为待验证的性质。
优选地,所述步骤二包括:
用例分析:提取出协议使用场景下的基本用例,得到用例分析图;协议的基本事件与所述用例分析图中的基本用例相对应,在所述用例分析图中,参与跨链交易的所有对象和用例之间传递的参数也与所述基本事件的输入、输出相对应;
时序分析:每个所述基本用例建立参与跨链交易的所有对象的交互过程的整个场景,提取出交互过程中所需传递的参数;
提取基本事件:在时序分析结果的基础上,提取出所述基本事件中的具体活动,事件的具体活动与用例的时序分析相对应;
通过用例分析、时序分析和提取基本事件,从跨链协议的使用场景中提取出涉及的参与跨链交易的所有对象、基本事件,以及基本事件中的具体活动和涉及的参数。
其中,所述步骤31包括:在步骤二获得模型元素后,使用形式化工具Coq建立对应的形式化模型,保持语义一致性,所述语义一致性是指模型的行为符合实际需求的行为,包括事件发生的先后顺序、变量所有状态的可达性。
优选地,所述步骤33包括:完成步骤协议行为建模和需求形式化规范描述后,将协议行为模型和需求形式化规范合并为同一个Coq文件,如果验证性质不满足,Coq工具提示不能满足的原因,用户通过边证明边修改的交互式,不断迭代优化协议行为模型,发现跨链协议本身存在的逻辑漏洞,通过不断迭代完善协议行为模型,直至所有需求形式化规范通过验证,表明协议行为模型能够满足所有需求。
其中,所述步骤41包括:在代码生成的第一步消除逻辑部分;
所述步骤42包括:首先,建立Coq证明中信息到目标平台的映射转换规则,且保证语义的一致性,具体的映射转换规则的定义根据实际目标平台的语言决定;然后,基于该映射转换规则,以映射转换规则表的形式保存,建立词法解析器,语法解析器和转换器,实现自动化生成;输入Coq模型,自动输出目标平台语言的代码。Coq模型是指采用Coq语言描述的协议行为模型。
优选地,所述步骤51包括:通过静态代码分析工具,生成代码控制流图,然后根据代码控制流图分析是否满足规范;
所述步骤52包括:设计输入测试用例,运行跨链协议,判断输出结果是否满足预期的输出结果;
所述步骤53包括:根据静态测试验证和动态测试验证的结果,生成一致性验证报告,如果静态和动态测试验证均通过,表示一致性验证通过;
一致性验证为判断可执行代码和用户需求之间的一致性,如果满足一致性,则表明该跨链协议可以部署在区块链系统;否则,根据发现的问题,继续修改完善协议模型。
本发明实施例提供的基于Coq的安全跨链协议生成方法,能够提高安全性,检测协议模型本身是否存在逻辑漏洞,避免使用过程被黑客成功攻击的风险和经济损失;减少实现跨链协议的时间开销;提高代码自动化生成效率,减少人力成本。
附图说明
图1为本发明实施例提供的一种基于Coq的安全跨链协议生成方法的流程示意图;
图2为本发明实施例提供的一种实现从Coq模型到目标平台可执行代码的自动化生成方法流程示意图。
具体实施方式
以下结合附图对本发明的具体实施方式作出详细说明。
本发明实施例提供的基于Coq的安全跨链协议生成方法如图1所示,该技术方案主要分为5个步骤:
步骤一:提取跨链协议需求:为了更好地确定跨链协议需求,辅助建模过程、提高建模的准确度,该步骤主要分为四个部分,即确定协议基本目标、确定协议使用范围和流程以、确定协议约束、建立需求形式化规范。
步骤11:确定协议基本目标:通过细化协议的基本目标,逐条列出跨链协议的功能需求,例如读取其他链的状态、验证其他链上事件的正确性等功能需求。
步骤12:确定协议使用范围和流程:采用不同共识协议的异构区块链之间交易事件的确认方式各不相同,需要明确协议底链类型,同时根据协议的基本目标,结合协议实现的具体方式细化协议流程。
步骤13:确定协议约束:协议约束是该跨链协议需要满足的性质。主要包括原子性、不可篡改性和持久性。
原子性:跨链协议的实现是由多个事件组成的,事件要么整个执行要么整个回滚,不存在只执行了其中的一个或者某几个步骤;
不可篡改性:在跨链过程中需要保证事件的执行结果不能被篡改,在链上结果进行交互时,确保传递的信息与链上的信息一致;
持久性:指的是一旦跨链完成后,链上的结果不会因为异常、个别节点的宕机造成数据的错误丢失;
由于跨链协议是基于区块链技术开发的,所以这三个性质是基本属性。区块链跨链协议的原子性,即区块链里面的智能合约的执行,要么完整执行函数,要么回滚到函数执行前的状态;跨链协议的不可篡改性,即信息交互时,比如A链和B链,A链给B链传递某信息(该信息已经经过一定等待周期,A链上该信息被篡改的可能性比较小),需要防止该信息在传输的过程中被篡改(一般是通过加入数据摘要来实现的);跨链协议的持久性,即区块链包含多个全节点存储所有的交易信息和结果,部分节点的异常和宕机不会造成数据的错误和丢失;
为了保证跨链的安全性,这三个性质是必不可少的。对于开发者来说,正确使用底层区块链提供的API,并遵循底层区块链的设计原则就能保证这个三个性质能够满足。
步骤14:建立需求形式化规范:根据上述需求分析,明确跨链协议的验证需求,采用精确无二义性的形式化语言描述所有跨链协议的需求形式化规范,作为待验证的性质。
步骤二:跨链协议分析:在步骤1的基础上,根据跨链协议的使用场景进行基本元素分析,主要步骤包括用例分析、时序分析、提取基本事件。
(1)用例分析:提取出该协议使用场景下的基本用例,得到用例分析图。协议的基本事件与用例分析图中的基本用例相对应,在用例分析图中利益攸关方和用例之间传递的参数也与该基本事件的输入输出相对应。
(2)时序分析:每个用例建立利益攸关方的交互过程的整个场景,提取出出交互过程中所需传递的参数。该步骤一般采用UML工具完成。
(3)提取基本事件:时序分析结果的基础上,提取出基本事件中的具体活动(事件的具体活动与用例的时序分析相对应)。
使用上述分析方法,可以从跨链协议的使用场景中提取出涉及的利益攸关方、基本事件,以及基本事件中的具体活动(基本规则)和涉及的参数。
步骤三:协议建模与验证:使用形式化工具Coq建立对应的形式化模型和需求形式化规范。分为三个步骤:
步骤31:协议行为建模:在步骤二的基础上得到协议的基本元素(利益攸关方、基本事件、具体活动、参数),使用形式化工具Coq建立对应的形式化模型,保持语义一致性。语义一致性是指模型的行为符合实际需求的行为,例如事件发生的先后顺序、变量所有状态的可达性等。形式化工具Coq、工具Coq与Coq是同一个工具。Coq是一个定理证明器,属于形式化工具的一种。同时Coq也是指一种形式化语言。
步骤32:需求形式化规范描述:需求形式化规范需要符合步骤一中实际需求的要求,即Coq工具描述的表达式和实际需求的表达式分别计算后可以得到同样的结果。
步骤33:完成步骤协议行为建模和需求形式化规范描述后,将协议行为模型和需求形式化规范合并为同一个Coq文件,借助Coq证明助手自动验证该性质是否满足。如果不满足,Coq工具提示不能满足的原因,用户可以通过边证明边修改的交互式证明方式来不断迭代优化协议行为模型,能够帮助发现跨链协议本身存在的逻辑漏洞。通过不断迭代完善协议行为模型,直至所有需求形式化规范通过证明,表明协议行为模型能够满足所有需求。
步骤四:协议代码自动生成:Coq描述的跨链协议模型中,主要包含逻辑部分和信息部分。
步骤41:逻辑部分主要是指Prop等类型的对象构成的命题逻辑公式,Coq工具能够保证逻辑部分不会影响信息部分的计算内容,在代码生成的第一步消除逻辑部分。
步骤42:程序代码的生成主要基于信息部分实现。首先,建立Coq证明中信息到目标平台的映射转换规则,且保证语义的一致性,具体的映射规则的定义根据实际目标平台的语言决定,例如Java,需要考虑Coq中数据结构和Java基本类型的对应关系。然后,基于该转换规则,以转换规则表的形式保存,建立词法解析器,语法解析器和转换器,实现自动化生成。
步骤43:辅助调试:输入Coq模型,可以自动输出目标平台语言的代码,该代码可能需要人工调试的辅助,以实现最终在目标平台正确运行。
步骤五: 可执行代码一致性验证:根据第4步得到的可执行代码,进行一致性验证。验证步骤如下:
步骤51:静态测试验证:通过静态代码分析工具,生成代码控制流图,人工或自动判断是否满足规范;
步骤52:动态测试验证:设计输入测试用例,运行跨链协议,判断输出结果是否满足预期的输出结果;
步骤53:生成一致性验证报告:根据静态测试验证和动态测试验证的结果,生成一致性验证报告,如果静态和动态测试验证均通过,表示一致性验证通过。
一致性验证主要判断可执行代码和用户需求之间的一致性,如果满足一致性,则表明该跨链协议可以部署在区块链系统;否则,根据发现的问题,继续修改完善协议模型。
Coq语言是一种类似于C或者C++的编程语言;Coq文件是指用Coq语言编写的代码,类似于采用C语言写的*.c代码。
实验案例
跨链协议一般按照参与双方底层平台技术是否为同构链进行讨论,对于同构链来说,双方的共识算法、区块生成与验证规则、交易广播、安全机制等逻辑都一致,所以跨链交互较为简单。本发明主要针对较为复杂的异构链。异构链协议中,引入一方或者多方可信实体做信用背书的跨链机制称为公证人机制。在公证人机制中,一个或一组公证人负责监听链上的事件,并对另一条链采取对应的操作。跨链技术本质上是一种将A链上的数据D(或信息I,或消息M)安全可信地转移到B链并在B链上产生预期效果的一种技术。
基于本方案的公证人跨链机制跨链协议的可执行代码的生成步骤:
1. 首先确定协议需求。不同的跨链场景往往对应着不同的需求,例如跨链资产交换。
(1)确定协议基本目标:公链网络A和公链网络B需要进行积分转换交易,公链网络A的积分单位为a,公链网络B的积分单位为b。
(2)确定协议使用范围和流程:位于公链网络A的Alice地址充值了n个积分,并在交易所服务器(公证人机制)挂卖单,给出1a=20b。位于公链网络B的Bob充值了m个积分B,并挂买单,给出20b=1a。经过公证人的认证,最终达成一致,实现积分资产交换。
(3)确定协议约束:
①位于不同区块链网络的交易双方的挂牌转换条件必须一致;
②交易双方账户余额必须满足挂牌转换条件;
③指定时间内,交易双方必须确认收到积分,否则交易回滚。
(4)建立需求形式化规范:
协议需求的形式化规范如下:
① Lemma property1: //交易完成后,A的挂单规则必须和B的买单规则相同。
② Lemma property2: //A账户的余额必须大于A的卖单规则指定金额,且B账户的余额必须大于B的卖单规则指定金额。
③ Lemma property3: // 有限时间内,A和B必须完成对交易的确认和检查。
2.协议分析。
用例分析:交易用户Alice和Bob,交易所平台。
时序分析和提取基本事件:
分析协议具体内容,将协议流程序列化,并获得模型关键元素:
① Alice 通过交易所钱包将自己的全部积分A打入交易所的公链网路A地址;
② Alice 在交易所上挂上卖单 1a 卖出 20b 价格;
③ Bob 需要将自己的全部积分B 打入交易所的公链网路B地址;
④ Bob 通过交易所挂出购买比特币的单子 20b 买一个积分a;
⑤ 交易所将Alice的卖单和 Bob 的买单进行撮合;
⑥ 交易所将Alice 在交易所存储的1a转移给 Bob 的公链网络A地址;
⑦ 交易所将 Bob在交易所存储的 20b 转移给 Alice 的公链网络B的地址。
通过上述分析,可以获取模型关键元素如下:
① 交易对象:Alice,Bob;
② 交易规则:从交易对象到规则集合的偏函数;
③ 交易所:负责接收来自交易对象的交易规则;
④ 交易发起确认:交易对象确认发起交易;
⑤ 交易完成确认:交易对象确认完成交易。
3.协议建模与验证:
(1)协议行为建模:
Inductive Transaction: Type:=
| TransactionId: rolerules. //定义角色到规则的偏函数
Inductive role: Type:=
| roleId: nat. //定义角色使用自然数来表示
Inductive Transfer:Type:=
|numberId: natnumber //定义角色到数字的全函数,表示转账金额
Inductive rules: Type:=
|rulesId: numbernumber //定义规则的构造函数
Inductive confirm: Type:=
|confirmId: roles(rules) //定义角色对规则的确认函数
Event Confirm //定义角色对规则的确认事件
any s1 s2
where
@grd1 s1rules
@grd2 s2rules
@grd3 confirmId(A)(s1)=confirmId(B)(s2)=true
then
@act1 update(Account(A))
@act2 update(Account(B))
(2)需求形式化规范描述:
采用Coq工具描述协议需求的形式化规范如下:
Lemma property1: ;
Lemma property2: ;
Lemma property3: ;
定义一条系统级协议约束性质形式化,如下:
∀S,C,V∙A∧E⇒Lemma Property1∧Lemma Property2∧Lemma Property3
其中,S为模型中的数据类型,C为模型中的常量,V为模型中的变量,A为模型中的公理,E为模型中的事件。
(3)性质验证:Coq支持交互式定理证明,也支持类似SMT求解器作为辅助证明器,自动化定理证明系统级协议约束性质。
4.协议代码自动生成。
(1)逻辑部分消除:将明天逻辑描述的语句转换成对应的编程语句,以C语言举例:
① ∧ 用 and表示;
② ∨ 用 or 表示;
③ ⇒ 用 if…else 语句表示;
④∀ 用 for语句表示。
(2)信息部分代码生成:
首先,人工手动定义模型到目标平台语言的映射规则,以转换规则表的形式保存。然后,基于规则表建立词法解析器、语法解析器和转换器,实现从Coq模型到目标平台可执行代码的自动化生成。生成方法如图2所示。
5. 一致性验证。得到的可执行代码可以通过测试与协议需求进行对比,当通过测试用例,即表明满足一致性,否则不满足一致性。具体实施方案是,根据用户需求设计测试用例,测试可执行代码是否满足预期,通过所有测试用例的代码则称和需求保持一致性,通过一致性验证。一致性验证步骤如下:
(1)静态测试验证:静态分析代码,生成代码控制流图,人工或自动判断是否满足规范;
(2)动态测试验证:根据输入的测试用例,判断输出是否满足预期;
(3)生成一致性验证报告:根据记录的静态和动态测试验证结果,判断是否满足一致性,生成报告。
对于本领域技术人员而言,显然本发明实施例不限于上述示范性实施例的细节,而且在不背离本发明实施例的精神或基本特征的情况下,能够以其他的具体形式实现本发明实施例。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明实施例的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明实施例内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统、装置或终端权利要求中陈述的多个单元、模块或装置也可以由同一个单元、模块或装置通过软件或者硬件来实现。
最后应说明的是,以上实施方式仅用以说明本发明实施例的技术方案而非限制,尽管参照以上较佳实施方式对本发明实施例进行了详细说明,本领域的普通技术人员应当理解,可以对本发明实施例的技术方案进行修改或等同替换都不应脱离本发明实施例的技术方案的精神和范围。
Claims (9)
1.一种基于Coq的安全跨链协议生成方法,其特征在于,包括以下步骤:
步骤一:确定协议需求;
步骤11:确定协议基本目标;
步骤12:确定协议使用范围和流程;
步骤13:确定协议约束;
步骤14:建立需求形式化规范;
步骤二:协议分析;
分析协议具体内容,将协议流程序列化,并获得模型元素:
步骤三:协议建模与验证;
步骤31:行为建模;所述行为建模指对跨链协议的整个交互行为流程进行建模,包括执行交易前跨链交易双方的准备工作、跨链交易双方的交互行为、交易完成后进行的交易确认环节,所述行为建模能够完整描述跨链协议的整个交互行为流程;
步骤32:需求形式化规范描述;
步骤33:性质验证;所述性质指通过步骤32所生成的需求形式化规范描述,每一个需求形式化规范描述都是一条需要验证的性质;
步骤四:协议代码自动生成;
步骤41:将逻辑部分消除;所述逻辑部分是指在Coq语言中,采用命题逻辑,包括and逻辑与、or逻辑或这些逻辑操作符连接的逻辑表达式;
步骤42:生成信息部分代码;所述信息部分是指在Coq文件中,除逻辑部分之外的语句;
步骤五:对测试结果进行一致性验证;
步骤51:静态测试验证;所述静态测试验证是指采用静态代码分析工具,进行测试验证,给出测试验证的结果;
步骤52:动态测试验证;所述动态测试验证是指采用动态测试验证工具进行测试验证,给出测试验证结果;
步骤53:生成一致性验证报告,指综合静态测试验证和动态测试验证的结果,给出最终的验证报告。
2.根据权利要求1所述的基于Coq的安全跨链协议生成方法,其特征在于,所述步骤11包括:逐条列出跨链协议的功能需求,所述需求包括:读取链的状态、验证链上事件的正确性;
所述功能需求是指跨链协议需要具备的功能,包括:进行跨链交易,跨链协议应该能够获取到参与交易的两个用户所在区块链的状态;两个用户完成交易后,需要在各自区块链上完成正确性验证,正确性验证通过后,跨链协议能够获知交易正确性验证的结果,最终确认跨链交易完成。
3.根据权利要求1所述的基于Coq的安全跨链协议生成方法,其特征在于,所述步骤12包括:采用不同共识算法的异构区块链之间进行跨链交易时,明确所述跨链协议的底链类型,同时根据跨链协议的基本目标和跨链协议实现的方式明确跨链协议流程。
4.根据权利要求1所述的基于Coq的安全跨链协议生成方法,其特征在于,所述步骤14包括:根据所述协议需求的分析,明确跨链协议的验证需求,采用形式化语言描述所有跨链协议的需求形式化规范,作为待验证的性质。
5.根据权利要求1所述的基于Coq的安全跨链协议生成方法,其特征在于,所述步骤二包括:
用例分析:提取出协议使用场景下的基本用例,得到用例分析图;协议的基本事件与所述用例分析图中的基本用例相对应,在所述用例分析图中,参与跨链交易的所有对象和用例之间传递的参数与所述基本事件的输入、输出相对应;
时序分析:每个所述基本用例建立参与跨链交易的所有对象的交互过程的整个场景,提取出交互过程中所需传递的参数;
提取基本事件:在时序分析结果的基础上,提取出所述基本事件中的具体活动,事件的具体活动与用例的时序分析相对应;
通过用例分析、时序分析和提取基本事件,从跨链协议的使用场景中提取出涉及的参与跨链交易的所有对象、基本事件,以及基本事件中的具体活动和涉及的参数。
6.根据权利要求1所述的基于Coq的安全跨链协议生成方法,其特征在于,所述步骤31包括:在步骤二获得模型元素后,使用形式化工具Coq建立对应的形式化模型,保持语义一致性,所述语义一致性是指模型的行为符合实际需求的行为,包括事件发生的先后顺序、变量所有状态的可达性。
7.根据权利要求1所述的基于Coq的安全跨链协议生成方法,其特征在于,所述步骤33包括:完成步骤行为建模和需求形式化规范描述后,将行为模型和需求形式化规范合并为同一个Coq文件,如果验证性质不满足,Coq工具提示不能满足的原因,用户通过边证明边修改的交互式,不断迭代优化行为模型,发现跨链协议本身存在的逻辑漏洞,通过不断迭代完善行为模型,直至所有需求形式化规范通过验证,表明行为模型能够满足所有需求。
8.根据权利要求1所述的基于Coq的安全跨链协议生成方法,其特征在于,所述步骤41包括:在代码生成的第一步消除逻辑部分;
所述步骤42包括:首先,建立Coq证明中信息到目标平台的映射转换规则,且保证语义的一致性,具体的映射转换规则的定义根据实际目标平台的语言决定;然后,基于该映射转换规则,以映射转换规则表的形式保存,建立词法解析器,语法解析器和转换器,实现自动化生成;输入Coq模型,自动输出目标平台语言的代码。
9.根据权利要求1所述的基于Coq的安全跨链协议生成方法,其特征在于,所述步骤51包括:通过静态代码分析工具,生成代码控制流图,然后根据代码控制流图分析是否满足规范;
所述步骤52包括:设计输入测试用例,运行跨链协议,判断输出结果是否满足预期的输出结果;
所述步骤53包括:根据静态测试验证和动态测试验证的结果,生成一致性验证报告,如果静态和动态测试验证均通过,表示一致性验证通过;
一致性验证为判断协议代码和协议需求之间的一致性,如果满足一致性,则表明该跨链协议可以部署在区块链系统;否则,根据发现的问题,继续修改完善协议行为模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110621642.3A CN113079221B (zh) | 2021-06-04 | 2021-06-04 | 一种基于Coq的安全跨链协议生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110621642.3A CN113079221B (zh) | 2021-06-04 | 2021-06-04 | 一种基于Coq的安全跨链协议生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113079221A true CN113079221A (zh) | 2021-07-06 |
CN113079221B CN113079221B (zh) | 2021-08-24 |
Family
ID=76617030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110621642.3A Active CN113079221B (zh) | 2021-06-04 | 2021-06-04 | 一种基于Coq的安全跨链协议生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113079221B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174143A (zh) * | 2022-05-30 | 2022-10-11 | 西南交通大学 | 一种基于安全协议的网络空间安全可信性验证方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150309813A1 (en) * | 2012-08-31 | 2015-10-29 | iAppSecure Solutions Pvt. Ltd | A System for analyzing applications in order to find security and quality issues |
CN108985073A (zh) * | 2018-07-18 | 2018-12-11 | 成都链安科技有限公司 | 一种高度自动化的智能合约形式化验证系统及方法 |
US20190340267A1 (en) * | 2018-05-01 | 2019-11-07 | International Business Machines Corporation | Blockchain implementing cross-chain transactions |
CN111311255A (zh) * | 2020-01-19 | 2020-06-19 | 杭州云象网络技术有限公司 | 一种基于预言机的智能合约形式化验证和纠错方法 |
US20200278958A1 (en) * | 2019-03-01 | 2020-09-03 | Wanchain Ltd. | System and method for universal blockchain interoperability |
CN111666323A (zh) * | 2020-05-15 | 2020-09-15 | 西安纸贵互联网科技有限公司 | 区块链的跨链互通方法及系统 |
CN112508563A (zh) * | 2020-12-01 | 2021-03-16 | 浙商银行股份有限公司 | 跨链交易可信验证方法、装置及计算机设备 |
-
2021
- 2021-06-04 CN CN202110621642.3A patent/CN113079221B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150309813A1 (en) * | 2012-08-31 | 2015-10-29 | iAppSecure Solutions Pvt. Ltd | A System for analyzing applications in order to find security and quality issues |
US20190340267A1 (en) * | 2018-05-01 | 2019-11-07 | International Business Machines Corporation | Blockchain implementing cross-chain transactions |
CN108985073A (zh) * | 2018-07-18 | 2018-12-11 | 成都链安科技有限公司 | 一种高度自动化的智能合约形式化验证系统及方法 |
US20200278958A1 (en) * | 2019-03-01 | 2020-09-03 | Wanchain Ltd. | System and method for universal blockchain interoperability |
CN111311255A (zh) * | 2020-01-19 | 2020-06-19 | 杭州云象网络技术有限公司 | 一种基于预言机的智能合约形式化验证和纠错方法 |
CN111666323A (zh) * | 2020-05-15 | 2020-09-15 | 西安纸贵互联网科技有限公司 | 区块链的跨链互通方法及系统 |
CN112508563A (zh) * | 2020-12-01 | 2021-03-16 | 浙商银行股份有限公司 | 跨链交易可信验证方法、装置及计算机设备 |
Non-Patent Citations (1)
Title |
---|
胡凯 等: "智能合约的形式化验证方法", 《信息安全研究》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174143A (zh) * | 2022-05-30 | 2022-10-11 | 西南交通大学 | 一种基于安全协议的网络空间安全可信性验证方法 |
CN115174143B (zh) * | 2022-05-30 | 2024-01-26 | 西南交通大学 | 一种基于安全协议的网络空间安全可信性验证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113079221B (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Letichevsky et al. | Basic protocols, message sequence charts, and the verification of requirements specifications | |
CN111311255B (zh) | 一种基于预言机的智能合约形式化验证和纠错方法 | |
Küster et al. | Validation of model transformations–first experiences using a white box approach | |
Murray et al. | Survey of formal verification methods for smart contracts on blockchain | |
Briola et al. | Distributed runtime verification of JADE multiagent systems | |
CN112052172B (zh) | 第三方通道的快速测试方法、装置和电子设备 | |
Demir et al. | Security smells in smart contracts | |
Ali et al. | Process to enhance the quality of software requirement specification document | |
Cristiá et al. | Tool support for the test template framework | |
CN113079221B (zh) | 一种基于Coq的安全跨链协议生成方法 | |
CN106708525A (zh) | 一种基于Coq的MSVL程序验证方法 | |
CN112613043B (zh) | 一种基于智能合约调用网络的智能合约漏洞检测方法 | |
Ma et al. | LOKI: State-Aware Fuzzing Framework for the Implementation of Blockchain Consensus Protocols. | |
CN111782510B (zh) | 基于组件结构网络的软件可靠性评估方法 | |
CN111651977B (zh) | 一种语言独立的法律合约与智能合约一致性度量方法 | |
CN115271714A (zh) | 一种区块链共识机制的自动化安全评测方法 | |
Kotonya et al. | Analysing the impact of change in COTS-based systems | |
CN115268847A (zh) | 区块链智能合约的生成方法、装置及电子设备 | |
CN115481406A (zh) | 程序漏洞修复方法、装置、电子设备及存储介质 | |
Lai et al. | Defining and verifying behaviour of domain specific language with fUML | |
CN115062312A (zh) | 智能合约漏洞检测方法、装置、设备和存储介质 | |
Huang et al. | A failed proof can yield a useful test | |
Vizovitin et al. | Verification of UCM Models with Scenario Control Structures Using Coloured Petri Nets | |
Milo et al. | Finding smart contract vulnerabilities with ConCert's property-based testing framework | |
Abushark et al. | A framework for automatically ensuring the conformance of agent designs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |