802.11有線等效加密WEP

来源:https://www.cnblogs.com/hustluotao/archive/2020/02/25/12347782.html
-Advertisement-
Play Games

有線等效加密(WEP)標準是802.11無線安全早期的解決方案,WEP並不安全。 既然WEP並不安全,為什麼還要學習WEP呢? 1. WEP簡單,相比後續出現的加密協議,它不要求有多麼強大的計算能力。一些老的設備,特別是缺乏足夠處理能力的手持設備,WEP已經是最佳選擇; 2. 較新的技術,如TKIP ...


有線等效加密(WEP)標準是802.11無線安全早期的解決方案,WEP並不安全。

既然WEP並不安全,為什麼還要學習WEP呢?

  1. WEP簡單,相比後續出現的加密協議,它不要求有多麼強大的計算能力。一些老的設備,特別是缺乏足夠處理能力的手持設備,WEP已經是最佳選擇;
  2. 較新的技術,如TKIP,仍舊會用到WEP的幀處理能力;

1. WEP的密碼學背景

WEP用以保護數據的RC4密碼屬於對稱性(密鑰)流密碼(stream cipher),流密碼會用到稱為密鑰流(keystream)的位流,密鑰流隨後會與信息結合,產生密文(ciphertext)。為了還原原始信息,接收端會以相同的密鑰流處理密文。RC4會利用異或(exclusive OR,簡稱XOR)運算結合密鑰流與密文。如下圖所示。

流密碼的運作方式通常是先選用一把較短的密鑰,通過偽隨機數生成器(pseudorandom number generator,PRNG)將之展開為與信息等長的偽隨機數密鑰流,如下圖所示。

2. WEP的加密操作

通信安全有三個主要目的:

  • 機密性

    防止數據不受未授權的第三者攔截;

  • 完整性

    確保數據沒有被修改;

  • 真實性

    真實性是所有安全策略的基礎,因為數據的可信度部分取決於數據源的可靠性;

WEP的數據處理流程如下圖所示:

驅動程式以及介面硬體負責處理數據,然後送出加密過的封包,順序如下:

  1. 802.11幀被放在隊列中等待發送。幀由標頭(Header)和有效載荷(Payload)組成,根據有效載荷計算出完整性校驗值ICV,並放在有效載荷尾部;
  2. 隨後組裝幀加密密鑰(或稱WEP種子),WEP種子分為兩部分:秘鑰(secret key)以及初始向量(IV)。添加IV是為了避免出現使用相同密鑰流進行加密的情況,802.11並未限制選取IV時非得使用何種演算法;
  3. 幀加密密鑰被當成RC4密鑰,用以加密步驟1有效載荷和ICV,整個加密過程通常通過RC4專用電路來完成;
  4. 有效載荷加密之後,就可以組裝待傳的幀。802.11標頭與加密過的有效載荷之間插入WEP標頭,除了IV,WEP標頭中還包含密鑰編號,WEP最多允許定義4個密鑰。一旦附加上最後的標頭,就可以針對真個MAC幀,計算出802.11幀校驗碼(FCS)。

以上闡述了WEP幀的組裝流程,解密的過程剛好相反。一旦使用WEP進行加密,幀主體就會增加8個位元組。其中4個位元組作為幀主體的IV標頭,另外4個位元組作為ICV標尾,如下圖所示。

IV標頭使用3個位元組來容納長度為24位的IV,第四個位元組則包含填充位以及密鑰標識符(key ID)。數據幀的32位迴圈冗餘校驗(CRC)碼提供了完整性檢查,附加於幀主體之後,同時被RC4保護。

3. 關於WEP的種種問題

  1. 手動管理密鑰對於變換密鑰工作量大;

  2. 標準的靜態WEP只提供長度為40位的密鑰,業界標準所提供的密鑰長度最多只達到104位;

  3. 一旦重覆使用密鑰流(keystream),流密碼(stream cipher)就容易被識破。可供使用的IV值(24位)並不大,容易重覆;

  4. 如果不常更換密鑰,攻擊者就可以採集解密字典(decryption dictionarie),即積累以相同密鑰流加密的大量幀,那麼破解密鑰就指日可待;

  5. WEP使用CRC進行完整性檢查,CRC並沒有密碼學上的安全性;

4. 動態WEP

不同於讓網路中所有工作站共用一個靜態密鑰來加密所有幀,動態WEP讓網路上所有工作站使用一個密鑰來加密廣播幀,但個別工作站使用自己的映射密鑰來加密單播幀。動態WEP每隔一段時間就會產生並分配新的密鑰。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 微信公眾號dotnet跨平臺2020年初做的一個關於中國.NET開發者調查收到了開發者近 1400 條回覆。這份調查報告涵蓋了開發者工具鏈的所有部分,包括編程語言、應用架構、應用伺服器、運行時平臺、框架技術、框架配置、IDE、.NET/.NET Core 發行版部署模式、構建工具和Kubernete... ...
  • screen是一款由GNU計劃開發的用於命令行終端切換的自由軟體。用戶可以通過該軟體同時連接多個本地或遠程的命令行會話,併在其間自由切換。GNU Screen可以看作是視窗管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。 screen重要性 screen的重要性,主要是體現在它 ...
  • 通過前面十餘篇文章的介紹,相信已經初步入門Linux本地管理的基本方法了,後續的文章將介紹Linux中常用的服務部署以及如何為外部提供相應的服務。 系列文章第三篇“linux入門系列3 linux遠程登陸工具”初步介紹了幾款用於Linux遠程登錄管理的工具,本文再來詳細講解下SSH協議以及對應的服務 ...
  • HyperBoot_S32K116 is a UART bootloader developed for my S32K116 EVB hardware. so that the application can be reflashed by UART. ...
  • rpm | 升級軟體包 檢查已安裝包 rpm -qa | grep samba samba-common-3.6.9-164.el6.x86_64 samba-3.6.9-164.el6.x86_64 samba-winbind-clients-3.6.9-164.el6.x86_64 samba- ...
  • 筆者今天升級了VSCode,安裝完後發現Dock(程式塢)沒有VSCode的圖標了,導致切換應用非常不方便。 具體情況就像下麵這張圖,VSCode明明開著,但是在Dock找不到VSCode了。 解決辦法就是在終端執行以下命令就可以了: 其實就相當於重啟Dock。在看VSCode的圖標已經回來了。 原 ...
  • 最近需要開發一些內核模塊,進行探究linux內核的一些特征,現在把一些遇到的比較好的文章和知識點,進行簡要記錄和備忘; 內核模塊開發相關鏈接: https://www.thegeekstuff.com/2013/07/write-linux-kernel-module/ 入門教程;insmod, r ...
  • SRAM 即靜態RAM.它也由晶體管組成,SRAM的高速和靜態特性使它們通常被用來作為Cache存儲器。電腦的主板上都有Cache插座。 下圖所示的是一個SRAM的結構框圖。 由上圖看出SRAM一般由五大部分組成,即存儲單元陣列、地址解碼器(包括行解碼器和列解碼器)、靈敏放火器、控制電路和緩衝/驅 ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...