DES

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 22 mars 2015; kontroller kräver 72 redigeringar .
DES, Data Encryption Standard
Skapare IBM
Skapad 1977 _
publiceras 1977 _
Nyckelstorlek 56 bitar + 8 test
Block storlek 64 bitar
Antal omgångar 16
Sorts Feistel nätverk
 Mediafiler på Wikimedia Commons

DES ( English  Data Encryption Standard ) är en algoritm för symmetrisk kryptering utvecklad av IBM och godkänd av den amerikanska regeringen 1977 som en officiell standard ( FIPS 46-3). Blockstorleken för DES är 64 bitar . Algoritmen är baserad på ett Feistel-nätverk med 16 cykler ( rundor ) och en nyckel på 56 bitar . Algoritmen använder en kombination av icke-linjära (S-boxar) och linjära (E, IP, IP-1 permutationer) transformationer. Flera lägen rekommenderas för DES:

En direkt utveckling av DES är för närvarande Triple DES (3DES) algoritmen. I 3DES utförs kryptering/dekryptering genom att köra DES-algoritmen tre gånger.

Historik

1972 genomfördes en studie av den amerikanska regeringens behov av datasäkerhet. Den amerikanska "National Bureau of Standards" (NBS) (nu känd som NIST - "National Institute of Standards and Technology") identifierade behovet av en regeringsomfattande standard för kryptering av icke-kritisk information.

NBS rådfrågade NSA (US National Security Agency) och den 15 maj 1973 utlyste den första tävlingen för att skapa ett chiffer. Strikta krav för det nya chifferet formulerades. IBM deltog i tävlingen med ett chiffer som det hade utvecklat kallat "Lucifer " . Chifferna för ingen av de tävlande (inklusive "Lucifer") säkerställde inte att alla krav uppfylldes. Under 1973-1974 färdigställde IBM sin "Lucifer": den använde Horst Feistel- algoritmen som skapats tidigare. Den 27 augusti 1974 började den andra tävlingen. Den här gången ansågs chiffret "Lucifer" acceptabelt.

Den 17 mars 1975 publicerades den föreslagna DES-algoritmen i Federal Register. 1976 hölls två offentliga symposier för att diskutera DES. Vid symposierna kritiserades förändringar av algoritmen av NSA hårt. NSA minskade den ursprungliga nyckellängden och S-boxarna (ersättningslådor), vars designkriterier inte avslöjades. NSA misstänktes för att medvetet ha försvagat algoritmen så att NSA enkelt kunde se krypterade meddelanden. Den amerikanska senaten granskade NSA:s agerande och släppte ett uttalande 1978 som angav följande:

År 1990 utförde Eli Biham och Adi Shamir oberoende forskning om differentiell kryptoanalys  , den huvudsakliga metoden för att bryta blocksymmetriska krypteringsalgoritmer . Dessa studier tog bort en del av misstankarna om den dolda svagheten hos S-permutationer. S-boxar av DES-algoritmen visade sig vara mycket mer motståndskraftiga mot attacker än om de var slumpmässigt valda. Det betyder att denna analysteknik var känd för NSA redan på 1970-talet.

DES-algoritmen "hackades" på 39 dagar med hjälp av ett enormt nätverk av tiotusentals datorer [1] .

Offentlig organisation " EFF ", som hanterar problemen med informationssäkerhet och personlig integritet på Internet , inledde en studie "DES Challenge II" för att identifiera problem med DES. Som en del av studien byggde RSA Laboratory-anställda en superdator på $ 250 000. 1998 dekrypterade superdatorn DES-kodad data med en 56-bitars nyckel på mindre än tre dagar. Superdatorn fick namnet "EFF DES Cracker". Speciellt för detta tillfälle anordnade forskare en presskonferens och talade med oro över att angripare sannolikt inte kommer att missa möjligheten att dra fördel av en sådan sårbarhet.

Vissa regeringstjänstemän och experter har hävdat att det krävs en superdator på flera miljoner dollar för att knäcka DES-koden. "Det är dags för regeringen att erkänna osäkerheten i DES och stödja skapandet av en starkare krypteringsstandard", säger EFF:s ordförande Barry Steinhardt. Exportrestriktioner som införts av den amerikanska regeringen gäller krypteringsteknik med nycklar längre än 40 bitar. Men som resultaten av RSA Laboratory-experimentet visade finns det en möjlighet att knäcka ännu mer kraftfull kod. Problemet förvärrades av att kostnaderna för att bygga en sådan superdator stadigt minskade. "Om fyra eller fem år kommer dessa datorer att finnas i varje skola", säger John Gilmour, projektledare för DES Challenge och en av grundarna av EFF.

DES är ett blockchiffer. För att förstå hur DES fungerar är det nödvändigt att överväga arbetsprincipen för ett blockchiffer , Feistel-nätverket .

Blockera chiffer

Indata för blockchifferet är:

Utdata (efter tillämpning av krypteringstransformationer) är ett krypterat block med storlek n bitar, och mindre skillnader i indata leder som regel till en signifikant förändring av resultatet.

Blockchiffer implementeras genom att upprepade gånger tillämpa vissa grundläggande transformationer på block av källtext .

Grundläggande transformationer:

Eftersom omvandlingarna utförs block för block, är det nödvändigt att dela upp källdata i block med önskad storlek. I det här fallet spelar formatet på källdata ingen roll (vare sig det är textdokument, bilder eller andra filer). Data måste tolkas i binär form (som en sekvens av nollor och ettor) och först därefter måste de delas upp i block. Allt ovanstående kan implementeras både i mjukvara och hårdvara.

Feistel nätverkstransformationer

Detta är en transformation över vektorer ( block ) som representerar de vänstra och högra halvorna av skiftregistret. DES-algoritmen använder framåttransformation av Feistel-nätverket vid kryptering (se fig. 1) och invers transformation av Feistel-nätverket vid dekryptering (se fig. 2).

DES krypteringsschema

Krypteringsschemat för DES-algoritmen visas i fig. 3.

Källtexten är ett block på 64 bitar.

Krypteringsprocessen består av en initial permutation, 16 krypteringscykler och en slutlig permutation.

Initial permutation

Den ursprungliga texten (block med 64 bitar) konverteras med den initiala permutationen, som bestäms av tabell 1:

Tabell 1. IP initial permutation
58 femtio 42 34 26 arton tio 2 60 52 44 36 28 tjugo 12 fyra
62 54 46 38 trettio 22 fjorton 6 64 56 48 40 32 24 16 åtta
57 49 41 33 25 17 9 ett 59 51 43 35 27 19 elva 3
61 53 45 37 29 21 13 5 63 55 47 39 31 23 femton 7

Enligt tabellen är de första 3 bitarna i det resulterande blocket efter den initiala permutationen bitarna 58, 50, 42 i ingångsblocket , och dess sista 3 bitar är bitarna 23, 15, 7 i ingångsblocket.

Krypteringscykler

64-bitarsblocket IP(T) som erhålls efter den initiala permutationen deltar i 16 cykler av Feistel-transformationen.

- 16 cykler av Feistel- transformationen :

Dela IP(T) i två delar , där  är 32 höga bitar respektive 32 låga bitar av block IP(T)=

Låt resultatet vara (i-1) iteration, då bestäms resultatet av den i-te iterationen av:

Den vänstra halvan är lika med den högra halvan av föregående vektor . Och den högra halvan  är bitvis addition modulo 2.

I Feistel-transformens 16-cykler spelar funktionen f rollen som en kryptering . Låt oss överväga funktionen f i detalj.

Grundläggande krypteringsfunktion (Feistel-funktion)

Funktionens argument är en 32-bitars vektor och en 48-bitars nyckel , vilket är resultatet av att transformera den ursprungliga 56-bitars chiffernyckeln . För att beräkna funktionen , använd successivt

  1. förlängningsfunktion , _
  2. tillägg modulo 2 med nyckel
  3. transformation , bestående av 8 transformationsblock ,
  4. permutation .

Funktionen expanderar en 32-bitars vektor till en 48-bitars vektor genom att duplicera några bitar från ; vektorns bitordning anges i tabell 2.

Tabell 2. Utbyggnadsfunktion E
32 ett 2 3 fyra 5
fyra 5 6 7 åtta 9
åtta 9 tio elva 12 13
12 13 fjorton femton 16 17
16 17 arton 19 tjugo 21
tjugo 21 22 23 24 25
24 25 26 27 28 29
28 29 trettio 31 32 ett

De första tre bitarna i vektorn är bitarna 32, 1, 2 i vektorn . Tabell 2 visar att bitarna 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32 dupliceras. De sista 3 bitarna i vektorn  är bitarna 31, 32, 1 i vektorn . Blocket som erhålls efter permutationen läggs till modulo 2 med nycklarna och presenteras sedan i form av åtta på varandra följande block .

Var och en är ett 6-bitars block. Vidare omvandlas vart och ett av blocken till ett 4-bitars block med användning av transformationer . Transformationerna definieras i tabell 3.

Tabell 3. Transformationer , i=1…8
0 ett 2 3 fyra 5 6 7 åtta 9 tio elva 12 13 fjorton femton
0 fjorton fyra 13 ett 2 femton elva åtta 3 tio 6 12 5 9 0 7
ett 0 femton 7 fyra fjorton 2 13 ett tio 6 12 elva 9 5 3 åtta
2 fyra ett fjorton åtta 13 6 2 elva femton 12 9 7 3 tio 5 0
3 femton 12 åtta 2 fyra 9 ett 7 5 elva 3 fjorton tio 0 6 13
0 femton ett åtta fjorton 6 elva 3 fyra 9 7 2 13 12 0 5 tio
ett 3 13 fyra 7 femton 2 åtta fjorton 12 0 ett tio 6 9 elva 5
2 0 fjorton 7 elva tio fyra 13 ett 5 åtta 12 6 9 3 2 femton
3 13 åtta tio ett 3 femton fyra 2 elva 6 7 12 0 5 fjorton 9
0 tio 0 9 fjorton 6 3 femton 5 ett 13 12 7 elva fyra 2 åtta
ett 13 7 0 9 3 fyra 6 tio 2 åtta 5 fjorton 12 elva femton ett
2 13 6 fyra 9 åtta femton 3 0 elva ett 2 12 5 tio fjorton 7
3 ett tio 13 0 6 9 åtta 7 fyra femton fjorton 3 elva 5 2 12
0 7 13 fjorton 3 0 6 9 tio ett 2 åtta 5 elva 12 fyra femton
ett 13 åtta elva 5 6 femton 0 3 fyra 7 2 12 ett tio fjorton 9
2 tio 6 9 0 12 elva 7 13 femton ett 3 fjorton 5 2 åtta fyra
3 3 femton 0 6 tio ett 13 åtta 9 fyra 5 elva 12 7 2 fjorton
0 2 12 fyra ett 7 tio elva 6 åtta 5 3 femton 13 0 fjorton 9
ett fjorton elva 2 12 fyra 7 13 ett 5 0 femton tio 3 9 åtta 6
2 fyra 2 ett elva tio 13 7 åtta femton 9 12 5 6 3 0 fjorton
3 elva åtta 12 7 ett fjorton 2 13 6 femton 0 9 tio fyra 5 3
0 12 ett tio femton 9 2 6 åtta 0 13 3 fyra fjorton 7 5 elva
ett tio femton fyra 2 7 12 9 5 6 ett 13 fjorton 0 elva 3 åtta
2 9 fjorton femton 5 2 åtta 12 3 7 0 fyra tio ett 13 elva 6
3 fyra 3 2 12 9 5 femton tio elva fjorton ett 7 6 0 åtta 13
0 fyra elva 2 fjorton femton 0 åtta 13 3 12 9 7 5 tio 6 ett
ett 13 0 elva 7 fyra 9 ett tio fjorton 3 5 12 2 femton åtta 6
2 ett fyra elva 13 12 3 7 fjorton tio femton 6 åtta 0 5 9 2
3 6 elva 13 åtta ett fyra tio 7 9 5 0 femton fjorton 2 3 12
0 13 2 åtta fyra 6 femton elva ett tio 9 3 fjorton 5 0 12 7
ett ett femton 13 åtta tio 3 7 fyra 12 5 6 elva 0 fjorton 9 2
2 7 elva fyra ett 9 12 fjorton 2 0 6 tio 13 femton 3 5 åtta
3 2 ett fjorton 7 fyra tio åtta 13 femton 12 9 0 3 5 6 elva

Antag det , och vi vill hitta . De första och sista siffrorna är den binära representationen av talet a, 0<=a<=3, de mittersta 4 siffrorna representerar talet b, 0<=b<=15. Raderna i tabell S3 är numrerade från 0 till 3, kolumnerna i tabell S3 är numrerade från 0 till 15. Sifferparet (a, b) bestämmer numret i skärningspunkten mellan rad a och kolumn b. Den binära representationen av detta tal ger . I vårt fall är , , , och talet som definieras av paret (3,7) 7. Dess binära representation är =0111. Funktionsvärdet (32 bitar ) erhålls genom att permutera P applicerad på ett 32-bitars block . Permutationen P ges av tabell 4.

Tabell 4. Permutation P
16 7 tjugo 21 29 12 28 17
ett femton 23 26 5 arton 31 tio
2 åtta 24 fjorton 32 27 3 9
19 13 trettio 6 22 elva fyra 25


Enligt tabell 4 är de första fyra bitarna av den resulterande vektorn efter funktionen av funktionen f bitarna 16, 7, 20, 21 i vektorn

Nyckelgenerering

Nycklarna erhålls från den initiala nyckeln (56 bitar = 7 byte eller 7 tecken i ASCII ) enligt följande. Bitar läggs till vid positionerna 8, 16, 24, 32, 40, 48, 56, 64 av nyckeln så att varje byte innehåller ett udda antal ettor. Detta används för att upptäcka fel i nyckelutbyte och lagring. Sedan görs en permutation för den utökade nyckeln (förutom de adderade bitarna 8, 16, 24, 32, 40, 48, 56, 64). En sådan permutation definieras i tabell 5.

Tabell 5
57 49 41 33 25 17 9 ett 58 femtio 42 34 26 arton
tio 2 59 51 43 35 27 19 elva 3 60 52 44 36
63 55 47 39 31 23 femton 7 62 54 46 38 trettio 22
fjorton 6 61 53 45 37 29 21 13 5 28 tjugo 12 fyra

Denna permutation bestäms av två block och 28 bitar vardera. De första 3 bitarna är bitarna 57, 49, 41 i den utökade nyckeln. Och de första tre bitarna är bitarna 63, 55, 47 i den utökade nyckeln. i=1,2,3...erhålls från ett eller två vänstercykliska skift enligt tabell 6.

Tabell 6
i ett 2 3 fyra 5 6 7 åtta 9 tio elva 12 13 fjorton femton 16
Skift nummer ett ett 2 2 2 2 2 2 ett 2 2 2 2 2 2 ett

Nyckeln , i=1,...16 består av 48 bitar valda från vektorbitarna (56 bitar ) enligt tabell 7. De första och andra bitarna är bitarna 14, 17 i vektorn

Tabell 7
fjorton 17 elva 24 ett 5 3 28 femton 6 21 tio 23 19 12 fyra
26 åtta 16 7 27 tjugo 13 2 41 52 31 37 47 55 trettio 40
51 45 33 48 44 49 39 56 34 53 46 42 femtio 36 29 32

Slutlig permutation

Den slutliga permutationen verkar på (där ) och är inversen av den ursprungliga permutationen. Den slutliga permutationen bestäms av tabell 8.

Tabell 8. Omvänd permutation
40 åtta 48 16 56 24 64 32 39 7 47 femton 55 23 63 31
38 6 46 fjorton 54 22 62 trettio 37 5 45 13 53 21 61 29
36 fyra 44 12 52 tjugo 60 28 35 3 43 elva 51 19 59 27
34 2 42 tio femtio arton 58 26 33 ett 41 9 49 17 57 25

Dekrypteringsschema

Vid dekryptering av data utförs alla åtgärder i omvänd ordning. I 16 omgångar av dekryptering, i motsats till krypteringen med den direkta transformationen av Feistel-nätverket , används den omvända transformationen av Feistel-nätverket här.


Dekrypteringsschemat visas i fig. 6.
Nyckel , i=16,…,1, funktion f, IP-permutation och är desamma som i krypteringsprocessen. Algoritmen för nyckelgenerering beror bara på användarens nyckel, så de är identiska när de dekrypteras.

Användningssätt för DES

DES kan användas i fyra lägen.

  1. Electronic Codebook Mode ( ECB )  : Vanlig användning av DES som ett blockchiffer . Den krypterade texten är uppdelad i block, där varje block krypteras separat utan att interagera med andra block (se fig. 7).
  2. Cipher Block Chaining Mode ( CBC  - Cipher Block Chaining ) (se fig. 8). Varje nästa block i>=1, innan kryptering läggs till modulo 2 med föregående block av chiffertext . Vektorn  är den initiala vektorn, den ändras dagligen och hålls hemlig.
  3. Chifferåterkopplingsläge ( se Fig.9) . I CFB -läge produceras ett blockigt gamma . Den initiala vektorn är ett synkmeddelande och är utformad för att säkerställa att olika datamängder krypteras på olika sätt med samma hemliga nyckel. Synkmeddelandet skickas till mottagaren i klartext tillsammans med den krypterade filen. DES-algoritmen, till skillnad från de tidigare lägena, används endast som kryptering (i båda fallen).
  4. Output feedback-läge ( OFB  - Output Feedback ) (se Fig. 10). I OFB-moden genereras ett block "gamma" , i>=1. Läget använder också DES endast som kryptering (i båda fallen).

Fördelar och nackdelar med lägen:

Kryptografisk styrka hos DES-algoritmen

Olinjäriteten hos transformationer i DES med hjälp av endast S-boxar och användningen av svaga S-boxar gör att du kan utöva kontroll över krypterad korrespondens. Valet av S-boxar kräver att flera villkor är uppfyllda:

På grund av det lilla antalet möjliga nycklar (endast ), blir det möjligt att uttömmande räkna upp dem på höghastighetsdatorer i realtid. 1998 lyckades Electronic Frontier Foundation , med hjälp av en speciell DES-Cracker-dator, knäcka DES på 3 dagar.

Svaga tangenter

Svaga nycklar är nycklar k sådana att , där x  är ett 64-bitars block.

4 svaga nycklar är kända, de listas i tabell 9. För varje svag nyckel finns det fasta punkter , det vill säga sådana 64-bitars block för vilka .

Tabell 9. DES-Svaga tangenter
Svaga nycklar (hexadecimala)
0101-0101-0101-0101
FEFE-FEFE-FEFE-FEFE
1F1F-1F1F-0E0E-0E0E
E0E0-E0E0-F1F1-F1F1

betecknar en vektor bestående av 28 nollbitar.

Delvis svaga tangenter

Det finns svaga och delvis svaga nycklar i DES-algoritmen. Delvis svaga nycklar är nyckelpar sådana att

Det finns 6 delvis svaga nyckelpar, de är listade i tabell 10. För var och en av de 12 delvis svaga nycklarna finns det "antifixerade punkter", det vill säga block x sådana att

Tabell 10. Delvis svaga nycklar
Par delvis svaga nycklar
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

Kända attacker mot DES

Tabell 11. Kända attacker mot DES.
Attackmetoder Välkända upptäckter texter Vald öppen texter Minnesstorlek Antal operationer
Fullständig sökning qweqweqweqerqe - Mindre
Linjär kryptoanalys - För text
Linjär kryptoanalys - För text
Skilja sig. Kryptanalys - För text
Skilja sig. Kryptanalys - För text

För linjär och differentiell kryptoanalys krävs en tillräckligt stor mängd minne för att lagra utvalda (kända) klartexter innan attacken börjar.

Öka styrkan hos DES

För att öka den kryptografiska styrkan hos DES visas flera alternativ: dubbel DES ( 2DES ), trippel DES ( 3DES ), DESX , G-DES .

Den mest populära typen när du använder 3DES är DES-EDE3, för vilken algoritmen ser ut så här: Kryptering : . Dekryptering : När du kör 3DES-algoritmen kan nycklarna väljas enligt följande:

Applikation

DES var USA : s nationella standard 1977-1980 , men för  närvarande används DES (med en 56-bitars nyckel) endast för äldre system, oftast med sin mer kryptografiskt starka form ( 3DES , DESX ). 3DES är en enkel, effektiv ersättning för DES och anses nu vara standarden. Inom en snar framtid kommer DES och Triple DES att ersättas av algoritmen AES (Advanced Encryption Standard). DES-algoritmen används i stor utsträckning för att skydda finansiell information: THALES (Racal) HSM RG7000-modulen stöder till exempel TripleDES- operationer för att utfärda och behandla VISA , EuroPay och andra kreditkort. THALES (Racal) DataDryptor 2000 kanalförvrängare använder TripleDES för att transparent kryptera dataströmmar. DES-algoritmen används också i många andra THALES-eSECURITY-enheter och lösningar.

Anteckningar

  1. distributed.net: RSA DES II-1-projektet . Hämtad 1 januari 2018. Arkiverad från originalet 31 december 2017.

Litteratur