SSC - Segunda Unidad-Parte C
SSC - Segunda Unidad-Parte C
SSC - Segunda Unidad-Parte C
Criptosistema simétrico
Un cifrador de flujo consiste en el uso de un algoritmo que convierte el texto claro en texto
cifrado, trabajando bit a bit. Se utiliza en la entrada un flujo de datos (mi) y se genera un
43
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
flujo de clave llamado secuencia cifrante (si), la salida es una XOR bit a bit del flujo de datos
y el de clave (generalmente 128 bits), al ser la función XOR reversible se tiene:
Cifrado: ci mi si
Descifrado: mi ci si
Dentro de los algoritmos modernos para el cifrado por flujo tenemos A5 y RC4. Veamos
un ejemplo de su aplicación.
Sistema WEP
44
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
La debilidad del algoritmo es que, si se utiliza la misma semilla para cifrar dos mensajes
diferentes, el problema de obtener la clave a partir de los dos textos cifrados sería trivial. En
un intento de evitar esto, en WEP se incluyó un vector de iniciación de 24 bits que se
modifica regularmente y se concatena a la contraseña para generar la semilla. Una segunda
debilidad es que en la comunicación el atacante podría modificar cualquier bit a su antojo.
Aun así, la debilidad esta en este vector de iniciación, el tamaño del vector de iniciación es
constante (24 bits), esto nos da un número limitado de vectores (224=16,777,216). El
problema es que la cantidad de tramas que pasan a través de un punto de acceso son muy
grandes (por la velocidad de transmisión) y es fácil encontrar dos mensajes con el mismo
vector. Se puede aumentar el tamaño de la clave, pero esto solo incrementará el tiempo
necesario para romper el cifrado.
45
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
Otros sistemas que usan RC4 son: WPA(Wi-Fi Protectes Access), BitTorrent, Microsoft P-
t-P Encryption, SSL (Secure Socket Layer), SSH, Skype
El texto en claro se cifra dividiéndolo en secuencias de bits o bloques de tamaño fijo, tamaño
que puede estar entre 64 y 256 bits. Hoy en día se espera que se evite el cifrar los bloques
individual e independientemente, sino encadenados, lo que quiere decir que el cifrado de
cada bloque dependa del resultado obtenido al cifrar todos los bloques que lo preceden. La
forma en que se gestionan estos pedazos o bloques de mensaje, se denomina modo de
cifrado.
Los cifradores de bloque trabajan con clave simétrica sobre grupos de bits de una
determinada longitud fija (bloques). El cifrador de bloque toma en la entrada un bloque de
texto plano y produce un bloque de texto cifrado de igual longitud. Esta transformación de
texto plano a cifrado se controla mediante una clave secreta. Para el camino inverso (texto
cifrado a texto plano) se opera de la misma manera.
Los cifradores de bloques tienen un inconveniente, hay ciertas aplicaciones que no pueden
hacer uso de esta utilidad por estar formadas por un flujo constante de bits. Tenemos por
ejemplo un enlace de radio, telefonía, etc. Para estas aplicaciones surgen los cifradores de
flujo.
• Transformación inicial: que aleatoriza los datos de entrada y puede añadir complejidad
a los datos.
• Vueltas de cifrado: es una función no lineal aplicada sobre los datos y la clave, puede
incluir una sola operación muy compleja o en la sucesión de varias transformaciones
simples.
• Transformación final: la que sirve para que las operaciones de cifrado y descifrado sean
simétricas.
• Algoritmo de expansión de clave: convierte la clave de usuario en un conjunto de
subclaves que pueden estar constituidas por varios cientos de bits en total, es
recomendable que:
o este algoritmo sea unidireccional
46
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
• Confusión: un pequeño cambio en la clave debería producir un cambio del 50% del texto
cifrado resultante y que un atacante haciendo una búsqueda exhaustiva de claves no
recibirá ninguna señal de que está acercándose a la clave correcta. Se obtiene a partir de
las cajas S-Box
• Difusión: un pequeño cambio en el texto en claro debería producir un cambio del 50%
del texto cifrado resultante. Se obtiene a partir de las cajas P-Box o tablas de permutación
• Completitud: cada bit del texto cifrado dependerá de cada bit de la clave y el atacante no
podrá obtener partes válidas de la clave mediante ataques de “divide y vencerás”
• Uso de rondas para aumentar la confusión y difusión
• Uso de funciones XOR para la mezcla entre claves y mensajes
• Expansión de claves si el tamaño de clave y mensaje es diferente
Para la explicación de estos modos debemos considerar: sea el alfabeto de del bloque a cifrar
Σ y que la longitud del bloque es n, el algoritmo de cifrado es (. , que el algoritmo de
descifrado es DK, cada bloque de texto plano es mj y cada bloque de texto cifrado HVFM
x Cuando se usa este modo, a cada bloque de texto plano le corresponde igual bloque de
texto cifrado. Es así posible reconocer algunos patrones del texto plano en el texto
cifrado. Eso facilita un ataque estadístico.
x Un atacante puede sustituir algunos bloques del texto cifrado con otros bloques cifrados
que hayan sido cifrados con la misma clave. Esta manipulación es difícil de detectar en
el receptor. ECB no se usa para el cifrado de textos planos largos. Se puede incrementar
la seguridad de este modo de cifra es que cada bloque de texto a cifrar esté formado por
un determinado número de caracteres del texto plano y otros hasta Q lo ocupen caracteres
aleatorios.
47
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
Modo ECB
Entre las ventajas de este método destaca la posibilidad de romper el mensaje en bloques y
cifrarlos en paralelo o el acceso aleatorio a diferentes bloques.
Modo CBC
Para descifrar, cada bloque cifrado es procesado por el algoritmo de descifrado, y el resultado
es sometido a la operación XOR con el bloque cifrado precedente, para obtener así el bloque
de texto plano. Como no se dispone de un texto cifrado con el que combinar el primer bloque,
se usa un vector de inicialización IV (número aleatorio que puede ser públicamente
48
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
conocido). El uso del vector de inicialización es importante, pues de no usarlo, podría ser
susceptible de ataques de diccionario, ya que dos mensajes idénticos tendrían la misma
codificación. También es necesario que el IV sea aleatorio y no un número secuencial o
predecible.
El vector IV debe ser conocido por ambas partes: tanto por el emisor que cifra como por el
receptor que descifra. Para obtener máxima seguridad, el vector IV puede protegerse como
si de una clave se tratara. Esto puede hacerse enviado el emisor al receptor el valor de IV
cifrado con el modo ECB. Es conveniente actuar así, porque existen ataques que se basan en
el conocimiento del vector IV.
El modo CBC evita los problemas de ECB. En este modo, el cifrado de cada bloque no sólo
depende de la clave, sino también del bloque previo. Así, bloques iguales, quedan cifrados
de forma diferente. El receptor puede darse cuenta de que le han cambiado el texto cifrado
porque no obtiene nada en la manipulación del descifrado.
En caso de que se produzca un error en la transmisión de un bloque cifrado (por ejemplo, cj)
entonces pierde sentido el bloque descifrado a partir de este cj y se pierde mj y mj+1, pero el
bloque mj+2 al depender de cj+1 y cj+2 puede recuperarse y los bloques siguientes, por lo que
este modo es apropiado para cifrar mensajes de longitud bastante grande.
ECB ha sido estandarizado por el NIST (U.S. National Institute for Standards and
Technology).
Entre las desventajas de este modo de cifrado destaca la necesidad de realizar el cifrado de
forma secuencial (no puede ser paralelizado). También hay que tener en cuenta la posibilidad
de realizar ataques de reenvío de un mensaje entero (o parcial).
Mientras que ECB y CBC son modos basados en bloques, CTR simula un cifrado de flujo,
se usa un cifrado de bloque para producir un flujo pseudo aleatorio (keystream), que se
combina con el texto plano mediante XOR dando lugar al cifrado. Para generar el keystream
se cifra un contador combinado con un número aleatorio (nonce) mediante ECB y se va
incrementando. El valor del contador puede ser públicamente conocido, aunque es preferible
guardarlo en secreto. Es necesario que el valor de nonce+contador lo conozcan ambos lados
de la comunicación.
Encriptación:
49
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
Desencriptación:
Modo CTR
Entre las ventajas de CTR destaca la posibilidad de precalcular el keystream (y/o trabajar en
paralelo), el acceso aleatorio al keystream o que revela poquísima información sobre la
clave.
Como desventajas hay que tener en cuenta que reutilizar un contador en la misma clave
puede acabar con la seguridad del sistema, pues se generará de nuevo el mismo keystream.
Modificar bits en el texto plano es muy sencillo, pues modificando un bit del cifrado se
modificará el bit del texto plano correspondiente (Bit-flipping attacks). Por lo que es
adecuado usar este modo de cifrado junto con una verificación de la integridad del mensaje.
CFB ha sido estandarizado por el NIST (U.S. National Institute for Standards and
Technology) y es muy similar a OFB. CBC es un modo válido para cifrar mensajes largos,
pero en aplicaciones de tiempo real se encuentran problemas de eficiencia, debido a que las
funciones de cifrado y descifrado se utilizan secuencialmente y no simultáneamente.
Además, cuanto más computacionalmente complejo sea el proceso de cifrado y descifrado,
más tiempo pasa entre el cifrado y el descifrado.
En el caso del modo CFB, la función de cifrado no se usa directamente para cifrar bloques
de texto plano, sino para generar una secuencia de bloques de clave (keystream). El texto
plano se cifra sumándole módulo 2 el bloque de clave (XOR entre el bloque de texto plano
y el bloque de clave generada).
50
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
Para producir el keystream cifra el último bloque de cifrado, en lugar del último bloque del
keystrem como hace OFB.
Con este modo logramos que la transmisión sea más rápida, pero hay que aplicar con mucha mayor
frecuencia el algoritmo de cifrado y de descifrado. El valor de r es un valor que depende de las
velocidades de computación y de transmisión.
51
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
Modo CFB
En CFB el cifrado no puede ser paralelizado, pero el descifrado si, es preferible usar CTR.
OFB ha sido estandarizado por el NIST (U.S. National Institute for Standards and
Technology). Como CFB usa un bloque para cifrar de longitud n y lo divide en en u=n/r
subbloques con 1 ≤ r ≤ n, y un vector de inicialización IV. En este caso el keystream se
genera cifrando el anterior keystream, dando lugar al siguiente bloque. El primer bloque de
keystream se crea cifrando un vector de inicialización IV.
El cifrado:
I1 IV
Para 1 d j d u hacer:
1. O j Ek ( I j )
2. Hacer la cadena t j r bits más significativos de O j
3. c j mj t j
4. I j 1 2r I j t j mod 2n se concatenan n - r bits de I j con r bits de t j
o:
4. I j 1 Oj
El descifrado cambia el paso 4. por mj =cj tj
52
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
Modo OFB
OFB comparte muchas de las características de CTR, pero CTR es más eficiente, OFB se
usa bastante poco. En OFB se pueden precalcular los keystream (aunque no se puede realizar
en paralelo) y a diferencia de CTR no da problemas al ser usado con cifrados de bloque de
64 bits. Además, como en el caso de CTR, revela muy poca información sobre la clave.
Una ventaja del modo OFB es que no se transmiten los errores de transmisión en un bit: si
ocurre un error en un bit esto afecta sólo en este subbloque. La desventaja del modo OFB es
que vuelve a ser vulnerable a ataques por modificación de la cadena del mensaje.
a) c E ( m)
Ek2 Ek1 (m)
b) c E ( m)
Ek3 Ek2 Ek1 (m)
Donde las claves pueden ser iguales o los algoritmos pueden ser los mismos, diferentes o
hasta inversos
53
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
Un cifrador producto es aquel que combina dos o más transformaciones de forma tal que el
resultado del cifrado es más seguro que los componentes individuales.
Un cifrador Feistel es aquel cifrador que itera secuencialmente una serie de funciones, donde
cada iteración recibe el nombre de función ronda (con al menos tres rondas y un número
par), donde en cada iteración se utilizan redes de sustitución-permutación y se utiliza en cada
una de ellas una subclave que ha sido derivada de la clave general del cifrador. Estos
cifradores se parametrizan a partir del número de rondas r, el tamaño de bloque n, el tamaño
k de la clave K de la que se derivan las r subclaves Ki.
Redes SP (sustitución-permutación)
Trabajo de Investigación 6
1. Para los siguientes cifradores Feistel: DES, IDEA, BLOWFISH, SAFER consigne el
resumen de:
1. Estructura (parámetros de la función de cifrado Feistel)
2. Algoritmo de cifrado
3. Algoritmo de generación de claves
Una función hash criptográfica, es un conjunto de algoritmos usados para generar claves o
llaves que representen de manera unívoca a un documento o conjunto de datos. Es una
operación matemática que se realiza sobre un conjunto de datos de cualquier longitud, y la
salida es una huella digital, de tamaño fijo e independiente de la dimensión del documento
original.
54
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
dE es la clave privada del emisor que firmará h(M). En el lado del receptor se descifra la
rúbrica r usando la clave pública del emisor eE, al mensaje claro M (de longitudes variables),
obtenido después de aplicar el algoritmo de descifrado si también viniera cifrado, se le aplica
la misma función hash que en la emisión, si el resultado el igual a h(M) se asume que la
firma es auténtica y se acepta el mensaje. La seguridad depende básicamente de la longitud
del resumen h(M)
Como la función hash tiene un número de bits finito, existe la posibilidad de que existan
huellas digitales iguales para mensajes diferentes. Sin embargo, las funciones hash son
ampliamente usados en aplicaciones de seguridad y protocolos de Internet protocolos.
Las funciones hash usadas en criptografía deben cumplir los siguientes requisitos de
seguridad:
Las funciones hash usadas en criptografía deben tener las siguientes propiedades:
a) Autenticación de mensajes
Servicio usado para verificar la integridad del mensaje y que haya sido enviado por quien
dice, asegurando que el contenido no se haya modificado, borrado o rechazado, los mensajes
así autenticados se denominan message digest. Hay diferentes formas de proveer
autenticación de mensajes.
56
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
x El software de encriptación es lento, aun cuando el tamaño del mensaje sea pequeño.
x El costo del hardware de encriptación puede ser prohibitivo, aun cuando se use para DES
chips de bajo costo, el costo se incrementa en función al número de nodos en la red
x El hardware para encriptación está optimizado para tamaños de datos muy grandes, si
esto no es así una gran proporción del tiempo se usará en operaciones de inicialización e
invocación.
x Los algoritmos de encriptación generan costos adicionales por licencias de uso
Una de las funciones hash más usadas es el message authentication code (MAC) o keyed
hash function, la que es usada entre dos nodos que establecen una clave secreta compartida
57
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
para el intercambio de información. MAC toma la clave secreta y un bloque de datos para
producir un valor hash el que se transmite con el mensaje protegido; si la integridad de este
necesita validarse, la función MAC se aplica al mensaje y se compara con el valor MAC
almacenado. Un ataque que altera el mensaje no podrá alterar la MAC sino conoce la clave
secreta, los algoritmos MAC sueles ser más eficientes que los algoritmos de encriptación al
generar bloques de longitud fija
b) Firmas digitales
Funciona de manera semejante a MAC, el valor hash del mensaje y la clave privada del
usuario son encriptados, el que conoce la clave pública del usuario podrá verificar su
identidad
El código hash es protegido usando encriptación asimétrica con la clave privada del
emisor, la autenticación reside en que sólo el emisor habrá producido el código hash
encriptado
c) Otras aplicaciones
58
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
x Autenticación de sistemas
Entonces:
MD5: Ron Rivest 1992. Mejoras al MD4 y MD2 (1990), es más lento, pero con mayor
nivel de seguridad. Resumen de 128 bits. Es una función hash de 128 bits. Como todas
las funciones hash, toma unos determinados tamaños a la entrada, y salen con una
longitud fija (128bits). El algoritmo MD5 no sirve para cifrar un mensaje. La
información original no se puede recuperar, ya que está específicamente diseñado para
que a partir de una huella hash no se pueda recuperar la información. Actualmente esta
función hash no es segura utilizarla, nunca se debe usar
SHA-1: Del NIST, National Institute of Standards and Technology, 1994. Similar a
MD5 pero con resumen de 160 bits. Existen otras nuevas propuestas conocidas como
SHA-256 y SHA-512. Es parecido al famoso MD5, pero tiene un bloque de 160bits en
lugar de los 128bits del MD5. La función de compresión es más compleja que la función
de MD5, por tanto, SHA-1 es más lento que MD5 porque el número de pasos son de 80
(64 en MD5) y porque tiene mayor longitud que MD5 (160bits contra 128bits). SHA-1
59
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
es más robusto y seguro que MD5, pero ya se han encontrado colisiones, por tanto,
actualmente esta función hash no es segura utilizarla, nunca se debe usar.
SHA-2: las principales diferencias con SHA-1 radica en en su diseño y que los rangos
de salida han sido incrementados. Dentro de SHA-2 encontramos varios tipos, el SHA-
224, SHA-256, SHA-384 y SHA-512. El más seguro, es el que mayor salida de bits
tiene, el SHA-512, que tiene 80 rondas (pasos), como el SHA-1 pero se diferencia de
éste en:
http://www.fileformat.info/tool/hash.htm
Algunos protocolos que usan los algoritmos antes citados son:
60
Mgter. Lucy Delgado Barra
SISTEMAS DE SEGURIDAD CRÍTICA
61
Mgter. Lucy Delgado Barra