一种基于隐式证书的轻量级认证密钥协商方法与流程

文档序号:11138258阅读:788来源:国知局
一种基于隐式证书的轻量级认证密钥协商方法与制造工艺

本发明属于身份认证技术领域,具体地说,尤其涉及一种基于隐式证书的轻量级认证密钥协商方法。



背景技术:

随着工业物联网的发展,工业网络和系统规模日益扩大,用户希望把从工厂底层的设备信息到高层的企业决策信息都能够有效地集成和整合,使工厂里各种各样的自动化、信息化系统都能够有效利用需要的信息,工业自动化系统对大范围信息共享的要求愈加强烈。然而,在工业自动化系统中一般都有多个厂商的设备,而且工业网络控制系统采用不同的通信技术以及信息交换标准,这难以做到信息在工业自动化系统中互联互通,容易造成“信息孤岛”难题,使的过程控制层和企业管理层无法全面及时地掌握工业生产状况,严重影响工业的智能化、企业管理信息化的发展水平。

为了解决此问题,OPC基金会提出了OPC通信协议,它为企业打破工业网络专属通讯协议的壁垒,提出了重要的解决方案。但是,OPC协议仅适用于微软平台,缺乏必要的安全机制。在2006年,OPC基金会推出了新一代技术OPC UA,让OPC实现了更大程度的突破。在安全方面,OPC UA提供了一个非常灵活的安全模型,保证了客户端和服务器的合法性,用户的合法性,客户端和服务器之通信数据的保密性、完整性、可用性。而今,OPC UA技术发展进入了嵌入式OPC UA应用的新阶段。但由于嵌入式设备的内存空间有限,操作系统简单、低功耗的要求,给OPC UA在嵌入式领域的发展带来了极大挑战。在安全方面,OPC UA规范中提出的安全策略在嵌入式现场设备中实现起来过于繁重,会直接影响到工业的实时性需求。目前,OPC UA规范中安全机制主要存在以下不足:

1)OPC UA安全机制的实现是基于PKI公钥基础设施技术,该技术并不适用于资源受限嵌入式现场设备,如射频识别标签。对于资源受限嵌入式现场设备而言,证书和证书撤销列表的存储需要占用一定的内存;另外,基于证书的签名、加密算法对计算能力有限的设备而言,其计算开销过于繁重。

2)OPC UA规范第7部分中提出的安全策略(如Basic128、Basic256)是基于RSA公钥算法。目前技术已能在有效时间内破译512比特的RSA密钥。考虑到系统的安全性,必须增加RSA密钥长度。RSA公钥算法的密钥长度的增加,会使算法的运算效率降低,尤其是计算速度缓慢。这限制了OPC UA规范中的安全策略在资源受限的嵌入式设备中的使用。



技术实现要素:

有鉴于此,针对以上现有技术中的不足,本发明的目的在于提供一种基于隐式证书的轻量级认证密钥协商方法,该方法能够解决OPC UA在资源受限环境中使用问题,保证信息传输的端到端的安全。

为达到上述目的,本发明提供如下技术方案:

一种基于隐式证书的轻量级认证密钥协商方法,其认证密钥协商过程中涉及三个实体:可信的证书颁发机构CA、OPC UA客户端A、OPC UA服务器B。该方法的步骤包含以下几个:

(1)可信的证书颁发机构CA、OPC UA客户端A和OPC UA服务器B的条件初始化配置。

(2)在步骤(1)完成以后,OPC UA客户端A和OPC UA服务器B必须在可信的证书颁发机构CA完成注册以获取各自的隐式证书。

(3)在步骤(2)完成以后,OPC UA客户端A和OPC UA服务器B开始进行双向身份认证。

(4)在步骤(3)完成以后,OPC UA客户端A和OPC UA服务器B开始进行密钥协商。当密钥协商完成以后,OPC UA客户端A和OPC UA服务器B之间的安全通道建立完成。在安全通道之上,OPC UA客户端A和OPC UA服务器B可利用协商出的对称密钥进行会话通信。

更进一步,根据所述的可信的证书颁发机构CA、OPC UA客户端A和OPC UA服务器B的条件初始化配置具体步骤如下:

(1)可信的证书颁发机构CA需先建立一套合适的椭圆曲线(ECC)域参数[q,a,b,G,n,h],其中,q为域尺寸,a和b为椭圆曲线系数,G为基点,n为基点G的阶数,h为余因子。

(2)可信的证书颁发机构CA确定使用散列函数的类型,在本发明中,采用Whirlpool散列算法,该算法实现过程是进行消息分组,分组的长度为512位,填充同MD5,其中消息长度占最后256位,所以,Whirlpool有更高的计算速度和较低的碰撞率。

(3)可信的证书颁发机构CA、OPC UA客户端A和OPC UA服务器B选定伪随机位生成器,其生成的随机数取值范围是[1,...,n-1],其中n为基点G的阶数。

(4)可信的证书颁发机构CA根据椭圆曲线域参数生成自身的公私钥对(kCA,KCA),kCA是CA的私钥,KCA是CA的公钥。

更进一步,根据所述的OPC UA客户端A和OPC UA服务器B在可信的证书颁发机构CA的注册过程具体步骤如下:

(1)OPC UA客户端A和OPC UA服务器B均可作为证书请求者。首先,证书请求者发送其身份信息ID至本地可信的证书颁发机构CA;其次,可信的证书颁发机构CA验证证书请求者的身份信息是否合法,如果证书请求者身份合法,则CA回应一条信息至证书请求者,其信息包含CA的身份标识IDCA和公钥KCA,以及一些加密套件(CipherSuite),如散列函数、椭圆曲线域参数等。否则,直接终止通信。

(2)当证书请求者收到来自CA的响应后,产生一个随机数K,并计算临时公钥R,R=KG,然后利用不带密钥的散列函数生成消息完整性码MIC(ID,R)。最后构造请求信息R||MIC(ID,R)发送至CA。

(3)CA收到消息R||MIC(ID,R)后,首先利用相同的方式计算消息完整性码MIC(ID,R),如果消息完整性码验证不通过,则终止通信。反之,首先产生一个随机数NCA,其次计算隐式证书因子D,D=R+NCAG,并利用D构造隐式证书Cert=Encode[D,ID,Text],其中,Text为证书的一些基本信息,如证书的有效期限、版本号等。再次计算隐式证书哈希摘要值e=H(Cert)和签名s=eNCA+kCA(modn)。然后利用不带密钥的散列函数生成消息完整性码MIC[Cert,s,IDCA]。最终构造响应信息Cert||s||MIC(Cert,s,IDCA)发送至证书请求者。

(4)当证书请求者收到证书来自CA的响应信息Cert||s||MIC(Cert,s,IDCA)后,首先利用相同的方式计算消息完整性码MIC[Cert,s,IDCA],判断其是否与响应信息中的校验码相同,如果消息完整性码验证不通过,则终止通信。反之,证书请求者可根据收到的隐式证书计算出自己的私钥y=eK+s(modn)和公钥Y=eD+KCA

进一步,当OPC UA客户端A和OPC UA服务器B均在CA完成注册以后,两者可利用获取到的隐式证书进行认证和密钥协商。

进一步,在OPC UA客户端A和OPC UA服务器B进行认证之前,OPC UA客户端A必须通过发现服务(FindServers)机制才可以与OPC UA服务器建立通信。

更进一步,根据所述的OPC UA客户端A和OPC UA服务器B之间的双向认证过程具体步骤如下:

(1)首先OPC UA客户端A需要发送服务请求(GetEndpoints)至OPC UA服务器B,以获取OPC UA服务器B中用于建立安全通道和会话的安全配置信息。

(2)当OPC UA服务器B收到服务请求(GetEndpoints)后,则通过服务响应(EndpointDescription)把安全配置信息发送至OPC UA客户端A。其中,这些安全配置信息主要包括OPC UA服务器B的隐式证书、信息安全模型和安全策略等。

(3)OPC UA客户端A收到服务响应(EndpointDescription)后,产生一个随机数R1,并计算客户端临时公钥L,L=R1G。然后利用带密钥的散列函数生成L的消息鉴别码MAC(L,Q),其中Q为OPC UA客户端A的公钥。然后把信息L||MAC(L,Q)发送到OPC UA服务器B。

(4)OPC UA服务器B收到信息L||MAC(L,Q)后,首先根据服务请求(GetEndpoints)获取的OPC UA客户端A隐式证书CertA重构出客户端公钥Q=eD+KCA,其中e为隐式证书CertA的哈希摘要值,e=H(CertA)。然后利用相同的方式计算客户端临时公钥L的消息鉴别码MAC(L,Q)1,将MAC(L,Q)和MAC(L,Q)1作比较,如果两者不相同,则终止通信。反之,OPC UA服务器B产生随机数R2,并利用带密钥的散列函数生成R2的消息鉴别码MAC(R2,M),其中M为OPC UA服务器B的公钥,把R2||MAC(R2,M)发送到OPC UA客户端A。

(5)OPC UA客户端A收到R2||MAC(R2,M)后,首先根据服务响应(EndpointDescription)获取的OPC UA服务器B隐式证书CertB重构出服务器公钥M=e1D1+KCA,其中e1为隐式证书CertB的哈希摘要值,e1=H(CertB)。然后利用相同的方式计算R2的消息鉴别码MAC(R2,M)1,将MAC(R2,M)1和MAC(R2,M)作比较,如果两者不相同,则终止通信。反之,计算V=R1+R2q,其中,q为OPC UA客户端A的私钥。随后产生一个新的随机数R4,并利用带密钥的散列函数生成消息鉴别码MAC(V,R4,Q),把V||R4||MAC(V,R4,Q)发送到OPC UA服务器B。

(6)OPC UA服务器B收到V||R4||MAC(V,R4,Q)后,首先利用相同的方式计算消息鉴别码MAC(V,R4,Q)1,将MAC(V,R4,Q)和MAC(V,R4,Q)1作比较,如果两者不相同,则终止通信。反之,计算VG和R2Q+L,并判断两者是否相等。如果不相等,则OPC UA服务器B对OPC UA客户端A的身份认证不通过,直接终止通信。反之,OPC UA服务器B产生一个新的随机数R3,并计算服务器临时公钥L1,L1=R3G和V1=R3+R4m,其中,m为OPC UA服务器B的私钥,并利用带密钥的散列函数生成消息鉴别码MAC(V1,L1,M),把信息V1||L1||MAC(V1,L1,M)发送到OPC UA客户端A。

(7)OPC UA客户端A收到V1||L1||MAC(V1,L1,M)后,首先利用相同的方式计算消息鉴别码MAC(V1,L1,M)1,将MAC(V1,L1,M)和MAC(V1,L1,M)1作比较,如果两者不相同,则终止通信。反之,OPC UA客户端A计算V1G和R4M+L1,并判断两者是否相等。如果不相等,则OPC UA客户端A对OPC UA服务器B的身份认证不通过,直接终止通信。反之,OPC UA客户端A和服务器B完成了双向的身份认证,这保证了通信双方身份的合法性。

进一步,OPC UA客户端A和OPC UA服务器B完成双向认证后,双方可利用之前获取到对方公钥,通过ECDH密钥协商机制衍生出对称密钥,为会话通信提供必要的密钥材料,其衍生出的对称密钥为aM=bQ。

本发明的有益效果在于:

性能分析:与现有OPC UA规范中认证和密钥协商相比,本发明采用隐式证书和ECC算法。在相同安全强度下,隐式证书的尺寸小于数字证书的尺寸,同时OPC UA设备不需要存储证书撤销列表。因此,本发明降低了资源受限嵌入式OPC UA设备的存储开销;在计算开销方面,本发明的认证过程只需要用到简单的哈希运算、椭圆曲线的点群运算、异或运算和随机数的产生,没有复杂的幂指运算。因此,从运算效率来讲,本发明降低了资源受限嵌入式OPC UA设备的计算开销。在通信开销方面,在一次认证过程中,本发明传输的认证信息为简单的隐式证书、随机数、MAC码等,并且在认证完成后,会话密钥的计算也不必增加额外的通信开销。与OPC UA规范中的认证过程相比较,本发明降低了资源受限嵌入式OPC UA设备的通信开销。

安全性分析:本发明在每次OPC UA客户端A和OPC UA服务器B间认证和密钥协商过程中,传输的认证信息是动态变化的,并且认证消息与会话密钥的计算没有联系,因此攻击者很难从认证消息中获取到重要的会话密钥信息。OPC UA客户端A和OPC UA服务器B各自维护一个伪随机位生成器,因此认证信息可抵抗重放攻击。同时,认证信息的MAC码也可有效维护信息的完整性。进一步,即使攻击者截获或者篡改认证信息,妨碍OPC UA客户端A和OPC UA服务器B间的身份认证和会话建立,但攻击者是不能以假冒身份通过认证的。

总而言之,本发明中所述方案所需的存储开销、计算开销和通信开销较少,同时安全性高,非常适用于资源受限嵌入式OPC UA设备通信网络。

附图说明

为了使本发明的目的、技术方案更加清楚,本发明提供如下附图进行说明:

图1为OPC UA通信网络架构模型;

图2为OPC UA安全模型;

图3为初始化条件建立过程图;

图4为OPC UA客户端A和OPC UA服务器B注册过程图;

图5为OPC UA客户端A和OPC UA服务器B间认证和密钥协商过程图。

具体实施方式

下面结合附图给出一个非限定性的实施例对本发明做进一步阐述。

本发明涉及一种基于隐式证书的轻量级认证密钥协商方法,用于OPC UA服务器与OPC UA客户端之间安全通道的建立和会话密钥的生成。图1为OPC UA通信网络架构模型,如图1所示,该模型由企业管理层、过程控制层和现场设备层三部分组成。企业管理层的信息交互一般通过Internet进行,其功能包含数据管理、客户管理、生成调度等。过程控制层需要具备与企业管理层和现场设备层保持双向通信能力,从企业管理层接收生产计划,经过分解处理后,向现场设备发出生产指令。过程控制层能够对生产工艺进行实时控制和调整,实现了物料、设备、人员的信息协同。现场设备层包含了大量的现场设备,主要根据过程控制层的生产指令进行产品的加工。同时,该模型主要包含三类实体:可信的证书颁发机构CA、OPC UA客户端、OPC UA服务器。

可信的证书颁发机构CA:主要负责创建、发布和管理OPC UA客户端和服务器的证书,它是OPC UA安全机制实现的重要组成部分。

OPC UA客户端:主要负责获取OPC UA服务器的信息,用于生产监控、生产调度等,它可以充分利用相应服务的API获取OPC UA服务器信息。

OPC UA服务器:工业网络中的现场设备可充当OPC UA服务器,它主要为客户端提供两种类型的服务,一种是接受来自客户端的连接和通知订阅请求,另一种是发布事件响应到客户端,如报警、程序执行结果等。

如图2所示,它描述了OPC UA安全模型。该模型是一个三层架构,应用层主要负责建立起客户端与服务器之间的会话,并管理用户的身份鉴别与授权请求。应用层的会话服务完成了工业控制过程中数据、设置、命令的传输,为了保证会话通信的安全,每一个会话都需建立在安全通道之上;安全通道用于保障客户端和服务器之间通信的安全,确保数据的保密性、完整性以及客户端和服务器的合法性;传输层位于最底层,主要通过利用Socket连接实现安全数据的传输和发送。由图2可知,OPC UA客户端与服务器之间的通信必须建立在安全通道之上,其实质是一个安全的逻辑连接。它保证了OPC UA客户端和服务器身份的合法性,同时也为会话通信提供了必要的密钥材料,确保会话层通信消息的完整性、机密性、可用性。为了保证安全通道建立顺利完成,本发明提出一种基于隐式证书的轻量级认证密钥协商实现方法用于安全通道的建立,其实现的前提初始条件包括一下几个,如图3所示:

(1)可信的证书颁发机构CA需先建立一套合适的椭圆曲线(ECC)域参数[q,a,b,G,n,h],其中,q为域尺寸,a和b为椭圆曲线系数,G为基点,n为基点G的阶数,h为余因子。

(2)可信的证书颁发机构CA确定使用散列函数的类型,本发明建议采用Whirlpool散列算法,该算法实现过程是进行消息分组,分组的长度为512位,填充同MD5,其中消息长度占最后256位,所以,Whirlpool有更高的计算速度和较低的碰撞率。

(3)可信的证书颁发机构CA、OPC UA客户端A和OPC UA服务器B选定伪随机位生成器,其生成的随机数取值范围是[1,...,n-1],其中n为基点G的阶数。

(4)可信的证书颁发机构CA根据椭圆曲线域参数生成自身的公私钥对(kCA,KCA),kCA是CA的私钥,KCA是CA的公钥。

进一步,当完成上述初始条件以后,OPC UA客户端A和OPC UA服务器B均需要在CA完成身份注册以获取各自的隐式证书,其注册过程如图4所示。证书的请求者既可以是OPC UA客户端A,也可以为OPC UA服务器B,其注册获取证书的过程可分为以下几个步骤:

Step1:OPC UA客户端A和OPC UA服务器B均可作为证书请求者。首先,证书请求者发送其身份信息ID至本地可信的证书颁发机构CA;其次,可信的证书颁发机构CA验证证书请求者的身份信息是否合法,如果证书请求者身份合法,则CA回应一条信息至证书请求者,其信息包含CA的身份标识IDCA和公钥KCA,以及一些加密套件,如散列函数、椭圆曲线域参数等。否则,直接终止通信。

Step2:当证书请求者收到来自CA的响应后,产生一个随机数K,并计算临时公钥R,R=KG,然后利用不带密钥的散列函数生成消息完整性码MIC(ID,R)。最后构造请求信息R||MIC(ID,R)发送至CA。

Step3:CA收到消息R||MIC(ID,R)后,首先利用相同的方式计算消息完整性码MIC(ID,R),如果消息完整性码验证不通过,则终止通信。反之,首先产生一个随机数NCA,其次计算隐式证书因子D=R+NCAG,并利用D构造隐式证书Cert=Encode[D,ID,Text],其中,Text为证书的一些基本信息,如证书的有效期限、版本号等。再次计算隐式证书哈希摘要值e=H(Cert)和签名s=eNCA+kCA(modn)。然后利用不带密钥的散列函数生成消息完整性码MIC[Cert,s,IDCA]。最终构造响应信息Cert||s||MIC(Cert,s,IDCA)发送至证书请求者。

Step4:当证书请求者收到证书来自CA的响应信息Cert||s||MIC(Cert,s,IDCA)后,首先利用相同的方式计算消息完整性码MIC[Cert,s,IDCA],如果消息完整性码验证不通过,则终止通信。反之,证书请求者可根据收到的隐式证书计算出自己的私钥y=eK+s(modn)和公钥Y=eD+KCA

进一步,当OPC UA客户端A和OPC UA服务器B均在CA完成注册以后,首先两者需在创建安全信道之前做一系列的准备工作,OPC UA客户端A必须通过发现服务(FindServers)机制才才可以与OPC UA服务器B建立通信,然后通过服务请求(GetEndpoints)获取OPC UA服务器B中用于建立安全通道和会话的安全配置信息,其中,这些安全配置信息主要包括OPC UA服务器的隐式证书、信息安全模型和安全策略等。当完成上述准备工作以后,OPC UA客户端A和OPC UA服务器B可以进行认证和密钥协商,如图5所示,其认证具体步骤如下:

Step1:首先OPC UA客户端A需要发送服务请求(GetEndpoints)至OPC UA服务器B,以获取OPC UA服务器B中用于建立安全通道和会话的安全配置信息。

Step2:当OPC UA服务器B收到服务请求(GetEndpoints)后,则通过服务响应(EndpointDescription)把安全配置信息发送至OPC UA客户端A。其中,这些安全配置信息主要包括OPC UA服务器B的隐式证书、信息安全模型和安全策略等。

Step3:OPC UA客户端A收到服务响应(EndpointDescription)后,产生一个随机数R1,并计算客户端临时公钥L,L=R1G,其中Q为OPC UA客户端A的公钥。然后利用带密钥的散列函数生成L的消息鉴别码MAC(L,Q)。然后把信息L||MAC(L,Q)发送到OPC UA服务器。

Step4:OPC UA服务器B收到信息L||MAC(L,Q)后,首先根据服务请求(GetEndpoints)获取的OPC UA客户端A隐式证书CertA重构出客户端公钥Q=eD+KCA,其中e为隐式证书CertA的哈希摘要值,e=H(CertA)。然后利用相同的方式计算客户端临时公钥L的消息鉴别码MAC(L,Q)1,将MAC(L,Q)和MAC(L,Q)1作比较,如果两者不相同,则终止通信。反之,OPC UA服务器B产生随机数R2,并利用带密钥的散列函数生成R2的消息鉴别码MAC(R2,M),其中,M为OPC UA服务器B的公钥,把R2||MAC(R2,M)发送到OPC UA客户端A。

Step5:OPC UA客户端A收到R2||MAC(R2,M)后,首先根据服务响应(EndpointDescription)获取的OPC UA服务器B隐式证书CertB重构出服务器公钥M=e1D1+KCA,其中e1为隐式证书CertB的哈希摘要值,e1=H(CertB)。然后利用相同的方式计算R2的消息鉴别码MAC(R2,M)1,将MAC(R2,M)1和MAC(R2,M)作比较,如果两者不相同,则终止通信。反之,计算V=R1+R2q,其中,q为OPC UA客户端A的私钥。随后产生一个新的随机数R4,并利用带密钥的散列函数生成消息鉴别码MAC(V,R4,Q),把V||R4||MAC(V,R4,Q)发送到OPC UA服务器B。

Step6:OPC UA服务器B收到V||R4||MAC(V,R4,Q)后,首先利用相同的方式计算消息鉴别码MAC(V,R4,Q)1,将MAC(V,R4,Q)和MAC(V,R4,Q)1作比较,如果两者不相同,则终止通信。反之,计算VG和R2Q+L,并判断两者是否相等。如果不相等,则OPC UA服务器B对OPC UA客户端A的身份认证不通过,直接终止通信。反之,OPC UA服务器B产生一个新的随机数R3,并计算服务器临时公钥L1,L1=R3G和V1=R3+R4m,其中,m为OPC UA服务器B的私钥,并利用带密钥的散列函数生成消息鉴别码MAC(V1,L1,M),把V1||L1||MAC(V1,L1,M)发送到OPC UA客户端A。

Step7:OPC UA客户端A收到V1||L1||MAC(V1,L1,M)后,首先利用相同的方式计算消息鉴别码MAC(V1,L1,M)1,将MAC(V1,L1,M)和MAC(V1,L1,M)1作比较,如果两者不相同,则终止通信。反之,OPC UA客户端A计算V1G和R4M+L1,并判断两者是否相等。如果不相等,则OPC UA客户端A对OPC UA服务器B的身份认证不通过,直接终止通信。反之,OPC UA客户端A和服务器B完成了双向的身份认证,这保证了通信双方身份的合法性。

Step8:OPC UA客户端A和OPC UA服务器B完成双向认证后,双方可利用之前获取到对方公钥,通过ECDH密钥协商机制衍生出对称密钥,为会话通信提供必要的密钥材料,其衍生出的对称密钥为aM=bQ。

当完成上述步骤以后,OPC UA客户端A和服务器B之间可利用对称密钥aB=bA进行信息的传输。

以上只是对本发明的优选实施例进行了描述。对该技术领域的技术人员来说,根据以上实施方式可以很容易地对本发明作各种改动或修改。因此,本发明并不局限于上述实施方式,其仅仅作为例子对本发明的一种形态进行详细、示范性的说明。在不背离本发明宗旨的范围内,本领域的技术人员在本发明技术方案范围内进行的等效变化和修饰同样落入本发明方法权利要求所限定的范围。

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