关于成对密钥与组密钥的结构
  1.成对密钥
  PMK 是基本元素
  然后通过 supplicant MAC(SA), supplicant nouces(SN),authenticator MAC(AA),authenticator nouces(AN)进行扩展获得PTK (Pairwise Transient Key) 成对传输密码.
  公式如下:
     PTK=SHA1_PRF(PMK,Len(PMK),"Pairwise key expansion",MIN(AA,SA)||MAX(AA,SA)||MIN(AN,SN)||MAX(AN,SN))

公式参考了:http://blog.csdn.net/gueter/article/details/4812822

PTK 有两种格式:TKIP,和CCMP.其中TKIP是动态WEP所用RC4+Michael完整性校验的组成;CCMP是全新的组密码AES方式

TKIP和CCMP的PTK被分成下面部分
   1.EAPOL KCK(key confirmation key) 密钥确认密钥,用来计算密钥生成消息的完整性
   2.EAPOL KEK(key Encryption key) 密钥加密密钥,用来加密密钥生成消息
   3.TKIP TK(CCMP TK) 这部分是正真用来进行数据加密的
   4.TKIP MIC key  用于Michael完整性校验的(只有TKIP有)

2.组密钥
     GMK主组密钥(group master key)以作为临时密钥的基础和成对密钥一样扩展获得GTK (groupTransient Key) 
     公式如下:
     GTK=PRF-X(GMK,"Group key expansion",AA||GN)
     GN - Authenticator生成的 Nonce 
     AA - Authenticator MAC地址
     注意和成对密钥扩展不同的是没有supplicant的 AA,AN

其中并没有密钥确认密钥,和密钥加密密钥,因为密钥交换是以成对EAPOL密钥,来分配密钥的

更新成对密钥的4次握手
    在更新成对密钥前需要进行4次握手,成对密钥是用来加密单播帧的(就是AP与工作站之间的通讯帧),4次握手就是为了完成密钥的交换,成对密钥只有1个,通过交换让双方都知道

在WPA-PSK中 PMK=PSK 由ssid,和密码等导出,公式如下:
    PMK=PSK= pdkdf2_SHA1(passphrase,SSID,SSID lenth,4096)
    所以第1次Autenticator 将自己的nonce 传给supplicant ,这时候supplicatn 就可以计算PTK了.接下来supplicant 将自己的nonce和第1次和网络关联是所取得的安全参数传给Authenticator,这样Authenticator 获得了supplicant 的nonce ,就可以计算PTK了.注意  第2步的整个消息是用EAPOL密钥确认密钥(KCK)来进行完整性校验值校验的,如果authenticator根据已经算出的PTK中的KCK对整个消息进行完整性校验未成功,握手就失败了这时消息还不能通过KEK加密,是因为还没有计算出PTK

到了第3步双方的PTK都已经就绪,这时authenticator将一个消息传送给supplicant,次消息包含成对密钥的序列号,(可能是生成TK的次数?)并且包含GTK(组临时密钥),注意这时authenticator已经可以生成GTK了.GTK 通过EAPOL KEK加密,然后整个消息通过KCK来认证

第4步supplicant 再次确认,并告诉authenticator已经接收到密钥生成消息,可以开始使用TK了,次消息通过KCK认证(因为是ACK,不需要再用KEK加密了)

更新组密钥握手:
       1.Authenticator送出GTK,这个GTK是利用前面成对密钥4次握手的成果PTK中的EPAOL KEK 来加密,EAPOL KCK 来验证
       2. supplicant 送出ACK消息,此消息通过KCK 验证

PTK的生成元素中的PMK获得
  1. WPA-PSK 
     PMK=PSK= pdkdf2_SHA1(passphrase,SSID,SSID lenth,4096),其中passphrase,SSID ,是身份验证前authenticator,和supplicant都应该知道的

2. 802.1X+EAP中
    PMK =L(MSK, 0, 256)
    MSK 需要通过802.1X交换获得

其中EAP-Request/Method 中Method 表示EAP认证的方式,如下:

4 - MD5 Challenge      EAP 中类似CHAP的认证方式
6 - GTC                原本打算与RSA SecurID之类的token card 一起使用
13 - EAP-TLS            以数字证书相互认证
21 - TTLS               隧道式TLS;以TLS加密保护较弱的身份验证方式
25 - PEAP               防护型EAP;以TLS加密保护较弱的EAP验证方式
18 - EAP-SIM            SIM卡方式进行身份验证
29 - MS-CHAP-V2

Method 之后如果认证成功,authenticator会发出EAP-Success表示授权使用连接端口,再接下来AP就可以立即使用EAPOL-Key消息将MSK发给supplicant,以后就和WPA-PSK一样用MSK最终导出PTK(MSK,PMK就是PTK的密钥生成密钥)

其中EAPOL(EAP over lan)的帧格式如下

-------------------------------------------------------------------------------
| 802.11 header | SNAP header | Ethernet Type (88-8E) |  Version |Packet Type |
-------------------------------------------------------------------------------

EAPOL 是EAP 的扩展,除了P156相关EAP信息,EAPOL还加入了一些额外的消息让EAP 能够适用于基于连接端口的LAN环境

EAPOL 消息的类型:EAP-Packet   包含了1个经过封装的 EAP帧EAPOL-Start  申请者可以主动送出EAPOL-Start帧,不必等候来自认证者的质询信息,认证者会送出1个 EAP-Request/Identity帧作为响应EAPOL-Logoff 当某个系统不再需要使用网络时,便可以发出1个EAPOL-Logoff帧让连接端口回到未授权状态EAPOL-Key    EAPOL 可以用来交换加密密钥信息 (0000 0011)EAPOL-Encap-sulated-ASF-Alert

WPA/RSN四次握手和PTK

WPA/RSN使用四次握手(4-Way Handshake)的方式生成所需的密钥。

作用

四次握手通过一系列的交互,从PMK(Pairwise Master Key)生成PTK(Pairwise Transient Key)。PMK来自MSK(Master Session Key),是MSK的前256位,32字节。

本文的主要目的是讲PTK,所以暂时忽略PMK和MSK。

PTK的内容

PTK包含3个部分,KCK(Key Confirmation Key),KEK(Key Encryption Key),TK(Temporal Key)。

PTK的总长度根据加密方式不同而不同:

当加密方式是TKIP时,PTK长512位,按顺序分别为KCK占128位,KEK占128位,TK占256位。

当加密方式是CCMP时,PTK长384位,按顺序分别为KCK占128位,KEK占128位,TK占128位。

KEK和KCK是给EAPOL-Key,也就是四次握手时,加密和完整性验证用的。TK用于后续的数据加密。

四次握手的报文都是基于EAPOL-Key的。EAPOL-Key的结构如下:

PTK的生成

生成PTK,需要5个必要元素,PMK,ANonce(Nonce 1),SNonce(Nonce 2),Authenticate MAC(MAC 1),Supplicant MAC(MAC 2)。如下图:

2个Nonce分别是Authenticator和Supplicant生成的随机数。

这张图里的输出包含4个部分,其实Data Encr和Data MIC合起来就是前面提到的TK。而EAPOL Encr/MIC分别对应前面的KEK和KCK。

四次握手的交互过程

下面的交互仅仅是一个流程,对内部的一些数据的处理就不细说了。

1/4:Authenticator -> Supplicant

Authenticator把ANonce送给Supplicant。Supplicant收到1/4后,就有了生成PTK的所有元素。因为1/4里同时也包含了Authenticator的MAC地址。

2/4:Supplicant -> Authenticator

Supplicant计算出PTK,把SNonce和自己的MAC地址送给Authenticator。同时,从2/4报文开始,后面的每个报文都会有MIC。1/4没有。

3/4:Authenticator -> Supplicant

Authenticator向Supplicant证明自己有有效的,同样有MIC加入其中

4/4:Supplicant -> Authenticator

仅是对3/4的一个ACK。说明PTK已经装好,后面的数据可以加密了。

关于4次握手及握手之前PMK的生成的理解相关推荐

  1. 简述TCP三次握手和四次挥手的过程和理解

      简述TCP三次握手和四次挥手的过程和理解   在讲解之前先来熟悉一下TCP报文头部   源端口.目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的, 而一个计算机端口某个时刻只能被一个进 ...

  2. 握手引理_图论中的握手引理–握手定理

    握手引理 Hello Everyone, 大家好, Today we will see Handshaking lemma associated with graph theory. Before s ...

  3. TCP三次握手与四次挥手,超级易理解

    文章目录 前言 一.TCP/IP 协议族 二.TCP的三次握手四次挥手 三次握手 四次挥手 三.常见面试题 拓展 前言 大佬的思想,小猿只是总结搬运工. 一.TCP/IP 协议族 在互联网使用的各种协 ...

  4. 三次握手和四次挥手图解_图解 TCP 三次握手和四次挥手

    人到中年,难免长胖发福. 大家好,我是你们有点严肃的胖福(hu), 这里我们聊学习和工作. - 内容提要 - TCP 有 6 种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) ...

  5. TCP 三次握手、四手挥手,这样说你能明白吧!

    TCP协议全称为:Transmission Control Protocol,是一种面向链接.保证数据传输安全.可靠的数据传输协议.为了确保数据的可靠传输,不仅需要对发出的每个字节进行编号确认,还需要 ...

  6. 【图文讲解】TCP为啥要3次握手和4次挥手?握两次手不行吗?

    TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急) 一.TCP三次握手 第一次握手 客户端向服务器发出连接请求报文,这时报文首部中的同 ...

  7. TCP三次握手,四次分手

    1.什么是HTTP连接 http是建立在TCP协议之上的一种应用. 最显著的特点是每次请求,都需要服务器响应,请求结束后,会主动释放连接. 1)在HTTP 1.0中,客户端的每次请求都要建立一次单独的 ...

  8. TCP之三次握手四次挥手

    原文地址 TCP报文格式 TCP提供一种面向连接的,可靠的字节流服务. TCP首部的数据格式如下.(如果不计任选字段,通常是20个字节) 字段分析 源端口:源端口和IP地址的作用是标识报文的返回地址. ...

  9. TCP之三次握手四次挥手 1

    来源:https://gyl-coder.top/ThreeHandshakesAndFourWaves/ TCP报文格式 TCP提供一种面向连接的,可靠的字节流服务. TCP首部的数据格式如下.(如 ...

最新文章

  1. 【怎样写代码】确保对象的唯一性 -- 单例模式(三):单例模式
  2. linux改组ID号会对数据库有影响么,truncate操作导致DATA_OBJECT_ID改变
  3. NumPy Ndarray 对象
  4. P3157 [CQOI2011]动态逆序对 (CDQ解决三维偏序问题)
  5. 软件项目周报_软件产品研发流程
  6. (转)学习密度与专注力
  7. IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm
  8. linux c之用fwrite和fread实现文件的复制
  9. 好男人往往找不到女朋友
  10. mysql主从应用_MySQL主从复制应用、主从复制原理
  11. Android两种 旋转Bitmap方法
  12. Atitit zip解压文件 java use apache ant.jar C:\0wkspc\hislog\src\main\java\com\attilax\compress\ZipUt
  13. 川大计算机复试公平吗,看清华、川大这波操作,你还会担心网络复试会不公平吗?...
  14. 装tensorflow未果
  15. 幼儿园编程机器人课程介绍
  16. Scrum 敏捷项目管理
  17. 杰里之AC696 系列 2M 的 SDK 开蓝牙一拖二出现奇怪的问题【篇】
  18. 国内可以使用的英文搜索引擎
  19. 60题计算机专业知识点,计算机考试题库:计算机考试练习题(60)
  20. 比 Navicat 还要好用,功能还很强大的数据库管理工具!

热门文章

  1. 模型资源之一:预训练模型应用工具 PaddleHub
  2. mysql的dbconn_mysql面向对象中$conn-query()是什么意思?
  3. vs 运行c++调试窗口不显示运行结果【脱坑】
  4. 读书笔记——《设计心理学2:如何管理复杂》教你应付复杂
  5. 博士申请 | 香港中文大学(深圳)徐扬生院士团队招收人工智能全奖博士生
  6. Windows 10 1709 MSDN 版本下载 ed2k 链接
  7. recat 基本学习
  8. 国内MBA项目提前批面试剩余场次:浙大iMBA今天最后一批截止
  9. 用Gmail收取Hotmail里的邮件
  10. 恒生关闭HOMS系统开立功能