Sunteți pe pagina 1din 16

Protocolo Change Cipher Spec

- Objetivo : Pasar de modo Pendiente a modo Operativo.

- Mensaje de un solo byte con valor 1.

1 byte

Protocolo Change Cipher Spec


Protocolo Alert
- Objetivo: Transmitir alertas.
- Se puede comprimir y cifrar.
- Mensaje de dos bytes. 1 byte 1 byte

Nivel Alerta

Protocolo Alert
- Nivel : (1) Aviso ó (2) Fatal

Aviso Fatal
-Notificación de cierre -Mensaje inesperado
-No certificado -MAC de registro erróneo
-Certificado erróneo -Fallo de descompresión
-Certificado no permitido -Fallo de negociación
-Certificado revocado -Parámetro ilegal
-Certificado caducado
-Certificado Desconocido
Protocolo Handshake
- Objetivo:
- Permite autenticación mutua de cliente y servidor.
- Cliente y servidor deben llegar a un acuerdo sobre versión de
SSL .
- Acuerdo sobre especificaciones de cifrado y creación de claves
de cifrado.

- Una sesión SSL siempre comienza con el handshake

- Mensaje de dos bytes.


1 byte 3 byte ≥ 1 byte

Tipo Longitud Contenido

Protocolo Handshake
Tabla de los Tipos de Mensajes
Acción del Protocolo
Fase 1: Establecimiento de las capacidades de seguridad

- Versión : Más alta del SSL.

- Valor aleatorio (nonces ):


- Se usan durante el intercambio de claves
- Previene ataques de repetición

- Identificador de sesión: longitud variable.


- Si valor !=0 , actualización de conexión o nueva conexión en la misma sesión.
- Si no, nueva conexión en nueva sesión

- Suite de cifrado: lista combinación algoritmos criptográficos.


- Método de Compresión : lista de métodos admitidos por el cliente.
Proceso Fase 1.

cliente_hello
Cliente Servidor

server_hello

convenciones

Versión ↓ que sugerida por cliente


↑ permitida por servidor
Valor Aleatorio independiente del valor cliente
ID sesión Si el ID cliente !=0 se utiliza mismo valor
Suite Cifrado única suite de propuestas por cliente
Método de Compresión método elegido de propuestas por cliente
Métodos de Intercambio de Clave

- RSA: Clave privada se cifra con clave publica RSA del receptor(necesita certificado).

- Diffie-Hellman fijo:
- Intercambio de claves publicas Diffie-Hellman(cliente - servidor).
- Determina una clave secreta basada en cálculos de claves publicas fijas.
- Diffie-Hellman efímero:
- Claves privadas efímeras y autentificadas.
- Intercambio de claves publicas firmadas con clave privada RSA o DSS.
- Permite verificación de firma usando la respectiva clave publica.
- Certificados -> autentificación.
- Diffie-Hellman anónimo:
- Intercambio de claves sin autentificación.
- Inseguro.
Especificación del Cifrado

- Algoritmo de cifrado (RC4,RC2,…)

- Algoritmo MAC (MD5 O SHA-1)

- Tipo de cifrado

- Es Exportable (v o f)

- Tamaño hash (0,16-MD5;20-SHA-1)

- Material de clave (contiene datos útiles para generación de claves de


escritura)
Fase 2: Autentificación del servidor e intercambio de clave.

- Envío certificado servidor (de ser necesario).


- No necesario en Diffie-Hellman anónimo.
- Envío mensaje server_key_Exchange(de ser necesario).
- Necesario
- Diffie-Hellman anónimo (2 parámetros globales más clave pública)
- Diffie-Hellman efímero (Diffie-Hellman anónimo + firma)
- Intercambio de clave RSA(servidor usa RSA con una clave solo para firmar)

- No necesario
- Servidor ha enviado certificado(Diffie-Hellman fijo)
- Intercambio de clave RSA
- Firmas:
- Cifrando (clave privada emisor) el hash de mensaje
- Definición hash:
- hash(Client.Hello.random || ServerHello.random || ServerParams)
- DSS:
- Se calcula con SHA-1
- RSA :
- Se calcula un hash con MD5 y otro con SHA -1
- Se concatenan y se cifran con la clave privada del servidor
- Solicitud certificado cliente (de ser necesario)
- Tipo de certificado: indica el algoritmo de clave publica y uso
- Autoridades de certificación: lista de nombres de autoridades
- Envío de mensaje server_done para finalizar intercambio d mensajes
- Servidor espera respuesta de cliente
Fase 3: Autentificación del cliente e intercambio de clave.

- Verificación de certificado(de ser necesario)


- Si servidor ha solicitado certificado, se envía un mensaje de certificado
caso contrario no_certificate.
- Envío mensaje client_key_Exchange(depende de tipo de intercambio de clave)
- RSA (Genera un valor y lo cifra con la clave publica del servidor o clave RSA )
- Diffie-Hellman efímero o anónimo (envío parámetros públicos cliente )
- Diffie-Hellman fijo (nulo)
- Envío mensaje certificate_verifi
- Verificacion explicita de certificado del cliente
- Se envía solo después de un certificado cliente con capacidad de firmar
Fase 4: Finalización

- Establecimiento de conexión segura


- Cliente:
- Envió mensaje change_cipher_spec
- Envio de mensaje finished
- Verifica que intercambio de clave y procesos fueron satisfactorios
- Contenido: concatencion de dos valores hash
- MD5(master_secret || pad2 || MD5(handshake_messages || Sender ||
master_secret || pad1))
- SHA(master_secret || pad2 || SHA(handshake_messages || Sender ||
master_secret || pad1))

- Servidor hace lo mismo que cliente


- Permite intercambio de datos
Cálculos Criptográficos
Generación de la clave maestra (48 bytes)

- Intercambio de valor previo


- Posibilidades:
- RSA :
- Cliente genera valor(48bytes) previo lo cifra con clave pública
RSA(servidor)
- Servidor lo descifra (clave privada)
- Diffie-Hellman:
- Intercambio de claves publicas Diffie-Hellman
- Cada uno realiza cálculos(Diffie-Hellman) para hallar valor previo
- Cálculo de ambas partes de la forma:
- master_secret = MD5(pre_master_secret || SHA(‘A’) || pre_master_secret ||
ClienteHello.random || ServerHello.random)) ||

MD5(pre_master_secret || SHA(‘BB’) || pre_master_secret ||


ClienteHello.random || ServerHello.random)) ||

MD5(pre_master_secret || SHA(‘A’) || pre_master_secret ||


ClienteHello.random || ServerHello.random)) ||
Generación de parámetros criptográficos

- Resultado de operación hash a la clave maestra:


- key_block =MD5(pre_master_secret || SHA(‘A’) || pre_master_secret ||
ServerHello.random || ClienteHello.random)) ||

MD5(pre_master_secret || SHA(‘BB’) || pre_master_secret ||


ServerHello.random || ClienteHello.random)) ||

MD5(pre_master_secret || SHA(‘A’) || pre_master_secret ||


ServerHello.random || ClienteHello.random)) ||….
Hasta que se haya generado una salida suficiente para obtener los parámetros:
- Clave para MAC de escritura del cliente
- Clave para MAC de escritura del servidor
- Clave de escritura cliente
- Clave de escritura servidor
- Vector inicialización (IV) del cliente y servidor

S-ar putea să vă placă și