Sari la conținut

Data Encryption Standard

De la Wikipedia, enciclopedia liberă
Funcţia Feistel din cadrul algoritmului

Standardul de Criptare a Datelor (în engleză Data Encryption Standard, DES) este un cifru (o metodă de criptare a informaţiei), selectat ca standard federal de procesare a informaţiilor în Statele Unite în 1976, şi care s-a bucurat ulterior de o largă utilizare pe plan internaţional. Algoritmul a fost controversat iniţial, cu elemente secrete, lungimea cheii scurtă şi cu suspiciuni că este de fapt o portitţă a NSA. DES a fost analizat intens de către profesionalişti în domeniu şi a motivat înţelegerea cifrurilor bloc şi a criptanalizei lor.

DES este astăzi considerat nesigur pentru multe aplicaţii. Acest lucru se datorează în principiu cheii de 56 de biţi, considerată prea scurtă; cheile DES au fost sparte în mai puţin de 24 de ore. De asemenea, există unele rezultate analitice care demonstrează slăbiciunile teoretice ale cifrului, deşi nu este fezabilă aplicarea lor. Se crede că algoritmul este practic sigur în forma DES triplu, deşi există atacuri teoretice. În ultimii ani, cifrul a fost înlocuit de Advanced Encryption Standard (AES).

În unele documentaţii, se face distincţie între DES ca standard şi algoritmul de la baza lui, numit DEA (Algoritmul de Criptare a Datelor - în engleză, Data Encryption Algorithm).

Istorie

Originile DES sunt în anii 1970. În 1972, după concluziile unui studiu asupra nevoilor de securitate pentru calculatoare a guvernului Statelor Unite, NBS (National Bureau of Standards) — acum numit NIST (National Institute of Standards and Technology) — a identificat necesitatea unui standard de criptare a datelor importante, nesecrete, care să fie folosit de toate statele. În consecinţă, pe 15 mai 1973, după consultarea cu NSA, NBS a solicitat propuneri pentru un cifru care să fie conform criteriilor de design riguroase. Nici una dintre înregistrări însă nu s-a dovedit a fi corespunzătoare. O a doua cerere a fost emisă pe 27 august 1974. De această dată, IBM a înscris un candidat considerat acceptabil, un cifru dezvoltat în perioada 1973–1974, bazat pe un algoritm existent, cifrul Lucifer al lui Horst Feistel. Echipa de la IBM implicată în dezvoltarea şi analiza cifrului îi include pe Feistel, Walter Tuchman, Don Coppersmith, Alan Konheim, Carl Meyer, Mike Matyas, Roy Adler, Edna Grossman, Bill Notz, Lynn Smith, şi Bryant Tuckerman.

Tabel cronologic

Dată An Eveniment
15 mai 1973 NBS publică prima cerere pentru un algoritm de criptare standard
27 august 1974 NBS publică a doua cerere pentru algoritmi de criptare
17 martie 1975 DES este publicat în Federal Register pentru comentarii
august 1976 Primul atelier de lucru pentru DES
septembrie 1976 Al doilea atelier, în care se discută fundamentele matematice ale lui DES
noiembrie 1976 DES este aprobat ca standard
15 ianuarie 1977 DES este publicat ca standardul FIPS PUB 46
1983 DES este reafirmat pentru prima dată
1986 Videocipher II, un sistem de criptare a sateliţilor TV bazat pe DES este folosit de HBO
22 ianuarie 1988 DES este reafirmat a doua oară ca FIPS 46-1, înlocuind FIPS PUB 46
iulie 1990 Biham şi Shamir redescoperă criptanaliza diferenţială şi o aplică unui criptosistem asemănător lui DES, cu 15 runde.
1992 Biham şi Shamir raportează primul atac teoretic cu o complexitate mai mică decât cel prin forţă brută: criptanaliză diferenţială. Totuşi, necesită un număr impresionant de texte normale: 247.
30 decembrie 1993 DES este reafirmat a treia oară ca FIPS 46-2
1994 Prima criptanaliză experimentală este efectuată asupra lui DES folosind criptanaliza liniară (Matsui, 1994).
iunie 1997 Proiectul DESCHALL sparge un mesaj criptat cu DES pentru prima dată în public.
iulie 1998 EFF construieşte DES cracker (Deep Crack), care sparge o cheie DES în 56 de ore.
ianuarie 1999 Împreună, Deep Crack şi distributed.net sparg o cheie DES în 22 de ore şi 15 minute.
25 octombrie 1999 DES este reafirmat a patra oară ca FIPS 46-3, care specifică utilizarea preferată a variantei Triplu DES, permiţând DES simplu doar în sistemele vechi.
26 noiembrie 2001 Advanced Encryption Standard este publicat în FIPS 197
26 mai 2002 Standardul AES este folosit
26 iulie 2004 Retragerea FIPS 46-3 (şi a altor două standarde înrudite) este propusă în Federal Register [1]
19 mai 2005 NIST retrage FIPS 46-3
13 ianuarie 2007 Maşina paralelă bazată pe FPGA, COPACOBANA, de la Universitatea din Bochum şi Kiel, Germania, sparge DES în 7,2 zile cu un cost hardware de 10.000 de dolari.

Descriere

Figura 1 — Structura Feistel generală din DES
Pentru concizie, descrierea următoare omite transformările şi permutările exacte necesare algoritmului; pentru referinţe, detaliile pot fi găsite la Material suplimentar pentru DES.

DES este cifrul bloc arhetip — un algoritm care ia un şir de lungime fixă de biţi de text normal şi îl transformă print-o serie de operaţii complexe într-un şir de biţi criptaţi de aceeaşi lungime. În cazul DES, mărimea blocului este de 64 biţi. DES foloseşte de asemenea şi o cheie pentru particularizarea transformării, astfel încât numai cei care cunosc cheia folosită să poată efectua decriptarea. Cheia este formată din 64 de biţi; totuşi, numai 56 dintre ei sunt folosiţi propriu-zis de algoritm. Opti biţi sunt utilizaţi ca biţi de paritate şi nu sunt necesari după acest test. Deci cheia efectivă are doar 56 de biţi, şi aşa este citată de obicei.

Ca şi alte cifruri bloc, DES nu este o cale sigură de criptare folosit de sine-stătător. El trebuie folosit într-un mod de operare. FIPS-81 specifică câteva feluri pentru utilizarea cu DES [2]. Alte comentarii despre acest lucru apar în FIPS-74 [3].

Structură generală

Structura generală a algoritmului apare în Figura 1: sunt 16 paşi identici de procesare, numiţi runde. Există şi câte o permutare iniţială şi finală, numite PI and PF, care sunt funcţii inverse (PI "anulează" acţiunea lui PF şi vice versa). PI şi PF nu au aproape nici o importanţă criptografică, dar au fost incluse pentru a facilita încărcarea şi descărcarea blocurilor folosind hardware-ul din anii 1970.

Înaintea rundelor principale, blocul este împărţit în două jumătăţi, de câte 32 de biţi, şi procesate alternativ; această alternare este cunoscută drept Schema Feistel. Structura Feistel asigură că criptarea şi decriptarea sunt procese foarte asemănătoare — singura dieferenţă este ordinea aplicării subcheilor - invers la decriptare. Restul algoritmului este identic. Acest lucru simplifică implementarea, în special cea hardware, deoarece nu e nevoie de algoritmi separaţi.

Simbolul cu roşu denotă operaţia OR exclusiv (XOR). Funcţia F amestecă jumătate din bloc cu o subcheie. Rezultatului funcţiei F este combinat cu cealaltă jumătate de bloc, iar jumătăţile sunt interschimbate înaintea următoarei runde. După ultima rundă, jumătăţile nu sunt schimbate; aceasta este o trăsătură a structurii Feistel care face din criptare şi decriptare procese similare.

Funcţia Feistel (F)

Funcţia F, care apare în Figura 2, operează pe o jumătate de bloc (32 biţi) la un moment dat şi este formată din patru paşi:

Figura 2 — Funcţia Feistel (F) din DES
  1. Expansiune — jumătatea de bloc de 32 de biţi este extinsă la 48 de biţi folosind funcţia de expansiune, notată E în diagramă, prin duplicarea unor biţi.
  2. Amestecare — rezultatul este combinat cu o subcheie folosind operaţia XOR. Şaisprezece subchei de 48 de biţi — una pentru fiecare rundă — sunt derivate din cheia principală folosind diversificarea cheilor (descrisă mai jos).
  3. Substituţie — după amestecarea cu subcheia, blocul este divizat în opt bucăţi de 6 biţi fiecare înainte de procesarea folosind cutiilor S, sau cutii de substituţie. Fiecare din cele opt cutii S înlocuieşte cei şase biţi de intrare cu patru biţi conform unei transformări neliniare, oferită sub forma unui tabel de căutare. Cutiile S reprezintă securitatea lui DES — fără ele, cifrul ar fi liniar şi uşor de spart.
  4. Permutare — în final, cele 32 de ieşiri din matricile S sunt rearanjate conform permutării fixe P.

Alternarea substituţiilor din matricile S şi permutarea biţilor folosind matricea P şi expansiunea E oferă ceea ce se numeşte "confuzie şi difuzie", un concept identificat de către Claude Shannon în anii 1940 ca fiind necesar unui cifru sigur şi practic în acelaşi timp.

Diversificarea cheilor

Figura 3 — Diversificarea cheilor în DES

Figura 3 ilustrează diversificarea cheilor pentru criptare — algoritmul care generează subcheile. Iniţial, 56 de biţi din cheia principală sunt selectaţi din cei 64 prin permutarea PC-1 — ceilalţi 8 biţi sunt ignoraţi sau folosiţi ca biţi de paritate. Cei 56 de biţi sunt apoi împărţiţi în două blocuri de 28 de biţi; fiecare jumătate este tratată ulterior separat. În runde succesive, ambele jumătăţi sunt rotate la stânga cu unul sau doi biţi (specificaţi pentru fiecare rundă), şi apoi sunt selectaţi cei 48 de biţi ai subcheii prin permutarea PC-2 — 24 de biţi din jumătatea stângă, şi 24 din cea dreaptă. Rotaţiile (notate cu "<<<" în diagramă) înseamnă că un set de biţi diferit este folosit în fiecare subcheie; fiecare bit este folosit în circa 14 din cele 16 chei.

Diversificarea cheilor pentru decriptare este similară — trebuie să se genereze subcheile în ordine inversă. Aşadar, rotaţiile sunt la dreapta, şi nu la stânga.

Cifruri bloc
Algoritmi: 3-Way | AES | Akelarre | Anubis | ARIA | BaseKing | Blowfish | C2 | Camellia | CAST-128 | CAST-256 | CIKS-1 | CIPHERUNICORN-A | CIPHERUNICORN-E | CMEA | Cobra | COCONUT98 | Crab | CRYPTON | CS-Cipher | DEAL | DES | DES-X | DFC | E2 | FEAL | FROG | G-DES | GOST | Grand Cru | Hasty Pudding Cipher | Hierocrypt | ICE | IDEA | IDEA NXT | Iraqi | Intel Cascade Cipher | KASUMI | KHAZAD | Khufu and Khafre | KN-Cipher | Libelle | LOKI89/91 | LOKI97 | Lucifer | M6 | MacGuffin | Madryga | MAGENTA | MARS | Mercy | MESH | MISTY1 | MMB | MWA | MULTI2 | NewDES | NOEKEON | NUSH | Q | RC2 | RC5 | RC6 | REDOC | Red Pike | S-1 | SAFER | SC2000 | SEED | Serpent | SHACAL | SHARK | Skipjack | SMS4 | Square | TEA | Triple DES | Twofish | UES | Xenon | xmx | XTEA | XXTEA | Zodiac
Design: Rețea Feistel | Key schedule | Product cipher | Matrice de substituție | RSP

Atacuri: Brute force | Linear / Differential / Integral cryptanalysis | Mod n | Related-key | Slide | XSL

Standardizare: AES process | CRYPTREC | NESSIE

Diverse: Efectul avalanșă | Block size | IV | Key size | Modes of operation | Piling-up lemma | Weak key

Criptografie
Istoria criptologiei | Criptanaliză | Portalul criptografiei | Subiecte în criptografie
Algoritm cu chei simetrice | Cifru bloc | Cifru stream | Criptografie cu chei publice | Funcție hash criptografică | Cod de autentificare a mesajelor | Număr aleatoriu