BLAKE és una funció hash criptogràfica basada en el xifratge de flux ChaCha de Daniel J. Bernstein, però s'afegeix una còpia permutada del bloc d'entrada, aplicada a una XOR amb constants d'arrodoniment, abans de cada ronda ChaCha. Igual que SHA-2, hi ha dues variants que difereixen en la mida de la paraula. ChaCha opera amb una matriu de paraules de 4×4. BLAKE combina repetidament un valor hash de 8 paraules amb 16 paraules de missatge, truncant el resultat ChaCha per obtenir el següent valor hash. BLAKE-256 i BLAKE-224 utilitzen paraules de 32 bits i produeixen mides de resum de 256 bits i 224 bits, respectivament, mentre que BLAKE-512 i BLAKE-384 utilitzen paraules de 64 bits i produeixen mides de resum de 512 bits i 384 bits, respectivament.

La funció hash BLAKE2, basada en BLAKE, es va anunciar el 2012. La funció hash BLAKE3, basada en BLAKE2, es va anunciar el 2020.

Història BLAKE va ser presentat al concurs de funcions hash del NIST per Jean-Philippe Aumasson, Luca Henzen, Willi Meier i Raphael C.-W. Phan. El 2008 hi va haver 51 entrades. BLAKE va arribar a la ronda final, formada per cinc candidats, però va perdre contra Keccak el 2012, que va ser seleccionat per l'algoritme SHA-3.

Algoritme Igual que SHA-2, BLAKE ve en dues variants: una que utilitza paraules de 32 bits, utilitzada per calcular hashes de fins a 256 bits de llargada, i una que utilitza paraules de 64 bits, utilitzada per calcular hashes de fins a 512 bits de llargada. La transformació del bloc principal combina 16 paraules d'entrada amb 16 variables de treball, però només es conserven 8 paraules (256 o 512 bits) entre blocs.

Utilitza una taula de 16 paraules constants (els 512 o 1024 bits principals de la part fraccionària de π) i una taula de 10 permutacions de 16 elements:

σ = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 13

σ = 14 10 4 8 9 15 13 6 1 12 0 2 11 7 5 3

σ = 11 8 12 0 5 2 15 13 10 14 3 6 7 1 9 4

σ = 7 9 3 1 13 12 11 14 2 6 5 10 4 0 15 8

σ = 9 0 5 7 2 4 10 15 14 1 11 12 6 8 3 13

σ = 2 12 6 10 0 11 8 3 4 13 7 5 15 14 1 9

σ = 12 5 1 15 14 13 4 10 0 7 6 3 9 2 8 11

σ = 13 11 7 14 12 1 3 9 5 0 15 4 8 6 2 10

σ = 6 15 14 9 11 3 0 8 12 2 13 7 1 4 10 5

σ = 10 2 8 4 7 6 1 5 15 11 9 14 3 12 13 0

L'operació principal, equivalent al quart de ronda de ChaCha, opera sobre una columna o diagonal abcd de 4 paraules, que es combina amb 2 paraules del missatge m[] i dues paraules constants n[]. Es realitza 8 vegades per ronda completa:

j ← σ[r%10][2×i] // Càlculs d'índex

k ← σ[r%10][2×i+1]

a ← a + b + (m[j] ⊕ n[k]) // Pas 1 (amb entrada)

d ← (d ⊕ a) >>> 16

c ← c + d // Pas 2 (sense entrada)

b ← (b ⊕ c) >>> 12

a ← a + b + (m[k] ⊕ n[j]) // Pas 3 (amb entrada)

d ← (d ⊕ a) >>> 8

c ← c + d // Pas 4 (sense entrada)

b ← (b ⊕ c) >>> 7

En l'anterior, r és el nombre rodó (0–13) i i varia de 0 a 7.

Les diferències respecte a la funció de quart de ronda ChaCha són:

S'ha afegit l'addició de les paraules del missatge. Els sentits de rotació s'han invertit.

"BLAKE reutilitza la permutació del xifratge de flux ChaCha amb rotacions fetes en direccions oposades. Alguns han sospitat una optimització avançada, però en realitat s'origina a partir d'un error tipogràfic a les especificacions originals de BLAKE", explica Jean-Philippe Aumasson al seu "Crypto Dictionary".

La versió de 64 bits (que no existeix a ChaCha) és idèntica, però les quantitats de rotació són 32, 25, 16 i 11, respectivament, i el nombre de rondes s'augmenta a 16.

Ajustos Al llarg de la competició de funcions hash del NIST, els participants poden "ajustar" els seus algoritmes per solucionar els problemes que es descobreixin. Els canvis que s'han fet a BLAKE són: el nombre de rondes s'ha augmentat de 10/14 a 14/16. Això és per ser més conservadors pel que fa a la seguretat i, alhora, ser ràpids.

BLAKE2 BLAKE2 és una funció hash criptogràfica basada en BLAKE, creada per Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn i Christian Winnerlein. L'objectiu del disseny era substituir els algoritmes MD5 i SHA-1, àmpliament utilitzats però trencats, en aplicacions que requerien un alt rendiment en programari. BLAKE2 es va anunciar el 21 de desembre de 2012. Hi ha disponible una implementació de referència sota CC0, la llicència OpenSSL i la llicència Apache 2.0.

BLAKE2b és més ràpid que MD5, SHA-1, SHA-2 i SHA-3, en arquitectures x86-64 i ARM de 64 bits. BLAKE2 proporciona una millor seguretat que SHA-2 i similar a la de SHA-3: immunitat a l'extensió de longitud, indiferenciabilitat davant d'un oracle aleatori, etc.

BLAKE2 elimina l'addició de constants a les paraules del missatge de la funció d'arrodoniment BLAKE, canvia dues constants de rotació, simplifica el farciment, afegeix un bloc de paràmetres que s'utilitza per XOR amb vectors d'inicialització i redueix el nombre d'arrodoniments de 16 a 12 per a BLAKE2b (successor de BLAKE-512) i de 14 a 10 per a BLAKE2s (successor de BLAKE-256).

BLAKE2 admet els modes de keying, salting, personalització i hash tree, i pot generar resums d'1 a 64 bytes per a BLAKE2b o fins a 32 bytes per a BLAKE2s. També hi ha versions paral·leles dissenyades per augmentar el rendiment en processadors multinucli; BLAKE2bp (paral·lel de 4 vies) i BLAKE2sp (paral·lel de 8 vies).

BLAKE2X és una família de funcions de sortida extensible (XOF). Mentre que BLAKE2 està limitat a digests de 64 bytes, BLAKE2X permet digests de fins a 256 GiB. BLAKE2X no és en si mateix una instància d'una funció hash i ha d'estar basat en una instància real de BLAKE2. Un exemple d'una instància de BLAKE2X podria ser BLAKE2Xb16MiB, que seria una versió de BLAKE2X basada en BLAKE2b que produeix resums de 16.777.216 bytes (o exactament 16 MiB, d'aquí el nom d'aquesta instància).

BLAKE2b i BLAKE2s s'especifiquen a RFC 7693. No s'especifiquen les funcions opcionals que utilitzen el bloc de paràmetres (salting, hashes personalitzats, tree hashing, etc.), i per tant tampoc hi ha compatibilitat amb BLAKE2bp, BLAKE2sp o BLAKE2X.

BLAKE3 BLAKE3 és una funció hash criptogràfica basada en Bao i BLAKE2, creada per Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves i Zooko Wilcox-O'Hearn. Es va anunciar el 9 de gener de 2020 a Real World Crypto.

BLAKE3 és un únic algorisme amb moltes característiques desitjables (paral·lelisme, XOF, KDF, PRF i MAC), a diferència de BLAKE i BLAKE2, que són famílies d'algoritmes amb múltiples variants. BLAKE3 té una estructura d'arbre binari, de manera que admet un grau pràcticament il·limitat de paral·lelisme (tant SIMD com multithreading) amb una entrada prou llarga. Les implementacions oficials de Rust i C tenen doble llicència, com a domini públic (CC0) i llicència Apache.

BLAKE3 està dissenyat per ser el més ràpid possible. És constantment unes quantes vegades més ràpid que BLAKE2. La funció de compressió de BLAKE3 està estretament basada en la de BLAKE2, amb la diferència més gran que el nombre de rondes es redueix de 10 a 7, un canvi basat en la suposició que la criptografia actual és massa conservadora. A més de proporcionar paral·lelisme, el format d'arbre de Merkle també permet la transmissió verificada (verificació sobre la marxa) i les actualitzacions incrementals.

Referències

Categoria:Criptografia