◆馬天午 李建宇 竇浩
(河北蘭科網絡工程集團有限公司 河北 065000)
隨著信息科技的發展日新月異,再加上信息設備的價格大幅降低,不論是在辦公室或一般家庭,計算機已成為非常重要的工具。而網絡的發展更使信息的傳遞更加便捷與迅速,在政府機關或企業內部,區域網絡的建立不只使訊息的傳遞更加方便,也達到了檔案交換和資源共享的目的,使生產力大幅提升。在無線區域網絡的發展過程中,雖然有不同的組織或廠商提出不同的通信協定標準,但IEEE 802.11 系列的無線區域網絡標準,可說受到最多生產廠商的支持,各廠商也預測大部分的無線區域網絡將采用 802.11 為通信協議,提供客戶穩定而廉價的無線區域網絡傳輸服務。
認證(Authentication)的目的是確認對方身份的合法性,以免與身份不明的對象溝通,泄漏了重要的機密。也就是雙方進行通訊的前,必須先經過認證的程序。IEEE 802.11 提供兩種認證的服務-開放系統式(Open System)及共享鑰匙式(Shared Key)。前者是IEEE 802.11內定的認證方法,不過工作站提出認證要求時可指定要采用哪種方式進行雙向認證。
所謂加密即是將原來傳送的資料,經過一特定的運算過程,將原來的訊息隱藏起來,必須再經過相對的運算稱作解密,才能還原。在這里尚未經過加密演算的資料,稱為明文(Plaintext,簡稱P),經過加密演算的資料稱作密文(Ciphertext,簡稱 C)。在密碼算法(cryptographicalgorithm)定義了一組相對的加密函數(Encryption function,簡稱E)和解密函數(Decryption function,簡稱D),加密函數和解密函數的算法可以是相同也可以完全不同,在近代的密碼學中,加解密多采用鑰匙(Key)的方式來運算,即是加密函數和解密函數都在算法中加入Key,函數的算法則是公開的,只有將Key 保留,換言之,竊聽者如果能得到Key,就能將密文完全破解。
一個經WEP 加密的訊框在資料(Frame Body)部份,是由初始矢量(IV)4 個位元組、密文大于1 個位元組和完整性檢查碼(ICV)4 個位元組組合而成。
初始矢量(IV)事實上包3 個位元組(24 bits)的初始矢量和1個位元組鑰匙選擇字節合。
IV 的產生方式可由工作站或擷取點在傳送時隨機產生或采用計數器循序產生,802.11 標準并沒有定義,可由設計者自行設計。WEP中最多可以定義四組KEY,在傳送時再由鑰匙選擇位元指定由第幾組KEY 來負責加密或解密的工作。加密的過程首先將明文經過在3.2 介紹的完整性算法產生一個4 個位元組的完整性檢查碼。
再經由WEP 加密,在802.11 中定義WEP 是采用共享式鑰匙的方式,所有的用戶包含擷取點(AP)都采用同一個KEY 來完成加密和解密,鑰匙長度有40bits 和128bits 兩種。
WEP 40bits 的格式中共享鑰匙長度為40 個位元和IV 的24 個位元,組成長度為64 個位元的KEY。WEP 128 bits 的格式中共享鑰匙長度并非128 個位元而只有104 個位元和IV 的24 個位元,組成長度為128 個位元的KEY。組合成完整的KEY 再經由RC4 算法產生不定長度的串流位元值和原文作互斥或運算:
C = P⊕RC4(IV,KEY)
當接收端收到資料時,取出封包中的IV 加上工作站本身擁有的共享鑰匙組成完整的KEY經由同樣的RC4 算法產生相同的位元串流值和密文作互斥或運算即可得到原文。
因為IV 的長度只有24 個位元,所以只要網絡中所有工作站傳送山的封包的總數超過224 時,就會有IV 重復使用的問題產生,例如黑客擷取到兩個使用相同IV 加密的封包C1 和C2 時:
C1= P1⊕RC4(IV,KEY),
C2= P2⊕RC4(IV,KEY),
因為C1 和C2 都是分別由P1、P2 和RC4(IV,KEY)作互斥或運算,所以將C1 和C2 兩個再作一次互斥或運算可以得到:
C1⊕C2 =[P1⊕RC4(IV,KEY)]⊕[P2⊕RC4(IV,KEY)]
=P1⊕RC4(IV,KEY)⊕P2⊕RC4(IV,KEY)
=P1⊕P2⊕RC4(IV,KEY)⊕RC4(IV,KEY)
=P1⊕P2⊕1
=P1⊕P2
可看出將兩個密文作互斥或運算后所得的結果只和原來的明文有關,和原來的共享鑰匙無關,若收集使用相同IV 值的封包數愈多,泄漏出的訊息將足以利用統計或其他破密的方法分析出原文。而這樣的情形在一個平均流量達5 百萬位元(Mbit)的無線區域網絡內,若假設平均封包長度為1400 字節時,大約每10 小時就會出現IV 重復使用的問題,而竊聽者并不需要連續監聽10 小時,可以每次監聽數小時,連續監聽幾天,累計監聽時間超過十小時可得到同樣的效果。再加上部分無線區域網絡傳輸設備在設計時,并未考慮周全,例如在使用計數器來產生IV 的設備中,許多設備是在每次開機時會將計數器是歸零,也就是更容易產生使用相同IV 來加密封包的情形。
在WEP 中若竊聽者已知明文P 時,將密文和明文作互斥或運算,可得到某一組IV 和KEY 經RC4 運算后產生的串流鍵值的部分結果(因明文長度而異):
C⊕P =[P⊕RC4(IV,KEY)]⊕P
= P⊕RC4(IV,KEY)⊕P
= RC4(IV,KEY)⊕P⊕P
= RC4(IV,KEY)]⊕1
= RC4(IV,KEY)]
雖然無法破解共享鑰匙,但可利用來對使用相同的IV 加密的封包破解而得到原文。黑客可以使用這種方法對位于無線區域網絡中的某一工作站發出訊息,例如一封電子郵件等,當擷取點將資料加密傳送時再加以監聽,便很容易可以得到泄露的訊息。
若變造的部分是屬于封包的位址部分,則可能使擷取點和埠接器無法辨別封包真偽,認為是一個正確的封包且目的位址屬于無線網絡的外部的有線網絡上的工作站,而將封包先解密后再傳送出去,而泄漏出重要的信息。
在管理者安裝無線區域網絡時,有時為了容易記住鑰匙,而采用了英文單詞或某些較為簡單的組合,黑客可以有機會采用字典的方式暴力破解WEP 的密碼,例如Wepcrack 即是一種采用字典為基礎的暴力破解工具。
在無線區域網絡中采用了共享鑰匙的策略,除了鑰匙傳遞的問題外,另外所有的工作站和擷取點都擁有鑰匙,而且記錄在機器內部,使得管理上容易產生缺失,讓入侵者很容易就獲得鑰匙。
共同的模式是當已知初始矢量(IV,3 個位元組)和n 個位元組的鑰匙(0≦n≦L)時,我們即可模擬鑰匙安排法則(KSA)的前n+3個循環數列運算,求出S1 至Sn+3 數列和Sn+4 數列的Sn+4[0]至Sn+4[n+2]項,找出所有符合Sn+4[1]<n+3且Sn+4[1]+ Sn+4[Sn+4[1]]=n+3 的封包,皆可用來分析K[n],事實上當已知的共享鑰匙愈多時,有更多的不同初始矢量符合條件可用來分析。
同時在設計程序實際分析鑰匙的過程中,可適度地提高搜尋的廣度,即原先分析封包的第一個位元組來計算:
K[n]=(S-1[z]- jn+3 - Sn+3[n+3])mod 256(0≦n≦L)
并計算不同K[n]值的出現的次數,最后以出現次數最高者為預測結果,如果預測的結果最后經實際驗證并不符合,可再以出現次數次高或第3 高K[n]值的依序往下分析,采用這樣提高搜尋廣度的方式 ,即使擷取到的封包數目不多,但仍有極高的概率可以分析出正確的鑰匙。
而以FLUHRER,S.等人在他們的論文中提到每個KEY 必須收集60 個以上有效的封包為例,在大部分的無線區域網絡設備里,產生初始矢量時多數采用了計數器和隨機產生兩種方式。
在采用計數器的環境下,在計數器是先改變初始矢量的最低位元值(IV[0])時,需收集4 百萬個封包,在計數器是先改變初始矢量的最高位元值(IV[2])時,只需收集不到2 百萬個封包即有足夠的有效封包用來分析。在采用隨機產生初始矢量的環境下,更只需約1.3 百萬個封包就足夠。在一個平均流量達5 百萬位元(Mb)的無線區域網絡下,若假設平均封包長度為1400 字節時,每秒鐘約有450個以上的封包可供擷取,每小時約有1.68 百萬個封包可供擷取,也就是最少只要一小時,最多不到三小時的時間就可收集足夠的有效封包數來破解WEP 的鑰匙。
根據本文的討論,可以看出在無線區域網絡中即使采用有線等效加密算法(WEP)并采用了較長的共享鑰匙(WEP-128),要保證信息在傳遞時不受黑客的竊取是不可能的,當使用者在建置無線區域網絡時希望資料在傳遞時能有足夠的安全防護,必須采用相應方法來提高安全性。