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.
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 .
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.
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).
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.
Den ursprungliga texten (block med 64 bitar) konverteras med den initiala permutationen, som bestäms av tabell 1:
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.
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.
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
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.
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.
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.
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
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.
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.
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
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 |
Den slutliga permutationen verkar på (där ) och är inversen av den ursprungliga permutationen. Den slutliga permutationen bestäms av tabell 8.
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 |
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.
DES kan användas i fyra lägen.
Fördelar och nackdelar med lägen:
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 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 .
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.
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
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 |
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.
För att öka den kryptografiska styrkan hos DES visas flera alternativ: dubbel DES ( 2DES ), trippel DES ( 3DES ), DESX , G-DES .
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.
Symmetriska kryptosystem | |
---|---|
Streama chiffer | |
Feistel nätverk | |
SP nätverk | |
Övrig |