西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開發(fā)其它知識(shí) → WEP抓包WEP加密的破解原理的深入分析

WEP抓包WEP加密的破解原理的深入分析

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:趙小布的博客時(shí)間:2011/7/14 15:01:45字體大。A-A+

作者:趙小布點(diǎn)擊:1045次評(píng)論:1次標(biāo)簽: 抓包

  • 類型:網(wǎng)絡(luò)共享大小:434KB語(yǔ)言:英文 評(píng)分:5.0
  • 標(biāo)簽:
立即下載

知其然,知其所以然。呵呵,有興趣的人可以看下去,沒興趣的人跳過吧。前幾天發(fā)過一個(gè)帖子,粗略講了下WEP加密的破解原理?赡芎芏嗳丝吹脑评镬F里。最近幾天因?yàn)槊χ獪?zhǔn)備考研,在復(fù)習(xí)線性代數(shù)和離散數(shù)學(xué),學(xué)計(jì)算機(jī)的人都知道,這兩門課是計(jì)算機(jī)的專業(yè)基礎(chǔ)課,而很多密碼學(xué)的知識(shí)都是建立的數(shù)學(xué)的基礎(chǔ)上的,比如非常著名的非對(duì)稱加密算法RSA就是建立在大素?cái)?shù)分解難題上的。這個(gè)不是我們今天要討論的主題,呵呵,我主要講的WEP加密的原理和為什么我們抓包就能破解,盡量講的通俗易懂點(diǎn)。
   WEP是鏈路層的安全機(jī)制(關(guān)于7層模型,有疑問的,大家自己去百度google)。他的加密過程是這樣的。
   (1) 客戶端計(jì)算原始數(shù)據(jù)包中明文數(shù)據(jù)(我們記做P)的32位CRC循環(huán)冗余校驗(yàn)碼,實(shí)際上是計(jì)算整數(shù)檢查向量(我們記做ICV),(又一堆專業(yè)術(shù)語(yǔ),大家不理解沒關(guān)系),這兩個(gè),也就是P和ICV構(gòu)成我們要傳輸?shù)臄?shù)據(jù)(P+ICV),這才是需要加密的真正的明文。

   (2) 我們用40位的密鑰和24位的初始向量(IV)構(gòu)成種子密鑰(假設(shè)我們采用64位加密)。輸入到采用RC4算法的偽隨機(jī)數(shù)發(fā)生器,生成與我們要傳輸?shù)拿魑模≒+ICV)等長(zhǎng)的隨機(jī)數(shù),我喜歡把這個(gè)稱作為真正的密鑰(Real Key)。我們輸入的種子不同,生成的隨機(jī)數(shù)也是不同的。這個(gè)類似于現(xiàn)在很多軟件都靠MD5散列來檢驗(yàn)有沒有被人篡改過。又扯遠(yuǎn)了;氐秸}。

   (3) 將我們得到的隨機(jī)數(shù)和傳輸明文數(shù)據(jù)(P+ICV)按位進(jìn)行異或操作(所謂異或操作,就是比較相同位上的數(shù)字,如果相同值為0,不同則為1),得到密文(我們記做C),然后將前面的24位初始向量和密文(C)組合在一起,得到要傳輸?shù)拿芪模↖V+C)。

    解密的過程只是個(gè)簡(jiǎn)單的取反。就是AP收到數(shù)據(jù)后,將得到的(IV+C),分解,提取IV,然后將自己所持有的密鑰Key組合在一起,輸入到采用RC4算法的偽隨機(jī)數(shù)發(fā)生器,得到解密的隨機(jī)數(shù),實(shí)際上和加密的隨機(jī)數(shù)是一樣的。然后將解密的隨機(jī)數(shù)和密文(C)做異或操作,就得到了明文(P+ICV);


    這么說也許大家看不懂,我覺得例子吧。
    假設(shè)我們要傳輸?shù)拿魑模≒+ICV)= 0001101101
    與之等長(zhǎng)的隨機(jī)數(shù)列(Real Key)= 0111011010
    將這兩個(gè)進(jìn)行異或操作 得到密文C=0110110111
解密過程就是將密文C和隨機(jī)數(shù)列(Real Key)進(jìn)行異或操作。得到的就是明文(P+ICV);

    接下來就是最最關(guān)鍵的,就是為什么我們能夠破解WEP。其實(shí),產(chǎn)生Real Key的RC4算法本身就是有問題的,具體我就不講了,涉及很復(fù)雜的數(shù)學(xué)知識(shí),有興趣的自己查資料。我這里要講的就是我們現(xiàn)在所使用的,就是抓包很多包來破解。
   
    我們來討論下24位的初始向量,因?yàn)檫@個(gè)在密文(IV+C)中是明文傳輸?shù),我們可以很方便的得到?的24次方是16777216。我們現(xiàn)在使用的網(wǎng)絡(luò)一般是54Mb/s,我們假設(shè)傳輸分組的大小為2000字節(jié),實(shí)際比這小,我們計(jì)算下 54(Mb/s) / (2000B/包 * 8bits/B) = 3375 包/秒,也就說大概經(jīng)過16777216 /3375=4971秒,也就是差不多1.3個(gè)小時(shí),初始向量就要被全部用光了,就會(huì)出現(xiàn)重復(fù)。呵呵,如果我們真的等一個(gè)多小時(shí)才抓到兩個(gè)IV相同的包,那估計(jì)很多人會(huì)抓狂了,實(shí)際情況遠(yuǎn)比這個(gè)要好。我上面講的是IV初始為0,然后隨著數(shù)據(jù)包的個(gè)數(shù)的增加,逐漸按模2的24次方遞增,到24位全部用完時(shí),IV又返回為0這么一種情況。然后實(shí)際過程中,IV 是在[0,224-1]上隨機(jī)取的值。

   好吧,接下去就是概率的問題了(又是一門專業(yè)基礎(chǔ)課概率論與數(shù)理統(tǒng)計(jì)),經(jīng)過我的計(jì)算,在傳輸4823個(gè)數(shù)據(jù)包后,將會(huì)有50%的概率IV會(huì)相同,當(dāng)發(fā)送12430個(gè)數(shù)據(jù)包時(shí)99%的概率會(huì)發(fā)生IV相同。也就是4秒鐘左右,就會(huì)發(fā)生IV相同的情況。
   
   假設(shè)我們抓到兩個(gè)IV相同的包(IV+C1)和(IV+C2),因?yàn)镮V相同,40位的密鑰也相同,所以他們產(chǎn)生的Real Key也相同。那么我們可以將密文C1和密文C2進(jìn)行異或操作,這個(gè)值和他們的明文異或操作時(shí)相同的。這一點(diǎn)大家可以按照我上面的例子自己算下。這樣,如果我們抓到足夠的包,也就是隨著IV相同的密文數(shù)的增多,完全就可以分析出密鑰和明文。
  關(guān)于WEP協(xié)議,它犯了密碼學(xué)中的大忌,就是避免使用線性運(yùn)算。這里CRC冗余算法和RC4都是線性運(yùn)算。至于為什么這么說,下次再說吧。呵呵

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(1)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)