Brouillon
Cette page n'est pas terminée.
Les protocoles Secure Sockets Layer (SSL) (ou Couche de sockets sécurisée) et Transport Layer Security (TLS) (ou Couche de transport sécurisée) sont des protocoles universellement acceptés pour l'établissement de communications authentifiées et chiffrées entre des clients d'une part et des serveurs d'autre part. L'authentification liée au serveur et celle liée au client utilisent toutes les deux SSL/TLS.
SSL/TLS utilise un système de combinaison entre une clé publique et un chiffrement à clé symétrique. Le chiffrement par clé symétrique est beaucoup plus rapide qu'un chiffrement par clé publique mais le chiffrement par clé publique permet d'utiliser de meilleures techniques d'authentification Une « session » SSL/TLS commence donc toujours par un échange de message qu'on appellera l'établissement de liaison (handshake est le terme communément employé en anglais). Cet établissement de liaison permet au serveur de s'authentifier envers le client en utilisant des techniques basées sur des algorithmes à clé publique, cela permet ensuite au client et au serveur de coopérer pour créer des clés symétriques afin de chiffrer/déchiffrer rapidement les messages échangées pendant la session.
Ces deux protocoles supportent différents algorithmes de chiffrement pour différentes opérations : l'authentification entre le serveur et le client, la transmission de certificats, l'établissement de clés de sessions. Les clients et serveurs peuvent supporter différents algorithmes de chiffrement. Une des fonctionnalités de l'établissement de liaison est la détermination du meilleur algorithme de chiffrement, supporté par le serveur et par le client. C'est cet algorithme qui sera ensuite utilisé pour les opérations listées juste avant.
Les algorithmes utilisés pour échanger des clés, comme RSA ou la cryptographie sur courbes elliptiques (ECC pour Elliptic Curve Cryptography en anglais) déterminent la façon dont le client et le serveur calculent les clés symétriques à utiliser pendant la session SSL/TLS. Le protocole SSL repose principalement sur des ensembles d'algorithmes qui incluent RSA alors que TLS, plus moderne supporte à la fois RSA et des algorithmes d'ECC.
Note : La sécurité de clés RSA dépend de sa longueur et de la capacité de calcul des ordinateurs. À l'heure actuelle, il est recommandé d'utiliser un clé RSA longue de 2048 bits. Bien que de nombreux serveurs web continuent d'utiliser des clés de 1024 bits, il serait préférable de passer à 2048 bits. Pour les ordinateurs 64 bits, des clés encore plus fortes devraient être utilisées (3072 ou 4096 bits par exemple).
Étant donné que certaines infrastructures de clés publiques utilisent encore RSA avant de migrer vers d'autres systèmes cryptographiques comme ECC, les serveurs devraient, dans la mesure du possible, continuer à supporter RSA.
Les suites de chiffrement supportées par RSA
Les suites de chiffrement communément supportées et qui utilisent un échange de clés basé sur RSA comportent généralement :
- AES et une authentification des messages basée sur SHA. Les algorithmes de chiffrement Advanced Encryption Standard (AES) utilisent une taille de bloc de 128 bits et des clés de 128 ou 256 bits. Il existe 3.4 x 1038 clés différentes sur 128 bits et 1.1 x 1077 clés différentes sur 256 bits. AES possède le plus grand nombre de clés parmi les différents algorithmes supportés par SSL, ce qui en fait donc le plus « fort ». Ces suites de chiffrement sont conformes à FIPS.
- Triple DES et authentification des messages basée sur SHA. Le triple DES (pour Data Encryption Standard) est le deuxième algorithme le plus fort supporté par SSL bien qu'il ne soit pas aussi rapide que RC4. Le triple DES utilise une clé trois fois plus grande qu'une clé utilisée pour un DES standard. La taille de clé est donc importante, ce qui permet d'avoir 3.7 * 1050 clés possibles. Cette suite de chiffrement est conforme à FIPS.
- RC4, RC2 et une authentification des messages basée sur MD5. Les algorithmes RC4 et RC2 chiffrent sur 128 bits, ce qui permet d'avoir (environ) 3.4 * 1038 clés différentes. Les algorithmes basés sur RC4 sont plus rapides que ceux basés sur RC2. RC4 peut utiliser une authentification des messages basée sur SHA ou MD5.
- DES et une authentification des messages basées sur SHA. DES, utilisé sur 56 bits permet de disposer d'environ 7.2 x 1016 clés différentes. Étant devenue trop faible cryptographiquement parlant, cette suite de chiffrement n'est plus conforme à FIPS.
Utiliser les courbes elliptiques pour la cryptographie
La cryptographie sur courbes elliptiques (ou Elliptic Curve Cryptography, ECC en anglais) est un système qui utilise les courbes elliptiques afin de créer des clés pour chiffrer des données. ECC permet d'avoir des clés de chiffrement plus fortes et également plus courtes que celles utilisées avec RSA. Cela fait qu'ECC est plus rapide et plus efficace, en termes d'implémentation, par rapport à RSA.
ECC dispose donc de plusieurs avantages par rapport à RSA. Un des désavantages d'ECC est qu'il est, pour l'instant, moins largement supporté que RSA.
Bits de sécurité | Longueur de clé RSA | Longueur de clé ECC |
---|---|---|
80 | 1024 | 160-223 |
112 | 2048 | 224-255 |
128 | 3072 | 256-383 |
192 | 7860 | 384-511 |
256 | 15360 | 512+ |
Les informations de ce tableau proviennent du National Institute of Standards and Technology (NIST). Pour plus d'informations, se référer à https://csrc.nist.gov/publications/nistpubs/800-57/SP800-57-Part1.pdf.
Pour plus d'informations sur ECC, voir également la RFC 4492 (et notamment la section 5.6.1 et le tableau 2).
Une excellente ressource, disponible en français, pour comprendre SSL/TLS est la conférence de Benjamin Sonntag réalisée dans le cadre d'Il était une fois Internet (CC BY-SA).