无线局域网鉴别与保密基础结构单播密钥协商方法及系统
技术领域
本发明涉及无线局域网(Wireless Local Area Networks,简称WLAN),尤其涉及一种无线局域网鉴别与保密基础结构中的单播密钥协商方法及系统。
背景技术
无线局域网作为宽带无线IP(Internet Protocol,因特网协议)网络的一种典型的实现形式,是指采用无线传输媒介的计算机局域网络,它能在难以布线的区域进行通信,是传统有线局域网的重要补充。无线局域网技术是计算机网络技术与无线通信技术相结合的产物,具有支持移动计算、架构灵活快捷、维护所需费用较低和可扩展性好等优点,为通信的移动化和个人化提供了手段。
随着全球信息化的逐步深入,网络安全的重要性越来越明显,因为信息丢失、缺损和泄漏所造成的损失额度之大远远超出了人们的预测,因此各国均将网络信息安全提升至国家安全战略的位置。
现有技术中的WAPI(无线局域网鉴别与保密基础结构)是一种提高无线局域网的安全性的机制。WAPI将基于三元对等鉴别的访问控制方法应用于无线局域网技术领域,以保障合法客户端通过合法接入点接入网络,并实现客户端和接入点间的保密通信。
WAPI由无线局域网鉴别基础结构(WAI)和无线局域网保密基础结构(WPI)两部分组成。
WAI是实现无线局域网中的身份鉴别和密钥管理的安全方案,用于完成STA(STAtion,无线站点)和AP(Access Point,接入点)之间、STA和STA之间的双向身份鉴别,并协商建立安全关联。
其中,安全关联包含:
BKSA(基密钥安全关联):是证书鉴别过程协商的结果、或通过预共享密钥(PSK)导出的结果;其中包含BK(基密钥)、BK/BKSA的生存期等参数;
USKSA(单播密钥安全关联):是单播密钥协商(基于BK协商)的结果;其中包含USK(单播密钥)、USK/USKSA的生存期等参数;
MSKSA(组播会话密钥安全关联):是组播密钥通告的结果;其中包含MSK(组播会话密钥)、MSK/MSKSA的生存期等参数;
STAKeySA(站间密钥安全关联):是站间密钥通告的结果,其中包含STAKey(站间密钥)等参数。
WPI是用于实现无线局域网中数据传输保护的安全方案,包括使用WAI过程中协商出的各密钥进行数据加密、数据鉴别和重放保护等功能。
在WAPI中,采用两种方式导出BK,分别是在证书鉴别过程中协商、或由预共享密钥直接导出。导出BK后,通信双方(例如,STA和AP)可以使用BK进行单播密钥(USK)的协商,单播密钥协商完毕后,通信双方使用单播密钥进行数据的传输保护。
由此可见,单播密钥的安全性是WPI的基础,而单播密钥的安全性又取决于以下两个方面:一是BK导出方法的安全性;二是单播密钥协商方法本身的安全性。
图1是现有技术中的单播密钥的协商方法流程图,包括如下步骤:
101:AP向STA发送单播密钥协商请求分组;
单播密钥协商请求分组中包含:BKID、ADDID和N1等参数,其中:
BKID为AP和STA先前协商得到基密钥BK的标识符;
ADDID由AP和STA的MAC(Media Access Control,介质访问控制)地址组成;
N1为AP生成的随机数。
102:接收到单播密钥协商请求分组后,STA生成随机数N2,然后计算:
Key=KD-HMAC-SHA256(BK,ADDID‖N1‖N2‖String);其中:
BK为上述BKID所标识的基密钥;KD-HMAC-SHA256为基于SHA256算法的HMAC(Hashed Message Authentication Code,散列信息认证码)算法,也就是一种带密钥(以BK为密钥)的HASH(哈希)算法;String为一预先设置的字符串,当前标准中为“pairwise key expansion for unicast andadditional keys and nonce”;“‖”表示字符串连接操作,“ADDID‖N1‖N2‖String”为KD-HMAC-SHA256算法所使用的字符参数。
计算得到Key后,STA将其中的一部分(例如,前16个字节)作为单播密钥USK。图1中以T(·)表示从Key中提取(或称为截取)部分字符串的操作。
103:STA向AP发送单播密钥协商响应分组;
单播密钥协商响应分组中包含:BKID、随机数N2等参数。
104:AP接收到单播密钥协商响应分组后计算:
Key=KD-HMAC-SHA256(BK,ADDID‖N1‖N2‖String),并从中提取USK。
105:AP向STA发送单播密钥协商确认分组,结束单播密钥的协商流程。
由以上流程可知,WAPI的单播密钥协商过程使用的密钥算法参数中的字符参数以明文方式传递并直接使用(Sting虽没有传递,但该参数为公开参数),极大地减弱了密钥协商的安全性,尤其是在采用预共享密钥导出基密钥BK的情况下,无线局域网的安全性较差。
发明内容
本发明所要解决的技术问题是,克服现有技术的不足,提供一种可提高无线局域网安全性的单播密钥的协商方法及系统。
为了解决上述问题,本发明提供一种无线局域网鉴别与保密基础结构单播密钥协商方法,通信节点A和通信节点B协商得到基密钥BK后,该方法包括:
通信节点A生成随机数sx,计算PX=gsx(mod P),并将PX包含在单播密钥协商请求分组中发送给通信节点B;
接收到单播密钥协商请求分组后,通信节点B根据其生成的随机数sy计算K=(PX)sy(mod P),并根据K生成字符参数Str,以BK为密钥参数、Str为字符参数采用散列信息认证码HMAC算法生成单播密钥USK,并将PY包含在单播密钥协商响应分组中发送给通信节点A,其中,PY=gsy(mod P);
接收到单播密钥协商响应分组后,通信节点A计算K=(PY)sx(mod P),并根据K生成字符参数Str,以BK为密钥参数、Str为字符参数采用上述HMAC算法生成单播密钥USK;
其中,P为通信节点A和通信节点B预先设定的大质数,g为预先设定的小于P的正整数。
此外,所述HMAC算法为KD-HMAC-SHA256算法;通信节点A和通信节点B采用如下方式生成所述单播密钥USK:
计算Key=KD-HMAC-SHA256(BK,Str);
从Key中截取16字节作为所述单播密钥USK。
此外,采用HMAC算法生成单播密钥USK后,通信节点A和通信节点B从所述Key中选取L个比特,组成长度为L比特的新的g值。
此外,所述单播密钥协商响应分组中包含底数参数更新标识,该标识用于指示更新后的g值的比特长度范围;
通信节点A计算得到所述单播密钥USK后,根据所述底数参数更新标识确定所述L值,并向通信节点B发送单播密钥协商确认分组;所述单播密钥协商确认分组中包含所述L值;
接收到单播密钥协商确认分组后,通信节点B将g值更新为长度为L比特的新值。
此外,通信节点A和通信节点B采用如下方式生成字符参数Str:
Str=T(K);或
Str=T(K)‖String;或
Str=ADDID‖T(K)‖String;
其中,T(K)表示从K对应的字符串中截取预先设定的长度的字符串,‖表示字符串连接操作,String为通信节点A和通信节点B预先设定的字符串;ADDID由通信节点A和通信节点B的介质访问控制地址对应的字符串连接而成。
此外,所述通信节点A和通信节点B分别为:接入点AP和无线站点STA;或STA和AP;或AP和AP;或STA和STA。
本发明还提供一种无线局域网鉴别与保密基础结构单播密钥协商系统,该系统包含:通信节点A和通信节点B,通信节点A中设置有密钥生成单元A和通信单元A,通信节点B中设置有密钥生成单元B和通信单元B,其中:
所述密钥生成单元A用于生成随机数sx,计算PX=gsx(mod P),并将PX包含在单播密钥协商请求分组中,通过通信单元A发送给所述通信节点B;
所述密钥生成单元B用于在通过通信单元B接收到所述单播密钥协商请求分组后,根据生成的随机数sy计算K=(PX)sy(mod P),并根据K生成字符参数Str,以BK为密钥参数、Str为字符参数采用HMAC算法生成单播密钥USK,并将PY包含在单播密钥协商响应分组中,通过通信单元B发送给所述通信节点A,其中,PY=gsy(mod P);
密钥生成单元A还用于在通过通信单元A接收到单播密钥协商响应分组后,计算K=(PY)sx(mod P),并根据K生成字符参数Str,以BK为密钥参数、Str为字符参数采用上述HMAC算法生成单播密钥USK;
其中,P为通信节点A和通信节点B预先设定的大质数,g为预先设定的小于P的正整数;所述BK为所述所述通信节点A和通信节点B使用的基密钥。
此外,所述HMAC算法为KD-HMAC-SHA256算法;所述密钥生成单元A和密钥生成单元B采用如下方式生成所述单播密钥USK:
计算Key=KD-HMAC-SHA256(BK,Str);
从Key中截取前16字节的长度作为所述单播密钥USK。
此外,采用HMAC算法生成单播密钥USK后,所述密钥生成单元A和密钥生成单元B还用于从所述Key中选取L个比特,组成长度为L比特的新的g值。
此外,所述通信节点A和通信节点B分别为:AP和STA;或STA和AP;或AP和AP;或STA和STA。
综上所述,AP和STA协商生成了相同的单播密钥USK,并且生成USK所用的关键参数之一K值是采用Diffie-Hellman算法的原理秘密协商得到的。这样,即使基密钥BK被泄露,AP和STA协商得到的单播密钥也具有较高的安全性。此外,本发明通过更新底数参数g,进一步增强了单播密钥协商方法的安全性。
附图说明
图1是现有技术中的单播密钥的协商方法流程图;
图2是本发明实施例单播密钥的协商方法流程图;
图3是本发明实施例无线局域网鉴别与保密基础结构单播密钥协商系统结构示意图。
具体实施方式
本发明的核心思想是,在进行单播密钥的协商时,通信双方分别生成Diffie-Hellman算法所使用的临时公钥PX和PY,并交换PX值和PY值;然后分别使用对应的临时私钥sx和sy、采用Diffie-Hellman算法的原理生成相同的单播密钥字符参数,并使用基密钥BK和该单播密钥字符参数,采用HMAC算法生成单播密钥。
下面将结合附图和实施例对本发明进行详细描述。
图2是本发明实施例单播密钥的协商方法流程图,本实施例中的通信双方(通信节点A和通信节点B)分别为AP和STA,在AP和STA通过证书鉴别过程协商得到基密钥BK、或通过预共享密钥直接导出BK后,由AP发起单播密钥的协商流程;该方法包括如下步骤:
201:AP采用与STA预先协商设置的Diffie-Hellman算法参数P和g,以及AP生成的随机数sx,计算PX=gsx(mod P);
其中,P和g为整数,且P>g;mod表示取模运算。
为了提高安全性,P通常为大质数,因此可以将P称为Diffie-Hellman算法的质数参数,而将g称为Diffie-Hellman算法的底数参数。
202:AP向STA发送单播密钥协商请求分组;
单播密钥协商请求分组中包含:BKID和PX等参数。
203:接收到单播密钥协商请求分组后,STA生成随机数sy,并计算单播密钥字符参数K=(PX)sy(mod P);然后使用BKID所对应的基密钥BK作为密钥参数、以K作为字符参数,采用HMAC算法(例如KD-HMAC-SHA256)生成单播密钥USK。
例如,可以采用如下子步骤生成单播密钥USK:
203a:计算Key=KD-HMAC-SHA256(BK,K);
203b:从Key中提取16个字节(例如前16个字节)作为单播密钥USK。
204:STA计算PY=gsy(mod P),并向AP发送单播密钥协商响应分组;
单播密钥协商响应分组中包含:BKID,PY等参数。
可选的,单播密钥协商响应分组中还可以包含底数参数更新标识,该标识用于指示AP是否应在本次生成单播密钥后更新底数参数g。例如:当底数参数更新标识的值为0时,表示不更新底数参数;当底数参数更新标识的值为1时,表示更新底数参数。
此外,底数参数更新标识还可以用于指示更新后的底数参数g的位数或位数的范围。例如:当底数参数更新标识的值为0时,表示不更新底数参数;当底数参数更新标识的值为1时,表示更新后的底数参数g为长度为8~10比特的值;当底数参数更新标识的值为2时,表示更新后的底数参数g为长度为11~13比特的值,以此类推。
STA可以根据本地的计算能力和对安全性的要求设置底数参数更新标识的值,即设置是否更新底数参数g以及更新后的位数。
205:接收到单播密钥协商响应分组后,AP计算单播密钥字符参数K′=(PY)sx(mod P);然后采用与步骤203相同的算法生成单播密钥USK′。
需要注意的是,根据模运算的规则可知,由于:
K′=(PY)sx(mod P)
=(gsy(mod P))sx(mod P)
=(gsy×sx)(mod P)
=(gsx)(mod P)sy(mod P)
=(PX)sy(mod P)=K;
因此,USK′=USK。
206:AP根据单播密钥协商响应分组中携带的底数参数更新标识判断是否需要更新底数参数g,并根据本地的计算能力和对安全性的要求判断是否支持STA的底数参数更新要求;如果支持,则AP在确定更新后的底数参数g的位数后,按照预先设置的规则从计算得到的Key值(以二进制表示)中选取对应个数的比特值组成新的底数参数g。
207:AP向STA发送单播密钥协商确认分组;
单播密钥协商确认分组中可以包含底数参数更新确认标识,该标识用于表示是否已更新底数参数g,并可以进一步表示更新后的底数参数g的位数。例如:
当底数参数更新确认标识的值为0时,表示未更新底数参数,当底数参数更新确认标识的值为1时,表示已更新底数参数;或者:当底数参数更新确认标识的值为0时,表示未更新底数参数,当底数参数更新确认标识的值为9时,表示更新后的底数参数g的长度为9比特,以此类推。
208:接收到单播密钥协商确认分组后,STA根据底数参数更新确认标识采用与AP相同的方式对底数参数g进行更新。
综上所述,采用以上步骤,AP和STA协商生成了相同的单播密钥USK,并且生成USK所用的关键参数之一K值是采用Diffie-Hellman算法的原理秘密协商得到的。这样,即使基密钥BK被泄露(这在采用预共享密钥的情况下较容易发生),AP和STA协商得到的单播密钥也具有较高的安全性。
此外,通过更新底数参数g,进一步增强了本发明的单播密钥协商方法的安全性。
图3是本发明实施例无线局域网鉴别与保密基础结构单播密钥协商系统结构示意图,该系统包含:通信节点A和通信节点B,通信节点A中设置有密钥生成单元A和通信单元A,通信节点B中设置有密钥生成单元B和通信单元B。
通信节点A和通信节点B分别为:AP和STA;或STA和AP;或AP和AP;或STA和STA。
所述密钥生成单元A用于生成随机数sx,计算PX=gsx(mod P),并将PX包含在单播密钥协商请求分组中,通过通信单元A发送给所述通信节点B;
所述密钥生成单元B用于在通过通信单元B接收到所述单播密钥协商请求分组后,根据生成的随机数sy计算K=(PX)sy(mod P),并根据K生成字符参数Str,以BK为密钥参数、Str为字符参数采用散列信息认证码HMAC算法生成单播密钥USK,并将PY包含在单播密钥协商响应分组中,通过通信单元B发送给所述通信节点A,其中,PY=gsy(mod P);
密钥生成单元A还用于在通过通信单元A接收到单播密钥协商响应分组后,计算K=(PY)sx(mod P),并根据K生成字符参数Str,以BK为密钥参数、Str为字符参数采用上述HMAC算法生成单播密钥USK;
其中,P为通信节点A和通信节点B预先设定的大质数,g为预先设定的小于P的正整数;所述BK为所述所述通信节点A和通信节点B使用的基密钥。
此外,所述HMAC算法为KD-HMAC-SHA256算法;所述密钥生成单元A和密钥生成单元B采用如下方式生成所述单播密钥USK:
计算Key=KD-HMAC-SHA256(BK,Str);
从Key中截取前16字节的长度作为所述单播密钥USK。
此外,采用HMAC算法生成单播密钥USK后,所述密钥生成单元A和密钥生成单元B还用于从所述Key中选取L个比特,组成长度为L比特的新的g值。
根据本发明的基本原理,上述实施例还可以有多种变换方式,例如:
(一)AP和STA在使用协商得到的K值对应的字符串计算Key值时,还可以使用字符连接等处理手段对单播密钥字符参数K进行变换,使用变换生成的字符参数Str计算Key值,如:
首先对K进行变换:令Str=K‖String,或令Str=ADDID‖K‖String,然后再计算Key=KD-HMAC-SHA256(BK,Str)。
对K进行的变换还可以是从K中截取一部分(记作T(K),T(·)为截取操作函数),并将截取的部分与其它字符串进行连接操作得到Str值。上述T(K)可以是从按顺序(从前到后、或从后向前)从K对应的字符串中截取预先设定的长度的字符串,也可以是从预先设定的比特位置从K对应的字符串中截取预先设定的长度的字符串。
(二)除了KD-HMAC-SHA256算法外,还可以使用其它基于SHA256或基于其他散列算法的HMAC算法作为密钥生成算法生成Key值。