Tři ryby

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 5. května 2013; kontroly vyžadují 22 úprav .
tři ryby
Tvůrce Tým specialistů pod vedením Bruce Schneiera
Vytvořeno 2008 _
zveřejněno 2008 _
Velikost klíče 256/512/1024 bitů
Velikost bloku 256/512/1024 bitů
Počet kol 72 (80 s 1024bitovým klíčem)
Typ Substitučně-permutační síť

Threefish  je symetrický blokový kryptografický algoritmus v kryptografii, vyvinutý skupinou specialistů vedených autorem Blowfish and Twofish , americkým kryptografem Brucem Schneierem v roce 2008 pro použití v hashovací funkci Skein a jako univerzální náhrada za stávající blokové šifry. Hlavní principy návrhu šifry byly: minimální využití paměti, odolnost vůči útokům vyžadovaná pro použití v hashovací funkci, snadnost implementace a optimalizace pro 64bitové procesory .

Struktura algoritmu

Threefish má velmi jednoduchou strukturu a lze ji použít k nahrazení blokových šifer, protože jde o rychlou a flexibilní šifru, která funguje v režimu libovolné šifry. Threefish nepoužívá S-boxy, je založena na kombinaci XOR, instrukcí sčítání a otáčení.

Stejně jako AES je šifra implementována jako permutační síť na reverzibilních operacích, nejedná se o síťovou šifru Feistel .

Algoritmus umožňuje použít tweak hodnotu, druh inicializačního vektoru, což umožňuje změnu výstupní hodnoty bez změny klíče, což má pozitivní vliv jak na implementaci nových režimů šifrování, tak na šifrovací sílu šifrování. algoritmus.

V důsledku názoru autorů, že několik složitých kol je často horší než použití velkého počtu jednoduchých kol, má algoritmus netradičně velký počet kol - 72 nebo 80 s klíčem 1024 bitů, nicméně podle tvůrců , jeho rychlostní charakteristiky jsou asi dvakrát lepší než AES. Stojí za zmínku, že kvůli struktuře 64bitové šifry se toto prohlášení odehrává pouze na 64bitové architektuře. Threefish tedy stejně jako na něm založený Skein [1] vykazuje výrazně horší výsledky na 32bitových procesorech než na nativním hardwaru.

Jádrem šifry je jednoduchá funkce „MIX“, která převádí dvě 64bitová čísla bez znaménka, během nichž dochází ke sčítání, cyklickému posunu (ROL/ROR) a sčítání modulo 2 (XOR).

Definice

Threefish [2] je blokově symetrický šifrovací algoritmus s dalším ladícím parametrem (tweak-value). Velikost datového bloku, se kterým algoritmus pracuje, je 256, 512 nebo 1024 bitů. Délka klíče se rovná zvolené velikosti bloku. Velikost hodnoty tweak pro kteroukoli z velikostí bloku je 128 bitů.

Pojďme definovat šifrovací funkci , kde:

Pro blokové zpracování jsou data reprezentována jako pole 64bitových slov (celá čísla od do ). Definujte jako počet 64bitových slov v klíči (a v bloku), pak:

Počet kol pro algoritmus Threefish je definován následovně:

Délka klíče/bloku
256 bit čtyři 72
512 bit osm 72
1024 bit 16 80

Klíčový plán

Algoritmus používá kulaté klávesy. Přidejme dvě 64bitová slova k hlavnímu klíči a tweak hodnotě:

, kde   


Definujme podklíč jako . Všechny operace sčítání se provádějí modulo .


Kde

Funkce MIX

Nelineární směšovací a permutační funkce bere jako vstup dva argumenty a vrací :



Kde       je bitový operátor posunu vlevo a konstanta je určena z tabulky:

čtyři osm 16
0 jeden 0 jeden 2 3 0 jeden 2 3 čtyři 5 6 7
0 čtrnáct 16 46 36 19 37 24 13 osm 47 osm 17 22 37
jeden 52 57 33 27 čtrnáct 42 38 19 deset 55 49 osmnáct 23 52
2 23 40 17 49 36 39 33 čtyři 51 13 34 41 59 17
3 5 37 44 9 54 56 5 dvacet 48 41 47 28 16 25
čtyři 25 33 39 třicet 34 24 41 9 37 31 12 47 44 třicet
5 46 12 13 padesáti deset 17 16 34 56 51 čtyři 53 42 41
6 58 22 25 29 39 43 31 44 47 46 19 42 44 25
7 32 32 osm 35 56 22 9 48 35 52 23 31 37 dvacet

Šifrování

Označme vnitřní stav algoritmu pro kolo . Počáteční vnitřní stav .

Každé kolo se skládá z několika fází. V první fázi kola je kulatý klíč přidán do vnitřního stavu následovně:

, pokud    , pokud   

V další fázi kola se používá nelineární funkce :

, pro   

Následující vnitřní stav je definován jako:

, pro   

Funkce 64bitové permutace slova je definována v tabulce níže:

0 jeden 2 3 čtyři 5 6 7 osm 9 deset jedenáct 12 13 čtrnáct patnáct
čtyři 0 3 2 jeden
osm 2 jeden čtyři 7 6 5 0 3
16 0 9 2 13 6 jedenáct čtyři patnáct deset 7 12 3 čtrnáct 5 osm jeden


Po dokončení všech kol je výstupem algoritmu šifrový text :

 , pro  

Dešifrování

U algoritmu Threefish je postup dešifrování opakem postupu šifrování. Kulaté klávesy se používají v obráceném pořadí a každé kolo se skládá z obrácených operací. Místo funkce je použita funkce , která provádí odečítání modulo a bitovou rotaci doprava. Kroky každého kola dešifrování se také provádějí v opačném pořadí.

Zabezpečení

Podle autorů má algoritmus vyšší úroveň zabezpečení než AES . Dochází k útoku na 25 ze 72 kol Threefish, zatímco pro AES - 6 z 10. Threefish má skóre bezpečnostního faktoru 2,9, naopak AES - pouze 1,7 [3]

Šifra Threefish-256 potřebuje k dosažení plného rozšíření 9 kol, Threefish-512 10 kol a Threefish-1024 11 kol. Na základě toho bude 72 a 80 kol v průměru poskytovat lepší výsledky než stávající šifry. [čtyři]

Algoritmus má zároveň mnohem jednodušší strukturu a transformační funkci, ale provedení 72-80 kol podle výzkumníků poskytuje potřebnou stabilitu. Použitá velikost klíče od 256 do 1024 bitů vylučuje možnost útoku hrubou silou na moderní hardware.

Odkazy

Viz také

Skein  je hašovací funkce založená na Threefish

Poznámky

  1. Skein dvojnásobně překonává SHA-512 a je jedním z pěti nejrychlejších kandidátů na hashovací funkci SHA-3 na 64bitové architektuře
  2. ↑ Oficiální specifikace přadénka a trojky  
  3. Informace o šifře v článku "The Skein Hash Function" . Získáno 4. 8. 2016. Archivováno z originálu 16. 8. 2016.
  4. [ The Skein Hash Function Family   (anglicky) (odkaz není dostupný) . Datum přístupu: 15. prosince 2008. Archivováno z originálu 15. ledna 2009.   Rodina Skein Hash   Function