简介 正如在 2005 年 5 月的“网络专家”专栏文章 Wi-Fi Protected Access 2 (WPA2) Overview(英文)中所述,Wi-Fi Protected Access 2 (WPA2) 是由 Wi-Fi Alliance 授予的产品认证,用来证明无线设备符合 IEEE 802.11i 标准。 IEEE 802.11i 标准用“高级加密标准”(AES) 的一种特定模式 -“计数器模式密码块链接消息身份验证代码”(CBC-MAC) 协议 (CCMP) - 正式取代了原 IEEE 802.11 标准中的“有线对等保密”(WEP)。CCMP 既可以实现数据机密性(加密),又可以实现数据完整性。本文介绍了使用 AES CCMP 的 WPA2 实现的详细信息,此实现可对 802.11 无线帧进行加密、解密以及数据完整性验证。 WPA2 的加密功能 正如 2004 年 11 月的“网络专家”专栏文章 Wi-Fi Protected Access 数据加密和数据完整性中所述,原有 IEEE 802.11 标准中的 WEP 存在加密弊端。下表说明了 WPA2 是如何解决这些弊端的。 WEP 弊端 WPA2 是如何解决这些弊端的 初始化向量 (IV) 太短 在 AES CCMP 中,IV 被替换为“数据包编号”字段,并且其大小将倍增至 48 位。 不能保证数据完整性 采用 WEP 加密的校验和计算已替换为可严格实现数据完整性的 AES CBC-MAC 算法。CBC-MAC 算法计算得出一个 128 位的值,然后 WPA2 使用高阶 64 位作为消息完整性代码 (MIC)。WPA2 采用 AES 计数器模式加密方式对 MIC 进行加密。 使用主密钥而非派生密钥 与 WPA 和“临时密钥完整性协议”(TKIP) 类似,AES CCMP 使用一组从主密钥和其他值派生的临时密钥。主密钥是从“可扩展身份验证协议-传输层安全性”(EAP-TLS) 或“受保护的 EAP”(PEAP) 802.1X 身份验证过程派生而来的。 不重新生成密钥 AES CCMP 自动重新生成密钥以派生新的临时密钥组。 无重播保护 AES CCMP 使用“数据包编号”字段作为计数器来提供重播保护。 WPA2 临时密钥 WEP 对单播数据加密使用单一密钥,对多播和广播数据加密通常分别使用单独的密钥,与 WEP 不同的是,WPA2 对各个无线客户端无线 AP 对(即成对临时密钥)使用由四个不同密钥构成的一组密钥,而对多播和广播通信量使用由两个不同密钥构成的一组密钥。 用于单播数据和 EAP over LAN (EAPOL)-Key 消息的成对密钥组由下列密钥构成: " 数据加密密钥:用于加密单播帧的 128 位密钥。 " 数据完整性密钥:用于计算单播帧 MIC 的 128 位密钥。 " EAPOL-Key 加密密钥:用于加密 EAPOL-Key 消息的 128 位密钥。 " EAPOL-Key 完整性密钥:用于计算 EAPOL-Key 消息 MIC 的 128 位密钥。 WPA2 使用与 WPA 相同的四次握手进程派生成对临时密钥。有关详细信息,请参阅 Wi-Fi Protected Access 数据加密和数据完整性中的“WPA 临时密钥”一节。 WPA2 加密和解密过程 AES CCMP 使用 CBC-MAC 来计算 MIC 和 AES 计数器模式以加密 802.11 有效负载和 MIC。为了计算 MIC 值,AES CBC-MAC 将使用下列过程: 1. 使用 AES 和数据完整性密钥加密第一个 128 位块。这将产生一个 128 位的结果 (Result1)。 2. 对 Result1 与正在进行 MIC 计算的后 128 位数据执行异或 (XOR) 操作。这将产生一个 128 位的结果 (XResult1)。 3. 使用 AES 和数据完整性密钥对 XResult1 进行加密。这将产生 Result2。 4. 对 Result2 与后 128 位数据执行 XOR。这将产生 XResult2。 在步骤 3-4 中对数据的其余 128 位块重复同样操作。最终结果中的高阶 64 位即 WPA2 MIC。下图说明了 MIC 的计算过程。 查看原尺寸图像 为了计算 IEEE 802.11 帧的 MIC,WPA2 将构造以下内容: 查看原尺寸图像 " 第一个块是一个 128 位的块,将在本文后面对其进行介绍。 " MAC 报头是指 802.11 MAC 报头,其在传送过程中可进行更改的字段值被设置为 0。 " CCMP 报头 8 字节长,包含 48 位的“数据包编号”字段和其他字段。 " 此外还增加了填充字节(设置为 0),以确保直至明文数据的整个数据块部分恰好为整数个 128 位块。 " 数据是 802.11 有效负载的明文(未加密)部分。 " 此外还增加了填充字节(设置为 0),以确保包括明文数据的 MIC 数据块部分恰好为整数个 128 位块。 WPA2 的数据完整性与 WEP 和 WPA 的均不相同,它可同时为 802.11 报头(除可更改字段外)和 802.11 有效负载提供数据完整性。 MIC 计算的第一个块由下列内容组成: 查看原尺寸图像 " “标志”字段(8 位)被设置为 01011001,它包含各种标志,如指出 802.11 帧中使用的 MIC 长为 64 位的标志。 " “优先级”字段(8 位)被设置为 0,留待今后使用。 " “源地址”(48 位)取自 802.11 MAC 报头。 " “数据包编号”(48 位)取自 CCMP 报头。 " 明文数据的字节长度(16 位)。 AES 计数器模式加密算法使用下列过程: 1. 使用 AES 和数据加密密钥加密第一个 128 位计数器。这将产生一个 128 位的结果 (Result1)。 2. 对 Result1 与正在进行加密的第一个 128 位块数据执行异或 (XOR) 操作。这将产生第一个 128 位加密块。 3. 增加计数器的值并使用 AES 和数据加密密钥对其进行加密。这将产生 Result2。 4. 对 Result2 与后 128 位数据执行 XOR。这将产生第二个 128 位加密块。 AES 计数器模式对数据的其余 128 位块重复步骤 3-4,直到最后一个块为止。对于最后一个块,AES 计数器模式将对已加密的计数器与剩余的位执行 XOR 操作,从而产生与最后一个数据块长度相同的加密数据。下图说明了 AES 计数器模式过程。 查看原尺寸图像 AES 计数器模式的第一个计数器值由下列内容组成: 查看原尺寸图像 " “标志”字段(8 位)被设置为 01011001,与用于 MIC 计算的“标志”值相同。 " “优先级”字段(8 位)被设置为 0,留待今后使用。 " “源地址”(48 位)取自 802.11 MAC 报头。 " “数据包编号”(48 位)取自 CCMP 报头。 " “计数器”字段(16 位)被设置为 1,并且仅当 802.11 有效负载被分为较小的有效负载时才会增加。请注意,此“计数器”字段与 AES 计数器模式加密算法中使用的 128 位计数器值不同。 为了加密单播数据帧,WPA2 将使用下列过程: 1. 将第一个块、802.11 MAC 报头、CCMP 报头、数据长度和填充字段输入到 CBC-MAC 算法,同时输入数据完整性密钥以产生 MIC。 2. 将第一个计数器值与数据与计算的 MIC 数据组合输入到“AES 计数器”模式加密算法,同时输入数据加密密钥以产生加密数据和 MIC。 3. 将包含“数据包编号”的 CCMP 报头添加到 802.11 有效负载的加密部分,并使用 802.11 报头和报尾封装结果。 下图说明了单播数据帧的 WPA2 加密过程。 查看原尺寸图像 为了解密单播数据帧及验证数据完整性,WPA2 将使用下列过程: 1. 根据 802.11 和 CCMP 报头中的值确定第一个计数器值。 2. 将第一个计数器值和 802.11 有效负载的加密部分输入到 AES 计数器模式解密算法,同时输入数据加密密钥以产生加密数据和 MIC。在解密时,AES 计数器模式将对已加密的计数器值与已加密的数据块执行 XOR 操作,以产生解密数据块。 3. 将第一个块、802.11 MAC 报头、CCMP 报头、数据长度和填充字段输入到 AES CBC-MAC 算法,同时输入数据完整性密钥以计算 MIC。 4. 将 MIC 的计算值与解密后的 MIC 值进行比较。如果 MIC 值不匹配,WPA2 将自行丢弃该数据。如果 MIC 值匹配,WPA2 将把该数据传递到更高的网络层进行处理。 下图说明了单播数据帧的 WPA2 解密过程。 查看原尺寸图像 |
Powered by Discuz!
© 2003-2024 广州威思信息科技有限公司