基于非单调性动态认知逻辑的密码协议分析方法与流程

文档序号:22581500发布日期:2020-10-20 17:04阅读:112来源:国知局
基于非单调性动态认知逻辑的密码协议分析方法与流程

本发明涉及信息安全领域的密码协议形式化分析技术,具体涉及基于非单调性动态认知逻辑的密码协议分析方法。



背景技术:

随着5g网络通信时代的到来,信息安全成为人们关注的问题之一,因为没有信息安全,就没有国家安全。保障信息安全使用密码机制的网络协议即为密码协议,密码协议的设计与分析是信息安全中的研究重点,如果密码协议逻辑结构自身有缺陷,这就相当于在坚实的城墙中留下了一个无人看守的后门,未授权者就可以不用攻破密码就能获得信息或产生伪造或假冒。为了保证密码协议的正确性和安全性,需要一种有效的方法来对密码协议进行全面而严格的分析和验证。密码协议的形式化分析方法应运而生。现有的分析方法主要是针对知识单调增加的密码协议进行分析,而有些协议具有知识的非单调性,他们就无法分析。比如一次一密的会话中,要求主体用完一个密钥后就删除,下一次会话用新的密钥,或者说在一密钥被泄露后,主体就得放弃该密钥,就需要改变主体的知识集,所以说他的知识并不是单调增加的,又例如在一个进程中,一开始它拥有某个消息,但后来该消息被删除,这时进程主体将不再拥有该消息,现有的逻辑分析方法所建的模型不精确或推理复杂,导致分析不成功。



技术实现要素:

本发明所要解决的技术问题是:具有知识非单调性的密码协议的不能用现有方法来分析的问题,现有的逻辑分析方法所建的模型不精确或推理复杂,导致分析不成功。本发明提供了解决上述问题的基于非单调性动态认知逻辑的密码协议分析方法。

本发明通过下述技术方案实现:

基于非单调性动态认知逻辑的密码协议分析方法,包括如下步骤:

s1、对给定的一个具有知识非单调性的密码协议,建立用于描述所述密码协议的具有非单调性用forget扩展的动态认知逻辑语言包括所述密码协议的语法和相应所述语法的语义;

s2、基于所述动态认知逻辑语言结合克里普克模型和寄存器模型来描述及分析所述密码协议中各主体拥有的知识和协议执行过程中其知识的变化,所述描述过程为协议分析过程,描述结束得出该密码协议是否具有安全性。

进一步地,当所述密码协议为khat协议:

协议具体过程是:当用户提交一个作业时,khat协议的客户端创建一个文件,所述文件包含后面运行所述作业的所有信息,然后将文件发送给服务器,khat服务器保存所述文件,客户端从内存中删除所述文件;

khat服务器和客户端拥有一个会话密钥k用于在工作运行时使用,客户端生成一个新的密钥n以加密k,客户端保留为密钥kn,然后再用k加密n,客户端将加密结果nk发送给服务器,同样服务器保存n而客户端删除n,协议过程描述如下:

第一阶段:

客户端(c)和服务器(s)具有会话密钥k,客户端生成文件(spoolfile),生成n;

第一步:c→s:(sf,n)k

客户端将文件sf和n联结并加密后发送给服务器,然后客户端用n加密k并保留kn,(sf,n)表示sf和n的联结,服务器收到(sf,n)k后解密得到sf和n;

第二步:c:删除k,sf,n;

客户端将文件sf和n以及k删除,用于防止客户端被攻击从而泄露k;

第二阶段:

服务器生成票据tgt,

第三步:s→c:n,(sf,tgt)k

服务器将新生成的票据tgt与sf一起加密后的文件和n发送给客户端;

客户端收到后用n解密kn得到k,再解密(sf,tgt)k,得到sf,tgt;客户端得到票据tgt后能运行作业;所述票据是有期限的票据,当所述作业运行时间超过所述票据的期限,所述作业运行会被中断,客户端再请求新的票据来运行作业。

所述描述的过程中,用表示动态认知逻辑语言的模型——克里普克模型来描述所述密码协议中各参与方的知识。

进一步地,所述主体包括客户端(c)、服务器(s)和攻击者(a),所述知识是用于表示消息,所述动态认知逻辑中的知识包括所有收发消息,一个消息表示一个寄存器,寄存器用于存放消息的值。

进一步地,当所述主体知道所述消息的值,所述forget行为由该主体执行后,该消息该主体就不再拥有。所述消息的值包括但不限于密钥。

进一步地,用非单调的动态认知逻辑来分析具有知识非单调性的密码协议的安全性。本技术适用于对具有知识非单调性的密码协议的安全性分析,用非单调的动态认知逻辑所建的模型语言精确,用克里普克模型对协议中各参与方的知识描述得简洁直观,没有复杂的推理,大大提高成功分析的机率。

本发明具有如下的优点和有益效果:

本发明用forget行为来扩展动态认知逻辑语言并给出这个语言精确的语法和语义,用这个语言对一个具有非单调性的密码协议进行了形式化分析。用克里普克模型结合寄存器模型简洁直观地刻画出这个协议的主体知道的知识,用forget行为来表示主体忘记知识,体现知道的非单调性。

克里普克模型的变化详细地展示了协议中各主体的知识随着认知行为的执行而变化的情况,分析结果表明这个协议是有缺陷的。将扩展的动态认知逻辑用于具有知识非单调的密码协议的形式化分析,所建的模型精确,分析过程简洁明了,没有复杂的推理。能够发现密码协议的潜在缺陷可以及时更正或更换协议,以避免由协议缺陷带来的安全危害,从技术上减少使用不安全协议带来的损失。

附图说明

此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:

图1为本发明中实施例中协议的初始模型。

图2为本发明的实施例中服务器s发送(sf,n)k后的模型。

图3为本发明的实施例中服务器s发送(sf,n,ni)k后的模型。

图4为本发明的实施例中客户端c执行forget(sf,n,ni,k)后的模型。

图5为本发明的实施例中s发送n和(sf,tgt)k后的模型。

具体实施方式

在对本发明的任意实施例进行详细的描述之前,应该理解本发明的应用不局限于下面的说明或附图中所示的结构的细节。本发明可采用其它的实施例,并且可以以各种方式被实施或被执行。基于本发明中的实施例,本领域普通技术人员在没有做出创造性改进前提下所获得的所有其它实施例,均属于本发明保护的范围。

为了描述具有知识非单调的密码协议,构建基于非单调的动态认知逻辑语言。

1.1非单调性密码协议语言的语法:

构造一个非单调的认知逻辑语言来描述密码协议,表示非单调性(non-monotone),c表示密码学(cryptography)。动态认知行为增加到该语言里。

基于非单调性动态认知逻辑语言分析密码协议时,所述逻辑语言包括其语法和相应的语义;

其中逻辑语言的语法具体如下:

令p为基本命题集或寄存器的集合,a为主体集,具有知识非单调性的密码协议的语言的语法归纳定义如下:

α::=sam|forgetam|αvα|α;α

这里,p∈p,a∈a,p是命题也是寄存器,n是自然数,α是认知行为,sam表示a发送消息m,forgetam表示a忘记(删除)消息m。(α∨α)表示行为的选择,(α;α)表示行为的顺序执行。

所述消息m包括但不限于主体拥有的消息,还包括所述消息m是主体从信息集中的信息构造的消息,构造规则如下:

所述构造规则中,分子表示构造条件,分母表示依据所述构造条件得到的结果。

当所述主体拥有mk和k,所述主体解密mk得到m;

当所述主体拥有两个消息m和m′,所述主体将两个消息m和m′串联起来;

当所述主体拥有一个级联消息,所述主体得到级联消息中的任何一个消息并删除多余的消息。

1.2非单调性密码协议语言的语义

基于非单调性动态认知逻辑语言分析密码协议时,所述逻辑语言包括描述密码协议的语义;

给出语义之前,需要知道认知行为的前提条件(precondition)和后置条件(postcondition)。一个动作的完成是需要前提条件的,本协议中动作的前提条件如下:

pre(sam)=ka(m=n)

pre(forgetam)=ka(m=n)

pre(α;α′)=pre(α)∧[α]pre(α′)

pre(α∨α′)=pre(α)∨pre(α′)

动作sam,forgetam要执行的前提都是该主体先得有m,就是主体得知道m的值,ka(m=n)表示a知道m的值。一个消息m也可以看作一个寄存器,它的值就是这个寄存器存放的内容。

在不安全的网络中,动作sam执行后,协议所有参与者包括窃听者都能得到这个消息m。所有主体都知道所有主体都知道了m的值,所以m的值成为了公共知识。执行forgetam,意味着主体a在这个世界删除了m,这时候a在这个世界的信息集就没有m的值了,这个动作执行后的世界就不满足a知道m=n了。

因为这里用了寄存器模型,涉及到寄存器内容的问题,这个问题用寄存器真值指派来表示。根据猜数游戏,定义寄存器模型。

(寄存器模型)一个寄存器模型中,(w,r)是一个多主体的框架。v是一个值函数,它指派给每一个世界的值是一个元组(pw,fw)。

·在世界w为真的基本命题集。

·fw是在q上的一个函数,指派每一个q∈q(变量的全局集)是一个元组(i,j,x),其中:i,j∈z,i≤j,(这里z表示整数集合)表示以下意思:fw(q)通过fw0(q),fw1(q),fw2(q)来表示q在w的取值范围。这个范围有一个下界i,上界j,一个排除值的集合x,即:fw(q)=(i,j,x)表示在世界w,q的可能值是i和j之间的数除了x,即:

(指派函数h)在寄存器模型中,值函数是指派命题(或寄存器)到整数的一个映射。在一个世界w的一个指派h记作:

(非单调性密码协议语言的语义)给定原子命题集或寄存器集p和主体集a,令模型状态h是上的一个指派。语言的语义定义如下:

当且仅当

当且仅当p∈pw;

当且仅当h(p)=n;

当且仅当

当且仅当或者

当且仅当对任一如果那么,对任一

当且仅当对任一如果那么,对任一

当且仅当如果和对所有的那么

当且仅当对所有的如果那么(m=n)∈pw′并且

当且仅当对所有的如果那么并且

|αvα'|=|α|v|α'|

在一个不安全的网络中,执行后sam后,网络中所有主体都会得到这个信息,等于公开宣告了m的值,所以执行这个动作后m的值成了公共知识,把模型限制到m=n的世界。主体a执行forgetam后,就不再拥有m的值,所以该动作执行后的模型中,就不再满足主体a知道m的值。(α;α′)表示这两个行为顺序执行,(α∨α′)表示这两个行为选择执行。

实施例1:

khat协议要求用户要有一个有效的票据来保持有生命周期的认证环境下某一作业的长时间运行。在这个环境中,假设服务器是可信的,由它来发布票据,这个根据类似于kerberos协议[127]中的票据,当用户想要访问某服务器的资源时,必须先有该服务器的票据,并且这个票据没有过期。如果作业运行需要很长时间,用户需要对该作业未来的运行时间作出规划并预约,必要时更新票据,直到工作完成。作业保存在安全的服务器端,发送和接收都以加密的形式。服务器为请求访问的用户生成票据并以加密的形式和作业一起发送给用户。然后客户端运行作业。

协议具体过程是:当用户提交一个作业时,khat协议的客户端会创建一个文件,这个文件包含了后面运行该作业所需要的所有信息,如环境变量,然后将文件发送给服务器。khat服务器保存该文件,而客户端从内存中删除该文件。khat服务器和客户端拥有一个会话密钥k以便在工作运行时使用。客户端生成一个新的密钥n以加密k。它保留kn,然后再用k加密n,并将加密结果nk发送给服务器。同样服务器保存n而客户端删除n。这个过程主要是为了保护密钥k。协议过程描述如下:

第一阶段:

客户端(client)和服务器(server)都有会话密钥k。客户端生成文件(spoolfile),生成n。

第一步c→s:(sf,n)k

这一步客户端(c)将文件sf和n联结并加密后发送给服务器(s)。然后客户端用n加密k并保留kn。(sf,n)表示sf和n的联结。服务器收到(sf,n)k后解密得到sf和n。

第二步c:删除k,sf,n。

这一步客户端将文件sf和n以及k删除。这主要是防止客户端被攻击从而泄露k。

第二阶段:

服务器生成票据tgt。

第三步s→c:n,(sf,tgt)k

服务器将新生成的票据与sf一起加密后的文件和n发送给客户端。

客户端收到后用n解密kn得到k,再解密(sf,tgt)k,得到sf,tgt(文件和票据)。客户端得到票据tgt才能运行作业。这个票据是有期限的,如果作业运行时间超过票据期限,作业运行会被中断,客户端需要请求新的票据来运行它。

应用于实施例1中非单调性密码协议的分析的实施例2:

从上节的描述可见,这个协议与其它协议不同的是,其中所涉及的知道的非单调性。在第二步,客户端删除一些信息后就不再拥有它们了。所以这类分析就不能使用原来的办法。应用动态认知逻辑,分析这个协议。

协议中有三个主体:客户端(c)、服务器(s)和攻击者(a)。即主体集a={c,s,a}。这里的攻击者(attacker)是一个积极的攻击者,他可以窃听这个信道传输的所有消息,而且会转发和响应消息,但是他没有密钥k。

首先,c和s有密钥k,而a没有。

在这里,认为某个主体拥有某个信息就是知道它的值。

c生成sf和n,也就是c知道它们的值。这个系统中把主体生成的数据看成是他已知的,正如初始分配的一样。所以,在协议运行的初始状态,各个主体的信息集为:is={k},

ic={k,(sf,n)}(这里的i表示信息集,ia表示主体a的信息集)。初始状态,攻击者a的信息集为空。为了书写简便,在信息集里存放寄存器的名称,表示该主体知道它们相应的值。为了分析的方便,这里把(sf,n)看成一个数据,因为它们总是联结出现,当然也可以分开的。根据寄存器模型,把一个数据看成一个寄存器,这里有两个寄存器k和(sf,n)数据名称就作为寄存器名称,它们的值用n来表示,即:k=n1,(sf,n)=n2,两个寄存器有4种可能的情况。协议的初始模型为图1。

把这个协议模型用crypto来表示,同样地,真实状态用双椭圆来标明。从图1来看,以下公式成立

(注意这里的k和k是不同的,不同的含义用不同的字体表明,从一开始k表示算子知道,k表示密钥。)

根据构造规则,c有k和(sf,n),它可以构造(sf,n)k。于是c的信息集变为:ic={k,(sf,n),(sf,n)k}。这时新的寄存器产生。假定(sf,n)k=n3,c将它发送给s,模型变化为图2。图2中省略了(sf,n),因为它不会被发送。在这个不安全的网络中,信息的发送等于是宣告了信息的值,那些(sf,n)k≠n3的情况就不存在了。所以这两个寄存器的值有两种可能的情况。可以看到c、s、a的知识变化。这时,他们的信息集为ia={(sf,n)k},is={k,(sf,n)k},ic={k,(sf,n),(sf,n)k}。

由图2,可以得到

因为是在一个开放的网络中,发送一个数据就相当于是公开宣告了,所有的主体都知道所有的主体都知道这个信息了。从图2来看,s发送了(sf,n)k后,它就变成了公共知识。攻击者a得到了它,可以进行重放攻击。重放攻击的意思是说,攻击者可以把在网络中已经获得的信息不加改动地重新发送给接收方。往往在网络中传输的是加密数据即密文,即使攻击者不知道相应的明文,只要他明白这些密文的功能,就可以无限次地发送这些密文,使得接收者一直处理这个密文的任务。例如,在网上存取款系统中,假如这条消息是用户支取了一款项,窃听者完全可以多次发送这条消息欺骗银行而偷窃存款。这里,如果a多次发送这条消息,导致服务器端有多个作业文件需要处理,服务器端因为繁忙或引发网络拥塞。后面真正需要处理的文件被延长等待时间。协议分析到这就发现了这个严重缺陷。应对重放攻击常用的办法是在消息中加入新鲜纳时,当用户调度一作业时,会在消息中加入一个从未使用过的纳时,以表消息的新鲜性,这个纳时只能使用一次,如果服务器再收到含有这个纳时的消息,他就不再相信而忽略这条消息,从而有效地防止了重放攻击。因此,c增加一个新鲜纳时ni在加密数据里。这个协议改进为:

第一阶段:

客户端(client)和服务器(server)都有会话密钥k。客户端生成文件(spoolfile),生成n。

第一步c→s:(sf,n,ni)k

客户端(c)将文件sf和n以及新鲜纳时ni联结并加密后发送给服务器(s)。客户端加密kn并保留。(sf,n,ni)表示sf和n以及新鲜纳时ni的联结。

第二步c:删除k,sf,n。

客户端将文件sf和n以及k删除。服务器收到(sf,n,ni)k后解密得到sf,n和ni。

第二阶段:

服务器生成票据tgt。

第三步s→c:n,(sf,tgt)k

客户端收到后用n解密kn得到k,再解密(sf,tgt)k,得到sf,tgt(文件和票据)。

把改进后的模型用crypto′来表示,不再重复前面的分析。s发送带新鲜纳时的加密文件后,所有主体的信息集被更新为:ia={(sf,n,ni)k},is={k,(sf,n,ni)k},ic={k,(sf,n),(sf,n,ni)k}。令(sf,n,ni)k=n3,模型更新为图3。

图3满足

如果这时a再将这个消息进行重放,s将忽略它,因为s已经收到过含有ni的消息了。因此,这个安全缺陷消除。根据协议,c用n加密k,保留{k}n忘记其它所有的信息。假定kn=n4这时模型变为图4。

图4满足

这时,他们的信息集变为:ia={(sf,n,ni)k},is={k,(sf,n,ni)k,{k}n},

ic={kn}。根据构造规则,s解密(sf,n,ni)k,得到sf和n,他有n和k所以他是知道kn的。这时候,c只有kn了。没有n和k,a也不能计算得到sf,即使他暴力控制客户端c,他也只有n3和n4这两个加密数据。所以这时候协议还是安全的。通常情况下,认为服务器s是安全的,不会遭受攻击。sf和n存储在服务器,因此,这一阶段密钥k得到了保护。

第二阶段,在生成票据tgt后,s发送n和(sf,tgt)k给c。c收到的同时a也窃听到了,所以所有主体的信息集被更新为:ia={(sf,n,ni)k,n,(sf,tgt)k},is={k,(sf,n,ni)k,kn,n,(sf,tgt)k},ic={kn,n,(sf,tgt)k}。假定n=n5,(sf,tgt)k=n6。因为n,(sf,tgt)k成为了公共知识,所以n≠n5,(sf,tgt)k≠n6那些情况就不存在了。模型图变化为图5。

这时图5满足

上面的公式表明了目前各主体所有的知识。n5和n6变成了公共知识。因此,主密钥n被泄露。存储在客户端c的kn如果被暴力攻击,攻击者a就能得到k,从而作业sf和票据tgt被暴露。这个协议是不安全的。应该更换协议。在第二阶段,应用构建的非单调认知逻辑语言检测出了一个新的缺陷。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1