miércoles, 10 de julio de 2013

Tarea 7 Cifrados de bloque (RC5)

Introducción

Existe una gran variedad de métodos de codificación o encriptación, utilizados en la criptografía, un tipo de ellos son los cifrados de bloque, los cuales se encuentran muy efectivos.

En ésta entrada se describirá el funcionamiento del algoritmo de cifrado RC5.

Descripción

Algoritmos de cifrado de Bloque

Criptografía Simétrica:

Para empezar con la explicación de nuestro algoritmo de cifrado RC5, es necesario saber cómo está compuesta la criptografía simétrica.

La diferencia principal de la criptografía clásica con ésta es que el algoritmo se hace público y su fortaleza se basa en la imposibilidad computacional de romper una clave secreta, tomando como valor agregado la robustez de las funciones matemáticas involucradas.

Todos los sistemas de criptografía simétrica se basan en el protocolo que se muestra en la imagen, ya que son aquellos en los que la clave de cifrado es la misma que la clave de descifrado, por lo tanto es necesario que la clave sea conocida sólo por el emisor y el receptor.

Ya que se utiliza la misma clave para cifrar y descifrar, adquiere la propiedad de un algoritmo simétrico.

Los algoritmos simétricos pueden ser desarrollados utilizando métodos de cifrado en bloque o métodos de cifrado en flujo

Los métodos de cifrado en bloque se caracterizan por que la forma en la que su mensaje es cifrado, se forman grupos, tomando bloques de datos del mensaje, de manera que se cifra uno por uno los bloques de datos de tamaño constante. La clave a utilizar debe ser del mismo tamaño del bloque, por lo tanto el texto cifrado es una colección de bloques que requieren el mismo tratamiento para ser descifrados.

Todos los cifrados de bloque se componen de 4 elementos:

Transformación lineal: Consta de una o dos funciones que pueden o no depender de la clave.

Transformacion intermedia mediante iteraciones o vueltas:
Repeticion n veces de una función no lineal sobre la clave.

Transformacion final:
Operación inversa de las dos transformaciones anteriores.

Algoritmo de expansión de clave:
Consiste en convertir la clave en un conjunto de sub-claves, por si se descubre alguna, no se sepa la clave completamente.

Cifrado RC5

Se encuentra dentro de la clasificación de los criptosistemas con clave secreta.

Es un sistema de cifrado el cual fue diseñado por Ronald Rivest en 1994.

Éste algoritmo salió en sustitución del esquema RC4, el cual había sido publicado anónimamente en internet.

Es un algoritmo que opera por bloques y éstas son sus principales características:

 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.



Funciona básicamente así:

Opera con palabras de tamaño variable(w), número de vueltas variable(r) y clave secreta de longitud variable (b, en bytes).

Consta de tres operaciones primitivas, lo cual favorece mucho a la portabilidad de éste algoritmo de cifrado:

Suma módulo 2w (+)
Or exclusivo bit a bit((+))
Rotación, donde la rotación de x un número y de bits a la izquierda se denota por x <<y.

Antes del cifrado la clave secreta se expande para llenar un array S de 2r + 2 palabras.

Denotando (A, B) las dos palabras del bloque de entrada (32 bits cada una), el algoritmo es el siguiente: 

A=A+S[0]
B=B+S[1]
i=1
for i in r:

     A=((A(+)B)<<B)+S[2*i] 

     B=((B(+)A)<<A)+S[2*i+1]

S[0], S[1],...,S[2]+1    Subclaves

(A. B)     Bloque en claro

(A[r], B[r])     Bloque cifrado

Para el descifrado deben realizarse las operaciones inversas en orden inverso.

*Observación: Como nos habremos dado cuenta el método de cifrado cumple con los 4 elementos de un algoritmo de cifrado, mencionado más arriba a cada uno de ellos descriptivamente.

Ataques o posibles vulnerabilidades:

RC5 (Rivest Cypher 5, en honor a su autor) no tiene una longitud determinada de clave, sino que permite gran flexibilidad a la hora de fijar los parámetros.

El problema es que el gobierno EE.UU. declara ilegal la exportación de 
criptosistemas con una clave mayor de 40/56/64 bits, según las circunstancias. 

El objetivo de los retos RC5, es demostrar que esas longitudes de claves son insuficientes para cualquier aplicación seria, como comercio electrónico, por ejemplo.

El RC5-40 bits cayó en unas 3 horas y media.

El RC5-56 cayó en unos pocos meses de esfuerzo.

El RC5-64 es el que está siendo "forzado" en estos momentos, a buen ritmo.

Conclusiones

El Cifrado RC5 es uno de los algoritmos de cifrado menos vulnerables y más portables que existen, ya que además de que es simétrico, uno de los ataques a los que no está completamente protegido es el ataque con fuerza-bruta, pero éste se ve limitado cuando se utilizan más de 64 bits.

Referencias

Autor: UNAM Facultad de Ingeniería  Título: "CR5= River Cipher"  Fecha: Mayo 2010
URL: http://www.openboxer.260mb.com/asignaturas/criptografia/CSimetrica/RC5.php

Autor:  Alarcos  Fecha: 2010
URL: http://alarcos.inf-cr.uclm.es/doc/psi/tema4.pdf

Autor: Jesús Cea Avión Título: "Ayuda Periodística (RC5-64)"  Fecha: 25 mayo 1998
URL: http://www.jcea.es/artic/rc5-6403.htm

2 comentarios:

  1. Cuidado con la ortografía.

    La primera mitad de la entrada es más bien introductoria y no atiende el tema que se encargó. La segunda mitad está mucho mejor. La presentación se pudiera mejorar con diagramas o el uso de ambientes de código incrustado.

    Evita tomar pedazos tal cual de las fuentes de información; redacta en tus propias palabras.

    Lo de RC-64 se crackeó en el 2002 (cf. http://www.distributed.net/RC5).

    Sería bueno incluir un ejemplo.

    En la bibliografía, no es necesario incluir las palabras "autor" o "título"; debería ser claro por la estructura cuál es cuál.

    6 pts.

    ResponderBorrar
  2. Tengo una duda respecto a A y B, cada una de estas son palabras de entrada?, o como serian interpretadas estas A y B?, si fueran las palabras a codificar, entonces se podrian colocar mas variables de acuerdo a la cantidad de palabras requeridas?

    ResponderBorrar