Wi-Fi AKM和cipher suite

简介

AKMcipher suite保护了Wi-Fi中的数据传输。

  • cipher suite:可以理解为一种算法,输入明文、密钥以及其他参数,输出密文以及MIC,保证数据的机密性和完整性。
  • AKM:规定了如何进行WLAN连接中的authentication,负责生成cipher suite中用到的密钥。

单播中会用到的三种key

  • PMK(pairwise master key):AKM 的产物之一,用于派生后续会用到的PTK、TK
  • PTK(pairwise transient key):由PMK 派生而来,分为三部分,KCK、KEK、TK,例如一个384位的PTK(SAE 00-0F-AC:8 + CCMP-128),它的前128位是KCK,中间128位是KEK,最后128位为TK
  • TK(temporal key):cipher suite中的密钥

需要明确一点,这三种key的生成都是AKM的范畴,也就是说,他们的生成方式是由AKM规定的。但不同的cipher suite对TK(当然也会影响PTK)的长度有要求。

PMK

AKM 规定了PMK 的生成方式,以下是常见AKM的PMK生成方式。

  • WPA/WPA2-PSK(00-0F-AC:2):直接使用PSK 作为PMK,PSK 由如下公式计算得出。所有association 的PMK 都是相同的。
    P S K = P B K D F 2 ( p a s s P h r a s e , s s i d , 4096 , 256 / 8 ) PSK = \mathrm{ PBKDF2}(passPhrase, ssid, 4096, 256/8) PSK=PBKDF2(passPhrase,ssid,4096,256/8)
  • SAE(00-0F-AC:8):在authentication过程中STA和AP协商PMK
  • 各种EAP认证:EAP认证成功后authenticator向supplicant分发MSK,MSK截断一定长度得到PMK

AKM 不仅规定了PMK 的生成方式,还规定了PMK 的长度。例如,大部分AKM都采用256位的PMK,而suite_B_192(00-0F-AC:12) 则使用384位的PMK。(IEEE80211-2020 12.7.1.3 Pairwise key hierarchy)。

利用PMK生成PTK(包含TK)

PMK 不会直接用于数据加密,而是会用来派生PTK。如下图所示,在802.11中,使用伪随机函数PRF 生成PTK。

  • AA: Authenticator address, 即 AP的地址
  • SPA: Supplicant address, 即STA的地址
  • ANonce、SNonce: 在EAPOL四次握手中分别由AP和STA产生的随机数

PTK 生成方式

PRF-Length

PRF-Length 是一个伪随机函数,它接受密钥以及数据作为输入,生成一个新的密钥。作为参数输入的密钥是PMK,而生成的新的密钥是PTK。Length代表它输出的密钥的长度。

PRF-Length 的形式如下。它的具体实现就是利用HMAC-Hash多次生成MAC(消息验证码) 然后拼接在一起,直至达到长度Length。

  • HMAC-Hash: 它代表一个消息校验码算法。Hash函数只有一个参数,即需要进行Hash的数据。HAMC可以将Hash函数转换为消息验证码生成算法,转换后的HMAC-Hash接受两个参数,key以及需要验证的数据,HMAC-Hash输出的结果与原Hash长度相同。
  • Length:输出结果的长度,例如PRF-384输出384位的结果。
    在这里插入图片描述
    从PRF-Length 的实现也可以看出生成PTK 所需的PRF 由HMAC-Hash 和Length 所确定。HMAC-Hash 是由AKM 所规定的,而Length 则由AKM 和 Cipher suite 共同决定。PTK 由三部分组成,KCK、KEK 和 TK,如下表所示,AKM决定了KCK和KEK的长度,而cipher suite 规定了TK 的长度。例如,当AKM 是SAE(00-0F-AC:8),cipher suite 是 CMMP-128 时,应使用PRF-384,若AKM是PSK( 00-0F-AC:2) 而cipher suite 是TKIP,则应使用PRF-512。
AKMIntegrity algorithmKCK_bitsSize of MICKey wrap algorithmKEK_bitsKCK2_bitsKEK2_bits
DeprecatedHMAC-MD512816ARC412800
00-0F-AC:1HMAC-SHA-1-12812816NIST AES Key Wrap12800
00-0F-AC:2 (PSK)HMAC-SHA-1-12812816NIST AES Key Wrap12800
00-0F-AC:3AES-128-CMAC12816NIST AES Key Wrap12800
00-0F-AC:4AES-128-CMAC12816NIST AES Key Wrap12800
00-0F-AC:5AES-128-CMAC12816NIST AES Key Wrap12800
00-0F-AC:6AES-128-CMAC12816NIST AES Key Wrap12800
00-0F-AC:8 (SAE)AES-128-CMAC12816NIST AES Key Wrap12800
00-0F-AC:9AES-128-CMAC12816NIST AES Key Wrap12800
00-0F-AC:11HMAC-SHA-25612816NIST AES Key Wrap12800
00-0F-AC:12HMAC-SHA-38419224NIST AES Key Wrap25600
00-0F-AC:13HMAC-SHA-38419224NIST AES Key Wrap25600
00-0F-AC:14AES-SIV-25600AES-SIV-25625600
00-0F-AC:15AES-SIV-51200AES-SIV-51251200
00-0F-AC:16AES-SIV-256/AES-128-CMAC00/16AES-SIV-256/NIST AES Key Wrap256128128
00-0F-AC:17AES-SIV-512/HMAC-SHA-38400/24AES-SIV-512/NIST AES Key Wrap512192256
Cipher suiteKey length (octets)TK_bits (bits)
WEP-40540
WEP-10413104
TKIP32256
CCMP-12816128
BIP-CMAC-12816128
GCMP-12816128
GCMP-25632256
CCMP-25632256
BIP-GMAC-12816128
BIP-GMAC-25632256
BIP-CMAC-25632256

EAPOL 4-way handshake

EAPOL 4-way handshake 中用到的帧是 EAPOL key frame,它的格式如下。
在这里插入图片描述

PTK 的生成

  • 在message 1 中,AP 向 STA 发送随机数 ANonce。
  • STA 收到 message 1 后,便可根据 ANonce、SNonce、AA、SPA 以及 PMK 生成 PTK。然后向AP发送message 2。
  • AP 收到 message 2 后,从中可以获得SNonce,这是AP便集齐了计算PTK 所需的所有材料。这时AP会计算PTK,然后计算message 2 的MIC 并与 message 2 中的 MIC比较,若二者不一致,AP会丢弃掉message 2,不会做任何回复。在WPA2-personal中,如果输入了错误的密码,连接就会卡在这一步。

在这里插入图片描述

MIC 与 KCK

EAPOL 中的 MIC 用于确保EAPOL key frame没有被篡改。计算 MIC 需要一个key以及需要保护的数据作为输入。这个key便是KCK。计算MIC的算法与上文提到的HMAC-Hash 类似。计算MIC时有两点需要注意:

  1. 在计算EAPOL key frame的MIC是,输入到MAC算法中的frame body 的MIC 是初始化为零的。
  2. 有些EAPOL key frame中的Key Data field是加密的(例如message 3),对于这种frame计算MIC 时,先将Key Data进行加密,再通过MAC计算MIC。

在上面关于AKM的表格中我们可以看到,计算MIC的算法以及KCK的长度都是AKM 所决定的(Integrity algorithm)。

KEK 与 Key Data field

KEK用于加密 Key Data,KEK的长度以及加密算法由AKM决定(Key wrap algorithm)。

Cipher suite

cipher suite 直译为密码套件,可以对数据进行加密并生成MIC。在本文开头,我说cipher suite可以理解为一种算法,这是不太贴切的,因为cipher suite实际上拥有更丰富的内涵。cipher suite 规定了加密以及生成MIC所用的算法,同时也规定了用哪些材料作为这些算法的输入。CCMP 是常用的cipher suite,它的全称是 CTR with CBC-MAC protocol,将 cipher suite理解为一种协议确实更为贴切。下面就用CCMP介绍一下 cipher suite是如何工作的。

CCM 和 AES

AES 是一种加密算法,接受明文和密钥输出密文。
CCM 是一种工作模式,它可以利用AES 等块加密算法生成密文和认证标签。可以理解为AES 是原始的加密函数,CCM 调用AES 去实现更丰富的功能

特性纯AES(如ECB/CBC)AES-CCM
输出仅密文密文 + 认证标签
输入明文 + 密钥 (+IV)明文 + 密钥 + Nonce + AAD + Tlen
功能仅加密加密 + 认证
安全性依赖模式(如ECB不安全)同时保障机密性和完整性

CCMP

CCMP工作流程如下图所示可以看到,TK参与了对数据的加密。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值