Criptografía Moderna – Criptosistemas Simétricos o de Clave Secreta:
Canal seguro
– Criptosistema Criptosistemas s Asimétricos o de Clave Pública:
Clave pública
Clave privada
Criptografía Moderna Criptosistemas modernos
Clave secreta
Cifrado en flujo
Clave pública
Cifrado en bloque
Cifrado en Flujo Clave
Clave
Si
Si Generador pseudoaleatorio
mi
Generador pseudoaleatorio
ci
mi
Cifrado en Flujo •El emisor usa una semilla secreta y un algoritmo determinista (generador pseudoaleatorio) para generar una secuencia binaria. •Con la secuencia generada y el texto en claro expresado en binario se realiza una xor bit a bit. •Realizando la misma operación con el texto cifrado y la misma secuencia pseudoaleatoria se recupera el texto en claro.
Cifrado en Flujo •La seguridad del sistema se basa únicamente en las propiedades de la secuencia cifrante: •Periodo T muy alto. •Pseudoaleatoriedad: Postulados de Golomb y Tests estadísticos •Gran Complejidad lineal: Cantidad de secuencia necesaria para describir el resto
Pseudoaleatoriedad Postulados de Golomb : 1. Unos y ceros deben aparecer con idéntica frecuencia. 2. En cada periodo, la mitad de las rachas es de longitud 1 la cuarta parte de longitud 2, la octava de 3, etc. Las rachas de ceros y de unos deben aparecer con idéntica frecuencia para cada longitud. 3. Autocorrelación AC(k)=(NºCoinc - NºDif)/T. El número de coincidencias entre una secuencia y su desplazada k posiciones no debe aportar ninguna información sobre periodo, para cualquier k no múltiplo de T.
Golomb.exe
Postulados de Golomb Ejemplos: • 100011110101100100 Tiene 9 ceros y 9 unos. Supera el 1er postulado Tiene 10 rachas en total. 3+2 de longitud 1, supera el 2 postulado 1+2 de longitud 2, supera el 2 postulado 0+1 de longitud 3, supera el 2 postulado 1+0 de longitud 4, supera el 2 postulado No supera el 3 postulado por desplazamiento 1: 100011110101100100 010001111010110010, coincidencias:8, diferencias:10 • 1011001010000111 Tiene 8 ceros y 8 unos. Supera el 1er postulado Tiene 8 rachas en total. 2+2 de longitud 1, supera el 2 postulado 1+1 de longitud 2, supera el 2 postulado
Postulados de Golomb • 1000011001001111101110001010110 Tiene 15 ceros y 16 unos. Supera el 1er postulado Tiene 16 rachas en total. 4+4 de longitud 1, supera el 2 postulado 2+2 de longitud 2, supera el 2 postulado 1+1 de longitud 3, supera el 2 postulado 0+1 de longitud 4, supera el 2 postulado 1+0 de longitud 5, supera el 2 postulado Para todos los desplazamientos, coincidencias:15, diferencias:16. Supera el 3 postulado.
Tests Estadísticos •Test de frecuencias •Test de rachas •Test de autocorrelación •Test serial •Test póker Forman parte de la batería de tests del estándar FIPS hasta 2002 del NIST Normalmente, los estadísticos para estos test son tales que si se obtiene un valor grande, se deduce que la secuencia no es pseudoleatoria.
Generadores Congruenciales Generador Lineal
X i+1 = a X i
+ b (modm)
•El periodo es máximo si: –b es primo con m –a-1 es múltiplo de p para todo p primo que divida a m –a-1 es múltiplo de 4 si m es múltiplo de 4
•Estas condiciones se cumplen para m=2r, a=4k+1, b=2t+1, siendo r,k y t enteros positivo •Con 3 elementos, si se conoce m, se rompe con un sistema de 2 ecuaciones y 2 incógnitas
Generadores Congruenciales QRP: Problema de la Residuosidad Cuadrática:
Dados a y N, encontrar x primo con N tal que x 2=a (mod N) –Es
polinomialmente
resoluble
mediant
TªR.Chinos si se conocen p y q, e intratable si n se conocen –Si no se conoce la factorización de N, es tan difíci como el problema de la factorización.
Generadores Congruenciales •Generador Blum Blum Shub p, q (= 3 mod 4), n = pq X número aleatorio en [1, n − 1] primo con n. s0 = X2 (mod n) s i+1 = si2 (mod n) zi = el bit menos significativo de si. La secuencia de salida es z1, z2, …, zl Criptográficamente
seguro gracias a la dificultad (no demostrada) del QRP y de la factorización, pero con un coste computacional muy grande. Se
suele usar para generación de claves de sesión.
Generadores Congruenciales Generador Blum Blum Shub
•Para garantizar un periodo, hay que usar primos especiales: p=2p1+1, con p1=2p2+1, siendo p1 y p2 primos impares. •Aún así, el periodo no es n ya que hay varios ciclos, y la elección de la semilla determina el ciclo
Generadores Congruenciales RC4 •Diseñado por Rivest en 1987 •El algoritmo no fue publicado, pero en 1994 en Internet apareció una descripción •Se usa en SSL (navegadores de Internet) y en redes inalámbricas Wi-Fi (WEP) •De implementación sencilla y rápida, y orientado a operacion con bytes, por lo que es muy rápido en software •Permite claves de diferentes longitudes de 1 a 256 bytes
Generador RC4 •La clave secreta se usa para inicializar un vector de estado S= {Si}i=0,1,…,255. Después no se vuelve a usar. •El vector de estado S contiene siempre una permutación de todos los números enteros de 1 byte. •Cada vez que se va a cifrar/descifrar un byte de texto, se genera un byte de secuencia cifrante S t y después se vuelven a permutar los bytes de S. •Las permutaciones en S se hacen mediante sucesivos intercambios
Generador RC4 Inicialización: 1. Si = i, i=0,1,...,255 2. Rellenar el array K i i=0,1,...,255 repitiendo la semilla de clave secreta 3. f=0 4. Desde i = 0 hasta 255 hacer: RC4.exe f = (f + Si + K i) (mod 256) Intercambiar Si y Sf Generación de secuencia cifrante: Inicializar i y f a 0, y calcular cada byte St de la secuencia cifrante mediante: 1. i = (i + 1) (mod 256); f = (f + Si) (mod 256) 2. Intercambiar Si y Sf 3. t = (Si + Sf ) (mod 256)
Ejemplo de RC4 Clave secreta = K= Inicializacion: S=
01 23 45 67 89 AB CD EF
f=(0+S[0]+K[0])=1 (mod 256) Swap 01 <--> 00 f=(1+S[1]+K[1])=36 (mod 256) Swap 24 <--> 00
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1 … 01 00 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1 …
01 24 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1 20 21 22 23 00 25 26 27 28 29 2A 2B 2C 2D 2E 2 … f=(36+S[2]+K[2])=36+02+69=107 (mod 256) Swap 6B <--> 02 01 24 6B 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1 20 21 22 23 00 25 26 27 28 29 2A 2B 2C 2D 2E 2 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5 60 61 62 63 64 65 66 67 68 69 6A 02 6C 6D 6E 6
Ejemplo de RC4 S final tras inicialización 01 38 6B 3D AC 47 E5 1B 8B 10 E8 D1 66 26 F9 E7 C9 35 7B 0E 55 4A 2A 4F E1 94 48 22 D2 21 43 60 23 15 14 EB 68 6D 33 82 F1 77 0C F8 AD 93 80 CF C5 56 8C 92 E3 9F 40 CE 09 B8 99 C8 5A 5C 50 7D 13 74 4C A6 73 DD 59 0B 1C 52 41 C7 9C 19 AF ED EF 81 27 D5 E0 54 D3 E4 07 9D FC FE 91 20 45 F7 6E 03 08 DB 61 62 FB B2 BA 9B 72 39 1E 46 70 BE CA 25 17 CC 1F 2D 31 B6 28 B3 1D 7F 3F F5 44 8A 0D 84 BD FD B4 00 8F 58 02 5F CD BF 63 2E 6F 36 A8 34 6C 85 53 C4 71 3A 05 95 4E A5 7E 30 B1 9E 86 5E A4 AE 2C D0 CB B5 5D 1A E9 5B 8D 65 9A 11 78 C0 7A D4 06 83 B0 E2 D6 75 37 4B 49 DC DF 8E 16 69 29 18 76 AA 67 EA A9 24 A3 D9 98 2F 3B D8 79 12 EE C2 B9 F4 E6 F6 3E BC BB 3C A0 88 DE 57 96 87 C1 04 DA C6 97 0A 2B 51 4D D7 B7 7C F3 FF F0 F2 AB FA 64 90 EC C3 89 A2 32 A1 42 A7 0F 6A
Generación de 1º byte de secuencia cifran i=f i = (i + 1)=1 (mod 256), f = (f + S1)=3 swap S[01] <--> S[ 09 <--> t = (S[1] + S[38])= 09(hx+38(hx =41(hx (mod 2 1º byte de secuencia cifrante= 74(hx = 0111 01 01 38 6B 3D AC 47 E5 1B 8B 10 E8 D1 66 26 F9 C9 35 7B 0E 55 4A 2A 4F E1 94 48 22 D2 21 43 23 15 14 EB 68 6D 33 82 F1 77 0C F8 AD 93 80 C5 56 8C 92 E3 9F 40 CE 09 B8 99 C8 5A 5C 50 13 74 4C A6 73 DD 59 0B 1C 52 41 C7 9C 19 AF EF 81 27 D5 E0 54 D3 E4 07 9D FC FE 91 20 45 6E 03 08 DB 61 62 FB B2 BA 9B 72 39 1E 46 70 CA 25 17 CC 1F 2D 31 B6 28 B3 1D 7F 3F F5 44 0D 84 BD FD B4 00 8F 58 02 5F CD BF 63 2E 6F A8 34 6C 85 53 C4 71 3A 05 95 4E A5 7E 30 B1 86 5E A4 AE 2C D0 CB B5 5D 1A E9 5B 8D 65 9A 78 C0 7A D4 06 83 B0 E2 D6 75 37 4B 49 DC DF 16 69 29 18 76 AA 67 EA A9 24 A3 D9 98 2F 3B 79 12 EE C2 B9 F4 E6 F6 3E BC BB 3C A0 88 DE 96 87 C1 04 DA C6 97 0A 2B 51 4D D7 B7 7C F3
Seguridad de RC4 •Genera secuencias con periodos bastante grandes >10100 •Es inmune a los criptoanálisis diferencial y lineal •Existen claves débiles. En una de cada 256 claves posibles, los bytes que se generan tienen una fuerte correlación con un subconjunto de los bytes de la clave •Es sensible a estudios analíticos del contenido del vecto S. •Se puede recuperar la clave empleada si la inicialización del algoritmo cumple determinadas premisas muy comunes, y se intercepta el suficiente número de mensajes
Cifrado en WEP 1. Se obtiene el Integrity Check Value ICV del mensaje M haciendo un Chequeo de Redundancia Cíclica de 32 bits CRC32 del mensaje M, y se concatena con M 2. Se genera la secuencia cifrante con RC4 usando un vector de inicialización IV y una semilla secreta compartida k 3. Se calcula el texto cifrado mediante C = (M,ICV) XOR RC4(IV,k) 3. Se transmite (IV,C) Mensaje Secuencia Cifrante =
IV
Texto cifrado
ICV RC4(IV,k)
xo
Cifrado en WEP
Descifrado en WEP
Inseguridad de WEP •El estándar no especifica cómo se establece la clave secreta compartida k . Aunque permite que haya una tabla que asocie una clave con cada nodo, en la práctica la misma clave es compartida entre todos los nodos y el Punto de Acceso de una misma red, y es usada tanto para cifrado como para autenticación. •El estándar define una longitud de clave de 64 bits en la versión débil, y de 256 bits en la versión fuerte (802.11b), pero en realidad son de 40 y 232 bits, ya que los otros 24 bits son del IV. •La implementación práctica es mala ya que se suele reutilizar el I para diferentes transmisiones, lo que permite no sólo criptoanalizar información enviada, sino insertar nuevos mensajes cifrados. •En el método de autenticación mediante clave compartida un atacante que capture el reto y respuesta de una autenticación puede deducir la secuencia cifrante y colarse en la red
Inseguridad de WEP •¿Cuántos paquetes cifrados necesitamos interceptar para romper WEP? –De 2 a 10 millones •Hay dos herramientas en Internet que implementan totalmente el ataque: - Wepcrack: wepcrack.sourceforge.net/ -Airsnort: airsnort.shmoo.com/
Inseguridad de WEP •Debida a Características lineales de CRC32 -Si un atacante intercepta un mensaje cifrado c, puede sustituirlo, con un ICV’ válido para un mensaje m’ falso: 1.- Escoge una diferencia D entre m y m’: m’ = m + D 2.- Calcula CRC(D) ya que como el CRC-32 es lineal, el nuevo ICV’ se relacionará con el ICV de m mediante: ICV’ = ICV + CRC(D) 3.- Al sumar D a la parte de mensaje cifrado, y CRC(D) a la parte de chequeo cifrado, el ICV’ será valido para el nuevo texto cifrado c’ ya que c’ = c + D = k + (m + D) = k + m’
Inseguridad de WEP
WPA-WPA2
En 2003 se lanzó WPA como mecanismo de seguridad de transición, con: distribución dinámica y automática de claves, utilización más robusta del vector de inicialización de doble longitud (48 bits) y nuevas técnicas de integridad y autentificación. Incluye:
IEEE 802.1X : nuevo control de acceso. Las estaciones tratan de conectarse a un puerto del AP, que permanece bloqueado hasta que el usuario se autentifique mediante el protocolo EAP y un servidor AAA (Authentication Authorization Accounting) como puede ser RADIUS.
EAP: protocolo para llevar a cabo las tareas de autenticación, autorizació y contabilidad, utilizado entre la estación y el servidor RADIUS.
TKIP (Temporal Key Integrity Protocol): protocolo encargado de la generación de la clave para cada trama.
MIC (Message Integrity Code) o Michael: código que verifica la integrida de los datos de las tramas.
WPA2 (IEEE802.11i), desde 2005, usa Rijndael en vez de RC4
Generadores de Secuenci •Registro de Desplazamiento Realimentado: •Linealmente. •No Linealmente.
Función
de realimentación g no singular: Secuencia periódica Máximo periodo = 2L Secuencia deBruijn
eg s ro e
salida
esp azam en o ea men a Linealmente s0
s1
s2
s3
... sL-2
sL-1 new value
Realimentación : XOR
•Tiene dos partes: •contenido binario de las etapas LFSR.html •función de realimentación XOR •A cada golpe de reloj se realimenta con un bit producido por la función de realimentación •El periodo máximo de las secuencias producidas por un RDR de longitud L es 2L-1 •La función de realimentación determina dicho periodo
RDRL
Polinomio de realimentación: C(x)=1+c1x+c2x2 +…+cLxL
Periodo del RDRL Ejemplo:
C(x)=1+x2+x
Periodo del RDRL Ejemplo:
C(x)=1+x+x2+x3+
Per o o e RDRL Ejemplo:
C(x)=1+x3+x4
Periodo del RDRL •Factorizable: Periodo depende de semilla •Irreducible: Periodo no depende de semilla, y divid a 2L-1 •Primitivo: Periodo máximo 2 L-1 e independiente de la semilla. m-LFSR •Nº de polinomios primitivos de grado L =φ(2L-1)/L
L 1 2 3 4 5
nº pol 1 1 2 2 6
L 6 7 8 9 10
nº pol 6 18 16 48 60
L 11 12 13 14 15
nº pol 176 144 630 756 1800
L 16 17 18 19 20
nº pol 2048 7710 8064 27594 24000
Polinomio Primitivo •Un polinomio irreducible C(x) de grado L es x
primitivo sii es divisor de
2 L −1
−1
pero
no divide a xi -1 para ningún valor i<2L-1 PolyInfo.html •Ejemplos: grado
2
3
4
5
6
7
9
11
exponentes
2,1
3,1
4,1
5,2
6,1
7,1
9,4
10,3 11,2
13
u ♦
r
Ejemplo:
C(x)=1+x+x4 Postulados de Golomb: 1. 7 ceros, 8 unos 2. 0, 1 :2 veces, 00,11: 1 vez 000: 1 vez 1111: 1 vez 3. AC(k)=-1/15
1000 0001 0011 0111 1111 1110 1101 1010 0101 1011 0110 1100 1001 0010
Complejidad Lineal •Complejidad Lineal: Cantidad mínima de secuencia necesaria para poder generar el resto. •Cualquier secuencia periódica se puede generar con un RDRL •El Algoritmo de Berlekamp-Massey sirve para calcular la complejidad lineal de una secuencia binaria cualquiera, e.d., el menor RDRL que permite generar dicha secuencia •Entrada: Secuencia Binaria •Salida: L y C(x)
Complejidad Lineal L’’ L’ L Nº bits
Algoritmo de Berlekamp-Masse Lema Sea {ti}i≥0 una secuencia que empieza con 00 ... k-1 01. Entonces, Lk ({ti}i≥0)=k Lema Sean {si}i≥0 y {ti}i≥0 dos secuencias. Entonces para todo k ≥ 0, Lk ({si+ti}i≥0) ≤ Lk ({si})+ Lk ({ ti}i≥0) Lema Sea {si}i≥0 una secuencia. Supongamos que el LFSR con polinomio característico f (k) (x) no produce sk . Entonces Lk+1 ≥ max {Lk , k + 1 - Lk ]. Teorema Sea {si}i≥0 una secuencia. Supongamos que el LFSR con polinomio característico f (k)(x) no produce s k . Entonces Lk+1=max {Lk , k+1–Lk }
Dem: Por inducción sobre k. Se ve para la secuencia 00...k 0, que puede generarse con el LFSR de polinomio f (k) (x) =1 de grado L k =0, mientras que la secuencia 00...k 01 puede generarse con cualquier LFSR de longitud k+1 pero no con uno de longitud k, luego L k+1 =k+1-L k . Supuesto cierto para k, lo vemos para k+1. Si el polinomio obtenid para k genera el (k+1)º bit ya estaría porque L k+1 =L k . En caso contrario, denotando m al último incremento de L k , por hip. ind. sabemos que L m+1 =m+1-L m . Si denotamos L=max{L k ,k+1-L k }, se tiene que f (k+1) (x)= x L-Lk f (k) (x)+x L-(k+1-Lk) f (m) (x) y es de grado L.
Complejidad Lineal Algoritmo de BerlekampMassey si stop
no
N
C(z)= C’(z)=1 L=N=0 e=1
Bermass.ex
d=d N+c1 d N-1+...+cL d N-L d=0
si
no C’’(z)=C(z) C(z)=C(z)+ze C’(z) no
N<2L
si
e=e+
Algoritmo de Berlekamp-Massey Ejemplo:
11010110
bit d e L
N C(z)
C’(z)
C’’(z)
1
1 1 0
0 1
1
1
1
0 1 1
1 1+z
1
1
0
1 2 2
2 1+z+z2
1
1+z
1
0 1 2
3 1+z+z2
1+z
1+z
0
1 2 3
4 1+z+z3
1+z
1+z+z2
1
1 1 3
5 1+z2
1+z+z2 1+z+z3
1
1 2 4
6 1+z3+z4 1+z+z2 1+z2
0
1 1 4
7 1+z+z4
1+z2
1+z3+z4
RDRL
ASCII y Criptoanálisis •Si se usa ASCII con el 1º bit de paridad para el texto original y se cifra en flujo, la redundancia introducida por la paridad puede usarse para un ataque sólo con texto cifrado. •Como cada 1º bit es la suma mod 2 de los 7 siguientes, la suma de lo 8 bits de cada byte de texto cifrado produce la suma conocida d los 8 bits correspondientes de la clave: c0+c1+…+c7=(m0+k 0)+(m1+k 1)+…+(m7+k 7)=k 0+k 1+…+k 7 •La secuencia resultante de dichas sumas puede considerarse como la suma de 8 secuencias decimadas del generador de secuencia cifrante. •Dado que sumar un número de fases de una secuencia no cambia el polinomio generador, el generador de la secuencia suma produce también la secuencia original. •Por tanto, usando el algoritmo de Berlekamp-Massey sobre la secuencia suma de los bits de cada byte de texto cifrado se obtiene el RDRL que genera la secuencia cifrante, y a partir ahí se puede calcular
ASCII y Criptoanálisis A B C D E F G H I J K L M
01000001 01000010 11000011 01000100 11000101 11000110 01000111 01001000 11001001 11001010 01001011 11001100 01001101
N O P Q R S T U V W X Y Z
01001110 11001111 01010000 11010001 11010010 01010011 11010100 01010101 01010110 11010111 11011000 01011001 01011010
ASCII y Criptoanálisis •Ejemplo: Un atacante sabe que el texto original está en ASCII e intercepta: T.Cif. 01000110 10100100 00011001 00100100 11110001 01010101 Suma
1
1
1
0
1
0
Berlekamp-Massey sobre la secuencia suma de los bits de cada byte de texto cifrado interceptado produce:
que genera la secuencia cifrante. Luego en cuanto se intercepten 3 bits de secuencia cifrante se podrá generar la secuencia cifrante completa, y de ahí el texto original: Clave 11101001 11010011 10100111 01001110 10011101 00111010 T.Ori. 10101111 01110111 10111110 01101010 01101100 01101111