Société de Sécurité Informatique - Audit Firewall Appliance
La sécurité informatique - La sécurité des informations

SSL : Secure Socket Layer


Envoyer cet article par Email !Imprimer cet article !Exporter cet article en PDF !FacebookTwitterGoogle Bookmarks

Qu'est-ce que c'est ?



SSL (Secure Socket Layer) est un protocole de sécurisation des échanges, développé par Netscape. Il a été conçu pour assurer la sécurité des transactions sur Internet (notamment entre un client et un serveur), et il est intégré depuis 1994 dans les navigateurs. Il existe plusieurs versions: la version 2.0 développée par Netscape; la version 3.0 qui est actuellement la plus répandue, et la version 3.1 baptisée TLS (transport Layer Security, RFC 2246) et standardisée par l'IETF (Internet Engineering Task Force). SSL fonctionne de manière indépendante par rapport aux applications qui l'utilisent; il est obligatoirement au dessus de la couche TCP et certains le considèrent comme un protocole de niveau 5 (couche session).



Pourquoi SSL ?



SSL permet d'assurer les services de sécurité suivants:



Les sous-protocoles de SSL



Le protocole SSL est constitué de quatre sous-protocoles:
1 ) Handshake qui permet l'authentification mutuelle du client et serveur, la négociation des algorithmes de chiffrement, de hachage, et l'échange des clés symétriques qui assurent le chiffrement.
2 ) le protocole SSL Change Cipher Spec
3 ) le protocole SSL Alert
4 ) le protocole SSL Record


Déroulement dés échanges SSL


Déroulement habituel d'un handshake SSL avec authentification mutuelle :



Les échanges définis par le protocole SSL se déroulent en deux phases:
1) Première phase : authentification du serveur
Suite à la requête d'un client, le serveur envoie son certificat au client et lui liste les algorithmes cryptographiques, qu'il souhaite négocier. Le client vérifie la validité du certificat à l'aide de la clé publique du CA (Certificate Authority) contenue dans le navigateur. Si le certificat est valide, le client génère un pré-master secret (PMS) de 48 octets qui servira à dériver le master secret (MS) de même taille, 48 octets, ce qui représente l'entropie maximale de la clé. Ce PMS est chiffré avec la clé publique du serveur puis transmis à ce dernier. 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 de la clé maître.
2) Deuxième phase : authentification (optionnelle) du client
Le serveur (et seulement lui) peut demander au client de s'authentifier en lui demandant tout d'abord son certificat. Le client réplique en envoyant ce certificat puis en signant un message avec sa clé privée (ce message contient des informations sur la session et le contenu de tous les échanges précédents).
Remarques :



Les variables d'état d'une session SSL


Une session SSL est définie par les variables suivantes:
  • Session ID (l'dentifiant de session) une séquence arbitraire de 32 octets choisie par le serveur pour identifier une session.
  • Peer certificate (le certificat du pair) c'est un certificat X 509 du correspondant (soit pour un serveur ou un client).
  • Compression method l'algorithme de compression utilisé, NULL pour l'instant (ce champ reste vide)
  • Cipher spec (la suite de chiffrement) définit les algorithmes de chiffrement et de hachage
  • MasterSecret c'est un clé de 48 octets partagée entre le client et le serveur.
  • Is resumable (le drapeau) c'est un flag qui indique si il est possible d'ouvrir de nouvelles connexions sur la session en question.

  • Les variables d'état d'une connexion SSL


    Les paramètres qui définissent une connexion SSL sont ceux qui se seront rafraîchis pendant une session lors d'établissement d'une nouvelle connexion. Ces paramètres sont:
  • Server_random et Client_random: deux nombres aléatoires de 32 octets, générés par le client et le serveur lors de chaque connexion.
  • Server_MAC_write_secret: clé secrète utilisé par le serveur pour calculer les MACs
  • Client_MAC_write_secret: clé secrète utilisé par le client pour calculer les MACs
  • Server_write_key: clé symétrique utilisé par le serveur pour le chiffrement des données.
  • Client_write_key: clé symétrique utilisé par le client pour le chiffrement des données.
  • Initialization vectors: vecteur d'initialisation pour le chiffrement par bloc en mode CBC (Cipher Bloc Chaining), l'un du coté serveur et l'autre du coté client.
  • Sequence number: chaque message est numéroté, l'un pour le serveur, l'autre par le client, et chacun codé sur 8 octets.



  • Le protocole Handshake


    Ce protocole permet l'authentification obligatoire du serveur, du client est optionnelle, et de négocier pour choisir les suites de chiffrement qui seront utilisées lors de la session.


    Déroulement des échanges du Handshake



    * message optionnel

  • ClientHello : ce message contient: la version: version du protocole SSL,client_random: nombre aléatoire, session_id:l'identificateur de session, cipher suite :la liste des suites de chiffrement choisies, et algo décompression: la liste des méthodes de compression.
  • ServerHello : ce message contient: la version: version du protocole SSL,Server_random: nombre aléatoire, session_id:l'identificateur de session, cipher suite :la liste des suites de chiffrement choisies, et algo décompression: la liste des méthodes de compression.
  • Certificate : ce message contient soit le certificat de serveur
  • ServerKeyExchange : contient le certificat de signature
  • CertificateRequest : le serveur réclame un certificat au client
  • ServerHelloDone : la fin de l'envoi de message
  • ClientKeyExchange : ce message contient le PreMastersecret crypté à l'aide PreMastersecret crypté à l'aide de la clé publique du serveur.
  • CertificateVerify : vérification explicite du certificat du client
  • Finished : fin du protocole Handshake et le début de l'émission des données



  • Le protocole ChangeCipherSpec (CCS)


    Ce protocole comprend un seul et unique message (1 octet) qui porte le même nom que le protocole, il permet d'indiquer au protocole Record la mise en place des algorithmes de chiffrement qui viennent d'être négociés.


    Le Protocole SSLRecord


    Ce protocole intervient après l'émission du message ChangeCipherSpec.il permet de garantir :
    - la confidentialité à l'aide de chiffrement des données
    - l'intégrité à l'aide de génération d'un condensât.


    Le protocole SSL Alert


    Ce protocole génère des messages d'alerte suite aux erreurs que peuvent s'envoyer le client et le serveur.Les messages sont composés de 20 octets, le premier étant soit fatal soit warning.Si le niveau de criticité du message est fatal, la connexion SSL est abandonnée. Le deuxième octet est utilisé pour le code d'erreur.

    Liste des Messages du protocol Alert:
    Les erreurs fatales sont:
    • bad_record_mac: réception d'un MAC erroné
    • decompression_failure: les données appliquées à la fonction de compression sont invalides
    • handshake_failure: impossibilité de négocier les bons paramètres
    • illegal_parameter: un paramètre échangé au cours du protocole Handshake ne correspondait pas avec les autres paramètres
    • unexpected_message: message non reconnu.
    Les warnings sont :
    • bad_certificate: le certificat n'est pas bon
    • certificate_expired: certificat périmé
    • certificat_revoked: certificat révoqué
    • certificat_unknown: certificat invalide pour des raisons précisés au dessus
    • close_notify: la fin d'une connexion
    • no_certificate: réponse négative à une demande de certificat
    • unsupported_certificate: le certificat reçu n'est pas reconnu



    Les ports utilisées par SSL


    HTTPS (HTTP en SSL) 443
    SMTPS (SMTP en SSL) 465
    NNTPS 563
    LDAPS (LDAP en SSL) 636
    POP3S 995
    IMAPS 995
    TELNETS 992

    En pratique, pour accéder à un serveur qui utilise les services SSL, on ajoute un "s" lors de la spécification du protocole.
    Exemple : https://www.monserveur.com


    Implémentations


    Plusieurs offres commerciales du serveur SSL sont disponibles, par exemple:


    Aspects cryptographiques de SSL:


    Le handshake SSL permet aux 2 entités de choisir une suite d'algorithmes cryptographiques pour assurer la sécurité de leurs échanges. Cette suite sera de la forme SSL_X_WITH_Y_Z où :
    La version 3.0 de SSL permet 31 possibilités de suites d'algorithmes cryptographiques différentes. Une de ces possibilités est de ne rien utiliser, ce qui revient à utiliser des algorithmes fictifs ne modifiant pas les données, ce que nous désignons comme suit :
    SSL_NULL_WITH_NULL_NULL

    Un autre exemple est :
    SSL_RSA_WITH_DES_CBC_MD5



    Intégrité et authentification


    L'intégrité est assurée au moyen de MACs (messages authentication codes), qui ont la double spécificité d'assurer à la fois intégrité et authentification des données. Un MAC allie une fonction de hachage (ici MD5 ou SHA-1, d'où une longueur finale de 16 ou 20 octets) à une clé secrète partagée par les 2 entités. Une façon habituelle de générer des MACs est d'utiliser la fonction HMAC (RFC 2104); ici, SSL définit sa propre fonction pour MACer, mais nous n'entrerons pas dans les détails. Attention, les illustrations font abstraction des headers, qui ne sont pas inclus dans les données protégées.




    Confidentialité

    Le chiffrement peut-être soit par flots, soit par blocs, suivant l'algorithme choisi. Prenons l'exemple du chiffrement par flot (en gris les données chiffrées):

    Après génération du MAC, les données sont directement processées dans la fonction de chiffrement.

    Quant au chiffrement par blocs, il est nécessaire de rajouter du padding avant le traitement, pour que la longueur totale des données à traiter soit un multiple de la taille d'un seul bloc (n x 64 bits par exemple).



    Evolutions du standard


    La prochaine version du standard aura quelques changements, parmi lesquels on retrouve :



    Les attaques et faiblesses de SSL





    Conclusion


    Le protocole SSL est actuellement le seul protocole de sécurisation déployé et utilisé à grande échelle, son grand avantage étant sa transparence par rapport au protocole TCP. Il garantit l'authentification, la confidentialité et l'intégrité des données.
    Avec son architecture modulaire, il ne se limite pas à des applications traditionnelles, puisque il intègre les réseaux sans fil comme le WAP (Wirless Transport Layer) sous le nom WTLS ( Wireless Transport Layer Security).


    Références


    - www.netscape.com/eng/ssl3



    Jis

    SoGoodToBe
    11 Mars 2002

    Ils nous font confiance
    © 2014 - Tous droits réservés - SecuriteInfo.com