Skip to content

Fonctionnement technique de MyCrypNet

MyCrypNet utilise OpenVPN. OpenVPN est un projet opensource de chiffrement de communication au niveau de la couche 4 du modèle OSI. Voici comment il fonctionne.
OpenVPN utilise la bibliothèque OpenSSL pour la gestion des éléments cryptographiques.

Fonctionnement technique de MyCrypNet

Fichiers nécessaires

Le logiciel client a besoin des fichiers suivants :

  • un couple clé/certificat (vpn.key/vpn.cert) signé avec notre autorité de certification mise en place pour OpenVPN, il est spécifique à chaque accès MyCrypNet souscrit. C’est un format SSL compatible fonctionnant avec l’algorithme asymétrique RSA.
  • fichier de configuration (MyCrypNet.conf ou MyCrypNet.ovpn), commun à tous les usagers et tous les logiciels clients mais variant selon les systèmes d’exploitation (Mac OS®, Windows®, Android™, IOS®, Linux®). Ce fichier contient une clé de dissipation, qui permet de lutter contre les attaques DDOS. Il contient aussi le certificat public de notre autorité de certification, commun à tous les clients et au serveur, basé aussi sur RSA. La clé correspondant à ce certificat est stockée protégée et n’est jamais divulguée dans l’infrastructure, elle sert à signer les certificats clients et serveurs.

Handshake (authentification et session)

Ce processus permet l’ouverture d’une session VPN ou la renégociation de cette session, au moins chaque heure.

Authentification

  1. Le logiciel client envoie un paquet contenant des en-têtes TLS au serveur signé avec la clé de dissipation disant qu’il souhaite se connecter (authentification SSL/TLS).
  2. Le serveur accepte ou rejette suivant la validité de la signature de la clé de dissipation réduisant les risques d’une attaque par DDOS. Les en-têtes TLS étant légers à produire cela forme une première vérification performante.
  3. Le logiciel client envoie son certificat au serveur.
  4. Le serveur vérifie la signature du certificat en comparant avec le certificat public de l’autorité de certification qu’il détient et une crl (liste de révocation de certificats, « certificate revocation list ») générée par l’autorité de certification (pour l’instant en interne mais publiable plus tard pour que le logiciel client puisse aussi invalider nos serveurs).
  5. Si la signature est bonne, le serveur envoie son certificat au logiciel client.
  6. Le logiciel client vérifie la signature du certificat en comparant avec le certificat public de l’autorité de certification qu’il détient (la crl viendra plus tard).
  7. Si la signature est bonne, le logiciel client et le serveur sont sûr de leurs identités mutuelles (tant qu’ils font confiance à l’autorité de certification).

Session

  1. chiffrement et la vérification de signatures par clé asymétrique sont lourd en calculs, si on les compare au chiffrement à clé symétrique et à la signature par hash. On génère donc un HMAC contenant une clé symétrique de session et un hash. Le protocole Diffie Helmann est mis en place pour générer le HMAC sans le faire passer dans la connexion :
    1. le logiciel client envoie au serveur une base publique C, un nombre premier public et une partie publique calculée à partir de cette base, de ce nombre premier et d’un secret c.
    2. le serveur envoie au logiciel client une partie publique S calculée à partir de la base et du nombre premier envoyés par le logiciel client et d’un secret s.
    3. les secrets du logiciel client et du serveur n’ont pas transité sur le réseau. S*c = C*s = HMAC (fonctionnant avec l’algorithme symétrique AES variante CBC pour la clé et SHA256 pour le hash).
  2. La conversation commence.

Conversation (chiffrement)

Ce processus permet le chiffrement des paquets au cours d’une session VPN.

  1. Le logiciel client envoie un paquet chiffré avec la clé symétrique de session au serveur et signé avec le hash.
  2. Si le paquet doit aller sur Internet par un exit node, le serveur déchiffre ce paquet avec la clé symétrique de session, vérifie l’origine et l’intégrité avec le hash et le traite.
  3. Le serveur chiffre à son tour la réponse obtenue depuis Internet et reçue sur l’exit node.
  4. Le logiciel client déchiffre la réponse obtenue avec la clé symétrique de session. Il vérifie l’origine et l’intégrité avec le hash.

Algorithmes cryptographiques utilisés

Voici les algorithmes choisis et pourquoi :

  • AES (https://fr.wikipedia.org/wiki/Advanced_Encryption_Standard) : Algorithme symétrique. Assure la performance de la communication comparée à RSA.
    • Variante CBC : cette variante d’AES assure une résistance aux attaques par répétition grâce à l’insertion d’une génératrice aléatoire (un même texte avec une même clé donne 2 résultats chiffrés différents).
    • Longueur : 256 bits.
  • RSA (https://fr.wikipedia.org/wiki/Chiffrement_RSA) : Algorithme asymétrique. Assure la vérification des signatures et donc la vérification de l’identité des parties.
    • Longueur : 4096 bits.
  • DH (https://fr.wikipedia.org/wiki/%C3%89change_de_cl%C3%A9s_Diffie-Hellman) : Protocole. Assure la génération d’une clé symétrique sans passer d’éléments secrets sur le réseau. Couplé à RSA, il assure une résistance aux « attaques de l’homme du milieu » (https://fr.wikipedia.org/wiki/Attaque_de_l%27homme_du_milieu) (quelqu’un ne peut pas s’insérer au milieu de la communication en se faisant passer aux yeux de l’un pour l’identité de l’autre), car RSA signe les échanges assurant l’identité des deux parties. En étant effectué chaque heure, il assure une confidentialité persistante parfaite (https://fr.wikipedia.org/wiki/Confidentialit%C3%A9_persistante) (la clé symétrique précédente étant détruite, un attaquant qui aurait réussi à avoir les éléments secrets d’une session ne peut pas s’en servir pour les sessions suivantes).
  • SHA256 (https://fr.wikipedia.org/wiki/SHA-2#SHA-256) : Algorithme de hash. Permet la vérification d’une signature plus rapidement qu’un algorithme asymétrique. Il permet la vérification de l’intégrité des paquets.
    • Longueur : 256 bits.
  • HMAC (https://fr.wikipedia.org/wiki/Keyed-Hash_Message_Authentication_Code) : Protocole. Il est utilisé pour l’encapsulation des paquets. Il permet aussi la signature des paquets d’authentification SSL/TLS avec la clé de dissipation, ceci réduit les risques de DDOS.
    • Variante : Composition de SHA256 et AES-256-CBC.

Autres systèmes utilisés

  • OpenVPN (https://fr.wikipedia.org/wiki/OpenVPN) : Logiciel open source permettant de créer le réseau MyCrypNet. Il implémente les protocoles de communication cités ci-dessus (authentification, session et conversation).
  • OpenSSL (https://fr.wikipedia.org/wiki/OpenSSL) : Bibliothèque open source utilisée par OpenVPN. Elle fournit l’implémentation des algorithmes cités ci-dessus et nécessaires aux protocoles de OpenVPN.

Créer votre réseau sécurisé

© 2015-2017 Coppint Market Place Ltd, All rights reserved. Mentions légales