RC4 - Ing. Aldo Jiménez Arteaga

Anuncio
Criptografía – Criptografía de Clave Secreta
3.
RC4
El algoritmo RC4 (Rivest Cipher 4) es un algoritmo de cifrado en flujo, utilizado en protocolos
de cifrado en comunicaciones como SSL y WEP. Fue desarrollado por Ronald Rivest en 1987,
y mantenido en secreto hasta 1994. Es un algoritmo destacado por su simplicidad y rapidez en
software, pero presenta debilidades que le impiden ser una opción para implementar en un
sistema: en la clave existen patrones invariantes que se propagan también al estado interno
del algoritmo, dando como resultado que los primeros bytes generados por RC4 son
predecibles. Una segunda vulnerabilidad permite la recuperación de la clave secreta, cuando
ésta se deriva de una concatenación con un vector inicial público (utilizado en WEP); al
recopilar un gran número de mensajes y vectores iniciales la clave queda expuesta.
Descripción
RC4 genera un flujo pseudoaleatorio de bits a partir de la clave original, el cual se combina
con el texto plano por medio de la operación lógica XOR (cifrado de Vernam). El descifrado es
exactamente igual, debido a la simetría que presenta la operación binaria XOR. La obtención
de la clave presenta dos módulos importantes, que son el corazón del algoritmo: un arreglo de
0016 a 𝐹𝐹16 permutado (llamado 𝑆), y dos índices de 8 bits (llamados 𝑖 y 𝑗).
2016
Se repiten los pasos 2.1 a 2.3 sucesivamente hasta 𝑧 = 255.
Cifrado y descifrado
Para obtener el texto cifrado de un texto plano se debe generar la clave a partir del arreglo 𝑆
permutado, que es un generador de claves pseudoaleatorio manejado por los índices 𝑖 y 𝑗.
Dichos parámetros se ajustan en 𝑖 = 0 y 𝑗 = 0 con las operaciones de los siguientes pasos:
1.
𝑖 ← (𝑖 + 1) mod 256.
2.
𝑗 ← (𝑆[𝑖] + 𝑗) mod 256.
3.
𝑆[𝑖] ↔ 𝑆[𝑗].
El índice del elemento de la clave que cifrará es 𝑘𝑛 ← (𝑆[𝑖] + 𝑆[𝑗]) mod 256. Finalmente,
se obtiene el texto cifrado aplicando la operación XOR:
𝑐[𝑛] = 𝑚[𝑛] ⊕ 𝑆[𝑘𝑛 ]
k[n]
i, j
S
S[kn]
m[n]
Generación de 𝑺
Para generar correctamente una clave RC4 es necesario obtener el arreglo de 256 bytes
correctamente permutado. El algoritmo para las operaciones se describe a continuación:
1.
Se construye el arreglo 𝑆 de 0016 a 𝐹𝐹16 .
2.
Se parte con los parámetros 𝑥 = 0, 𝑦 = 0 y el contador 𝑧 = 0. Se sigue cada una de
las operaciones a continuación descritas, tomando en consideración que el uso de cada
variable atiende a la modificación dentro del mismo paso:
2.1. 𝑥 ← (𝑘[𝑦] + 𝑆[𝑧] + 𝑥) mod 256.
2.2. 𝑆[𝑧] ↔ 𝑆[𝑥].
2.3. 𝑦 ← (𝑦 + 1) mod|𝑘|.
donde 𝑘[𝑦] es un byte de la clave original, 𝑆[𝑧] es un byte del arreglo y |𝑘| es la
longitud en bytes de la clave utilizada.
1
Ing. Aldo Jiménez Arteaga
00, 01, 02, … FF
c[n]
El algoritmo sigue el mismo proceso para descifrar un mensaje, pero la operación XOR se
realiza entre la clave generada por el algoritmo y el texto cifrado:
𝑚[𝑛] = 𝑐[𝑛] ⊕ 𝑆[𝑘𝑛 ]
Descargar