úterý 28. května 2002

AES - nový šifrovací standart

25 let po schválení šifry DES oznámil americký Národní úřad pro standartizaci (NIST) schválení šifry AES jako federální standart USA s platností od 26.5.2002.

Král je mrtev, ať žije král! AES od tohoto dne oficiálně začne nahrazovat starý standart DES. AES znamená Advenced Encryption Standart (Pokročilý šifrovací standart). U AES se očekává životnost minimálně 20 let, podle některých odhadů až 30 let. Šifře AES nehrozí útok hrubou silou (brute force) = vyzkoušení všech možných klíčů, jako třeba u DES pomocí DES Crackeru (viz časopis Chip 11/98). Momentálně se zdá, že je AES neprolomitelná. Výběr nového šifrovacího standartu trval více než čtyři roky, a tak se dá předpokládat, že v dohledné době by neměla být šifra prolomena. AES vychází z 25 let starých principů, které byly použity i pro DES. Velký pokrok oproti DES je délka klíčů. AES podporuje délky klíčů 128, 192 a 256 bitů. V současné době není možný útok hrubou silou ani na 128bitový klíč. Jediná možná reálná hrozba útoku hrubou silou na AES je ze strany kvantových počítačů a počítačů založených na bázi DNA. Ty se však v dohledné době určitě na trh nedostanou. Pokud by došlo k výraznému pokroku ve vývoji těchto technologií, určitě se to dozvíme minimálně 10 let před využitím v praxi. Bohužel ani AES není nerozluštitelná a určitě se dříve nebo později objeví něco jako DES Cracker v podání pro AES.

Pokud se rozhodnete používat AES v praxi ve svých programech, pak se nemusíte bát žádného složitého bádání. Na internetu je možné stáhnout zdrojové kódy pro šifrovací / dešifrovací algoritmus. Na stránkách http://www.esat.kuleuven.ac.be/~rijmen/rijndael/ najdete zdrojové kódy ve velké spoustě programovacích jazyků a následná implementace je velmi jednoduchá. Zdrojové kódy jsou k dispozici například v Javě, C++, assembleru pro 80186, Visual Basicu, Delphi 5.0, Perlu a jako modul pro MATLAB. Dá se očekávat přísun dalších zdrojáků například pro PHP, ASP. Použitelnost na internetu momentálně zajištuje pouze verze pro Perl a Javu (i jako Servlet).

Současně s AES byly také ohlášeny HASH funkce SHA-256, SHA-384 a SHA-512. Ty najdou užití při generování šifrovacího klíče ze zadaného hesla. Asi málo lidí by se obtěžovalo s zapisování 256bitového kódu. Různé HASHovací funkce generují různé textové řetězce(naprosto nečitelné) ze vstupního textu. Velkou výhodou je, že i heslo dlouhé 5 znaků prodlouží SHA-256 na 256 bitů. Pokud se Vám povede utajit funkci pro výpočet šifrovacího klíče z hesla, bude muset útočník generovat až onen 256bitový klíč. To mu bude trvat mnohem déle než generovat heslo dlouhé 5 znaků. Všechny kombinace 5ti znakého hesla by mohl vyzkoušet během jednoho dne, ale vyzkoušet všechny možnosti 256 bitového klíče by mu trvalo několi stovek (spíše tísíců let s ohledem na současný výkon počítačů).
Počet kombinací se dá spočítat velmi snadno:
Počet možností = počet možných znaků ^ počet míst.
Pro 5ti znaké heslo(a-z + A-Z + 0-9)...Počet možností = 60^5 = 777600000
Pro 10ti znaké heslo(a-z + A-Z + 0-9)...Počet možností = 60^10 = 604661760000000000
Pro 256bitový klíč (1/0 na 256 místech)...Počet možností = 2^256 = 1,15792e+77

Dešifrování dokumentu MS-WORD o zhruba 10 stránkách s jedním stylem písma bez obrázků trvalo asi 50ms (AMD DURON 750Mhz, 448 MB RAM). To odpovídá rychlosti 20 klíčů za sekundu, tj. 1728000 klíčů za den, tj. 630720000 klíčů za rok. Při počtu možností 1,15792e+77 by vyzkoušení všech klíčů trvalo 1,8358e+68 let (snad jsem se ve výpočtech nikde nespletl). Každopádně je vidět, že generování všech možných šifrovacích klíčů nepřipadá v úvahu. To ale nepřipadalo v úvahu ani u DES a přece se objevil DES Cracker, který dokázal to, co by dělaly stovky počítačů v síti několik desítek let během několika minut nebo hodin.

Žádné komentáře: