Hash-Funktionen basierend auf zellularen Automaten

Eine Hash-Funktion ist eine Funktion, die eine beliebige LĂ€nge von Eingabedaten in eine Bitfolge fester LĂ€nge konvertiert. Hash-Funktionen spielen in der modernen Kryptographie eine wichtige Rolle. Technologische Fortschritte, neue Anforderungen an Sicherheit und RechenkomplexitĂ€t zeichnen sich ab. Die SHA-Familie von Algorithmen ist in vielen Bereichen nach wie vor fĂŒhrend unter den Hashing-Algorithmen. Es gibt jedoch auch eine andere Familie von Algorithmen, die auf zellularen Automaten basieren und die Aufmerksamkeit aller verdienen.





ZellulÀre Automaten

Der zellulare Automat ist eine ziemlich hĂ€ufige Sache, die einen separaten Beitrag verdient . Kurz gesagt handelt es sich jedoch um ein diskretes Modell, bei dem es sich um ein Gitter beliebiger Dimensionen handelt, von denen jede Zelle zu jedem Zeitpunkt einen endlichen Satz von ZustĂ€nden annehmen kann, und die Regel fĂŒr den Übergang von Zellen von einem Zustand in einen anderen bestimmt wird.





Bei elementaren zellulÀren Automaten haben die Gitter von Zellen eine eindimensionale Dimension.





In einem zellularen Automaten gibt es fĂŒr jede Zelle eine Reihe anderer Zellen, die als Nachbarschaft bezeichnet werden und den nĂ€chsten Zustand der Zelle bestimmen. Der Anfangszustand ist der Zustand, in dem die Zellenwerte und ihre Nachbarschaften zum Zeitpunkt t bestimmt werden. Jetzt wird eine neue Generation von Zellen erstellt, wenn "t" um 1 erhöht wird.





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 :





    GrĂ¶ĂŸe (c) \ text {mod} 512 = 0 \ text {und} GrĂ¶ĂŸe (c)> = 512





    .





    C..





  2. k.





    GrĂ¶ĂŸe (k) \ text {mod} 512 = 0 \ text {und} GrĂ¶ĂŸe (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 ein





  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} \, Regel \, 30 (\ text {ROTL} ^ {37} (y ')) \ text {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) = (Regel 134 (Regel 30 (x ')) \ Text {ODER} y) \ Text {XOR} (Regel 30 (z') \ Text {UND} x)





  4.  d = F (a, c)





      F (x, y) = Regel 30 (x) \ text {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 {Rule134} (\ text {Rule30} (\ 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 — .





. :





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





30 , - . . , .





:








All Articles