电子设备接口间基于公钥证书的认证密钥协商和更新方法转让专利

申请号 : CN200510124342.5

文献号 : CN1832397B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田海博詹阳王育民帅红宇葛建华袁素春姜正涛谭示崇范欣欣

申请人 : 四川长虹电器股份有限公司

摘要 :

本发明涉及一种电子设备接口间基于公钥的认证密钥协商和更新方法。参与认证密钥协商的源设备和目的设备根据各自接口的配置信息,选择单向或者双向认证方式来完成认证和密钥协商或更新。其中的单向认证方式或者双向认证方式通过使用Diffie-Hellman密钥交换技术来生成共享秘密;通过HMAC密钥杂凑函数保证所生成的共享秘密的一致性和协议消息的完整性;在完全认证的情况下,通过使用签名技术来保证证书的发送者确实持有与证书中公钥相对应的私钥,从而确定设备的合法性;在重新认证的情况下,通过使用持有共享密钥这一事实来确认设备的合法性。利用本发明的方法,可以使数字内容在两个合法的消费电子设备之间传播,并且能够使数字内容得到有效的保护。

权利要求 :

1.一种用于电子设备接口间基于公钥的认证密钥协商和更新方法,其特征在于,参与认证密钥协商的源设备和目的设备根据各自接口的配置信息,选择单向认证方式或者双向认证方式,通过使用Diffie-Hellman密钥交换技术生成共享秘钥;通过HMAC密钥杂凑函数保证所生成的共享秘钥的一致性和消息的完整性;

所述单向认证和双向认证方式分别包括完全认证和重新认证;在完全认证的情况下,在源设备和目的设备不具有共享密钥K_M的情况下,通过使用签名技术来保证证书的发送者确实持有与证书中公钥相对应的私钥,从而确定设备的合法性;在重新认证的情况下,通过通信双方持有共享密钥这一事实来确认设备的合法性;

其中,

双向完全认证方式是在作为通信双方的源设备和目的设备具有证书列表的情况下,确认被认证方确实具有其发送证书的私钥,从而确定被认证方的身份;在确认被认证方身份的同时,通信双方通过交换的随机数生成一个通信双方独享的共享秘钥,并能确认该共享秘钥的一致性和秘密性。

2.如权利要求1所述的方法,在源设备和目的设备之间采用双向完全认证进行认证和密钥协商时,该认证方式通过以下步骤在椭圆曲线(Fq,E,G,n)上实现,其中Fq是特征为q的有限域,E是Fq上的椭圆曲线,G为E上的基点,n为G的阶:a)源设备计算随机数1<x<n,计算标量乘xG,发送源设备证书列表和该标量乘:Cert_Source_list||xG;

b)目的设备验证源设备证书是否被吊销,验证源设备证书列表中证书各个域的内容;计算随机数1<y<n,计算标量乘yG,使用HMAC密钥杂凑函数Hash,以xyG低位的|q|比特[xyG]lsb|q|为密钥对源设备的证书唯一标志ID_Source进行杂凑,使用目的设备的私钥对该杂凑值使用签名算法E_S进行签名,发送以下内容给源设备:Cert_Des_list||yG||E_S{Hash([xyG]lsb|q|,ID_Source)};其中,Cert_Des_list是目的设备证书列表,yG是标量乘,[xyG]lsb|q|为xyG低位的|q|比特,ID_Source为源设备的证书唯一标志,Hash()表示使用HMAC进行杂凑生成杂凑值,E_S{}表示使用签名算法进行签名,且签名中需用到目的设备的私钥;

c)源设备验证目的设备证书是否被吊销,验证目的设备证书列表中证书各个域的内容,计算共享秘钥xyG,计算杂凑值Hash([xyG]lsb|q|,ID_Source),验证接收的目的设备签名;使用HMAC密钥杂凑函数Hash,以xyG高位的|q|比特[xyG]msb|q|为密钥对目的设备的证书唯一标志ID_Des进行杂凑,使用源设备的私钥对该杂凑值使用签名算法E_S进行签名,确认目的设备证书没有被吊销,发送以下内容给目的设备:E_S{Hash([xyG]msb|q|,ID_Des)}

之后,源设备使用HMAC密钥杂凑函数Hash以xyG为密钥,对ID_Source||xG||ID_Des||yG进行杂凑,其结果作为双方的共享密钥K_M,存储数据对

d)目的设备计算杂凑值Hash([xyG]msb|q|,ID_Des),验证接收的源设备签名;确认源设备证书没有被吊销,使用HMAC密钥杂凑函数Hash,以xyG为密钥,对ID_Source||xG||ID_Des||yG进行杂凑,其结果作为双方的共享密钥K_M,存储数据对

3.一种用于电子设备接口间基于公钥的认证密钥协商和更新方法,其特征在于,参与认证密钥协商的源设备和目的设备根据各自接口的配置信息,选择单向认证方式或者双向认证方式,通过使用Diffie-Hellman密钥交换技术生成共享秘钥;通过HMAC密钥杂凑函数保证所生成的共享秘钥的一致性和消息的完整性;

单向认证和双向认证方式分别包括完全认证和重新认证,在完全认证的情况下,在源设备和目的设备不具有共享密钥K_M的情况下,通过使用签名技术来保证证书的发送者确实持有与证书中公钥相对应的私钥,从而确定设备的合法性;在重新认证的情况下,通过通信双方持有共享密钥这一事实来确认设备的合法性;

其中,

双向重新认证方式是在作为通信双方的源设备和目的设备具有共享密钥K_M的情况下,确认双方确实拥有相同的共享密钥,核实通信双方的身份;同时,双方通过交换的随机数和共享秘钥生成新的共享密钥,完成密钥更新。

4.如上述权利要求3所述的方法,在源设备和目的设备之间使用双向重新认证方式进行认证和密钥更新时,具有以下步骤:a)源设备读取源设备证书中的证书唯一标志ID_Source,计算随机数Rand_Source,发送源设备的证书唯一标志和该随机数:ID_Source||Rand_Source;

b)目的设备验证接收的ID_Source和本地存储的ID_Source是否一致;若一致,则读取目的设备证书中的证书唯一标志ID_Des,计算随机数Rand_Des,使用HMAC密钥杂凑函数Hash,以共享密钥K_M的高|K_M|/2位比特为密钥对ID_Source||Rand_Source||ID_Des||Rand_Des进行杂凑,获得杂凑值Des_HashValue,发送目的设备的证书唯一标志、随机数和杂凑值:ID_Des||Rand_Des||Des_HashValue;

c)源设备验证接收的ID_Des和本地存储的ID_Des是否一致,若一致,则验证接收的杂凑值Des_HashValue;使用HMAC密钥杂凑函数Hash,以共享密钥K_M的低|K_M|/2位比特为密钥,对ID_Des||Rand_Des进行杂凑,获得杂凑值Source_HashValue值,发送该杂凑值给目的设备;之后使用Hash以当前共享密钥K_M为密钥,对Rand_Des||Rand_Source进行杂凑,获得新的共享密钥:K_M=Hash(K_M,Rand_Des||Rand_Source);

d)目的设备验证接收的杂凑值Source_HashValue,验证通过则使用Hash,以当前共享密钥K_M为密钥,对Rand_Des||Rand_Source进行杂凑,获得新的共享密钥:K_M=Hash(K_M,Rand_Des||Rand_Source)。

5.一种用于电子设备接口间基于公钥的认证密钥协商和更新方法,其特征在于,参与认证密钥协商的源设备和目的设备根据各自接口的配置信息,选择单向认证方式或者双向认证方式,通过使用Diffie-Hellman密钥交换技术生成共享秘钥;通过HMAC密钥杂凑函数保证所生成的共享秘钥的一致性和消息的完整性;

所述的单向认证和双向认证方式分别包括完全认证和重新认证,在完全认证的情况下,在源设备和目的设备不具有共享密钥K_M的情况下,通过使用签名技术来保证证书的发送者确实持有与证书中公钥相对应的私钥,从而确定设备的合法性;在重新认证的情况下,通过通信双方持有共享密钥这一事实来确认设备的合法性;其中,单向完全认证方式是在被认证方具有证书列表的情况下,确认被认证方确实具有其发送证书的私钥,从而确定被认证方的身份;在确认被认证方身份的同时,通信双方通过交换的随机数生成双方独享的共享秘钥,并能由认证方确认该共享密钥的一致性。

6.如权利要求5所述的方法,在源设备和目的设备之间使用单向完全认证方式进行认证和密钥协商时,通过以下步骤在椭圆曲线(Fq,E,G,n)上实现,其中Fq是特征为q的有限域,E是Fq上的椭圆曲线,G为E上的基点,n为G的阶:a)源设备计算随机数1<x<n,计算标量乘xG,发送源设备的证书唯一标志和标量乘:

ID_Source||xG;

b)目的设备计算随机数1<y<n,计算标量乘yG,计算共享秘钥xyG,使用HMAC密钥杂凑函数Hash,以xyG低位的|q|比特[xyG]lsb|q|为密钥,对源设备的证书唯一标志ID_Source进行杂凑,使用目的设备的私钥对该杂凑值使用签名算法E_S签名,发送以下内容给源设备:Cert_Des_list||yG||E_S{Hash([xyG]lsb|q|,ID_Source)};其中,Cert_Des_list是目的设备证书列表,yG是标量乘,[xyG]lsb|q|为xyG低位的|q|比特,ID_Source为源设备的证书唯一标志,Hash()表示使用HMAC进行杂凑生成杂凑值,E_S{}表示使用签名算法进行签名,且签名中需用到目的设备的私钥;

使用Hash函数以xyG为密钥对ID_Source||xG||ID_Des||yG进行杂凑,其结果作为双方的共享密钥K_M,存储数据对;其中xG是标量乘,ID_Des是目的设备的证书唯一标志;

c)源设备验证目的设备证书是否被吊销,验证目的设备证书列表中证书各个域的内容,计算共享秘钥xyG,验证接收的目的设备签名的正确性;使用HMAC密钥杂凑函数Hash,以xyG为密钥,对ID_Source||xG||ID_Des||yG进行杂凑,其结果作为双方的共享密钥K_M,确认目的设备证书没有被吊销,存储数据对

7.一种用于电子设备接口间基于公钥的认证密钥协商和更新方法,其特征在于,参与认证密钥协商的源设备和目的设备根据各自接口的配置信息,选择单向认证方式或者双向认证方式,通过使用Diffie-Hellman密钥交换技术生成共享秘钥;通过HMAC密钥杂凑函数保证所生成的共享秘钥的一致性和消息的完整性;

所述的单向认证和双向认证方式分别包括完全认证和重新认证,在完全认证的情况下,在源设备和目的设备不具有共享密钥K_M的情况下,通过使用签名技术来保证证书的发送者确实持有与证书中公钥相对应的私钥,从而确定设备的合法性;在重新认证的情况下,通过通信双方持有共享密钥这一事实来确认设备的合法性;其中,单向重新认证方式是在作为通信双方的源设备和目的设备具有共享密钥K_M的情况下,由认证方确认被认证方确实拥有与认证方相同的共享秘钥;在确认共享秘钥的一致性之后,通信双方通过认证方所发送的随机数来更新双方的共享密钥,完成密钥更新;被认证方身份的确认通过认证方身份与共享密钥的绑定完成。

8.如上述权利要求7所述的方法,在源设备和目的设备之间采用单向重新认证方式进行认证和密钥更新时,具有以下步骤:a)源设备计算随机数Rand_Source,发送源设备的证书唯一标志和该随机数:

ID_Source||Rand_Source;

b)目的设备验证接收的ID_Source和本地存储的ID_Source是否一致;若一致,使用HMAC密钥杂凑函数Hash以共享密钥K_M的低|K_M|/2位比特为密钥,对ID_Source||Rand_Source进行杂凑,获得杂凑值Uni_Des_HashValue值,发送目的设备的证书唯一标志ID_Des和杂凑值:ID_Des||Uni_Des_HashValue;

使用Hash,以K_M为密钥,对Rand_Source进行杂凑,获得新的共享密钥K_M;

c)源设备验证接收的ID_Des和本地存储的ID_Des是否一致,若一致,则验证杂凑值Uni_Des_HashValue;使用HMAC密钥杂凑函数Hash以K_M为密钥,对Rand_Source进行杂凑,获得新的共享密钥K_M。

说明书 :

技术领域

本发明涉及保密或安全通信的密钥交换方法,尤其涉及一种基于公钥证书的认证密钥协商方法和对认证密钥的更新方法。

背景技术

影音娱乐内容的数字化使得家庭用户可以无失真地观看、存储和传播数字内容。拷贝的次数不影响数字内容的质量,互联网技术和点对点技术又使得数字内容的广泛传播成为可能。这种无失真拷贝特性和广泛传播的便利性对于数字影音娱乐内容的版权所有者是一种威胁。
为了保护版权所有者的利益,用于解码、存储、显示数字影音内容的消费电子设备应该本身具有版权保护的功能,即能够根据数字影音内容的版权保护信息来执行对应的操作,即这些设备会有一个模块专门处理版权保护信息,这个模块根据版权保护信息来执行操作,比如说版权信息显示某个电影不能被拷贝,那么在设备接收到拷贝请求后,这个设备就会拒绝这个请求,这样的设备统称为合法设备。家庭用户中的消费电子设备不一定都是合法设备,为了保证数字影音内容只在合法设备间传输,需要在内容传输之前通过认证密钥协商协议对设备的合法性进行认证,生成共享密钥。这样,使得影音内容在合法设备之间传输,从而得到保护。
数字影音内容在接口间传输时,很容易被非法设备截获。如果截获的数字影音内容是可以被直接识别的,那么这些内容同样威胁到版权所有者的利益。为了防止这一点,通常使用加密技术,在接口间传输加密后的数据,这些数据即使在截获以后,也很难识别出原来的影音内容。现代加密技术的安全性几乎完全依赖于密钥的安全,用于加密的密钥通常由认证过程产生的认证密钥获得,而用于具体保护影音内容的加密算法的安全性取决于这些算法的密钥的安全性。
合法设备之间的连接需要符合一定的接口规范。常见的接口有HDMI、DVI接口,IEEE1394接口,POD-Host接口等。其中HDMI和DVI是连接显示终端和数字内容源的接口技术。IEEE1394是一种高速的串行总线接口技术,广泛用于影音内容传输。POD-Host接口是用于有线网络的一种辅助接口,解码后的有线网络数字内容通过该接口传输到主机设备中,主机设备包括机顶盒或数字电视等。
针对上述三种接口,国外已经相应制定了HDCP(宽带数字内容保护),DTCP(数字传输内容保护),PODCP(POD拷贝保护)规范或标准。HDCP用于保护HDMI和DVI接口传输的数字内容。DTCP用于保护IEEE1394,USB等串行接口传输的数字内容。PODCP用于保护POD接口的内容传输。
HDCP系统的认证和密钥交换分为三个阶段。第一个阶段由源设备(内容发送设备)通过检验目的设备(内容接收设备)生成的共享秘密来认证目的设备。第二个阶段用于源设备收集和检查目的设备的拓扑信息。第三个阶段用于链路状态检查和密钥更新。该系统使用了一种简单的基于身份的方法,被证实不安全。攻击者只需要大约40台装有HDCP系统的设备,就可以得到一些系统参数,进而在没有授权的情况下可以任意制造非法设备。这些非法设备不能被合法设备检验出来。
DTCP系统的认证和密钥交换有两个级别,完全认证和受限认证。受限认证是一种安全级别较低的认证方式,不允许用于“永远不许拷贝”的数字内容。在技术上,这种认证方式和HDCP系统类似,只是增加了一个可选的证书验证过程,因而对HDCP系统的攻击,对于DTCP系统同样适用。只是因为DTCP系统安全参数的不同,攻击所需要的设备数量不同。完全认证被认为是一种安全级别较高的认证方式,适用于各种数字内容。在技术上,完全认证是基于公钥证书基础设施的一种认证方式,使用了签名技术和Diffie-Hellman密钥(DH密钥)交换技术。DTCP白皮书中宣称签名技术和密钥交换技术的结合可以抵抗“中间人攻击”的威胁。然而我们分析表明,DTCP协议并不能完全抵抗“中间人攻击”。典型的攻击方法包括反射攻击,Lowe攻击,Wiener攻击等。这些攻击都可以使完全认证的认证性失效。Lowe攻击可以导致发送者失配或者接收者失配。其中发送者失配是指接收设备认为数字内容来自于设备A,而其实来自于设备B;接收者失配是指发送设备以为数字内容发送给了设备A,而其实是给了设备B。接收者失配会威胁到系统的完整性,发送者失配则会威胁到DTCP在身份信息重要的一些领域的应用。
PODCP系统的认证和密钥交换也是基于公钥证书基础设施,完成POD对主机的认证。其认证和密钥交换主要由两个部分组成,分别是重新认证和认证。重新认证是在POD和主机存储有共享秘密的情况下,确认共享秘密的一致性。在技术上PODCP只是规定主机将共享秘密的一小部分作为认证密钥发送给POD,POD确认该认证密钥。这种方式显然过于简单,不能抵抗最简单的重放攻击,因而并没有达到认证性。其安全性仅来自于非法设备通过认证后不能解密数字内容。POD和主机的认证意在完成POD对主机的认证,并建立共享的秘密。其安全性来自于对证书和消息签名的验证。然而该认证协议的消息可以重放,这使得某台合法主机临时DH密钥的泄漏会导致非法设备利用该泄漏的密钥和该主机发送的签名消息冒充该合法主机,接收数字影音内容。另外,PODCP认证协议包括POD给主机的一些认证信息,这些信息无助于POD对主机的认证。
由上述可知,现有技术中已公布的接口保护规范中的认证和认证密钥协商协议并不完善,还存在着诸多问题。另外,当一台消费电子设备具有多个接口时,需要实现多个认证模块,浪费系统资源。

发明内容

本发明的目的在于提供一种适用于电子设备接口间基于公钥证书的认证密钥协商和更新的方法。
为实现上述目的,本发明提供一种用于电子设备接口间基于公钥的认证密钥协商和更新方法,参与认证密钥协商的源设备和目的设备根据各自接口的配置信息,选择单向认证方式或者双向认证方式,通过使用Diffie-Hellman密钥交换技术生成共享秘钥;通过HMAC密钥杂凑函数保证所生成的共享秘钥的一致性和消息的完整性;所述单向认证和双向认证方式分别包括完全认证和重新认证;在完全认证的情况下,在源设备和目的设备不具有共享密钥K_M的情况下,通过使用签名技术来保证证书的发送者确实持有与证书中公钥相对应的私钥,从而确定设备的合法性;在重新认证的情况下,通过通信双方持有共享密钥这一事实来确认设备的合法性;其中,双向完全认证方式是在作为通信双方的源设备和目的设备具有证书列表的情况下,确认被认证方确实具有其发送证书的私钥,从而确定被认证方的身份;在确认被认证方身份的同时,通信双方通过交换的随机数生成一个通信双方独享的共享秘钥,并能确认该共享秘钥的一致性和秘密性。
上述方法中,在源设备和目的设备之间采用双向完全认证进行认证和密钥协商时,该认证方式通过以下步骤在椭圆曲线(Fq,E,G,n)上实现,其中Fq是特征为q的有限域,E是Fq上的椭圆曲线,G为E上的基点,n为G的阶:源设备计算随机数1<x<n,计算标量乘xG,发送源设备证书列表和该标量乘:Cert_Source_list||xG;目的设备验证源设备证书是否被吊销,验证源设备证书列表中证书各个域的内容;计算随机数1<y<n,计算标量乘yG,使用HMAC密钥杂凑函数Hash,以xyG低位的|q|比特[xyG]lsb|q|为密钥对源设备的证书唯一标志ID_Source进行杂凑,使用目的设备的私钥对该杂凑值使用签名算法E_S进行签名,发送以下内容给源设备:Cert_Des_list||yG||E_S{Hash([xyG]lsb|q|,ID_Source)};其中,Cert_Des_list是目的设备证书列表,yG是标量乘,[xyG]lsb|q|为xyG低位的|q|比特,ID_Source为源设备的证书唯一标志,Hash()表示使用HMAC进行杂凑生成杂凑值,E_S{}表示使用签名算法进行签名,且签名中需用到目的设备的私钥;源设备验证目的设备证书是否被吊销,验证目的设备证书列表中证书各个域的内容,计算共享秘钥xyG,计算杂凑值Hash([xyG]lsb|q|,ID_Source),验证接收的目的设备签名;使用HMAC密钥杂凑函数Hash,以xyG高位的|q|比特[xyG]msb|q|为密钥对目的设备的证书唯一标志ID_Des进行杂凑,使用源设备的私钥对该杂凑值使用签名算法E_S进行签名,确认目的设备证书没有被吊销,发送以下内容给目的设备:E_S{Hash([xyG]msb|q|,ID_Des)};之后,源设备使用HMAC密钥杂凑函数Hash以xyG为密钥,对ID_Source||xG||ID_Des||yG进行杂凑,其结果作为双方的共享密钥K_M,存储数据对;d)目的设备计算杂凑值Hash([xyG]msb|q|,ID_Des),验证接收的源设备签名;确认源设备证书没有被吊销,使用HMAC密钥杂凑函数Hash,以xyG为密钥,对ID_Source||xG||ID_Des||yG进行杂凑,其结果作为双方的共享密钥K_M,存储数据对
一种用于电子设备接口间基于公钥的认证密钥协商和更新方法,参与认证密钥协商的源设备和目的设备根据各自接口的配置信息,选择单向认证方式或者双向认证方式,通过使用Diffie-Hellman密钥交换技术生成共享秘钥;通过HMAC密钥杂凑函数保证所生成的共享秘钥的一致性和消息的完整性;单向认证和双向认证方式分别包括完全认证和重新认证,在完全认证的情况下,在源设备和目的设备不具有共享密钥K_M的情况下,通过使用签名技术来保证证书的发送者确实持有与证书中公钥相对应的私钥,从而确定设备的合法性;在重新认证的情况下,通过通信双方持有共享密钥这一事实来确认设备的合法性;其中,双向重新认证方式是在作为通信双方的源设备和目的设备具有共享密钥K_M的情况下,确认双方确实拥有相同的共享密钥,核实通信双方的身份;同时,双方通过交换的随机数和共享秘钥生成新的共享密钥,完成密钥更新。
上述方法中,在源设备和目的设备之间使用双向重新认证方式进行认证和密钥更新时,具有以下步骤:a)源设备读取源设备证书中的证书唯一标志ID_Source,计算随机数Rand_Source,发送源设备的证书唯一标志和该随机数:ID_Source||Rand_Source;b)目的设备验证接收的ID_Source和本地存储的ID_Source是否一致;若一致,则读取目的设备证书中的证书唯一标志ID_Des,计算随机数Rand_Des,使用HMAC密钥杂凑函数Hash,以共享密钥K_M的高|K_M|/2位比特为密钥对ID_Source||Rand_Source||ID_Des||Rand_Des进行杂凑,获得杂凑值Des_HashValue,发送目的设备的证书唯一标志、随机数和杂凑值:ID_Des||Rand_Des||Des_HashValue;c)源设备验证接收的ID_Des和本地存储的ID_Des是否一致,若一致,则验证接收的杂凑值Des_HashValue;使用HMAC密钥杂凑函数Hash,以共享密钥K_M的低|K_M|/2位比特为密钥,对ID_Des||Rand_Des进行杂凑,获得杂凑值Source_HashValue值,发送该杂凑值给目的设备;之后使用Hash以当前共享密钥K_M为密钥,对Rand_Des||Rand_Source进行杂凑,获得新的共享密钥:K_M=Hash(K_M,Rand_Des||Rand_Source);d)目的设备验证接收的杂凑值Source_HashValue,验证通过则使用Hash,以当前共享密钥K_M为密钥,对Rand_Des||Rand_Source进行杂凑,获得新的共享密钥:K_M=Hash(K_M,Rand_Des||Rand_Source)。
一种用于电子设备接口间基于公钥的认证密钥协商和更新方法,参与认证密钥协商的源设备和目的设备根据各自接口的配置信息,选择单向认证方式或者双向认证方式,通过使用Diffie-Hellman密钥交换技术生成共享秘钥;通过HMAC密钥杂凑函数保证所生成的共享秘钥的一致性和消息的完整性;所述的单向认证和双向认证方式分别包括完全认证和重新认证,在完全认证的情况下,在源设备和目的设备不具有共享密钥K_M的情况下,通过使用签名技术来保证证书的发送者确实持有与证书中公钥相对应的私钥,从而确定设备的合法性;在重新认证的情况下,通过通信双方持有共享密钥这一事实来确认设备的合法性;其中,单向完全认证方式是在被认证方具有证书列表的情况下,确认被认证方确实具有其发送证书的私钥,从而确定被认证方的身份;在确认被认证方身份的同时,通信双方通过交换的随机数生成双方独享的共享秘钥,并能由认证方确认该共享密钥的一致性。
上述方法中,在源设备和目的设备之间使用单向完全认证方式进行认证和密钥协商时,通过以下步骤在椭圆曲线(Fq,E,G,n)上实现,其中Fq是特征为q的有限域,E是Fq上的椭圆曲线,G为E上的基点,n为G的阶:a)源设备计算随机数1<x<n,计算标量乘xG,发送源设备的证书唯一标志和标量乘:ID_Source||xG;b)目的设备计算随机数1<y<n,计算标量乘yG,计算共享秘钥xyG,使用HMAC密钥杂凑函数Hash,以xyG低位的|q|比特[xyG]lsb|q|为密钥,对源设备的证书唯一标志ID_Source进行杂凑,使用目的设备的私钥对该杂凑值使用签名算法E_S签名,发送以下内容给源设备:Cert_Des_list||yG||E_S{Hash([xyG]lsb|q|,ID_Source)};其中,Cert_Des_list是目的设备证书列表,yG是标量乘,[xyG]lsb|q|为xyG低位的|q|比特,ID_Source为源设备的证书唯一标志,Hash()表示使用HMAC进行杂凑生成杂凑值,E_S{}表示使用签名算法进行签名,且签名中需用到目的设备的私钥;使用Hash函数以xyG为密钥对ID_Source||xG||ID_Des||yG进行杂凑,其结果作为双方的共享密钥K_M,存储数据对;其中xG是标量乘,ID_Des是目的设备的证书唯一标志;c)源设备验证目的设备证书是否被吊销,验证目的设备证书列表中证书各个域的内容,计算共享秘钥xyG,验证接收的目的设备签名的正确性;使用HMAC密钥杂凑函数Hash,以xyG为密钥,对ID_Source||xG||ID_Des||yG进行杂凑,其结果作为双方的共享密钥K_M,确认目的设备证书没有被吊销,存储数据对
一种用于电子设备接口间基于公钥的认证密钥协商和更新方法,参与认证密钥协商的源设备和目的设备根据各自接口的配置信息,选择单向认证方式或者双向认证方式,通过使用Diffie-Hellman密钥交换技术生成共享秘钥;通过HMAC密钥杂凑函数保证所生成的共享秘钥的一致性和消息的完整性;所述的单向认证和双向认证方式分别包括完全认证和重新认证,在完全认证的情况下,在源设备和目的设备不具有共享密钥K_M的情况下,通过使用签名技术来保证证书的发送者确实持有与证书中公钥相对应的私钥,从而确定设备的合法性;在重新认证的情况下,通过通信双方持有共享密钥这一事实来确认设备的合法性;其中,单向重新认证方式是在作为通信双方的源设备和目的设备具有共享密钥K_M的情况下,由认证方确认被认证方确实拥有与认证方相同的共享秘钥;在确认共享秘钥的一致性之后,通信双方通过认证方所发送的随机数来更新双方的共享密钥,完成密钥更新;被认证方身份的确认通过认证方身份与共享密钥的绑定完成。
上述方法中,在源设备和目的设备之间采用单向重新认证方式进行认证和密钥更新时,具有以下步骤:a)源设备计算随机数Rand_Source,发送源设备的证书唯一标志和该随机数:ID_Source||Rand_Source;b)目的设备验证接收的ID_Source和本地存储的ID_Source是否一致;若一致,使用HMC密钥杂凑函数Hash以共享密钥K_M的低|K_M|/2位比特为密钥,对ID_Source||Rand_Source进行杂凑,获得杂凑值Uni_Des_HashValue值,发送目的设备的证书唯一标志ID_Des和杂凑值:ID_Des||Uni_Des_HashValue;使用Hash,以K_M为密钥,对Rand_Source进行杂凑,获得新的共享密钥K_M;c)源设备验证接收的ID_Des和本地存储的ID_Des是否一致,若一致,则验证杂凑值Uni_Des_HashValue;使用HMAC密钥杂凑函数Hash以K_M为密钥,对Rand_Source进行杂凑,获得新的共享密钥K_M。
利用本发明的方法,可以使数字内容在两个合法的消费电子设备之间传播,并且能够使数字内容得到有效的保护。

附图说明

图1表示根据本发明的双向完全认证消息交换流程图;
图2表示根据本发明的双向重新认证消息交换流程图;
图3表示根据本发明的单向完全认证消息交换流程图;
图4表示根据本发明的单向重新认证消息交换流程图。

具体实施方式

当数字内容在两个消费电子设备之间传播时,为了保证数字内容是在两个合法的消费电子设备之间传播,并且能够使被传播的数字内容得到有效的保护而不易被拦截或窃取,两个消费电子设备各接口需要根据其各自的配置选择适当的认证密钥协商方式进行身份认证和密钥协商。
在本发明中,所述的认证密钥协商方式包括单向认证方式和双向认证方式。所述单向认证方式包括单向完全认证方式以及单向重新认证方式;所述双向认证方式包括双向完全认证方式以及双向重新认证方式。
这里,将参与认证密钥协商方式运行的两个设备分别称为源设备和目的设备。源设备和目的设备根据双方接口的配置选择执行一种认证方式:
1)接口类型为POD或者HDMI,DVI,执行单向认证密钥协商和密钥更新。
2)接口类型为IEEE1394,USB,源设备和目的设备均支持双向认证,则执行双向认证密钥协商和更新。
3)接口类型为IEEE1394,USB,目的设备仅支持单向认证,源设备配置的策略中允许执行单向认证,则执行单向认证密钥协商和更新。
4)其它接口类型,根据源设备的配置策略,支持的认证方案,目的设备支持的认证方案决定执行的认证方案类型。
一般情形下,源设备在选择执行单向或双向认证方式后,如果本地没有存储以前的共享密钥,则执行单向或双向完全认证方式;如果本地存储着以前的共享密钥,则执行单向或双向重新认证方式。
在本发明所提及的四种认证密钥协商方式中使用如下内容:
1)参与认证密钥协商方式运行的源设备和目的设备分别在本地存储证书列表Cert_Source_list和Cert_Des_list,这些证书列表中所包含的证书的数量由应用环境的信任模型决定。Cert_Source_list至少包括源设备证书Cert_Source,Cert_Des_list则至少包括目的设备证书Cert_Des。所使用的设备证书的证书格式可以遵照CCITT X.509规定的格式或者某种通用于多个接口的证书格式,至少要包含“证书持有者唯一标志”,“公钥信息”,“证书签发者标志”,“证书签名算法信息”,“证书签名”等内容。认证密钥协商方式中将使用的证书信息包括源设备证书的“证书持有者标志”ID_Source和目的设备证书的“证书持有者唯一标志”ID_Des,其它与证书相关的操作以文字形式叙述。
2)认证密钥协商方式需要关于椭圆曲线的一组参数,设为(Fq,E,G,n),其中Fq为特征为q的有限域,E是Fq上的椭圆曲线,G为E上的基点,n为G的阶。
3)认证密钥协商方式中的签名算法E_S{}表示使用设备的唯一私钥来对{}中的内容签名。签名算法可以是任何一种具体算法,只要该算法满足适应性选择消息攻击安全。该方式中的HMAC密钥杂凑函数Hash(key,content)表示使用密钥key来计算content的杂凑值。同样Hash可以是任何一种具体算法,只要该算法具有混合变换、抗碰撞攻击、抗原像攻击这样三个性质属性。
4)认证密钥协商方式中使用符号|x|来表示数据x的长度,即该数据转化为二进制表示时所使用的二进制符号的数目,例如|2192|=192;使用符号[x]lsby来表示取数据x从最低位(0比特位)到y-1比特位的y比特数据;使用符号[x]msby来表示取数据x从y比特位到最高位的(|x|-y)比特数据。
本发明的电子设备接口间基于公钥证书的认证密钥协商和更新方法通过使用Diffie-Hellman密钥交换技术来生成共享秘密;通过HMAC算法保证所生成的共享秘密的一致性和消息的完整性;在完全认证的情况下,通过使用签名技术来保证证书的发送者确实持有与证书中公钥相对应的私钥,从而确定设备的合法性;在重新认证的情况下,通过使用持有共享密钥这一事实来确认设备的合法性。这里,假设椭圆曲线上判定性Diffie-Hellman问题是困难问题,假设所用的签名算法在适应性选择消息攻击下是安全的,假设所用的HMAC算法具有混合变换、抗碰撞攻击、抗原像攻击这样三个性质。在上述假定条件下,可以证明本发明的认证密钥协商和更新方法在秘密性和认证性方面是安全的。
源设备和目的设备根据其接口的配置确定一种认证密钥协商方式后,则按照该选定的认证密钥协商方式的内容进行身份认证和密钥交换。
下面分别描述本发明的四种认证密钥协商方式。源设备选择执行双向认证方式后,如果本地没有存储以前的共享密钥,则执行双向完全认证方式。
(一)双向完全认证
当源设备和目的设备之间采用双向完全认证方式时,通过以下步骤在椭圆曲线(Fq,E,G,n)上实现,其中Fq为特征为q的有限域,E是Fq上的椭圆曲线,G为E上的基点,n为G的阶。
如图1所示,双向完全认证方式包括如下步骤:
1.源设备主程序调用双向完全认证子程序来发送双向完全认证第一条消息。该子程序读取源设备证书列表Cert_Source_list,计算随机数1<x<n,计算标量乘xG,发送消息,即源设备证书列表和标量乘xG:
Cert_Source_list||xG
在实际应用中,上述消息需要封装之后再发送。对该消息单元的封装应指明该消息所属的认证类型(双向完全认证0x01),如果源设备和目的设备之间可以存在多个会话同时运行,则封装信息还包括会话序列号。
2.目的设备主程序把双向完全认证第一条消息转交给该设备的双向完全认证子程序处理。该协议子程序要完成以下操作:
a)通过目的设备的证书有效性查询资源来验证源设备证书Cert_Source是否被吊销。如果目的设备不存在证书有效性查询资源,则发送通知消息给源设备指示目的设备能力不足,终止执行该双向完全方式。
在实际应用中,各接口为该通知消息分配特定的序列号(例如0x01表示不存在证书有效性查询的资源),并按照各接口通知消息的形式封装并发送该序列号,封装的信息应该足以表明出现错误的会话序列,例如包括特定会话的部分DH公钥信息,或者包括特定会话的会话序列号,或者源设备和目的设备之间不存在多重会话。
b)鉴于证书有效性验证有可能耗时较长,因此该子程序需要与证书有效性验证并行执行以下操作:
i.验证源设备证书列表中证书各个域的信息,具体验证内容由证书系统的规范决定。验证失败则向源设备发送通知消息,报告证书验证失败,终止执行该方式。
ii.计算随机数y,计算标量乘yG,计算共享秘密xyG,使用HMAC密钥杂凑函数Hash,计算Hash([xyG]lsb|q|,ID_Source),使用目的设备的私钥对所计算的杂凑值使用签名算法E_S{}签名,读取目的设备证书列表Cert_Des_list,发送消息给源设备:
Cert_Des_list||yG||E_S{Hash([xyG]lsb|q|,ID_Source)}
在实际应用中,封装上述消息,然后再发送。封装该协议消息时要明确消息所属的会话序列和认证类型。
3.源设备主程序负责把双向完全认证第二条消息转交给该设备的完全双向认证子程序来处理,把目的设备发送的通知消息转交给通知消息处理子程序执行。
源设备的通知消息处理子程序对于目的设备发送的“不存在有效性查询资源”,“证书验证失败”这样两类通知消息,终止这些通知消息所指明的会话,收回系统资源。
双向完全认证子程序完成以下操作:
a)通过源设备的证书有效性查询资源来验证目的设备证书Cert_Des是否被吊销。如果源设备不存在证书有效性查询资源,则发送通知消息给目的设备指示源设备能力不足,终止执行该双向完全认证方式。
在实际应用中,各接口需要为该通知消息分配特定的序列号(例如0x01表示不存在证书有效性查询的资源),并按照各接口通知消息的形式封装并发送该序列号,要求封装时能够指明出现错误的会话序列。
b)鉴于证书有效性验证有可能耗时较长,因此该协议子程序需要与证书有效性验证并行执行以下操作:
i.验证目的设备证书列表中证书各个域的信息,具体验证内容由各接口证书系统的规范决定。验证失败则向目的设备发送通知消息,报告证书验证失败,终止执行双向完全认证。
ii.计算共享秘密xyG,使用HMAC密钥杂凑函数Hash,计算Hash([xyG]lsb|q|,ID_Source),验证接收消息中签名的有效性,如果验证没有通过则发送通知消息给目的设备报错,终止执行双向完全认证。
在实际应用中,各接口应该为该通知消息分配特定的序列号(例如0x02表示证书验证失败),并按照各接口通知消息的形式封装并发送该序列号,同样要求封装时能够指明出现错误的会话序列。
iii.使用Hash函数,以[xyG]msb|q|为密钥,对目的设备的证书唯一标志ID_Des进行杂凑,使用源设备的私钥对该杂凑值使用签名算法E_S{}签名:
E_S{Hash([xyG]msb|q|,ID_Des)};
在实际应用中,对上述签名进行封装,封装时要明确消息的会话序列和认证类型。
iv.源设备使用Hash函数,以xyG为密钥,对ID_Source||xG||ID_Des||yG进行杂凑,其结果作为双方的共享密钥K_M:
K_M=Hash(xyG,ID_Source||xG||ID_Des||yG);
V.检查在步骤a)中证书有效性查询的结果,如果目的设备的证书是有效的,则存储数据对,发送步骤iii中生成的签名消息给目的设备,否则发送通知消息,终止协议执行。
在实际应用中,各接口应该为该通知消息分配特定的序列号(例如0x04表示证书已经被吊销),并按照各接口通知消息的形式封装并发送该序列号,要求封装时能够指明出现错误的会话序列。
4.目的设备主程序负责把双向完全认证第三条消息的消息单元转交给该设备的双向完全认证协议子程序来处理接收的消息,把接收的通知消息转交给目的设备的通知消息处理子程序执行。
目的设备的通知消息处理子程序对于源设备发送的“不存在有效性查询资源”,“证书验证失败”,“签名消息验证失败”,“证书已经被吊销”这样几类通知消息,终止这些通知消息所指明的会话,收回系统资源。
目的设备双向完全认证子程序完成以下操作:
a)使用HMAC密钥杂凑函数Hash,计算Hash([xyG]msb|q|,ID_Des),读取Cert_Source中公钥,验证接收消息中签名,验证无效则发送通知消息给源设备报错,终止执行双向完全认证。
在实际应用中,各接口为该通知消息分配特定的序列号(例如0x03表示协议签名消息验证失败),并按照各接口通知消息的形式封装并发送该序列号,封装时指明出现错误的会话序列。
b)检查步骤2的a)中Cert_Source有效性查询的结果,如果查询结果表明源设备证书已经被吊销,则发送通知消息给源功能设备报错,终止执行双向完全认证。
在实际应用中,各接口为该通知消息分配特定的序列号(例如0x04表示证书已经被吊销),并按照各接口通知消息的形式封装并发送该序列号,封装时能够指明出现错误的会话序列。
c)使用Hash函数计算主密钥K_M如下:
K_M=Hash(xyG,ID_Source||xG||ID_Des||yG);
d)存储
5.源设备在接收到目的设备的通知消息后,清除存储的数据对
(二)双向重新认证
源设备选择执行双向认证后,如果本地存储着以前的共享密钥,则执行双向重新认证方式。如图2所示,该协议具体步骤如下:
1.源设备主程序调用双向重新认证子程序来发送双向完全认证第一条消息。该协议子程序读取源设备证书中的持有者唯一标志ID_Source,计算不少于64比特的随机数Rand_Source,发送消息:
ID_Source||Rand_Source
在实际应用中,上述消息需要封装,对该消息单元的封装要能够指明该消息所属的认证类型,如果源设备和目的设备之间可以存在多个会话同时运行,则封装信息还包括会话序列号。
2.目的设备主程序负责把双向重新认证第一条消息转交给该设备的双向重新认证子程序处理。该协议子程序要完成以下操作:
a)比较所接收的ID_Source与本地存储的中的ID_Source是否相同,如果不同,则清除,然后向源设备发送通知消息,终止此次双向重新认证方式的执行,请求执行双向完全认证。
在实际应用中,各接口应该为该通知消息分配特定的序列号(例如0x05表示重新认证证书持有者标志不匹配),并按照各接口通知消息的形式封装并发送该序列号,要求封装时能够指明出现错误的会话序列。
b)如果所接收的ID_Source与本地存储的中的ID_Source相同,则读取目的设备证书中的证书持有者标志ID_Des,计算不少于64比特随机数Rand_Des,使用HMAC密钥杂凑函数Hash,以共享密钥K_M的高|K_M|/2位比特,对ID_Source||Rand_Source||ID_Des||Rand_Des进行杂凑,获得Des_HashValue值,计算杂凑值Des_HashValue:
Hash([K_M]msb|K_M|/2,ID_Source||Rand_Source||ID_Des||Rand_Des)
d)发送消息:
ID_Des||Rand_Des||Des_HashValue。
在实际应用中,需要对消息封装,封装时要明确消息所属的会话序列和认证类型。
3.源设备主程序负责把双向重新认证第二条消息的消息单元转交给该设备的双向重新认证子程序来处理接收的消息,把目的设备发送的通知消息转交给通知消息处理子程序执行。
源设备的通知消息处理子程序对于目的设备发送的“重新认证证书持有者标志不匹配”这样的通知消息,终止这些通知消息所指明的会话,收回系统资源,清除,然后与该目的设备执行双向完全认证。
源设备采用的双向重新认证方式具有以下步骤:
a)比较所接收的ID_Des和本地存储的中的ID_Des是否相同,如果不同,则清除本地存储的,发送“重新认证证书持有者不匹配”通知消息给目的设备,终止此次会话,回收系统资源,清除,然后与该目的设备执行双向完全认证。
b)如果所接收的ID_Des和本地存储的中的ID_Des相同,则使用HMAC密钥杂凑函数Hash计算以下杂凑值Local_Des_HashValue:
Hash([K_M]msb|K_M|/2,ID_Source||Rand_Source||ID_Des||Rand_Des)
c)比较接收的HashValue与计算的Local_Des_HashValue是否相同,不同则清除本地存储的,发送“重新认证杂凑值不匹配”通知消息给目的设备,终止此次会话,回收系统资源,清除,然后与该目的设备执行双向完全认证。
d)使用Hash函数,以共享密钥K_M的低|K_M|/2位比特为密钥,对ID_Des||Rand_Des进行杂凑,计算并发送杂凑值Source_HashValue给目的设备:
Hash([K_M]lsb|K_M|/2||ID_Des||Rand_Des)
在实际应用中,需要封装之后发送杂凑值Source_HashValue给目的设备。这时协议消息单元仅包含该杂凑值。封装时要明确消息所属的会话序列和认证类型。
e)计算新的K_M,更新中的K_M。新的K_M计算如下:
K_M=Hash(K_M,Rand_Des||Rand_Source)
4.目的设备主程序负责把双向重新认证第三条消息转交给该设备的双向重新认证协议子程序来处理接收的消息,把接收的通知消息转交给目的设备的通知消息处理子程序执行。
目的设备的通知消息处理子程序对于源设备发送的“重新认证证书持有者标志不匹配”,“重新认证杂凑值不匹配”这样两类通知消息,终止这些通知消息所指明的会话,收回系统资源,清除
目的设备双向重新认证协议子程序完成以下操作:
a)用HMAC密钥杂凑函数Hash计算杂凑值Local_Source_HashValue:
Hash([K_M]lsb|K_M|/2||ID_Des||Rand_Des)
b)比较接收的Source_HashValue与计算的Local_Source_HashValue是否相同,不同则发送“重新认证杂凑值不匹配”通知消息给源设备,终止此次会话,回收系统资源,清除
c)计算新的K_M,更新中的K_M,设置认证状态。新的K_M计算如下:
K_M=Hash(K_M,Rand_Des||Rand_Source)。
5.源设备在接收到目的设备的通知消息后,清除数据对,执行双向完全认证协议。
(三)单向完全认证
源设备选择执行单向认证后,如果本地没有存储以前的认证密钥,则执行单向完全认证协议。如图3所示,该协议具体步骤如下:
1.在决定执行单向完全认证后,源设备主程序调用单向完全认证协议子程序来发送单向完全认证第一条消息。该协议子程序读取源设备证书中的证书持有者标志ID_Source,计算随机数x,计算标量乘xG,并发送协议消息:
ID_Source||xG
在实际应用中,上述消息需要封装发送,对该协议消息单元的封装要能够指明该消息所属的认证类型,如果源设备和目的设备之间可以存在多个同时运行的会话,则封装信息还应包括会话序列号。
2.目的设备主程序负责把单向完全认证第一条协议消息转交给该设备的单向完全认证子程序处理。该协议子程序要完成以下操作:
a)计算随机数y,计算yG,计算共享秘密xyG,使用HMAC密钥杂凑函数Hash,计算Hash([xyG]lsb|q|,ID_Source),对计算的杂凑值签名,读取目的设备证书列表,发送协议消息:
Cert_Des_list||yG||E_S{Hash([xyG]lsb|q|,ID_Source)}
在实际应用中,上述消息需要封装发送。封装时要明确消息所属的会话序列和认证类型。
b)使用Hash函数,以xyG为密钥,对ID_Source||xG||ID_Des||yG进行杂凑,计算主密钥K_M作为双方的共享密钥,存储。K_M计算如下:
K_M=Hash(xyG,ID_Source||xG||ID_Des||yG)
3.源设备主程序负责把单向完全认证第二条协议消息转交给该设备的单向完全认证协议子程序来处理接收的协议消息。该协议子程序完成以下操作:
a)通过源设备的证书有效性查询资源验证接收的证书是否被吊销。如果源设备不存在证书有效性查询资源,则发送“不存在证书有效性查询的资源”通知消息给目的设备指示源设备能力不足,终止执行单向认证。
在实际应用中,封装上述步骤a)中产生的通知消息时要能够指明出现错误的会话序列。
b)鉴于证书有效性验证有可能耗时较长,因此该协议子程序需要与证书有效性验证并行执行以下操作:
i.验证目的设备证书列表中证书各个域的信息,具体验证内容由各接口证书系统的规范决定。验证失败则向目的设备发送“证书验证失败”通知消息,终止协议执行。
在实际应用中,封装上述步骤b)第i项中产生的通知消息时要能够指明出现错误的会话序列。
ii.计算共享秘密xyG,使用HMAC密钥杂凑函数Hash计算Hash([xyG]lsb|q|,ID_Source),读取Cert_Des的公钥验证接收消息中签名的有效性,如果验证没有通过则发送“协议签名消息验证失败”通知消息给目的设备报错,终止协议执行。
在实际应用中,封装上述步骤b)第ii项中产生的通知消息时要能够指明出现错误的会话序列。
iii.使用Hash,以xyG为密钥,对ID_Source||xG||ID_Des||yG进行杂凑,计算主密钥K_M作为双方的共享密钥:
K_M=Hash(xyG,ID_Source||xG||ID_Des||yG)。
iv.检查在步骤a)中有效性查询结果,如果证书有效则存储,否则发送通知消息,指示“证书已经被吊销”,结束程序执行。
在实际应用中,封装上述步骤b)第iv项中产生的通知消息时要能够指明出现错误的会话序列。
4.目的设备主程序负责把接收的通知消息转交给通知消息处理子程序执行。
目的设备的通知消息处理子程序对于源设备发送的“不存在有效性查询资源”,“证书验证失败”,“签名消息验证失败”,“证书已经被吊销”这样几类通知消息,终止这些通知消息所指明的会话,收回系统资源。
(四)单向重新认证
源设备选择执行单向认证后,如果本地存储着以前的认证密钥,则执行单向重新认证方式。如图4所示,该协议具体步骤如下:
1.源设备主程序调用单向重新认证子程序来发送单向完全认证第一条消息。该子程序读取源设备证书中的持有者唯一标志ID_Source,计算不少于64比特随机数Rand_Source,发送消息:
ID_Source||Rand_Source
在实际应用中,上述消息需要封装,对该消息单元的封装要能够指明该消息所属的认证类型,如果源设备和目的设备之间可以存在多个会话同时运行,则封装信息还应包括会话序列号。
2.目的设备主程序负责把单向重新认证第一条消息转交给该设备的单向重新认证子程序处理。该协议子程序要完成以下操作:
a)比较所接收的ID_Source与本地存储的中的ID_Source是否相同,如果不同,则清除,然后向源设备发送“证书持有者标志不匹配”通知消息,终止此次单向重新认证的执行。
在实际应用中,封装上述步骤a)中通知消息时要能够指明出现错误的会话序列。
b)如果所接收的ID_Source与本地存储的中的ID_Source相同,则使用HMAC密钥杂凑函数Hash,以共享密钥K_M的低|K_M|/2位比特,对ID_Source||Rand_Source进行杂凑,计算以下杂凑值Uni_Des_HashValue:
Hash([K_M]lsb|K_M|/2,ID_Source||Rand_Source)
c)读取目的设备证书中的证书持有者标志ID_Des,发送消息:
ID_Des||Uni_Des_HashValue
在实际应用中,上述消息需要封装。封装时要明确消息所属的会话序列和认证类型。
d)计算新的K_M,更新中的K_M。新的K_M计算如下:
K_M=Hash(K_M,Rand_Source)
3.源设备主程序负责把单向重新认证第二条消息转交给该设备的单向重新认证子程序来处理接收的消息,把目的设备发送的通知消息转交给通知消息处理子程序执行。
源设备的通知消息处理子程序对于目的设备发送的“重新认证证书持有者标志不匹配”这样的通知消息,终止这些通知消息所指明的会话,收回系统资源,清除数据对,然后与该目的设备执行单向完全认证。
源设备单向重新认证子程序执行以下步骤:
a)比较所接收的ID_Des和本地存储的数据对中的ID_Des是否相同,如果不同则清除本地存储的,发送“重新认证证书持有者不匹配”通知消息给目的设备,终止此次会话,回收系统资源,清除,然后与该目的设备执行单向完全认证。
b)如果所接收的ID_Des和本地存储的中的ID_Des相同,则使用HMAC密钥杂凑函数Hash计算以下杂凑值Uni_Local_Des_HashValue:
Hash([K_M]lsb|K_M|/2,ID_Source||Rand_Source)
c)比较接收的Uni_Des_HashValue与计算的Uni_Local_Des_HashValue是否相同,如果不同则清除本地存储的,发送“重新认证杂凑值不匹配”通知消息给目的设备,终止此次会话,回收系统资源,清除,然后与该目的设备执行单向完全认证。
d)计算新的K_M,更新中的K_M,设置认证状态。新的K_M计算如下:
K_M=Hash(K_M,Rand_Source)
4.目的设备主程序负责把接收的通知消息转交给目的设备的通知消息处理子程序执行。
目的设备的通知消息处理子程序可以对于源设备发送的“重新认证证书持有者标志不匹配”,“重新认证杂凑值不匹配”这样两类通知消息,终止这些通知消息所指明的会话,收回系统资源,清除
本发明与现有技术相比具有的有益效果是:本发明综合考虑消费电子的多种接口,提供了基于公钥的一种认证和密钥协商方案。该方案在基本算法具有安全保障时,具有可证明的认证特性和认证密钥的秘密性及一致性。该方案同时优化了消息交换次数和计算代价,具有较高的效率。
本发明的上述认证密钥协商方式可以以协议的形式来实现,应用于参与认证密钥协商的源设备和目的设备中。
下面描述本发明的上述认证密钥协商协议的具体应用。
假设源设备A和目的设备B进行认证密钥协商和更新。设备A本地存储证书列表:设备证书Cert_A,设备A的签发机构证书Cert_A_Adm,签发Cert_A_Adm的机构的证书Cert_Root。设备B本地存储证书列表:设备证书Cert_B,设备B的签发机构证书Cert_B_Adm,签发Cert_B_Adm的机构的证书Cert_Root。设备A和设备B商定了一组算法和公开参数,包括签名算法ECCDSA,HMAC算法HMAC-SHA(key,content),椭圆曲线公开参数(Fq,E,G,n),|q|=192,|K_M|=256,椭圆曲线标量乘计算表示为xG,yG等。
设备A和设备B的DVI,HDMI或者POD-Host等接口在传输数据之前,会执行单向认证密钥协商和更新。设备A如果检测不到本地存储有共享密钥,则执行单向完全认证。设备A计算随机数1<x<n,发送设备A唯一标志ID_A和xG给设备B;设备B按照单向完全认证规定的步骤操作,发送Cert_B,Cert_B_Adm,yG和签名的杂凑值ECCDSA{HMAC-SHA([xyG]lsb192,ID_A)}给设备A,并按照规定计算认证密钥K_M;设备A检测接收的消息,完成对设备B的认证,认证成功则计算K_M,设置认证状态,否则发送通知消息给设备B报错。
设备A和设备B在DVI,HDMI,POD-Host等接口在执行单向认证密钥协商和更新时如果发现本地存储有共享密钥,则执行单向重新认证。设备A计算64比特随机数Rand_A,发送设备A唯一标志ID_A和Rand_A给设备B;设备B使用储存的密钥K_M计算ID_A||Rand_A的HMAC杂凑值,并发送设备B唯一标志ID_B和杂凑值给设备A;设备A验证杂凑值的正确性,从而确认设备B是否拥有相同的共享密钥,如果有则更新该密钥。
设备A和设备B在IEEE1394,USB等可能支持双向认证密钥协商和更新的接口间传输数据时,由设备B向设备A提交设备B的认证能力,设备A优先选择执行双向认证密钥协商和更新。如果设备A本地没有存储共享密钥或者目的设备的认证能力中显示目的设备没有存储共享密钥,则执行双向完全认证。设备A给设备B发送Cert_A,Cert_A_Adm和计算的xG;设备B按照双向完全认证的步骤给设备A发送Cert_B,Cert_B_Adm,yG和签名消息,签名的内容是使用xyG的部分信息作密钥对ID_Source进行HMAC-SHA运算得到的杂凑值;设备A验证接收的消息,完成对设备B的认证,发送签名消息给设备B,同时设置认证状态,计算和存储共享密钥。设备B检验接收的签名消息,结合第一步接收的消息,完成对设备A的认证,设置认证状态,计算和存储共享密钥。
设备A和设备B在选择执行双向认证密钥协商和更新后,如果目的设备存储有共享密钥,同时源设备也存储有共享密钥,则执行双向重新认证。设备A给设备B发送设备A唯一标志ID_A和Rand_A;目的设备发送ID_Des,Rand_Des和一个杂凑值,该杂凑值使用HMAC-SHA计算,密钥是本地存储的K_M的部分信息,杂凑的内容包括了设备A的标志和随机数,设备B的标志和随机数。设备A通过验证杂凑值来确认设备B和设备A具有相同的共享密钥,然后设备A按照规定计算并发送新的杂凑值给设备B,并设置认证状态,更新和存储共享密钥。设备B通过验证杂凑值来确认设备A和设备B拥有相同的共享密钥,然后设备B设置认证状态,更新共享密钥。