Diamant 2 | |
---|---|
Skaber | Michael Paul Johnson |
Oprettet | 1995 _ |
offentliggjort | 1995 _ |
Nøglestørrelse | 128 (8-65536) bits i 8-bit intervaller |
Blokstørrelse | 128 bit |
Antal runder | 10 (10-15) |
Type | Substitution-permutation netværk |
Diamond2 er en symmetrisk blokkryptografisk algoritme udviklet af Michael Paul Johnson i 1995. Algoritmen bruger en 128-bit blok og en nøgle af vilkårlig længde, 128 bit som standard.
Formålet med at skabe chifferen var at udvikle en algoritme, der er modstandsdygtig over for alle eksisterende typer angreb med en sikkerhedsmargin i lang tid og mulighed for at bruge en simpel genereret nøgle. I dette tilfælde vælges nøglestørrelsen afhængigt af det nødvendige beskyttelsesniveau og tilgængeligheden af et stort udvalg af nøglemateriale. I øjeblikket er der en række hash-funktioner med en variabel outputblok (for eksempel Skein ), der kan bruges til at skabe nøglemateriale længere end 512 bit. Samtidig hævder forfatteren, at 128 bits entropi er nødvendig for pålidelig beskyttelse. I mangel af særlige typer angreb vil et brute-force-angreb mod en 128-bit nøgle være teknisk umuligt på eksisterende hardware i en overskuelig fremtid. Dette bruger også en ret kompleks og relativt langsom funktion med at udvide og installere en nøgle. Det antages, at nøgleændringen vil blive udført meget sjældnere end krypterings- og dekrypteringsoperationerne i både software- og hardwareimplementeringer. Brugen af en 128-bit blok, atypisk for ciphers under udviklingen af Diamond2, er berettiget af behovet for at forhindre brute-force-angreb ved hjælp af præ-genererede tabeller.
På trods af den påståede nærhed til den ideelle chiffer, er algoritmen ikke udbredt. Selvom chifferen blev offentliggjort i 1995, har der ikke været nogen detaljeret undersøgelse af Diamond2s kryptografiske styrke i 13 år. Faktisk bruges denne blokchiffer i nogle applikationer som en af de yderligere tilgængelige symmetriske krypteringsalgoritmer [1] , og chifferen er også implementeret i nogle kryptografiske biblioteker.
Blokciffer Diamond2 består af tre hoveddele: 1 - nøgleskema, 2 - substitutionstrin, 3 - permutationstrin. Kryptering og dekryptering består af n runder af substitutionsoperationer, hvor n er mindst 10. Hver substitutionsoperation tager hver af de 16 inputbytes på hver 8 bit og erstatter dem med forskellige bytes. Dette er afledt af indholdet af substitutionsarrayet baseret på bytepositionen og det runde tal. Nøgleplanlægningshandlingen udfylder de interne opslagsarrays baseret på nøglen. Mellem hver substitution bruger det indstillede permutationstrin en bitsamplingproces til at gøre hver outputbyte til en funktion af otte forskellige inputbytes. I modsætning til DES ændrer hver runde hver byte af inputblokken (i stedet for kun halvdelen af inputblokken). Efter 5 runder er hver bit af outputblokken en ikke-lineær funktion af hver bit af inputblokken og hver bit af nøglen. Yderligere runder efter den femte runde bruges til at sikre, at det er vanskeligere at beregne indholdet af individuelle substitutionsarrays end et brute-force-angreb på chifferen. De tjener også til at øge antallet af mulige funktionelle afhængigheder af nøglen, hvilket gør algoritmen tættere på en ideel blokchiffer og gør krypteringsanalyse vanskeligere.
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |