Funções de hash baseadas em autômatos celulares

Uma função hash é uma função que converte um comprimento arbitrário de dados de entrada em uma sequência de bits de comprimento fixo. As funções de hash desempenham um papel importante na criptografia moderna. Avanços tecnológicos, novos requisitos de segurança e complexidade computacional estão surgindo. A família de algoritmos SHA permanece líder entre os algoritmos de hash em muitas áreas, mas há outra família de algoritmos baseada em autômatos celulares que merece a atenção de todos.





Autômatos celulares

O autômato celular é algo bastante comum que merece uma postagem separada . No entanto, em poucas palavras, este é um modelo discreto, que é uma grade de dimensões arbitrárias, cada célula da qual em cada momento pode assumir um de um conjunto finito de estados, e a regra para a transição das células de um estado para outro é determinada.





No caso de autômatos celulares elementares, as grades de células têm uma dimensão unidimensional.





Em um autômato celular, para cada célula, há um conjunto de outras células, chamadas de vizinhança, que determinam o próximo estado da célula. O estado inicial é o estado no qual os valores da célula e suas vizinhanças são determinados no tempo t. Agora, uma nova geração de células é criada quando "t" é incrementado em 1.





30, :





C ^ {t + 1} _s = C ^ t_ {s-1} \ XOR \ (C ^ t_s \ OR \ C ^ t_ {s + 1})

:





  • , .





  • ( ).





  • .





.









?

c k, : 128, 192 256 .





  1. c :





    tamanho (c) \ texto {mod} 512 = 0 \ texto {e} tamanho (c)> = 512





    .





    C.





  2. k.





    tamanho (k) \ text {mod} 512 = 0 \ text {e} tamanho (k)> = 512





    k





  3. C 512 .





  4. 512 , 8 64 .





  5. 512 30.





  6. 5 512 ().





  7.   XOR 5 512 .





  8.   , 1.





  9.   6, 7 8 , 512 , .





, .





, .





64 .





  1.  a = e





    , e uma





  2.  b = J (g, h, K_1)  b = J (g, h, K_5)





    ,  a = J (g, h, K_1)  a = J (g, h, K_5)





     J (x, y, z) = ((\ text {ROTL} ^ {47} (x) \ text {XOR} \, Regra \, 30 (\ text {ROTL} ^ {37} (y ')) \ texto {AND} ((\ text {ROTR} ^ {17} (z)))





  3.  c = G (e, f, K_2)  c = G (e, f, K_6)





      ,  c = G (e, f, K_2)  c = G (e, f, K_6)





     G (x, y, z) = (Regra134 (Regra 30 (x ')) \ texto {OU} y) \ texto {XOR} (Regra 30 (z') \ texto {E} x)





  4.  d = F (a, c)





      F (x, y) = Regra 30 (x) \ texto {XOR} y '





  5.  e = J (a, d, K_4)  e = J (a, d, K_8)





      ,  e = J (a, d, K_4)  e = J (a, d, K_8)





      J 1.





  6.  f = H (b, d)





     H (x, y) = \ text {ROTL} ^ {17} (x) \ text {XOR} \ text {ROTL} ^ {59} (y)





  7.  g = I (c, f)





     I (x, y) = \ text {ROTL} ^ {41} (x ') \ text {XOR} \ text {Regra134} (\ text {Regra30} (\ text {ROTL} ^ {31} (y') ))





  8.  h = H (a, K_3)  h = H (a, K_7)





      ,  h = H (a, K_3) h = H (c, K_7)





      H 4.





ROTL — , ROTR — .





. :





 rodadas = '1' (512 ) + '0' (512 )  mod 512 .





30 , - . . , .





:








All Articles