Tre fiskar

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 5 maj 2013; kontroller kräver 22 redigeringar .
tre fiskar
Skapare Ett team av specialister under ledning av Bruce Schneier
Skapad 2008 _
publiceras 2008 _
Nyckelstorlek 256/512/1024 bitar
Block storlek 256/512/1024 bitar
Antal omgångar 72 (80 med 1024 bitars nyckel)
Sorts Substitution-permutationsnätverk

Threefish  är en symmetrisk blockkryptografisk algoritm inom kryptografi , utvecklad av en grupp specialister ledda av författaren till Blowfish och Twofish , den amerikanske kryptografen Bruce Schneier 2008 för användning i Skein - hashfunktionen och som en universell ersättning för befintliga blockchiffer. Chifferets huvudsakliga designprinciper var: minimal minnesanvändning, motstånd mot attacker som krävs för användning i en hashfunktion, enkel implementering och optimering för 64-bitars processorer .

Algoritmstruktur

Threefish har en mycket enkel struktur och kan användas för att ersätta blockchiffer, eftersom det är ett snabbt och flexibelt chiffer som fungerar i godtyckligt chifferläge. Threefish använder inte S-boxar, det är baserat på en kombination av XOR, add och rotate instruktioner.

Precis som AES implementeras chifferet som ett permutationsnätverk för reversibla operationer, inte ett Feistel-nätverkschiffer .

Algoritmen tillhandahåller användningen av ett tweakvärde, en slags initialiseringsvektor, vilket gör att utdatavärdet kan ändras utan att ändra nyckeln, vilket har en positiv effekt både på implementeringen av nya krypteringslägen och på den kryptografiska styrkan hos algoritm.

Som ett resultat av författarnas åsikt att flera komplexa omgångar ofta är värre än att använda ett stort antal enkla rundor, har algoritmen ett okonventionellt stort antal rundor - 72 eller 80 med en nyckel på 1024 bitar, men enligt skaparna , dess hastighetsegenskaper är ungefär två gånger före AES. Det är värt att notera att på grund av 64-bitars chifferstrukturen sker detta uttalande endast på en 64-bitars arkitektur. Därför visar Threefish, liksom Skein [1] baserat på det, betydligt sämre resultat på 32-bitarsprocessorer än på inbyggd hårdvara.

Kärnan i chifferet är en enkel "MIX"-funktion som omvandlar två 64-bitars osignerade tal, under vilka addition, cyklisk skiftning (ROL/ROR) och modulo 2 addition (XOR) sker.

Definitioner

Threefish [2] är en blocksymmetrisk krypteringsalgoritm med en extra avstämningsparameter (tweak-värde). Storleken på datablocket som algoritmen arbetar med är 256, 512 eller 1024 bitar. Nyckellängden är lika med den valda blockstorleken. Storleken på tweakvärdet för någon av blockstorlekarna är 128 bitar.

Låt oss definiera krypteringsfunktionen , där:

För blockbearbetning representeras data som en array av 64-bitars ord (heltal från till ). Definiera som antalet 64-bitars ord i nyckeln (och i blocket), sedan:

Antalet rundor för Threefish-algoritmen definieras enligt följande:

Nyckel/block längd
256 bitar fyra 72
512 bitar åtta 72
1024 bitar 16 80

Nyckelschema

Algoritmen använder runda nycklar. Låt oss lägga till två 64-bitars ord till huvudnyckeln och tweakvärdet:

, var   


Låt oss definiera undernyckeln som . Alla additionsoperationer utförs modulo .


Var

MIX-funktion

Den icke-linjära blandnings- och permutationsfunktionen tar två argument som input och returnerar :



Var       är den bitvisa vänstra skiftoperatorn, och konstanten bestäms från tabellen:

fyra åtta 16
0 ett 0 ett 2 3 0 ett 2 3 fyra 5 6 7
0 fjorton 16 46 36 19 37 24 13 åtta 47 åtta 17 22 37
ett 52 57 33 27 fjorton 42 38 19 tio 55 49 arton 23 52
2 23 40 17 49 36 39 33 fyra 51 13 34 41 59 17
3 5 37 44 9 54 56 5 tjugo 48 41 47 28 16 25
fyra 25 33 39 trettio 34 24 41 9 37 31 12 47 44 trettio
5 46 12 13 femtio tio 17 16 34 56 51 fyra 53 42 41
6 58 22 25 29 39 43 31 44 47 46 19 42 44 25
7 32 32 åtta 35 56 22 9 48 35 52 23 31 37 tjugo

Kryptering

Låt oss beteckna det interna tillståndet för algoritmen för rundan . Initialt inre tillstånd .

Varje omgång består av flera steg. I det första steget av omgången läggs den runda nyckeln till det interna tillståndet enligt följande:

, om    , om   

I nästa steg av omgången används en icke-linjär funktion :

, för   

Följande interna tillstånd definieras som:

, för   

64-bitars ordpermutationsfunktionen definieras i tabellen nedan:

0 ett 2 3 fyra 5 6 7 åtta 9 tio elva 12 13 fjorton femton
fyra 0 3 2 ett
åtta 2 ett fyra 7 6 5 0 3
16 0 9 2 13 6 elva fyra femton tio 7 12 3 fjorton 5 åtta ett


Efter att alla omgångar har slutförts är utdata från algoritmen chiffertexten :

 , för  

Dekryptering

För Threefish-algoritmen är dekrypteringsproceduren det omvända till krypteringsproceduren. Rundtangenterna används i omvänd ordning, och varje runda består av omvända operationer. Istället för en funktion används funktionen , som utför modulosubtraktion och bitvis högerrotation. Stegen i varje dekrypteringsrunda utförs också i omvänd ordning.

Säkerhet

Enligt författarna har algoritmen en högre säkerhetsnivå än AES . Det finns en attack på 25 av 72 omgångar av Threefish, medan för AES - 6 av 10. Threefish har en säkerhetsfaktor på 2,9, i sin tur AES - endast 1,7 [3]

Threefish-256 chiffer behöver 9 omgångar för att uppnå full spridning, Threefish-512 10 omgångar och Threefish-1024 11 omgångar. Utifrån detta kommer 72 respektive 80 omgångar i genomsnitt ge bättre resultat än befintliga chiffer. [fyra]

Samtidigt har algoritmen en mycket enklare struktur och transformationsfunktion, men utförandet av 72-80 omgångar ger enligt forskarna den nödvändiga stabiliteten. Den tillämpade nyckelstorleken från 256 till 1024 bitar förnekar möjligheten för en brute force attack på modern hårdvara.

Länkar

Se även

Skein  är en hashfunktion baserad på Threefish

Anteckningar

  1. Skein överträffar SHA-512 med en faktor två och är en av de fem snabbaste SHA-3 hashfunktionskandidaterna på 64-bitars arkitektur
  2. Skein and Threefish officiella   specifikation
  3. Information om chiffer i artikeln "The Skein Hash Function" . Hämtad 4 augusti 2016. Arkiverad från originalet 16 augusti 2016.
  4. [ The Skein Hash Function Family   (engelska) (länk ej tillgänglig) . Tillträdesdatum: 15 december 2008. Arkiverad från originalet 15 januari 2009.   Skein Hash   Function Family