Algoritmo SHA-3

¿Qué es una función hash?

Hoy, la seguridad de la información se ha convertido en una parte integral de cualquier operación digital. El papel clave en la seguridad de la información lo desempeña el concepto de función criptográfica. Las funciones hash criptográficas son una clase dedicada de funciones hash que tienen ciertas propiedades que las hacen adecuadas para su uso en criptografía.





La transformación realizada por la función hash se llama hash. Los datos originales se denominan matriz de entrada, "clave" o "mensaje". El resultado de la transformación (datos de salida) se llama "hash", "código hash", "suma hash".





En otras palabras, una función hash es una técnica computacional que puede asignar un tamaño indefinido de datos a un tamaño fijo de datos. O, más simplemente, la conversión genera un valor numérico que se caracteriza por los datos de entrada. Una función hash criptográfica utiliza funciones matemáticas irreversibles (unidireccionales) para generar un valor hash a partir de la entrada. Una de las formas habituales de generar hashes criptográficos es mediante el uso de cifrados en bloque.





Las funciones hash criptográficamente fiables deben cumplir los siguientes requisitos básicos:





  1. La función hash debe ser una función unidireccional, es decir, a partir de la imagen (hash) es imposible o casi imposible encontrar la preimagen original (mensaje).





  2. La función hash debe ser resistente a colisiones. Una colisión es un par de mensajes originales que tienen el mismo valor de salida. Se cree que el hallazgo relativamente rápido de una colisión en el algoritmo hash hace que dicho algoritmo no sea confiable desde el punto de vista del criptoanálisis.





Pasemos a un análisis detallado de uno de los algoritmos hash más seguros y eficientes de la actualidad.





¿Qué es SHA-3?

SHA-3 , . -, MD5, RIPEMD, SHA-0, SHA-1 SHA-2 .





SHA-3 (Keccak) – , 2012 . 5 2015 FIPS 202. Keccak SHA-3 2012 . [1] Keccak Sponge (), -, — , MD(x).





MD(x) OR, XOR, AND, NOT. , . , MD(x) - , .





— .





- SHA-3 :





1 :

. , , ( ), .





, , , , , Keccak .





b = 25 * 2 ^ lb = estado \ tamaño  valor \ de \ l = \ {0, 1, 2, 3, 4, 5, 6 \} valor \ de \ b = \ {25, 50, 100, 200, 400, 800, 1600 \}





SHA-3 l 6. , , . , "l", , .





rondas = 12 + 2 * l

rondas = 12 + 12 = 24;  como l = 6

24 \ rondas \ en \ total





, SHA-3 1600 , - 24.





, , .





, "r" -.





‘1", "0". " norte " , n \ * \ r . :





p = n * r;

p = longitud \ del \ mensaje \ después de \ padding

n = number\ of\ parts\ in\ which\ we\ divide\ 'p'

r =\ length\ of\ the\ rate





2 :

r ' ' c ' 1600, .





, "r" .(P n r: P0,P1,…,Pn-1)





, , «» (. rate) r, , / , «» (. capacity) c.





: “” “”.





3 :

Pi b (b=r+c) 2 S b. S . — , .





. , SHA-3, «» (XOR), «» (AND) (NOT). - 2. w=2^l(l=6) →w=64 S A 5×5×5.





A[i][j][k] (5i+j)×w+k S





\{θ, ρ, π, χ, ι\} .





A A':





:

i k , 0≤?<5,0≤?<?,





C(i,k) = A[i,0,k]  \oplus A[i,1,k]  \oplus A[i,2,k]  \oplus A[i,3,k]  \oplus A[i,4,k]

D(i, k) = C[(i - 1)\ mod\ 5, k]\ \oplus \ C[(i + 1)\ mod\ 5, (k - 1)\ mod \ w]

(i,j,k) 0≤i<5,0≤j<5,0≤k<W:

A'[i,j,k]=a[i,j,k]\ \oplus \ D[i,k]





:

k, , 0≤k<w:\ A′[0,0,k]=A[0,0,k]

(i,j)=(1,0). t 0 23:





  1. k, 0 ≤k<w, A'[i,j,k]=A[i,j,(k-(t+1)(t+x)/2)\ mod \ w]





  2. (i, j) = (j, (2i+3j)\ mod \ 5)





:

(i,j,k), , 0≤i<5,0≤j<5,0≤k<w:\ A′[i,j,k]=A[(i+3j)\ mod\ 5,i,k]





:

(i,j,k), , 0≤i<5,0≤j<5,





A'[i,j,k]=A[i,j,k]\ \oplus\ ((A[(i+1)\ mod\ 5, j, k]\oplus1)\ *\ A[(i+2)\ mod\ 5,j,k])





:

rc(t), - t





rc(t) :





  1. t\ mod\ 255=0, 1





  2. R=[10000000]





  3. t 1 255:





    1. R = 0\ ||\ R





    2. R[0]=R[0]\ \oplus\ R[8]





    3. R[4]=R[4]\ \oplus\ R[8]





    4. R[5] =R[5]\ \oplus\ R[8]





    5. R [6] = R [6] \ \ oplus \ R [8]





    6. R = Trunc_8 [R]





  4. R [0]





:

i_r-





  1. (yo, j, k), , 0≤i <5, 0≤j <5, 0≤l <w: \ A '[i, j, k] = A [i, j, k]





  2. RC- w,





  3. yo 0 l: RC [2 ^ i-1] = rc (i + 7i_r)





  4. UN ' S ' segundo





:

  1. S UN





  2. i_r 12 + 2l-n_r 12 + 2l-1: \ A '= ι (χ (π (ρ (θ (A)))), i_r)





  3. UN ' S ' segundo





4 :





re( re— -), r S S . re .





re





SHA-3

- Keccak SHA-3 2008 [5]. 2012 Keccak SHA-3. SHA-3 - c (XOFs) SHAKE128 SHAKE256, Keccak.





Keccak, , . Keccak- Keccak -224 KECCAK -256, 4 , Dinur l.[3] 2012 [4]. 5- KECCAK -256. 4. Keccak, Keccak challenge [6] . 160 80 4 (state size 1 ) , 12 .. l 0 1 . 2^80 . , 4 SHA-3, . Dinur l. KECCAK -256 2 ^ {115} . , SHA-3, 5 .





32 AMD. [2]





Keccak, χ F. SHA-3 , , 2 ^ 2 - . ≤r-2 , (r - 1)- 1,





, , . , , 4, χ .





( ) χ Keccak. , r - 1 Keccak-f ( ).





c = br , , “” r - 1. .





, . .





, Sbox . , .





SHAKE128 (M, x)- SHA-3, Keccak [r = 1344, c = 256], X(SHA3-X 1) SHAKE128 (M, 128), SHAKE128 .





[7]





a [i, j] yo=0,2 j=0,1,2,3 , , . 10. A [0, 4] , METRO . - . , , :





[7]





6×64 , , 2 ^ {128}. , , 128- -.





64 , 0,75 ^ {64} = 2 ^ {- 26,6}. 2 ^ {26,6} , A [0,4]. , 2 ^ {26,6}





En general, los resultados de la búsqueda de colisiones y el ataque de preimagen descrito muestran que hoy en día el algoritmo SHA-3 / Keccak es uno de los algoritmos hash más seguros y eficientes. Algunos argumentan que no será pirateado en los próximos 20 a 30 años. El avance en el mundo de la computación cuántica puede acortar este período de tiempo, pero hasta ahora este algoritmo sigue siendo uno de los mejores algoritmos de hash que tiene la humanidad en este momento.












All Articles