jeudi 10 janvier 2013

C'est quoi SSL, SSH, HTTPS ?

بتاريخ 20:22 بواسطة Unknown






Ça sert à quoi SSL ?
SSL = Secure Socket Layer
C'est un système qui permet d'échanger des informations entre 2 ordinateurs de façon sûre. SSL assure 3 choses:
  • Confidentialité: Il est impossible d'espionner les informations échangées.
  • Intégrité: Il est impossible de truquer les informations échangées.
  • Authentification: Il permet de s'assurer de l'identité du programme, de la personne ou de l'entreprise avec lequelle on communique.
SSL est un complément à TCP/IP et permet (potentiellement) de sécuriser n'importe quel protocole ou programme utilisant TCP/IP.
SSL a été créé et développé par la société Netscape et RSA Security. On trouve désormais des versions opensource ainsi qu'un protocole libre similaire: TLS (voir plus loin).

Pourquoi utiliser SSL plutôt qu'un autre système ?
Pourquoi utiliser OpenSSL ?
  • SSL est standardisé.
  • Il existe une version libre de SSL: OpenSSL (http://www.openssl.org) que vous pouvez utiliser dans vos programmes sans payer de royalties.
  • OpenSSL est opensource: tout le monde peut contrôller et vérifier le code source (Le secret réside dans les clés de chiffrement, pas dans l'algorithme lui-même).
  • SSL a été cryptanalysé: ce système a été plus analysé que tout ses concurrents. SSL a été passé en revue par de nombreux spécialistes en cryptographique. On peut donc le considérer comme sûr.
  • Il est répandu: on peut facilement créer des programmes qui dialogueront avec d'autres programmes utilisant SSL.
Il faut se méfier des systèmes propriétaires: contrairement à ce qu'on pourrait penser, la sécurité d'un système de chiffrement ne résidepas dans le secret de l'algorithme de chiffrement, mais dans le secret de la clé. Il ne faut faire confiance qu'aux systèmes qui ont été publiés et analysés.

Comment ça marche SSL ?
SSL consiste en 2 protocoles:
  • SSL Handshake protocol: avant de communiquer, les 2 programmes SSL négocient des clés et des protocoles de chiffrement communs.
  • SSL Record protocol: Une fois négociés, ils chiffrent toutes les informations échangées et effectuent divers contrôles.

La négociation SSL ("handshake")
Au début de la communication le client et le serveur s'échangent:
  • la version SSL avec laquelle ils veulent travailler,
  • la liste des méthodes de chiffrement (symétrique et asymétrique) et de signature que chacun connaît (avec longueurs de clés),
  • les méthodes de compression que chacun connaît,
  • des nombres aléatoires,
  • les certificats.
Client et serveur essaient d'utiliser le protocole de chiffrement le plus puissant et diminuent jusqu'à trouver un protocole commun aux deux. Une fois que cela est fait, ils peuvent commencer à échanger des données.

La communication SSL ("record")
Avec SSL, l'expéditeur des données:
  • découpe les données en paquets,
  • compresse les données,
  • signe cryptographiquement les données,
  • chiffre les données,
  • les envoie.
Celui qui réceptionne les données:
  • déchiffre les données,
  • vérifie la signature des données,
  • décompresse les données,
  • réassemble les paquets de données.

Comment SSL fait-il pour protéger les communications ?
SSL utilise:
  • un système de chiffrement asymétriques (comme RSA ou Diffie-Hellman). Vous pouvez en savoir plus ici:http://sebsauvage.net/comprendre/encryptage/crypto_asy.html. Il est utilisé pour générer la master key (clé principale) qui permettra de générer des clés de session.
  • un système de chiffrement symétrique (DES, 3DES, IDEA, RC4...) en utilisant les clés de session pour chiffrer les données.
  • un système de signature cryptographique des messsages (HMAC, utilisant MD5, SHA...) pour s'assurer que les messages ne sont pas corrompus.
C'est lors de la négociation SSL que le client et le serveur choisissent des systèmes communs (chiffrement asymétrique, symétrique, signature et longueur de clé).
Dans votre navigateur, vous pouvez voir la liste des systèmes utilisés en plaçant votre curseur sur le petit cadenas quand vous êtes dans une page en HTTPS.

A quoi servent les certificats ?
Lors d'une négociation SSL, il faut s'assurer de l'identité de la personne avec qui on communique. Comment être sûr que le serveur auquel vous parlez est bien celui qu'il prétend être ?
C'est là qu'interviennent les certificats. Au moment de vous connecter sur un serveur web sécurisé, ce dernier vous enverra un certificat contenant le nom de l'entreprise, son adresse, etc. C'est une sorte de pièce d'identité.
Comment vérifier l'authenticité de cette pièce d'identité ?
Ce sont les PKI (Public Key Infrastructure), des sociétés externes (auxquelles vous faites implicitement confiance), qui vont vérifier l'authenticité du certificat.
(La liste de ces PKI est incluse dans votre navigateur. Il y a généralement VeriSignThawte, etc.)
Ces PKI signent cryptographiquement les certificats des entreprises (et ils se font payer pour ça).

Les utilisation de SSL: HTTPS, SSH, FTPS, POPS...
SSL peut être utilisé pour sécuriser pratiquement n'importe quel protocole utilisant TCP/IP.
Certains protocoles ont été spécialement modifiés pour supporter SSL:
  • HTTPS: c'est HTTP+SSL. Ce protocole est inclus dans pratiquement tous les navigateurs, et vous permet (par exemple) de consulter vos comptes bancaires par le web de façon sécurisée.
  • FTPS est une extension de FTP (File Transfer Protocol) utilisant SSL.
  • SSH (Secure Shell): c'est une sorte de telnet (ou rlogin) sécurisé. Cela permet de se connecter à un ordinateur distant de façon sûre et d'avoir une ligne de commande. SSH possède des extensions pour sécuriser d'autres protocoles (FTP, POP3 ou même X Windows).
Il est possible de sécuriser des protocoles en créant des tunnels SSL. Une fois le tunnel créé, vous pouvez faire passer n'importe quel protocole dedans (SMTP, POP3, HTTP, NNTP...). Toutes les données échangées sont automatiquement chiffrées.
On peut faire cela avec des outils comme STunnel (http://www.stunnel.org) ou SSH.
Voici un exemple avec le protocole POP3:

Avec le protocole POP3 que vous utilisez habituellement pour aller lire votre courrier, les mots de passe et les messages transitent en clair sur Internet. Il est possible de voler vos mots de passe et vos messages.

Avec le tunnel SSL, et sans rien changer aux logiciels client et serveur, vous pouvez sécuriser la récupération de vos mails: personne ne peut vous volez vos mots de passe ou emails puisque tout ce qui passe à travers le tunnel SSL est chiffré.
Mais cela nécessite d'installer STunnel sur le client et sur le serveur.
Certains fournisseur d'accès proposent ce service, mais ça reste trop rare. Demandez à votre fournisseur d'accès si il a ce genre de service en place.
STunnel permet ainsi de sécuriser la majorité des protocoles basé sur TCP/IP sans modifier les logiciels. Il est très facile à installer.

Quelles sont les différentes versions de SSL ?
SSL version 3.0 est très similaire à SSL version 2.0, mais SSL v2.0 possède moins d'algorithmes de chiffrement que SSL v3.0.
TLS v1.0 est un protocole similaire basé sur SSL. Les applications utilisant TLS v1.0 peuvent sans problème communiquer avec des applications utilisant SSL v3.0.

Alors quand je vois le cadenas, c'est sûr ?

Le cadenas vous indique que les communications entre votre navigateur et le site web sont sûres: personne ne peut les espionner, et personne ne peut trafiquer les communications. Mais il ne garantie rien d'autre !


Pour prendre une image:
HTTPS (le cadenas), c'est un peu comme un fourgon blindé: Il vous assure la sécurité du transport.
Mais vraiment que du transport.
Le fourgon blindé ne vous garantiera pas que la banque utilise de bons coffre-forts et qu'elle les ferme bien.
Le fourgon bindé ne garantie pas non plus que la banque ne fait pas de malversations.
Le fourgon blindé ne garantie vraiment que le transport.

C'est la même chose pour HTTPS (le petit cadenas du navigateur).

De la même manière que des truands peuvent louer les services d'un fourgon blindé, des pirates et truands peuvent très bien créer un site sécurisé (avec le petit cadenas).

Soyez vigilants, et ne confiez pas n'importe quelle information sur n'importe quel site, cadenas ou pas.


ردود على "C'est quoi SSL, SSH, HTTPS ?"

أترك تعليقا