• WEP、WPA、WPA2


    选译自 Understanding Network Hacks 8.8~8.10

    【博主注】此文比较小白,想了解更多请查阅IEEE Std 802.11。我这里有802.11i-2004

    WEP

    WEP用来加密的key要么是64要么是128 bit,但实际上只有40或104 bit。因为前24 bit是IV(initialization vector),用于保证加密每个帧的key不总是相同。
    但是,WEP标准没有声明如何生成IV,所以有些实现里递增生成IV
    并且,WEP也没有声明多长时间变更key,所以有些实现中只用一个key加密数据帧,有些间隔一段时间更新key
    Weak IVs是指那些会泄露明文的一个或多个bit的IV
    RC4 WEP加密使用了xor,同为0,异为1。所以有一个极端的例子,如果IV全由0组成,则:

    WEP支持多个key,但只有一个会被真正使用。所以每个客户端必须知道哪个key被使用,所以每个帧里都有keyid
    WEP的数据完整性校验算法并不安全,仅仅使用了CRC校验,然后用RC4加密了。一旦key被知晓,CRC校验并不能保护任何东西(此时attacker修改原文后,再重写ICV即可)。
    只要WiFi使用了WEP加密,控制帧头部的WEP-Bit(也叫Protected-Frame bit)就会被置1。

    WPA

    WPA仍然使用RC4加密。
    WPA利用TKIP(Temporal Key Integrity Protocol)协议规避WEP最大的弱点。TKIP协议使用48 bit的IV,其中糅合了sender的mac地址。
    除此以外,TKIP强制每个帧使用新key。
    甚至,TKIP实现了一个加密的MIC(Message Integrity Check)而非使用CRC校验,因此就算key被知晓,帧也无法被毫无察觉地篡改。MIC还可防止源地址被篡改。
    并且,TKIP头部的序列号逐帧增加,这可以防止重放攻击。
    最后,WPA还扩展了WiFi连接机制。在成功的association之后,还要通过EAP(Extensible Authentication Protocol)或EAPOL-Protocol(EAP over LAN)进行authentication。

    EAPOL WPA提供两个authentication方式,一种是PSK(Pre-Shared-Key),只需要输入密码;另一种是Enterprise,此处不表。

    一次WPA-Handshake需要4个帧。
    首先,AP生成一个256 bit的随机数,此数唤作Nonce,将其发给client;
    然后,client生成一个Nonce,用其、PMK(Pairwise-Master-Key)(此数由PSK得到)还有client和AP的mac地址计算出PTK(Pairwise-Transient-Key)。PTK用于加密和签名单播流量。client将Nonce和MIC发给AP;
    接着,AP检查MIC,若检查通过则生成PTK和GTK(Group-Transient-Key)(用于加密广播流量,广播流量没有签名),接着发送用PTK加密和签名的GTK给client;
    最后,client发送一个加密和签名的ACK帧给AP。

    WPA2

    WPA2使用了AES(Advanced Encryption Standard)加密,key长度为128或192或256 bit,
    还使用了CCMP(Counter Mode with CBC-MAC)协议。
    authentication仍基于EAPOL,两种方式,和WPA一样。

    Those who seek some sort of a higher purpose or 'universal goal', who don't know what to live for, who moan that they must 'find themselves'. You hear it all around us. That seems to be theofficial bromide of our century. Every book you open. Every drooling self-confession. It seems to be the noble thing to confess. I'd think it would be the most shameful one.
  • 相关阅读:
    linux下使用svn
    [转]量变真的可以引起质变
    《自己动手写操作系统》pmtest2笔记
    Android-Java构造代码块&构造方法隐式三行
    Android-Java静态代码块&局部代码块
    Android-WebView与本地HTML (Java调用--->HTML的方法)-(new WebView(this)方式)
    Android-WebView加载网页(new WebView(this)方式)
    Android-Throwable: A WebView method was called on thread 'JavaBridge'.
    Android-WebView与本地HTML (互调)
    Android-WebView与本地HTML (Java调用--->HTML的方法)
  • 原文地址:https://www.cnblogs.com/spenghui/p/7754164.html
Copyright © 2020-2023  润新知