网络安全协议

  TCP/IP协议族在设计时并没有考虑到安全性问题,信息在传输过程中的安全性无法保证,接收方无法确认发送方的身份,也无法判定接收到的信息是否与原始信息相同。

  因此,网络安全研究人员在链路层、网络层和传输层开发了相应的安全补充协议,期望在各个层次上分别达到保密性、完整性和不可抵赖性的安全目标。802.1X和EAP协议用于在链路层上实现发送方身份认证,IPSec和SSL分别在网络层和传输层利用密码技术实现了三个基本安全目标,802.11i协议族定义无线局域网WLAN的加密和完整性检测机制。

 

802.11i

  传统的WLAN安全协议WEP在加密和认证机制上存在重大缺陷,使得WLAN无法满足数据通信的安全要求,802.11i应运而生,解决了这个问题。

 

加密机制

  加密机制用于实现WLAN中数据传输的保密性和完整性,目前802.11i有两种机制,分别是临时密钥完整性协议(TKIP)和CCMP。

TKIP

  WEP协议加密机制的缺陷:

(1)静态配置密钥;

(2)属于相同BSS的所有终端共享只有224个密钥的一次性密钥空间;

(3)完整性检测机制依赖CRC校验算法,不可靠。

  因此,TKIP一方面尽量与WEP加密机制兼容以达到快速更新WLAN设备的安全机制;另一方面必须消除WEP的安全缺陷。

  TKIP与WEP的不同之处:

(1)临时密钥(TK)是基于用户分配,而不是基于MAC;

(2)TK在终端与AP建立安全关联SA时产生,在SA失效后会删除;

(3)TKIP用48位的序号计数器(TSC)取代WEP的24位初始向量IV,因此一次性密钥空间增长为248,由于发送方的MAC也参与一次性密钥的生成,保证在任何安全关联存在期间每个终端都不会有一次性密钥重复的问题,而且也可以防止重放攻击。

CCMP

  TKIP和WEP本质上属于流加密,因为他们的加密算法只是异或操作,因此安全性完全依赖于一次性密钥的空间大小和密钥不重复,另外,TKIP的一次性密钥与伪随机数种子一一对应,攻击者有可能根据截获到的一次性密钥推导出WEP密钥和临时密钥TK,从而攻破TKIP的安全机制。

  CCMP工作过程:

(1)首先将MAC帧头部中需要在传输过程中保证完整性的字段作为附加认证数据,包括地址字段、控制字段和其他在传输时应该保持不变的字段。

(2)将6字节的源MAC地址(SA)、6字节的报文编号(PN)和1字节的固定为0的优先级字段组成13字节的随机数,保证用不同的密钥流加密不同的帧,同时也可以防止重放攻击,这里PN与TKIP的TSC功能类似。

(3)CCMP采用AES算法加密,采用128比特的临时密钥TK。

 

安全关联

  802.11i的安全关联(经过身份认证并动态分配临时密钥的关联称为安全关联)过程分为认证过程和密钥分配过程。802.11i同样使用802.1X和EAP进行认证,但是与LAN不同之处在于,为了保证安全,用户也需要认证AP的身份,因此它是一个双向身份认证的过程。当认证结束后,双方具有相同的预主密钥(PMK),该密钥可以使双方预共享的密钥,也可以是双方在认证过程中产生的对称密钥,下面是主机和AP之间的密钥分配过程:

(1)主机收到AP传输的随机数AN后,自己也生成一个随机数SN,然后基于双方的MAC地址、AN、SN、PMK,生成成对过渡密钥(PTK),PTK只用于和该关联有关的AP和主机。

(2)PTK中包含两个密钥,分别是证实密钥(CK)和加密密钥(EK)。CK用于对双方进行的密钥产生过程进行证实,EK用于加密整个密钥产生过程中传输的信息。另外,TKIP和CCMP生成的PTK有所不同。

(3)主机生成密钥后,向AP发送随机数SN,以及由CK加密的帧的散列码MIC,用于证实主机的密钥生成过程。

(4)AP收到SN后,使用与主机相同的方式产生PTK,然后生成相同的MIC与主机发送的散列码进行比较,证实主机的密钥生成过程的正确性。

(5)AP再次发送SN、由CK加密的帧的散列码MIC,以及由EK加密的临时组播密钥(GTK),让主机证实AP的密钥产生过程。

 

无线破解

  通常所说的无线破解并不是指攻击TKIP或者CCMP协议,而是通过抓取密钥分配过程的前两个报文,得到AN、SN后,结合AP和主机的MAC地址,对预共享的主密钥进行穷举攻击,生成不同的PTK,然后与MIC值进行匹配,匹配成功即表明搜索到正确的PSK。

  无线破解的经典工具是aircrack-ng,它是跨平台工具。

  以Linux为例,aircrack-ng破解的主要流程如下:

(1)激活无线网卡的报文捕获功能:

  airmon-ng check kill       //结束可能与报文捕获有冲突的进程

  airmon-ng start wlan0   //wlan0为无线网卡名字,通常会生成一个称为wlan0mon的监视网卡

(2)开始捕获报文,首先获得AP的ESSID号、BSSID(即MAC地址)、信道号等信息,然后针对具体的AP进行捕获;

  airodump-ng wlan0mon                  //捕获指定AP的报文,格式为标准的pcap格式

  airodump-ng --essid AP的ESSID --channel 信道号 --output -format pcap -w 输出的文件名 wlan0mon

(3)字典破解

  aircrack-ng -w 字典 报文文件

 

  由于本机是笔记本电脑,软件无法捕获笔记本电脑内置的网卡报文,所以没有做相关实验,待之后有机会用台式做一下实验。