Cryptographie
Description de l'article de blog :
1/14/20257 min temps de lecture


Chiffrement asymétrique
Le chiffrement asymétrique utilise une paire de clés : une clé publique et une clé privée. Voici comment cela fonctionne :
Clé publique : Cette clé est partagée ouvertement et peut être utilisée par n'importe qui pour chiffrer des données ou vérifier une signature numérique.
Clé privée : Cette clé est gardée secrète et est utilisée pour déchiffrer les données chiffrées avec la clé publique correspondante ou pour signer des messages.
Exemple de fonctionnement :
Chiffrement :
Alice veut envoyer un message sécurisé à Bob.
Elle utilise la clé publique de Bob pour chiffrer le message.
Bob reçoit le message chiffré et utilise sa clé privée pour le déchiffrer.
Signature numérique :
Bob veut prouver que le message qu'il envoie à Alice provient bien de lui.
Il utilise sa clé privée pour signer le message.
Alice utilise la clé publique de Bob pour vérifier la signature et s'assurer que le message n'a pas été modifié.
Ce système garantit la confidentialité et l'authenticité des communications.
Voici quelques exemples de chiffrements asymétriques, les protocoles correspondants et leurs cas d'utilisation :
RSA (Rivest-Shamir-Adleman)
Protocole : RSA
Cas d'utilisation : Utilisé pour le chiffrement des données, les signatures numériques et l'échange de clés. Par exemple, il est couramment utilisé dans les certificats SSL/TLS pour sécuriser les communications sur Internet.
ECC (Elliptic Curve Cryptography)
Protocole : ECDSA (Elliptic Curve Digital Signature Algorithm) et ECDH (Elliptic Curve Diffie-Hellman)
Cas d'utilisation : Utilisé pour les signatures numériques et l'échange de clés. ECC est populaire dans les environnements où les ressources sont limitées, comme les appareils mobiles et les IoT (Internet des objets).
Diffie-Hellman (DH)
Protocole : Diffie-Hellman Key Exchange
Cas d'utilisation : Utilisé pour l'échange sécurisé de clés sur un canal non sécurisé. Il est souvent utilisé dans les protocoles VPN et IPsec pour établir des clés de session sécurisées.
ElGamal
Protocole : ElGamal Encryption
Cas d'utilisation : Utilisé pour le chiffrement des données et les signatures numériques. Il est utilisé dans certains systèmes de cryptographie comme PGP (Pretty Good Privacy).
DSA (Digital Signature Algorithm)
Protocole : DSA
Cas d'utilisation : Utilisé pour les signatures numériques. Il est souvent utilisé dans les certificats numériques pour garantir l'authenticité et l'intégrité des messages.
Ces algorithmes de chiffrement asymétrique sont essentiels pour garantir la sécurité et la confidentialité des communications dans divers domaines.
Chiffrement symétrique
Le chiffrement symétrique utilise une seule clé pour chiffrer et déchiffrer les données. Voici comment cela fonctionne :
Clé unique : Une seule clé est utilisée pour chiffrer et déchiffrer les données. Cette clé doit être gardée secrète et partagée uniquement entre les parties autorisées.
Chiffrement : Les données sont chiffrées à l'aide de la clé secrète avant d'être envoyées.
Déchiffrement : Le destinataire utilise la même clé secrète pour déchiffrer les données et les rendre lisibles.
Exemples de chiffrement symétrique et cas d'utilisation :
AES (Advanced Encryption Standard)
Cas d'utilisation : Utilisé pour le chiffrement des données sensibles dans les applications de sécurité, les communications sécurisées, et le stockage de données. Par exemple, AES est couramment utilisé pour chiffrer les fichiers sur les disques durs et les communications sur les réseaux sécurisés.
DES (Data Encryption Standard)
Cas d'utilisation : Bien que considéré comme obsolète en raison de sa faible sécurité, DES a été largement utilisé dans les années 1970 et 1980 pour le chiffrement des données. Il est encore utilisé dans certains systèmes hérités.
3DES (Triple Data Encryption Standard)
Cas d'utilisation : Utilisé pour améliorer la sécurité de DES en appliquant le chiffrement trois fois avec des clés différentes. Il est utilisé dans les systèmes bancaires et les transactions financières.
Blowfish
Cas d'utilisation : Utilisé pour le chiffrement des données dans les applications logicielles et les systèmes de stockage. Blowfish est connu pour sa rapidité et sa flexibilité.
RC4 (Rivest Cipher 4)
Cas d'utilisation : Utilisé pour le chiffrement des flux de données, comme dans les protocoles SSL/TLS pour sécuriser les communications sur Internet. Cependant, RC4 est considéré comme moins sécurisé aujourd'hui et son utilisation est déconseillée.
Le chiffrement symétrique est souvent utilisé pour chiffrer de grandes quantités de données en raison de sa rapidité et de son efficacité. Cependant, il nécessite un moyen sécurisé de partager la clé secrète entre les parties, ce qui peut être un défi.
fonction de hachage cryptographique.
Les fonctions de hachage prennent une entrée (ou "message") et produisent une sortie fixe (ou "digest") qui est censée être unique pour chaque entrée différente. MD5 produit un haché de 128 bits.
Sécurité de MD5
MD5 était autrefois largement utilisé pour vérifier l'intégrité des fichiers et pour stocker les mots de passe. Cependant, il n'est plus considéré comme sécurisé pour plusieurs raisons :
Collisions : Il est possible de trouver deux entrées différentes qui produisent le même haché MD5. Cela signifie que l'intégrité des données ne peut pas être garantie.
Attaques par force brute : Avec les avancées en puissance de calcul, il est devenu plus facile de casser les hachés MD5 en utilisant des attaques par force brute.
Attaques par préimage : Il est possible de trouver une entrée qui correspond à un haché MD5 donné, ce qui compromet la sécurité des mots de passe et des signatures numériques.
Alternatives sécurisées
Pour des applications nécessitant une sécurité robuste, il est recommandé d'utiliser des fonctions de hachage plus sécurisées comme :
SHA-256 (Secure Hash Algorithm 256 bits) : Utilisé dans de nombreuses applications de sécurité, y compris les certificats SSL/TLS et les signatures numériques.
SHA-3 : Une version plus récente de la famille SHA, offrant une sécurité renforcée.
bcrypt : Spécifiquement conçu pour le hachage des mots de passe, il inclut un facteur de coût pour rendre les attaques par force brute plus difficiles.
Exemple concret ou j'ai dû m'intéresser de près à cela : lors d'une tentative de connexion en SSH depuis mon Debian 12 vers mon Cisco... et là, j'ai un message d'erreur pourri : Unable to negotiate with x.x.x.x.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1
Là du coup j'ai dû reconfigurer mon client ssh, pour cela j'ai du faire :
su root
cd /etc/ssh/
nano ssh_config
modifier la ligne Ciphers et Macs pour ajouter :
MACs hmac-md5,hmac-sha1,hmac-sha2-256,umac-64@openssh.com,hmac-ripemd160
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
Et à la fin du fichier j'ai dû ajouter
HostkeyAlgorithms ssh-dss,ssh-rsa
KexAlgorithms +diffie-hellman-group1-sha1,diffie-hellman-group14-sha1
au final cela donne ça :
1. Ligne Ciphers
Cette ligne spécifie les algorithmes de chiffrement (ou ciphers) que le client SSH peut utiliser pour crypter les données échangées avec le serveur.
Exemple de configuration :
plaintext
CopyEdit
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
Signification :
Les algorithmes listés (comme aes128-ctr, aes192-ctr, aes256-ctr) sont des ciphers basés sur l'AES (Advanced Encryption Standard) en mode CTR (Counter Mode).
Chaque algorithme diffère par la longueur de la clé utilisée (128, 192 ou 256 bits), ce qui impacte le niveau de sécurité et les performances.
L'ordre de la liste indique la priorité : le client SSH tentera d'utiliser les ciphers dans cet ordre.
Pourquoi c'est important :
Cela garantit que seuls des algorithmes sûrs et supportés sont utilisés.
Vous pouvez restreindre les algorithmes pour vous conformer à des politiques de sécurité spécifiques ou pour éviter des algorithmes obsolètes/vulnérables.
2. Ligne MACs
Cette ligne spécifie les algorithmes de Message Authentication Code (MAC) que le client SSH peut utiliser pour garantir l'intégrité des données échangées.
Exemple de configuration :
plaintext
CopyEdit
MACs hmac-md5,hmac-sha1,hmac-sha2-256
Signification :
Les algorithmes listés (comme hmac-md5, hmac-sha1, hmac-sha2-256) sont des fonctions de hachage utilisées pour vérifier que les données reçues n'ont pas été altérées en cours de transfert.
hmac-md5 : Utilise l'algorithme MD5, qui est considéré comme faible.
hmac-sha1 : Utilise l'algorithme SHA-1, qui est plus sûr que MD5 mais moins que SHA-2.
hmac-sha2-256 : Utilise SHA-2 avec des clés de 256 bits, plus sécurisé.
Pourquoi c'est important :
Les algorithmes MAC préviennent les attaques de type "man-in-the-middle" en garantissant que les données échangées n'ont pas été modifiées.
En évitant les algorithmes obsolètes (comme hmac-md5 ou hmac-sha1), vous réduisez les risques de vulnérabilités.
En résumé
Ciphers : Détermine les algorithmes pour chiffrer les données échangées (confidentialité).
MACs : Détermine les algorithmes pour vérifier l'intégrité des données échangées.
Recommandations de sécurité
Mettre à jour les algorithmes pour éviter ceux qui sont obsolètes ou vulnérables :
Privilégiez aes256-ctr, aes256-gcm@openssh.com pour Ciphers.
Privilégiez hmac-sha2-256, hmac-sha2-512 pour MACs.
Évitez hmac-md5 et hmac-sha1.
Exemple de configuration sécurisée :
plaintext
CopyEdit
Ciphers aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-256,hmac-sha2-512
Tester vos paramètres :
Utilisez la commande suivante pour vérifier les algorithmes pris en charge :bash
CopyEdit
ssh -Q cipher
ssh -Q mac
Cela affichera les algorithmes pris en charge par votre version de SSH. Vous pouvez ajuster votre configuration en conséquence.
Sur le Cisco on peut faire un debug ip ssh pour voir le cipher ou l algorithme de chiffrage attendus !







