kolme kalaa | |
---|---|
Luoja | Bruce Schneierin johtama asiantuntijaryhmä |
Luotu | 2008_ _ |
julkaistu | 2008_ _ |
Avaimen koko | 256/512/1024 bittiä |
Lohkon koko | 256/512/1024 bittiä |
Kierrosten lukumäärä | 72 (80 1024-bittisellä avaimella) |
Tyyppi | Korvaus-permutaatioverkko |
Threefish on symmetrinen lohkosalausalgoritmi kryptografiassa , jonka on kehittänyt asiantuntijaryhmä, jota johti Blowfish and Twofishin kirjoittaja , amerikkalainen kryptografi Bruce Schneier vuonna 2008 käytettäväksi Skein - hajautusfunktiossa ja yleisenä korvaajana olemassa oleville lohkosalauksille. Salauksen tärkeimmät suunnitteluperiaatteet olivat: minimaalinen muistin käyttö, hajautusfunktion käytön edellyttämä hyökkäyksiä vastaan, helppokäyttöisyys ja optimointi 64-bittisille prosessoreille .
Threefish on rakenteeltaan hyvin yksinkertainen ja sillä voidaan korvata lohkosalauksia, koska se on nopea ja joustava salaus, joka toimii mielivaltaisessa salaustilassa. Threefish ei käytä S-boxeja, se perustuu XOR-, add- ja rotate-ohjeiden yhdistelmään.
Kuten AES, salaus on toteutettu permutaatioverkkona käännettäville operaatioille, ei ole Feistelin verkkosalaus .
Algoritmi mahdollistaa tweak-arvon, eräänlaisen alustusvektorin käytön, mikä mahdollistaa lähtöarvon muuttamisen ilman avainta vaihtamatta, millä on positiivinen vaikutus sekä uusien salaustilojen käyttöönotossa että salauksen vahvuuteen. algoritmi.
Johtuen tekijöiden näkemyksestä, että useat monimutkaiset kierrokset ovat usein huonompia kuin useiden yksinkertaisten kierrosten käyttäminen, algoritmissa on epätavallisen suuri määrä kierroksia - 72 tai 80 1024-bittisellä avaimella, mutta tekijöiden mukaan. , sen nopeusominaisuudet ovat noin kaksi kertaa AES:ää edellä. On syytä huomata, että 64-bittisen salausrakenteen vuoksi tämä lausunto tapahtuu vain 64-bittisessä arkkitehtuurissa. Siksi Threefish, kuten siihen perustuva Skein [1] , näyttää huomattavasti huonompia tuloksia 32-bittisillä prosessoreilla kuin alkuperäisillä laitteistoilla.
Salauksen ydin on yksinkertainen "MIX"-funktio, joka muuntaa kaksi 64-bittistä etumerkitöntä lukua, joiden aikana tapahtuu yhteenlasku, syklinen siirto (ROL/ROR) ja modulo 2 additio (XOR).
Threefish [2] on lohkosymmetrinen salausalgoritmi, jossa on lisäsäätöparametri (tweak-value). Sen datalohkon koko, jolla algoritmi toimii, on 256, 512 tai 1024 bittiä. Avaimen pituus on yhtä suuri kuin valittu lohkokoko. Tweak-arvon koko mille tahansa lohkokoolle on 128 bittiä.
Määritellään salausfunktio , jossa:
Lohkojen käsittelyä varten tiedot esitetään 64-bittisten sanojen joukona (kokonaisluvut välillä - ). Määritä 64-bittisten sanojen lukumäärä avaimessa (ja lohkossa) ja sitten:
Threefish-algoritmin kierrosten määrä määritellään seuraavasti:
Avaimen/lohkon pituus | ||
---|---|---|
256 bittiä | neljä | 72 |
512-bittinen | kahdeksan | 72 |
1024 bittiä | 16 | 80 |
Algoritmi käyttää pyöreitä näppäimiä. Lisätään kaksi 64-bittistä sanaa pääavaimeen ja säätöarvoon:
, missä
Määritellään aliavain muotoon . Kaikki lisäystoiminnot suoritetaan modulo .
Missä
Epälineaarinen sekoitus- ja permutaatiofunktio ottaa kaksi argumenttia syötteenä ja palauttaa
:
Missä on bittikohtaisen vasemman siirtooperaattori, ja vakio määritetään taulukosta:
neljä | kahdeksan | 16 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | yksi | 0 | yksi | 2 | 3 | 0 | yksi | 2 | 3 | neljä | 5 | 6 | 7 | |
0 | neljätoista | 16 | 46 | 36 | 19 | 37 | 24 | 13 | kahdeksan | 47 | kahdeksan | 17 | 22 | 37 |
yksi | 52 | 57 | 33 | 27 | neljätoista | 42 | 38 | 19 | kymmenen | 55 | 49 | kahdeksantoista | 23 | 52 |
2 | 23 | 40 | 17 | 49 | 36 | 39 | 33 | neljä | 51 | 13 | 34 | 41 | 59 | 17 |
3 | 5 | 37 | 44 | 9 | 54 | 56 | 5 | kaksikymmentä | 48 | 41 | 47 | 28 | 16 | 25 |
neljä | 25 | 33 | 39 | kolmekymmentä | 34 | 24 | 41 | 9 | 37 | 31 | 12 | 47 | 44 | kolmekymmentä |
5 | 46 | 12 | 13 | viisikymmentä | kymmenen | 17 | 16 | 34 | 56 | 51 | neljä | 53 | 42 | 41 |
6 | 58 | 22 | 25 | 29 | 39 | 43 | 31 | 44 | 47 | 46 | 19 | 42 | 44 | 25 |
7 | 32 | 32 | kahdeksan | 35 | 56 | 22 | 9 | 48 | 35 | 52 | 23 | 31 | 37 | kaksikymmentä |
Merkitään kierroksen algoritmin sisäistä tilaa . Alkuperäinen sisäinen tila .
Jokainen kierros koostuu useista vaiheista. Kierroksen ensimmäisessä vaiheessa pyöreä avain lisätään sisäiseen tilaan seuraavasti:
Kierroksen seuraavassa vaiheessa käytetään epälineaarista funktiota :
Seuraava sisäinen tila määritellään seuraavasti:
64-bittinen sanapermutaatiofunktio on määritelty alla olevassa taulukossa:
0 | yksi | 2 | 3 | neljä | 5 | 6 | 7 | kahdeksan | 9 | kymmenen | yksitoista | 12 | 13 | neljätoista | viisitoista | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
neljä | 0 | 3 | 2 | yksi | ||||||||||||
kahdeksan | 2 | yksi | neljä | 7 | 6 | 5 | 0 | 3 | ||||||||
16 | 0 | 9 | 2 | 13 | 6 | yksitoista | neljä | viisitoista | kymmenen | 7 | 12 | 3 | neljätoista | 5 | kahdeksan | yksi |
Kun kaikki kierrokset on suoritettu, algoritmin tulos on salateksti :
Threefish-algoritmissa salauksen purku on päinvastainen kuin salausmenettely. Pyöreitä näppäimiä käytetään käänteisessä järjestyksessä, ja jokainen kierros koostuu käänteisistä toiminnoista. Funktion sijasta käytetään funktiota , joka suorittaa modulovähennyslaskua ja bittikohtaista oikeaa kiertoa. Jokaisen salauksenpurkukierroksen vaiheet suoritetaan myös käänteisessä järjestyksessä.
Kirjoittajien mukaan algoritmilla on korkeampi turvallisuustaso kuin AES . Threefishin kierros on 25 72:sta, kun taas AES:lle - 6 10:stä. Threefishin turvallisuuskerroin on 2,9, AES:n puolestaan vain 1,7 [3]
Threefish-256 salaus tarvitsee 9 kierrosta saavuttaakseen täyden leviämisen, Threefish-512 10 kierrosta ja Threefish-1024 11 kierrosta. Tämän perusteella 72 ja 80 kierrosta antavat keskimäärin parempia tuloksia kuin olemassa olevat salaukset. [neljä]
Samaan aikaan algoritmilla on paljon yksinkertaisempi rakenne ja muunnostoiminto, mutta 72-80 kierroksen suorittaminen tarjoaa tutkijoiden mukaan tarvittavan vakauden. Käytetty avaimen koko 256 - 1024 bittiä estää raa'an voiman hyökkäyksen nykyaikaisia laitteita vastaan.
Skein on Threefishiin perustuva hash-funktio
Symmetriset salausjärjestelmät | |
---|---|
Suoratoista salauksia | |
Feistelin verkko | |
SP verkko | |
Muut |