PROTOCOLO DE SEGURIDAD.
Enviado por Carlos Zenteno • 13 de Octubre de 2016 • Práctica o problema • 1.283 Palabras (6 Páginas) • 265 Visitas
[pic 1][pic 2][pic 3][pic 4][pic 5]
[pic 6]
PROTOCOLO DE SEGURIDAD
El protocolo pretende lograr la transmisión de datos de manera segura a través de la comunicación que establece el cliente Alice (A) con el servidor Bob (B).
Antes de continuar con la explicación del protocolo, es importante entender los siguientes puntos:
- El protocolo será aplicado al módulo Registro y Login de una aplicación de escritorio (Proyecto Shell).
- Los parámetros que se pretenden proteger mediante el uso del protocolo es el nombre de usuario (U) y especialmente la contraseña (P).
- El cliente Alice (A) envía los datos (U, P) al servidor Bob (B) para validar dichos datos y permitir el registro de un usuario al Shell.
- En el registro se generarán las llaves públicas y privadas de cada cliente.
- Se creará una llave de sesión en el registro usando el algoritmo de Diffie-Hellman. La Implementación del algoritmo incluye un número primo P y una base g. (ejemplo p=23 y g=5)
- Ambos agentes (A y B) generan un número secreto menor al número primo (a < p, ejemplo a=6) (b < p, ejemplo a=15).
- A envía a B lo siguiente () = () = 8.[pic 7][pic 8]
- B envía a A lo siguiente () = () = 19.[pic 9][pic 10]
- A calcula .[pic 11]
- B calcula .[pic 12]
- Este último paso es la llave de sesión de cada uno de los agentes (K_AB).
- Al generar la llave de sesión para A&B ()[pic 13]
- A le envía un nonce a B con la llave de sesión ()[pic 14]
- B le responde al cliente (A) el nonce que recibió y le envía un nonce que él genera, cifrado con la llave de sesión [pic 15]
- A le responde a B el nonce generado por B que recibió cifrado con la llave de sesión [pic 16]
- B le envía al Cliente (A) su llave pública cifrada con la llave de sesión ()[pic 17]
- A le envía a B Su llave pública, su nombre y el hash de su Password ()[pic 18]
- El cliente Alice (A): es la clase Login.java que envía los datos al servidor Bob (B).
- El Servidor Bob (B): es la clase Server.java que se encarga de recibir los datos (U, P) enviados por A y valida que dichos datos son correctos.
- Toda la comunicación es por medio de la arquitectura RMI.
Descripción: Parte 1: registro de usuarios |
Conocimiento inicial A: p, g, A, P; ; U; Kpub(A); Kpriv(A)[pic 19] B: Kpub(B); Kpriv(B) |
Transiciones, procedimientos locales y challenges
A genera hash de P
|
Conocimiento final A: A;P;U;Kpub(A);Kpriv(A);Kpub(B);K_AB;Nb;Na;a B: Hash(P);U;Kpub(B);Kpriv(B);Kpub(A) ;K_AB;Nb;Na;b |
Descripción: Parte 2: Login |
Conocimiento inicial A: A;P;U;Kpub(A);Kpriv(A);Kpub(B);Nb;Na B: Hash(P);U;Kpub(B);Kpriv(B);Kpub(A) ;Nb;Na |
Transiciones, procedimientos locales y challenges A Y B generan llave de sesión a partir de su propia llave privada y la publica del otro [pic 29] 1. challenge[pic 30] 2. Challenge response[pic 31] 3. [pic 32] Si existe el usuario y contraseña nos regresa mensaje m1 “true/false” y un nuevo nonce para generar nueva llave de sesión 4. [pic 33] |
Conocimiento final A: A;P;U;Kpub(A);Kpriv(A);Kpub(B);K_AB;Nb;Na B: Hash(P);U;Kpub(B);Kpriv(B);Kpub(A) ;K_AB;Nb;Na |
...