SHA-3

De testwiki
La revisió el 14:27, 30 set 2024 per imported>EVA3.0 (bot) (Bot elimina espais sobrants)
(dif.) ← Versió més antiga | Versió actual (dif.) | Versió més nova → (dif.)
Salta a la navegació Salta a la cerca

Plantilla:TCP/IPSHA-3 (Secure Hash Algorithm 3) és l'últim membre de la família d'estàndards Secure Hash Algorithm, publicat pel NIST el 5 d'agost de 2015.[1][2][3] Encara que forma part de la mateixa sèrie d'estàndards, SHA-3 és internament diferent de l'estructura semblant a MD5 de SHA-1 i SHA-2.

SHA-3 és un subconjunt de la família primitiva criptogràfica més àmplia Keccak (Plantilla:IPAc-en o Plantilla:IPAc-en),[4][5] dissenyada per Guido Bertoni, Joan Daemen, Michaël Peeters, i Gilles Van Assche, basat en RadioGatún. Els autors de Keccak han proposat usos addicionals per a la funció, no (encara) estandarditzats pel NIST, incloent un xifrat de flux, un sistema de xifratge autenticat, un esquema de hash "arbre" per a un hash més ràpid en determinades arquitectures,[6][7] i xifratge AEAD. Keyak i Ketje.[8][9]

Keccak es basa en un nou enfocament anomenat construcció d'esponges.[10] La construcció de l'esponja es basa en una funció aleatòria àmplia o permutació aleatòria, i permet introduir ("absorbir" en terminologia de l'esponja) qualsevol quantitat de dades i emetre ("prémer") qualsevol quantitat de dades, alhora que actua com una funció pseudoaleatoria pel que fa a totes les entrades anteriors. Això comporta una gran flexibilitat.

Actualment, el NIST no té previst retirar SHA-2 ni eliminar-lo de l'estàndard Secure Hash revisat. L'objectiu de SHA-3 és que es pugui substituir directament per SHA-2 a les aplicacions actuals si cal, i millorar significativament la robustesa del conjunt d'eines d'algorisme hash del NIST.[11]

Per a mides de missatges petites, els creadors dels algorismes Keccak i de les funcions SHA-3 suggereixen utilitzar la funció més ràpida KangarooTwelve amb paràmetres ajustats i un nou mode hashing d'arbre sense sobrecàrrega addicional.

Història

L'algoritme de Keccak és obra de Guido Bertoni, Joan Daemen (que també va dissenyar conjuntament el xifrat de Rijndael amb Vincent Rijmen), Michaël Peeters i Gilles Van Assche. Es basa en dissenys anteriors de funcions hash PANAMA i RadioGatún. PANAMA va ser dissenyat per Daemen i Craig Clapp el 1998. RadioGatún, successor de PANAMÀ, va ser dissenyat per Daemen, Peeters i Van Assche, i es va presentar al NIST Hash Workshop el 2006.[12] El codi font de la implementació de referència es va dedicar al domini públic mitjançant l'exempció CC0.

Illustration of the sponge construction
La construcció d'esponja per a funcions hash. P i són d'entrada, Z i són de sortida hash. La "capacitat" c no utilitzada hauria de ser el doble de la resistència desitjada als atacs de col·lisió o preimatge.

L'any 2006, el NIST va començar a organitzar el concurs de funcions hash NIST per crear un nou estàndard hash, SHA-3. SHA-3 no està pensat per substituir SHA-2, ja que no s'ha demostrat cap atac significatiu a SHA-2. A causa dels atacs reeixits a MD5, SHA-0 i SHA-1,[13][14] NIST va percebre la necessitat d'un hash criptogràfic alternatiu i diferent, que es va convertir en SHA-3.

Disseny

SHA-3 utilitza la construcció d'esponja,[15] en la qual les dades s'"absorbeixen" a l'esponja, i després el resultat s'"esprem". En la fase d'absorció, els blocs de missatges es transformen XOR en un subconjunt de l'estat, que després es transforma com un tot mitjançant una funció de permutació. f. (Trucant f una permutació pot ser confusa. Tècnicament és una permutació de l'espai d'estats, per tant una permutació d'un conjunt amb 216004.410481 elements, però fa més que només permutar els bits del vector d'estat). En la fase de "estrenyir", els blocs de sortida es llegeixen del mateix subconjunt de l'estat, alternats amb la funció de transformació d'estat f. La mida de la part de l'estat que s'escriu i llegeix s'anomena "taxa" (indicada r), i la mida de la part que no es toca per l'entrada/sortida s'anomena "capacitat" (indicada c). La capacitat determina la seguretat de l'esquema. El nivell de seguretat màxim és la meitat de l'aforament.

Acceleració de maquinari

Els nuclis de CPU SoC de sis nuclis Apple A13 ARMv8 tenen suport [16] per accelerar SHA-3 (i SHA-512) mitjançant instruccions especialitzades (EOR3, RAX1, XAR, BCAX) del conjunt d'extensió criptogràfica ARMv8.2-SHA.[17]

Algunes biblioteques de programari utilitzen instal·lacions de vectorització de CPU per accelerar l'ús de SHA-3. Per exemple, Crypto++ pot utilitzar SSE2 a x86 per accelerar SHA3,[18] i OpenSSL també pot utilitzar MMX, AVX-512 o AVX-512VL en molts sistemes x86.[19] També les CPU POWER8 implementen una rotació vectorial de 2x64 bits, definida a PowerISA 2.07, que pot accelerar les implementacions SHA-3.[20] La majoria de les implementacions per a ARM no utilitzen instruccions vectorials Neon, ja que el codi escalar és més ràpid. Tanmateix, les implementacions ARM es poden accelerar utilitzant instruccions vectorials SVE i SVE2; aquests estan disponibles a la CPU Fujitsu A64FX, per exemple.[21]

L'IBM z/Architecture admet SHA-3 des del 2017 com a part de l'extensió Message-Security-Assist 6. Els processadors admeten una implementació completa de tots els algorismes SHA-3 i SHAKE mitjançant les instruccions KIMD i KLMD mitjançant un motor d'assistència de maquinari integrat a cada nucli.

Referències

Plantilla:Referències