CN102055770B - 一种基于xml描述的安全协议代码自动实现*** - Google Patents
一种基于xml描述的安全协议代码自动实现*** Download PDFInfo
- Publication number
- CN102055770B CN102055770B CN201110008729.XA CN201110008729A CN102055770B CN 102055770 B CN102055770 B CN 102055770B CN 201110008729 A CN201110008729 A CN 201110008729A CN 102055770 B CN102055770 B CN 102055770B
- Authority
- CN
- China
- Prior art keywords
- xml
- security protocol
- code
- unit
- message
- 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.)
- Expired - Fee Related
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了基于XML描述的安全协议代码自动实现***,包括:安全协议XML描述文档生成模块、解释器模块、底层支撑模块;所述安全协议XML描述文档生成模块通过图形用户接口GUI配置安全协议,自动生成安全协议的XML描述文档;所述解释器模块负责对所述安全协议XML描述文档进行解析并生成相应的协议代码;底层支撑模块为解释器模块的代码生成提供支撑。本发明具有避免传统的安全协议手工编码过程较易引入的缺陷并减少实现安全协议时间开销的优点,可用于安全协议的快速多目标语言代码实现。
Description
技术领域
本发明属于通信协议工程学领域,涉及一种基于XML描述的安全协议代码自动实现***,具体地说是针对传统的安全协议手工编码过程中存在的各种问题,提出一种将安全协议的代码实现过程自动化的方案,以避免在传统手工编码中容易引入的缺陷,并极大的减少实现安全协议的时间开销。
背景技术
随着网络应用的飞速发展,接踵而至的是各种纷繁的安全问题,为了能在一个不安全的网络环境下提供安全的通信服务,提出了安全协议的概念。安全协议(密码协议)运用密码学方法实现与安全相关的功能,它定义了两个或者多个参与实体之间进行数据通信的规则集,以达到诸如身份认证,密钥分配等目的。
安全协议从最初的设计到最后正式投入使用,一般都会经历如图1所示的三个阶段:(1)设计分析;(2)编码实现;(3)协议测试。
在设计分析阶段,如何保证安全协议的正确性是比较棘手和易错的,有相当数量曾经认为是安全的协议经过若干年后被证明是不安全的。为了降低协议出错的可能性,在过去的几十年里,研究人员在该领域做了大量的工作,并提出了不少安全协议形式化设计与证明的方法。
在协议测试阶段也有不少方法,既有基于传统软件工程的黑盒测试和白盒测试,还有专门针对安全协议的测试方法,如一致性测试和安全性测试,而且这些方法大部分是靠机器自动化实现的。
而对于从安全协议设计分析到测试阶段起桥梁作用的代码实现,却仍然停留在手工编码水平,研究人员未对此开展广泛和深入的研究。手工编码效率低,存在大量重复性的工作,人工代价较高,这就影响了整个协议设计开发的速度。而且该过程是由程序员根据自己对协议的理解进行编码,而这些理解多来自于安全协议的非形式化描述,与抽象的形式化验证模型不太相关,从而导致协议实现的安全性与形式化验证阶段的安全性不一致。另外,手工编码难免会引入编程错误(如调用了不安全的函数,缓冲区溢出等)。因此,即使是对于已证明安全的协议,上述原因也使得最终实现的协议的安全性难以保证。由此可见,依靠传统方法要高效、正确地实现对安全协议的编码对程序员来说是一项有挑战性的工作。
对于已经证明安全的协议,如果可以设计一个编译器(解释器)来将协议的代码实现这一过程自动化,将会节约大量人工成本,从而投入更多的精力专注于安全协议的设计及测试;将设计的协议快速转化为代码实现,结合安全性的测试方法,可以提高协议设计开发的效率,缩短整个过程所需时间;对于某些对协议效率要求很高的应用来说,如果能够很快将设计的协议转化为代码进行部署,就可以快速验证所设计协议的有效性,从而加速设计出满足应用需求的协议;即使自动化实现的代码不能够被直接使用,也可以给编程人员提供参考,减少编程人员的工作量;同时,在自动化工具设计时可以避免调用那些不安全的函数(如:C语言中的strcpy()等),这在一定程度上提高了代码的安全性;另外,该工具对于那些编程水平不高的人员(如:从事科研的研究人员或高校学生)以及对代码质量要求不是很高的应用来说,也是有意义的。
安全协议自动化实现过程大致可分为两个步骤,如图2所示。首先,基于某种安全协议分析方法,采用一种安全协议形式化描述语言,对其进行形式化描述,并设计一个安全协议自动化分析工具,用于协议的安全性分析;其次,设计一种基于安全协议形式化描述的代码自动化实现工具,如:编译器或解释器。
而目前的研究人员在安全协议的代码自动化实现方面已经做了一些探索,但其中大多都采用了一些专用的形式化描述语言,而且都做了不同程度的条件限定,以牺牲部分灵活性为代价来便于编译器(解释器)的设计实现;选定了某一种特定语言作为安全协议实现目标语言;限定了安全操作算法和运算可选择性等,这些都限制了安全协议代码自动化实现的适用范围及使用环境。
发明内容
本发明的目的在于克服上述缺陷,采用XML作为安全协议形式化描述语言,并在此基础上设计开发了一个安全协议解释器,该解释器可以根据需要从安全协议的XML描述生成安全协议的多目标语言代码实现,如面向对象的Java、C#等以及非面向对象的C语言。同时,为了进一步提高代码生成的速度和降低对工具使用者的要求,将安全协议的XML描述过程通过一些简单的界面配置操作自动化。
本发明的目的是这样实现的:
基于XML描述的安全协议代码自动实现***(图3),包括:安全协议XML描述文档生成模块(XML Specfication)、解释器模块(Interpreter)、底层支撑模块;安全协议XML描述文档生成模块通过图形用户接口GUI配置安全协议,并自动生成安全协议的XML描述文档;解释器模块负责对所生成的安全协议XML描述文档进行解析并生成相应的协议代码(Source Code);底层支撑模块(安全类库,通信类库)为解释器模块的代码生成提供支撑。
下面主要对安全协议XML描述自动生成模块中使用的形式化描述方法、底层支撑模块和解释器模块分别进行介绍。
安全协议XML形式化描述方法:采用XML语言清晰地描述协议安全属性以及通信序列。对于已经设计好的协议,提取其中的各种协议参数,如:参与实体标识,随机数,参与实体的初始知识(主要为密钥知识),安全操作,消息构成以及消息交互轮数信息,然后将这些信息用XML语言进行描述。安全协议XML描述文档生成模块包括:自由变量描述单元、密钥初始信息描述单元和消息交互序列描述单元。其树状结构如图4所示。使用图6中描述的节点及属性,将提取的协议参数与树状结构的XML描述文档中相应的节点对应起来,即得到安全协议的XML描述文档。
(1)自由变量描述单元
每个协议XML描述文档只有一个FreeVariable节点,其子节点又由多个Agent节点和Nonce节点组成,描述协议中所涉及的实体和随机数变量。在协议的XML描述文档中Agent节点代表协议的参与实体,拥有了IP地址(IPAddress),端口号(port)以及真实姓名(actualName)等属性;Nonce节点代表协议中的随机数,拥有的属性为随机数的所有者(owner)。
(2)密钥初始化信息描述单元
每个XML描述文档只有一个KeyIni t节点,用于描述安全协议所用到密钥的初始化信息和哈希算法。如图5所示,密钥初始化信息主要由三类:对称密钥、非对称密钥以及MAC算法密钥,分别用节点Symcrypto、Pkcrypto、MACcrypto描述。每种节点可以有多个,用于表示安全协议所用到的多个此类密钥。节点Knowledge比较特殊,用于描述在公钥密码体制中,实体的公钥知识。如:初始化时,实体A需要知道实体B的公钥,可以用一个节点Knowledge描述。同样,Knowledge节点可以存在多个。在协议的XML描述文档中Symcrypto节点代表对称密钥信息,拥有算法(algorithm),密钥的共享方(share1和share2),以及共享密钥路径(symKeyPathname)等属性;Pkcrypto节点代表非对称密钥信息,拥有算法(algori thm),拥有者(owner),公钥路径名(PKPathname)以及私钥路径名(PRPathname)等属性;MACcrypto节点代表MAC密钥信息,拥有算法(algorithm),密钥的共享方(share1和share2),以及MAC密钥路径(MacKeyPathname)等属性;Hash节点代表了哈希算法信息,拥有的属性为算法(algorithm)。
(3)消息交互序列描述单元
节点Message描述一条消息,其属性source、destination、sequence分别表示消息的发送者、接收者和消息序列号。消息交互序列可以由如下表达式定义:
Message::=Plaintext|Encrypt|MAC|Hash
Plaintext::=Agent|Nonce
Encrypt::=(Message,usedKey)
MAC::=(Message,usedKey)
Hash::=(Message)
usedKey::=PKAgent|PRAgent|KAgentAgent…|MKAgentAgent…
MessageList::=Message|(Message,Message List)
其中PKAgent、PRAgent分别表示实体的公钥和私钥,如实体A的公钥和私钥可以分别表示为PKA、PRA;KAgentAgent…表示两个或多个实体之间的共享密钥,如:实体A和B之间的共享密钥可表示为KAB;MKAgentAgent…表示两个或多个实体之间所用的MAC算法密钥,如实体A和B之间的共享MAC算法密钥可表示为MKAB。
从表达式可以看出,消息内容包括明文(Nonce、Agent)、MAC、Hash和密文,密文含有该消息加密所使用的密钥和被加密的消息,被加密的消息是消息的递归调用。
为了避免手工编写安全协议XML容易出错,本发明采用图形用户接口GUI将安全协议的XML描述过程自动化,标准化。
底层支撑模块:底层支撑模块主要包括安全类库以及通信类库等,它们在安全协议代码生成以及协议安全运行中起支撑作用。为了使最终得到的协议实现清晰、简洁,在底层支撑功能的设计上,采用了面向对象的方法,用一个派生类来实现最终的协议,设计的类关系图详见图5所示,最终自动生成的协议实现(如图5中的类A)只需包含相关功能的调用(亦即函数调用)即可完成协议的任务,而这些功能的实现都是由底层支撑部分提供,这使得最后的协议源码实现简单易懂;同时,该方法为外部提供的仅仅是功能调用接口,该特点也为协议多目标语言(该语言应为面向对象语言)实现奠定了基础:在不同的目标语言实现时,只需要将具体的函数用对应的语言实现即可,而其他部分不需做修改。而对于非面向对象的语言,如C语言,同样可以借鉴图5所示的框架来实现,具体来说用结构体来模拟对应类的实现。
下面就其中几个基本的类作简单的介绍:
(1)Protocol类:
Protocol类是整个框架中的核心类,协议的每个参与实体都需要继承Protocol类。Protocol类中包含一组列表结构(如:knownAgentlist等)用以分别存储XML中的自由变量(如:Agent和Nonce)和密钥信息(公私钥和对称密钥等);parts变量存储消息的组成部分,用于构造和解析消息;storedMsgList用于存储需要转发给第三方的消息。
以“Add”为前缀的前5个方法(如:AddAgent)主要用于向相关列表中添加协议实体、随机数、密钥信息(如:非对称钥和对称钥等),以初始化协议实体、随机数和密钥;AddParts、AddStoredMsg、GetPart、GetStoredMsg用来解析或构造消息;Receive方法从给定的实体接收消息;Send方法发送消息到指定实体;Run是一个抽象方法,在具体的参与实体类中实现,描述了协议运行时该执行实体的操作序列。
(2)Agent类:
每个Agent类的实例表示协议的一个参与实体,字段id、ip、port、name和agentSocket分别表示实体标识、IP地址、端口号、实际名字以及实体socket(用于通信),这与描述文档中Agent节点描述一致;
Send和Receive方法表示同某个实体通信时发送和接受消息;
(3)Message类:
Message类的实例表示一条发送或接收到的消息。字段str表示消息内容;
AddMessage用于连接两条消息;GetAllFields方法解析消息,获取消息的各个部分;Encrypt方法使用密钥加密消息;Decrypt使用密钥解密消息;Encode方法对消息计算MAC或Hash;Decode方法对MAC或Hash值进行验证。
(4)Nonce类:
Nonce类继承自Message类。它的实例表示一个随机数,随机数值存储在父类Message中;字段id表示随机数标识。
(5)HMACcryptoKey类:
HMACcryptoKey类表示MAC算法密钥,它与XML描述文档密钥初始化部分中MACcrypto节点相对应;字段algorithm表示所使用的MAC算法,它可支持HMACMD5、HMACSHA1、HMACSHA256、HMACSHA384和HMACSHA512等,具体采用哪种算法可由用户在XML描述文档中指定;字段keyId表示密钥标识,keyPath表示密钥所在文件路径。
(6)PkCryptoKey类:
PkCryptoKey类表示非对称密钥对。字段algorithm表示所使用的非对称加密算法,支持RSA算法等,具体算法可由用户在XML描述文档中指定;字段PKid和PRid分别表示公钥和私钥标识,字段publicKeyPath和privateKeyPath分别表示公钥和私钥所在文件路径。
(7)SymCryptoKey类:
SymCryptoKey类表示对称密钥。它与XML描述文档密钥初始化部分中PkCrypto节点相对应;字段algorithm表示所使用的对称加密算法,支持DES,TripleDES,Rijndael(AES)等算法,具体算法可由用户在XML描述文档中指定;字段keyId表示密钥标识,keyPath表示密钥所在文件。
(8)Hash类:
Hash类用来进行Hash操作,字段algorithm表示所使用的Hash算法。
(9)类A:
类A表示参与实体A所实现的类,它继承Protocol类,并实现了Run方法,Run方法实现了参与实体针对指定协议的操作序列。此类是由解释器根据协议XML描述文档自动生成的,具体的实现细节在下一节介绍。
解释器模块:采用结构化的XML语言来描述协议,解释器模块(Interpreter)负责解析协议XML描述文档并生成实现代码。解析过程基于协议XML描述文档中相关节点以及属性来进行处理,具体来说是对关键字的解析。解释器模块由类CGenerator实现,该类包括FreeVarGenerator单元、KeyInfoGenerator单元、Bui ldMsg单元、ParseMsg单元及Generator单元,完成对XML描述文档的解析和相应代码的生成。该过程如图7所示。
FreeVarGenerator单元负责对XML文档中FreeVariable节点的协议实体、随机数变量等信息进行解析,并生成对应的初始化代码。
KeyInfoGenerator单元负责对协议XML文档中KeyInit节点的密钥初始化信息进行解析,生成实体相关密钥(如:对称密钥、非对称密钥以及MAC算法密钥)的初始化代码。
BuildMsg单元负责XML文档中Message节点的解析,根据描述中每条待发送消息的结构构造消息,即生成一条消息的构造代码;ParseMsg函数对收到的消息按照Message节点的结构进行解析,生成一条消息的解析代码。
Generator单元通过调用FreeVarGenerator、KeyInfoGenerator、BuildMsg和ParseMsg单元,生成每个参与方实体代码,即生成参与方实体类(如:图5中的类A)。
本发明具有以下优点:
在协议描述语言的选择上,本发明选择了具有较好扩展性的XML语言,XML语法简单,描述简洁、清晰,适合作为信息交换的载体。与那些主要用于协议分析的形式化描述方法相比,我们的方案具有较大的灵活性以及可扩充性。
为了使最终自动化得到的协议实现清晰、简洁,在底层支撑相关类的设计上,本发明采用了面向对象的设计方法,使得最终生成的协议代码作为一个派生类,它只需要相关功能(函数)的调用序列即可完成协议的任务,而这些功能调用屏蔽了底层支撑模块的实现细节,使得最后的协议代码简单易懂;同时,该特点使得所提方案的框架与具体的语言实现分离,这为多目标语言生成奠定了基础:在多目标语言(该语言需支持面向对象)生成中,只需要将具体的功能用目标语言生成即可,对于其他部分均不需做修改。
充分考虑协议使用环境(如:操作***)的多样性,设计了多目标语言生成器,用户可根据具体环境的需要来选择目标语言。这样,即使对于处于不同环境的交互双方,也可以使用不同语言来进行协议的交互。
方案具有多目标语言功能能够避免程序员从事同一功能不同语言的重复的开发,减少了其工作量,提高了开发效率。
本发明的方案不要求使用者掌握任何安全协议形式化分析的知识。但已有的代码生成方法大部分需要使用者掌握协议形式化分析方法,掌握这些方法不但具有相当大的难度,而且也使得协议的设计与代码实现不能做到相互独立,不符合现代软件开发模块化、流程化的思想。
在具体的实现上,现实中协议的多样性(如:身份认证协议、公平交易协议等)带来了安全操作的多样性,为了尽可能扩大方案的适用范围,我们在实现中尽可能多的提供了安全操作的可选择性。
在目标语言代码生成时,我们尽量利用语言本身的安全机制,避免一些代码缺陷,来提高代码的安全性,如:尽可能地避免调用那些容易导致协议安全隐患(如:类型缺陷,缓冲区溢出等)的函数。这样可以减少手工编码中不经意的类似错误,提高了协议执行的安全性。
附图说明
图1为协议工程的三个阶段图;
图2为安全协议自动化基本研究思路图;
图3为本发明方案整体框架图;
图4为安全协议的树状结构图;
图5为底层支撑类图
图6为安全协议XML描述节点及其属性图
图7为代码生成过程图。
具体实施方式
以下结合方案的整体框架图3对本发明的方法进行详细的描述:
基于XML描述的安全协议代码自动实现***,包括:安全协议XML描述文档生成模块(XML Specfication)、解释器模块(Interpreter)、底层支撑模块;安全协议XML描述文档生成模块通过图形用户接口GUI配置安全协议,并自动生成安全协议的XML描述文档;解释器模块负责对所生成的安全协议XML描述文档进行解析并生成相应的协议代码(Source Code);底层支撑模块(安全类库,通信类库)为解释器模块的代码生成提供支撑。
下面主要对安全协议XML描述自动生成模块中使用的形式化描述方法、底层支撑模块和解释器模块分别进行介绍。
安全协议XML形式化描述方法:采用XML语言清晰地描述协议安全属性以及通信序列。对于已经设计好的协议,提取其中的各种协议参数,如:参与实体标识,随机数,参与实体的初始知识(主要为密钥知识),安全操作,消息构成以及消息交互轮数信息,然后将这些信息用XML语言进行描述。安全协议XML描述文档生成模块包括:自由变量描述单元、密钥初始信息描述单元和消息交互序列描述单元。其树状结构如图4所示。将提取的协议参数与树状结构的XML描述文档中相应的节点对应起来,即得到安全协议的XML描述文档。
(1)自由变量描述单元
每个协议XML描述文档只有一个FreeVariable节点,其子节点又由多个Agent节点和Nonce节点组成,描述协议中所涉及的实体和随机数变量。在协议的XML描述文档中Agent节点代表协议的参与实体,拥有了IP地址(IPAddress),端口号(port)以及真实姓名(actualName)等属性;Nonce节点代表协议中的随机数,拥有的属性为随机数的所有者(owner)。
(2)密钥初始化信息描述单元
每个XML描述文档只有一个KeyInit节点,用于描述安全协议所用到密钥的初始化信息和哈希算法。如图5所示,密钥初始化信息主要由三类:对称密钥、非对称密钥以及MAC算法密钥,分别用节点Symcrypto、Pkcrypto、MACcrypto描述。每种节点可以有多个,用于表示安全协议所用到的多个此类密钥。节点Knowledge比较特殊,用于描述在公钥密码体制中,实体的公钥知识。如:初始化时,实体A需要知道实体B的公钥,可以用一个节点Knowledge描述。同样,Knowledge节点可以存在多个。在协议的XML描述文档中Symcrypto节点代表对称密钥信息,拥有算法(algorithm),密钥的共享方(share1和share2),以及共享密钥路径(symKeyPathname)等属性;Pkcrypto节点代表非对称密钥信息,拥有算法(algorithm),拥有者(owner),公钥路径名(PKPathname)以及私钥路径名(PRPathname)等属性;MACcrypto节点代表MAC密钥信息,拥有算法(algorithm),密钥的共享方(share1和share2),以及MAC密钥路径(MacKeyPathname)等属性;Hash节点代表了哈希算法信息,拥有的属性为算法(algorithm)。
(3)消息交互序列描述单元
节点Message描述一条消息,其属性source、destination、sequence分别表示消息的发送者、接收者和消息序列号。消息交互序列可以由如下表达式定义:
Message::=Plaintext|Encrypt|MAC|Hash
Plaintext::=Agent|Nonce
Encrypt::=(Message,usedKey)
MAC::=(Message,usedKey)
Hash::=(Message)
usedKey::=PKAgent|PRAgent|KAgentAgent…|MKAgentAgent…
Message List::=Message|(Message,Message List)
其中PKAgent、PRAgent分别表示实体的公钥和私钥,如实体A的公钥和私钥可以分别表示为PKA、PRA;KAgentAgent…表示两个或多个实体之间的共享密钥,如:实体A和B之间的共享密钥可表示为KAB;MKAgentAgent…表示两个或多个实体之间所用的MAC算法密钥,如实体A和B之间的共享MAC算法密钥可表示为MKAB。
从表达式可以看出,消息内容包括明文(Nonce、Agent)、MAC、Hash和密文,密文含有该消息加密所使用的密钥和被加密的消息,被加密的消息是消息的递归调用。
为了避免手工编写安全协议XML容易出错,本发明采用图形用户接口GUI将安全协议的XML描述过程自动化,标准化。
底层支撑模块:底层支撑模块主要包括安全类库以及通信类库等,它们在安全协议代码生成以及协议安全运行中起支撑作用。为了使最终得到的协议实现清晰、简洁,在底层支撑功能的设计上,采用了面向对象的方法,用一个派生类来实现最终的协议,设计的类关系图详见图5所示,最终自动生成的协议实现(如图5中的类A)只需包含相关功能的调用(亦即函数调用)即可完成协议的任务,而这些功能的实现都是由底层支撑部分提供,这使得最后的协议源码实现简单易懂;同时,该方法为外部提供的仅仅是功能调用接口,该特点也为协议多目标语言(该语言应为面向对象语言)实现奠定了基础:在不同的目标语言实现时,只需要将具体的函数用对应的语言实现即可,而其他部分不需做修改。而对于非面向对象的语言,如C语言,同样可以借鉴图5所示的框架来实现,具体来说用结构体来模拟对应类的实现。
下面就其中几个基本的类作简单的介绍:
(1)Protocol类:
Protocol类是整个框架中的核心类,协议的每个参与实体都需要继承Protocol类。Protocol类中包含一组列表结构(如:knownAgentlist等)用以分别存储XML中的自由变量(如:Agent和Nonce)和密钥信息(公私钥和对称密钥等);parts变量存储消息的组成部分,用于构造和解析消息;storedMsgList用于存储需要转发给第三方的消息。
以“Add”为前缀的前5个方法(如:AddAgent)主要用于向相关列表中添加协议实体、随机数、密钥信息(如:非对称钥和对称钥等),以初始化协议实体、随机数和密钥;AddParts、AddStoredMsg、GetPart、GetStoredMsg用来解析或构造消息;Receive方法从给定的实体接收消息;Send方法发送消息到指定实体;Run是一个抽象方法,在具体的参与实体类中实现,描述了协议运行时该执行实体的操作序列。
(2)Agent类:
每个Agent类的实例表示协议的一个参与实体,字段id、ip、port、name和agentSocket分别表示实体标识、IP地址、端口号、实际名字以及实体socket(用于通信),这与描述文档中Agent节点描述一致;
Send和Receive方法表示同某个实体通信时发送和接受消息;
(3)Message类:
Message类的实例表示一条发送或接收到的消息。字段str表示消息内容;
AddMessage用于连接两条消息;GetAllFields方法解析消息,获取消息的各个部分;Encrypt方法使用密钥加密消息;Decrypt使用密钥解密消息;Encode方法对消息计算MAC或Hash;Decode方法对MAC或Hash值进行验证。
(4)Nonce类:
Nonce类继承自Message类。它的实例表示一个随机数,随机数值存储在父类Message中;字段id表示随机数标识。
(5)HMACcryptoKey类:
HMACcryptoKey类表示MAC算法密钥,它与XML描述文档密钥初始化部分中MACcrypto节点相对应;字段algorithm表示所使用的MAC算法,它可支持HMACMD5、HMACSHA1、HMACSHA256、HMACSHA384和HMACSHA512等,具体采用哪种算法可由用户在XML描述文档中指定;字段keyId表示密钥标识,keyPath表示密钥所在文件路径。
(6)PkCryptoKey类:
PkCryptoKey类表示非对称密钥对。字段algorithm表示所使用的非对称加密算法,支持RSA算法等,具体算法可由用户在XML描述文档中指定;字段PKid和PRid分别表示公钥和私钥标识,字段publicKeyPath和privateKeyPath分别表示公钥和私钥所在文件路径。
(7)SymCryptoKey类:
SymCryptoKey类表示对称密钥。它与XML描述文档密钥初始化部分中PkCrypto节点相对应;字段algorithm表示所使用的对称加密算法,支持DES,TripleDES,Rijndael(AES)等算法,具体算法可由用户在XML描述文档中指定;字段keyId表示密钥标识,keyPath表示密钥所在文件。
(8)Hash类:
Hash类用来进行Hash操作,字段algorithm表示所使用的Hash算法。
(9)类A:
类A表示参与实体A所实现的类,它继承Protocol类,并实现了Run方法,Run方法实现了参与实体针对指定协议的操作序列。此类是由解释器根据协议XML描述文档自动生成的,具体的实现细节在下一节介绍。
解释器模块
解释器模块采用结构化的XML语言来描述协议,解释器模块(Interpreter)负责解析协议XML描述文档并生成实现代码。解析过程基于协议XML描述文档中相关节点以及属性来进行处理,具体来说是对关键字的解析。解释器模块由类CGenerator实现,该类包括FreeVarGenerator单元、KeyInfoGenerator单元、BuildMsg单元、ParseMsg单元及Generator单元,完成对XML描述文档的解析和相应代码的生成。该过程如图7所示。
FreeVarGenerator单元负责对XML文档中FreeVariable节点的协议实体、随机数变量及其对应的属性信息进行解析,并生成对应的初始化代码。
KeyInfoGenerator单元负责对协议XML文档中KeyInit节点的密钥初始化信息进行解析,生成实体相关密钥(如:对称密钥、非对称密钥以及MAC算法密钥)的初始化代码。
BuildMsg单元负责XML文档中Message节点的解析,根据描述中每条待发送消息的结构构造消息,即生成一条消息的构造代码;
ParseMsg单元对收到的消息按照Message节点的结构进行解析,生成一条消息的解析代码。
Generator单元通过调用FreeVarGenerator单元、KeyInfoGenerator单元、BuildMsg单元和ParseMsg单元,生成每个参与方实体代码,即生成参与方实体类(如:图5中的类A)。
将安全协议XML描述文档作为解释器模块的输入,选择协议实现的目标语言,依赖底层支撑生成安全协议的目标语言实现代码。
利用上述方法就可以得到安全协议的多目标语言实现,并且避免在传统手工编码中容易引入的缺陷,并极大的减少实现安全协议的时间开销。
符号说明:
Interpreter:安全协议解释器
GUI:图形用户接口
MAC:消息认证码
XML:可扩展标记语言
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (8)
1.基于XML描述的安全协议代码自动实现***,其特征在于,包括:安全协议XML描述文档生成模块、解释器模块、底层支撑模块;所述安全协议XML描述文档生成模块通过图形用户接口GUI配置安全协议,自动生成安全协议的XML描述文档;所述解释器模块负责对所述安全协议XML描述文档进行解析并生成相应的协议代码;底层支撑模块为解释器模块的代码生成提供支撑;底层支撑模块包括安全类库以及通信类库,它们在安全协议代码生成以及协议安全运行中起支撑作用;为了使最终得到的协议实现清晰、简洁,在底层支撑功能的设计上,采用了面向对象的方法,用一个派生类来实现最终的协议,最终自动生成的协议实现只需包含相关功能的调用即可完成协议的任务,而这些功能的实现都是由底层支撑部分提供,这使得最后的协议源码实现简单易懂;同时,该方法为外部提供的仅仅是功能调用接口,也为协议多目标语言实现奠定了基础:在不同的目标语言实现时,只需要将具体的函数用对应的语言实现即可,而其他部分不需做修改。
2.根据权利要求1所述的安全协议代码自动实现***,其特征在于,所述安全协议XML描述文档生成模块包括:自由变量描述单元、密钥初始信息描述单元和消息交互序列描述单元。
3.根据权利要求1所述的安全协议代码自动实现***,其特征在于,所述解释器模块由类CGenerator实现,该类包括FreeVarGenerator单元、KeyInfoGenerator单元、BuildMsg单元、ParseMsg单元及Generator单元,完成对XML描述文档的解析和相应代码的生成。
4.根据权利要求3所述的安全协议代码自动实现***,其特征在于,所述FreeVarGenerator单元负责对所述安全协议XML描述文档中FreeVariable节点的协议实体、随机数变量进行解析,并生成对应的初始化代码。
5.根据权利要求3所述的安全协议代码自动实现***,其特征在于,KeyInfoGenerator单元负责对所述安全协议XML描述文档中KeyInit节点的密钥初始化信息进行解析,生成实体相关密钥的初始化代码。
6.根据权利要求3所述的安全协议代码自动实现***,其特征在于,BuildMsg单元负责所述安全协议XML描述文档中Message节点的解析,根据描述中每条待发送消息的结构构造消息,即生成一条消息的构造代码。
7.根据权利要求6所述的安全协议代码自动实现***,其特征在于,ParseMsg函数对收到的消息按照Message节点的结构进行解析,生成一条消息的解析代码。
8.根据权利要求3所述的安全协议代码自动实现***,其特征在于,Generator单元通过调用FreeVarGenerator单元、KeyInfoGenerator单元、BuildMsg单元和ParseMsg单元,生成每个参与方实体代码,即生成参与方实体类。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110008729.XA CN102055770B (zh) | 2011-01-17 | 2011-01-17 | 一种基于xml描述的安全协议代码自动实现*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110008729.XA CN102055770B (zh) | 2011-01-17 | 2011-01-17 | 一种基于xml描述的安全协议代码自动实现*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102055770A CN102055770A (zh) | 2011-05-11 |
CN102055770B true CN102055770B (zh) | 2014-07-16 |
Family
ID=43959696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110008729.XA Expired - Fee Related CN102055770B (zh) | 2011-01-17 | 2011-01-17 | 一种基于xml描述的安全协议代码自动实现*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102055770B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103326892B (zh) * | 2013-05-14 | 2018-10-16 | 百度在线网络技术(北京)有限公司 | Web接口的操作方法及装置 |
CN104753696A (zh) * | 2013-12-26 | 2015-07-01 | 成都鼎桥通信技术有限公司 | 用户侧设备开站的方法和装置 |
CN104104680A (zh) * | 2014-07-14 | 2014-10-15 | 中国电子科技集团公司第四十一研究所 | 一种采用形式化描述语言进行RapidIO协议解码的方法 |
CN106598581B (zh) * | 2016-12-06 | 2020-01-03 | 成都能通科技有限公司 | 基于xml的asterix报文解析代码生成方法 |
WO2018165902A1 (zh) * | 2017-03-15 | 2018-09-20 | 深圳中兴力维技术有限公司 | 一种通信协议解析代码自动生成方法及*** |
CN107908394B (zh) * | 2017-11-21 | 2020-03-10 | 中国电子科技集团公司第五十四研究所 | 一种数据交换格式化源代码生成方法及装置 |
CN108809999A (zh) * | 2018-06-20 | 2018-11-13 | 山东浪潮通软信息科技有限公司 | 一种仓储设备协议自适应的解析方法及*** |
CN109976834B (zh) * | 2019-03-29 | 2022-01-28 | 上海仁童电子科技有限公司 | 一种协议栈参数配置方法及装置 |
CN111461239B (zh) * | 2020-04-03 | 2023-05-09 | 成都考拉悠然科技有限公司 | 基于白盒攻击的ctc场景文字识别模型优化方法 |
CN111741019A (zh) * | 2020-07-28 | 2020-10-02 | 常州昊云工控科技有限公司 | 一种基于字段描述的通信协议解析方法和*** |
CN116319487B (zh) * | 2023-03-24 | 2023-09-29 | 广州市易鸿智能装备有限公司 | 一种工业协议动态解析方法及*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217545A (zh) * | 2008-01-18 | 2008-07-09 | 东南大学 | 一种安全协议自动化设计实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8086609B2 (en) * | 2007-11-01 | 2011-12-27 | Cavium, Inc. | Graph caching |
-
2011
- 2011-01-17 CN CN201110008729.XA patent/CN102055770B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217545A (zh) * | 2008-01-18 | 2008-07-09 | 东南大学 | 一种安全协议自动化设计实现方法 |
Non-Patent Citations (4)
Title |
---|
A Security Protocol Compiler Generating C Source Codes;Shinsaku Kiyomoto等;《2008 International Conference on Information Security and Assurance》;20081231;第20-25页 * |
Hlpsl2 Cpp——一个安全协议编译器;周天凌等;《计算机研究应用》;20070630;第24卷(第6期);第123-126页 * |
Shinsaku Kiyomoto等.A Security Protocol Compiler Generating C Source Codes.《2008 International Conference on Information Security and Assurance》.2008,第20-25页. |
周天凌等.Hlpsl2 Cpp——一个安全协议编译器.《计算机研究应用》.2007,第24卷(第6期),第123-126页. |
Also Published As
Publication number | Publication date |
---|---|
CN102055770A (zh) | 2011-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102055770B (zh) | 一种基于xml描述的安全协议代码自动实现*** | |
Blanchet | Security protocol verification: Symbolic and computational models | |
Mödersheim et al. | Secure pseudonymous channels | |
CN104580208A (zh) | 一种身份认证方法及装置 | |
Datta et al. | Abstraction and refinement in protocol derivation | |
Szymoniak | Amelia—A new security protocol for protection against false links | |
CN103425939B (zh) | 一种sm3算法在java环境中的实现方法及*** | |
CN105281901A (zh) | 一种云租户关键信息的加密方法 | |
CN105049206A (zh) | 一种在OpenSSL中应用SM2椭圆曲线算法进行加密的方法 | |
Döttling et al. | From stateful hardware to resettable hardware using symmetric assumptions | |
JP2022517383A (ja) | マルチキャストグループ内の購読者にキーデータを伝送するデバイス | |
Ziegeldorf et al. | Choose wisely: a comparison of secure two-party computation frameworks | |
CN102662483A (zh) | 一种对云计算业务智能终端用户信息安全输入的方法 | |
Hayati et al. | A novel session key update scheme for LoRaWAN | |
Yutao et al. | Study on a CPN-based Auto-analysis Tool for Security Protocols | |
CN102215226A (zh) | 自联网 | |
CN103873270B (zh) | 智慧型电表基础建设网络***及其消息广播方法 | |
Lardier | Asgards-h: Enabling advanced smart grid cyber-physical attacks, risk and data studies with helics | |
Frolov et al. | Modeling Cryptographic Protocols Using the Algebraic Processor | |
Alvila | A performance evaluation of post-quantum cryptography in the signal protocol | |
Amin et al. | Time and energy cost analysis of Kerberos security protocol in wireless sensor networks | |
Li et al. | An Engine for Automatic Code Generation of Security Protocols in Multiple Languages | |
CN117220951A (zh) | 一种进行标识信息传输的安全认证方法和*** | |
Allali | Authentication Model Based on JWT and Local PKI for Communication Security in Multi-agent Systems | |
Nigar | An efficient encryption-secure communication using symmetric key |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
DD01 | Delivery of document by public notice |
Addressee: XIDIAN University Document name: Notification to Pay the Fees |
|
DD01 | Delivery of document by public notice | ||
DD01 | Delivery of document by public notice |
Addressee: Li Xinghua Document name: Notice of termination of patent |
|
DD01 | Delivery of document by public notice | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140716 Termination date: 20200117 |
|
CF01 | Termination of patent right due to non-payment of annual fee |