Class4cryptVideoclases de criptografía aplicada
Class4crypt c4c9.3 - © jorgeramio 2020
Profesor Dr. Jorge Ramió A.
Clase c4c9.3Aleatoriedad en registros
LFSR primitivosMadrid, martes 26 de mayo de 2020
Temario de las clases Class4crypt
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 2
• Módulo 1: Principios básicos de la seguridad
• Módulo 2: Matemáticas discretas en la criptografía
• Módulo 3: Complejidad algorítmica en la criptografía
• Módulo 4: Teoría de la información en la criptografía
• Módulo 5: Fundamentos de la criptografía
• Módulo 6: Algoritmos de criptografía clásica
• Módulo 7: Funciones hash en la criptografía
• Módulo 8: Criptografía simétrica en bloque
• Módulo 9: Criptografía simétrica en flujo
• Módulo 10: Criptografía asimétrica
• Módulo11: Certificados digitales y protocolos criptográficos
• Módulo12: Temas avanzados en criptografía
Clases publicadas en este canal
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 3
1. Presentación de Class4crypt
2. Ciberseguridad y criptografía
3. Algoritmo RSA
4. Operaciones modulares y conjunto de restos
5. Percepción de la inseguridad según las décadas
6. Criptografía asimétrica y la analogía de los candados
7. Protocolo de intercambio de clave de Diffie y Hellman
8. Ataque man in the middle al intercambio de clave de Diffie y Hellman
9. Cifrado por sustitución polialfabética: algoritmo de Vigenère
10. Criptoanálisis al cifrado de Vigenère por el método Kasiski
11. El homomorfismo de los enteros en la criptografía
12. Inverso aditivo, inverso xor e inverso multiplicativo
13. Cálculo de inversos con el algoritmo extendido de Euclides
14. Algoritmo de exponenciación modular rápida
15. Generación de claves RSA y estándar PKCS#1
16. Cifrado y descifrado con RSA parte 1
17. Cifrado y descifrado con RSA parte 2
18. Introducción a la criptografía moderna
19. Comparación entre cifra simétrica y cifra asimétrica
20. Fundamentos de la cifra simétrica en flujo
21. Registros de desplazamiento realimentados lineales y no lineales
22. Aleatoriedad en registros LFSR con polinomio primitivo
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 4
¡COMENZAMOS!
Módulo 9. Criptografía simétrica en flujo
Lección 9.3. Aleatoriedad en registros LFSR con polinomio primitivo
1. Postulado de Golomb R1
2. Rachas de bits
3. Postulado de Golomb R2
4. Autocorrelación fuera de fase
5. Postulado de Golomb R3
6. Prácticas con el software FlujoLab
Class4crypt c4c9.3
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 5
La seguridad en la cifra en flujo
• La seguridad de los sistemas de cifra en flujo depende exclusivamente de la secuencia cifrante Si que debe tener las siguientes características:• La secuencia Si debe tener una longitud en bits mayor que la del mensaje M
• Aunque la secuencia Si sea pseudoaleatoria, debe tener un apariencia aleatoria
• La semilla K con la cual se inicia el circuito generador de secuencia Si deberá usarse una sola vez (one-time pad)
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 6
Circuito Generador
K
Mi
Si
Ci Ci
Si Circuito Generador
K
Mi
CIFRADO DESCIFRADOSecuencia cifrante
Aleatoriedad de una secuencia de bits LFSR
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 7
• Existen varios test para poder demostrar la aleatoriedad de una secuencia. Por ejemplo, A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applicationsdel NIST, Diehard y Dieharder (ver bibliografía)
Solomon Golomb (1932 – 2016)
• No obstante, en esta primera etapa vamos a usar los test básicos propuestos por Solomon Golomb en Golomb’s Randomness Postulates• R1: Postulado de Golomb 1
• R2: Postulado de Golomb 2
• R3: Postulado de Golomb 3
Postulado R1 de Golomb
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 8
• Equiprobabilidad de bits tomados independientemente
• Deberá existir igual número de ceros que de unos. Se acepta como máximo una diferencia igual a la unidad (en favor de los unos)
1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 T = 15S1
• La secuencia S1 cumple con R1 pues hay 8 unos y 7 ceros
1 1 1 0 1 0 1 1 0 1 0 0 1 0 0 1 T = 16S2
• La secuencia S2 no cumple con R1 pues hay 9 unos y 7 ceros
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 9
• Si una secuencia Si como la indicada cumple con R1, quiere decir que la probabilidad de recibir un bit 1 es igual a la de recibir un bit 0, es decir un 50% o equiprobabilidad
• Por lo tanto, a lo largo de una secuencia Si, independientemente de cuál bit se analiza, en media será igualmente probable recibir un 1 que un 0, pues en la secuencia hay mitad de unos y mitad de ceros
1 1 1 1 0 1 0 1 1 0 0 1 0 0 0Si
Significado del postulado R1 de Golomb
Ejemplo: Si 1 1 1 1 0 1 0 1 1 0 0 1 0 0 01 1 1 1 0 1 0 1 1 0 0 1 0 0 01 1 1 1 0 1 0 1 1 0 0 1 0 0 01 1 1 1 0 1 0 1 1 0 0 1 0 0 01 1 1 1 0 1 0 1 1 0 0 1 0 0 01 1 1 1 0 1 0 1 1 0 0 1 0 0 0
Postulado R2 de Golomb y rachas de bits
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 10
• Equiprobabilidad de próximo bit con secuencia anterior conocida
• En un período T la mitad de las rachas de Si serán de longitud 1, la cuarta parte de longitud 2, la octava parte de longitud 3, etc., lo que se conoce como una distribución geométrica
1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 T = 15Si
• Pero, ¿qué son las rachas de bits en una secuencia binaria?
• Una racha de bits es un conjunto de L bits (L = 1, 2, 3, …) iguales, separados por bits diferentes. Así, 010 es una racha de longitud de uno de 1s, 1001 es una racha de longitud dos de 0s y 01110 es una racha de longitud tres de 1s
Rachas de bits de una secuencia binaria
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 11
Rachas de una secuencia Si de período T = 15
1 1 1 1 0 1 0 1 1 0 0 1 0 0 0
Rachas de 0s
Racha de 00s
Racha de 1s
El próximobit será un 1
El bit anteriorera un 0
Racha de 1111s
Racha de 000s
Racha de 11s
Esta distribución tan particular se comentará más adelante...
Racha de 1s
Distribución de las rachas de bits en Si
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 12
• Las rachas deberán seguir una distribución estadística, de forma que la secuencia cifrante pseudoaleatoria Si tenga un comportamiento lo más parecido a una secuencia aleatoria
• Para que esto se cumpla, es obvio que será necesario que haya mayor número de rachas de longitud corta (L = 1, 2, 3, …) que número de rachas de longitud larga (L = … 7, 8, 9, …), como se observaba en el ejemplo de la diapositiva anterior
• Este tipo de distribución seguirá una progresión geométrica
• Es decir, una secuencia Si podría tener 256 rachas de longitud uno, 128 rachas de longitud dos, 64 rachas de longitud tres, 32 rachas de longitud cuatro, etc., siempre igual cantidad de rachas de 0s que de 1s
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 13
• Si una secuencia Si como la indicada cumple con R2, quiere decir que la probabilidad de recibir un bit 1 o un bit 0, después de haber recibido un conjunto de bits 0s o 1s sigue siendo la misma, es decir un 50%
• En este caso de T = 15, conocido un 1 el par 10 será igual de probable que el par 11. Recibido un 0, las cadenas 00 y 01 son equiprobables. Lo mismo un conocido 00, 01, 10, 11, 001, 010, 011, 100, 101, 110 o 111
• Es decir, existirá una equiprobabilidad a pesar de los bits ya conocidos
1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 T = 15Si
Significado del postulado R2 de Golomb
Si 1 1 1 1 0 1 0 1 1 0 0 1 0 0 01 1 1 1 0 1 0 1 1 0 0 1 0 0 01 1 1 1 0 1 0 1 1 0 0 1 0 0 01 1 1 1 0 1 0 1 1 0 0 1 0 0 01 1 1 1 0 1 0 1 1 0 0 1 0 0 01 1 1 1 0 1 0 1 1 0 0 1 0 0 0
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 14
Importancia del postulado R2 de Golomb
• Cuando una secuencia Si cumple con R2, significa que el registro LFSR pasará por todos los estados o restos posibles del mismo, desde 0000…001 hasta 1111…111, no orden lógicamente
• Por lo tanto, se obtendrá la mayor secuencia posible que puede aportar ese registro, con un periodo Tmáx = 2n – 1
• Esto es importante porque, además de la equiprobabilidad del próximo bit a pesar de conocer los anteriores bits, que es vital de cara para la apariencia de aleatoriedad de la secuencia, obtenemos una secuencia máxima, que también lo estábamos buscando
• Pero esto también entregará pistas al atacante…
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 15
Polinomio primitivo, rachas y m-secuencias
• Cumplir con R2 nos llevará a un periodo Tmáx = 2n – 1, lo que se conoce como m-secuencia
• Las m-secuencias solamente se logran con un LFSR que tenga polinomio asociado primitivo
• Habrá un total de 2n-1 rachas en una m-secuencia (50% serán de 1s y 50% serán de 0s)
• Sea f(x) = x11 + x2 + 1 con periodo Tmáx = 211 – 1 = 2.047
siempresiempre
Postulado R3 de Golomb y AC(k)
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 16
• La autocorrelación fuera de fase AC(k) de una cadena o secuencia de bits, desplazada k bits, debe permanecer constante para todos los desplazamientos, es decir, desde k = 1 hasta k = n – 1
• AC(k) = (A – F)/T, donde A son los aciertos (bits iguales) y F son los fallos (bits diferentes) al comparar la cadena con su desplazada
1 1 1 1 0 1 0 1 1 0 0 1 0 0 0
1 1 1 0 1 0 1 1 0 0 1 0 0 0 1
Si k = 1
A =
F =
A=7; F=8
AC(1) = -1/15
Si
Significado del postulado R3 de Golomb
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 17
1 0 0 1 1 1 0Si
0 0 1 1 1 0 1 AC(1) = (3-4)/7 = -1/7
0 1 1 1 0 1 0
k = 1
AC(2) = (3-4)/7 = -1/7k = 2
k = 3 1 1 1 0 1 0 0 AC(3) = (3-4)/7 = -1/7
1 1 0 1 0 0 1 AC(2) = (3-4)/7 = -1/7k = 4
k = 5 1 0 1 0 0 1 1 AC(3) = (3-4)/7 = -1/7
k = 6 0 1 0 0 1 1 1 AC(3) = (3-4)/7 = -1/7
Aciertos: color
Fallos: color
• Si una secuencia Si cumple con el postulado R3, quiere decir que independientemente del trozo de secuencia elegido o conocido por el atacante, no tendrá una mayor cantidad de información que en otro trozo cualquiera de la misma
• Será imposible entonces deducir cómo continúa la secuencia desde ese trozo u obtener información de otro tipo… “analogía” con el ataque de Kasiski a Vigenère…
Prácticas de postulados de Golomb
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 18
FlujoLab: http://www.criptored.upm.es/software/sw_m001m.htm
Refuerzo: píldora formativa Thoth nº 32
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 19
https://www.youtube.com/watch?v=fLN-jYUlsv8
Conclusiones de la lección 9.3
• Aunque existen muchos test mejores y más eficientes, una buena primera aproximación para poder apreciar las características de aleatoriedad de una secuencia Si cifrante en un LFSR, es estudiar los postulados de Golomb
• El postulado de Golomb R1 habla de la equiprobabilidad de encontrar un bit 1 o un bit 0 en cualquier lugar de la secuencia
• El postulado de Golomb R2 habla de la misma equiprobabilidad de encontrar un bit 1 o un bit 0 en la secuencia, pero conociendo de antemano un conjunto de bits anteriores. Está relacionado con las rachas de bits
• El postulado de Golomb R3 habla de la nula información que debería entregar un trozo de la secuencia Si sobre los bits precedentes o los bits posteriores. Está relacionado con la autocorrelación fuera de fase AC(k)
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 20
Lectura extra recomendada (1)
• A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications, NIST, Revised 2010
• https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-22r1a.pdf
• Diehard tests
• https://en.wikipedia.org/wiki/Diehard_tests
• Dieharder, Robert G. Brown's General Tools Page
• https://webhome.phy.duke.edu/~rgb/General/dieharder.php
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 21
Lectura extra recomendada (2)
• Golomb’s Randomness Postulates
• https://link.springer.com/referenceworkentry/10.1007%2F978-1-4419-5906-5_351
• http://www.iitg.ac.in/pinaki/Golomb.pdf
• Shift Register Sequences, Golomb Solomon, Aegean Park Press, Laguna Hills, CA, 1982
• https://www.amazon.com/exec/obidos/ASIN/0894120484/acmorg-20
• Guion píldora nº 32: ¿Qué son los postulados de Golomb?, Jorge Ramió, 2015
• http://www.criptored.upm.es/thoth/material/texto/pildora032.pdf
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 22
Fin de la lección
Por favor colabora…
• Si, en general, te ha gustado el vídeo…
• Si has aprendido algo nuevo…
• Si has podido reforzar algún conocimiento que ya tenías…
• Entonces, por favor, ponle un “Me gusta” al vídeo
• Si deseas expresar alguna opinión sobre el contenido de esta clase o tienes alguna duda, hazlo aquí en YouTube. Todos los comentarios serán muy bien recibidos y las dudas contestadas a la mayor brevedad posible
• Muchas gracias
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 23
Otras videoclases del proyecto Class4crypt
• https://www.youtube.com/user/jorgeramio
• Más información en canal Twitter• https://twitter.com/class4crypt
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 24
Licencia y créditos
• Estas videoclases y la documentación utilizada en ellas, se encuentran bajo licencia CreativeCommons tipo CC BY-NC-ND 4.0
• Reconocimiento - No Comercial - Sin Obra Derivada
• Permite que otros puedan descargar esta obra y compartirla con otras personas, siempre que se reconozca su autoría, pero no se puede cambiar de ninguna manera su contenido ni se puede utilizar comercialmente
• Música:
• Enter_Blonde, Max Surla, Media Right Productions, YouTube Audio Library - Free Music https://www.youtube.com/audiolibrary/music?nv=1
Class4crypt c4c9.3 - © jorgeramio 2020 Lección 9.3 - página 25