PDF de programación - Experiencia de Practica Docente sobre Protocolos Cripto

Imágen de pdf Experiencia de Practica Docente sobre Protocolos Cripto

Experiencia de Practica Docente sobre Protocolos Criptográfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 16 de Marzo del 2018)
492 visualizaciones desde el 16 de Marzo del 2018
1,0 MB
24 paginas
Creado hace 11a (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
  • Links de descarga
http://lwp-l.com/pdf9583

Comentarios de: Experiencia de Practica Docente sobre Protocolos Cripto (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad