WLAN知识汇集

无线区网(WLAN)是如何运行呢?

 

基本服务组合(basic service set, BSS)是802.11网路(wireless LAN,WLAN即为802.11网路)的基本元件,是由一组彼此通讯的无线装置或无线工作站所构成;

clip_image002

BSS分为两种网路类型,分别为独立型网路(independent BSS, IBSS)以及中控型网路(infrastructure BSS)。在独立型网路中,无线装置或是无线工作站彼此间可以直接通讯,不须要有基地台(AP)参与其间,即为一种点对点(peer-to-peer)的网路;独立型网路有时被称为ad hoc网路。在中控型网路中(这是我们讨论的重点),必须要有中控装置,如基地台(AP)参与其中,所有的无线装置或无线工作站必须先与基地台”建立连线”后,才能取得网路服务(另外,802.11网路允许将几个中控型网路串连为延伸式服务组合(extended service set, ESS),其目的是要让无线网路的覆盖区域更广)。每一个BSS都会以一个ID来识别,这个ID即为BSSID,在中控型网路类型中,BSSID即为无线区网基地台(AP)无线介面的实体位址(MAC address),而无线区网也是藉此确定无线装置或无线工作站是在同一个BSS以及确定与其连接的基地台。

一般我们最常接触到的无线区网类型就是中控型网路,也就是至少有一个无线区网基地台的网路类型,我们会赋予基地台一个SSID(千万不要和BSSID搞混,BSSID是基地台的无线介面MAC address,而SSID是一个易记或是易于管理的名称。我想,不管是网管人员或是使用者,应该都不想去记忆一堆数字的实体位址吧),其实SSID就是一般使用者所谓的”网路名称”。接下来是无线装置怎么找到这些基地台呢?合理的方法就是扫瞄。没错!!就是透过扫瞄(scanning),只是无线区网把扫瞄分成两种方式:
被动式扫瞄(passive scanning)
这种方式是指无线装置处于一种被动接收的状态(可以比较省电),接收什么呢?接收由基地台定时所发出来的beacon,而这种管理讯框(management frame)会带上基地台的网路名称,即SSID,简单的说,就是基地台会大声喊「我是XXX(XXX即为使用者所订的网路名称/SSID)」,无线装置接收到这种讯框后会先将它暂存下来,这时候就可以在你的无线装置上看到一个或一堆的无线基地台。
主动式扫瞄(active scanning)
这种方式是指无线装置主动”找寻”某基地台,然后等待某基地台的回应,简单的说,就是这一回换无线装置大声喊「谁是XXX(XXX即为网路名称/SSID)」,也就是由使用者在无线装置输入无线基地台的SSID,按连线后等待回应。

一旦找到基地台或是基地台有了回应,接下来当然就是连线啰!不过,在连线之前无线区网还要再进行一道手续,这道手续就是验证(authentication),验证的目的当然就是要阻止未经授权的使用者使用你的无线区网。验证成功后,接下来无线区网就开始进行连线作业(association),所谓连线,其实就是无线装置会发出一个连线请求(association request)给基地台,如果请求获准的话,基地台就会以成功来回应无线装置。到此大功告成,使用者可以尽情享受无线上网的乐趣及便利性啰!!

在无线区网里从扫瞄、验证到连线一连串的作业,其实就好比在有线网路里将网路线插到网路设备的动作。

 

既生”IEEE 802.11”,何生”Wi-Fi”?

就某一层面而言,Wi-Fi反而扮演着一个IEEE 802.11推手的角色。

电子电机工程协会(Institute of Electrical and Electronic Engineers, IEEE),除了专业相关的社团活动,IEEE也制定电子设备的标准,包括各种不同通讯技术的标准。

IEEE制定标准时是以专案进行,每个专案均以编号代表,其中最著名的专案之一就是负责开发区域网路(LAN)的802专案。每个专案还会另外划分许多工作小组(working group),负责解决专案中某个特定面向的问题和标准化的工作,工作小组同样会被赋予一个编号,位于专案编号的点号之后,例如802专案的第三个工作小组802.3就是负责Ethernet标准化的工作。而wireless LAN(WLAN)是由802专案第十一个工作小组负责,因此称为802.11。再来,每个工作小组又会细分出许多任务小组(task group),以英文字母代表,小写英文字母代表非独立的标准,也就是说无法脱离母标准而独立存在,例如802.11g;大写英文字母则代表完全独立的标准规格,例如802.11F与802.1X…等标准。

Wi-Fi是Wireless Fidelity的缩写,这是Wi-Fi联盟所推行的认证方式,目的在测试802.11产品的互通性。Wi-Fi联盟系由贸易协会、测试机构以及标准制定机构所组成。接受Wi-Fi认证的产品,会与一些大厂的产品测试互通性,通过测试的产品,即有权使用Wi-Fi标章,。Wi-Fi联盟在标准化方面所作的努力,主要是为了支援IEEE,简单的说,Wi-Fi所制定的是商业化的标准,但这些标准基本上都符合
IEEE 802.11技术性的标准。举个例子:当WEP的安全性遭瓦解之际,IEEE便成立了一个任务小组(即为802.11i),负责开发经改良、更为严谨的安全加密协定标准,但是要打造安全的加密协定并不容易,因此802.11i标准的推出不断延迟。基本上802.11i规范了两种新的安全加密协定:TKIP与CCMP,TKIP在设计上主要是为了能够和旧的硬体(支持WEP的硬体)相容,而CCMP则是一个崭新的设计,也因此,在CCMP完全就绪之前,TKIP就已经完成了。但Wi-Fi联盟为了消弥市场上对于WLAN安全性的疑虑,所以加快脚步致力于TKIP的部署,推出了以802.11i第三版草案(802.11i draft 3)为准的Wi-Fi防护存取(Wi-Fi Protected Access, WPA)过渡性标准。待2004年6月,IEEE正式推出802.11i标准后,Wi-Fi联盟也随即推出以802.11i标准为准的Wi-Fi防护存取第二版(WPA 2)。

 

WPA2比WPA多了个”2”,有何差别啊!?

IEEE 802.11 所制定的是技术性标准 ,Wi-Fi 联盟所制定的是商业化标准 , 而 Wi-Fi 所制定的商业化标准基本上也都符合 IEEE 所制定的技术性标准。 WPA(Wi-Fi Protected Access) 事实上就是由 Wi-Fi 联盟所制定的安全性标准 , 这个商业化标准存在的目的就是为了要支持 IEEE 802.11i 这个以技术为导向的安全性标准。而 WPA2 其实就是 WPA 的第二个版本。 WPA 之所以会出现两个版本的原因就在于 Wi-Fi 联盟的商业化运作。

我们知道 802.11i 这个任务小组成立的目的就是为了打造一个更安全的无线局域网 , 所以在加密项目里规范了两个新的安全加密协定 – TKIP 与 CCMP 。其中 TKIP 虽然针对 WEP 的弱点作了重大的改良 , 但保留了 RC4 演算法和基本架构 , 言下之意 ,TKIP 亦存在着 RC4 本身所隐含的弱点。因而 802.11i 再打造一个全新、安全性更强、更适合应用在无线局域网环境的加密协定 -CCMP 。所以在 CCMP 就绪之前 ,TKIP 就已经完成了。但是要等到 CCMP 完成 , 再发布完整的 IEEE 802.11i 标准 , 可能尚需一段时日 , 而 Wi-Fi 联盟为了要使得新的安全性标准能够尽快被布署 , 以消弭使用者对无线局域网安全性的疑虑 , 进而让无线局域网的市场可以迅速扩展开来 , 因而使用已经完成 TKIP 的 IEEE 802.11i 第三版草案 (IEEE 802.11i draft 3) 为基准 , 制定了 WPA 。而于 IEEE 完成并公布 IEEE 802.11i 无线局域网安全标准后 ,Wi-Fi 联盟也随即公布了 WPA 第 2 版 (WPA 2) 。所以:

WPA = IEEE 802.11i draft 3 = IEEE 802.1X/EAP + WEP( 选择性项目 )/TKIP

WPA2 = IEEE 802.11i = IEEE 802.1X/EAP + WEP( 选择性项目 )/TKIP/CCMP

( 有些无线网路设备中会以 AES AES-CCMP 的字眼来取代 CCMP)

 

 

在有些无线网路设备的规格中会看到像 WPA-Enterprise / WPA2-Enterprise 以及 WPA-Personal / WPA2-Personal 的字眼 , 其实 WPA-Enterprise / WPA2-Enterprise 就是 WPA / WPA2 ; WPA-Personal / WPA2-Personal 其实就是 WPA-PSK / WPA2-PSK, 也就是以 ”pre-share key” 或 ” passphrase” 的验证 (authentication) 模式来代替 IEEE 802.1X/EAP 的验证模式 ,PSK 模式下不须使用验证服务器 ( 例如 RADIUS Server), 所以特别适合家用或 SOHO 的使用者。

 

早期无线区网的安全机制

 

那何谓”早期”呢?如果非要定出一个分隔点的话,那么Wi-Fi防护存取(WPA)这个过渡性标准推出之前的无线区线就算是”早期”无线区网。早期的无线区网,IEEE 802.11算是唯一正式的标准,虽然内容也规范了一些安全性作法,但事后证明,这些安全性作法由于设计上的瑕疵,很容易遭到瓦解,再加上当时业界也没有明确的安全性标准,因此无线区网普遍给人一种安全性不足或安全性乏善可陈的印象。

我们曾经讨论过,由于无线”开放”的特性,在中控型网路类型(须使用AP的网路类型),使用者的无线装置,必须经过一连串的扫瞄(scanning)、验证(authentication)、连线(association)之后,才能够开始使用无线区网。其中验证,当然是为防止未经授权的使用。除了验证之外,由于无线区网,使用者的资料是于”空气”中传送的,只要有”适当的”无线网卡再加上软体工具,就可以从空气中”捕捉”到这些讯框(frame),判读讯框内容,更有甚者,窜改或破坏资料内容,而导致资料的不正确或不可用。为防范这些威胁,有必要为这些于”空气”中传送的讯框进行加密(encryption)动作,来增加安全性。因此802.11使用有线等级隐私(Wired Equivalent Privacy, WEP)作为MAC(Media Access Control)的安全加密(encryption)协定。WEP采用的是RC4演算法,一种对称金钥演算法symmetric key algorithm(RC4由于被选为WEP的加密引擎后,其所引发的相关研究发现,RC4本身亦隐含一些极大的瑕疵),既然名为对称金钥演算法,言下之意就是指加密者和解密者须使用同一把金钥。没错,这一把金钥就是由管理者或使用者手动设定于AP以及无线网卡的WEP金钥。RC4当然不是直接以这把金钥来加密,而是以这把金钥为种子,透过乱数产生器(Pseudo Random Number Generator, PRNG)产生金钥串流(keystream),再以金钥串流与资料结合进行加密。

让我们再回过头来看看802.11的验证,802.11的验证有两种方式,分别为:

开放系统验证(open-system authentication)
为什么称为开放系统,说实话,我也不知道,只能确定这里的开放系统绝对不是指像Windows或UNIX这类open system。这种验证方式,与其说是验证,倒不如说是一种宣告,也就是无线装置向AP宣告「我是一台拥有唯一且合法MAC address的装置,请让我加入这个无线区网吧!!」大部份的情况AP都会允许这种宣告(因为不同装置几乎不会出现相同的MAC address,除非是伪装)并且回应无线装置「请加入吧!!」
共享金钥验证(shared-key authentication)
所谓共享金钥就是共享那一把由管理者或使用者所设定的WEP金钥。无线装置首先发送一个验证请求给AP,AP会回应一个盘查口令(challenge text)给无线装置,无线装置收到盘查口令,以WEP金钥经PRNG所产生的金钥串流加密后回应给AP,AP收到回应后进行解密,如果盘查口令内容和刚才发送出去的盘查口令内容吻合的话,AP会回应一个成功的讯息的无线装置。

如上所述,使用共享金钥验证再加上WEP加密,看起来是天衣无缝,何以802.11的安全性遭到如此质疑!?无奈啊….首先看看共享金钥验证,这种验证方式中的盘查口令、金钥串流以及盘查回应的演算法是一种可逆向运算(reversible)的演算法,只要知道其中两项,就可逆向推算出第三项。其中盘查回应虽然是已加过密的讯息,不幸的是盘查口令却是明文(clear text)讯息,攻击者只要能从”空气”中”捕捉”到这些讯息(盘查口令以及盘查回应),就可以推算出金钥串流,再以此金钥串流回应来自AP新的盘查口令,攻击者即可通过AP的验证。但是即使通过AP的验证,攻击者在尚未还原WEP金钥前,还是无法使用无线区网来传送资料或对收集来的讯框进行解密判读,对吧!?没错,但是不要因此而松口气,因为接下来的事实更残酷!!前面在讨论WEP时提过,WEP金钥是拿来作为产生金钥串流的种子,再以金钥串流来为资料加密,但由于相同的金钥种子会产生相同的金钥串连,重复使用相同金钥串流可能让攻击者很容易的识出蛛丝马迹。因此WEP采用24 bits的初使向量(Initialization Vector, IV),也就是将WEP金钥分为两个部分:IV以及密钥(secret key)。24 bits IV的值会随机产生,”IV值+密钥”会被拿来产生金钥串流,因此可以产生1千六百多万组金钥串流来为1千六百多万个讯框加密。遗憾的是1千六百多万个讯框对于资料传送量大或无线装置数量多、网路使用率高的网路而言并不算多,再加上IV值最后会附加在802.11讯框标头(header)之后(注意!!加密机制仅会对资料的部分作加密,并不会对讯框标头的部分作加密),攻击者只要收集足够数量的讯框,即可从讯框标头识别出重复的IV值,重复的IV值代表讯框是以相同的金钥串流来加密,再从这些重复使用相同金钥串流来加密的讯框中寻找蛛丝马迹,以还原WEP金钥(更不幸的是现在已经有软体工具可以来执行这些事情)。

一旦攻击者通过验证,并取得或还原WEP金钥,无线区网的安全性即告瓦解。也因此,早期无线区网的安全性(包括无线区网的共享金钥验证及WEP加密协定)被视为是不可靠的安全机制。

 

无线局域网的安全灵药–“IEEE 802.11i”

无线最大的好处是行动性、便利性以及免除布线的烦恼 , 但相对的 , 因为使用开放性媒介的关系 , 却会面临到比有线网路环境更大的安全威胁 , 虽然 802.11 规范了无线局域网的认证 (authentication) 机制和安全加密 (encryption) 协定 , 但这些安全性已被证实是不可靠的安全机制。因此 802.11 成立了一个任务小组 ”i”, 负责修正 MAC(Medium Access Control) 安全性的工作。在业界昂首期盼下 ,802.11i 也终于在 2004 年发布。

究竟 802.11i 有着什么样的新药方 , 而能成为无线局域网的安全灵药呢 !?

基本上 ,802.11i 定义了一个固安网路 (Robust Security Networks, RSN) 。何谓 RSN!? 就是无线局域网内设备之间的连线发起 (creation) 必须是经过固安网路连线 (Robust Security Networks Associations, RSNA) 程序完成的。也就是说 ,RSNA 是定义一组程序 (process), 包括验证 (authentication) 、加密 (encryption) 协定以及金钥管理 (key management) 。以下简单介绍一下这些东东:

验证 (Authentication)

这里的验证是指更为严谨的验证方式 , 而不是 802.11 里的开放系统验证 (open- system authentication) 和共享金钥验证 (shared- key authentication) 。 802.11i 所定义的验证方式是采用 802.1X/EAP 的架构 , 这样的架构之下 , 必须有三种角色 , 分别是请求者 (supplicant) 、验证者 (authenticator) 以及验证服务器 (authentication server, AS), 可以把请求者想成是一般的无线装置 ( 例如有支持无线局域网功能的notebook), 把验证者想成是 AP, 而验证服务器顾名思义 , 就是一台提供验证服务的服务器。简单的说 , 当使用者要利用无线装置使用无线局域网之前 , 须先透过 AP 转送验证的相关讯息给 AS, 经过 AS 的验证 , 验证成功的话 ,AS 会通知 AP 「这个家伙已经可以开始使用无线局域网了」。

但是一般的家用使用者或 SOHO 族不太可能会特别去建制一台验证服务器啊 !! 所幸 802.11i 也很体恤这类的使用者 , 所以特别定义另一种验证模式 , 就是预先共享金钥 (pre-share key, PSK), 在这种模式下 , 不需使用到验证服务器 (AS) 。由于 802.11i 定义的加密协定会使用到一组成对主钥 (Pairwise Master Key, PMK) 来进行配钥 (key mixing) 并衍生出其他金钥 , 所以在 802.11i 定义的加密系统里 ,PMK 是位于金钥阶层 (key hierarchy) 的最顶端 , 言下之意 , 没有 PMK, 下面的加密协定就不用玩了。在 802.1X/EAP 架构中 ,PMK 是于验证过程中产生的;但是在没有验证服务器的情况下要如何产生 PMK 呢 ? 802.11i 使用一种通关密语 (passphrase) 的方式 , 由使用者预先在 AP 和无线装置里设定好这个通关密语 , 而这个通关密语除了验证之外 , 它的另一个重要任务就是要衍生出 PMK, 所以 PSK 模式的预先共享就是这个道理 , 但是相形之下 , 这个通关密语的强度 (strength) 和保护就格外重要啰。

加密 (encryption)

802.11i 设计了一个 ”半新” 和全新的加密协定 , 分别是 TKIP 和 CCMP 。

TKIP - 之所以称 TKIP 为一个 ” 半新 ” 的加密协定 , 只是因为它保留了 WEP 所使用的加密引擎 RC4 和基本架构。作这样的保留是为了要使 TKIP 能够相容于支援 WEP 的硬体 , 以便于使用者日后升级。事实上 TKIP 原本被称为 WEP2, 但由于 WEP 经证实存在瑕疵 , 为了能与 WEP 有所区隔 , 因此更名为 TKIP 。

WEP 最大的弱点在于过短的 IV 以及直接以使用者设定的 WEP 金钥为输入项目产生金钥串流 , 再以之结合资料进行加密。 TKIP 将 24-bit 的 IV 增加为 48-bit, 如此可以有效防止 IV 空间在金钥的使用期限内耗尽。再来就是 RC4 用来产生金钥串流的金钥 , 在 TKIP 里 , 这把用来产生金钥串流的金钥是以配钥 (key mixing) 的方式产生的。首先无线装置和 AP 之间在验证阶段或重新验证阶段 (802.11i 规范的验证方式 ) 会以随机 (random) 的方式协商出成对主钥 PMK, 这把 PMK 的任务之一就是要衍生出暂时金钥 (temporal key), 并于配送 (distribution) 金钥时对金钥进行加密。 TKIP 再以暂时金钥以及其他元素 ( 例如传送端的 MAC address) 为输入项目 , 进行二个阶段的配钥程序产生出密钥 , 这个密钥就是用来产生金钥串流的种子。也因为使用配钥的方式 , 使得 TKIP 能为每一个传送的讯眶 (frame) 打造一把独特的密钥。

CCMP - WEP 以及 TKIP 均使用 RC4 演算法。 RC4 是一种以串流密码锁 (stream cipher) 为基础的演算法。由于 RC4 本身隐含了极大的瑕疵 , 虽然 TKIP 针对 WEP 的弱点作了重大的改良 , 但仍免不了存在着 RC4 本身隐含的弱点。有鉴于此 ,802.11i 重新设计了一个以 AES 为基础的的加密协定 - CCMP 。

AES 是以区块密码锁 (block cipher) 为基础、强度高于 RC4 的一种演算法。因此 AES 也被认为是比 WEP/TKIP 所采用的 RC4 更适合应用在无线局域网 (WLAN) 的一种 MAC 加密演算法。但是由于 AES 的复杂度更高 , 需要更多的硬体运算资源 , 因此无法向下相容于早期仅支持 WEP 的硬体。言下之意 , 早期的无线网路设备可能无法透过软体更新 / 升级的方式来支持 CCMP 。

金钥管理 (key management)

金钥管理的复杂度绝对不亚于加密协定的复杂度。简单的说 ,802.11i 定义的金钥管理包括了金钥阶层 (key hierarchy) 、无线网路设备间 ( 例如无线网路装置和 AP) 如何协商出金钥、金钥的衍生 (derivation) 以及金钥的配送 (distribution) 等。

802.11i – 固安网路连线 RSNA 定义的三项主要元件包含验证 (authentication) 、加密 (encryption) 以及金钥管理 (key management), 三者是一连串相辅相成的程序 , 缺一不可。

之所以称 802.11i 为安全灵药而不是万灵丹 , 是因为 802.11i 只解决了无线局域网 MAC 的安全问题 ( 当然这是它的主要任务之一 ), 也就是说如果 AP 同时扮演着有线网路和无线网路的桥接器 ( 当然目前大部分的 AP 都具备这样的功能 , 也都同时扮演着这样的角色 ), 资料讯眶 (frame) 一旦流出 AP 到有线网路环境 , 这样的安全加密便不复存在 , 若想保持整个通讯会期 (session) 的资料加密 , 就有赖于上层的加密协定 ( 例如 IPSec VPN 或 SSL VPN) 。那 802.11i 另一个主要任务是什么呢 !? 嘿嘿嘿 !!! 当然就是要消弭使用者对于无线局域网的安全疑虑啰 !!!

 

image

 

什么是”IEEE 802.1X/EAP”

IEEE 802.11i 所规范的验证 (authentication) 方式是采用 802.1X 架构 (framework) 来进行验证程序。而 802.1X 又是以 EAP 为基础来制定的。其实可以把 802.1X 拆开成二个部份来看 ( 非正式定义 , 只是这样应该会比容易理解 802.1X) 。

第一个是 架构 (framework)” ,802.1X 其实就是在定义一个 ” 网路存取控制 ”(Port-Based Network Access Control) 的架构 , 包括架构里的角色以及 ”EAP OVER LAN(EAPOL)” 协定 ,EAPOL 这个协定的主要目的除了触发 ” 真正 ” 的 EAP 交换程序之外 , 另外一个目的就是以 EAPOL-Key 进行协商以衍生 (derivation) 金钥并进行金钥传递 (distribution) 。

第二个是 验证 (authentication)” ,802.1X 是以 EAP 为基础所制定的架构 , 当然 EAP(Extensible Authentication Protocol) 就是这个架构下的验证协定。然而 EAP 虽然是一个验证 (authentication) 协定 , 但是它并不处理验证的细节 , 正确的说 ,EAP 只是个架构协定 , 它只定义了讯眶格式、要求与回应、验证成功与失败以及验证方式的类型代码。 EAP 将验证的细节处理授权给 ”EAP method” 这个附属协定 , 而 EAP 本身以 ” 验证方式的类型代码 ” 来指定由那个 ”EAP method” 来进行接下来的验证程序。为了因应无线局域网 ” 开放 ” 的特性 ,”EAP method” 必须要符合两项要求:

加密的通道 (tunnel ) – 简言之 , 所有的验证程序 , 包括衍生金钥的协商以及金钥的传递 , 都必须是在已经过加密的通道中进行。

互相验证 (mutual authentication) – 除了验证使用者是否有使用网路的权利之外 , 执行验证工作的服务器在验证使用者之前 , 必须先向使用者证明自己的是 ” 合法 ” 的服务器 , 如此对使用者而言也提供一份保障 , 防止攻击者以 ” 伪装 ” 的方式窃取使用者的帐号 (account) 。

”IEEE 802.1X/EAP” 适用在传统的有线局域网或无线局域网的环境 , 以实施网路的存取控制。搭配验证服务器 (Authentication Server) 以使用者为基础 (role based) 的方式进行验证 , 也就是说使用者是以使用者帐号 (account) 或使用者凭证 (certificate) 来证明使用者的身份。相较于 WEP 或 WPA-PSK(WEP 是所有使用者共用同一把金钥; WPA-PSK 是所有使用者共用同一个 ” 通关密语 ”),802.1X/EAP 提供了更严谨、更安全、更具弹性的验证方式 , 例如:不想让某个使用者使用无线网路 , 仅需要将某个使用者的帐号 (account) 从无线网路使用者群组 (group) 中拿掉或者撤消 (revocation) 某个使用者凭证 (certificate) 即可。同样的 , 也可以为暂时性的使用者设定一个临时性的帐号 , 于需要时开放该帐号 , 不需要时锁定该帐号。

 

IEEE 802.1X 为一个 ” 网路存取控制 (Port-Based Network Access Control)” 的架构。在 802.1X 的架构里 , 有三种基本角色 , 分别是申请者 (supplicant) 、验证者 (authenticator) 、验证服务器 (Authentication Server, AS) 。

申请者 (supplicant) 就是想要对网路进行存取的使用者机器 , 在 WLAN 环境里 , 就是指支持无线局域网的 Notebook 、 PC 、手持装置。事实上 , 验证阶段就是由申请者提出验证要求 (EAPOL-Start) 后开始进行一连串的验证程序。 ( 严格来说 , 除了安装无线网卡之外 , 要成为 supplicant 还必须安装支持特定 EAP method 的 supplicant 软体 , 由于 Windows XP 已经内建有支持部份 EAP method 的 supplicant 机制 , 所以在使用上没有明显的感觉 , 但是有些 Linux 的版本 , 在安装无线网路卡后 , 还必须安装 supplicant 软体 , 才能成为 supplicant)

验证者 (authenticator) 其实就是网路存取控制器 , 在有线网路环境中 , 它可能是一台交换器 (switch HUB) ;在 WLAN 环境中 (infrastructure mode), 它应该就是一台 AP 或是一台无线交换器。验证者虽然是网路存取的控制者 , 但是它并不维护使用者资讯 ( 目前有些较先进的企业型 AP, 提供管理者可以直接于 AP 建立使用者帐号 , 不过这种方式仅限小规模的应用 ), 也就是说在验证阶段 , 验证使用者的工作是交由验证服务器来负责 , 而验证者仅负责转送申请者和验证服务器之间的验证交换讯息 , 当然这个时候 , 除了验证的交换讯息之外 , 验证者会将其他的讯息丢弃 (dropped) 。 ( 其实在 802.1X 规格书中 , 于验证阶段时 , 验证者除了允许转送验证交换讯息外 , 亦允许使用 DHCP 以及其他初始化讯息 )

验证服务器 (Authentication Server, AS) 在验证阶段里 , 验证服务器担负起真正验证使用者的工作 ( 验证服务器可能维护着使用者资讯 , 当然 , 在大规模的布署里 , 使用者资料库也有可能是建立在 LDAP 服务器或是 Microsoft AD) 。不管验证成功或失败 , 验证服务器都会通知验证者 , 验证者再根据验证成功与否来决定是否授与申请者使用网路的权利。另外 , 为了因应无线局域网的应用 , 避免使用者遭到 ” 伪装 ” 攻击而因此被窃取使用者帐号 , 验证服务器在验证使用者之前 , 必须先向使用者提出身份证明 , 以证明自己是 ” 合法 ” 的验证服务器 , 并间接证明验证者也是 ” 合法 ” 验证者。

 

IEEE 802.1X 没有定义任何实作的方法 , 严格来说 ,IEEE 802.1X 并不能算是个标准 , 而是个架构 (framework) 。架构或许很好理解 , 但是该以什么方式来实作 ? 要选择那一种 EAP method? 架构里的三种基本角色包括申请者、验证者、验证服务器 , 申请者就有如支持 802.1X 的无线装置 , 如 Notebook 、 PC 、 PDA 等 , 验证者就有如支持 802.1X 的 AP 等这类的网路存取控制 , 那验证服务器呢 ? 有什么样的实作方式可以来实现验证服务器的机制 ?

人类天生矛盾 , 选择性少的时候觉得没有弹性 , 一旦选择性多的时候 , 却又不知该如何选择 !! 其实业界目前来说有不少验证服务器的实作方式 , 亦开发出不少的 EAP method 。我无法在此一一介绍每一种实作的方式 ( 因为我也没有所有实作方式的经验 ), 所以就挑了一、二个我实际作过 , 而且在业界也有不少公司或企业采用的方式来简单描述一下。

有两种 EAP method 在目前业界有很多实作的案例 , 分别是 EAP-TLS 以及 EAP-PEAP 。这两种方式也是目前大部分的操作系统以及验证服务器实作均会支持的两种方式 , 而且这两种方式也都符合无网局域网的应用要求 – “ 加密的通道 ” 以及 ” 互相验证 ” 。

EAP-PEAP

PEAP 是一种受保护的 EAP 方式 (Protected EAP, PEAP), 采用这种方式的目的是可以搭配 ” 旧式的身份验证方式 ” 一起使用。所谓 ” 旧式的身份验证方式 ” 就是指如 MS-CHAP-V2 这类的内层 (inner) 身份验证方式 ( 由于 Microsoft” 广大 ” 的使用市场 , 所以 MS-CHAP-V2 也是目前支持最多的 PEAP 内层身份验证方式。之所以称 MS-CHAP-V2 为 ” 旧式的身份验证方式 ” 是因为在由 Windows 2003 Server 所建立的 AD 内 , 使用 Windows XP 的 client, 其所采用的验证协定是 Kerberos) 。这种 EAP method 首先验证服务器会先以自身的服务器凭证 (certificate) 来证明自身的 ” 合法性 ” 后建立起一条安全通道 ( 加密的通道 ), 后续的验证程序就是在这个安全通道内进行 , 接着验证服务器会要求无线终端装置的使用者输入使用者帐号 ( 使用 MS-CHAP-V2) 以完成验证程序。采用这种 EAP method, 除了验证服务器须安装由凭证授权中心 (CA) 所发行的服务器凭证以及根凭证之外 , 无线终端装置仅须安装 CA 根凭证即可 ( 这样无线终端装置才能够信任验证服务器的服务器凭证 ), 当然 , 除了于公司内建 CA 之外 , 亦可采行向受信任的第三方 CA 购买凭证的方式来布署。

EAP-TLS

这种方式 ” 号称 ” 是众多 EAP 方式 (EAP method) 中安全强度最高的一种方式 , 但也是建制和管理复杂度最高的一种方式。这种 EAP method 验证服务器和无线终端装置都是以凭证来进行互相验证。首先验证服务器以服务器凭证来宣告其 ” 合法性 ”, 再以双方凭证中 public-key 的方式协商出一把 session-key, 使用者装置再以此 session-key 加密并传送使用者凭证中的使用者资讯给验证服务器以验证使用者身份。言下之意 , 验证服务器和使用者装置除了双方都要安装 CA 根凭证之外 , 还要分别安装服务器凭证和使用者凭证 , 想想看 , 有多少个使用者 , 就要发行多少张使用者凭证 , 这当中还涉及凭证的使用期限、撤销凭证、撤销清单的发布等管理需求 , 而这个管理需求一般就是指 PKI(Public Key infrastructure) 的布署和管理。

EAP-TLS 之所以被 ” 号称 ” 为安全强度最高的 EAP method, 是因为一般认为使用者帐号 (account) 可以 ” 猜 ”, 而凭证却无法 ” 猜 ” 。但由于 EAP-TLS 涉及到凭证的管理 , 甚至于 PKI 的布署 , 而 PKI 的布署又是另一项浩大的工程 ( 当然 , 也可以利用 Linux 搭配 FreeRADIUS 和 OpenSSL 进行小规模的应用 ) 。所以在安全性、建制成本、管理成本的考量之下 , 一般而言 ,EAP-PEAP 会比 EAP-TLS 更受欢迎。

 

在验证服务器的实作方面 , 一般会以 RADIUS 的方式来实作 , 有两种实作方式既容易取得 , 设定上也不会太复杂 ( 这两种实作方式虽然也经常被应用在 production 的环境中 , 但老话一句 , 应用之前还是要经过详细的规划以及测试 ), 分别是 Microsoft IAS 以及开放源码的 FreeRADIUS 。

IAS(Internet Authentication Service)

这是 Microsoft 的网际网路验证服务 , 内建于 Windows 2003 Server(S.E. 以及 E.E. 均有支持 , 只是 S.E. 会有一些限制存在 , 例如在 Windows 2003 Server standard edition 安装 IAS, 此时一台 IAS 服务器仅能支持最大 50 个 RADIUS 用户端 , 也就是 50 个 AP, 然而 , 虽然存在着这样的限制 , 但即使是在一、二百人应用的场合 , 也已经是绰绰有余 ), 使用 IAS 最大的好处是可以轻易的与 Microsoft AD(Windows 2000 原生模式或 Windows Server 2003 功能的网域层级 , 预设是混合模式 ) 整合在一起 , 只要提供 IAS 的服务器为 AD 的成员服务器 (member server), 就可以很有弹性的授予个别使用者或群组使用权利 ( 在实际应用上 , 通常会建立一个群组 , 例如 wireless users, 再将要授予无线网路使用权利的使用者加入到这个群组 ) 。当然 IAS 服务器也可以是一台独立服务器 , 只是这种情况下 , 使用者资料是建立于 IAS 服务器上 , 这种模式较适合小规模的应用。 IAS 亦支持 EAP-PEAP 以及 EAP-TLS 这两种 EAP method 。

FreeRADIUS

Linux + FreeRADIUS + OpenSSL 最大的好处是可以大大降低作业系统的授权使用费用 , 甚至于 ” 免费 ” 使用 , 这也是 open source 最吸引人的地方 , 再加上稳定度、自由度以及越来越人性化的介面 , 这也是为什么越来越多人或公司要舍 Microsoft 而就 Linux 。大部份的 Linux distribution( 例如 RedHat 、 SuSE 、 Fedora) 都已经内含 FreeRADIUS 以及 OpenSSL 的套件 (RPM) 。 FreeRADIUS 扮演的角色就有如 Microsoft IAS Server 的角色 ,OpenSSL 则可以利用来发行凭证 ( 非必要 , 端视使用那一种 EAP method 而定 ) 。同样的 ,RADIUS Server 可以利用现有的 LDAP Server( 须搭配相关的 schema 以及 object classes) 上的使用者资讯来进行验证 , 当然 , 也可以由 RADIUS Server 自己来维护一份使用者资讯。 FreeRADIUS 亦支持 EAP-PEAP 以及 EAP-TLS 这两种 EAP method 。

 

无线局域网的标准”群”

IEEE 802.11 这个工作小组为无线局域网制定了 ” 一群 ” 标准 , 这里介绍几个主要、常见的标准项目:

802.11a

使用频率 (frequency) 范围为 5GHz UNII 频段 (band) ERP-OFDM 的展频 (spread spectrum) 技术 , 最大传输率为 54Mbps 。相较于 802.11b/g,802.11a 于 5GHz 的频段下作业最大的优点是有较少的干扰来源 , 缺点是较小的覆盖 (coverage) 范围。

802.11b

使用频率 (frequency) 范围为 2.4GHz ISM 频段 (band) DSSS 的展频 (spread spectrum) 技术 , 最大传输率为 11Mbps 。 802.11b 于 2.4GHz 的频段下作业 , 由于有相当多的无线设备 ( 如蓝芽设备或无线电话 ) 以及电器亦运作于 2.4GHz 频段 , 因此 802.11b/g 会有较多的干扰来源 , 而影响到传输品质 , 这一点在作实地探勘 (site survey) 时要特别注意。但相较于 802.11a,802.11b/g 会有较大的覆盖 (coverage) 范围。

802.11g

使用频率 (frequency) 范围为 2.4GHz ISM 频段 (band) DSSS 以及 ERP-OFDM 的展频 (spread spectrum) 技术 , 最大传输率为 54Mbps 。由于使用不同频段或不同展频技术的无线设备间是无法互相通讯 , 所以 802.11g 使用 DSSS 展频技术的目的之一就是为了要向下相容于 802.11b, 所以一般支援 802.11b/g 的无线 AP 会提供三种模式以供使用者调整使用 , 分别为 B mode 此时 AP 运作于 DSSS 展频技术下 , 仅供 802.11b 的无线装置存取使用; G mode 此时 AP 运作于 OFDM 展频技术下 , 仅供 802.11g 的无线装置存取使用; B/G mode( 或称混合模式 ) 此时 AP 会运作于 DSSS 和 OFDM 这两种展频技术下 ( 注意 , 此种模式是指 AP” 混合使用 ” 两种展频技术 , 而不是 ” 同时使用 ” 两种展频技术 ), 这种模式虽然提供了最大的弹性 ( 允许 802.11b 及 802.11g 无线装置存取使用 ), 但相对的 , 却会牺牲部份的传输效能。

802.11e

定义了无线局域网路媒体存取方式 (medium access method) 的 ” 加强版 ”, 使其能支援服务品质 (Quality of Service, QoS) 的需求 , 因应对于时间敏感度 (time-sensitive) 较高的服务 , 像语音、影像等多媒体的应用。将来可能会于非 PC 设备上被广泛采用 , 例如支援 Wi-Fi 的消费类电子产品和语音行动设备等。 Wi-Fi 联盟相对应标准即为 WMM(Wi-Fi Multimedia) 。

802.11F

802.11F 只能说是一个 ” 建议性的作法 ”, 并不能算是一个标准。无线局域网装置如何可以在资料传输过程不中断的情况下像行动电话般漫游在不同基地台之间 , 而不须要重新连线 (association) 和验证 (authentication), 一直也是被热烈讨论的话题。虽然现在很多厂商提供了漫游 (roaming) 的解决方案 , 但也仅限于同厂牌 AP 之间的漫游。因此 802.11F 建议采用 IAPP(Inter Access Point Protocol) 协定 , 即使不同厂商的 AP 间 , 也能透过 DS(Distribution System) 来传递漫游无线装置的资讯。但遗憾的是 , 到目前为止 , 使用者若想于 site 内建立无线局域网的漫游机制 , 建议还是选择同厂牌 , 且支援 IAPP 的 AP 。

802.11i

无线局域网的安全机制 , 定义了更严谨的验证 (authenticatin) 方式以及加密协定 , 让使用者可以安全的使用无线局域网。 Wi-Fi 联盟的相对应标准即为 Wi-Fi WPA2 及 Wi-Fi WPA2-PSK 。

 

 

Windows XP对WPA/WPA2的支持

 

如果所购买的无线网卡支持WPA/WPA2的话,那么Windows XP自带的WZC有支持WPA/WPA2吗?姑且不论Microsoft的”功过”,Microsoft对无线局域网的支持也算是不疑余力。所以Windows XP自带的WZC当然也支持WPA/WPA2啰!!只是这一点在XP SP2是绝对成立的,因为XP的SP2已经包含了Windows WPA Client;在XP SP1,有经验的使用者可能会发现,WZC仅支持WEP,原因就是XP SP1并不包含Windows WPA Client,所以对于因为其他应用程式的关系或”个人的因素”无法或不想将XP升级到SP2的使用者而言,必须至Microsoft网站下载Windows WPA Client,安装完之后.,Windows XP SP1的使用者就可以WZC进行WPA/WPA2的设定啰!!(前提是无线网卡必须也能支持WZC的设定,目前大部份的无线网卡都有支持。另一点要注意的是,大部份的无线网卡应用程式都无法和Windows WZC并用,为避免两个service冲突,若要使用WZC,最好先将无线网卡应用程式移除)。

这里”是Microsoft的官方网站,有更为详尽的资讯,有兴趣的使用者可以参考看看哦!!

 

勿以”善”小而不为

当然 , 还是鼓励大家多行善事 , 只是这里要讨论的主题不是 ” 行善事 ”, 而是要讨论一下无线基地台 (AP) 里的一些 ” 小 ” 设定 , 这些 ” 小 ” 设定看似不起眼 , 但是对于小规模 ( 家用或 SOHO) 的无线局域网之安全性而言却具有一定程度的保护作用。

关闭 SSID 广播

当使用者打开无线装置 (device), 如果这个装置位于某个 AP 的可用讯号范围内 , 在无线装置的 ” 可用网路 ” 中 , 可能会看到这个无线 AP 的名称 (SSID), 这是因为 AP 会定时广播自己的网路名称 (SSID), 好让无线装置可以知道它的 ” 存在 ” 。关闭 SSID 广播 , 使用者须以手动的方式输入网路名称 (SSID), 无线装置再以主动扫瞄的方式来 ” 寻找 ”AP, 在家用或 SOHO 使用的规模里 , 如此作法 , 可以使无线局域网处于 ” 某种程度的隐藏 ” 。 ( 大规模或公司企业的布署 , 关闭 SSID 广播的作法 , 可能反而增加管理的负担 , 与其如此 , 倒不如采用更为 ” 正式 ” 、严谨的安全性作法 , 例如使用 WPA 或 WPA2)

变更预设 (default) SSID

就算把无线局域网 ” 隐藏 ” 起来 , 但 ” 闲杂人等 ” 还是可以手动的方式输入网路名称 , 让无线装置 (device) 进行主动扫瞄 , 只要在网路上 ”Google” 一下 , 就可以找到很多预设名称 (SSID) 的 ” 可用范例 ” 。所以除了关闭 SSID 广播之外 , 不要忘了再变更一下预设 (default) 的网路名称 (SSID) 。

使用加密 (encryption)

若是你的无线 AP 以及装置 (device) 上的无线网卡均支持最强的加密协定 - CCMP 或 AES, 请使用它 !! 若是你的无线 AP 或装置上的无线网卡所支持的 ” 最强 ” 加密协定仅有 WEP, 那么 , 还是请你使用吧 !!( 当然 , 能定期变更 WEP 金钥更好 )

使用验证 (authentication)

若是准备要采购无线设备的话 , 建议购买支持 WPA2/WPA2 PSK 标准的 AP 以及无线网卡 , 这样至少可以使用 WPA2-PSK 的模式来进行使用者的验证 , 并搭配 CCMP 或 AES 加密协定。 ( 如果可以的话 , 最好也是定期变更 pre-share key)

对于已经在使用早期无线设备的使用者而言 , 早期无线设备可能仅支持简单的开放系统验证 (open-system authentication) 、共享金钥验证 (shared-key authentication) 以及 WEP 加密 , 建议采用 ” 开放系统验证加 WEP 加密 ” 的方式 , 因为共享金钥验证的方式已经被证实 , 反而会导致 WEP 更容易遭到破解。

( 对于家用或 SOHO 而言 , 若是安全考量 ” 非常大于 ” 成本考量的话 , 当然也可以实施 IEEE 802.1X 的验证方式 )

使用 ACL(Access Control List)

大部份的无线 AP 都会提供 MAC 位址过滤 (MAC address filter) 的功能 , 也就是设定允许或限制清单 (list) 上的 MAC 位址进行连线。如果无线 AP 有提供这样的功能 , 建议查看一下无线装置上无线网卡的 MAC 位址 , 并且在无线 AP 把 ACL 设定起来吧 !!

限制传输功率 (Transmit Power) 的大小

同样的 , 这也是大部份的无线 AP 会提供的功能 , 有些会以百分比 (%) 来表示 , 有些则以高、中、低来表示。当无线电波的含盖范围 (coverage) 超过你想提供无线服务的范围时 , 这种情况也可以称之为溢波。当有这种情况发生时 , 任何人可能在楼梯间、走道或隔壁办公室就可以 ” 接触 ” 到你的无线局域网电波。可以借着调整传输功率的大小 , 来防止无线电波范围太广。

使用安全连线来进行设定

大部份的无线 AP 都是透过 HTTP 以浏览器的方式来进行设定 , 少部份的无线 AP 会提供 telnet 的方式。但是不管是 HTTP 或 telnet 都是以未经加密的方式来连线 , 若是遭到来自网路的窃听 , 攻击者就可以很容易得知管理者的密码。所以有些无线 AP 会提供 HTTPS 或 SSH, 以经过加密的连线方式来进行设定 , 采取这种作法对于为了因应远端维护或希望透过有经验的使用者来进行设定而开放 ” 远端连线管理 ” 的无线 AP 而言格外重要 !!

更改预设 (default) 的管理者密码

前面提到过 , 只要在网路 ”Google” 一下 , 就可以找到很多预设值 (default) 的 ” 参考资料 ”, 当然也包括各厂牌无线 AP 的管理者预设密码啰 !! 所以即使透过加密的方式来进行无线 AP 的设定可以有效防止管理者密码遭到窃听 , 但是若没有配合着去更改预设管理者密码 ,” 有心人士 ” 只要稍微试一下 , 就可以 …… 嘿嘿嘿 !!

( 有些无线 AP 甚至提供让使用者去更改像 admin 、 root 诸如此类的预设管理者名称 )

设定防火墙

如果无线 AP 同时还扮演着边界路由器 ( 无线匣道器 ) 的角色的话 , 防火墙的设定就很重要了 , 幸运的是 , 现在有些无线匣道器已经预设好一些基本的过滤 (filter) 规则 (rule) 或原则 (policy), 甚至有 SPI 的功能 , 使用者只要启动或 enable 即可。但毕竟设定防火墙是一项专业 , 设定防火墙的原则 (policy) 本来就不是一件简单的事 , 甚至于还要经过反复的测试或入侵测试 , 尤其对于一般使用者而言 , 建议最好找一下有经验的朋友帮忙或是请经销商的工程师代劳。

当然 , 以上这些 ” 小手段 ” 对于 ” 资讯安全专家 ” 而言或许只能算是 ” 消极 ” 的安全作法 ( 例如可以借着收集主动扫瞄的 probe request 得知 ” 被隐藏 ” 的 SSID 或是 MAC 位址可以伪造等 ) 。但是 , 多上个几道锁 , 就算不是上等的好锁 , 至少可以防止 ” 一般闲杂人等 ” 随意进出家里大门 , 对吧 !!

 

WPS(Wi-Fi PROTECTED SETUP)让无线局域网的安全设定更简单

WPS - Wi-Fi Protected Setup

PBC - Push Button Configuration 这个是不需要密码的方式

PIN - Personal Information Number 这个是要用密码的方式 通常用在电子设备的互通

这是一个于2007年1月出炉的Wi-Fi标准,一个让无线局域网的安全设定”更简易化”的标准。根据一项统计,目前尚有约40%无线局域网的使用者将无线局域网完全开放不受保护,其主要原因之一是因为目前的Wi-Fi安全标准,不管是WPA2或WPA2-PSK,每一家厂商所开发出来的无线产品在安全设定上会有一定的差异,对于一般使用者而言,还是会具有相当的困难度存在,当然将无线网路完全开放也包括很多尚未意识到无线网路的安全威胁。有鉴于此,Wi-Fi联盟特别针对家用使用者或SOHO市场,制定了”Wi-Fi Protected Setup”认证机制,也就是说通过Wi-Fi认证(certified),并符合”Wi-Fi Protected Setup”标准的无线产品,基本上已为使用者提供了两个简易的安全设定:PIN(Personal Information Number)和PBC(Push Botton Configuration)。(另外还有两个非必要之选择性项目:NFC和USB方式, 截至本文发表时尚在测试阶段)


PIN
是一个由无线设备生产厂商所提供或于初始(initial)无线局域网时动态产生的一个4到8位数码,任何无线设备要加入到某个无线局域网时,都要由使用者透过使用者介面(UI)输入PIN,这种方式就好像要加入某个蓝芽设备时都要输入一个PIN code,而这个PIN code有可能是厂商写在设备里(如蓝芽耳机)或是由使用者设定(如PDA和notebook要进行蓝芽连线)。PBC是无线设备透过按钮的方式来加入到无线局域网,例如某个使用者的无线设备要加入到无线局域网,必须在无线设备上按下”设定钮”或 notebook萤幕内的”虚拟设定钮”后,再于”规定”时间内按下无线AP的设定钮。


按照Wi-Fi联盟所释出的白皮书来看,”Wi-Fi Protected Setup”是简化了”Wi-Fi WPA2-PSK”的安全设定,在”传统”的方式下,使用者必须先启动无线AP的安全设定,再于AP安全项目内设定pre-shared key,使用者装置若要加入无线局域网,必须先寻找相对应的网路名称(SSID),再于进行连线时由使用者输入正确的pre-shared key,”Wi-Fi Protected Setup”相对的为使用者省略了这些步骤,至于SSID以及pre-shared key会于使用者无线装置与无线AP进行连线交握(handshake)时产生。

原文链接

posted @ 2009-08-04 13:49  辛勤耕耘  阅读(1151)  评论(0编辑  收藏  举报