BLAKE on Jean-Philippe Aumassonin, Luca Henzenin, Willi Meierin, Raphael C.-W. Phanin kehittämä kryptografinen hash-funktio .
Hajautusfunktiosta on kaksi muunnelmaa: BLAKE-256 ja BLAKE-512.
Ensimmäistä kertaa BLAKE esiteltiin Yhdysvaltain kansallisen standardointi- ja teknologiainstituutin järjestämässä kryptografisten algoritmien kilpailussa ( NIST hash function competition , Russian SHA-3 (kilpailu) ). BLAKEsta tuli yksi kilpailun viidestä finalistista ( englantilaiset finalistit ).
BLAKE-tiivistefunktio on rakennettu kolmesta aiemmin tutkitusta komponentista:
Suorituskyky kahdella eri prosessorilla:
prosessori | Nopeus (sykliä/tavu) | |
---|---|---|
BLAKE-256 | BLAKE-512 | |
Intel Core i5-2400M (Sandy Bridge) | 7.49 | 5.64 |
AMD FX-8120 (puskutraktori) | 11.83 | 6.88 |
Mahdollisuus toteuttaa erilaisissa mikrokontrollereissa:
mikro-ohjain | BLAKE-256 | BLAKE-512 | ||
---|---|---|---|---|
RAM (tavu) | ROM (tavu) | RAM (tavu) | ROM (tavu) | |
Cortex-M3-pohjainen mikro-ohjain (32-bittinen prosessori) | 280 | 1320 | 516 | 1776 |
ATmega1284P mikro-ohjain (8-bittinen prosessori) | 267 | 3434 | 525 | 6350 |
Suorituskyky FPGA :lla ( eng. FPGA ):
Xilinx Virtex 5 FPGA : ssa BLAKE-256 on toteutettu 56 solussa ja voi saavuttaa yli 160 Mbps:n suorituskyvyn, ja BLAKE-512 on toteutettu 108 solussa ja nopeuksilla jopa 270 Mbps.
ASIC- suorituskyky :
180 nm ASIC :lla BLAKE-256 voidaan toteuttaa 13,5 kGE:llä . 90 nm ASIC :ssa BLAKE-256 on toteutettu 38 kGE:ssä ja se voi saavuttaa 10 Gb/s suorituskyvyn, kun taas BLAKE-512 on toteutettu 79 kGE:ssä ja 15 Gb/s:ssa [2] .
Kuten aiemmin mainittiin, BLAKE-hajautusfunktio on rakennettu kolmesta aiemmin opitusta komponentista:
Harkitse BLAKE-256-algoritmia [3]
BLAKE-256 toimii 32-bittisillä sanoilla ja palauttaa 32-tavun tiivisteen.
On alkuvakiot, ns. ALKUARVAT (IV):
IV0 = 6A09E667 IV1 = BB67AE85 IV2 = 3C6EF372 IV3 = A54FF53A IV4 = 510E527F IV5 = 9B05688C IV6 = 1F83D9AB IV7 = 5BE0CD1916 vakiota (pi:n ensimmäiset numerot):
c 0 = 243F6A88 c 1 = 85A308D3 c 2 = 13198A2E c 3 = 03707344 c 4 = A4093822 c 5 = 299F31D0 c 6 = 082EFA98 c 7 = EC4E6C89 c 8 = 452821E6 c 9 = 38D01377 c 10 = BE5466CF c 11 = 34E90C6C c 12 = C0AC29B7 c 13 = C97C50DD c 14 = 3F84D5B5 c 15 = B5470917permutaatiot {0,…,15} (käytetään kaikissa BLAKE-funktioissa):
σ0 = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 σ 1 = 14 10 4 8 9 15 13 6 1 12 0 2 11 7 5 3 σ 2 = 11 8 12 0 5 2 15 13 10 14 3 6 7 1 9 4 σ 3 = 7 9 3 1 13 12 11 14 2 6 5 10 4 0 15 8 σ 4 = 9 0 5 7 2 4 10 15 14 1 11 12 6 8 3 13 σ5 = 2 12 6 10 0 11 8 3 4 13 7 5 15 14 1 9 σ 6 = 12 5 1 15 14 13 4 10 0 7 6 3 9 2 8 11 σ 7 = 13 11 7 14 12 1 3 9 5 0 15 4 8 6 2 10 σ8 = 6 15 14 9 11 3 0 8 12 2 13 7 1 4 10 5 σ9 = 10 2 8 4 7 6 1 5 15 11 9 14 3 12 13 0BLAKE-256-algoritmin pakkaustoiminto ottaa syötteenä:
Siten se vastaanottaa 30 sanaa syötteenä (8+16+4+2=30, 30*4 = 120 tavua = 960 bittiä). Pakkausfunktio palauttaa vain ketjumuuttujien uuden arvon: h' = h' 0 ,…,h' 7 . Seuraavassa merkitään h'=pakkaus(h, m, s, t).
16 muuttujaa, v 0 ,…,v 15 , jotka kuvaavat v:n nykyistä tilaa , alustetaan alkuarvoilla syöttötiedon mukaan ja esitetään 4×4 -matriisina :
←
Kun tila v on alustettu, aloitetaan 14 kierroksen sarja. Kierros on tilatoiminto , joka suorittaa laskutoimituksia, jotka on jaettu seuraaviin lohkoihin:
G 0 ( v 0 , v 4 , v 8 , v 12 ) G 1 ( v 1 , v 5 , v 9 , v 13 ) G 2 ( v 2 , v 6 , v 10 , v 14 ) G 3 ( v 3 ) , v 7 , v 11 , v 15 ) G 4 (v 0 , v 5 , v 10 , v 15 ) G 5 (v 1 , v 6 , v 11 , v 12 ) G 6 (v 2 , v 7 , v 8 , v 13 ) G 7 (v 3 ) , v 4 , v 9 , v 14 )r:nnellä kierroksella laskentalohko toimii seuraavasti:
j ← σ r%10 [2×i] k ← σ r%10 [2×i+1] a ← a + b + (m j ⊕ c k ) d ← (d ⊕ a) >>> 16 c ← c + d b ← (b ⊕ c) >>> 12 a ← a + b + (m k ⊕ c j ) d ← (d ⊕ a) >>> 8 c ← c + d b ← (b ⊕ c) >>> 7Ensimmäiset neljä lohkoa G 0 ,…,G 3 voidaan laskea rinnakkain, koska jokainen muuttaa omaa tilamatriisimuuttujiensa saraketta . Kutsutaan laskentaproseduuria G 0 ,…,G 3 sarakeaskel . Vastaavasti G 4 ,…,G 7 voidaan laskea rinnakkain , mutta ne puolestaan muuttavat tilamatriisin v kutakin diagonaalia . Siksi kutsumme laskentamenettelyä G 4 ,…,G 7 diagonaaliaskel . Mahdollisuus rinnakkaiseen laskentaan G i esitetään graafisesti.
Kierroksilla, joiden luvut r ovat suurempia kuin 9, käytetään permutaatiota σ r%10 , esimerkiksi 13. kierroksella σ 3 .
Kaikkien kierrosten jälkeen ketjumuuttujien h' 0 ,…,h' 7 uusi arvo lasketaan tilamatriisimuuttujista, syöttömuuttujista ja suolasta :
h' 0 ← h 0 ⊕ s 0 ⊕ v 8 h 1 ← h 1 ⊕ s 1 ⊕ v 9 h 2 ← h 2 ⊕ s 2 ⊕ v 10 h 3 ← h 3 31 h s 4 ← h 4 ⊕ s 4 ⊕ v 12 h 5 ← h 5 ⊕ s 5 ⊕ v 13 h 6 ← h 6 ⊕ s 6 ⊕ v 14 h 7 ← h 7 ⊕ sKuvataan prosessi, jossa tiivistetään viesti m , jonka pituus on l<2^64 bittiä. Ensin viesti täytetään 512 bitin (64 tavun ) kerrannaisella täyttötoiminnolla , sitten lohko lohkolta sen käsittelee pakkaustoiminto .
Täytetoiminnossa viesti täytetään ensin biteillä siten, että sen pituus modulo 512 on 447: ensin lisätään 1, sitten tarvittava määrä nollia. Tämän jälkeen lisätään vielä yksi 1- ja 64-bittinen esitys viestin pituudesta l merkittävimmästä bitistä vähiten merkitsevään. Siten viestin pituudesta tulee 512:n kerrannainen [Comm. 1] . Täyte varmistaa, että viestin pituudesta tulee 512 bitin kerrannainen.
Viestin hajautusarvon laskemiseksi täytefunktion tulos jaetaan 16 sanan lohkoihin m 0 ,…,m N-1 . Olkoon L i alkuperäisen viestin bittien lukumäärä lohkoissa m 0 ,…,m i , eli pois lukien ne bitit, jotka on lisätty täyteproseduurissa. Esimerkiksi, jos sanoman pituus on 600 bittiä, niin täytetoimenpiteen jälkeen sen pituus on 1024 bittiä ja se jaetaan kahteen lohkoon: m 0 ja m 1 . Lisäksi L 0 = 512, L 1 = 600. Joissakin tapauksissa viimeinen lohko ei sisällä osaa alkuperäisestä viestistä. Esimerkiksi, jos alkuperäisessä viestissä on 1020 bittiä, niin täytetoimenpiteen tuloksena sen pituus on 1536 bittiä ja m 0 :ssa on 512 bittiä alkuperäisestä viestistä, m 1 - 508 ja m 2 - 0 Aseta L 0 = 512, L 1 = 1020 ja L 2 = 0. Eli sääntö on seuraava: jos viimeisessä lohkossa ei ole alkuperäisen viestin bittejä, aseta laskuri L N-1 arvoon 0. Tämä takaa, että jos i ≠ j , niin L i ≠ L j . Suola-arvo on käyttäjän määrittelemä tai asetettu arvoon 0, jos sitä ei käytetä ( s 0 =s 1 =s 2 =s 3 =0 ). Viestin hash lasketaan seuraavasti:
h 0 ← IV kun i=0,...,N-1 h i+1 ← pakkaa(h i ,m i ,s,l i ) paluu h N .Hajautusprosessi esitetään visuaalisesti vuokaaviossa:
Toiminnon 64-bittisen version algoritmi on identtinen: siirtoarvot ovat vastaavasti 32, 25, 16 ja 11, kierrosten määrä kasvaa 16:een.
BLAKE2 (BLAKE2- verkkosivusto ) on parannettu versio BLAKEsta, joka on yksi SHA-3- hajautustoimintokilpailun viidestä finalistista (pääasiassa parannettu suorituskyky), joka esiteltiin 21. joulukuuta 2012. Kehittäjät: Jean-Philippe Aumasson , Samuel Neves , Zooko Wilcox-O'Hearn ja Christian Winnerlein . Se luotiin vaihtoehtona aiemmin laajalti käytetyille MD5 :lle ja SHA-1 :lle, joissa havaittiin haavoittuvuuksia.
BLAKE2:ssa, toisin kuin BLAKEssa, pyöreäfunktiossa ei lisätä vakioita. Myös siirtovakiot on muutettu, yhteenlaskua on yksinkertaistettu, parametrien lohko on lisätty, joka lisätään alustusvektoreihin. Lisäksi kierrosten määrää on vähennetty 16:sta 12:een BLAKE2b-toiminnolle (analogisesti BLAKE-512:lle) ja 14:stä 10:een BLAKE2:lle (analogisesti BLAKE-256:lle). Tämän seurauksena jaksojen määrä bittiä kohden pieneni 7,49:stä BLAKE-256:lle ja 5,64:stä BLAKE-512:lle 5,34:ään ja 3,32:een Blake2:ssa ja Blake2b:ssä.
Eli Biham ja Orr Dunkelman. Viitekehys iteratiivisille hash-funktioille - HAIFA . - ePrint, 2007. - 207 s.
Hash-funktiot | |
---|---|
yleinen tarkoitus | |
Kryptografinen | |
Avainten luontitoiminnot | |
Tarkista numero ( vertailu ) | |
Hashes |
|