RC4 es un cifrado de flujo y un algoritmo de clave de longitud variable. Este algoritmo cifra un byte a la vez (o unidades más grandes a la vez).
Una entrada clave es un generador de bits pseudoaleatorios que produce un número de flujo de 8 bits que es impredecible sin el conocimiento de la clave de entrada. La salida del generador se llama flujo de clave, se combina un byte a la vez con el cifrado de flujo de texto sin formato usando X- operación O.
Ejemplo:
RC4 Encryption 10011000 ? 01010000 = 11001000 RC4 Decryption 11001000 ? 01010000 = 10011000
Algoritmo de generación
de claves: se utiliza una clave de longitud variable de 1 a 256 bytes para inicializar un vector de estado S de 256 bytes, con elementos S[0] a S[255]. Para el cifrado y descifrado, se genera un byte k a partir de S seleccionando una de las 255 entradas de forma sistemática, luego las entradas en S se permutan nuevamente.
- Algoritmo de programación de claves:
Inicialización : Las entradas de S se igualan a los valores de 0 a 255 en orden ascendente, se crea un vector temporal T.
Si la longitud de la clave k es de 256 bytes, entonces k se asigna a T. De lo contrario, para una clave con longitud (k-len) bytes, los primeros k-len elementos de T se copian de K, y luego K se repite tantas veces como sea necesario para llenar T. La idea se ilustra de la siguiente manera:for
i =
0
to
255
do
S[i] = i;
T[i] = K[i mod k - len];
usamos T para producir la permutación inicial de S. Comenzando con S[0] a S[255], y para cada algoritmo S[i] lo intercambiamos con otro byte en S de acuerdo con un esquema dictado por T[i], pero S seguirá conteniendo valores de 0 a 255:
j =
0
;
for
i =
0
to
255
do
{
j = (j + S[i] + T[i])mod
256
;
Swap(S[i], S[j]);
}
- Algoritmo de generación pseudoaleatoria (Stream Generation):
Una vez inicializado el vector S, no se utilizará la clave de entrada. En este paso, para cada algoritmo S[i], cámbielo por otro byte en S de acuerdo con un esquema dictado por la configuración actual de S. Después de llegar a S[255], el proceso continúa, comenzando nuevamente desde S[0].i, j =
0
;
while
(
true
)
i = (i +
1
)mod
256
;
j = (j + S[i])mod
256
;
Swap(S[i], S[j]);
t = (S[i] + S[j])mod
256
;
k = S[t];
- Cifrar usando X-Or():
Noticias :
En septiembre de 2015, Microsoft anunció el fin del uso de RC4 en Microsoft Edge e Internet Explorer 11.
Este video da un claro ejemplo del algoritmo RC4
Publicación traducida automáticamente
Artículo escrito por Sally Jarkas y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA