11. Considérations de sécurité (Security Considerations)
La sécurité du protocole TLS repose sur les hypothèses suivantes:
11.1. Force cryptographique (Cryptographic Strength)
La sécurité de TLS repose fondamentalement sur la force des primitives cryptographiques utilisées. Les implémenteurs doivent:
- Utiliser des suites de chiffrement fortes
- Éviter les algorithmes aux faiblesses connues (tels que DES, RC4, MD5)
- Mettre à jour régulièrement les bibliothèques cryptographiques pour corriger les vulnérabilités connues
11.2. Génération de nombres aléatoires (Random Number Generation)
La sécurité du protocole TLS dépend fortement de la génération de nombres aléatoires cryptographiquement forts. Les implémentations DOIVENT (MUST):
- Utiliser des générateurs de nombres pseudo-aléatoires cryptographiquement sécurisés (CSPRNG)
- S'assurer que le générateur de nombres aléatoires dispose de sources d'entropie suffisantes
- Réensemencer régulièrement le générateur de nombres aléatoires
11.3. Validation des certificats (Certificate Validation)
Une validation appropriée des certificats est essentielle pour prévenir les attaques de l'homme du milieu:
- Vérifier l'intégrité de la chaîne de certificats
- Vérifier l'état de révocation des certificats (CRL ou OCSP)
- Vérifier la correspondance du nom d'hôte
- Vérifier la période de validité du certificat
11.4. Attaques de retour arrière de version (Version Rollback Attacks)
Les implémentations DOIVENT (MUST) empêcher les attaques de retour arrière de version. TLS utilise les numéros de version dans ClientHello et ServerHello, ainsi que verify_data dans le message Finished, pour détecter les tentatives de retour arrière de version.
11.5. Attaques connues (Known Attacks)
Les implémentations doivent être conscientes des attaques connues suivantes:
- BEAST (Browser Exploit Against SSL/TLS): Attaque contre le mode CBC de TLS 1.0. TLS 1.2 atténue cela avec des IV explicites.
- CRIME (Compression Ratio Info-leak Made Easy): Attaque exploitant la compression TLS. Il est recommandé de désactiver la compression TLS.
- Lucky 13: Attaque temporelle contre le remplissage en mode CBC. Les implémentations doivent utiliser des comparaisons à temps constant.
- POODLE: Attaque contre SSL 3.0. SSL 3.0 devrait être désactivé.
- Attaque de Bleichenbacher: Attaque contre le remplissage RSA PKCS#1 v1.5. TLS 1.2 inclut des protections contre cela.
11.6. Renégociation (Renegotiation)
La renégociation peut introduire des risques de sécurité. La RFC 5246 définit l'extension de renégociation sécurisée pour résoudre ces problèmes. Les implémentations doivent:
- Implémenter la RFC 5746 (Extension d'indication de renégociation TLS)
- Gérer soigneusement les demandes de renégociation
- Envisager de refuser la renégociation pendant les opérations sensibles
11.7. Déni de service (Denial of Service)
Les poignées de main TLS sont relativement coûteuses (en particulier les opérations de clé publique). Les serveurs doivent:
- Mettre en œuvre la limitation de débit
- Envisager d'utiliser la reprise de session pour réduire le nombre de poignées de main complètes
- Surveiller et détecter les modèles anormaux
11.8. Sécurité de l'implémentation (Implementation Security)
Au-delà des considérations de sécurité au niveau du protocole, les implémentations doivent également:
- Prévenir les débordements de tampon
- Effacer en toute sécurité les données sensibles (clés, texte en clair)
- Utiliser des comparaisons à temps constant pour prévenir les attaques temporelles
- Gérer correctement les conditions d'erreur
Note: Pour une analyse de sécurité complète, veuillez vous référer à la section 11 et à l'annexe F de la RFC 5246.