有线等效加密(WEP)标准是802.11无线安全早期的解决方案,WEP并不安全。

既然WEP并不安全,为什么还要学习WEP呢?

  1. WEP简单,相比后续出现的加密协议,它不要求有多么强大的计算能力。一些老的设备,特别是缺乏足够处理能力的手持设备,WEP已经是最佳选择;
  2. 较新的技术,如TKIP,仍旧会用到WEP的帧处理能力;

1. WEP的密码学背景

WEP用以保护数据的RC4密码属于对称性(密钥)流密码(stream cipher),流密码会用到称为密钥流(keystream)的位流,密钥流随后会与信息结合,产生密文(ciphertext)。为了还原原始信息,接收端会以相同的密钥流处理密文。RC4会利用异或(exclusive OR,简称XOR)运算结合密钥流与密文。如下图所示。

流密码的运作方式通常是先选用一把较短的密钥,通过伪随机数生成器(pseudorandom number generator,PRNG)将之展开为与信息等长的伪随机数密钥流,如下图所示。

2. WEP的加密操作

通信安全有三个主要目的:

  • 机密性

    防止数据不受未授权的第三者拦截;

  • 完整性

    确保数据没有被修改;

  • 真实性

    真实性是所有安全策略的基础,因为数据的可信度部分取决于数据源的可靠性;

WEP的数据处理流程如下图所示:

驱动程序以及接口硬件负责处理数据,然后送出加密过的封包,顺序如下:

  1. 802.11帧被放在队列中等待发送。帧由标头(Header)和有效载荷(Payload)组成,根据有效载荷计算出完整性校验值ICV,并放在有效载荷尾部;
  2. 随后组装帧加密密钥(或称WEP种子),WEP种子分为两部分:秘钥(secret key)以及初始向量(IV)。添加IV是为了避免出现使用相同密钥流进行加密的情况,802.11并未限制选取IV时非得使用何种算法;
  3. 帧加密密钥被当成RC4密钥,用以加密步骤1有效载荷和ICV,整个加密过程通常通过RC4专用电路来完成;
  4. 有效载荷加密之后,就可以组装待传的帧。802.11标头与加密过的有效载荷之间插入WEP标头,除了IV,WEP标头中还包含密钥编号,WEP最多允许定义4个密钥。一旦附加上最后的标头,就可以针对真个MAC帧,计算出802.11帧校验码(FCS)。

以上阐述了WEP帧的组装流程,解密的过程刚好相反。一旦使用WEP进行加密,帧主体就会增加8个字节。其中4个字节作为帧主体的IV标头,另外4个字节作为ICV标尾,如下图所示。

IV标头使用3个字节来容纳长度为24位的IV,第四个字节则包含填充位以及密钥标识符(key ID)。数据帧的32位循环冗余校验(CRC)码提供了完整性检查,附加于帧主体之后,同时被RC4保护。

3. 关于WEP的种种问题

  1. 手动管理密钥对于变换密钥工作量大;

  2. 标准的静态WEP只提供长度为40位的密钥,业界标准所提供的密钥长度最多只达到104位;

  3. 一旦重复使用密钥流(keystream),流密码(stream cipher)就容易被识破。可供使用的IV值(24位)并不大,容易重复;

  4. 如果不常更换密钥,攻击者就可以采集解密字典(decryption dictionarie),即积累以相同密钥流加密的大量帧,那么破解密钥就指日可待;

  5. WEP使用CRC进行完整性检查,CRC并没有密码学上的安全性;

4. 动态WEP

不同于让网络中所有工作站共享一个静态密钥来加密所有帧,动态WEP让网络上所有工作站使用一个密钥来加密广播帧,但个别工作站使用自己的映射密钥来加密单播帧。动态WEP每隔一段时间就会产生并分配新的密钥。

802.11有线等效加密WEP的更多相关文章

  1. WiFi(802.11)基础

    参考: 1. Wireshark数据包分析实战(第2版) 2. wifi技术从了解到熟悉1----概念.802.11协议简述及四种主要物理组件.wifi适配层.wap_supplicant和wap_c ...

  2. 计算机网络-链路层(4)WiFi:802. 11无线LAN

    有几套有关无线LAN 的802. 11标准,包括802.11b.802.11a和802.11g. 802.11g是至今为止最为流行的技术.一些双模式(802.11a/g)和三模式(802.11a/b/ ...

  3. 保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事

    保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事 10 things to consider when securing an embedded 802.11 Wi-Fi device 随着 ...

  4. 802.11协议帧格式、Wi-Fi连接交互过程、无线破解入门研究

    相关学习资料 Linux黑客大曝光: 第8章 无线网络 无线网络安全攻防实战进阶 无线网络安全 黑客大曝光 第2版 http://zh.wikipedia.org/wiki/IEEE_802.11 h ...

  5. IEEE 802.11 标准列表

    IEEE 802.11 标准列表 IEEE 802.11,1997年,原始标准(2Mbit/s,播在2.4GHz). IEEE 802.11a,1999年,物理层补充(54Mbit/s,播在5GHz) ...

  6. WIFI:802.11协议帧格式

    802协议桢格式 802.11和Wi-Fi技术并不是同一个东西.Wi-Fi标准是802.11标准的一个子集,并且是Wi-Fi联盟负责管理 802协议桢格式: 协议 发布年份/日期 Op.标准频宽 实际 ...

  7. 802.11 MAC层

    1. 介绍 本文主要介绍了802.11 MAC层 2. 访问机制 CSMA/CA:  Carrier Sense Multiple Access with Collision Avoidance Wi ...

  8. 802.11 对于multicast 和 broadcast的处理

    ethernet内部会有broadcast 和 multicast.这两种包都是一个STA向多个STA发包. 当没有wifi存在的时候,LAN口之间的broadcast 和 multicast是可靠转 ...

  9. 802.11 wireless 五

    802.11 wireless 5CSMA/CA,采用倒计时的方法,退避的时间(当年时间+duration 为发送时间,每一个帧会有一个duration,这个位叫做duration[n.持续]) PS ...

随机推荐

  1. for in 和 for i 十月 javascript 第一弹 记录

    for in 里面的 i 不仅有 数字还有这些鬼

  2. POJ Protecting the Flowers

    点击打开题目 题目大意 奶牛要吃花,FJ来赶牛,将第i头牛赶走要2*ti分钟,奶牛每分钟吃di个单位花,求花的最小损失 先赶吃花多的,Wrong Answer QAQ 我们可以算一算损失 设sum=d ...

  3. 数据结构——栈的应用 NOI2.2 括号匹配问题

    栈是一种数据结构,相当于一个容器,将一个又一个变量从顶端压进去,需要使用时,又从顶端拿出来,其具体使用方法,下面是详细讲解: #include<stack>必须使用此头文件 stack&l ...

  4. Ubuntu16手动安装OpenStack——glance篇--转

    全文转自https://www.voidking.com/dev-ubuntu16-manual-openstack-glance/ 目标 紧接着<Ubuntu16手动安装OpenStack—— ...

  5. 用VLC搭建流媒体服务器

    用vlc搭建简单流媒体服务器(UDP和TCP方式) 这段时间用到了流媒体数据传输的TCP和UDP方式,感觉vlc可以做这方面的demo,这里总结下,也方便我以后查阅. 简介 VLC主页:http:// ...

  6. 强大的Guava中的新集合类型: Multiset, Multimap, BiMap, Table, ClassToInstanceMap, RangeSet, RangeMap等

    一 Multiset /** * 新类型集合: Multiset: Multiset就是可以保存多个相同的对象,并且无序 * 占据了List和Set之间的一个灰色地带 * 其他实现: TreeMult ...

  7. vue-particles做背景,鼠标动画粒子连线填坑(按钮没有点击响应)

    为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果. 解决问题: 以背景方式显示 无法获取按钮焦点, ...

  8. VS2013下OpenCV2.48配置

    VS2013+OpenCV2.48配置 一.下载OpenCV OpenCV下载地址http://opencv.org/ SDK下载链接在页面右侧 根据平台选择相应的SDK下载.在Windows开发下开 ...

  9. FFMPEG学习----遍历所支持的解码器

    下面简单介绍一下遍历ffmpeg中的解码器信息的方法(这些解码器以一个链表的形式存储): 1.注册所有编解码器:av_register_all(); 2.声明一个AVCodec类型的指针,比如说AVC ...

  10. jmeter 源码修改返回值中文Unicode编码问题

    修改jmeter源码,可能会对其他格式的responseData有一定影响,图片或者其他 在 ListenerNotifier 类中找到 notifyListeners 方法,在其下面添加如下代码: ...