Para presentar el tema, me gustaría comenzar con estos puntos:
Patrones de uso de SSL / TLS : cómo se usa para proteger otros protocolos (por ejemplo, HTTP - > HTTPS, SMTP - > SMTPS o SMTP + STARTTLS). Encuentro que la distinción entre SSL y TLS a menudo se malinterpreta como una distinción entre SSL / TLS desde el principio vs. SSL / TLS después de un comando similar a STARTTLS dentro del protocolo de la aplicación (gracias a varios clientes de correo electrónico populares por promover esta confusión ...). Yo comenzaría con SSL / TLS en el contexto de HTTPS y lo mantendría hasta el final. No es la parte "dura" de SSL / TLS, pero ayuda a saber cómo se utilizan en el resto de la imagen (las capas de red). Esto debería poner la discusión en contexto para los estudiantes con antecedentes en redes que no necesariamente conocerían mucho sobre criptografía o seguridad.
-
Algunos antecedentes sobre clave pública / criptografía asimétrica , así como algunos antecedentes sobre clave compartida / criptografía simétrica . No estoy seguro de si desea incluir los detalles matemáticos, pero es bueno saber qué tipo de teclas son y para qué se usan. (Por lo general, ambos se utilizan durante una conexión SSL / TLS).
Luego, mientras pasa por un ejemplo de protocolo de enlace SSL / TLS :
Autenticación dentro de SSL / TLS : ¿por qué (tendemos a) confiar en los certificados cuando usamos SSL / TLS? Esto casi inevitablemente lo llevará a explicar algunos puntos sobre los certificados X.509, PKI y CA. Este tema es algo ortogonal a SSL / TLS, pero la gran mayoría de las conexiones SSL / TLS dependen de él, y ese es un componente esencial para asegurar la conexión. No necesariamente me expandiría demasiado en la autenticación del certificado de cliente, pero eso es al menos útil para los certificados de servidor. (Los fallos de PKI tienden a dar a SSL / TLS un mal nombre en las noticias).
Intercambio de claves Diffie-Hellman .
-
Distinción entre conjuntos de cifrado . Esto puede llevar a discusiones criptográficas más pesadas. La medida en que quiera llegar con esto dependerá de la hora y los antecedentes de sus estudiantes.
-
Mostrar los otros tipos de registros SSL / TLS y el propósito de algunas alertas.
También puede hablar sobre las diferencias entre SSLv3, TLSv1.0, v1.1 y v1.2 un poco. Sin embargo, demasiado sobre esto podría llevar a discusiones muy específicas.
Desde un punto de vista práctico, puedes probar algunas cosas:
- Instale una herramienta como cURL e intente obtener una página HTTPS de su elección mientras supervisa el tráfico de red con Wireshark .
- Asegúrate de que la versión de cURL que obtienes sea la predeterminada, sin un conjunto preconfigurado de CAs . cURL se quejará de que no puede verificar el certificado del servidor sin un paquete de certificados de CA confiables: esta será una buena oportunidad para hablar sobre la autenticación y explicar para qué sirven las CA. (Instale algunos certificados de CA para el resto del ejercicio).
- Si puede, instale su propio servidor de prueba y dé a los estudiantes la clave privada (o haga la demostración usted mismo), para descifrar el SSL / TLS cifrado con Wireshark , utilizando la clave privada del servidor. Asegúrate de deshabilitar los conjuntos de cifrado Ephemeral Diffie-Hellman (DHE / EDH) para esto, de lo contrario no funcionará.
- Aún utilizando Wireshark, observe el comportamiento de otros clientes. Los clientes de correo electrónico como Thunderbird pueden ser buenos para esto. Varios servidores SMTP (Gmail incluido ahora, creo) están configurados para SMTPS y SMTP + STARTTLS (igual para IMAP). Puedes jugar con ambos modos y, si accedes a las opciones de configuración avanzada de Thunderbird, puedes activar / desactivar ciertas versiones de SSL / TLS y elegir ciertos conjuntos de cifrado. Puede ser interesante observar cómo difiere la negociación.
- Experimentar con
openssl s_connect
(quizás junto con s_server
, pero no necesariamente) también puede llevar a ejercicios prácticos interesantes.