WPA3 PRF(SHA256) Python中的密钥推导算法

问题描述 投票:0回答:0

我在 WPA2-PMF 上成功地使用了密钥派生算法(customPRF512(key,A,B) 称为 PRF(SHA1))。然而,在 WPA3 上,该算法不起作用,因为它没有生成 PTK、KCK 等的预期值(见下文)。我从我的研究中了解到我需要使用 SHA-256-PRF (PRF(SHA256))。问题是适用于 WPA3 的 SHA-256-PRF 密钥派生算法实现(例如 Python)是什么?这是 WPA3 wpa_supplicant 日志:

WPA: PTK derivation using PRF(SHA256)
WPA: PTK derivation – A1=ec:08:6b:08:49:47 A2=a4:2b:b0:c0:61:f9
WPA: Nonce1 – hexdump(len=32): 0c 0d 42 28 d1 d0 f6 0a 5c 28 30 b6 b3 ee 44 7c 19 86 68 8a 3d 7c d7 a3 ec 1c 78 77 12 91 4c bd
WPA: Nonce2 – hexdump(len=32): e5 0c e2 8e 36 74 44 3f d0 09 90 95 d1 37 1b e7 54 02 ee cf 8d 84 e5 8b c2 25 c2 09 82 80 bc 3a
WPA: PMK – hexdump(len=32): 3e f6 be 81 88 cd 53 58 9c f9 aa 4f 14 2d bd 3d df fc 99 e1 f9 fa e0 c2 bc b6 05 73 1d f4 d5 8f
WPA: PTK – hexdump(len=48): 0b 64 02 2d 23 71 7d 0f ab 4a cd 58 cc 10 a6 d4 89 9c b5 61 e5 42 0c 78 7c 25 27 47 93 bd 85 18 14 b9 f9 aa a5 c8 fd 52 d3 0f 4a ea ec 26 20 98
WPA: KCK – hexdump(len=16): 0b 64 02 2d 23 71 7d 0f ab 4a cd 58 cc 10 a6 d4
WPA: KEK – hexdump(len=16): 89 9c b5 61 e5 42 0c 78 7c 25 27 47 93 bd 85 18
WPA: TK – hexdump(len=16): 14 b9 f9 aa a5 c8 fd 52 d3 0f 4a ea ec 26 20 98

我尝试修改以下代码来创建PRF(SHA256),但我的尝试都没有成功。

def customPRF512(pmk,A,B):
    blen = 128
    i = 0
    R = ''
    while i <= ((blen*8+159)/160):
        hmacsha1 = hmac.new(key,A+bytes(chr(0x00),'UTF-8')+B+bytes(chr(i),'UTF-8'),hashlib.sha1)
        i += 1
        R = R + hmacsha1.hexdigest()
    return R[:blen]

A = bytes("Pairwise key expansion",'utf-8')
B = min(AP_addr,STA_addr)+max(AP_addr,STA_addr)+min(A_nonce,S_nonce)+max(A_nonce,S_nonce)
key sha256 sha1 wpa
© www.soinside.com 2019 - 2024. All rights reserved.