EXPERIENCIA DE P D SOBRE PROTOCOLOS...
Transcript of EXPERIENCIA DE P D SOBRE PROTOCOLOS...
M. Mut, Ll. Huguet, J. Ll. Ferrer y M. Payeras Universitat de les Illes Balears
EXPERIENCIA DE PRÁCTICA DOCENTE SOBRE PROTOCOLOS
CRIPTOGRÁFICOS
ÍNDICE
ü Introducción y Características de la práctica
ü Protocolos implementados
ü Implementación
ü Casos de estudio
ü Conclusiones
INTRODUCCIÓN Y CARACTERÍSTICAS DE LA PRÁCTICA
§ Asignatura: Teoría de la Información y la Codificación § Ingeniería Informática
§ UIB desde 1990
§ Teoría de la información, codificación y criptografía
§ Previos: conocimientos matemáticos y programación
§ Criptografía § Algoritmos criptográficos
§ Seguridad Computacional
§ Confidencialidad, autenticación, no repudio …
INTRODUCCIÓN Y CARACTERÍSTICAS DE LA PRÁCTICA
§ Práctica: parte evaluable
ü Conjunto de prácticas: recreación, a través de un programa en Java, de una comunicación entre distintos usuarios que están ejecutando alguno de los protocolos criptográficos que previamente han sido descritos en el aula
§ Objetivos: § Consolidar los conceptos teóricos
§ Comprender el valor añadido de la criptografía en una comunicación
INTRODUCCIÓN Y CARACTERÍSTICAS DE LA PRÁCTICA
§ Herramientas: primitivas criptográficas
ü JCE (Java Cryptography Extension)
§ Primitivas de la distribución estándar de JVM § Generación de Claves
§ Cifrado (DES, 3DES, IDEA, AES, RSA, DSA, ElGamal…)
§ Funciones Hash
ü Bouncy Castle
§ Proyecto de Software Libre
§ Nuevos algoritmos y implementaciones alternativas
PROTOCOLOS IMPLEMENTADOS
§ Protocolo es un conjunto de acciones bien definidas y coordinadas (algoritmo) que permiten una interacción entre dos, o más, usuarios
§ Intercambio de datos o de información
§ Seguridad: mediante funciones criptográficas implementar los requisitos de confidencialidad, integridad, autenticidad y
no repudio …
ü eCommerce, Secure Email, eDemocracy …
PROTOCOLOS IMPLEMENTADOS
ü Needham-Schroeder
§ Protocolo de Autenticación e Intercambio de claves
Usuario A!
Centro de Distribución de Claves (KDC)!
Usuario B!
Obtención de claves públicas y de sessión!
Comunicación Confidencial y Auténtica!
PROTOCOLOS IMPLEMENTADOS
ü Secure Socket Layer
§ Estándar Internet para la comunicación web
§ Transparente a la Aplicación
§ Handshake Protocol
Cliente! Servidor!
Comunicación Confidencial y Auténtica!
PROTOCOLOS IMPLEMENTADOS
ü Fiat-Shamir
§ Prueba de conocimiento nulo: convencer al verificador de la posesión de un secreto
§ Una TTP genera n= p·q. Cada Usuario tiene (xU,yU=xU2 mod n)
§ Si el protocolo se repite k veces, la probabilidad d’engañar a B será 2-k
Usuario A! Usuario B!
B pide pruebas a A (lanza retos)!
PROTOCOLOS IMPLEMENTADOS
ü Schnorr
§ Prueba de conocimiento nulo: proceso interactivo convencer al verificador de la posesión de un secreto sin que este pueda obtener información del mismo
§ Cada Usuario tiene (xU, yU= βxU mod n)
§ Aplicación común: convencer a B de la identidad de A (conocimeinto de xU)
Usuario A! Usuario B!
B pide pruebas a A!
PROTOCOLOS IMPLEMENTADOS
ü Chaum
§ Firma ciega: Autenticidad de la firma + Privacidad
§ Aplicación común: pagos con dinero electrónico
§ Técnica: enmascarar la moneda electrónica con un r
Usuario A!
Comercio!
Banco!
Compra Anónima!
Autenticidad y Privacidad!
PROTOCOLOS IMPLEMENTADOS
ü Even
§ Firma de contratos: Entre A i B, sin intermediarios
§ Cifrar el mensaje dividido en bloques.
§ Técnica: transferencia inconsciente de los bloques cifrados. Hasta asegurar que los dos usuarios han completado la firma del otro
Usuario A! Usuario B!
Oblivous Transfer!
IMPLEMENTACIÓN
§ Protocolos: Needham-Schroeder, SSL, Fiat-Shamir, Schnorr, Chaum, Even
§ Entorno IDE abierto: Eclipse
§ Funcionamiento JCE
§ Acompañar con ejemplos de programación con uso de primitivas criptográficas:
IMPLEMENTACIÓN
§ Generación par de claves RSA:
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); SecureRandom random = new SecureRandom(); kpg.initialize(1024, random); KeyPair kpa = kpg.genKeyPair(); PublicKey pubKey = kpa.getPublic(); PrivateKey privKey = kpa.getPrivate();
IMPLEMENTACIÓN
§ Cifrar con clave pública RSA:
Cipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); rsaCipher.init(Cipher.WRAP_MODE, pubKey); byte[] cifradoClaveSecreta = rsaCipher.wrap(aeskey);
CASOS DE ESTUDIO
§ Destacar algunos aspectos de los trabajos
ü Needham-Schroeder
ü Planteamiento de los alumnos:
• A i B generan claves RSA
• A genera clave AES: KA y RA
• A è B: PUB(KA, RA)
• B è A: PUA(RB, RA, KB=KA)
• A è B: PUB(RB)
CASOS DE ESTUDIO
§ Destacar algunos aspectos de los trabajos
ü Needham-Schroeder
ü Planteamiento de los alumnos:
• A i B generan claves RSA
• A genera clave AES: KA y RA
• A è B: PUB(KA, RA)
• B è A: PUA(RB, RA, KB=KA)
• A è B: PUB(RB)
//usuario B genera su número aleatorio RB = SecureRandom.getInstance("SHA1PRNG"); rsaCipher.init(Cipher.ENCRYPT_MODE, privateKey_B); //Se crea el mensaje a cifrar (RA, RB, KB) mensajeTransmiVdo = RA.toString() + RB.toString() + KA.toString(); //Se genera el hashing de la informacion a cifrar mensajeTransmiVdo = SHA1(mensajeTransmiVdo); //Se pasa el texto a bytes text = mensajeTransmiVdo.getBytes(); //Se cifran los bytes cipherText = rsaCipher.doFinal(text);
CASOS DE ESTUDIO
ü SSL
!
CASOS DE ESTUDIO
ü Schnorr
§ Dificultad: generación inicial de parámetros
ü Una TTP distribuye: p y q primos t.q. (p-1)/q = k (k entero),
β∈{1,p-1}
1. Generación de q del tamaño deseado (160 bits), 2. Multiplicamos q por i (siendo i un valor incremental) 3. Sumamos 1 se irán obteniendo posibles valores de p 4. Ahora comprobamos si p es primo Si es así, hemos terminado. En caso contrario, incrementamos i y lo volvemos a intentar, hasta obtener un p primo.
PROTOCOLOS IMPLEMENTADOS
ü Chaum
§ Recrea el proceso de firma ciega entre A y un hipotético banco B
• A è B: EB(DA(m · EB(k) (mod nB))
• B è A: DB(m · EB(k)) = k · DB(m) (mod nB)
• A: k · DB(m) · k–1 (mod nB) = DB(m)
PROTOCOLOS IMPLEMENTADOS
ü Chaum
§ Recrea el proceso de firma ciega entre A y un hipotético banco B
• A è B: EB(DA(m · EB(k) (mod nB))
• B è A: DB(m · EB(k)) = k · DB(m) (mod nB)
• A: k · DB(m) · k–1 (mod nB) = DB(m)
//A cifra k para obtener Eb(k) BigInteger blindingFactorenc = blindingFactor.modPow(e, modb); //cegar el mensaje y obtener m*Eb(k) BigInteger missatgecegat = cegar(missatgenum, blindingFactorenc, modb); //Firmar el mensaje con RSA y enviarlo Da(m*Eb(k)) BigInteger missatgefirmat = missatgecegat.modPow(privKeyA, moda); //Cifrar para obtener confidencialidad Eb(Da(m·Eb(k))) BigInteger missatgefirmaticodificat = missatgefirmat.modPow(e, pubKeyB);
PROTOCOLOS IMPLEMENTADOS
ü Chaum
§ Recrea el proceso de firma ciega entre A y un hipotético banco B
• A è B: EB(DA(m · EB(k) (mod nB))
• B è A: DB(m · EB(k)) = k · DB(m) (mod nB)
• A: k · DB(m) · k–1 (mod nB) = DB(m)
//A cifra k para obtener Eb(k) BigInteger blindingFactorenc = blindingFactor.modPow(e, modb); //cegar el mensaje y obtener m*Eb(k) BigInteger missatgecegat = cegar(missatgenum, blindingFactorenc, modb); //Firmar el mensaje con RSA y enviarlo Da(m*Eb(k)) BigInteger missatgefirmat = missatgecegat.modPow(privKeyA, moda); //Cifrar para obtener confidencialidad Eb(Da(m·Eb(k))) BigInteger missatgefirmaticodificat = missatgefirmat.modPow(e, pubKeyB);
//El banco descifra el mensaje con su clave privada BigInteger missatgefirmaticifratrecuperat = missatgefirmaticodificat.modPow(privKeyB, modb); //Comprueba la firma y recupera m*Eb(k) BigInteger missatgefirmatrecuperat = missatgefirmaticifratrecuperat.modPow(e, moda); //el banco decrementa el saldo de la cuenta de A y firma el mensaje BigInteger missatgefirmatpelbanccegat = missatgecegat.modPow(privKeyB, modb); //Ahora el banco tiene Db(m*Eb(k))=k*Db(m) pero no ha podido ver m
CONCLUSIONES
ü Prácticas de Criptografía
§ Teoría de la Información y de la Codificación
§ Adaptar e interpretar diferentes protocolos de seguridad en un entorno de programación Java
§ Valorar y entender la criptografía más allá de las características y especificaciones de sus algoritmos
§ Afrontar los problemas prácticos de la implementación
§ Poner de relieve la creatividad de los alumnos para recrear los protocolos
M. Mut, Ll. Huguet, J. Ll. Ferrer y M. Payeras Universitat de les Illes Balears
EXPERIENCIA DE PRÁCTICA DOCENTE SOBRE PROTOCOLOS
CRIPTOGRÁFICOS