Seguridad Informática

Documentos relacionados
Criptografía y Seguridad de Datos Introducción a la Criptografía: Confidencialidad de los mensajes

Clase 4: 23/03/ Modos de operación para cifradores de bloque

Esquema de cifrado DES

Semana 13: Encriptación. Cifrado simétrico

D.E.S. (Data Encryption Standard) Cifrado Convencional ANTECEDENTES

D.E.S. (Data Encryption Standard) Cifrado Convencional

3. Algoritmo DES (Data Encription Standard)

Conceptos previos. Algoritmos de cifrado: DES, AES, IDEA, RC5

Criptografía binaria block ciphers y funciones de hash

SISTEMAS DE TRANSMISIÓN Y REDES INALÁMBRICAS INTRODUCCIÓN

Simulación I. Investigación Operativa, Grado en Estadística y Empresa, 2011/12

Métodos Encriptación. Tópicos en Sistemas de Computación Módulo de Seguridad

Ingeniería en Informática

Algoritmos de cifrado Definir el problema con este tipo de cifrado

CRIPTOGRAFÍA 5º CURSO DE INGENIERÍA INFORMÁTICA

Capítulo 12 Cifrado Simétrico en Bloque

Apuntes de Seguridad I

Mecanismos de protección. Xavier Perramon

Tema 11 Introducción a la Criptografía

Descripción del algoritmo DES (Data Encryption Standard)

Las condiciones que debe reunir una comunicación segura a través de Internet (o de otras redes) son en general las siguientes:

VPN sitio a sitio. Vicente Sánchez Patón I.E.S Gregorio Prieto. Tema 3 SAD

ALGORITMOS DE ENCRIPTACIÓN, DESENCRIPTACIÓN - EVALUACIÓN Y VERIFICACIÓN

Bases de la Firma Electrónica: Criptografía

Redes de comunicación

Criptografía Básica. Reinaldo Mayol Arnao Centro de Tecnologías de Información Universidad de Los Andes 2006

CRIPTOGRAFIA. Universidad Tecnológica Centroamericana

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Procedimientos de Cifrado en flujo. Amparo Fúster Sabater Instituto de Física Aplicada C.S.I.C.

Representación de números enteros: el convenio exceso Z

Algoritmo DES Y Criptoanálisis Diferencial

Introducción. Algoritmos

Estudio de los riesgos relacionado con las redes Wi-Fi. A. Alejandro González Martínez

Modos de Operación. Alberto Escudero Pascual

Agradecimientos. Resumen.

Procesadores de lenguaje Tema 6 La tabla de símbolos

Integrantes: Manuel Ramírez Carlos Polanco Bernardo Farías Profesor: Agustín J. González

4. NÚMEROS PSEUDOALEATORIOS.

Aritmética de Enteros

Implementación Hardware del Estandar de Encriptación Avanzado (AES) en una FPGA


CRIPTOGRAFÍA SIMÉTRICA Y ASIMÉTRICA

SEGURIDAD EN REDES WLAN

Introducción a la Criptografía. Reinaldo Mayol Arnao 1

Presentado a: Milton García. Presentado por: Paula Díaz Heidy solano Wilmar Albarracín

Capítulo 8 Seguridad en Redes WEP, FW, IDS. Basado en: Computer Networking: A Top Down Approach, Jim Kurose, Keith Ross.

(WiFi) Wireless LAN WEP. Funcionamiento WEP RC4

Lección 12 Seguridad y criptografía. Universidad de Oviedo / Dpto. de Informática

Redes de Comunicaciones. Ejercicios de clase Tema 3

Javier Herranz Expósito 27/04/16 TEMA 7: WIFI Y VPN

Capítulo 2: El protocolo WEP. Capítulo 2. El protocolo WEP

Sistema de mensajería instantánea punto a punto mediante cifrado por intercambio de clave de sesión.

Para convertir un decimal a un binario se necesita la siguiente tabla.

UNIDAD DE APRENDIZAJE I

Criptografía: Técnica y Aplicaciones.

Organización lógica Identificación de bloque

BLOWFISH,AES, AES192, AES256, TWOFISH)

Cifrado en Flujo y en Bloque con Clave Secreta

Bloques Aritméticos - Multiplicadores

Representación de Datos. Una Introducción a los Sistemas Numéricos

EL4005 Principios de Comunicaciones Clase No.22: Señalización Ortogonal

Protocolos y técnicas alternativas al WEP. En este capítulo se presentan algunos protocolos y técnicas que ofrecen mayores

Tema: Codificación de canal

Seguridad del Protocolo HTTP

1. Introducción 2. Esquema básico 3. Codificación 4. Evaluación 5. Selección 6. Operadores 7. Ejemplo. Algoritmos genéticos

VULNERABILIDADES CRIPTOGRÁFICAS. Por Alexandre Ramilo Conde y Pablo Prol Sobrado

Definición de Memoria

FIABILIDAD, CONFIDENCIALIDAD, INTEGRIDAD Y DISPONIBILIDAD

Oliverio J. Santana Jaria. Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso Los objetivos de este tema son:

Cryptography of SSLv3.0

Criptografía de Clave secreta: Cifrado en flujo. Amparo Fúster Sabater Instituto de Física Aplicada C.S.I.C.

Electrónica Digital - Guión

PROTOCOLO IP. Vicente Sánchez Patón. I.E.S Gregorio Prieto. Tema 1 SRI

2.- Tablas de frecuencias

Aplicar técnicas de encriptamiento con el fin de comprender su funcionamiento.

SERVICIOS DE RED E INTERNET TEMA 4: INSTALACIÓN Y ADMINISTRACIÓN DE SERVICIOS WEB

Nombre de la asignatura : Teleproceso. Carrera : Ingeniería en Sistemas Computacionales. Clave de la asignatura : SCB-9340

MANUAL DE CONFIGURACIÓN DEL CERTIFICADO DIGITAL EN OUTLOOK 2010

Generación de Variables Aleatorias. UCR ECCI CI-1453 Investigación de Operaciones Prof. M.Sc. Kryscia Daviana Ramírez Benavides

Introducción a la criptografía y sus aplicaciones. José Angel de Bustos Pérez

TEMA 1.- POLINOMIOS Y FRACCIONES ALGEBRAICAS

Una base de datos de Access puede estar conformada por varios objetos, los más comunes son los siguientes:

DESCRIPCIÓN POLINOMIAL DE LOS SISTEMAS DE CIFRADO DES Y AES

Trucos para jugar con la criptografía en el desarrollo. Lic. Cristian Borghello, CISSP - MVP info@segu-info.com.

Criptografía y Seguridad Informática PLANIFICACIONES Actualización: 2ºC/2015. Planificaciones Criptografía y Seguridad Informática

Capítulo 2 Juegos estáticos con información asimétrica

Método simétrico con cifrado por bloques desarrollado por Counterpane Labs y presentado al concurso del NIST que buscaba un sustituto para DES (el

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

CRIPTOGRAFIA. Qué es, usos y beneficios de su utilización. Universidad Nacional del Comahue

Tabla de Símbolos. Programación II Margarita Álvarez

Tema 2. El lenguaje JAVA

Introducción a los Algoritmos Genéticos. Tomás Arredondo Vidal 17/4/09

Criptografía Aplicada. GSI - Facultad de Ingeniería

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Transcripción:

Seguridad Informática Criptografía de clave secreta Ramón Hermoso, Rubén Ortiz y Matteo Vasirani Universidad Rey Juan Carlos

Índice 1 Secreto perfecto 2 Cifrado con clave secreta 3 Cifradores bloque 4 Ejemplos: DES, AES y otros 5 Cifradores flujo 6 Generación de claves

Índice 1 Secreto perfecto 2 Cifrado con clave secreta 3 Cifradores bloque 4 Ejemplos: DES, AES y otros 5 Cifradores flujo 6 Generación de claves

Secreto perfecto I Secreto perfecto Un esquema de cifrado (Gen, Enc, Dec) se dice que logra secreto perfecto si P[M = m C = c] = Pr[M = m] es decir, si cualquier adversario que vea el texto cifrado no obtiene ninguna información sobre el texto en claro [Shannon] la probabilidad a priori de conocer el mensaje en claro m es igual que la probabilidad a posteriori de conocer dicho mensaje m aun conociendo el mensaje cifrado c

Secreto perfecto II Experimento IND-EAV A adversario 1 A crea dos mensajes m 0 y m 1 y se los envía a C 2 C genera una clave k mediante un generador Gen 1 C elige b {0,1} 2 C envía a A el mensaje cifrado c Enc k (m b ) 3 A devuelve un bit b 4 La función Succ determina el éxito del adversario: (Succ(A) = 1) (b = b )

Secreto perfecto III Esquema del experimento IND-EAV k,b m 0 m 1 Enc k (m b ) C A b'

Secreto perfecto IV Secreto perfecto (Definición alternativa) Un esquema de cifrado alcanza secreto perfecto si, para cualquier adversario A, se tiene que: P[Succ(A) = 1] = 1/2 Es decir, ningún adversario puede distinguir entre el cifrado de dos mensajes de su elección mejor que eligiendo al azar.

Secreto perfecto V Teorema Si para un esquema de cifrado se tiene k < m, entonces no se puede alcanzar el secreto perfecto

Seguridad computacional I Se relaja la noción de seguridad en dos aspectos: 1 La seguridad ha de preservarse contra adversarios eficientes (aquéllos que corren en tiempo polinomial) 2 Se admite que dichos adversarios tengan éxito con una probabilidad muy pequeña Por lo tanto, si se busca un esquema que permita cifrar varias veces usando la misma clave, es necesario evitar ataques por fuerza bruta 1 KPA (Tema 1) probando con todas las claves 2 KPA eligiendo una clave al azar Así pues, el tamaño del espacio de claves ha de ser suficientemente grande

Adversarios PPT PPT Probabilistic Polynomial Time Un algoritmo ag corre en tiempo polinomial si existe un polinomio p(x) = n i=0 a i x i de tal manera que para cada entrada x el algoritmo ag termina en p( x ) pasos Se dice que ag es probabilístico si tiene la capacidad de dar pasos de manera aleatoria

Función despreciable (negligible) Decimos que una función f : N R es despreciable si para cada polinomio p(.) existe un n 0 tal que si n > n 0 entonces f (n) < 1 p(n)

Seguridad asintótica El algoritmo Gen tiene como entrada 1 n n recibe el nombre parámetro de seguridad Usualmente Gen(1 n ) elige k {0,1} n El adversario A también recibe 1 n como input El esquema será seguro si la probabilidad de éxito de A es despreciable como función de n

Esquema de cifrado con clave privada Consta de 3 algoritmos (Gen, Enc, Dec) k Gen(1 n ) (genera la clave secreta) c Enc k (m) (cifra el texto en claro) m Dec k (c) (descifra el texto cifrado) Corrección: m = Dec k (Enc k (m))

Experimento IND-EAV I 1 A(1 n ) construye y envía a C dos mensajes m 0 y m 1 de la misma longitud 2 C genera k mediante Gen(1 n ) 1 C elige b {0,1} 2 C genera c Enc k (m b ) y lo envía a A 3 A devuelve un bit b 4 Si b = b se dice que Succ(A,n) = 1

Experimento IND-EAV II Se dice que un esquema de cifrado es IND-EAV seguro si, para cualquier tipo de adversario PPT A, se cumple que: P(Succ(A,n) = 1) 1 2 + f (n) donde f (n) es una función despreciable. Es decir, ningún adversario eficiente puede distinguir entre el cifrado de dos mensajes de su elección mejor que eligiendo al azar, salvo con una probabilidad que se considera despreciable

Índice 1 Secreto perfecto 2 Cifrado con clave secreta 3 Cifradores bloque 4 Ejemplos: DES, AES y otros 5 Cifradores flujo 6 Generación de claves

Cifradores de clave simétrica I Formados a base de: Sustituciones Permutaciones (o transposiciones) Pueden ser: De bloque (block ciphers) De flujo (stream ciphers)

Cifradores de clave simétrica II Ejemplo Cifrado del César (Tema 1) (Monoalfabético y Polialfabético) Cifrado y descifrado igual de sencillos Demasiado fácil de romper (sólo hay 26 claves diferentes)

Cifradores de clave simétrica III

Cifradores de clave simétrica IV Hay una tabla que muestra cómo cifrar cada letra del mensaje Hay 26! (> 4x10 26 ) claves Ataques de fuerza bruta inviables Problemas?

Índice 1 Secreto perfecto 2 Cifrado con clave secreta 3 Cifradores bloque 4 Ejemplos: DES, AES y otros 5 Cifradores flujo 6 Generación de claves

Seguridad IND-CPA I Misma definición que seguridad IND-EAV, pero el adversario tiene acceso a un oráculo de cifrado Nunca se puede alcanzar para esquemas de cifrado deterministas Si un esquema es IND-CPA seguro cifrando una vez, lo será también cifrando múltiples veces

Seguridad IND-CPA II Experimento IND-CPA 1 C genera k mediante un generador Gen(1 n ) 2 A recibe como input 1 n 3 A recibe acceso al oráculo Enc k (.) 4 A crea dos mensajes m 0,m 1 5 Se elige b {0,1} 6 Se envía c Enc k (m b ) a A 7 A devuelve un bit b 8 Si b = b se dice que Succ(A,n) = 1

Seguridad IND-CPA III Se dice que un esquema de cifrado es IND-CPA seguro si para cualquier adversario PPT A tenemos que: P(Succ(A,n) = 1) 1 2 + negl(n) Es decir, si ningún adversario eficiente con acceso a un oráculo cifrado puede distinguir entre el cifrado de dos mensajes de su elección mejor que eligiendo al azar, salvo con probabilidad despreciable

Funciones pseudo-aleatorias Consiste en una familia de funciones indexadas por una clave secreta F : {0,1} l {0,1} n {0,1} n (k,x) F k (x) Se pretende que al elegir una clave al azar la función correspondiente sea difícil de distinguir de una función elegida completamente al azar Además, la función se debe poder computar eficientemente

Permutaciones pseudo-aleatorias Funciones pseudoaleatorias a las que se les pide que cada F k (.) sea una permutación de {0,1} n Se pide que, para cada clave, tanto la permutación como su inversa sean computables de manera eficiente

Cifrador en bloque Es el nombre que reciben las permutaciones pseudoaleatorias cuando se usan en la práctica l: longitud de clave n: longitud de bloque Se usan como primitivas para la construcción de esquemas de cifrado de clave secreta

Modos de operación I Determina la forma de utilizar un cifrador en bloque Las partes que se comunican comparten una clave secreta k y usan una permutación F k Se supone un mensaje m cuya longitud es múltiplo de la longitud de bloque n (si no es así se completa con información superflua) Se divide el mensaje en bloques de longitud l m = m 0 m 1... m s

Modos de operación II 1 Electronic Code Book (ECB) Se divide el mensaje original en bloques y cada uno de ellos es cifrado por separado usando la misma clave k c j = F k (m j ) Es inseguro :-s m 1 m 2 m 3 F k F k F k c 1 c 2 c 3

Modos de operación III 2 Cipher Block Chaining (CBC) A cada bloque de texto plano se le aplica la operación XOR con el bloque cifrado anterior antes de ser cifrado Se elige al azar un vector de inicialización IV de n bits c 0 = IV c j = F k (m j c j 1 ) m 1 m 2 m 3 IV F k F k F k c 1 c 2 c 3

Modos de operación IV 3 Output Feedback (OFB) Se elige al azar un vector de inicialización (IV) de longitud n r 0 = IV r j = F k (r j 1 ) c j = m j r j IV F k F k F k m 1 m 2 m 3 c 1 c 2 c 3

Modos de operación V 4 Counter (CTR) Se elige al azar un vector de inicialización (IV) de longitud n ctr = IV r j = F k (ctr + j) c j = m j r j ctr ctr+1 ctr+2 ctr+3 F k F k F k m 1 m 2 m 3 ctr c 1 c 2 c 3

Modos de operación VI Seguridad de los modos Teorema: los modos CBC, OFB y CTR son IND-CPA seguros si se emplea una permutación pseudoaleatoria ECB es inseguro. Por qué?

Seguridad IND-CCA I Experimento IND-CCA Se genera k mediante Gen(1 n ) A recibe como input 1 n A recibe acceso a oráculos Enc k (.) y Dec k (.) A crea dos mensajes m 0,m 1 Se elige b {0,1} C envía c Enc k (m b ) a A A ya tiene cerrado el acceso a Dec k (c) A devuelve un bit b Si b = b se dice que Succ(A,n) = 1

Seguridad IND-CCA II Un esquema de cifrado es IND-CCA seguro si para cualquier adversario PPT A se tiene que: P(Succ(A,n) = 1) 1 2 + negl(n) Es decir, si ningún adversario eficiente con acceso a oráculos de cifrado y descifrado puede distinguir entre el cifrado de dos mensajes de su elección mejor que eligiendo al azar, salvo con probabilidad despreciable

Seguridad IND-CCA III Los modos anteriores no la alcanzan (los textos cifrados son manipulables) Para hacerlos IND-CCA seguros se combinan con codigos de autenticación de mensajes (MAC) Se construyen MAC a partir de funciones pseudoaleatorias o funciones hash resistentes a colisiones

Índice 1 Secreto perfecto 2 Cifrado con clave secreta 3 Cifradores bloque 4 Ejemplos: DES, AES y otros 5 Cifradores flujo 6 Generación de claves

Cifradores de bloque I Cifradores de sustitución simple (i) Sea A un alfabeto de q símbolos y T el conjunto de todas las cadenas de caracteres de longitud l en A. Sea, además, P el conjunto de todas las posibles permutaciones en A. Se define Enc k por cada p P como: Enc p (m) = (p(m 1 )p(m 2 )...p(m l )) = (c 1 c 2...c l ) = c donde m = (m 1 m 2...m l ) T. Es decir, para cada símbolo en un l-bloque éste se sustituye por otro símbolo de A según la permutación fija marcada por p. Enc p es un cifrador de sustitución simple (o monoalfabético)

Cifradores de bloque II Cifradores de sustitución simple (ii) Para descifrar c = (c 1 c 2...c l ) se realiza el cómputo inverso p = e 1, por lo que: Dec p (c) = (p(c 1 )p(c 2 )...p(c l )) = (m 1 m 2...m l ) = m Ventajas / Inconvenientes?

Cifradores de bloque III Cifradores de sustitución polialfabética Es un un cifrador de bloques, donde la longitud del bloque es de tamaño l sobre un alfabeto A. Tiene las siguientes propiedades: El espacio de claves K consiste en todos los conjuntos ordenados de l permutaciones (p 1,p 2,...,p l ), donde cada permutación está definida en A; La encriptación de un mensaje m = (m 1 m 2...m l ) con la clave k = (p 1,p 2,...,p l ) se proporciona mediante Enc k (m) = (p 1 (m 1 )p 2 (m 2 )...p l (m l )); y La clave para descifrar con k = (p 1,p 2,...,p l ) es k 1 = (p 1 1,p 1 2,...,p 1 l )

Cifradores de bloque IV Ejemplo: cifrador de Vigenère Sea A = {A,B,C,D,...,X,Y,Z} y l = 3. Se elige k = (p 1,p 2,p 3 ), donde p 1 se corresponde con la letra de 3 posiciones a la derecha de la actual en el alfabeto A, p 2 7 posiciones a la derecha y p 3 10 posiciones a la derecha. Si el mensaje en claro es: m = EST ECI FRA DOR ESU NAP ATA TA El mensaje cifrado quedaría de esta forma: c = Enc k (m) = hzd hjs iyk gvb xze qhz dak wh Ventajas / Inconvenientes?

Cifradores de bloque V Cifradores de transposición/permutación Sea K el conjuntos de todas las permutaciones en el conjunto {1,2,...,l}. Para cada k K se define la función de encriptación como sigue: Enc k (m) = (m k(1) m k(2)...m k(l) ) Permuta los símbolos en un mismo bloque La permutación o transposición puede depender o no de la clave

Cifradores de bloque VI Ejemplo l = 5 m = ATACA MOSAL ASOCH O k = {5,4,3,2,1} El mensaje codificado resulta: c = ACATA LASOM HCOSA O

Cifradores de bloque VII Cifradores de producto (Product ciphers) Los cifradores de sustitución y de permutación no ofrecen alta seguridad por sí solos, en cambio, su combinación hace criptosistemas más robustos Un cifrador de producto muy común sería una composición de l 2 transformaciones Enc k1,enc k2,...,enc kl, donde cada E ki, 1 i l, es o bien un cifrador por sustitución o bien uno por permutación

Cifradores de bloque VIII Redes S-P Creadas por Shannon en 1949 Secuencia de varias substituciones y permutaciones

Cifradores de bloque IX Ejemplo: Cifrador ADFGVX (i) Utilizado en la I Guerra Mundial Llamado así por los diferentes sonidos en Morse de los distintos símbolos Combina sustitución polialfabética (de pares) con transposición por columnas - A D F G V X A K Z W R 1 F D 9 B 6 C L 5 F Q 7 J P G X G E V Y 3 A N V 8 O D H 0 2 X U 4 I S T M Cuadro: Tabla de substituciones

Cifradores de bloque X Ejemplo: Cifrador ADFGVX (ii) Texto en claro: QUEDAMOS A LAS NUEVE Texto substituido: Clave a utilizar: LIBRO FA XA GA VF GV XX VD XG GV DV GV XG GX XA GA GD GA

Cifradores de bloque XI Ejemplo: Cifrador ADFGVX (iii) Creamos una matriz con el texto substituido en bloques bajo la clave Ordenamos las columnas por orden alfabético de la clave (a) L I B R O F A X A G A V F G V X X V D X G G V D V G V X G G X X A G A G D G A # (b) B I L O R X A F G A F V A V G V X X X D V G G V D X V G G G A X X A G G D G # A El texto cifrado sería: XFVVXAG AVXGVXD FAXGGXG GVXVGA# AGDDGGA

Técnicas generales de diseño (DES y AES) Uso del paradigma confusión-difusión Confusión: supongamos que la longitud del bloque es de 128 bits La clave determina 16 permutaciones f 1,f 2,...,f 16 cuya longitud de bloque es 8 Se divide, pues, m = m 1 m 2... m 16 en bloques de 8 bits Se define F k (m) = f 1 (m 1 )... f 16 (m 16 ) Difusión: los bits de la salida anterior se mezclan de acuerdo a una cierta permutación (permutación de mezcla) Los pasos de confusión-difusión se repiten un cierto número de rondas

Implementación I Red de sustitución/permutación: las permutaciones {f j } son fijas y no dependen de la clave. Reciben el nombre de S-cajas (cajas de sustitución) La dependencia de la clave se introduce al principio de cada ronda mediante una agenda de claves (key schedule). Por ejemplo, haciendo XOR de la entrada con una subclave obtenida a partir de la clave

Implementación II

Otro principio de diseño Efecto avalancha: cambiar un único bit de la entrada debería afectar a todos los bits de la salida Para conseguirlo: 1 Para cada S-caja, si se cambia un bit del input, cambian al menos dos bits del output 2 Para cada S-caja la permutación de mezcla reparte cada bit del output a una caja distinta para la ronda siguiente

Redes de Feistel Se trata de un enfoque alternativo para construir cifradores de bloque No se requiere que las S-cajas sean permutaciones, pero se consigue que cada ronda se pueda invertir Inicialmente se divide el input en dos bloques L 0 y R 0 (parte izda. y parte dcha.) En cada ronda j se calcula el output mediante una S-caja f j (que dependerá de la clave) teniendo: L j = R j 1 R j = L j 1 f j (R j 1 ) Cada una de estas rondas se puede invertir (siempre que se conozca la clave)

Posibles ataques Ataques Tanto las redes de sustitución-permutación como las redes de Feistel son susceptibles a ataques si no se elige un número de rondas suficientemente alto

DES (Data Encryption Standard) I Consiste en una red de Feistel de 16 rondas Longitud de bloque: 64 bits Longitud de clave: 56 bits Agenda de clave: en cada ronda se genera una subclave de 48 bits eligiendo 24 bits de la parte izquierda y 24 de la parte derecha de la clave original La agenda de claves es fija y pública!

DES (Data Encryption Standard) II Cada función de ronda f j se comporta de la siguiente manera: El input de 32 bits se expande a 48 bits (duplicando la mitad). Al resultado se le aplica XOR con la subclave k j A continuación, se procede con la ronda sustitución-permutación: 1 La parte de sustitución consta de 8 S-cajas fijas que tienen entrada de 6 bits y salida de 4 bits. Por lo tanto, se reduce la entrada de 48 bits a 32 bits de nuevo 2 Se aplica una permutación de mezcla a los 32 bits

DES (Data Encryption Standard) III Input: m = m 1 m 2...m 64, mensaje de texto plano; k = k 1 k 2...k 64, clave de 64 bits Output: c = c 1 c 2...c 64, texto cifrado 1 Crear la agenda de claves, con 16 claves de 48 bits 2 (l 0,r 0 ) IP(m 1 m 2...m 64 ) 1 Se divide el resultado en dos mitades, izda. y dcha. de 32 bits cada una 3 (16 rondas), calcular l i y r i (ec. 1 y 2), calculando f (r i 1,k i ) = P(S(E(r i 1 ) k i )) de la siguiente forma:

DES (Data Encryption Standard) IV 1 Expandir r i 1 = r 1 r 2...r 3 2 (de 32 a 48 bits usando la tabla de permutaciones E) : T E(r i 1 ) 2 T T k i. Representamos T como 8 cadenas de 6 bits: (B 1,...,B 8 ) 3 T (S 1 (B 1 ),S 2 (B 2 ),...,S 8 (B 8 )). Se mapea S i (B i ) a una entrada de 4 bits en la caja S i. (b 1 b 6 ) determinan la fila y b 2 b 3 b 4 b 5 la columna 4 T P(T ) (Permutación P) 4 b 1 b 2...b 64 (r 16,l 16 ) (Intercambio de r i por l i ) 5 c IP 1 (b 1 b 2...b 64 ) (Permutación usando la inversa de IP) l i = r i 1 (1) donde f (r i 1,k i ) = P(S(E(r i 1 ) k i )) r i = l i 1 f (r i 1,k i ) (2)

(a) Flujo de DES (b) Función f DES (Data Encryption Standard) V r i-1 k i Input m 1 m 2... m 64 64 IP Permutación inicial 64 Expansión E 32 48 + 32 l 0 r 0 48 k 1 32 f 32 + 48 l 1 r 1 + 32 32 f 48 k 2 32 6 S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 l 15 r 15 48 32 k 16 32 + f 32 4 r 16 l 16 32 64 P IP -1 Permutación inversa 32 64 c 1 c 2 Output... c 64 Adaptado de Menezes et al. Handbook of Applied Cryptography. Cap.7 pág. 254

Seguridad de DES El mejor ataque conocido en la práctica es una búsqueda exhaustiva en el espacio de claves. El tamaño es 2 56, hoy en día demasiado pequeño Un par de retos propuestos en 1997, en forma de pares input/output, con objetivo de recuperar la clave, fueron resueltos en 96 y 41 días, respectivamente. En 1998, la máquina Deep Crack (250000$ diseñada ad-hoc) resuelve otro reto en 56 horas DES no se considera seguro actualmente

Mejoras a DES I No es aconsejable modificar la estructura interna porque se puede perder seguridad DES iterado: se aplica varias veces el cifrador utilizando distintas claves Variantes de DES: 2DES(k 1 k 2,m) DES(k 2,DES(k 1,m)) 3DES3(k 1 k 2 k 3,m) DES(k 3,DES 1 (k 2,DES(k 1,m))) 3DES2(k 1 k 2,m) 3DES3(k 1 k 2 k 1,m) DESX(k k 1 k 2,m) k 2 DES(k,k 1 m)

Mejoras a DES II Incovenientes Las variantes iteradas son poco eficientes La longitud de clave efectiva baja por ataques meet-in-the-middle La longitud del bloque se mantiene baja Se hace necesario buscar un nuevo estándar, con longitudes de clave y bloque mayores y más eficiente

AES (Advanced Encryption Standard) En 1997 el NIST (USA) convoca una competición para seleccionar un nuevo cifrador de bloque que sustituya a DES 15 equipos de todo el mundo presentaron sus propuestas En 1998 y 1999 se celebraron los congresos donde se expusieron los criptoanálisis de las propuestas. Se eligieron 5 En octubre de 2000 se eligió el ganador: Rjindael, diseñado por los belgas Daemen y Rijmen (pasaría a denominarse AES) Se reconoció que los 5 candidatos no tenían vulnerabilidades

Diseño de AES I Longitud de bloque: 128 bits Longitud de clave: variable (128, 192 ó 256 bits) Número de rondas: 10 para clave de 128 bits 12 para clave de 192 bits 14 para clave de 256 bits

Diseño de AES II Es una red de sustitución-permutación Un array de 4x4 bytes llamado estado (state) se va modificando a lo largo de rondas El estado inicial es el input del cifrador En cada ronda se aplican 4 operaciones al estado

Diseño de AES III 1 AddRoundKey: se genera una subclave de 128 bits a partir de la clave, se interpreta como un array 4x4 de bytes y se hace XOR con el estado 2 SubBytes: cada byte del estado se substituye por otro mediante una S-caja fija para todo el algoritmo 3 ShiftRows: los bytes de cada fila del estado se desplazan a la izda 0 posiciones en la primera fila 1 posición en la segunda fila 2 posiciones en la tercera fila 3 posiciones en la cuarta fila 4 MixColumns: se multiplica el estado por una matriz 4x4 invertible fija

Diseño de AES IV En la última ronda se sustituye el último paso de MixColumns por un AddRoundKey adicional Esto evita que se puedan invertir los tres últimos pasos Para cada clave AES es una permutación; esto se sigue de que cada uno de los pasos se pueda invertir

Seguridad de AES AES ha sido intensamente criptoanalizado y no se ha encontrado ninguna vulnerabilidad Se han conseguido romper algunas implementaciones (ataques por temporización - Open-SSL) Actualmente AES se sigue considerando muy seguro y eficiente Es libre Está estandarizado Buena elección para cualquier protocolo que necesite una permutación pseudoaleatoria

Índice 1 Secreto perfecto 2 Cifrado con clave secreta 3 Cifradores bloque 4 Ejemplos: DES, AES y otros 5 Cifradores flujo 6 Generación de claves

Cifradores de flujo I Cifradores de bloque de longitud 1 La transformación para codificar símbolor del texto en claro puede cambiar dinámicamente Sea K el espacio de claves para las transformaciones al codificar. Se llamará flujo de clave (keystream) a la secuencia de símbolos k 1 k 2 k 3...k i

Cifradores de flujo II Definición de cifrador de flujo Sea A un alfabeto de q símbolos y Enc k un cifrador simple de sustitución de longitud de bloque 1, donde k K. Sea m 1 m 2 m 3... un texto en claro y k 1 k 2 k 3... un flujo de claves de K. Un cifrador de flujo toma el texto en claro y produce un texto cifrado c 1 c 2 c 3... donde c i Enc ki (m i ). Aplica cifrado simple de acuerdo al flujo de claves usado Cómo crear el flujo de claves?

Cifradores de flujo III Ejemplo: cifrador de Vernam Es un cifrador de flujo definido sobre el alfabeto A = {0,1}. A un mensaje binario m 1 m 2...m l le será aplicado una clave binaria b 1 b 2...b l para generar un texto cifrado c 1 c 3...c l donde c i = m i k i, 1 i l Si la clave se elige aleatoriamente y no se vuelve a usar, este cifrador se llama one-time pad Simple y fácil de implementar

Cifradores de flujo IV Ejemplo de cifrador de Vernam: RC4 Ejemplo M = BYTES K = VERNAM Solución: B V = 11001 11110 = 00111 = U Y E = 10101 00001 = 10100 = H T R = 10000 01010 = 11010 = G E N = 00001 01100 = 01101 = F S A = 00101 00011 = 00110 = I Se usa en protocolos tales como: TLS/SSL (tráfico en Internet seguro) o WEP (seguridad en Redes Inalámbricas)

Múltiples cifrados El cifrado en flujo no se mantiene seguro cuando se usa varias veces con la misma clave Problema: es determinista. Se detecta, por ejemplo, cuando se envía un mensaje dos veces Soluciones: 1 Modo sincronizado 2 Modo no sincronizado

Índice 1 Secreto perfecto 2 Cifrado con clave secreta 3 Cifradores bloque 4 Ejemplos: DES, AES y otros 5 Cifradores flujo 6 Generación de claves

Generación de claves I Una clave k se puede generar de diversas maneras 1 Generadores de números aleatorios (RNGs) Generadores hardware Generadores software 2 Mediante funciones hash (funciones de una dirección)

Generadores pseudoaleatorios I Hardware Parámetros poco o nada predecibles (temperatura, humedad, potencia de la batería,...) Secuencias de números basadas en ruido Construidos con diodos y amplificadores Futuro generadores cuánticos

Generadores pseudoaleatorios I Software Funciones que, partir de una semilla (seed), generan una secuencia de valores Suelen estar basados en congruencias numéricas que siguen el siguiente patrón: x n 1 = a x + c mod n, con x 0,a,c < m m representa el espacio de valores (espacio de claves) x 0 es la semilla Importante A partir de una misma semilla siempre se genera la misma secuencia de valores Ciclos de valores lo más largos posibles

Generadores pseudoaleatorios II Software Para alcanzar amplitud máxima: 1 Si c 0: MCD(c,m) = 1 a = 1 mod p para cada factor primo p de m a = 1 mod 4 si 4 es divisor de m 2 Si c = 0: m es primo a m a/p = 1 mod m

Generadores pseudoaleatorios III Software Ejercicio Calcular valores de a para las configuraciones de generación de números aleatorios siguientes: 1 m = 32, x 0 = 1, c = 3 2 m = 33, x 0 = 3, c = 0 3 m = 17, x 0 = 5, c = 12 4 m = 3, x 0 = 5, c = 7

Contraseñas y Funciones hash I Se utilizan funciones hash en una dirección a partir de contraseñas o frases (usualmente más cortas que la longitud de clave) Contraseña o passphrase n bits Función hash m bits k Toman como entrada un mensaje de longitud variable y lo transforman en uno de longitud fija

Contraseñas y Funciones hash II MD5 128 bits SHA1 160 bits Problema: cómo elegir la contraseña o frase Los adversario recuerdan los códigos o resúmenes contraseñas simples: MD5( password ) = 5f4dcc3b5aa765d61d8327deb882cf99 Solución: mezclar con algunos bits aleatorios y hacer re-hash varias veces

Contraseñas y Funciones hash III Ejemplo 1 Longitud de clave para el algoritmo de cifrado: 128 bits Contraseña del usuario para cifrar: abc (Hex: 61 62 63). Utilizando una conversión directa obtendríamos: 61 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 Sólo usamos 24 de 128 bits posibles ( No es muy seguro!!!). Si utilizamos una función hash (p. ej. MD5) obtenemos: 90 01 50 98 3C D2 4F B0 D6 96 3F 7D 28 E1 7F 72

Contraseñas y Funciones hash IV Si hacemos re-hash AF 5D A9 F4 5A F7 A3 00 E3 AD ED 97 2F 8F F6 87 A pesar de la debilidad de la clave el código generado se puede usar como clave para el cifrado Si queremos una clave de 64 bits? O una de 256 bits?

Contraseñas y Funciones hash V Ejemplo 2 Cómo mejorar el método anterior: salt + stretching + contador de iteraciones Contraseña del usuario: abc Salt (p. ej. 64 bits): 78 57 8E 5A 5D 63 CB 06 Contador de iteraciones = 1000 P S = 61 62 63 78 57 8E 5A 5D 63 CB 06 H(1) = MD5(P S) = 0E8BAAEB3CED73CBC9BF4964F321824A H(2) = MD5(H(1)) = 1F0554E6F8810739258C9ABC60A782D5 H(3) = MD5(H(2)) = ABA6FEDB4AD3EFAE8180364E617D9D79... H(1000) = MD5(H(999)) = 8FD6158BFE81ADD961241D8E4169D411

Contraseñas y Funciones hash VI 8FD6158BFE81ADD961241D8E4169D411 será la clave para el algoritmo de cifrado La próxima vez usamos la misma clave pero distinto salt y distinto contador de iteraciones generará claves distintas Este algoritmo se conoce como PBKDF1 Es necesario poder enviar el salt y el contador de iteraciones a la otra parte, para que sea capaz de generar una misma clave. En claro?