Algoritmo SHA-3

O que é uma função hash?

A segurança da informação agora se tornou parte integrante de qualquer operação digital. O papel principal na segurança da informação é desempenhado pelo conceito de função criptográfica. As funções hash criptográficas são uma classe dedicada de funções hash que possuem certas propriedades que as tornam adequadas para uso em criptografia.





A transformação realizada pela função hash é chamada de hashing. Os dados originais são chamados de array de entrada, "chave" ou "mensagem". O resultado da transformação (dados de saída) é denominado "hash", "código hash", "soma hash".





Em outras palavras, uma função hash é uma técnica computacional que pode mapear um tamanho indefinido de dados para um tamanho fixo de dados. Ou, mais simplesmente, a conversão gera um valor numérico que é caracterizado pelos dados de entrada. Uma função hash criptográfica usa funções matemáticas irreversíveis (unidirecionais) para gerar um valor hash a partir da entrada. Uma das maneiras comuns de gerar hashes criptográficos é usando cifras de bloco.





As funções hash criptograficamente confiáveis ​​devem atender aos seguintes requisitos básicos:





  1. A função hash deve ser unilateral, ou seja, pela imagem (hash) é impossível ou quase impossível encontrar a pré-imagem original (mensagem).





  2. A função de hashing deve ser resistente a colisões. Uma colisão é um par de mensagens originais com o mesmo valor de saída. Acredita-se que a descoberta relativamente rápida de uma colisão em um algoritmo de hashing torna esse algoritmo não confiável do ponto de vista da criptoanálise.





Vamos prosseguir para uma análise detalhada de um dos algoritmos de hash mais seguros e eficientes da atualidade.





O que é SHA-3?

SHA-3 é um algoritmo criptográfico essencial para garantir a segurança das informações, bem como a integridade dos dados em transações digitais. Algoritmos hash seguros recentes, incluindo MD5, RIPEMD, SHA-0, SHA-1 e SHA-2, foram preteridos e foram considerados suscetíveis a ataques de vários tipos.





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 \ tamanho  valor \ de \ l = \ {0, 1, 2, 3, 4, 5, 6 \} valor \ de \ b = \ {25, 50, 100, 200, 400, 800, 1600 \}





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





rodadas = 12 + 2 * l

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

24 \ rodadas \ em \ total





, SHA-3 1600 , - 24.





, , .





, "r" -.





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





p = n * r;

p = comprimento \ da \ mensagem \ após \ preenchimento

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. (i, j, k), , 0≤i <5, 0≤j <5, 0≤l <w: \ A '[i, j, k] = A [i, j, k]





  2. RC- W,





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





  4. UMA ' S ' b





:

  1. S UMA





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





  3. UMA ' S ' b





4 :





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





d





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 .. eu 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] Eu=0,2 j=0,1,2,3 , , . 10. A [0, 4] , M . - . , , :





[7]





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





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





Em geral, os resultados da pesquisa de colisão e o ataque de pré-imagem descrito mostram que hoje o algoritmo SHA-3 / Keccak é um dos algoritmos de hash mais seguros e eficientes. Alguns argumentam que ele não será hackeado nos próximos 20-30 anos. O avanço no mundo da computação quântica pode encurtar esse intervalo de tempo, mas até agora esse algoritmo ainda é um dos melhores algoritmos de hash que a humanidade tem no momento.












All Articles