tre fisk | |
---|---|
Skaber | Et team af specialister ledet af Bruce Schneier |
Oprettet | 2008 _ |
offentliggjort | 2008 _ |
Nøglestørrelse | 256/512/1024 bit |
Blokstørrelse | 256/512/1024 bit |
Antal runder | 72 (80 med 1024 bit nøgle) |
Type | Substitution-permutation netværk |
Threefish er en symmetrisk blokkryptografisk algoritme inden for kryptografi, udviklet af en gruppe specialister ledet af forfatteren til Blowfish og Twofish , den amerikanske kryptograf Bruce Schneier i 2008 til brug i Skein - hash-funktionen og som en universel erstatning for eksisterende blokcifre. De vigtigste designprincipper for chifferen var: minimal hukommelsesbrug, modstand mod angreb, der kræves til brug i en hash-funktion, nem implementering og optimering til 64-bit processorer .
Threefish har en meget enkel struktur og kan bruges til at erstatte blokcifre, idet den er en hurtig og fleksibel chiffer, der fungerer i vilkårlig chiffertilstand. Threefish bruger ikke S-bokse, det er baseret på en kombination af XOR, tilføje og rotere instruktioner.
Ligesom AES er chifferen implementeret som et permutationsnetværk på reversible operationer, og er ikke en Feistel-netværkscifre .
Algoritmen sørger for brugen af en tweak-værdi, en slags initialiseringsvektor, og gør det således muligt at ændre outputværdien uden at ændre nøglen, hvilket har en positiv effekt både på implementeringen af nye krypteringstilstande og på den kryptografiske styrke af algoritme.
Som et resultat af forfatternes opfattelse af, at flere komplekse runder ofte er værre end at bruge et stort antal simple runder, har algoritmen et ukonventionelt stort antal runder - 72 eller 80 med en nøgle på 1024 bit, dog ifølge skaberne , dens hastighedsegenskaber er omkring to gange foran AES. Det er værd at bemærke, at på grund af 64-bit chifferstrukturen, finder denne erklæring kun sted på en 64-bit arkitektur. Derfor viser Threefish, ligesom Skein [1] baseret på det, væsentligt dårligere resultater på 32-bit processorer end på native hardware.
Kernen i chifferen er en simpel "MIX"-funktion, der konverterer to 64-bit tal uden fortegn, hvorunder addition, cyklisk skift (ROL/ROR) og modulo 2 addition (XOR) forekommer.
Threefish [2] er en bloksymmetrisk krypteringsalgoritme med en ekstra tuning-parameter (tweak-værdi). Størrelsen af den datablok, som algoritmen arbejder med, er 256, 512 eller 1024 bit. Nøglens længde er lig med den valgte blokstørrelse. Størrelsen af tweak-værdien for enhver af blokstørrelserne er 128 bit.
Lad os definere krypteringsfunktionen , hvor:
Til blokbehandling er dataene repræsenteret som et array af 64-bit ord (heltal fra til ). Definer som antallet af 64-bit ord i nøglen (og i blokken), så:
Antallet af runder for Threefish-algoritmen er defineret som følger:
Nøgle/bloklængde | ||
---|---|---|
256 bit | fire | 72 |
512 bit | otte | 72 |
1024 bit | 16 | 80 |
Algoritmen bruger runde taster. Lad os tilføje to 64-bit ord til hovednøglen og tweak-værdien:
, hvor
Lad os definere undernøglen som . Alle additionsoperationer udføres modulo .
Hvor
Den ikke-lineære blandings- og permutationsfunktion tager to argumenter som input og returnerer
:
Hvor er den bitvise venstreskiftoperator, og konstanten bestemmes ud fra tabellen:
fire | otte | 16 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | en | 0 | en | 2 | 3 | 0 | en | 2 | 3 | fire | 5 | 6 | 7 | |
0 | fjorten | 16 | 46 | 36 | 19 | 37 | 24 | 13 | otte | 47 | otte | 17 | 22 | 37 |
en | 52 | 57 | 33 | 27 | fjorten | 42 | 38 | 19 | ti | 55 | 49 | atten | 23 | 52 |
2 | 23 | 40 | 17 | 49 | 36 | 39 | 33 | fire | 51 | 13 | 34 | 41 | 59 | 17 |
3 | 5 | 37 | 44 | 9 | 54 | 56 | 5 | tyve | 48 | 41 | 47 | 28 | 16 | 25 |
fire | 25 | 33 | 39 | tredive | 34 | 24 | 41 | 9 | 37 | 31 | 12 | 47 | 44 | tredive |
5 | 46 | 12 | 13 | halvtreds | ti | 17 | 16 | 34 | 56 | 51 | fire | 53 | 42 | 41 |
6 | 58 | 22 | 25 | 29 | 39 | 43 | 31 | 44 | 47 | 46 | 19 | 42 | 44 | 25 |
7 | 32 | 32 | otte | 35 | 56 | 22 | 9 | 48 | 35 | 52 | 23 | 31 | 37 | tyve |
Lad os betegne den interne tilstand af algoritmen for runden . Indledende intern tilstand .
Hver runde består af flere etaper. På det første trin af runden føjes den runde nøgle til den interne tilstand som følger:
I den næste fase af runden bruges en ikke-lineær funktion :
Følgende interne tilstand er defineret som:
64-bit ordpermutationsfunktionen er defineret i tabellen nedenfor:
0 | en | 2 | 3 | fire | 5 | 6 | 7 | otte | 9 | ti | elleve | 12 | 13 | fjorten | femten | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
fire | 0 | 3 | 2 | en | ||||||||||||
otte | 2 | en | fire | 7 | 6 | 5 | 0 | 3 | ||||||||
16 | 0 | 9 | 2 | 13 | 6 | elleve | fire | femten | ti | 7 | 12 | 3 | fjorten | 5 | otte | en |
Efter at alle runder er afsluttet, er outputtet af algoritmen chifferteksten :
For Threefish-algoritmen er dekrypteringsproceduren det modsatte af krypteringsproceduren. Rundtasterne bruges i omvendt rækkefølge, og hver runde består af omvendte operationer. I stedet for en funktion bruges funktionen , som udfører modulo subtraktion og bitvis højrerotation. Trinene i hver runde af dekryptering udføres også i omvendt rækkefølge.
Ifølge forfatterne har algoritmen et højere sikkerhedsniveau end AES . Der er et angreb på 25 ud af 72 runder Threefish, mens det for AES - 6 ud af 10. Threefish har en sikkerhedsfaktorscore på 2,9, til gengæld AES - kun 1,7 [3]
Threefish-256 cipher skal bruge 9 runder for at opnå fuld spredning, Threefish-512 10 runder og Threefish-1024 11 runder. På baggrund af dette vil henholdsvis 72 og 80 runder i gennemsnit give bedre resultater end eksisterende cifre. [fire]
Algoritmen har samtidig en meget enklere struktur og transformationsfunktion, men udførelsen af 72-80 runder giver ifølge forskerne den nødvendige stabilitet. Den anvendte nøglestørrelse fra 256 til 1024 bit afviser muligheden for et brute - force-angreb på moderne hardware.
Skein er en hash-funktion baseret på Threefish
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |