Logo Studenta

TellezGonzalezJorgeLuis_ChaCha20

¡Estudia con miles de materiales!

Vista previa del material en texto

Universidad Nacional Autónoma de México
Facultad de Ingeniería
Criptografía
Grupo: 02 - Semestre: 2023-2
Tarea:
El diseño de ChaCha20.
Fecha de entrega: 02/03/2023
Profesora:
Dra. Rocío Alejandra Aldeco Pérez
Alumno:
Téllez González Jorge Luis
Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________
Introducción
El cifrado en �ujo es una de las técnicas modernas desarrolladas en el ámbito de la
criptografía que, a diferencia del cifrado en bloques que toma al texto en blanco y lo divide
en “bloques” de igual tamaño, este toma completamente el texto en blanco y lo cifra bit por
bit de forma contínua hasta que todo el archivo se encuentre cifrado.
Para llevar este proceso a cabo, se requiere el uso de una función con características
aleatorias que permita generar una secuencia binaria su�cientemente larga y con la menor
cantidad de lapsos de repetición posibles para realizar operaciones XOR bit por bit con el
texto a cifrar. Aunque este enfoque resulta su�ciente si consideramos a la función
completamente aleatoria y sin ningún patrón identi�cable, en la práctica es imposible
computacionalmente generar una secuencia de tales características por completo. Por ello,
generalmente se recurre a la secuencias pseudoaleatorias, que cumplen en parte con las
características anteriormente mencionadas, pero debido a que no pueden ser in�nitas y sin
repeticiones, pueden resultar en problemas graves de seguridad si un atacante logra
encontrar patrones en las secuencias que le permitan llevar a cabo un ataque criptográ�co
por análisis frecuencial.
ChaCha20 es un cifrador en �ujo con una popularidad creciente debido a su
metodología para abordar este problema característico del cifrado en �ujo. Este algoritmo
fue diseñado por Daniel J. Bernstein en 2008 como una mejora del antiguo Salsa20. Su
implementación se ha visto popularizada por el uso extenso que Google le da al momento
de implementarlo en sus protocolos de comunicación segura vía Internet (SSL/TLS).
Figura 1. Daniel J. Bernstein
En la siguiente tarea se abordan brevemente las características de ChaCha20, su
funcionamiento y los intentos de ataque a este algoritmo criptográ�co.
2
Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________
Desarrollo
¿Cómo funciona ChaCha20?
ChaCha20 es un cifrador en �ujo que, en esencia, funciona de forma semejante al esquema
básico de un cifrador de estas características: cifrado bit por bit empleando una función
XOR. Sin embargo, este algoritmo introduce parámetros adicionales para considerar las
debilidades inherentes del uso de funciones pseudoaleatorias:
● Clave: cadena secreta que se usa como una seed para la generación de la secuencia
pseudoaleatorias que se usará para aplicar la operación XOR con el archivo a cifrar.
● Nonce (Number Used Once): número arbitrario que se utiliza como factor de
aleatoriedad y como identi�cador único de una sesión de cifrado y comunicación.
Este valor se descarta posterior a su uso.
● Número de bloque: identi�cador de un bloque usado para cifrar una parte del
archivo en especí�co.
Figura 2. Estructura básica de ChaCha20.
Figura 3. Funcionamiento de ChaCha20: la secuencia se opera con XOR bit a bit con el mensaje .𝑘
𝑛
𝑚
𝑛
3
Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________
Como se puede observar en la Figura 3, en esencia el algoritmo sigue el patrón de
funcionamiento del cifrador en �ujo típico por medio de un XOR; generando una salida
cifrada bit por bit. El funcionamiento interno de mayor complejidad del mismo está en la
generación de secretos: la secuencia pseudoaleatoria con la que se opera.
En principio, el algoritmo recibe las entradas mencionadas anteriormente y las
acomoda en un arreglo matricial de 4x4 donde cada celda contendrá un valor de 32 bits por
un total de 512 bits. En la primera �la siempre se colocará una constante determinada por la
forma binaria de la cadena “expand 32-byte k”, y posteriormente se colocarán los parámetros
recibidos de la siguiente manera:
Figura 4. Arreglo matricial del KSG.
Con la matriz de�nida, a continuación se realizará un procedimiento para mezclar
en una serie de rondas todos los bits del arreglo de forma que este sea resistente a un
atacante externo que intente utilizar cualquier técnica de criptoanálisis conocida; a este
procedimiento se le conoce como un round o una ronda y consiste en lo siguiente:
● Sumas en mod 32.
● Rotaciones por desplazamiento de bits.
● Operaciones XOR.
En total, ChaCha20 realiza un total de 20 rondas antes de enviar la salida y operar
con el texto en blanco. 10 de estas rondas se realizan con los valores binarios de la matriz en
forma columnar y las otras 10 se realizan en forma diagonal. A continuación se muestra la
forma en que ChaCha20 considera lo anterior para realizar las rondas:
4
Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________
Figura 5. Arreglos en columna y diagonal para las rondas de ChaCha20.
A continuación, se muestra el siguiente diagrama que ejempli�ca las operaciones
realizadas durante la primera ronda:
Figura 6. Función de generación de secretos de ChaCha20.
5
Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________
Empezando con la primera ronda de ChaCha20 con una columna, se realizarán a
continuación las siguientes operaciones:
1. Se toma a y b y se suman entre sí, guardándose el resultado en a.
2. El resultado de a+b se toma y se realiza un XOR con d.
3. Lo obtenido anteriormente se desplaza un total de 16 bits a la izquierda. A esto lo
llamaremos .𝐷
16
4. Ahora se sumará con c y se guardará allí.𝐷
16
5. Se aplica un XOR entre ( ) y b.𝐷
16
+ 𝑐
6. El resultado del paso anterior se desplaza un total de 12 bits a la izquierda. Lo
anterior se llamará .𝐵
12
7. Se suma a y , y se guarda en a.𝐵
12
8. Se aplica un XOR entre ( ) y d.𝐵
12
+ 𝑎
9. El resultado se desplaza 8 bits a la izquierda y se guarda en d. Se llamará 𝐷
8
.
10. se suma con c y se guarda el resultado en c.𝐷
8
11. Se aplica un XOR entre ( ) y b.𝐷
8
+ 𝐶
12. El resultado anterior se desplaza 7 bits a la izquierda y se guarda en b.
Aunque en teoría al aplicar las operaciones de forma inversa es posible recuperar el
arreglo original de entrada a la matriz, ChaCha20 evita este problema aplicando una suma
entre el bloque original, palabra por palabra, a toda la matriz tras haberse realizado cada una
de las 20 rondas. Debido a que el atacante no conoce los valores de la matriz original, le será
imposible conocer el otro elemento de la suma (los bloques de la matriz original) y, por
tanto, no podrá revertir las operaciones realizadas.
¿Cuáles son sus ventajas?
El diseño de Bernstein se basa en un diseño ARX (Addition, Rotation, XOR) que, pese a
usar operaciones elementales, permite llevar a cabo permutaciones de manera e�ciente
reduciendo el acceso a memoria y siendo amigable con el uso de memoria caché durante
tiempo de ejecución.
Entre otras ventajas, se pueden mencionar las siguientes:
6
Facultad de IngenieríaCriptografía______________________________________________________________________________________________________________
● Seguridad: ChaCha20 es considerado uno de los cifradores más seguros que existen
en la actualidad y es altamente resistente a los ataques de criptoanálisis más comunes.
● Velocidad: ChaCha20 es uno de los cifradores más rápidos en términos de
velocidad de cifrado y descifrado gracias a su diseño simple y e�ciente
computacionalmente; a diferencia de AES que sufre problemas de rendimiento en
hardware no especializado. Esto marca una diferencia notable en dispositivos
móviles.
● Implementación: ChaCha20 es fácil de implementar y se puede ejecutar en una
amplia gama de dispositivos, desde dispositivos móviles hasta servidores de alta
potencia. Gracias a las implementaciones de Google, existe amplia documentación
del mismo y una gran comunidad trabajando con el mismo.
● Claves largas y nonces: ChaCha20 usa claves de cifrado de 256 bits, lo que
proporciona un alto nivel de seguridad. Además, ChaCha20 usa un nonce (número
utilizado solo una vez) de 96 bits, lo que añade un importante factor de aleatoriedad
y seguridad al momento de generar la secuencia pseudoaleatoria.
● Diseño transparente y revisable: ChaCha20 es un algoritmo de cifrado de código
abierto, lo que implica que su diseño y funcionamiento pueden ser revisado y
auditado por otras personas. Esto aumenta la con�anza en su seguridad y reduce la
posibilidad de puertas traseras o vulnerabilidades ocultas.
¿Hay algún ataque conocido a este algoritmo?
ChaCha20 se caracteriza por ser inmune a los ataques de tipo Padding-Oracle como
Lucky13. Este ataque aprovecha una vulnerabilidad en el modo de cifrado CBC, que
permite a un sistema detectar si el relleno de un mensaje cifrado es válido o no.
Aunque esta información parece no proporcionar mucha información sobre el
contenido del mensaje, en realidad puede ser su�ciente para descifrar el mensaje completo.
Si se utiliza de manera adecuada, esta pequeña cantidad de información puede ser utilizada
para descifrar un mensaje completo cifrado con el modo CBC.
7
Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________
El ataque conocido como Lucky13 afecta a las implementaciones del protocolo de seguridad
de capa de transporte (TLS) y aprovecha una debilidad en su diseño para obtener
información en texto claro a partir de texto cifrado. El nombre del ataque se debe a que los
paquetes cifrados de TLS tienen un encabezado de trece bytes que se utilizan en uno de los
cálculos criptográ�cos que realiza este protocolo.
ChaCha20 se caracteriza por no utilizar el modo CBC, lo que implica que no es
vulnerable al ataque Lucky13 ni a otros ataques de tipo Padding-Oracle. Adicionalmente,
hasta la fecha no se ha encontrado ningún ataque criptográ�co exitoso contra el algoritmo
de cifrado por �ujo ChaCha20. Ha sido ampliamente analizado y se considera que es uno
de los cifradores más seguros y con�ables disponibles en la actualidad.
Cabe señalar, sin embargo, que usar este algoritmo con una cantidad menor de
rondas podría comprometer su e�cacia. El criptógrafo Jean-Philippe Aumasson sugiere que
8 rondas de ChaCha son su�cientes. Aumasson informa que se conoce un ataque a
ChaCha con 6 rondas que requiere alrededor de 2116 operaciones, pero que ChaCha con 5
rondas es de�nitivamente vulnerable, ya que requiere alrededor de solo 216 operaciones
para ser descifrado.
Conclusiones
ChaCha20 es una alternativa con�able y segura a los cifradores simétricos más comunes,
como AES. ChaCha20 presenta una serie de ventajas muy importantes que fueron
expuestas, como es su capacidad para generar secuencias pseudoaleatorias de forma e�ciente
y con un fuerte factor de aleatoriedad, su resistencia a ciertos tipos de ataques criptográ�cos
y su fácil programación e implementación en hardware no dedicado al cifrado.
Adicionalmente, ChaCha20 es un algoritmo que ha sido diseñado especí�camente
en la seguridad y la simplicidad de su algoritmo y ha sido evaluado y estudiado por la
comunidad criptográ�ca durante muchos años. Todo esto hace de ChaCha20 una excelente
opción para aquellos que buscan un cifrado seguro y con�able para proteger su
información. Dado que su implementación es amplia en el sector móvil en sistemas
operativos como Android, es posible a�rmar que su soporte continuará estando vigente
hasta que se descubra una vulnerabilidad que, afortunadamente, no existe en la actualidad.
8
Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________
Referencias
(n.d.). Chacha20 Algorithms. Retrieved March 2, 2023, from
https://xilinx.github.io/Vitis_Libraries/security/2021.1/guide_L1/internals/chacha
20.html
(2007, December 25). The Salsa20 family of stream ciphers. Retrieved March 2, 2023, from
https://cr.yp.to/snu�e/salsafamily-20071225.pdf
Bernstein, D. J. (n.d.). The design of Chacha20. Loup Vaillant. Retrieved March 2, 2023,
from https://loup-vaillant.fr/tutorials/chacha20-design
Bursztein, E. (2014, April 28). Protocolos ChaCha20 y Poly1305 para reforzar conexiones
HTTPS. Segu-Info. Retrieved March 2, 2023, from
https://blog.segu-info.com.ar/2014/04/protocolos-chacha20-y-poly1305-para.html
Carrasco, P. G. (2020, April 7). Seguridad SSL/TLS: LUCKY 13. Blog de Internet Security
Auditors. Retrieved March 2, 2023, from
https://blog.isecauditors.com/2020/04/seguridad-ssl-tls-lucky13.html
D-Cryp7. (2022, September 15). Criptografía Aplicada #4 - ChaCha20 e Introducción al
Cifrado de Bloques. YouTube. Retrieved March 2, 2023, from
https://www.youtube.com/watch?v=7-CiRK66gSM
Lucky 13 and other padding oracle attacks on CBC ciphers. (2022, March 20). Sjoerd
Langkemper. Retrieved March 2, 2023, from
https://www.sjoerdlangkemper.nl/2022/03/20/padding-oracle-attacks-lucky13/
9
Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________
RFC 8439: ChaCha20 and Poly1305 for IETF Protocols. (n.d.). RFC Editor. Retrieved
March 2, 2023, from https://www.rfc-editor.org/rfc/rfc8439
Rodríguez, F. (2022, August 1). ¿Qué es un padding oracle attack? KeepCoding. Retrieved
March 2, 2023, from https://keepcoding.io/blog/que-es-un-padding-oracle-attack/
10

Continuar navegando

Materiales relacionados