BLAKE en BLAKE2 zijn cryptografische hash-functies gebaseerd op een idee van Dan Bernstein. Hij bedacht de ChaCha Stream Cipher. Net als SHA-2 zijn er twee varianten die verschillen in de woordgrootte. ChaCha werkt op een 4 x 4 reeks woorden. BLAKE combineert herhaaldelijk een 8 woorden hash-waarde met 16 berichtwoorden, waarbij het ChaCha-resultaat wordt afgekapt om de volgende hash-waarde te verkrijgen. BLAKE-256 en BLAKE-224 gebruiken woorden van 32 bits en produceren samenvattingsgrootten van respectievelijk 256 bits en 224 bits. BLAKE-512 en BLAKE-384 gebruiken 64-bit woorden en produceren samenvattingsgrootten van respectievelijk 512 bits en 384 bits.
BLAKE2b is sneller dan SHA-3, SHA-2, SHA-2 en MD5 op 64-bits x64 en ARM architecturen. BLAKE2 biedt een beveiliging die superieur is aan SHA-2 en vergelijkbaar is met die van SHA-3.
Geschiedenis van BLAKE algoritmes
BLAKE werd ontworpen aan de NIST hash-functiecompetitie door Jean-Philippe Aumasson, Luca Henzen, Willi Meier en Raphael C.-W. Phan. In 2008 waren er 51 inzendingen. BLAKE bereikte de laatste ronde bestaande uit vijf kandidaten maar verloor in 2012 van Keccak.
Het algoritme
Net als SHA-2 is BLAKE er in twee varianten: een die 32 bits woorden gebruikt, gebruikt voor het berekenen van hashes tot 256 bits lang en een die 64-bits woorden gebruikt, gebruikt voor het berekenen van hashes tot 512 bits lang. De kernbloktransformatie combineert 16 invoerwoorden met 16 werkvariabelen, maar slechts 8 woorden worden tussen blokken bewaard. Het gebruikt een tabel met 16 constante woorden en een tabel met 10 16-element permutaties.
σ [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 0
De kernbewerking werkt op een kolom of diagonaal van 4 woorden, die wordt gecombineerd met 2 woorden bericht m[] en twee constante woorden n[]. Het wordt 8 keer per volledige ronde uitvoert.
j ← σ [r% 10] [2 × i] // Indexberekeningen
k ← σ [r% 10] [2 × i + 1]
a ← a + b + (m [j] ⊕ n [k]) // Stap 1 (met invoer)
d ← (d ⊕ a) >>> 16
c ← c + d // Stap 2 (geen invoer)
b ← (b ⊕ c) >>> 12
a ← a + b + (m [k] ⊕ n [j]) // Stap 3 (met invoer)
d ← (d ⊕ a) >>> 8
c ← c + d // Stap 4 (geen invoer)
b ← (b ⊕ c) >>> 7
In het bovenstaande r is het ronde getal (0-13) en i varieert van 0 tot 7.
De verschillen met de ChaCha kwartronde functie
- De toevoeging van de berichtwoorden is toegevoegd.
- De draairichtingen zijn omgekeerd.
De 64-bits versie (die niet bestaat in ChaCha) is identiek, maar de rotatiebedragen zijn respectievelijk 32, 25, 16 en 11 en het aantal ronden is verhoogd tot 16.
Blake coins
- TrumpCoin
- BlakeCoin
- Netko
- SecureCoin
- Vcash
Blake256 coins
Blake2b Coins
- Siacoin
- SpaceCoin
- RaiBlocks
Blake256r8 coins
Blake256r14 coins