RC6. Du simple au complexe

Dans cet article, vous apprendrez

  • Qui est votre chiffrement par bloc.





  • À quels principes les crĂ©ateurs de l'algorithme ont-ils adhĂ©rĂ©?





  • À quoi ressemble le processus de prĂ©paration des clĂ©s?





  • Algorithme de travail.





  • Et qu'est-ce que RC5 a Ă  voir avec cela?





Introduction Ă  RC6.

RC6 ( Rivest's Cipher 6 ) est un chiffrement par blocs symétriques basé sur le réseau Festel , développé par Ronald Rivest en 1998.





Tout d'abord, voyons la terminologie:





Que signifie symétrique?

Il existe deux types de chiffrement personnes :





  1. Symétrique (ce dont nous avons besoin)





  2. Asymétrique (une autre fois, frérot)





Dans le cryptage symĂ©trique , la mĂȘme clĂ© est utilisĂ©e pour crypter et dĂ©crypter les donnĂ©es . Cela doit ĂȘtre gardĂ© secret . Ceux. ni l'expĂ©diteur ni le destinataire ne doivent le montrer Ă  qui que ce soit. Sinon, vos donnĂ©es peuvent ĂȘtre interceptĂ©es / modifiĂ©es ou pire encore.





Algorithmes de chiffrement symétriques:





AES (norme de cryptage avancée)





3DES (algorithme de cryptage triple des données)





RC4, RC5, RC6 (chiffre Rivest)





Dans le cryptage asymĂ©trique utilise deux clĂ©s: publique et privĂ©e. D'aprĂšs les noms, il est clair que la clĂ© publique peut ĂȘtre librement transfĂ©rĂ©e via les canaux de communication, mais la clĂ© privĂ©e doit ĂȘtre gardĂ©e secrĂšte.





:





RSA (Rivest-Shamir-Adleman)





DSA (Digital Signature Algorithm), DSS (Digital Signature Standard)





Diffie-Hellman





?

- . , : , .





, : .





, ?

. . . - .





. ,   .





:





  •  â€” .





  • R_0 F (R_0, K_0).





  • 2 ( xor) L_0.





  • .





  • ( ) .





() .K_i ~ - je- ( ).





, .





. , , ,    .





:





, , .





RC6 - . , , . w:





, , w ~ - . , RC6 - . 4 A, B, C, D w ~ -. w = 32. 4 \ fois 32 = 128.





w , . :





  • w ~ - . u = w / 8 . 4w ~ - (.. 4 ).





  • r ~ - . S t = (2r + 4) ( ). 0 \ leq r \ leq 255.





  • b ~ - K.





  • K ~ - b : K [0], K [1], ..., K [b-1].





, RC6 / w / r / b .





:





w :





P_w \ leftarrow Odd ((e-2) 2 ^ w) \\ Q_w \ leftarrow Odd ((\ phi-1) 2 ^ w)

e = 2,71828 ...(), \ phi = 1,61803 ... ( ). Impair (\ cdot) ~ - .





, w = 32, :





P32 = 10110111111000010101010101011 = b7e15163 \\ Q32 = 10011110001101110110110111001 = 9e3779b9

. :





1 .

K [0 ... b-1] L [0 ... s-1], c = b / u , u = w / 8- .   b avec 8, L :





#  x<<<y -    

c = [max(b, 1) / u]
for b - 1 downto 0 do
	L[i/u] = (L[i/u]<<<8) + K[i]
      
      



2 .

S . , :





S[0] = P_w

for i = 1 to 2r + 3 do
	S[i] = S[i - 1] + Q_w
      
      



3 .

, , :





# :    b ,   
#			 	L[0,...,c-1]
#				  r

# : w-   S[0,...,2r+3]
  
A = B = i = j = 0

v = 3 * max(c, 2r + 4)
for s = 1 to v do
{
	A = S[i] = (S[i] + A + B)<<<3
  B = L[j] = (L[j] + A + B)<<<(A + B)
  i = (i + 1)mod(2r + 4)
  j = (j + 1)mod(c)
}
      
      



, RC6. , , -RC5. , RC6:





RC5

RC5 - , 1994 . RC6 - , . - .





, :





  • RC5 . .. () , .





  • RC5 , .





  • RC5 . , 64- , RC5 .





  • RC5 . .. , .





  • RC5 . .





  • RC5 . .





  • RC5 .





  • , -RC5 .





RC5 , RC6. . C RC5:









:





A = A + S[0]
B = B + S[1]
for i = 1 to r do 
  A = ((A xor B)<<<B) + S[2i]
  B = ((B xor A)<<<A) + S[2i + 1]
      
      



, RC5 .





RC5 RC6

RC5 :

















, RC6.









-( ) RC5:





for i = 1 to r do 
{
  A = ((A xor B)<<<B) + S[2i]
  (A, B) = (B, A)
}
      
      



RC5. A B, C D:





for i = 1 to r do 
{
  A = ((A xor B)<<<B) + S[2i]
  C = ((C xor D)<<<D) + S[2i + 1]
  (A, B) = (B, A)
  (C, D) = (D, C)
}
      
      



, A B C D, (A, B, C, D) = (B, C, D, A). AB CD:





for i = 1 to r do 
{
  A = ((A xor B)<<<B) + S[2i]
  C = ((C xor D)<<<D) + S[2i + 1]
  (A, B, C, D) = (B, A, D, C)
}
      
      



AB CD :





for i = 1 to r do 
{
  A = ((A xor B)<<<D) + S[2i]
  C = ((C xor D)<<<B) + S[2i + 1]
  (A, B, C, D) = (B, A, D, C)
}
      
      



, B D, , . , , .





- f (x) = x (2x + 1) (mod ~ 2 ^ w), :





for i = 1 to r do
{
	t = (B * (2B + 1))<<<5
  u = (D * (2D + 1))<<<5
  A = ((A xor t)<<<u) + S[2i]
  C = ((C xor u)<<<t) + S[2i + 1]
  (A, B, C, D) = (B, C, D, A)
}
      
      



, , ( , pre- post-whitening):





B = B + S[0]
D = D + S[1]
for i = 1 to r do
{
	t = (B * (2B + 1))<<<5
  u = (D * (2D + 1))<<<5
  A = ((A xor t)<<<u) + S[2i]
  C = ((C xor u)<<<t) + S[2i + 1]
  (A, B, C, D) = (B, C, D, A)
}
A = A + S[2r + 2]
C = C + S[2r + 3]
      
      



, , , :





, RC6 w ~ - A, B, C, D. , . A, D. :





# :    4- w-  A, B, C, D
#				  r
#				w-   S[0,...,2r+3]

# : ,   A, B, C, D

B = B + S[0]
D = D + S[1]
for i = 1 to r do
{
	t = (B * (2B + 1))<<<lg(w)
  u = (D * (2D + 1))<<<lg(w)
  A = ((A xor t)<<<u) + S[2i]
  C = ((C xor u)<<<t) + S[2i + 1]
  (A, B, C, D) = (B, C, D, A)
}
A = A + S[2r + 2]
C = C + S[2r + 3]

# (A, B, C, D) = (B, C, D, A)    .
      
      



RC6 :





:





# :    4- w-  A, B, C, D
#				  r
#				w-   S[0,...,2r+3]

# :  ,   A, B, C, D

C = C - S[2r + 3]
A = A - S[2r +2]

for i = r downto 1 do
{
	(A, B, C, D) = (D, A, B, C)
  u = (D * (2D + 1))<<<lg(w)
  t = (B * (2B + 1)) << lg(w)
  C = ((C - S[2i + 1)>>>t) xor u
  A = ((A - S[2i])>>>u) xor t
}
D = D - S[1]
B = B - S[0]
      
      



?

RC6-128/20/b . r <20





, R6 - b ~ - . min (2 ^ {8b}, 2 ^ {1408}). , ,   , min (2 ^ {8b}, 2 ^ {702}) . .





,     , :





. , 2 ^ {128} .





, , RC6 20 .





RC6 - , . : , . , .





RC6, RC6_en, - .





  1. R.L. Rivest (1994) The RC5 Encryption Algorithm





  2. RL Rivest, MJB Robshaw, R Sidney et YL Yin. (1998) Le chiffrement par bloc RC6





  3. S. Contini, RL Rivest, MJB Robshaw et YL Yin. (1998) La sécurité du RC6












All Articles