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 .
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.
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 |
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
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 |
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:
I nästa steg av omgången används en icke-linjär funktion :
Följande interna tillstånd definieras som:
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 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.
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.
Skein är en hashfunktion baserad på Threefish
Symmetriska kryptosystem | |
---|---|
Streama chiffer | |
Feistel nätverk | |
SP nätverk | |
Övrig |