分类 802.11 WLAN 下的文章

[读书笔记] 802.11 RSN WPA

IEEE 802.11 工作组是一个技术标准委员会, WIFI 联盟是主要的WIFI 设备厂家的联盟. 经过 WIFI 联盟的测试程序测试通过的, 可以打上 WIFI 的logo. 在这个测试中不是所有 802.11 的功能都是必须的, 同时还添加了一下其他小的功能, 来保证互操作性.

802.11i 定义了一种新的无线网络, 称之为: robust security network (RSN). RSN 只能和 RSN 设备互操作.
802.11i 对应于 RSN.
由于算法的不同, 老的 WEP 设备不能升级到 RSN 算法的网络.
transitional security network (TSN) 是一个介于 WEP 和 RSN的中间过度网络.

TKIP: Temporal Key Integrity Protocol. TKIP 是 RSN 网络下一个可选的 模式. 对应于 RC4 和 AES.

由于新的标准 RSN 迟迟不能完成, 即使完成, 也无法在现有支持 WEP的设备上通过软件升级使用, WIFI联盟 就想定义一个新的协议可以在现有设备上运行, 这个协议就是 TKIP, 但是TKIP 的审批需要很长时间, 于是WIFI 联盟就采用了一个基于 RSN 草案的安全方法, 但是仅仅采用TKIP算法, 这种新的RSN 之集的标准, 称之为: WPA (Wi-Fi Protected Access)

RSN 和 WPA 使用通用的架构和方式, RSN 让实现更灵活, WPA 则强调实现一种方式去实现网络. RSN 支持 AES 芯片加密, WPA 则主要是 TKIP.

[读书笔记] WEP 协议 及 加密的基本信息

802.11 WEP 的安全体现在2个部分, 分别是 认证 和 数据加密.

客户连接端连接到访问点之前都要经过 认证(Authentication) -> 关联(Association) 2个阶段.

即使是没有密码的访问点 (open network), 也需要 (Authentication)阶段: 客户连接端发出一个 Authentication request frame, 访问点返回一个 success Authentication response frame.

使用 WEP 加密的网络, 认证过程:

  1. 客户连接端发送一个认证请求消息
  2. 访问点回应一个挑战请求消息
  3. 客户连接段使用密码产生挑战请求答案消息
  4. 访问点回应成功接受或拒绝接受

这里的挑战请求可以理解为: 访问点发送一个随机字符串, 连接端使用密码去加密这个字符串, 发给访问点, 访问点用自己的密码也去加密, 对比结果.
以上这个过程并不能证明, 访问点就是真的访问点, 它只是发送一个随机字符串, 连接客户端就使用它的加密方法, 把结果给访问点了. 如果我们把加密方法虚拟为这个公式: 加密后字符 = 加密方法(随机字符串, 密码), 那么一个真正的访问点, 这3个数据都有, 一个假的访问点, 就有了: 加密后的字符 和 随机字符串, 如果公式是可逆的, 那么这个假的访问点就能推导出 密码了.

事实上, 大多数 WIFI 都没有使用密码认证, 而是设为 open network, 等 Association 之后, 进行加密数据传输.
后来, 很多厂家的 WEP 产品都 弃用 了认证阶段.

WEP 加密使用的是 RC4 算法.
WEP 最初的标准只能使用 40bit 的KEY, 后来厂家基本都扩展到104bit, WIFI 最后也接受了这个长度, 最后变成40~104 bit.
WEP 的密码是 40 ~ 104 bit, 也就是5 ~ 13 个 ASCII 码可打印字符. 另外有24 bit 的 Initialization Vector (IV), 每个包都使用不同的 IV. 这就是组成了128 bit 的加密强度.
RC4 使用上面 128 bit 的组合 Key 来对数据进行加密.
即使是一样的明文, 由于每个包使用不同的 IV , 所以生成的密文也不一样.
但是这个 IV 对于连接的另外一方, 却不知道, 所以它要传给对方, 并且是明文传过去的, 这样对方才能用它 加上自己的密码去解密.
由于IV 只有24bit, 24bit的可能值只有16777216个, 所以有大量的数据, 这个很快就会被遍历一遍.

在WEP 标准种有2种 WEP key, 分别是 Default Key(s) 和 Key mapping key(s)
Default Key(s): 所有的客户连接端和访问点都有共同的一个或一组key(最多4个, 多个是为了在key change 过程中使用);
Key mapping key(s): 每个客户连接端使用不同的key, 访问点有个key mapping 列表, 同时有个default key 用来广播什么的, 现在几乎没有厂商使用这种了.

你应该了解为什么当时WEP 标准对于 Default Key(s) 使用了4个key?

  1. 发送和接收使用不同的key -> 2 个;
  2. 当发生key 改变的时候 -> 2个.
    当然你用一个key 也是完全可行的.

ICV: Integrity Check Value
MAC : Media Access Layer
MSDU :(MAC service data unit)
加密之前的数据用 ICV, 加密之后的数据frame 用CRC (cyclic redundancy check)

数据从TCP/IP 层进入到 链路层之后, 在物理层发出去之前的过程:

  1. 计算 ICV, 追加到数据之后
  2. 产生 IV, 和 WEP key 组合在一块(WEP 可能是多个当中选一个)
  3. 初始化 RC4 加密引擎, 进行加密

发出的数据 : MAC header | 24bit IV | 8bit Key Id | 加密后的 (data + ICV) | CRC

更多关于 MAC header 的图例, 可以google 一下, 里面有个bit 是用来标明是不是 WEP 加密的.

由于 RC4 的线性流加密, 由于前几个可猜测的字节, 由于弱的IV, WEP 可以在有一定样本数据的情况下被破解.