Iho | |
---|---|
Luotu | 2008 |
julkaistu | 2008 |
Hash-koko | muuttuja, 0<d≤2 64 -1 |
Kierrosten lukumäärä | muuttuja, 72 256/512-bittiselle ulostulolle, 80 1024-bittiselle ulostulolle |
Tyyppi | hash-toiminto |
Skein (eng. Skein) on muuttuvapituinen hajautusalgoritmi , jonka on kehittänyt Bruce Schneierin johtama kirjoittajaryhmä . Skein-hajautustoiminto on toteutettu universaalina kryptografisena primitiivinä, joka perustuu UBI-hajautustilassa toimivaan Threefish-lohkosalaukseen. [1] Tärkeimmät kehitysvaatimukset olivat optimointi minimaalista muistin käyttöä varten, pienten viestien salausturvallinen hajautus, kestävyys kaikkia olemassa olevia hash-toimintoihin kohdistuvia hyökkäyksiä vastaan, optimointi 64-bittisille prosessoreille ja aktiivinen taulukkokäyttöjen käyttö.
Skeinin loi vuonna 2008 Bruce Schneierin johtama kirjoittajaryhmä, ja se pääsi SHA-3- kilpailun viiden parhaan finalistin joukkoon , mutta vuonna 2012 voittaja oli Keccak- algoritmi , tuottavin ja herkkä SHA-2- haavoittuvuuksille [ 2] . Hash-funktion nimi Skein tarkoittaa "vyyhti lankaa".
Threefish on mukautettu lohkosalaus, joka on määritetty 256-, 512- ja 1024-bittisille lohkoille. Salaus on toteutettu korvaus-permutaatioverkkona . Salaus perustuu yksinkertaiseen MIX-funktioon, joka ottaa kaksi 64-bittistä sanaa syötteenä ja koostuu yhteenlaskulohkoista, ympyräsiirrosta vakiolla ja additiomodulo 2 : sta (XOR). 256- ja 512-bittisille salauksille käytetään 72 kierrosta ja 1024-bittisille salakirjoille 80 kierrosta. Sanat vaihdetaan kierrosten välillä ja avain lisätään joka neljäs kierros, mikä johtaa epälineaarisuuteen.
Threefish in Skein käytetään UBI (Unique Block Iteration) hajautustilassa. UBI-tila on muunnelma Matyas-Meyer-Oseas-tilasta .[1] Jokainen UBI-linkki yhdistää ketjun edellisen linkin syöttöviestit mielivaltaiseen pituuteen ja asettaa lähdön kiinteän kokoisen arvon. Linkkien välillä lähetetty viesti (tweak) sisältää tietoja käsiteltyjen tavujen määrästä, ketjun alun ja lopun liput sekä tietotyyppikentän, jonka avulla voit erottaa UBI-sovellukset. UBI takaa saman viestin hajautustuloksen toistamattomuuden ja lisäsuojauksen, koska samat viestit pääsevät hajautusfunktion ja salauksen tuloon. UBI on järjestetty seuraavasti. Jokainen lenkki ketjussa on funktio
- alkuperäinen -tavun arvo - viesti, jota edustaa tavujen merkkijono (tämän merkkijonon pituus voi olla mielivaltainen, mutta maksimi on bittiä) - kokonaislukutyypin mukautuksen aloitusarvo (128 bittiä).Tweak sisältää seuraavat kentät:
Laskelmat tapahtuvat seuraavasti. Jos bittien määrä on jaollinen 8:lla, asetamme ja . Jos bittien määrä ei ole jaollinen 8:lla, täydennämme viimeistä (epätäydellistä) tavua seuraavasti: merkitsemme käyttämättömälle bitille arvon 1 ja loput arvoksi 0 , ottaen huomioon lisätyn tavun. . on tavujen määrä kohteessa . Syöttöarvo on rajoitettu . Seuraavaksi lisäämme nollia niin, että bittien määrä on kerrannaisluku ja kutsumme tulosta . Jaetaan se tavun lohkoiksi . UBI-arvo lasketaan seuraavasti:
,missä on lohkosalauksen laskentafunktio, , loput
Säätö lasketaan kaavalla:
Ensimmäinen termi määrittää TreeLevel- ja Type-kentät, toinen määrittelee Position-kentän, kolmas asettaa First-lipun, neljäs määrittää Final- ja BitPad-liput.
Seuraavat parametrit voidaan asettaa Tyyppi-kenttään antamalla sopiva arvo
Lopullisessa versiossa Skein lasketaan seuraavasti. Skeinillä on seuraavat syöttöargumentit:
Ensin luodaan avain . Jos on tyhjä merkkijono, niin alkuarvo on : . Jos ei, se lasketaan seuraavasti:
Lisälaskelmat etenevät seuraavan kaavion mukaisesti:
Tässä on konfiguraatiomerkkijono, joka sisältää tunnisteen (tarvitaan UBI:n perusteella luotujen eri funktioiden erottamiseen), versiotiedot, lähtöarvon pituuden, puuparametrit.
Lopputuloksen määrää ns. funktio , joka määritellään lausekkeen alkutavuiksi
Jos parametrit , , eivät ole nollia, laskelmat suoritetaan eri tavalla. Puun lehden koko määritellään solmun kooksi .
L : nnen tason viesti jaetaan kokoisiin lohkoihin ja puun seuraava taso lasketaan yhdistämällä kaikki
Jos pituus on , niin hajautus on ohi ja sen tulos on . Jos pituus on suurempi kuin , puun maksimikorkeus on saavutettu, jolloin hajautustulos on .
Skeinistä on myös yksinkertaistettu versio argumenteilla , , . Tyyppi - kentässä voi olla vain arvot Cfg ja Msg
Vuonna 2009 kirjailijaryhmä [3] tutki Threefishin, joka on tärkeä osa Skeiniä, kryptografista vakautta. Yhdessä tekijöiden [1] tutkimuksen kanssa he päätyivät taulukossa ilmoitettuun tulokseen.
Kierrosten lukumäärä | Aika | Muisti | Kryptusanalyysin tyyppi |
---|---|---|---|
kahdeksan | yksi | - | 511-bittinen pseudotörmäys |
16 | 26 _ | - | 459-bittinen pseudotörmäys |
17 | 2 24 | - | 434-bittinen pseudotörmäys |
17 | 2 8.6 | - | Aiheeseen liittyvien avainten erottaja |
21 | 2 3.4 | - | Aiheeseen liittyvien avainten erottaja |
21 | - | - | Suhteellisen avaimen mahdoton ero |
25 | ? | - | Aiheeseen liittyvän avaimen palautus (arvattu) |
25 | 2 416,6 | - | Aiheeseen liittyvien avainten avainten palautus |
26 | 2507,8 _ | - | Aiheeseen liittyvien avainten avainten palautus |
32 | 2312 _ | 2 71 | Aiheeseen liittyvien avainten bumerangiavainten palautus |
34 | 2 398 | - | Aiheeseen liittyvä bumerangierotin |
35 | 2478 _ | - | Tunnettu toisiinsa liittyvien avainten bumerangierotin |
Lisäksi toinen kirjoittajaryhmä [4] osoitti vuonna 2010, että round robin -kryptausanalyysin avulla on mahdollista suorittaa arvattu avainhyökkäys Threefishiä vastaan, mutta vain jos käytetään 53/57 laukausta 72:n sijaan. Tämä ei riitä hyökkäys Skein, joten ehdotetaan yhdistämään syklinen kryptausanalyysi differentiaaliseen kryptausanalyysiin.
Skein-toteutuksia on kolmelle vaihtoehdolle sisäisen tilan arvolle: 256, 512 ja 1024 bittiä. Päävaihtoehtona pidetään Skein-512:ta, jota voidaan käyttää turvallisesti kaikissa salaussovelluksissa lähitulevaisuudessa. 1024-bittinen versio on vieläkin turvallisempi ja toimii kaksi kertaa nopeammin olemassa olevissa laitteistototeutuksissa. Skein-256 on paras vaihtoehto käytettäväksi vähän muistia vaativissa laitteissa (kuten älykortit), koska se vaatii vain 100 tavua RAM-muistia, toisin kuin Skein-512, joka vaatii 200 tavua. Threefish -laitteen ansiosta Skein toimii nopeimmin 64-bittisillä prosessoreilla. Alla olevassa taulukossa verrataan Skein- ja SHA-algoritmien suorituskykyä. Taulukko näyttää C -toteutuksen nopeuden (kelloina tavua kohden) 64-bittisessä prosessorissa.
Algoritmi/viestin pituus (tavuina) | yksi | kymmenen | 100 | 1000 | 10 000 | 100 000 |
---|---|---|---|---|---|---|
Iho-256 | 774 | 77 | 16.6 | 9.8 | 9.2 | 9.2 |
Iho-512 | 1086 | 110 | 15.6 | 7.3 | 6.6 | 6.5 |
Iho-1024 | 3295 | 330 | 33.2 | 14.2 | 12.3 | 12.3 |
SHA-1 | 677 | 74.2 | 14.0 | 10.4 | 10.0 | 10.0 |
SHA-224 | 1379 | 143.1 | 27.4 | 20.7 | 20.1 | 20.0 |
SHA-256 | 1405 | 145,7 | 77.6 | 20.7 | 20.1 | 20.0 |
SHA-384 | 1821 | 187,3 | 19.6 | 13.7 | 13.4 | 13.3 |
SHA-512 | 1899 | 192,5 | 20.6 | 13.8 | 13.4 | 13.3 |
Kuten taulukosta näkyy, Skein on kaksi kertaa nopeampi kuin SHA-512.
Skeinin soveltamisala on melko laaja. MAC voidaan laskea käyttämällä viestiä ja näppäintä vastaavina tuloina . Voidaan käyttää hash-funktiona HMAC :n laskemiseen . Käytä Nonce- argumenttia käyttääksesi Skeinia streamin salaustilassa. Sitä voidaan käyttää myös näennäissatunnaislukugeneraattorina esimerkiksi Fortuna- ja Yarrow -algoritmeissa avainjohdannaisfunktiona ja salasanapohjaisena avaimen johtamisfunktiona (käyttäen Key- ja Key Derivation Identifer -argumentteja ) hash-funktio sähköisen allekirjoituksen laskemiseen (se tarkoittaa julkisen avaimen ).
Mukauttaminen - argumentilla kaikki Skein-sovellukset voidaan mukauttaa tietylle käyttäjälle. Esimerkiksi FOO-sovelluksen mukautusmerkkijono UTF8 Unicodessa saattaa näyttää tältä
20081031 [email protected] FOO/baari,jossa palkki on persoonallisuus sovelluksen sisällä.
Eri hash-muunnelmien arvot tyhjästä merkkijonosta.
Skin256-224("") 0x 0fadf1fa39e3837a95b3660b4184d9c2f3cfc94b55d8e7a083278bf8Pieni muutos viestissä johtaa todennäköisesti suureen muutokseen hash-arvossa lumivyöryvaikutuksen vuoksi , kuten seuraavassa esimerkissä näkyy:
Skein512-256("Nopea ruskea kettu hyppää laiskan koiran yli") 0x b3250457e05d3060b1a4bbc1428bc75a3f525ca389aeab96cfa34638d96e492aHash-funktiot | |
---|---|
yleinen tarkoitus | |
Kryptografinen | |
Avainten luontitoiminnot | |
Tarkista numero ( vertailu ) | |
Hashes |
|