Uporaba kriptografije v internetu
Kazalo   
 

DES

je naslednik algoritma Lucifer, ki so ga razvili in patentirali pri IBM. Leta 1976 je bil sprejet kot standardni kriptografski algoritem v ZDA in je vključen v ogromno aplikacij. Do leta 1997 je bila dovoljena splošna uporaba znotraj ZDA, prepovedan pa izvoz. Leta 1999 so dovolili izvoz opreme z algoritmom s 56-bitnim ključem, od januarja 2000 pa so te omejitve še zmanjšane (v brskalnikih lahko uporabljamo trojni DES).

NIST je tri leta vodil postopek za izbor naslednika DES, ki mu je ime AES (Advanced Encryption Standard). Izmed petih finalistov (Mars, RC6, Rijndael,Serpent in Twofish) je bil 2. oktobra 2000 izbran algoritem Rijndael.

Julija 2004 je NIST objavil predlog, da se DES s 56-bitnim ključem ne bi več uporabljal. Obrazložitev: "DES is now vulnerable to key exhaustion using massive, parallel computations." To pa ne velja za trojni DES.

Po skoraj letu dni za to objavo (19.maj 2005) je NIST umaknil vse standarde v zvezi z DES: Federal Information Processing Standard (FIPS) 46-3, Data Encryption Standard (DES); FIPS 74, Guidelines for Implementing and Using the NBS Data Encryption Standard; and FIPS 81, DES Modes of Operation. DES je bil tako v uporabi tri desetletja - koliko časa bo AES?


Šifrirajo se 64 bitov dolgi bloki z uporabo 56 bitov dolgega ključa, uporablja transpozicije in substitucije. 64 bitov na začetku permutiramo, potem jih preuredimo s pomočjo posebnih tabel (S-boxes) in ključa. Ta del postopka se 16-krat ponovi - vsakokrat z drugače preurejenim ključem.

Postopek za šifriranje 64-bitnega bloka:

  1. Blok permutiramo z začetno permutacijo IP.
  2. Blok razdelimo na dva 32-bitna bloka (levi gre v register L, desni v register R).

Začetek zanke

3. V vsakem bajtu bloka R podvojimo prvi, četrti, peti in osmi bit (32 + 4.4 = 48 bitov).

4. Ta rezultat seštejemo z operacijo XOR s ključem, ki je v vsaki ponovitvi zanke drugačen.

5. Vsoto razbijemo na 8 x 6 bitov. Vsak tak sekstet zamenjamo z elementom sustitucijske tabele, ki ima dimenzije 4 x 16 in vsebuje elemente od 0 do 15. Pozicijo elementa dobimo takole: vrstico povesta 1. in 6. bit (0 - 3), stolpec pa 2. - 5.bit (0 - 15).

6. Osemkrat po 4 bite premešamo s permutacijo P.

7. Rezultat seštejemo z vsebino registra L z XOR in shranimo v začasni register.

8. Vsebino registra R prenesemo v L, vsebino iz začasnega registra pa v R.

To zanko ponovimo 16-krat.

9. Bloka iz L in R združimo v obratnem vrstnem redu in premešamo z inverzom začetne permutacije IP.

Kako dobimo 48-bitni ključ, ki ga uporabimo v 4. koraku:

Izmed 64 bitov izločimo vsakega 8., preostalih 56 bitov razdelimo in damo v registra C in D. V 16 korakih ju ciklično premaknemo za eno ali dve mesti v levo (1, 2, 9, 16 -eno mesto, sicer 2). Bloka združimo, 8 bitov izpustimo in preostanek premešamo.

Algoritem učinkuje tako, da sprememba enega samega vhodnega bita bloka spremeni skoraj vse bite v rezultatu bloka. Dešifriramo z istim ključem in skoraj enakim postopkom.

Zakaj ima DES ključ dolg le 56 bitov (njegov predhodnik Lucifer pa 112) ? V času, ko je algoritem nastajal (1974-1976), je 56 bitov popolnoma zadoščalo. Zdaj so te številke malo drugačne. Priporočajo vsaj 70-bitne ključe - glej n.pr. članek Arjana Lenstre in Erica Verheula.

Zato zdaj priporočajo trojno enkripcijo z DES na takle način: zašifriramo s ključem 1, dešifriramo s ključem 2, zašifriramo s ključem 3. Pri dešifriranju gremo po istih stopinjah v obratnem redu: dešifriramo s ključem 3, šifriramo s ključem 2 in dešifriramo s ključem 1. Ocenjujejo, da je tako uporabljen algoritem tako varen, kot da bi imel 112 bitov dolg ključ. Recimo, da imamo računalnik, ki je zmožen testirati 1012 enkripcij na sekundo. Izvršiti mora 2112 = 5.19 x 1033 testiranj. Če to delimo z 1012, še vedno ostane 1021 sekund, kar je 1014 let.

November 1996, zadnjič dopolnjeno maja 2005