无线局域网自组网模式共享密钥认证和会话密钥协商方法 【技术领域】
本发明涉及到无线局域网(WLAN),具体来说,涉及到一种无线局域网系统自组网模式(或叫Ad hoc模式)中无线终端(STA)之间通过预共享密钥进行认证和会话密钥协商的方法。
背景技术
2003年5月,国家宽带无线IP工作组发布了WLAN国标GB15629.11。在GB15629.11第8章中提出了WLAN安全机制——无线局域网鉴别和保密基础结构(WAPI)。
WAPI主要包括无线局域网鉴别基础结构(WAI)和无线局域网保密基础结构(WPI)两部分内容。其中WAI机制通过椭圆曲线密码证书实现了基础(Infrastructure)模式中无线终端STA和无线网络之间的双向认证和会话密钥协商。
除了基础模式,WLAN系统的工作模式还有自组网模式。自组网模式配置简单,组网灵活,特别适合家庭、SOHO(Small Office Home Office)等场景中的应用。对于自组网模式下的认证和保密通信,GB15629.11 8.6提示“在自组网中,所有STA可以采用同一共享密钥进行鉴别和保密。”但标准中没有给出具体的认证方法。
【发明内容】
本发明所要解决的技术问题是:提出了一种WLAN自组网模式共享密钥认证和会话密钥协商方法,使得自组网模式的WLAN系统终端间可以实现安全的访问控制。
自组网中的无线终端在共享密钥认证前,需要预先通过安全的方式配置好共享密钥。
本发明方法的认证和密钥协商流程如下(在以下叙述中假设相互认证的两无线终端分别为STA1和STA2):
第一步,共享密钥认证请求。STA1发起认证,产生一个安全的随机数,把它作为共享密钥认证请求消息发送给STA2。共享密钥认证请求中还可以包括会话保密算法列表等密码参数,便于双方协商保密算法。
第二步,共享密钥认证响应。STA2收到STA1的共享密钥认证请求后,产生出自己的安全随机数。STA2采用某个密码学函数对双方地址、双方随机数和共享密钥进行计算,得到会话密钥。STA2将自己产生的随机数和用会话密钥对双方随机数加密的密文作为共享密钥认证响应消息发送给STA1。共享密钥认证响应消息中还可以包含保密算法信息和密钥重放计数器。密钥重放计数器用来防止对密钥的重放攻击。
第三步,共享密钥认证确认。STA1收到STA2的共享密钥认证响应后,采用相同的密码学函数对双方地址、双方随机数和共享密钥进行计算,得到会话密钥。然后STA1利用会话密钥验证共享密钥认证响应中STA2计算的密文内容是否正确。如果错误,则与STA2断开连接。如果正确,则用会话密钥将STA2随机数加密作为共享密钥认证确认消息发送给STA1。共享密钥认证确认消息中还可以包含密钥重放计数器,其值和STA2的共享密钥认证响应中地密钥重放计数器值相同。
第四步,STA2收到STA1的共享密钥认证确认后,利用自己计算的会话密钥验证STA1计算的密文是否正确。如果错误,则断开连接。如果正确,安装该会话密钥,并更新密钥重放计数器值。
上述认证和密钥协商过程成功后,双方用协商的保密算法和密钥进行通信保密。
通过本发明的共享密钥认证和会话密钥协商方法,自组网中无线终端可以通过预先配置共享密钥进行相互认证和协商会话密钥,而不再需要基础模式中繁琐的公钥证书申请和安装过程。本发明的共享密钥认证和会话密钥协商方法可以保证共享密钥的保密,具有很高的安全性;并且流程交互消息少,计算量小,实现效率高。
【附图说明】
图1是共享密钥认证和会话密钥协商流程图;
图2是共享密钥认证和会话密钥协商的一个实例。
【具体实施方式】
当WLAN系统的STA工作在自组网模式下,可以预先在各个STA中配置好共享密钥。共享密钥的配置可以采取输入口令,再由口令映射到密钥的实践方式。因为对于一般的用户来说,口令更容易记忆和处理。
参考图2所示,假设自组网中两个无线终端STA1和STA2已经具有同一共享密钥SK,它们之间的共享密钥认证和会话密钥协商过程为,
1.STA1产生出安全随机数N1。
2.STA1将随机数N1和STA1支持的密码算法列表(Cipher suite list)组成共享密钥认证请求消息,以明文发送给STA2。
3.STA2收到STA1的共享密钥认证请求消息后,依据本地策略检查STA1支持的安全算法中是否有STA2支持的算法,如果没有,则断开与STA1的连接;如果有,则选择该算法为会话保密算法(Cipher suite),并且
4.检查STA2是否保存有STA1要求认证的共享密钥,如果没有,则断开连接;如果有,则
5.STA2产生出安全随机数N2。
6.STA2依据双方地址,双方随机数和共享密钥计算会话密钥PK。
PK=PRF(A1,A2,N1,N2,SK)
其中A1、A2为STA1和STA2的MAC地址;PRF为密码学上的伪随机数产生函数,当然也可以采用其他的密码学函数。
7.STA2用选择的会话保密算法和计算出的会话密钥对两个随机数的串连进行加密,产生密文[N1,N2]PK。
8.STA2将选择的会话保密算法Cipher suite、密钥重放计数器KRC、随机数N2和上面计算得到的密文[N1,N2]PK,一起构成共享密钥协商响应消息发送给STA1。
9.STA1收到STA2的共享密钥协商响应后,检查其中的会话保密算法是否是自己支持的算法,如果不是,则断开连接;否则,
10.STA1检查消息中的密钥重放计数器值是否比当前保存的值小:如果是,则说明是重放的旧消息;否则
11.STA1从共享密钥响应消息中取出随机数N2,并采用步骤6中方法计算会话密钥PK。
12.STA1计算随机数N1和N2串连后加密的密文,并与收到的共享密钥协商响应消息中的密文[N1,N2]PK对照。如果不同,则断开连接;如果两者相同,则
13.STA1用共享密钥PK对N2加密得到密文[N2]PK。
14.STA1将共享密钥认证响应中的KRC和上面计算得到的密文[N2]PK一起构成共享密钥认证确认消息,发给STA2。
15.STA2收到STA1的共享密钥确认消息后,比较消息中的KRC和STA2发送的共享密钥响应消息中的KRC:如果不同,则断开连接;如果相同,则
16.用会话密钥验证密文[N2]PK的正确性:如果错误,则断开连接,否则
17.STA1自增密钥重放计数器KRC的值。
18.双方开始用协商的会话保密算法和密钥进行保密通信。