RC5
RC5 | |
---|---|
Una ronda (dues mitges rondes) del xifrat de blocs RC5 | |
Detall | |
Estructura | Xarxa del tipus Feistel |
Millor criptoanàlisi pública | |
RC5 de 12 rodes (amb blocs de 64 bits) |
En criptografia, RC5 és un xifratge de blocs de clau simètrica que destaca per la seva senzillesa. Dissenyat per Ronald Rivest el 1994, RC significa "Rivest Cipher", o alternativament, "Ron's Code" (compareu RC2 i RC4). El candidat RC6 Advanced Encryption Standard (AES) es basava en RC5.[1][2]
Descripció
[modifica]A diferència de molts esquemes, RC5 té una mida de bloc variable (32, 64 o 128 bits), una mida de clau (de 0 a 2040 bits) i un nombre de rondes (de 0 a 255). L'elecció original de paràmetres suggerida era una mida de bloc de 64 bits, una clau de 128 bits i 12 rondes.
Una característica clau de RC5 és l'ús de rotacions dependents de dades; un dels objectius de RC5 era impulsar l'estudi i l'avaluació d'aquestes operacions com a primitive criptogràfica. RC5 també consta d'una sèrie d'addicions modulars i OR exclusius (XOR). L'estructura general de l'algorisme és una xarxa semblant a Feistel, similar a RC2. Les rutines de xifratge i desxifrat es poden especificar en poques línies de codi. La programació de claus, però, és més complexa, ampliant la clau utilitzant una funció essencialment unidireccional amb les expansions binàries tant d'e com de la proporció àuria com a fonts de " res a la màniga dels números ". La senzillesa tentadora de l'algoritme juntament amb la novetat de les rotacions dependents de les dades han fet que RC5 sigui un objecte d'estudi atractiu per als criptoanalistes. RC5 es denota bàsicament com RC5-w/r/b on w=mida de la paraula en bits, r=nombre de rondes, b=nombre de bytes de la clau.[3]
Algoritme
[modifica]El xifratge i el desxifrat RC5 amplien la clau aleatòria en 2 (r+1) paraules que s'utilitzaran seqüencialment (i només una vegada cadascuna) durant els processos de xifratge i desxifrat. Tot el següent prové del document revisat de Rivest sobre RC5.
Expansió clau
[modifica]L'algorisme d'expansió de claus s'il·lustra a continuació, primer en pseudocodi, i després codi C d'exemple copiat directament de l'apèndix del document de referència.
# Break K into words
# u = w / 8
c = ceiling(max(b, 1) / u)
# L is initially a c-length list of 0-valued w-length words
for i = b-1 down to 0 do:
L[i / u] = (L[i / u] <<< 8) + K[i]
# Initialize key-independent pseudorandom S array
# S is initially a t=2(r+1) length list of undefined w-length words
S[0] = P_w
for i = 1 to t-1 do:
S[i] = S[i - 1] + Q_w
# The main key scheduling loop
i = j = 0
A = B = 0
do 3 * max(t, c) times:
A = S[i] = (S[i] + A + B) <<< 3
B = L[j] = (L[j] + A + B) <<< (A + B)
i = (i + 1) % t
j = (j + 1) % c
# return S
L'exemple de codi font es proporciona a l'apèndix del document de Rivest sobre RC5. La implementació està dissenyada per funcionar amb w = 32, r = 12 i b = 16.
void RC5_SETUP(unsigned char *K)
{
// w = 32, r = 12, b = 16
// c = max(1, ceil(8 * b/w))
// t = 2 * (r+1)
WORD i, j, k, u = w/8, A, B, L[c];
for (i = b-1, L[c-1] = 0; i != -1; i--)
L[i/u] = (L[i/u] << 8) + K[i];
for (S[0] = P, i = 1; i < t; i++)
S[i] = S[i-1] + Q;
for (A = B = i = j = k = 0; k < 3 * t; k++, i = (i+1) % t, j = (j+1) % c)
{
A = S[i] = ROTL(S[i] + (A + B), 3);
B = L[j] = ROTL(L[j] + (A + B), (A + B));
}
}
Cripanàlisi
[modifica]RC5 de dotze rondes (amb blocs de 64 bits) és susceptible a un atac diferencial utilitzant 2 44 textos en pla escollits. Es suggereixen 18 – 20 rondes com a protecció suficient.
Alguns d'aquests problemes de repte s'han abordat mitjançant la informàtica distribuïda, organitzada per Distributed.net. Distributed.net té missatges RC5 de força bruta xifrats amb claus de 56 i 64 bits i ha estat treballant per trencar una clau de 72 bits des del 3 de novembre de 2002.[4] A partir del 26 de juliol de 2023, s'ha cercat el 10,409% de l'espai de claus i, segons la taxa registrada aquell dia, trigarien una mica més de 59 anys a completar el 100% de l'espai de claus. La tasca ha inspirat molts desenvolupaments nous i nous en el camp de la informàtica en clúster.
Referències
[modifica]- ↑ «The RC5 Encryption Algorithm*» (en anglès). [Consulta: 1r octubre 2024].
- ↑ Baldwin, Robert W.; Rivest, Ronald L. «The RC5, RC5-CBC, RC5-CBC-Pad, and RC5-CTS Algorithms». rfc-editor, 10-1996.
- ↑ «RC5 Encryption Algorithm» (en anglès americà), 29-06-2018. [Consulta: 1r octubre 2024].
- ↑ «distributed.net: Project RC5» (en anglès). www.distributed.net. [Consulta: 14 desembre 2019].