@@ -356,9 +360,15 @@ Protocole d’interrogation de validité pour un certificat
...
@@ -356,9 +360,15 @@ Protocole d’interrogation de validité pour un certificat


* si l'OCSP n'est pas disponible pour le certificat firefox accepte le certificat
* s'il est valide
#### Online Certificate Status Protocol (OCSP)
* peu déployé
* peu déployé
* si l'OCSP n'est pas disponible pour le certificat firefox accepte le certificat
*[Approche par log publique de création révocation](http://confiance-numerique.clermont-universite.fr/Slides/R-Sasse.pdf)[<i class="fa fa-video-camera"></i>](http://webtv.u-clermont1.fr/media-MEDIA150907102804168)
***ServerHello** fait état du choix de la suite cryptographique parmis celles proposées
* première suite cryptographique préférée et proposée par le client
* comportement IIS par défaut
* directive *SSLHonorCipherOrder* pour forcer ce comportement pour apache
* première suite proposée par le client et supportée par défaut
***Certificate** contient le Certificat du serveur
***ServerHelloDone** attente de réponse du client
* valeur aléatoire **ServerRandom** pour la dérivation des clés
* Les données échangées par la suite entre le client et le serveur sont chiffrées et authentifiées à l'aide de clés dérivées
* Deuxième phase: authentificaiton du client
* optionnelle
Note:
-[Why does the SSL/TLS handshake have a client and server random?](http://security.stackexchange.com/questions/89383/why-does-the-ssl-tls-handshake-have-a-client-and-server-random)
- This would mean that the entire key generation routine was based on client generated values
- If a Man-In-The-Middle attacker replayed the handshake, the same pre-master secret would be sent and then used for the connection.
- Having the server generate a random value (ServerHello.random) will mean that the MAC (message authentication code) secret is different if the ClientHello.random is repeated, and therefore the MAC and encryption keys will be different, preventing any replay attack.
## ex: TLS_RSA_WITH_RC4_128_MD5
## Handshake - cypher suite TLS_RSA_WITH_RC4_128_MD5
* RC4_128 = algorithme de chiffrement [RC4](https://fr.wikipedia.org/wiki/RC4) avec clé de 128 bits
* quand le client a reçu le certificat du serveur
* génération d'une *pre-master secret* : secret de session
* chiffrer en utilisant la clé publique du certificat
***ClientKeyExchange** contient l'aléa chiffré que seul le serveur pourra déchiffrer
* la communiation est chiffré de manière symétrique
* RC4_128 algorithme de chiffrement [RC4](https://fr.wikipedia.org/wiki/RC4) avec clé de 128 bits
* pour chiffrer le canal de communication
* pour chiffrer le canal de communication
*[MD5](https://fr.wikipedia.org/wiki/MD5)
*[MD5](https://fr.wikipedia.org/wiki/MD5)
* protection de l'intégrité du canal de communication via [HMAC MD5](https://fr.wikipedia.org/wiki/Keyed-Hash_Message_Authentication_Code)
* protection de l'intégrité du canal de communication via [HMAC MD5](https://fr.wikipedia.org/wiki/Keyed-Hash_Message_Authentication_Code)
Note:
-[Why does the SSL/TLS handshake have a client and server random?](http://security.stackexchange.com/questions/89383/why-does-the-ssl-tls-handshake-have-a-client-and-server-random)
- This would mean that the entire key generation routine was based on client generated values
- If a Man-In-The-Middle attacker replayed the handshake, the same pre-master secret would be sent and then used for the connection.
- Having the server generate a random value (ServerHello.random) will mean that the MAC (message authentication code) secret is different if the ClientHello.random is repeated, and therefore the MAC and encryption keys will be different, preventing any replay attack.
## Handshake - Finished
## Handshake
* Le client vérifie la chaîne de certification du certificat
* chaîne de certification invalide
* fin de la connexion
* chaîne de certification valide
* le client renvoie le *pre-master sercet* chiffré dans **ClientKeyExchange**
* le **pre-master secret**, le **ClientRandom** et le **ServerRandom** sont connus du client et du serveur
* ces éléments partagés sont alors dérivés pour générer les clés symétriques utilisés par
* RC4 pour la confidentialité du trafic
* HMAC MD5 pour l'intégrité du trafic
* les messages **ChangeCiperSpec** sont échangés pour indiquer l'activation des algorithmes et des clés
[Comprendre le SSL/TLS: Partie 4 Handshake Protocol](https://blog.eleven-labs.com/fr/comprendre-le-ssltls-partie-4-handshake-protocol/)
* les messages **finished**
* premiers messages chiffrés
* contiennent un condensat de tous les messages échangés
* intégrité de la négociation
*[déroulement des échanges ssl en détail](https://www.securiteinfo.com/cryptographie/ssl.shtml)
<br>
## Suite cryptographique
(*[Déroulement des échanges ssl en détail](https://www.securiteinfo.com/cryptographie/ssl.shtml)*)
* la connaissance de la clé privée n'est d'aucun intérêt
*[PFS (*Perfect Forward Secrecy*)](https://fr.wikipedia.org/wiki/Confidentialit%C3%A9_persistante): la connaissance de la clé privée n'apporte pas d'avantage pour déchiffrer
<!-- .element style="width: 75%" -->
<!-- !!!! -->
* Un client peut présenter un certificat au serveur
* Le serveur vérifie si le certificat est signé par une CA de confiance
* Le serveur peut utiliser ces informations pour authentifier l’utilisateur
* Le certificat peut être stocké dans un périphérique (e.g. Yubikey), une carte à puce (e.g. CPS), ...
vérifier avec le CNRS
## Certification Authority Authorization (CAA)
## Certification Authority Authorization (CAA)
...
@@ -702,9 +579,11 @@ vérifier avec le CNRS
...
@@ -702,9 +579,11 @@ vérifier avec le CNRS
* Le 9 septembre 2017, Comodo s’est fait pincer pour ne pas le respecter :
* Le 9 septembre 2017, Comodo s’est fait pincer pour ne pas le respecter :
[Comodo Caught Breaking New CAA Standard One Day After It Went Into Effect](https://www.bleepingcomputer.com/news/security/comodo-caught-breaking-new-caa-standard-one-day-after-it-went-into-effect/)
[Comodo Caught Breaking New CAA Standard One Day After It Went Into Effect](https://www.bleepingcomputer.com/news/security/comodo-caught-breaking-new-caa-standard-one-day-after-it-went-into-effect/)
(à vérifier masi c'est le cas ou un domaine est déjà enregistré chez un CA let's encrypt par exmple (il a l'enregsitrement) mais comodo n'en a pas tenu compte)
* Validation par les CA
Note:
- cas où un domaine est déjà enregistré chez un CA (let's encrypt)
- et qu'une autre CA lui délivre un certificat
- Comodo n'en a pas tenu compte
## DNS-Based Authentication of Named Entities (DANE)
## DNS-Based Authentication of Named Entities (DANE)
*[Certificate authorities issue SSL certificates to fraudsters](http://news.netcraft.com/archives/2015/10/12/certificate-authorities-issue-hundreds-of-deceptive-ssl-certificates-to-fraudsters.html)
* rarement testés par le navigateur
*[Online Certificate Status Protocol (OCSP)](https://fr.wikipedia.org/wiki/Online_Certificate_Status_Protocol)
*[abandonner côté client en cas de certififcat révoqué](https://wiki.mozilla.org/CA:ImprovingRevocation)
* maintenir un cache de réponse valide côté serveur
*[Approche par log publique de création révocation](http://confiance-numerique.clermont-universite.fr/Slides/R-Sasse.pdf)[<i class="fa fa-video-camera"></i>](http://webtv.u-clermont1.fr/media-MEDIA150907102804168)
*[OpenSSL Decoder](https://raymii.org/s/software/OpenSSL_Decoder.html) avec [son post de blog](https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html)
*[SSL Cipher Suite Details of Your Browser](https://cc.dcsec.uni-hannover.de/)
*[<i class="fa fa-book"></i> Chrome, Firefox et recherches Google : passage en force du HTTPS](http://dareboost.developpez.com/tutoriels/securite-web/https-nouveaute-recherche-google-chrome-firefox/)
- aspect arbitraire de la notation notamment qualys
- aspect arbitraire de la notation notamment qualys
...
@@ -806,40 +681,47 @@ Note:
...
@@ -806,40 +681,47 @@ Note:
## <i class="fa fa-medkit"></i> Se protéger
## <i class="fa fa-medkit"></i> Se protéger
* un service sans **s** est un problème
* pas ftp, mais sftp ou ftps
* pas rsync, mais rsync over sssh
* pas imap, pop3 et smtp, mais imaps, pop3s et smtps
* Seules les implémentations conformes à TLSv1 et supérieures doivent être employées
* Seules les implémentations conformes à TLSv1 et supérieures doivent être employées
* Les cyphersuites offrant la PFS doivent être favorisées
* Les cyphersuites offrant la PFS doivent être favorisées
*[Anssi - SSL/TLS: état des lieux et recommandations](www.ssi.gouv.fr/.../SSL_TLS_etat_des_lieux_et_recommandations.pdf)
*[Anssi - SSL/TLS: état des lieux et recommandations](www.ssi.gouv.fr/.../SSL_TLS_etat_des_lieux_et_recommandations.pdf)
* Apache tips
*[Chiffrement fort SSL/TLS : Mode d'emploi](https://httpd.apache.org/docs/2.4/fr/ssl/ssl_howto.html)
*[Hardening Your Web Server’s SSL Ciphers](https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/)
*[ssllabs.com's own Apache SSL Config Directives](https://community.qualys.com/thread/9652)
*[Apache web server SSL best practices](https://wiki.fysik.dtu.dk/it/SSL_best_practices)
* Nginx tips
*[HTTPS on Nginx: From Zero to A+ (Part 1)](https://juliansimioni.com/blog/https-on-nginx-from-zero-to-a-plus-part-1/)
*[HTTPS on Nginx: From Zero to A+ (Part 2)](https://juliansimioni.com/blog/https-on-nginx-from-zero-to-a-plus-part-2-configuration-ciphersuites-and-performance/)
## <i class="fa fa-medkit"></i> Se protéger
## <i class="fa fa-medkit"></i> Se protéger / Apache
*Multi server tips
*[Chiffrement fort SSL/TLS : Mode d'emploi](https://httpd.apache.org/docs/2.4/fr/ssl/ssl_howto.html)
*[https://cipherli.st/](https://cipherli.st/) pour une conf sécurisée
*[Hardening Your Web Server’s SSL Ciphers](https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/)
*[<i class="fa fa-warning"></i> Modifier tous les vhosts pour nginx!!](http://serverfault.com/questions/641150/nginx-cant-disable-sslv3)
*[ssllabs.com's own Apache SSL Config Directives](https://community.qualys.com/thread/9652)
* fixer le [weak Diffie-Hellmani (aka logjam Attack](https://weakdh.org/))
*[Apache web server SSL best practices](https://wiki.fysik.dtu.dk/it/SSL_best_practices)
* suivre les [<i class="fa fa-book"></i> recommandations de l'ANSSI](https://www.ssi.gouv.fr/agence/publication/ssltls-3-ans-plus-tard/)
## <i class="fa fa-medkit"></i> Se protéger / Nginx
<br/>
*[HTTPS on Nginx: From Zero to A+ (Part 1)](https://juliansimioni.com/blog/https-on-nginx-from-zero-to-a-plus-part-1/)
*[HTTPS on Nginx: From Zero to A+ (Part 2)](https://juliansimioni.com/blog/https-on-nginx-from-zero-to-a-plus-part-2-configuration-ciphersuites-and-performance/)
#### dans tous les cas
#### bien regarder la date ...
#### <i class="fa fa-medkit"></i> Se protéger / tout serveur
### car valable jusqu'à la prochaine faille!!!<!-- .element class="fragment rollin" -->
*[https://cipherli.st/](https://cipherli.st/) pour une conf sécurisée
*[<i class="fa fa-warning"></i> Modifier tous les vhosts pour nginx!!](http://serverfault.com/questions/641150/nginx-cant-disable-sslv3)
Note:
* fixer le [weak Diffie-Hellmani (aka logjam Attack](https://weakdh.org/))
*[CaenCamp #33 : Infrastructures à clés publiques](https://www.youtube.com/watch?v=9zNAUFtw7Ac) par [Romain Tartiaire](https://romain.blogreen.org/)
*[Chrome, Firefox et recherches Google : passage en force du HTTPS ](http://dareboost.developpez.com/tutoriels/securite-web/https-nouveaute-recherche-google-chrome-firefox/)