Está en la página 1de 7

3.

2 CIFRADOS POR BLOQUES


En Criptografa, una unidad de cifrado por bloques (block cipher) es
una unidad de cifrado de clave simtrica que opera en grupos de bits
de longitud fija, llamados bloques, aplicndoles una transformacin
invariante. Cuando realiza cifrado, una unidad de cifrado por bloques
toma un bloque de texto plano o claro como entrada y produce un
bloque de igual tamao de texto cifrado. La transformacin exacta es
controlada utilizando una segunda entrada la clave secreta. El
descifrado es similar: se ingresan bloques de texto cifrado y se
producen bloques de texto plano. Para cifrar mensajes ms largos que
el tamao del bloque, se utiliza un modo de operacin.
Las unidades de cifrado por bloques se diferencian de las unidades de
flujo de cifrado en que un flujo de cifrado trabaja sobre dgitos
individuales, uno despus del otro, y la transformacin vara durante
el proceso de cifrado. La diferencia entre los dos tipos de unidades es
algo difusa, dado que una unidad de cifrado por bloques puede ser
operada en un modo que permite utilizarla como una unidad de flujo
de cifrado, donde en lugar de dgitos se opera con bloques.
Los algoritmos de cifrado por bloques toman bloques de tamao fijo
del texto en claro y producen un bloque de tamao fijo de texto
cifrado, generalmente del mismo tamao que la entrada. El tamao
del bloque debe ser lo suficientemente grande como para evitar
ataques de texto cifrado. La asignacin de bloques de entrada a
bloques de salida debe ser uno a uno para hacer el proceso reversible
y parecer aleatoria.
Para la asignacin de bloques los algoritmos de cifrado simtrico
realizan sustituciones y permutaciones en el texto en claro hasta
obtener el texto cifrado.
La sustitucin es el reemplazo de un valor de entrada por otro de los
posibles valores de salida, en general, si usamos un tamao de
bloque k, el bloque de entrada puede ser sustituido por cualquiera de
los 2k bloques posibles.
La permutacin es un tipo especial de sustitucin en el que los bits de
un bloque de entrada son reordenados para producir el bloque
cifrado, de este modo se preservan las estadsticas del bloque de
entrada (el nmero de unos y ceros).
Los algoritmos de cifrado por bloques iterativos funcionan aplicando
en sucesivas rotaciones una transformacin (funcin de rotacin) a un
bloque de texto en claro. La misma funcin es aplicada a los datos
usando una subclave obtenida de la clave secreta proporcionada por
el usuario. El nmero de rotaciones en un algoritmo de cifrado por
bloques iterativo depende del nivel de seguridad deseado.

Un tipo especial de algoritmos de cifrado por bloques iterativos son


los denominados algoritmos de cifrado de Feistel. En estos algoritmos
el texto cifrado se obtiene del texto en claro aplicando repetidamente
la misma transformacin o funcin de rotacin.

El funcionamiento es como sigue:


El texto a encriptar se divide en dos mitades, la funcin de rotacin se
aplica a una mitad usando una subclave y la salida de la funcin se
emplea para hacer una o-exclusiva con la otra mitad, entonces se
intercambian las mitades y se repite la misma operacin hasta la
ltima rotacin, en la que no hay intercambio. Una caracterstica
interesante de estos algoritmos es que la encriptacin y
desencriptacin son idnticas estructuralmente, aunque las subclaves
empleadas en la encriptacin se toman en orden inverso en la
desencriptacin.
Para aplicar un algoritmo por bloques es necesario descomponer el
texto de entrada en bloques de tamao fijo. Esto se puede hacer de
varias maneras:
1. ECB (Electronic Code Book). Se parte el mensaje en bloques

de k bits, rellenando el ultimo si es necesario y se encripta cada


bloque. Para desencriptar se trocea el texto cifrado en bloques
de k bits y se desencripta cada bloque. Este sistema es
vulnerable a ataques ya que dos bloques idnticos de la
entrada generan el mismo bloque de salida. En la prctica no se
utiliza.
2. CBC (Cipher Block Chaining). Este mtodo soluciona el
problema del ECB haciendo una o-exclusiva de cada bloque de
texto en claro con el bloque anterior cifrado antes de encriptar.
Para el primer bloque se usa un vector de inicializacin. Este es
uno de los esquemas ms empleados en la prctica.
3. OFB (Output Feedback Mode). Este sistema emplea la clave

de la sesin para crear un bloque pseudoaleatorio grande (pad)


que se aplica en o-exclusiva al texto en claro para generar el
texto cifrado. Este mtodo tiene la ventaja de que el pad puede
ser generado independientemente del texto en claro, lo que
incrementa la velocidad de encriptacin y desencriptacin.
4. CFB (Cipher Feedback Mode). Variante del mtodo anterior

para mensajes muy largos.

3.2.1 ALGORITMO DES


El DES (Data Encription Standard o Estndar de Encriptacin de
Datos) fue un diseo de unidad de cifrado por bloques de gran
influencia. Fue desarrollado y publicado por IBM y publicado como
estndar en 1977.
El DEA (llamado con frecuencia DES) es un algoritmo de cifrado por
bloques de 64 bits de tamao. Emplea una clave de 56 bits durante la
ejecucin (se eliminan 8 bits de paridad del bloque de 64). El
algoritmo fue diseado para ser implementado en hardware. Cuando
se utiliza en comunicaciones ambos participantes deben conocer la
clave secreta (para intercambiarla se suelen emplear algoritmos de
clave pblica). El algoritmo se puede usar para encriptar y
desencriptar mensajes, generar y verificar cdigos de autentificacin
de mensajes (MAC) y para encriptacin de un slo usuario (p. ej para
guardar un archivo en disco).
Aunque el DES era un algoritmo computacionalmente seguro, esto ha
dejado de ser cierto, ya que con hardware especfico es posible
realizar ataques por fuerza bruta que descubran una clave en pocos
das. El problema principal es que el tamao de la clave (56 bits) es
demasiado pequeo para la potencia de clculo actual.
Triple-DES
Consiste en encriptar tres veces una clave DES. Esto se puede hacer
de varias maneras:

DES-EEE3: Tres encriptaciones DES con tres claves distintas.


DES-EDE3: Tres operaciones DES con la secuencia encriptardesencriptar-encriptar con tres claves diferentes.

DES-EEE2 y DES-EDE2: Igual que los anteriores pero la primera


y tercera operacin emplean la misma clave.

Dependiendo del mtodo elegido, el grado de seguridad vara; el


mtodo ms seguro es el DES-EEE3.

3.2.2 ALGORITMO RIJNDAEL (AES)


Advanced Encryption Standard (AES), tambin conocido como
Rijndael, es un esquema de cifrado por bloques adoptado como un
estndar de cifrado por el gobierno de los Estados Unidos. Se espera
que sea usado en el mundo entero y analizado exhaustivamente,
como fue el caso de su predecesor, el Data Encryption Standard
(DES). El AES fue anunciado por el Instituto Nacional de Estndares y
Tecnologa (NIST) como FIPS PUB 197 de los Estados Unidos (FIPS 197)
el 26 de noviembre de 2001 despus de un proceso de
estandarizacin que dur 5 aos. Se transform en un estndar
efectivo el 26 de mayo de 2002. Desde 2006, el AES es uno de los
algoritmos ms populares usados en criptografa simtrica.
El cifrador fue desarrollado por dos criptlogos belgas, Joan Daemen y
Vincent Rijmen, ambos estudiantes de la Katholieke Universiteit
Leuven, y enviado al proceso de seleccin AES bajo el nombre
"Rijndael". Estrictamente hablando, AES no es precisamente Rijndael
(aunque en la prctica se los llama de manera indistinta) ya que
Rijndael permite un mayor rango de tamao de bloques y longitud de
claves; AES tiene un tamao de bloque fijo de 128 bits y tamaos de
llave de 128, 192 256 bits, mientras que Rijndael puede ser
especificado por una clave que sea mltiplo de 32 bits, con un
mnimo de 128 bits y un mximo de 256 bits. La mayora de los
clculos del algoritmo AES se hacen en un campo finito determinado.
AES opera en una matriz de 44 bytes, llamada state (algunas
versiones de Rijndael con un tamao de bloque mayor tienen
columnas adicionales en el state).

Pseudo-cdigo

Expansin de la clave usando el esquema de claves de Rijndael.


Etapa inicial:

1. AddRoundKey

Rondas:

1. SubBytes en este paso se realiza una sustitucin no lineal


donde cada byte es reemplazado con otro de acuerdo a una
tabla de bsqueda.
2. ShiftRows en este paso se realiza una transposicin donde
cada fila del state es rotada de manera cclica un nmero
determinado de veces.
3. MixColumns operacin de mezclado que opera en las
columnas del state, combinando los cuatro bytes en cada
columna usando una transformacin lineal.
4. AddRoundKey cada byte del state es combinado con la
clave round; cada clave round se deriva de la clave de
cifrado usando una iteracin de la clave.
Etapa final:
1. SubBytes
2. ShiftRows
3. AddRoundKey

Etapa SubBytes- Substitucin de bits: En la etapa SubBytes,


cada byte en la matriz es actualizado usando la caja-S de
Rijndael de 8 bits. Esta operacin provee la no linealidad en el
cifrado. La caja-S utilizada proviene de la funcin inversa
alrededor del GF(28), conocido por tener grandes propiedades
de no linealidad. Para evitar ataques basados en simples
propiedades algebraicas, la caja-S se construye por la
combinacin de la funcin inversa con una transformacin
afn inversible. La caja-S tambin se elige para evitar puntos
estables (y es por lo tanto un derangement), y tambin
cualesquiera puntos estables opuestos.La caja-S es descrita en
mayor profundidad en el artculo caja-S de Rijndael.
Etapa ShiftRows-Desplazar filas: El paso ShiftRows opera en las
filas del state; rota de manera cclica los bytes en cada fila por
un determinado offset. En AES, la primera fila queda en la
misma posicin. Cada byte de la segunda fila es rotado una
posicin a la izquierda. De manera similar, la tercera y cuarta
filas son rotadas por los offsets de dos y tres respectivamente.
De esta manera, cada columna del state resultante del paso

ShiftRows est compuesta por bytes de cada columna del


state inicial. (variantes de Rijndael con mayor tamao de
bloque tienen offsets distintos).
Etapa MixColumns- Mezclar columnas: En el paso MixColumns,
los cuatro bytes de cada columna del state se combinan usando
una transformacin lineal inversible. La funcin MixColumns
toma cuatro bytes como entrada y devuelve cuatro bytes,
donde cada byte de entrada influye todas las salidas de cuatro
bytes. Junto con ShiftRows, MixColumns implica difusin en
el cifrado. Cada columna se trata como un polinomio GF(28) y
luego se multiplica el mdulo x4 + 1 con un polinomio fijo c(x).
El paso MixColumns puede verse como una multiplicacin
matricial en el campo finito de Rijndael.
Etapa AddRoundKey- Clculo de las subclaves: En el paso
AddRoundKey, la subclave se combina con el state. En cada
ronda se obtiene una subclave de la clave principal, usando la
iteracin de la clave; cada subclave es del mismo tamao del
state. La subclave se agrega combinando cada byte del state
con el correspondiente byte de la subclave usando XOR.
Optimizacin del cifrado: En sistemas de 32 bits o de mayor
tamao de palabra, es posible acelerar la ejecucin de este
algoritmo mediante la conversin de las transformaciones
SubBytes, ShiftRows y MixColumn en tablas. Se tienen
cuatro tablas de 256 entradas de 32 bits que utilizan un total de
4 kilobytes (4096 bytes) de memoria, un Kb cada tabla. De esta
manera, una ronda del algoritmo consiste en 16 bsquedas en
una tabla seguida de 16 operaciones XOR de 32 bits en el paso
AddRoundKey. Si el tamao de 4 kilobytes de la tabla es
demasiado grande para una plataforma determinada, la
operacin de bsqueda en la tabla se puede realizar mediante
una sola tabla de 256 entradas de 32 bits mediante el uso de
rotaciones circulares.

EJEMPLO:

En la fase de SubBytes, cada byte en el state es reemplazado con su


entrada en una tabla de bsqueda fija de 8 bits, S; bij = S(aij).

En el paso ShiftRows, los bytes en cada fila del state son rotados de
manera cclica hacia la izquierda. El nmero de lugares que
cada byte es rotado difiere para cada fila.

En el paso MixColumns, cada columna del state es multiplicada por un


polinomio constante c(x).

En el paso AddRoundKey, cada byte del state se combina con un byte


de la subclave usando la operacin XOR ().

También podría gustarte