Clase08

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Clase08 as PDF for free.

More details

  • Words: 1,788
  • Pages: 46
Conexiones seguras SSL/TLS - SSH

Principios, herramientas y protocolos de criptografía Yann Frauel – Semestre 2007-1

1. Secure Socket Layer / Transport Layer Security

SSL/TLS 

SSL desarrollado por Netscape (v2, v3)



Estandarizado por IETF como TLS



TLS 1.0 sería SSL 3.1 (parecido a SSL 3.0 pero incompatible)



Versión actual TLS 1.1 (RFC 4346)



Comunicación segura a través de Internet





Confidencialidad



Autenticación (del servidor)



Integridad

Corre debajo de los protocolos usuales ➔

HTTP, FTP, POP...

SSL/TLS 

Encripción simétrica



Claves públicas para







Autenticación



Intercambio de claves

PKI centralizado ➔

Autoridades de certificación



Certificados X.509

Algoritmos negociados ➔

Claves públicas: RSA, DSA, Diffie-Hellman



Cifrados simétricos: RC2, RC4, IDEA, DES, 3DES, AES



Funciones de hash: MD5, SHA-1

SSL/TLS

TLS 1.1 Protocolo de negociación (handshake prot.)

Protocolo de alertas

Protocolo de paquetes (record protocol)

TCP/IP

Protocolo de datos de aplicación

Función seudo-aleatoria 

Función seudo-aleatoria PRF para expansión de secreto



A partir de un secreto compartido, genera las claves: ➔

Clave MAC cliente



Clave MAC servidor



Clave cifrado cliente



Clave cifrado servidor



Basada en funciones de hash



Usa una función auxiliar P_hash



P_hash y PRF generan un flujo de clave

Función seudo-aleatoria Función auxiliar P_hash (secreto, semilla) Semilla

+

Estado A

HMAC_hash

HMAC_hash

P_hash

Secreto Inicialmente A = Semilla

Función seudo-aleatoria Función PRF (secreto, etiqueta, semilla) Secreto S1

S1

S2

P_MD5 (S1, Etiqueta + Semilla)



Etiqueta + Semilla

S2

P_SHA1 (S2, Etiqueta + Semilla)

PRF

Función seudo-aleatoria 

PRF segura si al menos MD5 o SHA1 seguro



Requiere diferente número de iteraciones para P_MD5 y P_SHA1 (16 vs 20 bytes)



Etiqueta es un nombre ASCII que describe en que ámbito se está usando la función

Protocolo de negociación (handshake protocol) 





Autenticación por claves públicas (certificados) ➔

Servidor



Cliente (opcional)

Negociación de los parámetros de la sesión ➔

Identificador de sesión



Algoritmos de firma, cifrado, MAC, compresión

Establecimiento del secreto compartido (48 bytes)

Protocolo de negociación Servidor

Cliente

Client hello Versión de SSL del cliente (3.2) ● Sello de tiempo ● 28 bytes aleatorios ● ID de sesión (para reabrir sesión) o vacío ● Lista de combinaciones de algoritmos (intercambio de clave, cifrado, MAC) ● Lista de algoritmos de compresión (incluye null) ●

Protocolo de negociación Servidor

Cliente

Server hello Mejor versión de SSL del servidor compatible con la versión del cliente ● Sello de tiempo ● 28 bytes aleatorios ● ID de sesión ● Combinación de algoritmos escogida ● Algoritmos de compresión escogido ●

Protocolo de negociación Servidor

Cliente

Server certificate (opcional) Certificado X.509 del servidor Certificado X.509 de la Autoridad de Certificación 1 Certificado X.509 de la Autoridad de Certificación 2 ...

Protocolo de negociación Servidor

Cliente

Server key exchange (opcional) Parámetros para establecer el secreto común ● RSA: clave pública temporal para cifrar el secreto ● Diffie-Hellman: p, g, gx Firma (incluye los números aleatorios de Client_hello y Server_hello)

Sólo si la información contenida el el certificado no es suficiente

Protocolo de negociación Servidor

Cliente

Certificate request (opcional)

Pide al cliente que se autentique

Protocolo de negociación Servidor

Cliente

Server hello done

El cliente verifica la validez del certificado del servidor

Protocolo de negociación Servidor

Cliente

Client certificate (opcional) Certificado X.509 del cliente Certificado X.509 de la Autoridad de Certificación 1 Certificado X.509 de la Autoridad de Certificación 2 ... Sólo si el servidor mandó un Certificate request

Protocolo de negociación Servidor

Cliente

Client key exchange Establecimiento del pre-secreto común ● RSA: genera 48 bytes aleatorios y los cifra con la clave RSA (temporal o permanente) ● Diffie-Hellman: genera y manda gy

Secreto principal = 48 primeros bytes de PRF (pre-secreto, “master secret”, No. aleatorio cliente + No. aleatorio servidor)

Protocolo de negociación Servidor

Cliente

Certificate verify (opcional) Firma de la compilación de todos los mensajes de negociación anteriores

Protocolo de negociación Servidor

Cliente

Change cipher spec

Pide aplicar los nuevos parámetros negociados

Protocolo de negociación Servidor

Cliente

Finished Primeros 12 bytes de PRF (secreto principal, “client finished”, MD5(negociación) + SHA1(negociación) )

Notifica el fin de la secuencia y permite verificar que los nuevos parámetros funcionan

Protocolo de negociación Servidor

Cliente

Change cipher spec

Pide aplicar los nuevos parámetros negociados

Protocolo de negociación Servidor

Cliente

Finished Primeros 12 bytes de PRF (secreto principal, “server finished”, MD5(negociación) + SHA1(negociación) )

Generación de las claves 

Generar PRF (secreto principal, “key expansion”, No. aleatorio cliente + No. aleatorio servidor)



Partir este flujo aleatorio en ➔

Clave MAC cliente



Clave MAC servidor



Clave cifrado cliente



Clave cifrado servidor

Protocolo de alertas 



Manda mensajes de control ➔

Errores (advertencias o fatales)



Terminación

Paquetes comprimidos, cifrados por la capa del protocolo de paquetes

Protocolo de datos de aplicación 

Pasa los datos de la capa superior (HTTP, FTP...) a la capa de protocolo de paquetes para ser comprimidos, cifrados, etc.

Protocolo de paquetes (record protocol) 

Proporciona privacidad ➔



Proporciona integridad ➔



Encripción simétrica MAC con clave (HMAC_MD5, HMAC_SHA1)

Encapsula los datos de la capa superior ➔

Fragmenta en bloques menores que 16384 bytes



Comprime (opcional)



Calcula MAC



Cifra

Protocolo de paquetes (record protocol) Estructura de los paquetes: cifrado de flujo

➔ ➔ ➔

Tipo de contenido (alerta, negociación, aplicación) Versión del protocolo (3.2) Longitud del bloque cifrado

➔ ➔

Contenido (comprimido) MAC

Protocolo de paquetes (record protocol) Estructura de los paquetes: cifrado de bloques

➔ ➔ ➔

Tipo de contenido (alerta, negociación, aplicación) Versión del protocolo (3.2) Longitud del bloque cifrado

➔ ➔ ➔ ➔ ➔

Vector de inicialización Contenido (comprimido) MAC Relleno (hasta múltiple del tamaño de bloque) Longitud del relleno

2. Secure Shell SSH

Protocolo SSH 2.0 

RFCs 4250-4246



Establecer un canal seguro entre cliente y servidor







Sesión de comandos remota (reemplaza telnet, rsh, rlogin)



Transmisión de archivos (sftp, scp)



Re-envio de puertos (Ej. X11, correo, VNC...)

Tres capas ➔

Capa de transporte



Capa de autenticación del usuario



Capa de conexión

SSH2 incompatible con SSH1 (obsoleto)

Protocolo SSH 2.0 

Confidencialidad (encripción)



Integridad (MAC)



Autenticación





Computadora servidor



Computadora cliente (opcional)



Usuario

Basado en claves públicas

Protocolo de capa de transporte 

RFC 4253



Protocolo de bajo nivel



Corre encima de TCP/IP (puerto 22)



Asegura la autenticación del servidor



Proporciona encripción, integridad y compresión (opcional)



Maneja el intercambio de clave inicial y las renovaciones (recomendadas después de 1GB transmitidos o 1 hora)



Todos los algoritmos son negociados

Protocolo de capa de transporte Negociación de los algoritmos

Lista de algoritmos preferidos

Lista de algoritmos preferidos

Cliente

Lista de algoritmos preferidos: ● Intercambio de clave (Diffie-Hellman, varios parámetros) ● Clave del servidor (dsa*, rsa) ● Encripción Cliente-Servidor (3des-cbc*, aes128-cbc, rc4...) ● Encripción Servidor-Cliente (idem) ● MAC Cliente-Servidor (hmac-sha1*, hmac-md5,...) ● MAC Servidor-Cliente (idem) ● Compresión Cliente-Servidor (none*, zlib...) ● Compresión Servidor-Cliente (idem) *

Servidor

requerido

Protocolo de capa de transporte Intercambio de clave (Diffie-Hellman) Servidor

Cliente

X = gx mod p

Y = gy mod p K = X y mod p

X

H=hash( KS | X | Y | K ) K = Y x mod p

s = firmaKs (H) KS, Y, s

H=hash( KS | X | Y | K ) VerificaKs (H,s) Opcional: verifica validez de KS , clave pública del servidor (base de datos local o certificado)

Protocolo de capa de transporte Intercambio de clave (Diffie-Hellman) 

Firma con KS autentica servidor (≠ D-H original)



H = identificador de sesión (usado para aut. usuario)



K = secreto compartido, usado para derivar las claves simétricas y Vectores de Inicialización (a través de un hash con H y constantes)



No verificar la validez de KS es más cómodo pero posibilidad de ataque del Hombre-en-el-Medio ➔

Solución intermedia: aceptar 1ra vez y memorizar KS en una base de datos local

Protocolo de capa de transporte Paquetes binarios

Longitud del paquete ● Longitud del relleno ● Datos (eventualmente comprimidos) ● Relleno aleatorio (hasta múltiple del tamaño de bloque, min. 4 B) ●

MAC

MAC = MAC ( Clave, Número de secuencia, Paquete no cifrado )

Protocolo de autenticación del usuario 

Definido en el RFC 4252



Corre encima de la capa de transporte



Varios métodos posibles





Clave pública (requerida): RSA, DSA



Contraseña



Basado en computadora cliente



Interactivo



...

El servidor puede escoger cuales métodos admite

Autenticación por clave pública

SSH_MSG_USERAUTH_REQUEST  Nombre del usuario  Nombre del servicio requerido  “publickey”  Algoritmo de clave pública usado  Clave pública del usuario 

Firma (con clave del usuario)

¿Clave aceptable?  ¿Firma válida? 

Servidor

SSH_MSG_USERAUTH_SUCCESS o SSH_MSG_USERAUTH_FAILURE + lista de métodos restantes

Cliente

Autenticación por contraseña

SSH_MSG_USERAUTH_REQUEST  Nombre del usuario  Nombre del servicio requerido  “password”  Contraseña en claro 

Verifica par usuario/contraseña en su base de datos Servidor

SSH_MSG_USERAUTH_SUCCESS o SSH_MSG_USERAUTH_FAILURE + lista de métodos restantes

Cliente

Autenticación basada en computadora cliente

SSH_MSG_USERAUTH_REQUEST  Nombre del usuario  Nombre del servicio requerido  “hostbased”  Algoritmo de clave pública usado  Clave pública de la computadora cliente  Nombre de la computadora cliente  Nombre del usuario en la compu cliente 

Firma (con clave de la compu cliente) ¿Clave pertenece a la comput cliente?  ¿Firma válida?  ¿Usuario autorizado? (opcional) 

Servidor

SSH_MSG_USERAUTH_SUCCESS o SSH_MSG_USERAUTH_FAILURE + lista de métodos restantes

Cliente

Autenticación interactiva 

Definida en el RFC 4256



El servidor pide datos y el usuario contesta usando el teclado



Permite extender los métodos de identificación sin modificar el programa cliente ➔

Ej.1: Reto-respuesta



Ej. 2: Contraseña de uso único



...

Autenticación interactiva Cliente

SSH_MSG_USERAUTH_REQUEST  Nombre del usuario  Nombre del servicio requerido  “keyboard-interactive”  Métodos preferidos (opcional) 

Servidor

Autenticación interactiva Cliente

Despliega “Nombre de la petición”  Despliega “Instrucciones”  Despliega “Prompt ” y captura “Respuesta ” 1 1  ...  Despliega “Prompt ” y captura “Respuesta ” n n 

SSH_MSG_USERAUTH_INFO_REQUEST  Nombre de la petición  Instrucciones  Número de prompts n 

Prompt1  Echo 1 

Promptn  Echo n 

Servidor

...

Autenticación interactiva

SSH_MSG_USERAUTH_INFO_RESPONSE  Número de respuestas n 



Respuesta1

... 

Respuestan

Verifica las respuestas Servidor

SSH_MSG_USERAUTH_SUCCESS o SSH_MSG_USERAUTH_FAILURE + lista de métodos restantes o SSH_MSG_USERAUTH_INFO_REQUEST

Cliente

Protocolo de conexión 

Definido en el RFC 4254



Corre encima de la capa de autenticación del usuario



Proporciona





Ejecución de comandos



Sesiones interactivas



Re-envío de puertos

Canales multiplexados en un solo túnel cifrado ➔

Peticiones de apertura y cierre de canal



Envío de entradas, salidas, señales



...

Related Documents

Clase08
November 2019 7