0% encontró este documento útil (0 votos)
9 vistas38 páginas

C01 Secret Key Encryption-Es

Cargado por

Franklin
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas38 páginas

C01 Secret Key Encryption-Es

Cargado por

Franklin
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 38

Cifrado de clave

secreta
Ing. Fabián Astudillo Salinas, PhD.

Diapositivas realizadas por: Wenliang (Kevin) Du, PhD


Introducción
El cifrado es el proceso de codificar un mensaje de tal manera que solo
las partes autorizadas puedan leer el contenido del mensaje original.
La historia de la encriptación se remonta al año 1900 a.C.
• Dos tipos de encriptación:
• Cifrado de clave secreta: misma clave para cifrado y descifrado
• Cifrado de clave pública: diferentes claves para el cifrado y el descifrado

• En este capítulo nos centramos en el cifrado de clave secreta


Cifrado de sustitución
El cifrado se realiza reemplazando unidades de texto plano con texto
cifrado, de acuerdo con un sistema fijo.
Las unidades pueden ser letras simples, pares de letras, tripletes de
letras, mezclas de las anteriores, etc
El descifrado simplemente realiza la sustitución inversa.
• Dos cifrados de sustitución típicos:
• monoalfabético - sustitución fija en todo el mensaje
• Polialfabético: un número de sustituciones en diferentes posiciones en el
mensaje.
Cifrado de sustitución
monoalfabética
• Cifrado y descifrado
Ruptura del cifrado de sustitución
monoalfabética
• El análisis de frecuencia es el estudio de la frecuencia de letras o
grupos de letras en un texto cifrado.
• Letras comunes: T, A, E, I, O
• Combinaciones comunes de 2 letras (bigramas): TH, HE, IN, ER
• Combinaciones comunes de 3 letras (trigramas): THE, AND, and ING
Ruptura del cifrado de sustitución
monoalfabética
• Resultados del análisis de frecuencia de letras:
Ruptura del cifrado de sustitución
monoalfabética
• Resultados del análisis de frecuencia de Bigrama:
Ruptura del cifrado de sustitución
monoalfabética
• Resultados del análisis de frecuencia del trigrama:
Ruptura del cifrado de sustitución
monoalfabética
• Aplicando las asignaciones parciales...
Data Encryption Standard (DES)
DES es un cifrado de bloques: solo puede cifrar un bloque de datos
El tamaño de bloque para DES es de 64 bits
DES utiliza claves de 56 bits, aunque se introduce una clave de 64 bits
en el algoritmo
Se identificaron ataques teóricos. Ninguno era lo suficientemente
práctico como para causar grandes preocupaciones.
• Triple DES puede resolver el problema del tamaño de la clave de DES
Advanced Encryption Standard
(AES)
AES es un cifrado de bloques
Tamaño de bloque de 128 bits.
• Tres tamaños de clave diferentes: 128, 192 y 256 bits
Modos de encriptación
Modos de encriptación
El modo de cifrado o modo de funcionamiento se refiere a las muchas
formas de hacer que la entrada de un algoritmo de cifrado sea
diferente.
• Algunos ejemplos son:
• Electronic Codebook (ECB)
• Cipher Block Chaining (CBC)
• Propagating CBC (PCBC)
• Cipher Feedback (CFB)
• Output Feedback (OFB)
• Counter (CTR)
Modo Electronic Codebook (ECB)
Modo Electronic Codebook (ECB)
• Uso del comando openssl enc:

Utilizamos el algoritmo AES de 128 bits (tamaño de clave)


La opción -aes-128-ecb especifica el modo ECB
La opción -e indica cifrado
La opción -d indica descifrado
• La opción -K se utiliza para especificar la clave de cifrado/descifrado
Modo Cipher Block Chaining (CBC)

• El objetivo principal de IV es
garantizar que, incluso si dos
textos planos son idénticos, sus
textos cifrados siguen siendo
diferentes, ya que se utilizarán
IVs diferentes.
• El descifrado se puede paralelizar
• El cifrado no se puede paralelizar
Modo Cipher Block Chaining (CBC)
• Using openssl enc command to encrypt the same plaintext, same key, different IV:

Utilizamos el algoritmo AES de 128 bits (tamaño de clave)


La opción -aes-128-cbc especifica el modo CBC
La opción -e indica cifrado
• La opción -iv se utiliza para especificar el vector de inicialización (IV)
Modo Cipher Feedback (CFB)
Un cifrado de bloques se convierte en un
cifrado de flujo.
Ideal para cifrar datos en tiempo real.
No se requiere relleno para el último
bloque.
• El descifrado mediante el modo CFB se
puede paralelizar, mientras que el
cifrado solo se puede realizar
secuencialmente.
Comparación del cifrado con CBC y
CFB

El tamaño del texto sin formato es de 21 bytes


Modo CBC: el texto cifrado es de 32 bytes debido al relleno
• Modo CFB: el tamaño del texto cifrado es el mismo que el tamaño del texto
sin formato (21 bytes)
Modo Output Feedback (OFB)
• Similar aCFB
• Se utiliza como cifrado de flujo
• No necesita relleno
• El descifrado puede
paralelizarse

• El cifrado en el modo OFB se puede


paralelizar
Modo Counter (CTR)
Básicamente, utiliza un contador para
generar los flujos de claves
No se puede reutilizar ningún flujo de claves,
por lo que el valor del contador para cada
bloque se antepone con un valor generado
aleatoriamente llamado nonce
Este nonce cumple la misma función que el
IV con los otros modos de cifrado.
Tanto el cifrado como el descifrado se
pueden paralelizar
• el flujo de claves en el modo CTR se puede
calcular en paralelo durante el cifrado
Modos de cifrado autenticado
Ninguno de los modos de cifrado descritos hasta ahora no se puede
usar para lograr la autenticación de mensajes
Se han diseñado varios modos de funcionamiento para combinar la
autenticación y el cifrado de mensajes.
• Algunos ejemplos son:
• GCM (Galois/Counter Mode)
• CCM (Counter with CBC-MAC)
• OCB mode (Offset Codebook Mode)
Relleno (padding)
Los modos de cifrado de cifrado de bloques dividen el texto sin formato en
bloques y el tamaño de cada bloque debe coincidir con el tamaño de bloque del
cifrado.
No hay garantía de que el tamaño del último bloque coincida con el tamaño del
bloque cifrado.
El último bloque del texto sin formato necesita relleno, es decir, antes del
cifrado, se deben agregar datos adicionales al último bloque del texto sin
formato, por lo que su tamaño es igual al tamaño del bloque del cifrado.
• Los esquemas de relleno deben marcar claramente dónde comienza el relleno,
de modo que el descifrado pueda eliminar los datos rellenos.
• El esquema de relleno más utilizado es PKCS#5
Experimento de relleno

El tamaño del texto sin formato es de 9 bytes.


• El tamaño del texto cifrado (cipher.bin) se convierte en 16 bytes
Experimento de relleno
• ¿Cómo sabe el software de descifrado dónde comienza el relleno??

Se agregan 7 bytes de 0x07


como datos de relleno
Padding Experiment – Special case
• ¿Qué pasa si el tamaño del texto sin formato ya es un múltiplo del
tamaño del bloque (por lo que no se necesita relleno) y sus últimos
siete bytes son todos 0x07

El tamaño del texto sin formato (plain3.txt) es de 16 bytes


El tamaño de la salida de descifrado (plaint3_new.txt) es de 32 bytes (se agrega un bloque completo como
relleno).
• Por lo tanto, en PKCS#5, si la longitud de entrada ya es un múltiplo exacto del tamaño de bloque B, se
agregarán bytes B del valor B como relleno.
Vector de inicialización y errores
comunes
• Los vectores iniciales tienen los siguientes requisitos:
• IV se supone que debe almacenarse o transmitirse en texto plano
• IV no debe repetirse (unicidad).
• La vía intravenosa no debe ser predecible.
Experimento – el IV no debe ser
predecible
• Eva calcula el próximo IV
Experimento – el IV no debe ser
predecible
• Eva adivina que Bob votó por John Smith, por lo que crea P1_guessed y lo XOR con IV_bob y
IV_next, y finalmente construye el nombre de un candidato por escrito.
Experimento – el IV no debe ser
predecible
• Eva le da el nombre de su candidato por escrito (almacenado en P2) a
la máquina de votación, que encripta el nombre usando IV_next como
el IV. El resultado se almacena en C2.
• Si C1 (el voto encriptado de Bob) == C2, entonces Eva sabe con
certeza que Bob ha votado por "John Smith".
Programación mediante API de
criptografía
• Utilizamos las API del paquete
PyCryptodome.
• Línea:
• Inicializa el cifrado
• Encripta los primeros 32 bytes de datos
• Encripta el resto de los datos
• Inicializa el cifrado (iniciar una nueva
cadena)
• Cifra todos los datos
• Inicializa el cifrado para el descifrado
1. Descifra
Programación mediante API de
criptografía
• Los modos que no necesitan relleno incluyen CFB, OFB y CTR.
• Para estos modos, los datos introducidos en el método encrypt()
pueden tener una longitud arbitraria y no se necesita relleno.
• El siguiente ejemplo muestra el cifrado OFB
Ataque a la integridad del texto
cifrado
•El atacante realiza cambios en el texto cifrado (línea 2)

• Resultado
Cifrado autenticado
• Para proteger la integridad, el remitente debe generar un código de
autenticación de mensajes (MAC, Message Authentication Code) a
partir del texto cifrado mediante un secreto compartido por el
remitente y el receptor.
• El MAC y el texto cifrado se enviarán al receptor, que calculará un
MAC a partir del texto cifrado recibido.
• Si el MAC es el mismo que el recibido, el texto cifrado no se modifica.
• Se necesitan dos operaciones para lograr la integridad del texto
cifrado: una para cifrar los datos y otra para generar MAC.
• El cifrado autenticado combina estas dos operaciones independientes
en un modo de cifrado. Por ejemplo, GCM, CCM, OCB
El modo GCM
Programación mediante el modo
GCM La parte única del código anterior es la
generación y verificación de etiquetas.
En la línea 3 , usamos el digest() para obtener
la etiqueta de autenticación, que se genera a
partir del texto cifrado.
Programación mediante el modo
GCM

En la línea 6 , después de alimentar el texto


cifrado al cifrado, invocamos verify() para
verificar si la etiqueta sigue siendo válida.
Experimento: modo GCM
• Modificamos el texto cifrado cambiando el 10º byte a (0x00)
• Descifrar el texto cifrado modificado y verificar la etiqueta

También podría gustarte