Iho

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 28. lokakuuta 2015 tarkistetusta versiosta . tarkastukset vaativat 18 muokkausta .
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ö.

Historia

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".

Algoritmi

Threefish Block

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.

UBI

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.

Lisäargumentit

Seuraavat parametrit voidaan asettaa Tyyppi-kenttään antamalla sopiva arvo

skin

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

Cryptanalysis

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.

Suorituskyky

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.

Sovellus

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ä.

Skein hash esimerkkejä

Eri hash-muunnelmien arvot tyhjästä merkkijonosta.

Skin256-224("") 0x 0fadf1fa39e3837a95b3660b4184d9c2f3cfc94b55d8e7a083278bf8
Skein256-256("") 0x c8877087da56e072870daa843f176e9453115929094c3a40c463a196c29bf7ba
Skein512-224("") 0x 1541ae9fc3ebe24eb758ccb1fd60c2c31a9ebfe65b220086e7819e25
Skein512-256("") 0x 39ccc4554a8b31853b9de7a1fe638a24cce6b35a55f2431009e18780335d2621
Skein512-384("") 0x
dd5aaf4589dc227bd1eb7bc68771f5baeaa3586ef6c7680167a023ec8ce26980f06c4082c488b4ac9ef313f8cbe70808 0x bc5b4c50925519c290cc634277ae3d6257212395cba733bbad37a4af0fa06af4 1fca7903d06564fea7a2d3730dbdb80c1f85562dfcc070334ea4d1d9e72cba7a
Skein1024-384("") 0x 1fdb081963b960e89eaa11b87dda55e8a55a3e1066b30e38d8ae2a45242f7dadfaf06d80ca8a73cd8242ce5eab84c164
"5"51124" 0x e2943eb0bc0efabd49503a76edf7cfcf072db25bad94ed44fe537284163f3119 c47ac6f78699b4272255966e0aba65c75a0a64bd23df6996d1bc3174afd9fa8b
Skein1024-1024("") 0x 0fff9563bb3279289227ac77d319b6fff8d7e9f09da1247b72a0a265cd6d2a62 645ad547ed8193db48cff847c06494a03f55666d3b47eb4c20456c9373c86297 d630d5578ebd34cb40991578f9f52b18003efa35d3da6553ff35db91b81ab890 bec1b189b7f52cb2a783ebb7d823d725b0b4a71f6824e88f68f982eefc6d19c6

Pieni 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 b3250457e05d3060b1a4bbc1428bc75a3f525ca389aeab96cfa34638d96e492a
Skein512-256("Nopea ruskea kettu hyppää laiskan koiran yli.") 0x 41e829d7fca71c7d7154ed8fc8a069f274dd664ae0ed29d365d919f4e575eebb

Linkit

Muistiinpanot

  1. 1 2 Skein-dokumentaatio, versio 1.3 (2010-10-01) . Käyttöpäivä: 17. joulukuuta 2013. Arkistoitu alkuperäisestä 24. elokuuta 2014.
  2. NIST valitsee Secure Hash Algorithm (SHA-3) -kilpailun voittajan . NIST . Haettu 2. lokakuuta 2012. Arkistoitu alkuperäisestä 5. lokakuuta 2012.
  3. Jean-Philippe Aumasson1, C¸ a˘gda¸s C¸ alık, Willi Meier1, Onur Ozen, Raphael C.-W. ja Kerem VarIcI,. Skeinin parannettu krypta-  analyysi (neopr.) . — Luxemburgin yliopisto, 2009.
  4. Dmitry Khovratovich ja Ivica Nikolić. ARX:n rotaatiosalausanalyysi  (neopr.) . – Luxemburgin yliopisto, 2010.