Wlan学习备忘(上)

STA(station),工作站;AP(Access point),接入点。
basic service area (BSA) ------- AP覆盖的区域
basic service set (BSS): a single access point (AP) together with all associatedstations (STAs) is called a BSS;最简单的情况为:一个AP加一个station组成BSS

IBSS (independent BSS):------- AD HOC网络,没有AP。ad-hoc模式就和以前的直连双绞线概念一样,是P2P的连接,所以也就无法与其它网络沟通了。一般无线终端设备像PMP、PSP、DMA等用的就是ad-hoc模式。 在家庭无线局域网的组建,我想大家都知道最简单的莫过于两台安装有无线网卡的计算机实施无线互联,其中一台计算机连接Internet就可以共享带宽

*extended service set (ESS):两个或者多个BSS共享相同的SSID等。对外表现为一个。
*SSID:可以是BSS或ESS可读的名字,也叫网络名。1~32个字节。为了安全,可以隐藏起来,AP不广播,station可以自己配置完成。SSID在ESS里面也叫ESSID。是可读字符串,不唯一,其他AP可以取相同的名字
*BSSID:the BSSID is theMAC address of the wireless access point (WAP) 。这是BSS正式的名字,并且总是只和一个BSS关联,mac地址,唯一的。而AP上的BSSID可以有多个。如果AP支持多个essid的话,就需要对应个数的BSSID。

*ACTIVE模式:这种模式下,STA在每个Channel(信道)上都会发出Probe Request帧用
来搜索某个网络。具体工作方式是,STA首先调整到某个信道,然后等待来帧指示(表明该
信道有人使用)或超时时间ProbeDelay。两个条件满足任意一个,STA都将发送Probe
Request帧,然后STA在该信道上等待最少MinChannelTime时间(如果在此时间内信道一直空
闲),最长MaxChannelTime时间

*PASSIVE模式:这种模式下,STA不发送任何信号,只是在ChannelList中各个信道间不
断切换并等待Beacon帧。根据前述介绍可知,在基础结构型网络中AP会定时发送Beacon帧以
宣告网络的存在。所以,PASSIVE模式下,STA能根据Beacon帧来了解周围所存在的无线网
络。

频谱划分:WiFi总共有14个信道

http://blog.csdn.net/myarrow/article/details/7930131

    1)IEEE 802.11b/g标准工作在2.4G频段,频率范围为2.400—2.4835GHz,共83.5M带宽

     2)划分为14个子信道

     3)每个子信道宽度为22MHz
     4)相邻信道的中心频点间隔5MHz
     5)相邻的多个信道存在频率重叠(如1信道与2、3、4、5信道有频率重叠)
     6)整个频段内只有3个(1、6、11)互不干扰信道

2.4GHz中国信道划分
     802.11b和802.11g的工作频段在2.4GHz(2.4GHz-2.4835GHz),其可用带宽为83.5MHz,中国划分为13个信道,每个信道带宽为22MHz
    北美/FCC      2.412-2.461GHz(11信道)
    欧洲/ETSI     2.412-2.472GHz(13信道)
    日本/ARIB    2.412-2.484GHz(14信道)

2.4GHz频段WLAN信道配置表
信道  中心频率(MHz) 信道低端/高端频率
1       2412            2401/2423
2       2417            2406/2428
3       2422            2411/2433    
4    2427            2416/2438
5    2432          2421/2443
6    2437          2426/2448
7    2442          2431/2453
8    2447          2426/2448
9    2452          2441/2463
10    2457          2446/2468
11    2462          2451/2473
12    2467          2456/2478
13    2472          2461/2483
12    2467          2456/2478
13    2472          2461/2483

安全认证:
.802.11规则首先提出了WEP(Wired Equivalent Privacy,有线等效加密)。如其名所
示,它是为了达到和有线网络同样的安全性而设计的一套保护措施。
·经过大量研究,人们发现WEP很容易破解。在802.11规范提出新解决方案之前,WFA
提出了一个中间解决方案,即WPA(Wi-Fi Protected Access)。这个方案后来成为802.11i草
案的一部分。
·802.11i专门用于解决无线网络的安全问题。该规范提出的最终解决方案叫RSN(Robust
Security Network,强健安全网络),而WFA把RSN称为WPA2


WPA/WPA2企业和个人用法的简单公式如下。
WPA-企业=802.1X+EAP+TKIP
WPA2-企业=802.1X+EAP+CCMP
WPA-个人=PSK+TKIP
WPA2-个人=PSK+CCMP

其中EAP和PSK是用于身份验证的,就是建立真正连接需要的密钥,也代表了这个身份验证的过程,就是说EAP在认证方面是更加健全的,如果使用PSK,那么这个AP更容易被侵入或者破解,而使用EAP,是企业级的认证,认证过程使用到了认证服务器,非法的用户就很难通过这个认证。而TKIP和CCMP是对认证后的数据传输安全负责的,TKIP和CCMP,TKIP和CCMP加密方式都是不是直接使用psk加密的,而是派生的临时密钥,而CCMP比TKIP更安全。还有TKIP和CCMP除了定义了加密方式,还定义了对数据完整性的校验方法。


·开放系统身份验证(Open System Authentication):这种验证其实等同于没有验证,因
为无论谁来验证都会被通过。那它有什么用呢?规范规定,如果想使用更先进的身份验证
(如RSNA),则STA在发起Authentication请求时,必须使用开放系统身份验证。由于开放系
统身份验证总是返回成功,所以STA将接着通过Association请求进入图3-29中的State 3然后开
展RSNA验证。
·共享密钥身份认证(Shared Key Authentication):Shared Key这个词以后还会经常碰
到,它表示共享的密码。例如在小型办公及家庭网络(Small Office/Home Office,SOHO)环
境中,AP的密码一般很多人(即很多STA)都知道。(WPA/WPA2认证方式使用的Open System Authentication,密钥管理使用的WPA_PSK。而WEP认证方式使用的是Shared Key Authentication或者Open System Authentication,密钥管理可以使用none。)
提示 初看上去,共享密钥身份验证的安全性比开放系统要强,但实际却恰恰相反。因
为使用了共享密钥身份验证就不能使用更为安全的RSNA机制。

RSN中数据加密及完整性校验算法有两种,分别是TKIP和CCMP

(1)EAP [31][32][33]
目前身份验证方面最基础的安全协议就是EAP(Extensible Authentication Protocol),协
议文档定义在RFC3748中。EAP是一种协议,更是一种协议框架。基于这个框架,各种认证
方法都可得到很好的支持。
·Authenticator(验证者):简单点说,Authenticator就是响应认证请求的实体(Entity)。
对无线网络来说,Authenticator往往是AP。
·Supplicant(验证申请者 ① )发起验证请求的实体。对于无线网络来说,Supplicant就是
智能手机。
·BAS(Backend Authentication Server,后端认证服务器):某些情况下(例如企业级应
用)Authenticator并不真正处理身份验证,它仅仅将验证请求发给后台认证服务器去处理。
正是这种架构设计拓展了EAP的适用范围。
·AAA(Authentication、Authorization and Accounting,认证、授权和计费):另外一种基
于EAP的协议。实现它的实体属于BAS的一种具体形式,AAA包括常用的RADIUS服务器
等。在RFC3748中,AAA和BAS的概念可互相替代。
·EAP Server:表示真正处理身份验证的实体。如果没有BAS,则EAP Server功能就在
Authenticator中,否则该功能由BAS实现。

RSNA
RSNA(Robust Secure Network Association,强健安全网络联合)是802.11定义的一组保
护无线网络安全的过程,是一套安全组合拳。
1)RSNA网络发现阶段。当STA扫描无线网络时,需检查Beacon帧或Probe Response帧
中是否有RSNE信息元素。如果有,STA根据RSNE处理原则选择合适的AP并完成802.11
Authentication(设置认证类型为Open System Authentication)和Association。
2)上一步建立的安全保护机制非常弱,所以RSNA的第二步工作是开展802.1X认证。目
的是利用802.1X认证机制实现有效安全的认证用户身份,同时还需要分配该次会话所需要的
一系列密钥用于后续通信的保护。
3)RSNA通过4-Way Handshake和Group Key Handshake协议完成RSNA中的密钥管理工
作。密钥管理工作主要任务是确认上一阶段分配的密钥是否存在,以及确认所选用的加密套
件,并生成单播数据密钥和组播密钥用于保护数据传输。
当上面三个步骤都完成后,RSNA网络就建立成功。

密钥派生和缓存
小型办公及家庭网络(Small Office/Home Office,SOHO)环境
在SOHO网络环境中,PMK来源于预共享密钥(Pre-Shared Key,PSK)。Shared Key概
念在3.3.7节介绍WEP身份验证时提到过,即在家用无线路由器里边设置的密码,无须专门的
验证服务器,对应的设置项为"WPA/WPA2-PSK"。由于适用家庭环境,所以有些无线路由器
设置界面中也叫"WPA/WPA2-个人"(WFA认证名为"WPA/WPA2-Personal")。
·在企业级环境中,PMK和Authenticator Server(如RADIUS服务器)有关,需要通过
EAPOL消息和后台AS经过多次交互来获取。这种情况多见于企业级应用。读者可在无线路
由器设置界面中见到"WPA/WPA2-企业"(有时叫“WPA或WPA2”,WFA认证名
为"WPA/WPA2-Enterprise")的安全类型选项,并且会要求设置RADIUS服务器地址。
·Personal模式不需要RADIUS服务器参与。AP和STA双方的Key属于PSK,即事先就配置
好了。
·Enterprise模式下,STA、AP和RAIDUS的PMK通过多次EAPOL消息来获取。获取的方
法和具体的EAP Method有关。显然,相比Personal模式,这种方式更加安全,但其耗费的时
间也较长。
·STA和AP得到PMK后,将进行密匙派生以得到PTK。最后,PTK被设置到硬件中,用于
数据的加解密。

·由于AP和STA都需要使用PTK,所以二者需要利用EAPOL Key帧进行信息交换。这就是
4-Way Handshake的作用。


WEP中,网络中传输的是用同一个Key加密后的数据,其破解的可能性较大。而TKIP和CCMP则把PMK保存在AP和STA中,实际数据加密解密时只是使用PMK派生出来的Key,即PTK。

MAC帧:
.AP需要了解和它关联的STA的电源管理状态。当某个STA进入PS状态后,AP就要做
好准备以缓存发给该STA的数据帧。一旦STA醒来并进入Active模式,AP就需要将这些缓存
的数据发送给该STA。注意,AP无须PS模式,因为绝大多数情况下,AP是由外部电源供电
(如无线路由器)。在AP中,每个和其关联的STA都会被分配一个AID(Association ID)。

.AP需要定时发送自己的数据缓存状态。因为STA也会定期接收信息(相比发送数据
而言,开启接收器所消耗的电力要小)。一旦STA从AP定时发送的数据缓存状态中了解到它
还有未收的数据,STA则会进入Active模式并通过PS-POLL控制帧来接收它们


字节序为Big-endian,即最高字节在前。·比特序为Little-endian,即最低位在前。一般情况下,字节序和比特序是一致
的。但是以太网数据传输时,字节序采用Big-endian,比特序为Little-endian。

无线地址中,一般只使用Address 1~Address 3三个字段,Address 4只在无线网络桥接的时候才使用。
802.11 MAC帧头部分共包含四个Address域,但规范中却有五种地址定义,分别如
下 [15] 。

*·BSSID:在基础型BSS中,它为AP ① 的地址。而在IBSS中则是一个本地唯一MAC地址。
该地址由一个46位的随机数生成,并且U/M位为0,G/L位为1。另外对MAC广播地址来说,
其名称为wildcard BSSID。
*·目标地址(Destination Address,DA):用来描述MAC数据包最终接收者(final
recipient),可以是单播或组播地址。
*·源地址(Source Address,SA):用来描述最初发出MAC数据包的STA地址。一般情况
下都是单播地址。
*·发送STA地址(Transmitter Address,TA):用于描述将MAC数据包发送到WM中的
STA地址。
*·接收STA地址(Receiver Address,RA):用于描述接收MAC帧数据的。如果某个MAC
帧数据接收者也是STA,那么RA和DA一样。但如果接收者不是无线工作站,而是比如以太
网中的某台PC,那么DA就是该机器的MAC地址,而RA则是AP的MAC地址。这就表明该帧
将先发给AP,然后由AP转发给PC。

*·IBSS网络中,由于不存在DS,所以Address 1指明接收者,Address 2代表发送者。
Address 3被设置为BSSID,其作用是:如果Address 1被设置为组播地址,那么只有位于同一
个BSSID的STA才有必要接收数据。
*·基础结构型网络中,如果STA发送数据,Address 1必须是BSSID,代表AP。因为这种网
络中,所有数据都必须通过AP。Address 3代表最终的接收者,一般是DS上的某个目标地
址。
*·基础结构型网络中,如果数据从AP来,那么Address 1指明STA的地址,Address 2代表
AP的地址,Address 3则代表DS上的某个源端地址。

管理帧
管理帧中固定长度的字段如下:
1)Authentication Algorithm Number:该字段占2字节,代表认证过程中所使用的认证类
型。其取值如下。
·0:代表开放系统身份认证(Open System Authentication)。
·1:代表共享密钥身份认证(Shared Key Authentication)。
·2:代表快速BSS切换(Fast BSS Transition)。
·3:代表SAE(Simultaneous Authentication of Equals)。用于两个STA互相认证的方法,
常用于Mesh BSS网络。
·65535:代表厂商自定义算法。
提示 Authentication Algorithm Number的定义是不是可以在代码中用枚举类型来表示
呢?
2)Beacon Interval field:该字段占2字节。每隔一段时间AP就会发出Beacon信号用来宣
布无线网络的存在。该信号包含了BSS参数等重要信息。所以STA必须要监听Beacon信号。
Beacon Interval field字段用来表示Beacon信号之间间隔的时间,其单位为Time Units(规范中
缩写为TU。注意,一个TU为1024微秒。这里采用2作为基数进行计算)。一般该字段会设置
为100个TU。
3)Capability Information(性能信息):该字段长2字节,一般通过Beacon帧、Probe
Request和Response帧携带它。该字段用于宣告此网络具备何种功能。2字节中的每一位(共
16位)都用来表示网络是否拥有某项功能
4)Current AP Address:该字段长6字节,表示当前和STA关联的AP的MAC地址。其作
用是便于关联和重新关联操作。
5)Listen Interval:该值长2字节,和省电模式有关。其作用是告知AP,STA进入PS模式
后,每隔多长时间它会醒来接收Beacon帧。AP可以根据该值为STA设置对应的缓存大小,该
值越长,对应的缓冲也相应较大。该值的单位是前文提到的另外一个定长字段Beacon
Interval。
6)Association ID(AID):该字段长2字节。STA和AP关联后,AP会为其分配一个
Association ID用于后续的管理和控制(如PS-POLL帧的使用)。不过为了和帧头中的
Duration/ID匹配,其最高2位永远为1,取值范围1~2007。
7)Reason Code:该字段长2字节。用于通知Diassociaton、Deauthentication等操作(包括
DELTS、DELBA、DLS Teardown等)失败的原因。
8)Status Code:该字段长2字节,用于反馈某次操作的处理结果。0代表成功。

无线接入过程三个阶段
      STA(工作站)启动初始化、开始正式使用AP传送数据帧前,要经过三个阶段才能够接入(802.11MAC层负责客户端与AP之间的通讯,功能包括扫描、接入、认证、加密、漫游和同步等功能):
      1)扫描阶段(SCAN)
      2)认证阶段 (Authentication)
      3)关联(Association)

常用管理帧:
1)Beacon帧:非常重要,AP定时发送Beacon帧用来声明某个网络。这样,STA通过
Beacon帧就知道该网络还存在。此外,Beacon帧还携带了网络的一些信息。简单来
说,Beacon帧就是某个网络的心跳信息。Beacon帧能携带的信息非常多,不过并非所有信息
都会包含在Beacon帧中。


2)Probe Request/Response帧:STA除了监听Beacon帧以了解网络信息外,还可以发送
Probe Request帧用于搜索周围的无线网络。规范要求由送出Beacon帧的STA回复Probe
Response帧,这样,在基础结构型网络中,Beacon帧只能由AP发送,故Probe Response也由
AP发送。IBSS中,STA轮流发送Beacon帧,故Probe Response由最后一次发送Beacon帧的
STA发送。
当AP收到Probe Request时,会响应以Probe Response帧。Probe Response帧包含的内容绝
大部分和Beacon帧一样


3)Association Request/Response帧:当STA需要关联到某个AP时,将发送此帧。


4)Authentication帧:用于身份验证



STA状态转换:

STA在不同状态下发送的MAC帧类别也不同。这主要是和网络安全有
关,没有通过身份验证的STA是不允许随意传输数据的。图3-29中,STA的状态转换如下
(以基础结构型网络为例)。
·STA首先处于State 1,即未认证和未关联的情况。为了能加入无线网络,它需要发送
Authentication帧给AP。如果认证成功,将转入State 2。State 1情况下不能发送数据帧。
·State 2是已认证,未关联状态。STA将发送Association帧给AP进行关联。成功后,进入
State 3。State 2情况下也不能发送数据帧。
·State 3属于已认证,已经关联,但还未通过RSN(Robust Security Network,强健安全网
络)认证的状态。RSN采用802.1X进行控制。由于未通过RSN认证,所以只能发送处理认证
的数据帧,即4-Way Handshake(四次握手)帧。
·4-Way Handshake成功后,STA进入State 4。此时它完全加入无线网络,所有数据帧就能
正常传输

(注意:WPA/WPA2也有上述的4次握手的过程)

更多STA和AP连接过程的问题可以看Wlan学习—无线网络安全

结合代码在Android

/**
     * Recognized IEEE 802.11 authentication algorithms.
     */
    public static class AuthAlgorithm {
        private AuthAlgorithm() { }

        /** Open System authentication (required for WPA/WPA2) */
        public static final int OPEN = 0;
        /** Shared Key authentication (requires static WEP keys) */
        public static final int SHARED = 1;
        /** LEAP/Network EAP (only used with LEAP) */
        public static final int LEAP = 2;

        public static final String varName = "auth_alg";

        public static final String[] strings = { "OPEN", "SHARED", "LEAP" };
    }

从上面可以看到如果是WPA/WPA2的话,认证方式是使用open的,就是说WPA/WPA2是支持RSN的。上面的值是对应到WifiConfiguration的一个变量的:

/**
     * The set of authentication protocols supported by this configuration.
     * See {@link AuthAlgorithm} for descriptions of the values.
     * Defaults to automatic selection.
     */
    public BitSet allowedAuthAlgorithms;

 而对于密钥管理方面的,值可以在下面选:

public static class KeyMgmt {
        private KeyMgmt() { }

        /** WPA is not used; plaintext or static WEP could be used. */
        public static final int NONE = 0;
        /** WPA pre-shared key (requires {@code preSharedKey} to be specified). */
        public static final int WPA_PSK = 1;
        /** WPA using EAP authentication. Generally used with an external authentication server. */
        public static final int WPA_EAP = 2;
        /** IEEE 802.1X using EAP authentication and (optionally) dynamically
         * generated WEP keys. */
        public static final int IEEE8021X = 3;

        /** WPA2 pre-shared key for use with soft access point
          * (requires {@code preSharedKey} to be specified).
          * @hide
          */
        public static final int WPA2_PSK = 4;

        public static final String varName = "key_mgmt";

        public static final String[] strings = { "NONE", "WPA_PSK", "WPA_EAP", "IEEE8021X",
                "WPA2_PSK" };
    }

对应的是WifiConfiguration的一个变量:

/**
     * The set of key management protocols supported by this configuration.
     * See {@link KeyMgmt} for descriptions of the values.
     * Defaults to WPA-PSK WPA-EAP.
     */
    public BitSet allowedKeyManagement;

连接隐藏wifi可以使用的配置:

/**
     *  get the security to its corresponding security spinner position
     *  SECURITY_NONE = 0;
     *  SECURITY_WEP = 1;
     *  SECURITY_PSK = 2;
     *  SECURITY_EAP = 3;
     */
    private WifiConfiguration createHiddenSsidConfig(WifiConfiguration config){
        config.hiddenSSID = true;
        config.priority = 1000000;
        if(config.preSharedKey != null && config.preSharedKey.length() > 7){
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
        }else if(config.wepKeys[0] != null && config.wepKeys[0].length() > 7){
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
        }else{
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
        }

        return config;
    }

猜你喜欢

转载自blog.csdn.net/b1480521874/article/details/79049582