Per introdurre l'argomento, inizierei con questi punti:
-
Modelli di utilizzo SSL / TLS : come viene utilizzato per proteggere altri protocolli (ad esempio HTTP - > HTTPS, SMTP - > SMTPS o SMTP + STARTTLS). Trovo che la distinzione tra SSL e TLS sia spesso fraintesa per distinguere tra SSL / TLS dall'inizio v.s. SSL / TLS dopo un comando simile a STARTTLS all'interno del protocollo dell'applicazione (grazie a numerosi client e-mail popolari per promuovere questa confusione ...). Vorrei iniziare con SSL / TLS nel contesto di HTTPS e tenerlo per la fine. Non è la parte "difficile" di SSL / TLS, ma aiuta a sapere come vengono utilizzati nel resto dell'immagine (i livelli di rete). Questo dovrebbe mettere la discussione nel contesto per gli studenti con un background di networking che non necessariamente conoscono molto sulla crittografia o sicurezza.
-
Alcuni precedenti su chiave pubblica / crittografia asimmetrica , nonché alcuni elementi di base su chiave condivisa / crittografia simmetrica . Non sono sicuro che tu voglia entrare nei dettagli matematici, ma è bello sapere quali sono i tipi di chiavi e per cosa sono utilizzati. (Solitamente, entrambi vengono utilizzati durante una connessione SSL / TLS.)
Quindi, mentre segui un esempio di handshake SSL / TLS :
-
Autenticazione in SSL / TLS : perché (tendenzialmente) ci affidiamo ai certificati quando utilizzi SSL / TLS. Questo ti porterà quasi inevitabilmente a spiegare alcuni punti sui certificati X.509, PKI e CA. Questo argomento è in qualche modo ortogonale a SSL / TLS, ma la stragrande maggioranza delle connessioni SSL / TLS si basano su di esso, e questo è un componente essenziale per proteggere la connessione. Non necessariamente espanderei troppo l'autenticazione del certificato client, ma è almeno utile per i certificati del server. (Gli errori PKI tendono a dare a SSL / TLS un brutto nome nelle notizie.)
-
Scambio chiave Diffie-Hellman .
-
Distinzione tra suite di crittografia . Questo può portare a discussioni di crittografia più pesanti. Quanto lontano vuoi andare dipende dal tempo e dallo sfondo dei tuoi studenti.
-
Mostra gli altri tipi di record SSL / TLS e lo scopo di alcuni avvisi.
Puoi anche parlare un po 'delle differenze tra SSLv3, TLSv1.0, v1.1 e v1.2. Troppo su questo potrebbe portare a discussioni molto specifiche, però.
Da un punto di vista pratico, puoi provare alcune cose:
- Installa uno strumento come cURL e prova a ottenere una pagina HTTPS a tua scelta mentre monitorizzi il traffico di rete con Wireshark .
- Assicurati che la versione di cURL che ottieni sia come predefinita, senza un set preconfigurato di CA . cURL si lamenterà di non poter verificare il certificato del server senza un bundle di certificati CA affidabili: questa sarà una buona opportunità per parlare di autenticazione e spiegare a cosa servono le CA. (Installa alcuni certificati CA per il resto dell'esercizio.)
- Se puoi, installa il tuo server di prova e dai agli studenti la chiave privata (o fai tu la demo tu stesso), a decifra lo SSL / TLS crittografia con Wireshark , utilizzando la chiave privata del server. Assicurati di disabilitare le suite di crittografia Ephemeral Diffie-Hellman (DHE / EDH), altrimenti non funzionerà.
- Ancora usando Wireshark, osserva il comportamento di altri client. I client di posta elettronica come Thunderbird possono essere utili per questo. Un certo numero di server SMTP (Gmail incluso ora, credo) sono configurati per SMTPS e SMTP + STARTTLS (lo stesso per IMAP). È possibile giocare con entrambe le modalità e, se si utilizzano le opzioni di configurazione avanzate di Thunderbird, è possibile attivare / disattivare determinate versioni di SSL / TLS e scegliere alcune suite di crittografia. Può essere interessante osservare come differisce la negoziazione.
- Sperimentare con
openssl s_connect
(forse in congiunzione con s_server
, ma non necessariamente) può portare anche a interessanti esercizi pratici.