CN113726821A - 一种用于安全协议形式化的验证方法及系统 - Google Patents
一种用于安全协议形式化的验证方法及系统 Download PDFInfo
- Publication number
- CN113726821A CN113726821A CN202111286377.4A CN202111286377A CN113726821A CN 113726821 A CN113726821 A CN 113726821A CN 202111286377 A CN202111286377 A CN 202111286377A CN 113726821 A CN113726821 A CN 113726821A
- Authority
- CN
- China
- Prior art keywords
- protocol
- message
- model
- security
- security protocol
- 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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
Abstract
本发明涉及一种用于安全协议形式化的验证方法及系统,涉及网络安全技术领域,该方法包括:对待验证的安全协议描述,得到安全协议规范;解析安全协议规范,获得协议配置对象;根据协议配置对象构建协议模型;基于协议模型构建攻击者模型,并对攻击者模型进行优化;根据线性时态逻辑刻画安全协议的安全属性;基于优化后的攻击者模型构建通信环境,在通信环境中通过模型检测器SPIN验证协议模型是否满足安全属性,若不满足则由模型检测器SPIN输出攻击路径。本发明可以对不同类型的安全协议建模,具有通用性,能够自动对安全协议的安全性进行验证,具有自动性。
Description
技术领域
本发明主要涉及网络安全技术领域,具体涉及一种用于安全协议形式化的验证方法及系统。
背景技术
目前,大部分采用SPIN模型对安全协议建模,需要人工编写代码,需花费大量的时间,且不同协议需要重新编写建模代码,代码重复度高、效率低下且易于出错,而在已有的安全协议分析自动化建模方案中,其使用的协议描述语言相对复杂,编写难度高,用户需要花费很高的学习成本。
目前对攻击者建模中,构造攻击报文采用静态分析法和动态构造消息法。静态分析法的缺点:需要预先手工分析协议消息流,分别分析攻击者可截获的消息和协议诚实主体需要发送的消息集合,工作量大且容易出错。动态构造法的缺点:随机填充消息字段,构造方法无目的性,产生大量无效消息,使得状态数量过多,容易导致模型检测状态爆炸问题。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种用于安全协议形式化的验证方法及系统。
本发明解决上述技术问题的技术方案如下:一种用于安全协议形式化的验证方法,包括如下步骤:
对待验证的安全协议描述,得到安全协议规范;
解析所述安全协议规范,获得协议配置对象;
根据所述协议配置对象构建协议模型;
基于所述协议模型构建攻击者模型,并对所述攻击者模型进行优化;
根据线性时态逻辑刻画所述安全协议的安全属性;
基于优化后的攻击者模型构建通信环境,在所述通信环境中通过模型检测器SPIN验证所述协议模型是否满足所述安全属性,若不满足则由所述模型检测器SPIN输出攻击路径。
本发明的有益效果是:对安全协议进行协议模型的构建,并基于协议模型构建攻击者模型,通过攻击者模型的通信环境验证协议模型的安全性;本发明可以对不同类型的安全协议建模,具有通用性,能够自动对安全协议的安全性进行验证,具有自动性;以缓解模型验证中常见的状态爆炸问题,降低验证所需要的状态空间和状态迁移量,从而体现攻击者模型的高效性。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述对待验证的安全协议描述,得到安全协议规范的过程包括:
根据安全协议形式化语言对待验证的安全协议描述,得到安全协议规范,其中,所述安全协议形式化语言由扩展巴科斯范式EBNF规则定义,所述安全协议规范包括主体、随机数、消息、密钥和消息通信。
采用上述进一步方案的有益效果是:采用接近于自然语言的扩展巴科斯范式EBNF定义协议的描述语言,大大降低了协议分析的难度。
进一步,所述解析所述安全协议规范,获得协议配置对象的过程包括:
通过词法分析器和语法分析器对所述安全协议规范进行解析,生成抽象语法树及数据字典,并将所述抽象语法树及数据字典封装为协议配置对象。
采用上述进一步方案的有益效果是:通过词法分析器和语法分析器能够准确解析安全协议规范,便于模型检测器SPIN对安全协议规范进行验证。
进一步,所述根据所述协议配置对象构建协议模型的过程包括:
根据所述协议配置对象构建诚实主体进程,所述诚实主体进程用于通过消息通道发送及接收消息M,其中,所述消息M由结构体表示,所述结构体用于存储实体名、随机数、密钥和消息类型字段类型。
进一步,所述根据所述协议配置对象构建诚实主体进程的过程包括:
定义Len(M)为消息M的长度,
其中,m表示原子消息,M1表示M的第一个消息,M2表示M其余消息,M={M1,M2}表示消息M是由M1和M2构成的,M={M1}M2表示消息M是通过M2加密M1得到的,
Len(Pro)定义如下:Len(Pro)=Max(Len(Msg1),Len(Msg2),…,Len(MsgN)),其中,Len(Msg1)表示第一个消息的长度,Len(Msg2)表示第二个消息的长度,Len(MsgN)表示第N个消息的长度,…表示多个Msg消息的长度,则安全协议Pro通道容量为Len(Pro)+1;
定义所述安全协议的集合,包括:
定义所述安全协议中诚实主体数量;
定义所述安全协议中诚实主体和攻击者I集合;
定义所述安全协议中随机数集合;
定义所述安全协议中公钥集合;
定义所述安全协议中私钥集合;
定义所述安全协议中对称密钥集合;
定义所述安全协议中消息类型集合。
采用上述进一步方案的有益效果是:定义不同的集合,来表示协议中实体、密钥、随机数和消息类型,对名称定义规范化,利于快速分析通信消息。
进一步,所述基于所述协议模型构建攻击者模型的过程包括:
基于Dolev-Yao模型和协议模型构建攻击者模型,所述攻击者模型包括定义的攻击者行为、用于存放攻击者获得知识的知识库以及用于存放攻击者截获诚实主体交互消息的重放消息库,其中,所述定义的攻击者行为包括消息M截获行为、知识学习行为、消息M伪造行为和消息M重放行为,
将所述消息M截获行为定义为:通过消息通道拦截所有的诚实主体进程发送的消息M,将拦截的消息M封装成消息结构体,并保存到所述重放消息库中;
将所述知识学习行为定义为:解析拦截的消息M,攻击者通过已有的知识库破解消息M,并将破解后的消息M扩充到所述知识库中;
将所述消息M伪造行为定义为:通过所述知识库中的知识,伪造诚实主体需要的消息并发送至消息通道中;
将所述消息M重放行为定义为:随机从所述重放消息库中选择一条旧消息对诚实主体重放。
采用上述进一步方案的有益效果是:建立构建攻击者模型,攻击者可以截获所有消息通道的消息,进而通过消息对协议进行破解和学习知识。
进一步,所述对所述攻击者模型进行优化的过程包括:
在所述攻击者模型中随机伪造消息类型并发送至所述消息通道中。
采用上述进一步方案的有益效果是:提高攻击者模型攻击的真实性、准确性。
进一步,所述根据线性时态逻辑刻画所述安全协议的安全属性的过程包括:
根据线性时态逻辑LTL的逻辑公式authIni和逻辑公式authRes刻画所述安全协议的认证性,所述逻辑公式authIni和所述逻辑公式authRes为:
其中,W表示二元时态运算符,[]表示永远或者总是的时态运算符,所述永远或者总是的时态运算符表示性质在任何状态下都要成立;BrescommitA表示响应者B提交了与发起者A的会话,AinirunningB表示发起者A发起了对响应者B的会话,AinicommitB表示发起者A提交了与响应者B的会话,BresrunningA表示响应者B发起了对发起者A的会话;逻辑公式authIni表示发起者A对响应者B的认证;逻辑公式authRes表示响应者B对发起者A的认证;!BrescommitA W AinirunningB表示直到AinirunningB为真之前,!BrescommitA一直为真;!AinicommitB W BresrunningA表示直到BresrunningA为真之前,!AinicommitB一直为真;当且仅当逻辑公式authIni和逻辑公式authRes同时为真时,即发起者A和响应者B都完成认证,则所述安全协议满足认证性;
根据线性时态逻辑LTL的逻辑公式consistency刻画所述安全协议的秘密一致性,所述逻辑公式consistency为:
ltl consistency {[ ]( (AinicommitB && BrescommitA) -> <>Sec_Consist ) },
其中,&&表示运算符与;<>表示最终或者将来的时态运算符,最终或者将来的时态运算符表示性质至少在未来的某个状态下要成立一次; Sec_Consist表示发起者A与响应者B的秘密一致性;AinicommitB && BrescommitA 表示发起者A与响应者B完成相互认证;<>Sec_Consist表示秘密一致性最终要成立;(AinicommitB && BrescommitA)-> <>Sec_Consist表示如果发起者A与响应者B完成相互认证,秘密一致性要最终成立;[] ((AinicommitB && BrescommitA) -> <>Sec_Consist )表示在任意状态下永久成立。
采用上述进一步方案的有益效果是:刻画安全协议需要满足的安全属性,安全属性刻画正确与否决定能否发现漏洞。
本发明解决上述技术问题的另一技术方案如下:一种用于安全协议形式化的验证系统,包括:
协议描述模块,用于根据形式化安全协议描述语言对待验证的安全协议描述,得到安全协议规范;
解析模块,用于解析所述安全协议规范,获得协议配置对象;
模型构建模块,用于根据所述协议配置对象构建协议模型;
还用于基于所述协议模型构建攻击者模型,并对所述攻击者模型进行优化;
安全刻画模块,用于根据线性时态逻辑刻画所述安全协议的安全属性;
验证模块,用于基于优化后的攻击者模型构建通信环境,在所述通信环境中通过模型检测器SPIN验证所述协议模型是否满足所述安全属性,若不满足则由所述模型检测器SPIN输出攻击路径。
本发明解决上述技术问题的另一技术方案如下:一种用于安全协议形式化的验证系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,当所述处理器执行所述计算机程序时,实现如上所述的用于安全协议形式化的验证方法。
本发明解决上述技术问题的另一技术方案如下:一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,实现如上所述的用于安全协议形式化的验证方法。
附图说明
图1为本发明实施例提供的用于安全协议形式化的验证方法的流程示意图;
图2为本发明实施例提供的用于安全协议形式化的验证系统的功能模块框图;
图3为本发明实施例提供的协议会话的示意图之一;
图4为本发明实施例提供的协议会话的示意图之二;
图5为本发明实施例提供的消息规约处理的示意图;
图6为本发明实施例提供的Reduce-NSPK的组合状态迁移图;
图7为本发明实施例提供的系统架构图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例1:
如图1所示,一种用于安全协议形式化的验证方法,包括如下步骤:
对待验证的安全协议描述,得到安全协议规范;
解析所述安全协议规范,获得协议配置对象;
根据所述协议配置对象构建协议模型;
基于所述协议模型构建攻击者模型,并对所述攻击者模型进行优化;
根据线性时态逻辑刻画所述安全协议的安全属性;
基于优化后的攻击者模型构建通信环境,在所述通信环境中通过模型检测器SPIN验证所述协议模型是否满足所述安全属性,若不满足则由所述模型检测器SPIN输出攻击路径。
上述实施例中,对安全协议进行协议模型的构建,并基于协议模型构建攻击者模型,通过攻击者模型的通信环境验证协议模型的安全性;本发明可以对不同类型的安全协议建模,具有通用性,能够自动对安全协议的安全性进行验证,具有自动性;以缓解模型验证中常见的状态爆炸问题,降低验证所需要的状态空间和状态迁移量,从而体现攻击者模型的高效性。
具体地,所述对待验证的安全协议描述,得到安全协议规范的过程包括:
根据安全协议形式化语言对待验证的安全协议描述,得到安全协议规范,其中,所述安全协议形式化语言由扩展巴科斯范式EBNF规则定义,所述安全协议规范包括主体、随机数、消息、密钥和消息通信。
具体地,扩展巴科斯范式EBNF规则定义为:
part = ['a'-'z'] //协议主体
nonce = 'N' '(' part ')' //新鲜数
pubkey = 'PK' '(' part ')' //公钥
seckey = 'SK' '(' part ')' //私钥
shakey = 'SSK' '(' part ',' part')' //对称密钥
key = pubkey | seckey | shakey //密钥
field = part | nonce | key // 消息字段
enc = '{' msg '}' field // 加密
term = part | nonce | field | enc // 消息项
msg = term | term ',' msg // 消息
send = part '->' part ':' msg // 发送消息
pro = send '\n' pro | send // 协议
以NSPK协议描述为例,NSPK协议交互过程如下:
上述交互过程表示为:
第1步:发起者A发送自己身份标识和响应者B身份标识给服务器S;
第2步:服务器S用S和发起者A的对称密钥对响应者B的公钥和身份标识加密,并发送给发起者A;
第3步:发起者A用响应者B的公钥加密自己的随机数和身份证标识,并发送给B;
第4步:响应者B发送自己身份标识和响应者身份标识给服务器S;
第5步:服务器S用S和B的对称密钥对发起者A的公钥和身份标识加密,并发送给B;
第6步:响应者B用发起者A的公钥加密自己的随机数和发起者A的随机数,并发送给发起者A;
第7步:发起者A用响应者B的公钥加密响应者B的随机数,并发送给响应者B。
用扩展巴科斯范式EBNF规则定义的协议描述语言来描述NSPK协议的交互流如下所示,可转换为:
即,第3步、第6步和第7步。通过上述语法规则描述的协议,形式上等同于上述协议交互过程,该语法能够大大简化用户学习和编写代码的难度。
采用上述进一步方案的有益效果是:采用接近于自然语言的扩展巴科斯范式EBNF定义协议的描述语言,大大降低了协议分析的难度。
具体地,所述解析所述安全协议规范,获得协议配置对象的过程包括:
通过词法分析器和语法分析器对所述安全协议规范进行解析,生成抽象语法树及数据字典,并将所述抽象语法树及数据字典封装为协议配置对象。
通过词法分析器和语法分析器能够准确解析安全协议规范,便于模型检测器SPIN对安全协议规范进行验证。
具体地,所述根据所述协议配置对象构建协议模型的过程包括:
根据所述协议配置对象构建诚实主体进程,所述诚实主体进程用于通过消息通道发送及接收消息M,其中,所述消息M由结构体表示,所述Msg结构体用于存储实体名、随机数、密钥和消息类型字段类型。
进一步,所述根据所述协议配置对象构建诚实主体进程的过程包括:
定义Len(M)为消息M的长度,
其中,m表示原子消息,M1表示M的第一个消息,M2表示M其余消息,M={M1,M2}表示消息M是由M1和M2构成的,M={M1}M2表示消息M是通过M2加密M1得到的,
并定义Len(Pro)为安全协议Pro中最长的消息,其中,Len(Pro)定义如下:Len(Pro)=Max(Len(Msg1),Len(Msg2),…,Len(MsgN)),其中,Len(Msg1)表示第一个消息的长度,Len(Msg2)表示第二个消息的长度,Len(MsgN)表示第N个消息的长度,…表示多个Msg消息的长度,则安全协议Pro通道容量为Len(Pro)+1;
应理解地,M2为下标表示密钥消息,是协议中常规表示方式,这个公式表述M2为不同消息形式时的情况;
定义所述安全协议的集合,包括:
定义所述安全协议中诚实主体数量;
定义所述安全协议中诚实主体和攻击者I集合;
定义所述安全协议中随机数集合;
定义所述安全协议中公钥集合;
定义所述安全协议中私钥集合;
定义所述安全协议中对称密钥集合;
定义所述安全协议中消息类型集合。
具体为:
所述协议Pro中诚实主体数量定义为:#(Pro);
所述协议Pro中诚实主体和攻击者I集合定义为:
SetP(Pro)={P1, P2, P3,…,P#(Pro), I};其中,P1表示诚实主体P1, P2表示诚实主体P2,P3表示诚实主体P3,Pro表示诚实主体数量,P#(Pro)表示诚实主体P#(Pro);
所述协议Pro中随机数集合定义为SetN(Pro)={N1, N2, N3,… N#(Pro), NI};其中,N1表示诚实主体P1的随机数,N2表示诚实主体P2的随机数,N#(Pro)表示诚实主体P#(Pro)的随机数,NI表示攻击者I的随机数。
所述协议Pro中公钥集合定义为:
SetPK(Pro)={PK(P1), PK(P2), PK(P3),…,PK(P#(Pro)),PK(I)};其中,PK(P1)表示诚实主体P1的公钥,PK(P2)表示诚实主体P2的公钥,PK(P#(Pro))表示诚实主体P#(Pro)的公钥,PK(I)表示攻击者I的公钥;
所述协议Pro中私钥集合定义为:
SetSK(Pro)={SK(P1),SK(P2),SK(P3),…,SK(P#(Pro)),SK(I)};其中,SK (P1)表示诚实主体P1的私钥,SK (P2)表示诚实主体P2的私钥,SK (P#(Pro))表示诚实主体P#(Pro)的私钥,SK (I)表示攻击者I的私钥;
所述协议Pro中对称密钥集合定义为:
SetSSK(Pro)={SSK(Pi,Pj),SSK(PI,Pk)},1<=i<j<=#(Pro)and 1<=k<=#(Pro);其中,SSK(Pi,Pj)表示由诚实主体Pi和Pj共同持有的共享密钥,i和j的取值范围为:1~#(Pro),且i不等于j;SSK(PI,Pk)表示由攻击者I和诚实主体Pk共同持有的共享密钥,k的取值范围为1~#(Pro);
所述协议Pro中消息类型集合定义为:
SetMSG(Pro)={MSG1,MSG2,MSG3,…, MSGi}, 1<=i<=#(Pro);其中,MSG1表示消息类型MSG1,MSG 2表示消息类型MSG 2,MSG 3表示消息类型MSG3,MSGi表示消息类型MSGi,…表示多个消息类型。
上述实施例中,定义不同的集合,来表示协议中实体、密钥、随机数和消息类型,对定义规范化,利于快速分析通信消息。
具体地,所述基于所述协议模型构建攻击者模型的过程包括:
基于Dolev-Yao模型和协议模型构建攻击者模型,所述攻击者模型包括定义的攻击者行为、用于存放攻击者获得知识的知识库以及用于存放攻击者截获诚实主体交互消息的重放消息库,其中,所述定义的攻击者行为包括消息M截获行为、知识学习行为、消息M伪造行为和消息M重放行为,
将所述消息M截获行为定义为:通过消息通道拦截所有的诚实主体进程发送的消息M,将拦截的消息M封装成消息结构体,并保存到所述重放消息库中;
将所述知识学习行为定义为:解析拦截的消息M,攻击者通过已有的知识库破解消息M,并将破解后的消息M扩充到所述知识库中;
将所述消息M伪造行为定义为:通过所述知识库中的知识,伪造诚实主体需要的消息并发送至消息通道中;
将所述消息M重放行为定义为:随机从所述重放消息库中选择一条旧消息对诚实主体重放。
如图3所示,本发明攻击者模型假设攻击者能控制协议中的合法用户,所以构建实体及攻击者之间的所有可能组合的协议会话。
A和B分别代表协议诚实主体,I为攻击者,A、B、I可以为协议发起者也可以为响应者身份进行会话,将会话组合进一步简化,如图4所示,剔除冗余镜像会话后上述协议会话组合进行简化,简化后如图4所示,A 既是发起者又是响应者,所以应考虑A 的两轮会话被攻击者攻击的可能。而B作为发起者的会话属于冗余的镜像会话,所以在协议组合会话中将其删减。
构造攻击者模型是安全协议分析的关键,决定了模型的通用性和能否发现漏洞。在攻击者模型中定义一个结构体MSG(即消息类型)用于保存拦截的消息,定义一个数组为攻击者知识库KN,用于判断和学习相应知识。攻击者的消息截获、知识学习、伪造和重放能力分别定义相应函数实现。在模型中建立攻击者进程,攻击者可以截获所有实体通信消息,并对消息进行破解和学习知识,存储在攻击者知识库KN中。攻击者可以通过知识库中的知识伪造消息,针对协议诚实主体状态构造攻击报文,或者通过重放消息进行重放攻击。
上述实施例中,建立构建攻击者模型,攻击者可以截获所有消息通道的消息,进而通过消息对协议进行破解和学习知识。
具体地,所述对攻击者模型进行优化的过程包括:
在所述攻击者模型中随机伪造消息类型并发送至所述消息通道中。
例如,将发起者进程和响应者进程作为有限状态机,所述有限状态机根据消息的收发进行状态的转移,所述攻击者模型框架根据消息状态的转移构造攻击报文。原理如图5所示,将发起者和响应者作为有限状态机,即发起者的状态迁移过程位于图5右上方,响应者的状态迁移过程位于图5右下方。
图5中发起者处于S1状态,响应者处于P0的时候,则攻击者根据其状态伪造MSG2和
MSG1类型的报文发送;!MSG1到!MSG3表示发送消息动作, MSG1到 MSG3表示接受消息动
作, error表示接受非预期的错误消息, timeout表示接受超时,Abort表示协议终止状
态,S0到S3表示发起者状态,P0到P3表示响应者状态, error和 timeout动作都会使得
状态迁移至Abort状态中去。这样的攻击报文相对当前状态是较优解,减少无效报文构造,
有效提升验证效率。
图6表示Reduce-NSPK的组合状态迁移图,协议状态(si,pi)由发起方状态si和响应方状态pi构成,i标记状态序号(0、1、2、3)发起方状态从s1到s3,响应方状态从p1到p3。协议状态由发起方状态和响应方状态组合而成。当实体接受或者发送消息,则状态迁移。当处于(s1, pi)状态,该迁移所需的消息类型为:{N,P}PK,则N取值为协议发起者、响应者和攻击者的随机数,用集合表示为{Na, Nb, Ni}, P取值为发起者、响应者和攻击者,用集合表示为{A,B,I}, Pk取值为发起者A、响应者B和攻击者I的公钥,用集合表示为{Pk (A),Pk(B),Pk (I)} ,该方法构造报文数量为:27 条,远远低于现有动态方法构造攻击报文数量。
具体地,所述对攻击者模型进行优化的过程包括:
在所述攻击者模型中随机伪造消息类型并发送至所述消息通道中。
上述实施例中,提高攻击者模型攻击的真实性、准确性。
具体地,所述根据线性时态逻辑刻画所述安全协议的安全属性的过程包括:
根据线性时态逻辑LTL对所述安全协议进行认证性和秘密一致性刻画;
根据全局秘密变量iniSec和resSec在所述协议模型中对保密性进行安全断言。
具体地,根据线性时态逻辑LTL对所述安全协议进行认证性和秘密一致性刻画的过程包括:
认证性要求协议结束后所完成的身份认证与实际的身份认证保持一致性。为了形式化描述认证性质,引入状态变量来记录协议诚实主体所处的不同状态,根据协议的执行不同阶段,使用状态函数来更新状态变量。
根据线性时态逻辑LTL的逻辑公式authIni和逻辑公式authRes刻画所述安全协议的认证性,所述逻辑公式authIni和所述逻辑公式authRes为:
其中,W表示二元时态运算符,[ ]表示永远或者总是的时态运算符,所述永远或者总是的时态运算符表示性质在任何状态下都要成立;BrescommitA表示响应者B提交了与发起者A的会话,AinirunningB表示发起者A发起了对响应者B的会话,AinicommitB表示发起者A提交了与响应者B的会话,BresrunningA表示响应者B发起了对发起者A的会话;逻辑公式authIni表示发起者A对响应者B的认证;逻辑公式authRes表示响应者B对发起者A的认证;!BrescommitA W AinirunningB表示直到AinirunningB为真之前,!BrescommitA一直为真;!AinicommitB W BresrunningA表示直到BresrunningA为真之前,!AinicommitB一直为真;当且仅当逻辑公式authIni和逻辑公式authRes同时为真时,即发起者A和响应者B都完成认证,则所述安全协议满足认证性;
具体地,秘密一致性要求协议结束后达成的共享秘密是一致的。这不同于保密性,秘密未泄露但秘密可能是不一致的。
根据线性时态逻辑LTL的逻辑公式consistency刻画所述安全协议的秘密一致性,所述逻辑公式consistency为:
ltl consistency {[ ]( (AinicommitB && BrescommitA) -> <>Sec_Consist ) },
其中,&&表示运算符与;<>表示最终或者将来的时态运算符,最终或者将来的时态运算符表示性质至少在未来的某个状态下要成立一次; Sec_Consist表示发起者A与响应者B的秘密一致性;AinicommitB && BrescommitA 表示发起者A与响应者B完成相互认证;<>Sec_Consist表示秘密一致性最终要成立;(AinicommitB && BrescommitA)-> <>Sec_Consist表示如果发起者A与响应者B完成相互认证,秘密一致性要最终成立;[] ((AinicommitB && BrescommitA) -> <>Sec_Consist )表示在任意状态下永久成立。
具体地,根据全局秘密变量iniSec和resSec在所述协议模型中对保密性进行安全断言:
保密性要求通信过程中秘密消息内容不能被协议要求之外的实体知晓,本方法使用活动进程验证保密性。在发起者和响应者进程中分别定义全局秘密变量iniSec和resSec记录秘密性,设定攻击者知识库是否能构造秘密消息为保密性条件,定义断言assert(!iniSec)或assert(!resSec)为保密性不成立状态,在活动进程中将会不断检测保密性条件,如不满足条件,则秘密泄露,断言违反,协议不满足保密性。
上述实施例中,刻画安全协议需要满足的安全属性,安全属性刻画正确与否决定能否发现漏洞。
具体地,基于优化后的攻击者模型构建通信环境,在所述通信环境中通过模型检测器SPIN验证所述协议模型是否满足所述安全属性,若不满足则由所述模型检测器SPIN输出攻击路径包括:
将所述协议模型转换为形式化语法树和数据字典,将所述形式化语法树和数据字典作为Promela源码导入SPIN模型检测工具中,并在深度优先模式下对所述Promela源码进行安全漏洞验证。
如图7所示,本实例中能够利用SPIN模型检测工具实现安全协议自动验证:
通过扩展巴科斯范式EBNF语言将安全协议(即协议描述需求文档)定义为安全协议规范,通过词法分析器和语法分析器对所述安全协议规范进行解析,生成抽象语法树及数据字典,并将所述抽象语法树及数据字典封装为协议配置对象将形式化语法树和数据字典输入到Promela源码推导器中。
Promela源码推导器用于接收形式化语法树和数据字典,并将其翻译为建模所需的Promela的源码(包含对源码的优化手段),最后对源码进行整理组合成完整的Promela建模代码,并作为模型检测器SPIN的输入,由SPIN输出验证结果,即完成协议安全性验证。
上述实施例中,能够对模型的安全漏洞进行验证,自动完成协议安全性验证,具有自动性。
实施例2:
如图2所示,一种用于安全协议形式化的验证系统,其特征在于,包括:
协议描述模块,用于根据形式化安全协议描述语言对待验证的安全协议描述,得到安全协议规范;
解析模块,用于解析所述安全协议规范,获得协议配置对象;
模型构建模块,用于根据所述协议配置对象构建协议模型;
还用于基于所述协议模型构建攻击者模型,并对所述攻击者模型进行优化;
安全刻画模块,用于根据线性时态逻辑刻画所述安全协议的安全属性;
验证模块,用于基于优化后的攻击者模型构建通信环境,在所述通信环境中通过模型检测器SPIN验证所述协议模型是否满足所述安全属性,若不满足则由所述模型检测器SPIN输出攻击路径。
实施例3:
一种用于安全协议形式化的验证系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,当所述处理器执行所述计算机程序时,实现如上所述的用于安全协议形式化的验证方法。
实施例4:
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,实现如上所述的用于安全协议形式化的验证方法。
本发明具有如下优点:
通用性:提出一种攻击者模型通用框架,基于该框架可以对不同类型协议建模。
高效性:基于协议状态的消息规约,提出构造攻击报文的优化方法,以缓解模型检测中常见的状态爆炸问题,降低验证所需要的状态空间和状态迁移量,从而体现攻击者模型的高效性。
自动性:采用接近于自然语言的扩展巴科斯范式(EBNF)定义协议的描述语言,大大降低了协议分析的难度;系统可实现将简单抽象的EBNF协议描述文本自动转换成Promela建模,基于线性时态逻辑,刻画协议需要满足的认证性和秘密性,系统实现自动验证。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、 “包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种用于安全协议形式化的验证方法,其特征在于,包括如下步骤:
对待验证的安全协议描述,得到安全协议规范;
解析所述安全协议规范,获得协议配置对象;
根据所述协议配置对象构建协议模型;
基于所述协议模型构建攻击者模型,并对所述攻击者模型进行优化;
根据线性时态逻辑刻画所述安全协议的安全属性;
基于优化后的攻击者模型构建通信环境,在所述通信环境中通过模型检测器SPIN验证所述协议模型是否满足所述安全属性,若不满足则由所述模型检测器SPIN输出攻击路径。
2.根据权利要求1所述的用于安全协议形式化的验证方法,其特征在于,所述对待验证的安全协议描述,得到安全协议规范的过程包括:
根据安全协议形式化语言对待验证的安全协议描述,得到安全协议规范,其中,所述安全协议形式化语言由扩展巴科斯范式EBNF规则定义,所述安全协议规范包括主体、随机数、消息、密钥和消息通信。
3.根据权利要求1所述的用于安全协议形式化的验证方法,其特征在于,所述解析所述安全协议规范,获得协议配置对象的过程包括:
通过词法分析器和语法分析器对所述安全协议规范进行解析,生成抽象语法树及数据字典,并将所述抽象语法树及数据字典封装为协议配置对象。
4.根据权利要求1所述的用于安全协议形式化的验证方法,其特征在于,所述根据所述协议配置对象构建协议模型的过程包括:
根据所述协议配置对象构建诚实主体进程,所述诚实主体进程用于通过消息通道发送及接收消息M,其中,所述消息M由结构体表示,所述结构体用于存储实体名、随机数、密钥和消息类型字段类型。
5.根据权利要求4所述的用于安全协议形式化的验证方法,其特征在于,所述根据所述协议配置对象构建诚实主体进程的过程包括:
定义Len(M)为消息M的长度,
其中,m表示原子消息,M1表示M的第一个消息,M2表示M其余消息,M={M1,M2}表示消息M是由M1和M2构成的,M={M1}M2表示消息M是通过M2加密M1得到的,
并定义Len(Pro)为安全协议Pro中最长的消息,其中,Len(Pro)定义如下:Len(Pro)=Max(Len(Msg1),Len(Msg2),…,Len(MsgN)),其中,Len(Msg1)表示第一个消息的长度,Len(Msg2)表示第二个消息的长度,Len(MsgN)表示第N个消息的长度,…表示多个Msg消息的长度,则安全协议Pro通道容量为Len(Pro)+1;
定义所述安全协议的集合,包括:
定义所述安全协议中诚实主体数量;
定义所述安全协议中诚实主体和攻击者I集合;
定义所述安全协议中随机数集合;
定义所述安全协议中公钥集合;
定义所述安全协议中私钥集合;
定义所述安全协议中对称密钥集合;
定义所述安全协议中消息类型集合。
6.根据权利要求1所述的用于安全协议形式化的验证方法,其特征在于,所述基于所述协议模型构建攻击者模型的过程包括:
基于Dolev-Yao模型和协议模型构建攻击者模型,所述攻击者模型包括定义的攻击者行为、用于存放攻击者获得知识的知识库以及用于存放攻击者截获诚实主体交互消息的重放消息库,其中,所述定义的攻击者行为包括消息M截获行为、知识学习行为、消息M伪造行为和消息M重放行为,
将所述消息M截获行为定义为:通过消息通道拦截所有的诚实主体进程发送的消息M,将拦截的消息M封装成消息结构体,并保存到所述重放消息库中;
将所述知识学习行为定义为:解析拦截的消息M,攻击者通过已有的知识库破解消息M,并将破解后的消息M扩充到所述知识库中;
将所述消息M伪造行为定义为:通过所述知识库中的知识,伪造诚实主体需要的消息并发送至消息通道中;
将所述消息M重放行为定义为:随机从所述重放消息库中选择一条旧消息对诚实主体重放。
7.根据权利要求6所述的用于安全协议形式化的验证方法,其特征在于,所述对所述攻击者模型进行优化的过程包括:
在所述攻击者模型中随机伪造消息类型并发送至所述消息通道中。
8.根据权利要求1所述的用于安全协议形式化的验证方法,其特征在于,所述根据线性时态逻辑刻画所述安全协议的安全属性的过程包括:
根据线性时态逻辑LTL对所述安全协议进行认证性和秘密一致性刻画;
根据全局秘密变量iniSec和resSec在所述协议模型中对保密性进行安全断言。
9.根据权利要求8所述的用于安全协议形式化的验证方法,其特征在于,所述根据线性时态逻辑LTL对所述安全协议进行认证性和秘密一致性刻画的过程包括:
根据线性时态逻辑LTL的逻辑公式authIni和逻辑公式authRes刻画所述安全协议的认证性,所述逻辑公式authIni和所述逻辑公式authRes为:
其中,W表示二元时态运算符,[ ]表示永远或者总是的时态运算符,所述永远或者总是的时态运算符表示性质在任何状态下都要成立;BrescommitA表示响应者B提交了与发起者A的会话,AinirunningB表示发起者A发起了对响应者B的会话,AinicommitB表示发起者A提交了与响应者B的会话,BresrunningA表示响应者B发起了对发起者A的会话;逻辑公式authIni表示发起者A对响应者B的认证;逻辑公式authRes表示响应者B对发起者A的认证;!BrescommitA W AinirunningB表示直到AinirunningB为真之前,!BrescommitA一直为真;!AinicommitB W BresrunningA表示直到BresrunningA为真之前,!AinicommitB一直为真;当且仅当逻辑公式authIni和逻辑公式authRes同时为真时,即发起者A和响应者B都完成认证,则所述安全协议满足认证性;
根据线性时态逻辑LTL的逻辑公式consistency刻画所述安全协议的秘密一致性,所述逻辑公式consistency为:
ltl consistency {[ ]( (AinicommitB && BrescommitA) -> <>Sec_Consist ) },
其中,&&表示运算符与;<>表示最终或者将来的时态运算符,最终或者将来的时态运算符表示性质至少在未来的某个状态下要成立一次; Sec_Consist表示发起者A与响应者B的秘密一致性;AinicommitB && BrescommitA 表示发起者A与响应者B完成相互认证;<>Sec_Consist表示秘密一致性最终要成立;(AinicommitB && BrescommitA)-> <>Sec_Consist表示如果发起者A与响应者B完成相互认证,秘密一致性要最终成立。
10.一种用于安全协议形式化的验证系统,其特征在于,包括:
协议描述模块,用于根据形式化安全协议描述语言对待验证的安全协议描述,得到安全协议规范;
解析模块,用于解析所述安全协议规范,获得协议配置对象;
模型构建模块,用于根据所述协议配置对象构建协议模型;
还用于基于所述协议模型构建攻击者模型,并对所述攻击者模型进行优化;
安全刻画模块,用于根据线性时态逻辑刻画所述安全协议的安全属性;
验证模块,用于基于优化后的攻击者模型构建通信环境,在所述通信环境中通过模型检测器SPIN验证所述协议模型是否满足所述安全属性,若不满足则由所述模型检测器SPIN输出攻击路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111286377.4A CN113726821B (zh) | 2021-11-02 | 2021-11-02 | 一种用于安全协议形式化的验证方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111286377.4A CN113726821B (zh) | 2021-11-02 | 2021-11-02 | 一种用于安全协议形式化的验证方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113726821A true CN113726821A (zh) | 2021-11-30 |
CN113726821B CN113726821B (zh) | 2022-02-22 |
Family
ID=78686439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111286377.4A Active CN113726821B (zh) | 2021-11-02 | 2021-11-02 | 一种用于安全协议形式化的验证方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113726821B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114500347A (zh) * | 2022-04-18 | 2022-05-13 | 军事科学院系统工程研究院网络信息研究所 | 一种对安全互联协议进行形式化验证的方法和系统 |
CN115174143A (zh) * | 2022-05-30 | 2022-10-11 | 西南交通大学 | 一种基于安全协议的网络空间安全可信性验证方法 |
CN117714210A (zh) * | 2024-02-05 | 2024-03-15 | 华东交通大学 | 一种用于自定义CoAP协议的自动分析验证方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050108531A1 (en) * | 2003-11-14 | 2005-05-19 | Microsoft Corporation | Method of negotiating security parameters and authenticating users interconnected to a network |
CN101977180A (zh) * | 2010-06-08 | 2011-02-16 | 南京大学 | 一种基于漏洞攻击的安全协议验证方法 |
CN102780817A (zh) * | 2012-07-16 | 2012-11-14 | 天津大学 | 网络协议安全建模方法 |
CN103259788A (zh) * | 2013-04-27 | 2013-08-21 | 天津大学 | 针对安全协议的形式化建模及验证方法 |
CN104135397A (zh) * | 2014-07-01 | 2014-11-05 | 浙江工业大学 | 面向无线传感网安全协议设计与实现的形式化验证方法 |
CN105049283A (zh) * | 2015-07-07 | 2015-11-11 | 天津大学 | 安全交换协议模型检测方法 |
CN106886417A (zh) * | 2017-03-09 | 2017-06-23 | 华东师范大学 | 一种线性时态逻辑规范的通用并行挖掘方法 |
CN109150833A (zh) * | 2018-07-19 | 2019-01-04 | 华东交通大学 | 一种基于模型检测的安全协议形式化验证方法 |
CN111756704A (zh) * | 2020-05-27 | 2020-10-09 | 西南大学 | 一种密码协议验证方法 |
CN112153030A (zh) * | 2020-09-15 | 2020-12-29 | 杭州弈鸽科技有限责任公司 | 一种基于形式化验证的物联网协议安全性自动分析方法与系统 |
CN112511554A (zh) * | 2020-12-15 | 2021-03-16 | 中国电子科技集团公司第三十研究所 | 一种网络安全协议的符号建模系统 |
-
2021
- 2021-11-02 CN CN202111286377.4A patent/CN113726821B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050108531A1 (en) * | 2003-11-14 | 2005-05-19 | Microsoft Corporation | Method of negotiating security parameters and authenticating users interconnected to a network |
CN101977180A (zh) * | 2010-06-08 | 2011-02-16 | 南京大学 | 一种基于漏洞攻击的安全协议验证方法 |
CN102780817A (zh) * | 2012-07-16 | 2012-11-14 | 天津大学 | 网络协议安全建模方法 |
CN103259788A (zh) * | 2013-04-27 | 2013-08-21 | 天津大学 | 针对安全协议的形式化建模及验证方法 |
CN104135397A (zh) * | 2014-07-01 | 2014-11-05 | 浙江工业大学 | 面向无线传感网安全协议设计与实现的形式化验证方法 |
CN105049283A (zh) * | 2015-07-07 | 2015-11-11 | 天津大学 | 安全交换协议模型检测方法 |
CN106886417A (zh) * | 2017-03-09 | 2017-06-23 | 华东师范大学 | 一种线性时态逻辑规范的通用并行挖掘方法 |
CN109150833A (zh) * | 2018-07-19 | 2019-01-04 | 华东交通大学 | 一种基于模型检测的安全协议形式化验证方法 |
CN111756704A (zh) * | 2020-05-27 | 2020-10-09 | 西南大学 | 一种密码协议验证方法 |
CN112153030A (zh) * | 2020-09-15 | 2020-12-29 | 杭州弈鸽科技有限责任公司 | 一种基于形式化验证的物联网协议安全性自动分析方法与系统 |
CN112511554A (zh) * | 2020-12-15 | 2021-03-16 | 中国电子科技集团公司第三十研究所 | 一种网络安全协议的符号建模系统 |
Non-Patent Citations (3)
Title |
---|
刘虹: "一种基于SPIN的安全协议形式化验证方法", 《电子技术与软件工程》 * |
吴昌等: "安全协议验证模型的高效自动生成", 《计算机工程与应用》 * |
肖美华等: "运用SPIN对云环境双向认证协议Nayak的安全性验证", 《计算机应用与软件》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114500347A (zh) * | 2022-04-18 | 2022-05-13 | 军事科学院系统工程研究院网络信息研究所 | 一种对安全互联协议进行形式化验证的方法和系统 |
CN114500347B (zh) * | 2022-04-18 | 2022-06-24 | 军事科学院系统工程研究院网络信息研究所 | 一种对安全互联协议进行形式化验证的方法和系统 |
CN115174143A (zh) * | 2022-05-30 | 2022-10-11 | 西南交通大学 | 一种基于安全协议的网络空间安全可信性验证方法 |
CN115174143B (zh) * | 2022-05-30 | 2024-01-26 | 西南交通大学 | 一种基于安全协议的网络空间安全可信性验证方法 |
CN117714210A (zh) * | 2024-02-05 | 2024-03-15 | 华东交通大学 | 一种用于自定义CoAP协议的自动分析验证方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113726821B (zh) | 2022-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113726821B (zh) | 一种用于安全协议形式化的验证方法及系统 | |
Fiterău-Broştean et al. | Model learning and model checking of SSH implementations | |
Bitansky et al. | The hunting of the SNARK | |
Bonneau | Guessing human-chosen secrets | |
Kobeissi et al. | Verifpal: Cryptographic protocol analysis for the real world | |
Broadbent et al. | QMA-hardness of consistency of local density matrices with applications to quantum zero-knowledge | |
Mindermann et al. | How usable are rust cryptography APIs? | |
US10361844B2 (en) | Generating cryptographic function parameters based on an observed astronomical event | |
Hu et al. | Augmenting encrypted search: A decentralized service realization with enforced execution | |
Broadbent et al. | Zero-knowledge for QMA from locally simulatable proofs | |
CN111092719B (zh) | 标签数据刷新方法及其系统、支付方法及其系统 | |
Hallett et al. | “Do this! Do that!, And nothing will happen” Do specifications lead to securely stored passwords? | |
Dadeau et al. | Model‐based mutation testing from security protocols in HLPSL | |
Steel | Formal analysis of PIN block attacks | |
Cortier et al. | Equivalence properties by typing in cryptographic branching protocols | |
Rowe et al. | Measuring protocol strength with security goals | |
CN111324885A (zh) | 一种分布式身份认证方法 | |
González-Burgueño et al. | Formal verification of the YubiKey and YubiHSM APIs in Maude-NPA | |
Xu et al. | Efficient privacy-preserving electronic voting scheme based on blockchain | |
Fernet et al. | A decision procedure for alpha-beta privacy for a bounded number of transitions | |
Bérard et al. | Probabilistic disclosure: Maximisation vs. minimisation | |
Fiterau-Brostean | Active model learning for the analysis of network protocols | |
TW202201256A (zh) | 機敏資料之分析方法及其系統 | |
Steel et al. | Attacking a protocol for group key agreement by refuting incorrect inductive conjectures | |
Hirschi | Automated Verification of Privacy in Security Protocols: Back and Forth Between Theory & Practice |
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 |