DES, Data Encryption Standard | |
---|---|
Skaber | IBM |
Oprettet | 1977 _ |
offentliggjort | 1977 _ |
Nøglestørrelse | 56 bit + 8 test |
Blokstørrelse | 64 bit |
Antal runder | 16 |
Type | Feistel netværk |
Mediefiler på Wikimedia Commons |
DES ( English Data Encryption Standard ) er en algoritme til symmetrisk kryptering udviklet af IBM og godkendt af den amerikanske regering i 1977 som en officiel standard ( FIPS 46-3). Blokstørrelsen for DES er 64 bit . Algoritmen er baseret på et Feistel-netværk med 16 cyklusser ( runder ) og en nøgle på 56 bit . Algoritmen bruger en kombination af ikke-lineære (S-bokse) og lineære (E, IP, IP-1 permutationer) transformationer. Flere tilstande anbefales til DES:
En direkte udvikling af DES er i øjeblikket Triple DES (3DES) algoritmen. I 3DES udføres kryptering/dekryptering ved at køre DES-algoritmen tre gange.
I 1972 blev der gennemført en undersøgelse af den amerikanske regerings behov for computersikkerhed. Det amerikanske "National Bureau of Standards" (NBS) (nu kendt som NIST - "National Institute of Standards and Technology") identificerede behovet for en regeringsdækkende standard for kryptering af ikke-kritisk information.
NBS rådførte sig med NSA (US National Security Agency) og annoncerede den 15. maj 1973 den første konkurrence om oprettelse af en chiffer. Der blev formuleret strenge krav til den nye chiffer. IBM deltog i konkurrencen med en chiffer, den havde udviklet kaldet "Lucifer " . Ingen af deltagernes chiffer (inklusive "Lucifer") sikrede ikke opfyldelsen af alle krav. I løbet af 1973-1974 færdiggjorde IBM sin "Lucifer": den brugte Horst Feistel- algoritmen , der blev oprettet tidligere. Den 27. august 1974 begyndte den anden konkurrence. Denne gang blev chifferen "Lucifer" anset for acceptabel.
Den 17. marts 1975 blev den foreslåede DES-algoritme offentliggjort i det føderale register. I 1976 blev der afholdt to offentlige symposier for at diskutere DES. På symposierne blev ændringer foretaget af algoritmen af NSA stærkt kritiseret. NSA reducerede den oprindelige nøglelængde og S-bokse (substitutionsbokse), hvis designkriterier ikke blev oplyst. NSA var mistænkt for bevidst at svække algoritmen, så NSA nemt kunne se krypterede beskeder. Det amerikanske senat gennemgik NSA's handlinger og udgav en erklæring i 1978 , der sagde følgende:
I 1990 udførte Eli Biham og Adi Shamir uafhængig forskning i differentiel krypteringsanalyse , den vigtigste metode til at bryde bloksymmetriske krypteringsalgoritmer . Disse undersøgelser fjernede nogle af mistankerne om den skjulte svaghed ved S-permutationer. S-bokse af DES-algoritmen viste sig at være meget mere modstandsdygtige over for angreb, end hvis de var tilfældigt udvalgt. Det betyder, at denne analyseteknik var kendt af NSA allerede i 1970'erne.
DES-algoritmen blev "hacket" på 39 dage ved hjælp af et enormt netværk af titusindvis af computere [1] .
Den offentlige organisation " EFF ", der beskæftiger sig med problemerne med informationssikkerhed og personligt privatliv på internettet , iværksatte en undersøgelse "DES Challenge II" for at identificere problemer med DES. Som en del af undersøgelsen byggede medarbejdere i RSA Laboratory en supercomputer til $ 250.000. I 1998 dekrypterede supercomputeren DES-kodede data ved hjælp af en 56-bit nøgle på mindre end tre dage. Supercomputeren fik navnet "EFF DES Cracker". Specielt til denne lejlighed organiserede videnskabsmænd en pressekonference og talte med bekymring over, at angribere sandsynligvis ikke vil gå glip af muligheden for at drage fordel af en sådan sårbarhed.
Nogle embedsmænd og eksperter har hævdet, at knække DES-koden kræver en multi-million dollar supercomputer. "Det er på tide, at regeringen anerkender usikkerheden ved DES og støtter skabelsen af en stærkere krypteringsstandard," sagde EFF-præsident Barry Steinhardt. Eksportrestriktioner pålagt af den amerikanske regering gælder for krypteringsteknologier med nøgler længere end 40 bit. Men som resultaterne af RSA Laboratory-eksperimentet viste, er der mulighed for at knække endnu mere kraftfuld kode. Problemet blev forværret af, at omkostningerne ved at bygge sådan en supercomputer støt faldt. "Om fire eller fem år vil disse computere være på hver skole," sagde John Gilmour, projektleder for DES Challenge og en af grundlæggerne af EFF.
DES er en blokcifre. For at forstå, hvordan DES fungerer, er det nødvendigt at overveje arbejdsprincippet for en blokchiffer , Feistel-netværket .
Indgangsdataene for blokchifferet er:
Outputtet (efter anvendelse af krypteringstransformationer) er en krypteret blok af størrelse n bit, og mindre forskelle i inputdataene fører som regel til en væsentlig ændring i resultatet.
Blokcifre implementeres ved gentagne gange at anvende visse grundlæggende transformationer til blokke af kildetekst .
Grundlæggende transformationer:
Da transformationerne udføres blok for blok, er det nødvendigt at opdele kildedataene i blokke af den nødvendige størrelse. I dette tilfælde er formatet på kildedataene ligegyldigt (det være sig tekstdokumenter, billeder eller andre filer). Dataene skal fortolkes i binær form (som en sekvens af nuller og enere) og skal først derefter opdeles i blokke. Alt ovenstående kan implementeres både i software og i hardware.
Dette er en transformation over vektorer ( blokke ), der repræsenterer venstre og højre halvdel af skifteregisteret. DES-algoritmen bruger fremadgående transformation af Feistel-netværket til kryptering (se fig. 1) og invers transformation af Feistel-netværket ved dekryptering (se fig. 2).
Krypteringsskemaet for DES-algoritmen er vist i fig.
Kildeteksten er en blok på 64 bit.
Krypteringsprocessen består af en indledende permutation, 16 krypteringscyklusser og en endelig permutation.
Den originale tekst (blok på 64 bit) konverteres ved hjælp af den indledende permutation, som bestemmes af tabel 1:
Tabel 1. IP initial permutation58 | halvtreds | 42 | 34 | 26 | atten | ti | 2 | 60 | 52 | 44 | 36 | 28 | tyve | 12 | fire |
62 | 54 | 46 | 38 | tredive | 22 | fjorten | 6 | 64 | 56 | 48 | 40 | 32 | 24 | 16 | otte |
57 | 49 | 41 | 33 | 25 | 17 | 9 | en | 59 | 51 | 43 | 35 | 27 | 19 | elleve | 3 |
61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 63 | 55 | 47 | 39 | 31 | 23 | femten | 7 |
Ifølge tabellen er de første 3 bit af den resulterende blok efter den indledende permutation bit 58, 50, 42 i inputblokken , og dens sidste 3 bit er bit 23, 15, 7 i inputblokken.
64-bit blok IP(T) opnået efter den indledende permutation deltager i 16 cyklusser af Feistel-transformationen.
- 16 cyklusser af Feistel -transformationen :
Opdel IP(T) i to dele , hvor er henholdsvis 32 høje bits og 32 lave bits af blok IP(T)=
Lad resultatet være (i-1) iteration, så bestemmes resultatet af den i-te iteration af:
Den venstre halvdel er lig med den højre halvdel af den forrige vektor . Og den højre halvdel er bitvis addition modulo 2.
I de 16 cyklusser af Feistel-transformationen spiller funktionen f rollen som en kryptering . Lad os overveje funktionen f i detaljer.
Funktionens argumenter er en 32-bit vektor og en 48-bit nøgle , som er resultatet af transformation af den 56-bit originale chiffernøgle . For at beregne funktionen skal du successivt bruge
Funktionen udvider en 32-bit vektor til en 48-bit vektor ved at duplikere nogle bits fra ; vektorens bitrækkefølge er angivet i tabel 2.
Tabel 2. Udvidelsesfunktion E32 | en | 2 | 3 | fire | 5 |
fire | 5 | 6 | 7 | otte | 9 |
otte | 9 | ti | elleve | 12 | 13 |
12 | 13 | fjorten | femten | 16 | 17 |
16 | 17 | atten | 19 | tyve | 21 |
tyve | 21 | 22 | 23 | 24 | 25 |
24 | 25 | 26 | 27 | 28 | 29 |
28 | 29 | tredive | 31 | 32 | en |
De første tre bit af vektoren er bit 32, 1, 2 af vektoren . Tabel 2 viser, at bit 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32 er duplikeret. De sidste 3 bit af vektoren er bit 31, 32, 1 af vektoren . Blokken opnået efter permutationen tilføjes modulo 2 med tasterne og præsenteres derefter i form af otte på hinanden følgende blokke .
Hver er en 6-bit blok. Yderligere transformeres hver af blokkene til en 4-bit blok ved hjælp af transformationer . Transformationerne er defineret i tabel 3.
Tabel 3. Transformationer , i=1…80 | en | 2 | 3 | fire | 5 | 6 | 7 | otte | 9 | ti | elleve | 12 | 13 | fjorten | femten | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | fjorten | fire | 13 | en | 2 | femten | elleve | otte | 3 | ti | 6 | 12 | 5 | 9 | 0 | 7 | |
en | 0 | femten | 7 | fire | fjorten | 2 | 13 | en | ti | 6 | 12 | elleve | 9 | 5 | 3 | otte | |
2 | fire | en | fjorten | otte | 13 | 6 | 2 | elleve | femten | 12 | 9 | 7 | 3 | ti | 5 | 0 | |
3 | femten | 12 | otte | 2 | fire | 9 | en | 7 | 5 | elleve | 3 | fjorten | ti | 0 | 6 | 13 | |
0 | femten | en | otte | fjorten | 6 | elleve | 3 | fire | 9 | 7 | 2 | 13 | 12 | 0 | 5 | ti | |
en | 3 | 13 | fire | 7 | femten | 2 | otte | fjorten | 12 | 0 | en | ti | 6 | 9 | elleve | 5 | |
2 | 0 | fjorten | 7 | elleve | ti | fire | 13 | en | 5 | otte | 12 | 6 | 9 | 3 | 2 | femten | |
3 | 13 | otte | ti | en | 3 | femten | fire | 2 | elleve | 6 | 7 | 12 | 0 | 5 | fjorten | 9 | |
0 | ti | 0 | 9 | fjorten | 6 | 3 | femten | 5 | en | 13 | 12 | 7 | elleve | fire | 2 | otte | |
en | 13 | 7 | 0 | 9 | 3 | fire | 6 | ti | 2 | otte | 5 | fjorten | 12 | elleve | femten | en | |
2 | 13 | 6 | fire | 9 | otte | femten | 3 | 0 | elleve | en | 2 | 12 | 5 | ti | fjorten | 7 | |
3 | en | ti | 13 | 0 | 6 | 9 | otte | 7 | fire | femten | fjorten | 3 | elleve | 5 | 2 | 12 | |
0 | 7 | 13 | fjorten | 3 | 0 | 6 | 9 | ti | en | 2 | otte | 5 | elleve | 12 | fire | femten | |
en | 13 | otte | elleve | 5 | 6 | femten | 0 | 3 | fire | 7 | 2 | 12 | en | ti | fjorten | 9 | |
2 | ti | 6 | 9 | 0 | 12 | elleve | 7 | 13 | femten | en | 3 | fjorten | 5 | 2 | otte | fire | |
3 | 3 | femten | 0 | 6 | ti | en | 13 | otte | 9 | fire | 5 | elleve | 12 | 7 | 2 | fjorten | |
0 | 2 | 12 | fire | en | 7 | ti | elleve | 6 | otte | 5 | 3 | femten | 13 | 0 | fjorten | 9 | |
en | fjorten | elleve | 2 | 12 | fire | 7 | 13 | en | 5 | 0 | femten | ti | 3 | 9 | otte | 6 | |
2 | fire | 2 | en | elleve | ti | 13 | 7 | otte | femten | 9 | 12 | 5 | 6 | 3 | 0 | fjorten | |
3 | elleve | otte | 12 | 7 | en | fjorten | 2 | 13 | 6 | femten | 0 | 9 | ti | fire | 5 | 3 | |
0 | 12 | en | ti | femten | 9 | 2 | 6 | otte | 0 | 13 | 3 | fire | fjorten | 7 | 5 | elleve | |
en | ti | femten | fire | 2 | 7 | 12 | 9 | 5 | 6 | en | 13 | fjorten | 0 | elleve | 3 | otte | |
2 | 9 | fjorten | femten | 5 | 2 | otte | 12 | 3 | 7 | 0 | fire | ti | en | 13 | elleve | 6 | |
3 | fire | 3 | 2 | 12 | 9 | 5 | femten | ti | elleve | fjorten | en | 7 | 6 | 0 | otte | 13 | |
0 | fire | elleve | 2 | fjorten | femten | 0 | otte | 13 | 3 | 12 | 9 | 7 | 5 | ti | 6 | en | |
en | 13 | 0 | elleve | 7 | fire | 9 | en | ti | fjorten | 3 | 5 | 12 | 2 | femten | otte | 6 | |
2 | en | fire | elleve | 13 | 12 | 3 | 7 | fjorten | ti | femten | 6 | otte | 0 | 5 | 9 | 2 | |
3 | 6 | elleve | 13 | otte | en | fire | ti | 7 | 9 | 5 | 0 | femten | fjorten | 2 | 3 | 12 | |
0 | 13 | 2 | otte | fire | 6 | femten | elleve | en | ti | 9 | 3 | fjorten | 5 | 0 | 12 | 7 | |
en | en | femten | 13 | otte | ti | 3 | 7 | fire | 12 | 5 | 6 | elleve | 0 | fjorten | 9 | 2 | |
2 | 7 | elleve | fire | en | 9 | 12 | fjorten | 2 | 0 | 6 | ti | 13 | femten | 3 | 5 | otte | |
3 | 2 | en | fjorten | 7 | fire | ti | otte | 13 | femten | 12 | 9 | 0 | 3 | 5 | 6 | elleve |
Antag det , og vi vil gerne finde . Det første og sidste ciffer er den binære repræsentation af tallet a, 0<=a<=3, de midterste 4 cifre repræsenterer tallet b, 0<=b<=15. Rækkerne i tabel S3 er nummereret fra 0 til 3, kolonnerne i tabel S3 er nummererede fra 0 til 15. Parret af tal (a, b) bestemmer tallet i skæringspunktet mellem række a og kolonne b. Den binære repræsentation af dette tal giver . I vores tilfælde er , , , og tallet defineret af parret (3,7) 7. Dens binære repræsentation er =0111. Funktionsværdien (32 bit ) opnås ved at permutere P påført en 32-bit blok . Permutationen P er givet i tabel 4.
Tabel 4. Permutation P16 | 7 | tyve | 21 | 29 | 12 | 28 | 17 |
en | femten | 23 | 26 | 5 | atten | 31 | ti |
2 | otte | 24 | fjorten | 32 | 27 | 3 | 9 |
19 | 13 | tredive | 6 | 22 | elleve | fire | 25 |
Ifølge tabel 4 er de første fire bit af den resulterende vektor efter virkningen af funktionen f bit 16, 7, 20, 21 af vektoren
Nøglerne opnås fra startnøglen (56 bit = 7 bytes eller 7 tegn i ASCII ) som følger. Bits tilføjes ved positionerne 8, 16, 24, 32, 40, 48, 56, 64 af nøglen , så hver byte indeholder et ulige antal enere. Dette bruges til at opdage fejl i nøgleudveksling og -lagring. Derefter foretages en permutation for den udvidede nøgle (bortset fra de tilføjede bits 8, 16, 24, 32, 40, 48, 56, 64). En sådan permutation er defineret i tabel 5.
Tabel 557 | 49 | 41 | 33 | 25 | 17 | 9 | en | 58 | halvtreds | 42 | 34 | 26 | atten | |
ti | 2 | 59 | 51 | 43 | 35 | 27 | 19 | elleve | 3 | 60 | 52 | 44 | 36 | |
63 | 55 | 47 | 39 | 31 | 23 | femten | 7 | 62 | 54 | 46 | 38 | tredive | 22 | |
fjorten | 6 | 61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 28 | tyve | 12 | fire |
Denne permutation bestemmes af to blokke og 28 bit hver. De første 3 bit er bit 57, 49, 41 af den udvidede nøgle. Og de første tre bit er bit 63, 55, 47 af den udvidede nøgle. i=1,2,3 ... fås fra et eller to venstre cykliske skift i henhold til tabel 6.
Tabel 6jeg | en | 2 | 3 | fire | 5 | 6 | 7 | otte | 9 | ti | elleve | 12 | 13 | fjorten | femten | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Skift nummer | en | en | 2 | 2 | 2 | 2 | 2 | 2 | en | 2 | 2 | 2 | 2 | 2 | 2 | en |
Nøglen , i=1,...16 består af 48 bits valgt fra vektorbittene (56 bits ) ifølge tabel 7. Den første og anden bit er bit 14, 17 i vektoren
Tabel 7fjorten | 17 | elleve | 24 | en | 5 | 3 | 28 | femten | 6 | 21 | ti | 23 | 19 | 12 | fire |
26 | otte | 16 | 7 | 27 | tyve | 13 | 2 | 41 | 52 | 31 | 37 | 47 | 55 | tredive | 40 |
51 | 45 | 33 | 48 | 44 | 49 | 39 | 56 | 34 | 53 | 46 | 42 | halvtreds | 36 | 29 | 32 |
Den endelige permutation virker på (hvor ) og er det omvendte af den oprindelige permutation. Den endelige permutation bestemmes af tabel 8.
Tabel 8. Omvendt permutation40 | otte | 48 | 16 | 56 | 24 | 64 | 32 | 39 | 7 | 47 | femten | 55 | 23 | 63 | 31 |
38 | 6 | 46 | fjorten | 54 | 22 | 62 | tredive | 37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 |
36 | fire | 44 | 12 | 52 | tyve | 60 | 28 | 35 | 3 | 43 | elleve | 51 | 19 | 59 | 27 |
34 | 2 | 42 | ti | halvtreds | atten | 58 | 26 | 33 | en | 41 | 9 | 49 | 17 | 57 | 25 |
Ved dekryptering af data udføres alle handlinger i omvendt rækkefølge. I 16 runder af dekryptering, i modsætning til krypteringen ved hjælp af den direkte transformation af Feistel-netværket , bruges den omvendte transformation af Feistel-netværket her.
Dekrypteringsskemaet er vist i fig.
Nøgle , i=16,…,1, funktion f, IP-permutation og er de samme som i krypteringsprocessen. Nøglegenereringsalgoritmen afhænger kun af brugerens nøgle, så de er identiske, når de dekrypteres.
DES kan bruges i fire tilstande.
Fordele og ulemper ved tilstande:
Den ikke-linearitet af transformationer i DES ved hjælp af kun S-bokse og brugen af svage S-bokse giver dig mulighed for at udøve kontrol over krypteret korrespondance. Valget af S-bokse kræver, at flere betingelser er opfyldt:
På grund af det lille antal mulige nøgler (kun ), bliver det muligt at opregne dem udtømmende på højhastighedscomputere i realtid. I 1998 lykkedes det Electronic Frontier Foundation ved hjælp af en speciel DES-Cracker-computer at knække DES på 3 dage.
Svage nøgler er nøgler k sådan, at , hvor x er en 64-bit blok.
Der kendes 4 svage nøgler, de er anført i tabel 9. For hver svag nøgle er der faste punkter , det vil sige sådanne 64-bit blokke x for hvilke .
Tabel 9. DES-Svage tasterSvage nøgler (hexadecimal) | ||
0101-0101-0101-0101 | ||
FEFE-FEFE-FEFE-FEFE | ||
1F1F-1F1F-0E0E-0E0E | ||
E0E0-E0E0-F1F1-F1F1 |
betegner en vektor bestående af 28 nul bit.
Der er svage og delvist svage nøgler i DES-algoritmen. Delvist svage nøgler er nøglepar sådan , at
Der er 6 delvist svage nøglepar, de er opført i tabel 10. For hver af de 12 delvist svage nøgler er der "anti-fikserede punkter", dvs. blokke x sådan, at
Tabel 10. Delvist svage tasterPar delvist svage nøgler | ||||
01FE-01FE-01FE-01FE,----FE01-FE01-FE01-FE01 | ||||
1FE0-1FE0-1FE0-1FE0,----E0F1-E0F1-E0F1-E0F1 | ||||
01E0-01E0-01F1-01F1,----E001-E001-F101-F101 | ||||
1FFE-1FFE-0EFE-0EFE,----FE1F-FE1F-FE0E-FE0E | ||||
011F-011F-010E-010E,----1F01-1F01-0E01-0E01 | ||||
E0FE-E0FE-F1FE-F1FE,----FEE0-FEE0-FEF1-FEF1 |
Angrebsmetoder | Velkendte opdagelser tekster | Valgt åben tekster | Hukommelsesstørrelse | Antal operationer |
Fuld søgning | qweqweqweqerqe | - | Mindre | |
Lineær kryptoanalyse | - | Til tekst | ||
Lineær kryptoanalyse | - | Til tekst | ||
Afvige. Krypteringsanalyse | - | Til tekst | ||
Afvige. Krypteringsanalyse | - | Til tekst |
Til lineær og differentiel kryptoanalyse kræves der en tilstrækkelig stor mængde hukommelse til at gemme udvalgte (kendte) klartekster, før angrebet begynder.
For at øge den kryptografiske styrke af DES vises flere muligheder: dobbelt DES ( 2DES ), tredobbelt DES ( 3DES ), DESX , G-DES .
DES var den amerikanske nationale standard i 1977-1980 , men i øjeblikket bruges DES (med en 56-bit nøgle) kun til ældre systemer, oftest ved at bruge dens mere kryptografisk stærke form ( 3DES , DESX ). 3DES er en enkel, effektiv erstatning for DES og betragtes nu som standarden. I den nærmeste fremtid vil DES og Triple DES blive erstattet af AES (Advanced Encryption Standard) algoritmen. DES-algoritmen bruges i vid udstrækning til at beskytte finansielle oplysninger: for eksempel understøtter THALES (Racal) HSM RG7000-modulet fuldt ud TripleDES- operationer til udstedelse og behandling af VISA , EuroPay og andre kreditkort. THALES (Racal) DataDryptor 2000 kanal scramblere bruger TripleDES til transparent kryptering af datastrømme. DES-algoritmen bruges også i mange andre THALES-eSECURITY enheder og løsninger.
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |