mint valószínűleg már tudja, a Wired Equivalent Privacy-t (WEP) a vállalatok használják vezeték nélküli kapcsolataik szippantásos támadások elleni védelmére. Valószínűleg azt is hallotta, hogy nem túl biztonságos. Ennek az 2 részsorozatnak az első részében elmagyarázom a WEP belső működését, és a következő hónapban követem, hogy miért bizonytalan.
mint valószínűleg már tudja Wired Equivalent Privacy (WEP) használják a vállalatok, hogy biztosítsák a vezeték nélküli kapcsolatok szippantás támadások. Valószínűleg azt is hallotta, hogy nem túl biztonságos. Ennek az 2 részsorozatnak az első részében elmagyarázom a WEP belső működését, és a következő hónapban követem, hogy miért bizonytalan.
szükségem van egyáltalán WEP-re?
egy hiteles felhasználó, Bob használ a laptop, hogy ellenőrizze a Gmail-fiók minden nap. Laptopjában van egy vezeték nélküli kártya, amely automatikusan felismeri az internetszolgáltató vezeték nélküli hozzáférési pontját (WAP) az utca túloldalán. Amint csatlakozik a WAP-hoz, megnézheti az e-mailjeit. Alice egy alattomos felhasználó, aki nem akar fizetni az internetszolgáltatónak az internethez való hozzáférésért. Tudja azonban, hogy az utca túloldalán lévő internetszolgáltatónak van egy hozzáférési pontja, amelyhez bárki csatlakozhat és hozzáférhet az internethez. Bedugja a laptopját, és hamarosan zenét tölt le az internetről. A WEP-et úgy tervezték, hogy biztosítsa a felhasználók hitelesítését az erőforrások használata előtt, az Alice blokkolását és a Bob engedélyezését. Lássuk, hogy csinálja ezt.
hogyan működik a WEP
a WEP az RC4 algoritmust használja az információcsomagok titkosítására, amikor azokat a hozzáférési pontról vagy a vezeték nélküli hálózati kártyáról küldik ki. Amint a hozzáférési pont megkapja a felhasználó hálózati kártyája által küldött csomagokat, visszafejti őket.
az adatok minden bájtja egy másik csomagkulccsal lesz titkosítva. Ez biztosítja, hogy ha egy hackernek sikerül feltörnie ezt a csomagkulcsot, akkor az egyetlen kiszivárgott információ az, amely a csomagban található.
a tényleges titkosítási logika az RC4-ben nagyon egyszerű. Az egyszerű szöveg XOR-ed egy végtelenül hosszú kulcsfolyam. Az RC4 biztonsága a kulcsfolyamból származó csomagkulcs titkosságából származik.
Tehát mi a csomagkulcs?
a csomagkulcs egy előre megosztott jelszó, egy állapot tömb és egy inicializáló vektor (IV) kombinálásával jön létre. Először értsük meg ezeket a kifejezéseket:
előre megosztott jelszó: minden felhasználó ugyanazt az előre megosztott jelszót használja minden továbbított csomaghoz.
állami tömb: ez egy számsorozat, amelyet kódolnak, majd az RC4 használ a kulcsfolyam felépítéséhez.
inicializálási Vektor (IV): a IV egy 3 bájtos véletlenszám, amelyet a számítógép generál. Vagy betoldják, vagy hozzáfűzik a rejtjelszöveghez, és elküldik a fogadónak, aki leveszi az IV-et, mielőtt visszafejtené a rejtjelszöveget.
az RC4 algoritmus 2 fő részből áll:
a Kulcsütemezési algoritmus: a KSA folyamat magában foglalja a kódolt állapot tömb . Ezt az állapot tömböt most bemenetként használják a második fázisban, az úgynevezett PRGA fázisban.
a pszeudo véletlen generációs algoritmus: az állam tömb a KSA folyamat itt használják, hogy létrehoz egy végső kulcs stream. A generált kulcsfolyam minden bájtját ezután Xor ‘ ed a megfelelő egyszerű szöveges bájttal a kívánt rejtjelszöveg előállításához.
Kulcsütemezési algoritmus
az IV kiszámítása az előre megosztott jelszó állapot tömbje és tulajdonságai alapján történik. Ezt úgy érjük el, hogy létrehozunk egy olyan értéktömböt, amely megegyezik az algoritmusban használni kívánt indexszel. A WEP indexe alapértelmezés szerint 256. A KSA-hoz szükséges összetevők az i és j változók értékei, az index értéke, az előre megosztott jelszó és annak hossza. Az algoritmust, amely ezeket az értékeket használja a végső kulcsfolyam létrehozásához, az alábbiakban vázoljuk.
inicializálás:
For i=0 ... index-1
S=i
J=0
rejtjelező:
For i=0 ... index-1
J = j + state + K
Swap(state , state)
a hurok először 0-tól index-1-ig fut, hogy inicializálja az állapot tömböt 0-tól indexig. Pl. Ha index =4 az állapot tömb 0-tól 3-ig terjedő értékekkel lesz kitöltve. Ezért a tömb értékei a következők lesznek:
s=0 s=1 s=2 s=3
a j értéke 0. Ezután elindul egy másik hurok. A cikluson keresztül minden alkalommal kiszámítják a j értékét, és az állapotban tartott tömb értékét felcserélik az állapotban tartott értékre .
pszeudo Random Generation Algorithm (Prga)
a pszeudovéletlenszám-generátor (PRNG) egy algoritmus, amely véletlenszerű számsorozatot generál. A PRGA felelős a sima szöveg titkosításához használt streaming értékek létrehozásáért, amely az állami tömbön, a KSA kimenetén alapul . A PRGA által követett módszertant az alábbiakban ismertetjük.
inicializálás:
I=0 j=0 index=4
generációs algoritmus
I=(i+1) mod index
J=(j+state) mod index
Swap(state, state)
Z=state + statemod index]
a streaming értéket a csomag minden bájtjának algoritmusán keresztül hurkolva hozza létre. Az i és j változókat 0-ra inicializáljuk. Minden csomaghoz kiszámítja a j értékét, és az állapotban tartott tömb értékét felcseréli az állapotban tartott értékre . Ezután a Z kimenetet minden csomagra kiszámítják. A folyamat végén van egy PRGA stream.
a PRGA stream ezután Xor ‘ ed a sima szöveg generálni titkosító szöveget, amely továbbítja a másik félnek.
példa
illusztráljuk a fenti fogalmakat példa formájában. A titkosítandó egyszerű szöveg teszt. Az itt használt jelszó 6258. Változónk kezdeti értékei a következők:
i=0 j=0 password=6258 pass length=4 index=4
az algoritmust követve:
Lépés-1
State array: State=0 State=1 State=2 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 6 mod 4 = 2
Swap(State , State) = Swap(0,2)
State=2 State=1 State=0 State=3
Lépés-2
i=1 j=2
State array: State=2 State=1 State=0 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 5 mod 4 = 1
Swap(State, State) = Swap(1,0)
State=2 State=0 State=1 State=3
Lépés 3
i=2 j=1
State array: State=2 State=0 State=1 State=3
Password: K=6 K=2 K=5 K=8
j = + K]mod 4 = 7 mod 4 = 3
Swap(State, State) = Swap(1,3)
State=2 State=0 State=3 State=1
Lépés 4
i=3 j=3
State array: State=2 State=0 State=3 State=1
Password: K=6 K=2 K=5 K=8
j = +K]mod 4 = 12 mod 4 = 0
Swap(State, State) = Swap(1,2)
State=1 State=0 State=3 State=2
Final State Array: State=1 State=0 State=3 State=2
miután a KSA állapot tömb készen áll, a PRGA eljárás inicializálódik. Az eljárás a következő:
Initially i=0 j=0
K=6 K=2 K=5 K=8
első hurok:
State=1 State=0 State=3 State=2
i=1 j=0+State=0+0=0
Swap(State, State) = Swap(0,1)
State=0 State=1 State=3 State=2
z = State + State mod 4] = State = 1
z1 = 00000001
második hurok:
State=0 State=1 State=3 State=2
i=2 j=0+State=3
Swap(State, State) = Swap(3,2)
State=0 State=1 State=2 State=3
z = State + State mod 4] = State = 1
z2 = 00000001
harmadik hurok:
State=0 State=1 State=2 State=3
i=3 j=3+State=6 mod 4 = 2
Swap(State,State) = Swap(3,2)
State=0 State=1 State=3 State=2
z = State + State] mod 4 = State = 1
z3=00000001
negyedik hurok:
State=0 State=1 State=3 State=2
i=4 j=2+State=2+State = 2+State = 2
Swap(State,State) = Swap(State,State) = Swap(0,3)
State=3 State=1 State=0 State=2
z4 = State + State] = State +
State] = State = 2
z4=00000010
az egyes hurkok végén lévő Z1-z4 kimeneteket az egyszerű szöveg minden karakterének ASCII-jével kell Xor ‘ ed, amely esetünkben teszt. Ezért az egyszerű szöveges teszt titkosítási szövege a következő lesz:
T xor z1 = 01010100 xor 00000001 = 01010101 = U
E xor z2 = 01000101 xor 00000001 = 01000100 = D
S xor z3 = 01010011 xor 00000001 = 01010010 = R
T xor z4 = 01010100 xor 00000010 = 01010110 = U
a WEP-vel titkosított teszt szó UDRU.
ez a cikk csak egy bevezető volt a WEP-hez és a WEP-ben a titkosítás pontos eljárásához. A következő részben azzal a kérdéssel foglalkozunk, amely a fejében a legfontosabb: “miért bizonytalan a WEP? Milyen kockázatoknak vagyok kitéve, ha WEP-t használok?”