ALGORITMO RC5 Contreras Murillo Daniel. Flores Flores Armando. Pablo Erika Celina. Reséndiz Jiménez Omar. RC5 Es un sistema de cifrado el cual fue diseñado por Ronald Rivest en 1994 Este algoritmo salió en sustitución del esquema RC4, el cual había sido publicado anónimamente en Internet. RC5 es un algoritmo que opera por bloques. Descripción. Tamaño variable de bloques: 32, 64 o 128 bits. Palabra clave entre 0 y 2040 bits. vueltas entre 0 y 255. bloques de 64 bits (2 palabras de 32 bits), en 12 rondas o vueltas y con una clave de 128 bits (16 bytes). RC5 hace uso de rotaciones dependientes. En su estructura contiene algunas operaciones como sumas modulares y operaciones XOR. Características. Adecuado para ser implementado en hardware y software. Utiliza computación básica y operaciones que podemos encontrar en un microprocesador. Adaptable a procesadores de diferentes tamaños de palabra; puede utilizar tamaño de palabra de 16, 32 y 64 bits. Bajo consumo de memoria; uso en tarjetas inteligentes o dispositivos donde la disponibilidad de espacio sea un factor. Proporciona alta seguridad. Planificación de claves. Utiliza la clave secreta del usuario para expandir un arreglo S de claves, que contiene 2(r + 1) palabras aleatorias determinada por la clave original. Definición de las constantes. Las dos constantes basadas en números irracionales trascendentes: Pw = 0dd((e-2)2w) con la base de los logaritmos naturales e = 2.71828182…, y Qw = 0dd((ϕ - 1)2w) basada en el número áureo, ϕ= 1.61180339. P16 = B7E1 P32 = B7E15163 P64 = B7E151628AED2A6B 9E3779B97F4A7C15 Q16 = 9E37 Q32 = 9E3779B9 Q64 = Se realizan los siguientes pasos. La clave original se convierte de bytes a palabras. Esto se consigue al tomar la clave K [0...b-1] y colocarla en el arreglo L [0…]. La operación se realiza de manera natural utilizando bytes de la clave para llenar cada palabra sucesiva en L, del byte menos significativo al más significativo; los bytes faltantes para completar L se rellenan con ceros. Se obtiene un patrón de bits pseudoaleatorios para iniciar S, utilizando una progresión aritmética con período 2w determinada por las constantes Pw y Qw. S [0] Pw. S [i] S [i-1] + Qw, variando i desde 1 hasta 2r + 1. Mezclado de la clave secreta. En este paso se mezcla la clave del usuario, utilizando los arreglos S y L. el pseudocódigo siguiente establece el proceso de mezcla: Cifrado del mensaje en claro Se combina cada bloque con una clave: A A + S[ 0] y B B + S [1]. Esta es la transformación inicial. Para cada ronda i desde 1 hasta r se aplican las siguientes operaciones: A ((A B) << B) + S [2 *i] B ((B A) <<A) + S [2*i +1] Descifrado del mensaje. Se realiza invirtiendo el cifrado y también las operaciones de suma y XOR; esto es, se deberá de realizar una resta y XOR. Además de que las rotaciones dependientes de los datos cambian, es decir esta vez irán a la derecha. Modos de Operación Para elevar la efectividad de RC5 en las implementaciones, RFC2040 define cuatro modos diferentes de operación los cuales son: RC5-cifrador en bloque: este algoritmo de cifrado considera entradas de tamaño fijo (2w) y genera un criptograma de igual longitud mediante un proceso de transformación que depende de la clave k. Esto se hace utilizando la modalidad ECB que consiste en trabajar bloques de 64 bits de mensaje en claro (Mcla) y cifrar cada uso de manera independiente utilizando siempre la misma clave. RC5-cifrador en bloque Modos de Operación RC5-CBC: este modo de cifrado se basa en la modalidad CBC la cual representa una seguridad más elevada en comparación con la que usa ECB, ya que aquí aun cuando se repitan bloques de Mcla el criptograma correspondiente es diferente en cada ocasión. RC5-CBC Modos de Operación RC5-CBC-relleno:utiliza la modalidad CBC con una variante, el algoritmo considera el uso de Mcla de longitud variable por lo que el criptograma correspondiente será de la misma longitud. Lo que hace esta modalidad es procesar información (Mcla/Cripto) en múltiplos de un bloque sencillo RC5 por lo que si se requiere, éste se rellena. Por ejemplo, si el faltante es de cuatro bytes, estos tienen la misma estructura e indican dicha cantidad. RC5-CTS:se trata de un cifrado que se apoya en CBC y que es muy similar a CBC-relleno, ya que puede manejar bloques de información de cualquier tamaño y para poder operar requiere procesar bits en múltiplos de bytes por lo que realiza un relleno. La diferencia consiste en que cuando el criptograma correspondiente debe ser almacenado en la misma localidad de memoria (en sustitución) que ocupa el Mcla, resulta que el criptograma es de mayor longitud (debido al relleno) por lo que ahora es necesario sustraer el excedente.