Tre fisk

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 5. maj 2013; checks kræver 22 redigeringer .
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 .

Algoritmestruktur

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.

Definitioner

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

Nøgleskema

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

MIX-funktion

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

Kryptering

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:

, hvis    , hvis   

I den næste fase af runden bruges en ikke-lineær funktion :

, til   

Følgende interne tilstand er defineret som:

, til   

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 :

 , til  

Dekryptering

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.

Sikkerhed

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.

Links

Se også

Skein  er en hash-funktion baseret på Threefish

Noter

  1. Skein overgår SHA-512 med en faktor på to og er en af ​​de fem hurtigste SHA-3 hashfunktionskandidater på 64-bit arkitektur
  2. Skein and Threefish officielle   specifikation
  3. Information om chifferen i artiklen "The Skein Hash Function" . Hentet 4. august 2016. Arkiveret fra originalen 16. august 2016.
  4. [ The Skein Hash Function Family   (engelsk) (link ikke tilgængeligt) . Dato for adgang: 15. december 2008. Arkiveret fra originalen 15. januar 2009.   The Skein Hash   Function Family