Locked History Actions

Non-atomic dycription attack

Žodis angliškai

Non-atomic dycription attack

Žodis Lietuviškai

nevienalyčio dešifravimo ataka


Paaiškinimai

Teorija:

SSH (Secure shell) – tai tinklo protokolas, aprašantis apsaugotą kliento prisijungimą prie serverio aplinkos (shell) ir komandų vykdymą. SSH buvo sukurtas kaip alternatyva Telnet ir kitiems nesaugiems prisijungimo protokolams, kuriais vartotojo siunčiama informacija - vardai, slaptažodžiai ir komandos, siunčiami atviru tekstu, kuris gali būti lengvai perimtas. SSH naudojamas šifravimas užtikrina duomenų saugumą ir vientisumą perduodant juos nesaugiais tinklais.

AES (Advanced Encryption Standard) – pažangus šifravimo standartas, šifravimo algoritmas. Dar vadinamas Rijndael algoritmu. Rijndael yra blokinis simetrinis algoritmas. Šifravimo raktai gali būti 128, 192, arba 256 bitų ilgio, o blokų ilgis gali būti 128, 192 arba 256 bitų.

Ataka:

Pavyzdžiu laikysime SSH „binary packet“ protokolo ataką.

SSH naudoja „binary packet“ protokolą pranešimų siuntimui tarp kliento ir serverio. SSH naudoja vadinamą šifravimo ir po to „MAC“ taikymo mechanizmą, tai reiškia, kad kartu su paketu siunčiamas MAC sudarytas iš duomenų bloko. Tipinis SSH paketas susideda iš eilės numerio, paketo ilgio, duomenų lauko bei priedo lauko (pad). Visa tai šifruojama naudojant „CBC“ šifravimą. Tačiau pagrindinė šio paketo savybė leidžianti vykti atakoms yra paketo dekodavimas. Paketo dekodavimas vyksta pirmiausia atkoduojant bloko ilgio lauką, po to nuskaitant tiek paketų kiek parodo bloko ilgio laukas ir tik tada vyksta MAC tikrinimas ir jei randama klaida išsiunčiamas kaidos pranešimas. Taigi šiame procese nėra įmanoma patikrinti ar bloko ilgio laukas yra teisingas, nes jis iššifruojamas prie iššifruojant visą bloką. Taigi jeigu piktavalis perima vieno bloko ilgio pranešimą kuriame yra norimas atpažinti pranešimas „P“ užkoduotas raktu „R“. B = AES(R, P). Taigi piktavalis turėdamas perimtą bloko ilgio pranešimą įterpia tą pranešima į duomenų bloko pradžia ir siunčia serveriui. Serveris iššifruoja pirmus bloko bitus laikydamas, kad tai yra bloko ilgis ir tikisi gauti tokio ilgio pranešimą. Taigi piktavalis siunčia serveliui viena baitą per vieną kartą paeiliui tol kol serveris gauną reikiamą baitų kiekį, dešifruoja visą bloką, patikrina „MAC“ ir žinoma siunčia klaidą. Tačiau piktavalis skaičiuodamas kiek baitų priėmė serveris sužino kokia pirmųjų 32 bitų reikšmė. Taigi naudodamas šia ataką piktavalis gali sužinoti kiekvieno bloko pirmus 32 bitus.

4.jpg

Veiksmingi būdi kovoti prieš šia ataką: naudoti vienalytes sistemas kurioje visas paketas iššifruojamas iš karto. Nenaudoti šifravimo bloko ilgio laukui. Naudoti papildoma MAC kuris būtų skirtas tik bloko ilgio laukui.

Literatūra

1. http://lt.wikipedia.org/wiki/SSH

2. http://lt.wikipedia.org/wiki/AES

3. Stanford University online Cryptography course