Algoritmo de cifrado RC4 – Part 1

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.

  1. 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]);
        }
  2. 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];
  3. Cifrar usando X-Or():

    55

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *