一种基于xml描述的安全协议代码自动实现系统的制作方法

文档序号:7563644阅读:229来源:国知局
专利名称:一种基于xml描述的安全协议代码自动实现系统的制作方法
技术领域
本发明属于通信协议工程学领域,涉及一种基于XML描述的安全协议代码自动实 现系统,具体地说是针对传统的安全协议手工编码过程中存在的各种问题,提出一种将安 全协议的代码实现过程自动化的方案,以避免在传统手工编码中容易引入的缺陷,并极大 的减少实现安全协议的时间开销。
背景技术
随着网络应用的飞速发展,接踵而至的是各种纷繁的安全问题,为了能在一个不 安全的网络环境下提供安全的通信服务,提出了安全协议的概念。安全协议(密码协议) 运用密码学方法实现与安全相关的功能,它定义了两个或者多个参与实体之间进行数据通 信的规则集,以达到诸如身份认证,密钥分配等目的。安全协议从最初的设计到最后正式投入使用,一般都会经历如图1所示的三个阶 段⑴设计分析;⑵编码实现;⑶协议测试。在设计分析阶段,如何保证安全协议的正确性是比较棘手和易错的,有相当数量 曾经认为是安全的协议经过若干年后被证明是不安全的。为了降低协议出错的可能性,在 过去的几十年里,研究人员在该领域做了大量的工作,并提出了不少安全协议形式化设计 与证明的方法。在协议测试阶段也有不少方法,既有基于传统软件工程的黑盒测试和白盒测试, 还有专门针对安全协议的测试方法,如一致性测试和安全性测试,而且这些方法大部分是 靠机器自动化实现的。而对于从安全协议设计分析到测试阶段起桥梁作用的代码实现,却仍然停留在手 工编码水平,研究人员未对此开展广泛和深入的研究。手工编码效率低,存在大量重复性的 工作,人工代价较高,这就影响了整个协议设计开发的速度。而且该过程是由程序员根据自 己对协议的理解进行编码,而这些理解多来自于安全协议的非形式化描述,与抽象的形式 化验证模型不太相关,从而导致协议实现的安全性与形式化验证阶段的安全性不一致。另 外,手工编码难免会引入编程错误(如调用了不安全的函数,缓冲区溢出等)。因此,即使是 对于已证明安全的协议,上述原因也使得最终实现的协议的安全性难以保证。由此可见,依 靠传统方法要高效、正确地实现对安全协议的编码对程序员来说是一项有挑战性的工作。对于已经证明安全的协议,如果可以设计一个编译器(解释器)来将协议的代码 实现这一过程自动化,将会节约大量人工成本,从而投入更多的精力专注于安全协议的设 计及测试;将设计的协议快速转化为代码实现,结合安全性的测试方法,可以提高协议设计 开发的效率,缩短整个过程所需时间;对于某些对协议效率要求很高的应用来说,如果能够 很快将设计的协议转化为代码进行部署,就可以快速验证所设计协议的有效性,从而加速 设计出满足应用需求的协议;即使自动化实现的代码不能够被直接使用,也可以给编程人 员提供参考,减少编程人员的工作量;同时,在自动化工具设计时可以避免调用那些不安全 的函数(如C语言中的strcpyO等),这在一定程度上提高了代码的安全性;另外,该工具对于那些编程水平不高的人员(如从事科研的研究人员或高校学生)以及对代码质量要 求不是很高的应用来说,也是有意义的。安全协议自动化实现过程大致可分为两个步骤,如图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)0
(2)密钥初始化信息描述单元每个XML描述文档只有一个KeyIni t节点,用于描述安全协议所用到密钥的初始 化信息和哈希算法。如图5所示,密钥初始化信息主要由三类对称密钥、非对称密钥以及 MAC算法密钥,分别用节点Symcrypto、Pkcrypto, MACcrypto描述。每种节点可以有多个, 用于表示安全协议所用到的多个此类密钥。节点Knowledge比较特殊,用于描述在公钥密 码体制中,实体的公钥知识。如初始化时,实体A需要知道实体B的公钥,可以用一个节点 Knowledge描述。同样,Knowledge节点可以存在多个。在协议的XML描述文档中Symcrypto 节点代表对称密钥信息,拥有算法(algorithm),密钥的共享方(sharel和share2),以及 共享密钥路径(symKeyPathname)等属性;Pkcrypt0节点代表非对称密钥信息,拥有算法 (algori thm),拥有者(owner),公钥路径名(PKPathname)以及私钥路径名(PRPathname) 等属性;MACcrypto节点代表MAC密钥信息,拥有算法(algorithm),密钥的共享方(sharel 和share2),以及MAC密钥路径(MacKeyPathname)等属性;Hash节点代表了哈希算法信息, 拥有的属性为算法(algorithm)。(3)消息交互序列描述单元节点Message描述一条消息,其属性source、destination、sequence分别表示消 息的发送者、接收者和消息序列号。消息交互序列可以由如下表达式定义
Message = Plaintext|Encrypt|MAC|HashPlaintext: = Agent !NonceEncrypt:: = (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所示的框架来实现,具体来说用结构体来模拟 对应类的实现。下面就其中几个基本的类作简单的介绍(I)Protocol 类Protocol类是整个框架中的核心类,协议的每个参与实体都需要继承ftOtocol 类。!Protocol类中包含一组列表结构(如AnownAgentlist等)用以分别存储XML中的自 由变量(如=Agent和Nonce)和密钥信息(公私钥和对称密钥等);parts变量存储消息的 组成部分,用于构造和解析消息;storedMsgList用于存储需要转发给第三方的消息。以“Add”为前缀的前5个方法(如=AddAgent)主要用于向相关列表中添加协议 实体、随机数、密钥信息(如非对称钥和对称钥等),以初始化协议实体、随机数和密钥; AddParts, AddStoredMsg,GetPart,GetStoredMsg 用来解析或构造消息;Receive 方法从给 定的实体接收消息Aend方法发送消息到指定实体;Rim是一个抽象方法,在具体的参与实 体类中实现,描述了协议运行时该执行实体的操作序列。(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、 HMACSHAU HMACSHA256、HMACSHA384和HMACSHA512等,具体采用哪种算法可由用户在XML 描述文档中指定;字段keyld表示密钥标识,keyPath表示密钥所在文件路径。(6) PkCryptoKey 类PkCryptoKey类表示非对称密钥对。字段algorithm表示所使用的非对称加密算 法,支持RSA算法等,具体算法可由用户在XML描述文档中指定;字段Hiid和raid分别表 示公钥和私钥标识,字段publicKeyl^th和privateKeyl^ath分别表示公钥和私钥所在文件路径。(7) SymCryptoKey 类SymCryptoKey类表示对称密钥。它与XML描述文档密钥初始化部分中HiCrypto 节点相对应;字段algorithm表示所使用的对称加密算法,支持DES,TripleDES,Rijndael(AES)等算法,具体算法可由用户在XML描述文档中指定;字段keyld表示密钥标 识,keyPath表示密钥所在文件。(8) Hash 类Hash类用来进行Hash操作,字段algorithm表示所使用的Hash算法。(9)类 A 类A表示参与实体A所实现的类,它继承!Protocol类,并实现了 Run方法,Run方 法实现了参与实体针对指定协议的操作序列。此类是由解释器根据协议XML描述文档自动 生成的,具体的实现细节在下一节介绍。解释器模块采用结构化的XML语言来描述协议,解释器模块anterpreter)负 责解析协议XML描述文档并生成实现代码。解析过程基于协议XML描述文档中相关节点以 及属性来进行处理,具体来说是对关键字的解析。解释器模块由类CGenerator实现,该类 包括 FreeVarGenerator 单兀、KeyInfoGenerator 单兀、Bui IdMsg 单兀、ParseMsg 单兀及 Generator单元,完成对XML描述文档的解析和相应代码的生成。该过程如图7所示。FreeVarGenerator单元负责对XML文档中FreeVariable节点的协议实体、随机数 变量等信息进行解析,并生成对应的初始化代码。KeyInfoGenerator单元负责对协议XML文档中Keyhit节点的密钥初始化信息进 行解析,生成实体相关密钥(如对称密钥、非对称密钥以及MAC算法密钥)的初始化代码。BuildMsg单元负责XML文档中Message节点的解析,根据描述中每条待发送消息 的结构构造消息,即生成一条消息的构造代码;ParseMsg函数对收到的消息按照Message 节点的结构进行解析,生成一条消息的解析代码。Generator 单兀通过调用 FreeVarGenerator、KeyInfoGeneratorΛ BuildMsg 禾口 ParseMsg单元,生成每个参与方实体代码,即生成参与方实体类(如图5中的类Α)。本发明具有以下优点在协议描述语言的选择上,本发明选择了具有较好扩展性的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),密钥的共享方(sharel和share2),以及 共享密钥路径(symKeyPathname)等属性;Pkcrypt0节点代表非对称密钥信息,拥有算法 (algorithm),拥有者(owner),公钥路径名(PKPathname)以及私钥路径名(PRPathname)等 属性;MACcrypto节点代表MAC密钥信息,拥有算法(algorithm),密钥的共享方(sharel和 share2),以及MAC密钥路径(MacKeyPathname)等属性;Hash节点代表了哈希算法信息,拥 有的属性为算法(algorithm)。(3)消息交互序列描述单元节点Message描述一条消息,其属性source、destination、sequence分别表示消 息的发送者、接收者和消息序列号。消息交互序列可以由如下表达式定义Message = Plaintext|Encrypt|MAC|HashPlaintext: = Agent !NonceEncrypt:: = (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所示的框架来实现,具体来说用结构体来模拟 对应类的实现。下面就其中几个基本的类作简单的介绍(I)Protocol 类Protocol类是整个框架中的核心类,协议的每个参与实体都需要继承ftOtocol 类。!Protocol类中包含一组列表结构(如AnownAgentlist等)用以分别存储XML中的自 由变量(如=Agent和Nonce)和密钥信息(公私钥和对称密钥等);parts变量存储消息的 组成部分,用于构造和解析消息;storedMsgList用于存储需要转发给第三方的消息。以“Add”为前缀的前5个方法(如=AddAgent)主要用于向相关列表中添加协议 实体、随机数、密钥信息(如非对称钥和对称钥等),以初始化协议实体、随机数和密钥; AddParts,AddStoredMsg,GetPart,GetStoredMsg 用来解析或构造消息;Receive 方法从给 定的实体接收消息Aend方法发送消息到指定实体;Rim是一个抽象方法,在具体的参与实 体类中实现,描述了协议运行时该执行实体的操作序列。(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、 HMACSHAU HMACSHA256、HMACSHA384和HMACSHA512等,具体采用哪种算法可由用户在XML 描述文档中指定;字段keyld表示密钥标识,keyPath表示密钥所在文件路径。(6) PkCryptoKey 类PkCryptoKey类表示非对称密钥对。字段algorithm表示所使用的非对称加密算 法,支持RSA算法等,具体算法可由用户在XML描述文档中指定;字段Hiid和raid分别表 示公钥和私钥标识,字段publicKeyl^th和privateKeyl^ath分别表示公钥和私钥所在文件路径。(7) SymCryptoKey 类SymCryptoKey类表示对称密钥。它与XML描述文档密钥初始化部分中HiCrypto节点相对应;字段algorithm表示所使用的对称加密算法,支持DES,TripleDES, Rijndael(AES)等算法,具体算法可由用户在XML描述文档中指定;字段keyld表示密钥标 识,keyPath表示密钥所在文件。(8) Hash 类:Hash类用来进行Hash操作,字段algorithm表示所使用的Hash算法。(9)类 A:类A表示参与实体A所实现的类,它继承ftOtocol类,并实现了 Run方法,Run方 法实现了参与实体针对指定协议的操作序列。此类是由解释器根据协议XML描述文档自动 生成的,具体的实现细节在下一节介绍。解释器模块解释器模块采用结构化的XML语言来描述协议,解释器模块anterpreter)负责 解析协议XML描述文档并生成实现代码。解析过程基于协议XML描述文档中相关节点以 及属性来进行处理,具体来说是对关键字的解析。解释器模块由类CGenerator实现,该类 包括 FreeVarGenerator 单兀、KeyInfoGenerator 单兀、BuildMsg 单兀、ParseMsg 单兀及 Generator单元,完成对XML描述文档的解析和相应代码的生成。该过程如图7所示。FreeVarGenerator单元负责对XML文档中FreeVariable节点的协议实体、随机数 变量及其对应的属性信息进行解析,并生成对应的初始化代码。KeyInfoGenerator单元负责对协议XML文档中Keyhit节点的密钥初始化信息进 行解析,生成实体相关密钥(如对称密钥、非对称密钥以及MAC算法密钥)的初始化代码。BuildMsg单元负责XML文档中Message节点的解析,根据描述中每条待发送消息 的结构构造消息,即生成一条消息的构造代码;ParseMsg单元对收到的消息按照Message节点的结构进行解析,生成一条消息的 解析代码。Generator 单元通过调用 FreeVarGenerator 单元、KeyInfoGenerator 单元、 BuildMsg单元和ParseMsg单元,生成每个参与方实体代码,即生成参与方实体类(如图5 中的类A)。将安全协议XML描述文档作为解释器模块的输入,选择协议实现的目标语言,依 赖底层支撑生成安全协议的目标语言实现代码。利用上述方法就可以得到安全协议的多目标语言实现,并且避免在传统手工编码 中容易引入的缺陷,并极大的减少实现安全协议的时间开销。符号说明Interpreter 安全协议解释器⑶I:图形用户接口MAC:消息认证码XML:可扩展标记语言应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换, 而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
权利要求
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 单元、BuiIdMsg 单元禾口 ParseMsg 单元, 生成每个参与方实体代码,即生成参与方实体类。
全文摘要
本发明公开了基于XML描述的安全协议代码自动实现系统,包括安全协议XML描述文档生成模块、解释器模块、底层支撑模块;所述安全协议XML描述文档生成模块通过图形用户接口GUI配置安全协议,自动生成安全协议的XML描述文档;所述解释器模块负责对所述安全协议XML描述文档进行解析并生成相应的协议代码;底层支撑模块为解释器模块的代码生成提供支撑。本发明具有避免传统的安全协议手工编码过程较易引入的缺陷并减少实现安全协议时间开销的优点,可用于安全协议的快速多目标语言代码实现。
文档编号H04L29/06GK102055770SQ201110008729
公开日2011年5月11日 申请日期2011年1月17日 优先权日2011年1月17日
发明者姜奇, 尚昭辉, 张俊伟, 李光松, 李兴华, 李帅团, 李登, 马卓, 马建峰 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1