Actualizado el 21 de Marzo del 2018 (Publicado el 16 de Marzo del 2018)
583 visualizaciones desde el 16 de Marzo del 2018
1,0 MB
24 paginas
Creado hace 12a (01/01/2013)
EXPERIENCIA DE PRÁCTICA
DOCENTE SOBRE PROTOCOLOS
CRIPTOGRÁFICOS
M.
Mut,
Ll.
Huguet,
J.
Ll.
Ferrer
y
M.
Payeras
Universitat
de
les
Illes
Balears
Í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
Comunicación Confidencial
y Auténtica!
Usuario A!
Usuario B!
Centro de
Distribución de
Claves (KDC)!
Obtención de claves
públicas y de sessión!
PROTOCOLOS IMPLEMENTADOS
ü Secure Socket Layer
§ Estándar Internet para la comunicación web
Comunicación Confidencial
y Auténtica!
Cliente!
Servidor!
§ Transparente a la Aplicación
§ Handshake Protocol
PROTOCOLOS IMPLEMENTADOS
ü Fiat-Shamir
§ Prueba de conocimiento nulo: convencer al verificador de la
posesión de un secreto
B pide pruebas a A
(lanza retos)!
Usuario A!
Usuario B!
§ Una TTP genera n= p·q. Cada Usuario tiene (xU,yU=xU
2 mod n)
§ Si el protocolo se repite k veces, la probabilidad d’engañar a B
será 2-k
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
B pide pruebas a A!
Usuario A!
Usuario B!
§ Cada Usuario tiene (xU, yU= βxU mod n)
§ Aplicación común: convencer a B de la identidad de A (conocimeinto
de xU)
PROTOCOLOS IMPLEMENTADOS
ü Chaum
§ Firma ciega: Autenticidad de la firma + Privacidad
Autenticidad y Privacidad!
Usuario A!
Banco!
Compra Anónima!
Comercio!
§ Aplicación común: pagos con dinero electrónico
§ Técnica: enmascarar la moneda electrónica con un r
PROTOCOLOS IMPLEMENTADOS
ü Even
§ Firma de contratos: Entre A i B, sin intermediarios
Oblivous Transfer!
Usuario A!
Usuario B!
§ 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
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
//usuario
B
genera
su
número
aleatorio
RB
=
SecureRandom.getInstance("SHA1PRNG");
• A genera clave AES: KA y RA
rsaCipher.init(Cipher.ENCRYPT_MODE,
privateKey_B);
//Se
crea
el
mensaje
a
cifrar
(RA,
RB,
KB)
• A è B: PUB(KA, RA)
mensajeTransmiVdo
=
RA.toString()
+
RB.toString()
+
KA.toString();
//Se
genera
el
hashing
de
la
informacion
a
cifrar
• B è A: PUA(RB, RA, KB=KA)
mensajeTransmiVdo
=
SHA1(mensajeTransmiVdo);
• A è B: PUB(RB)
//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 cifra k para obtener Eb(k)
//El banco descifra el mensaje con su clave privada
• A è B: EB(DA(m · EB(k) (mod nB))
BigInteger blindingFactorenc =
BigInteger missatgefirmaticifratrecuperat =
blindingFactor.modPow(e, modb);
missatgefirmaticodificat.modPow(privKeyB, modb);
• B è A: DB(m · EB(k)) = k · DB(m) (mod nB)
//cegar el mensaje y obtener m*Eb(k)
//Comprueba la firma y recupera m*Eb(k)
• A: k · DB(m) · k–1 (mod nB) = DB(m)
BigInteger missatgecegat = cegar(missatgenum,
BigInteger missatgefirmatrecuperat =
blindingFactorenc, modb);
missatgefirmaticifratrecuperat.modPow(e, moda);
//Firmar el mensaje con RSA y enviarlo Da(m*Eb(k))
BigInteger missatgefirmat =
//el banco decrementa el saldo de la cuenta de A y firma el
missatgecegat.modPow(privKeyA, moda);
mensaje
//Cifrar para obtener confidencialidad Eb(Da(m·Eb(k)))
BigInteger missatgefirmatpelbanccegat =
BigInteger missatgefirmaticodificat =
missatgecegat.modPow(privKeyB, modb);
missatgefirmat.modPow(e, pubKeyB);
//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
EXPERIENCIA DE PRÁCTICA
DOCENTE SOBRE PROTOCOLOS
CRIPTOGRÁFICOS
M.
Mut,
Ll.
Huguet,
J.
Ll.
Ferrer
y
M.
Payeras
Universitat
de
les
Illes
Balears
Comentarios de: Experiencia de Practica Docente sobre Protocolos Cripto (0)
No hay comentarios