无线局域网鉴别与保密基础结构单播密钥协商方法及系统
技术领域
本发明涉及无线局域网(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(站间密钥)等参数。
在WAPI中,采用两种方式导出BK,分别是在证书鉴别过程中协商、或由预共享密钥直接导出。导出BK后,通信双方(例如,STA和AP)可以使用BK进行单播密钥(USK)的协商,单播密钥协商完毕后,通信双方使用单播密钥进行数据的传输保护。
图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 forunicast and additional 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发送单播密钥协商确认分组,结束单播密钥的协商流程。
WPI是用于实现无线局域网中数据传输保护的安全方案,包括使用WAI过程中协商出的各密钥进行数据加密、数据鉴别和重放保护等功能。
WPI保密基础结构对MAC子层的MPDU(MAC层协议数据单元,MACprotocol data unit)进行加、解密处理,但对于WAI协议分组不进行加解密处理。WPI中采用的分组密码算法为SMS4(称为WPI-SMS4),WPI-SMS4工作在OFB(output feedback,输出反馈)模式,如图2a和图2b所示。其中,图2a为WPI采用的OFB加密模式示意图,图2b为WPI采用的OFB解密模式示意图。
如图2a和图2b所示,采用OFB模式对信息进行分组加解密时,在每次加解密开始时对第一个分组需要使用IV(Initialization Vector,初始化向量)。IV的初值通常由加密方以明文方式传送给解密方,并且在加解密过程中按照预先设定的规则变化(例如,以固定步长递增),以尽量避免相同的信息使用相同的IV进行加密。
但是,由于IV的长度需要与分组加密算法的分组长度相同,因此很难通过增加IV长度的方式来降低IV重复使用的概率,也就是说很难避免重复使用IV。在这种情况下,由于IV的初值采用明文的方式由加密方发送给解密方,或者由加密方和解密方按照易于猜测的固定规则设置(例如,双方都将IV的初值设置为0),随后在加解密过程中按照固定的规则变化,IV溢出时发送方重新设置IV的初值,再次将IV的初值发送给解密方;因此只要有足够的时间,窃听者就很容易识别并截获到足够多的使用相同IV的加密数据,这对无线局域网的安全造成了较大的威胁。
发明内容
本发明所要解决的技术问题是,克服现有技术的不足,提供一种可提高无线局域网安全性的单播密钥的协商方法及系统。
为了解决上述问题,本发明提供一种无线局域网鉴别与保密基础结构单播密钥协商方法,通信节点A和通信节点B协商得到基密钥BK后,该方法包括:
通信节点A生成随机数sx和N1,并将N1和PX包含在单播密钥协商请求分组中发送给通信节点B;其中,PX=gsx(mod P);
接收到单播密钥协商请求分组后,通信节点B生成随机数sy和N2,将BK、N1和N2作为参数,采用散列信息认证码HMAC算法生成单播密钥USK,并将PY和N2包含在单播密钥协商响应分组中发送给通信节点A,其中,PY=gsy(mod P);
接收到单播密钥协商响应分组后,通信节点A生成所述单播密钥USK;
通信节点A和通信节点B使用K=(PY)sx(mod P)=(PX)sy(mod P)生成分组加解密过程中使用的初始化向量IV的初值;
其中,P和g为正整数,且P>g。
此外,通信节点A和通信节点B从所述K或所述K的变换序列中提取N个比特作为IV的初值;其中,N为通信节点A和通信节点B之间所采用的分组加密算法分组长度。
此外,通信节点A和通信节点B还从所述K或所述K的变换序列中提取L个比特作为IV的变换次数值S;L<N。
此外,通信节点A和通信节点B采用如下方式生成所述K的变换序列Str:
Str=T(K);或
Str=T(K)||String;或
Str=ADDID||T(K)||String;
其中,T(K)表示从K对应的比特串中截取预先设定长度的比特串,||表示比特串连接操作,String为通信节点A和通信节点B预先设定的比特串;ADDID由通信节点A和通信节点B的介质访问控制地址对应的比特串连接而成。
此外,所述P为质数。
此外,所述通信节点A和通信节点B分别为:接入点AP和无线站点STA;或STA和AP;或AP和AP;或STA和STA。
本发明还提供一种无线局域网鉴别与保密基础结构单播密钥协商系统,该系统包含:通信节点A和通信节点B,其特征在于,通信节点A中设置有密钥生成单元A和通信单元A,通信节点B中设置有密钥生成单元B和通信单元B,其中:
所述密钥生成单元A用于生成随机数sx和N1,并将N1和PX包含在单播密钥协商请求分组中,通过通信单元A发送给所述通信节点B;其中,PX=gsx(mod P);
所述密钥生成单元B用于在通过通信单元B接收到所述单播密钥协商请求分组后,生成随机数sy和N2,将BK、N1和N2作为参数,采用散列信息认证码HMAC算法生成单播密钥USK,并将PY和N2包含在单播密钥协商响应分组中,通过通信单元B发送给所述通信节点A,其中,PY=gsy(modP);
所述密钥生成单元A还用于在通过通信单元A接收到单播密钥协商响应分组后,生成与通信节点B所述单播密钥USK;
所述密钥生成单元A和密钥生成单元B还用于使用K=(PY)sx(modP)=(PX)sy(mod P)生成分组加解密过程中使用的初始化向量IV的初值;
其中,P和g为正整数,且P>g。
此外,所述密钥生成单元A和密钥生成单元B从所述K或所述K的变换序列中提取N个比特作为IV的初值;其中,N为通信节点A和通信节点B之间所采用的分组加密算法分组长度。
此外,所述密钥生成单元A和密钥生成单元B还用于从所述K或所述K的变换序列中提取L个比特作为IV的变换次数值S;L<N。
此外,所述通信节点A和通信节点B分别为:AP和STA;或STA和AP;或AP和AP;或STA和STA。
综上所述,采用本发明的方法及系统,通信节点之间(例如AP和STA之间)协商生成了相同的IV以及IV的变换次数值S,并且生成IV和S所用的关键参数之一K值是采用Diffie-Hellman算法的原理秘密协商得到的。这样,由于IV值没有明文传输,窃听者无法获知各数据包所对应的IV值,并且不知道经过多少个数据包后会出现重复的IV,因此也不知道哪些数据包对应相同的IV值,增大了窃听者破解密钥的难度,提高了WAPI的安全性。
附图说明
图1是现有技术中的单播密钥的协商方法流程图;
图2a为现有技术中WPI采用的OFB加密模式示意图;
图2b为现有技术中WPI采用的OFB解密模式示意图;
图3是本发明实施例单播密钥的协商方法流程图;
图4是本发明实施例无线局域网鉴别与保密基础结构单播密钥协商系统结构示意图。
具体实施方式
本发明的核心思想是,在进行单播密钥的协商时,通信双方分别生成Diffie-Hellman算法所使用的临时公钥PX和PY,并交换PX值和PY值;然后分别使用对应的临时私钥sx和sy、采用Diffie-Hellman算法的原理生成相同的IV的初值。
下面将结合附图和实施例对本发明进行详细描述。
图3是本发明实施例单播密钥的协商方法流程图,本实施例中的通信双方(通信节点A和通信节点B)分别为AP和STA,在AP和STA通过证书鉴别过程协商得到基密钥BK、或通过预共享密钥直接导出BK后,由AP发起单播密钥的协商流程;该方法包括如下步骤:
301:AP采用与STA预先协商设置的Diffie-Hellman算法参数P和g,以及AP生成的随机数sx,计算PX=gsx(mod P);
其中,P和g为整数,且P>g;mod表示取模运算。
为了进一步提高安全性,P通常为大质数,因此可以将P称为Diffie-Hellman算法的质数参数,而将g称为Diffie-Hellman算法的底数参数。
302:AP向STA发送单播密钥协商请求分组;
单播密钥协商请求分组中包含:BKID、ADDID、N1和PX等参数。其中:
BKID为AP和STA先前协商得到基密钥BK的标识符;
ADDID由AP和STA的MAC(Media Access Control,介质访问控制)地址组成;
N1为AP生成的随机数。
303:接收到单播密钥协商请求分组后,STA采用步骤102中描述的方式生成USK;并生成随机数sy,计算并存储IV参数K=(PX)sy(mod P);
后续加解密双方进行分组加解密时,可以从K中提取N个比特作为IV初值,L个比特作为IV的变换次数值S;其中,N=分组加密算法的分组长度,且L<N<K的比特数。
也就是说,在加解密过程中,加解密双方可以按照固定的步长(例如1)循环递增或递减IV,但是递增或递减的次数不能超过S。
例如,以IV长度为4个比特为例,如果协商得到的IV为:1100,S=4,则在加解密过程中IV可以按照如下规律循环递增:
1100→1101→1110→1111→0001。
当然,加解密双方也可以不协商IV的变换次数值S,当IV溢出时重新使用上述IV初值。由于窃听者不知道IV初值,因此也无法获知经过多少个数据包后会出现重复的IV值。
此外,也可以对IV参数K进行函数变换生成变换序列Key,然后从变换序列Key中提取IV的初值以及S值。
例如,可以采用如下子步骤生成IV:
303a:计算Key=KD-HMAC-SHA256(BK,K);
303b:从Key中提取N个比特(例如前N个比特)作为IV。
当然,同样的方法也可以用于生成S值。
304:STA计算PY=gsy(mod P),并向AP发送单播密钥协商响应分组;
单播密钥协商响应分组中包含:STA生成的随机数N2、BKID,PY等参数。
可选的,单播密钥协商响应分组中还可以包含底数参数更新标识,该标识用于指示AP是否应在本次生成单播密钥/IV初值后更新底数参数g。例如:当底数参数更新标识的值为0时,表示不更新底数参数;当底数参数更新标识的值为1时,表示更新底数参数。
此外,底数参数更新标识还可以用于指示更新后的底数参数g的位数或位数的范围。例如:当底数参数更新标识的值为0时,表示不更新底数参数;当底数参数更新标识的值为1时,表示更新后的底数参数g为长度为8~10比特的值;当底数参数更新标识的值为2时,表示更新后的底数参数g为长度为11~13比特的值,以此类推。
STA可以根据本地的计算能力和对安全性的要求设置底数参数更新标识的值,即设置是否更新底数参数g以及更新后的位数。
305:接收到单播密钥协商响应分组后,AP计算并存储IV参数K′=(PY)sx(mod P);然后采用与步骤303相同的算法生成IV’和变换次数值S’。
需要注意的是,根据模运算的规则可知,由于:
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;
因此,IV′=IV,S’=S。
306:AP根据单播密钥协商响应分组中携带的底数参数更新标识判断是否需要更新底数参数g,并根据本地的计算能力和对安全性的要求判断是否支持STA的底数参数更新要求;如果支持,则AP在确定更新后的底数参数g的位数后,按照预先设置的规则从计算得到的Key值(以二进制表示)中选取对应个数的比特值组成新的底数参数g。
307:AP向STA发送单播密钥协商确认分组;
单播密钥协商确认分组中可以包含底数参数更新确认标识,该标识用于表示是否已更新底数参数g,并可以进一步表示更新后的底数参数g的位数。例如:
当底数参数更新确认标识的值为0时,表示未更新底数参数,当底数参数更新确认标识的值为1时,表示已更新底数参数;或者:当底数参数更新确认标识的值为0时,表示未更新底数参数,当底数参数更新确认标识的值为9时,表示更新后的底数参数g的长度为9比特,以此类推。
308:接收到单播密钥协商确认分组后,STA根据底数参数更新确认标识采用与AP相同的方式对底数参数g进行更新。
综上所述,采用以上步骤,AP和STA协商生成了相同的IV以及IV的变换次数值S,并且生成IV和S所用的关键参数之一K值是采用Diffie-Hellman算法的原理秘密协商得到的。这样,由于IV值没有明文传输,窃听者无法获知各数据包所对应的IV值,并且不知道经过多少个数据包后会出现重复的IV,因此也不知道哪些数据包对应相同的IV值,增大了密钥的破解难度,提高了WAPI的安全性。
图4是本发明实施例无线局域网鉴别与保密基础结构单播密钥协商系统结构示意图,该系统包含:通信节点A和通信节点B,通信节点A中设置有密钥生成单元A和通信单元A,通信节点B中设置有密钥生成单元B和通信单元B。
通信节点A和通信节点B分别为:AP和STA;或STA和AP;或AP和AP;或STA和STA。
所述密钥生成单元A用于生成随机数sx和N1,并将N1和PX包含在单播密钥协商请求分组中,通过通信单元A发送给所述通信节点B;其中,PX=gsx(mod P);
所述密钥生成单元B用于在通过通信单元B接收到所述单播密钥协商请求分组后,生成随机数sy和N2,将BK、N1和N2作为参数,采用散列信息认证码HMAC算法生成单播密钥USK,并将PY和N2包含在单播密钥协商响应分组中,通过通信单元B发送给所述通信节点A,其中,PY=gsy(modP);
所述密钥生成单元A还用于在通过通信单元A接收到单播密钥协商响应分组后,生成与通信节点B所述单播密钥USK;
所述密钥生成单元A和密钥生成单元B还用于使用K=(PY)sx(modP)=(PX)sy(mod P)生成分组加解密过程中使用的初始化向量IV的初值。
其中,P和g为正整数,且P>g。
此外,所述密钥生成单元A和密钥生成单元B从所述K或所述K的变换序列中提取N个比特作为IV的初值;其中,N为通信节点A和通信节点B之间所采用的分组加密算法分组长度。
此外,所述密钥生成单元A和密钥生成单元B还用于从所述K或所述K的变换序列中提取L个比特作为IV的变换次数值S;L<N。
根据本发明的基本原理,上述实施例还可以有多种变换方式,例如:
(一)AP和STA还可以使用更复杂的变换方式生成变换序列Key,如:
首先对K进行字符变换:令Str=T(K)||String,或令Str=ADDID||T(K)||String,然后再计算Key=KD-HMAC-SHA256(BK,Str)。
其中,T(·)为截取操作函数,表示从K中截取预先设定的长度的比特串。上述T(K)可以是从按顺序(从前到后、或从后向前)从K对应的比特串中截取预先设定的长度的比特串,也可以是从预先设定的比特位置从K对应的比特串中截取预先设定的长度的比特串。
(二)除了从K或K的各种变换序列中提取出IV的初值外,也可以将K或K的变换序列作为参数,直接使用哈希函数生成特定长度的IV初值。
(三)使用本发明的方法在通信双方生成K时所采用的参数P通常为大质数,但如果对IV初值的安全性要求不高的话,P也可以是一个小质数,或一个大于g的正整数。