Mots-clés de base
Chiffré : Le résultat de la transformation des données en clair par un processus de chiffrement.
Chiffre : Une méthode pour chiffrer ou déchiffrer des données. Les chiffres modernes sont cryptographiques, mais il en existe d'autres, comme le chiffre de César.
Texte clair : Les données avant leur chiffrement. Il s'agit généralement de texte, mais cela peut aussi être une image ou un fichier.
Chiffrement : L'action de convertir des données en clair en chiffré en utilisant un algorithme et une clé.
Encodage : Ce n'est pas une forme de chiffrement, mais simplement une représentation des données, comme le Base64.
Clé : Une information nécessaire pour déchiffrer correctement un texte chiffré et accéder au texte en clair.
Phrase secrète : Différente de la clé, une phrase secrète sert à protéger la clé elle-même, similaire à un mot de passe.
Chiffrement asymétrique : Utilise une paire de clés distinctes : une pour chiffrer, l'autre pour déchiffrer.
Chiffrement symétrique : Utilise la même clé pour le chiffrement et le déchiffrement.
Force brute : Une attaque par essai systématique de toutes les clés ou phrases de passe possibles.
Cryptanalyse : Une attaque contre un système cryptographique exploitant des faiblesses dans sa structure mathématique sous-jacente.
Alice et Bob : Des pseudonymes couramment utilisés pour désigner deux parties souhaitant communiquer de manière sécurisée.
L'importance du chiffrement
Le chiffrement protège la confidentialité, l'intégrité et l'authenticité des données. Il est omniprésent dans les communications numériques, notamment via des connnexions sécurisées (HTTPS). Lorsque vous vous connectez à un site, vos identifiants sont chiffrés pour empêcher leur interception. Les connexions SSH établissent un canal chiffré. Les certificats permettent de vérifier l'identité d'un serveur web. Le chiffrement sert aussi à vérifier l'intégrité d'un fichier téléchargé via des sommes de contrôle (checksum). Il est donc essentiel de chiffrer les données sensibles au repos et en transit, conformément à des normes comme le PCI-DSS pour les données de carte de paiement. Les mots de passe ne doivent jamais être stockés en clair ; des fonctions de hachage sécurisées doivent être utilisées à leur place.
Types de chiffrement
Les deux grandes catégories sont le chiffrement symétrique et asymétrique. Le chiffrement symétrique (ex: AES) est rapide et utilise des clés de 128 ou 256 bits. Le chiffrement asymétrique (ex: RSA) est plus lent, utilise des clés plus longues (2048-4096 bits) et repose sur une paire clé publique/clé privée.
Principe de RSA
RSA repose sur la difficulté de factoriser de grands nombres entiers en leurs facteurs premiers. En cryptographie CTF, les variables clés sont p, q, n, e, d, m et c. Les valeurs p et q sont des grands nombres premiers ; n est leur produit (n = p * q). La clé publique est (n, e), la clé privée est (n, d). m représente le message, c le chiffré. Des outils comme RsaCtfTool ou rsatool sont utiles pour résoudre les défis RSA dans les CTF.
Échange de clés par chiffrement asymétrique
Le chiffrement asymétrique est souvent utilisé pour échanger une clé de session symétrique. Par analogie, pour envoyer un coffre-fort (clé symétrique) à un ami (serveur) sans qu'un tiers puisse y accéder, vous le verrouillez avec le cadenas (clé publique) de votre ami. Seul votre ami possède la clé (clé privée) pour l'ouvrir. Le chiffrement asymétrique n'est utilisé qu'une fois pour cette mise en place, le trafic suivant est chiffré symétriquement. Des mécanismes comme les signatures numériques et les certificats permettent d'authentifier les interlocuteurs.
Signatures numériques et certificats
Une signature numérique prouve l'authenticité et l'intégrité d'un document. Elle est créée avec une clé privée et peut être vérifiée avec la clé publique correspondante. Les certificats numériques lient une clé publique à une entité (comme un nom de domaine) et sont émis par des Autorités de Certification (CA). Une chaîne de confiance remonte jusqu'à une racine CA intégrée dans les systèmes d'exploitation et navigateurs. Let's Encrypt est un service permettant d'obtenir des certificats gratuits.
Authentification SSH
SSH peut utiliser une authentification par clé publique. La commande ssh-keygen génère une paire de clés. La clé privée doit être protégée avec des permissions strictes (par exemple, chmod 600 id_rsa). L'utilisation d'une phrase secrète pour chiffrer la clé privée est fortement recommandée. Cette clé privée peut être utilisée pour établir des connexions SSH plus stables que les reverse shells.
Exemple de commande pour tenter de craquer une phrase secrète de clé privée SSH :
# Conversion du fichier clé en hash pour John
ssh2john.py id_rsa_key > hash.txt
# Attaque par dictionnaire
john --wordlist=rockyou.txt hash.txt
Échange de clies Diffie-Hellman
L'algorithme Diffie-Hellman permet à deux parties d'établir une clé secrète partagée sur un canal de communication non sécurisé, sans jamais transmettre cette clé. Chacun combine son secret avec une valeur publique, puis échange le résultat. En combinant à nouveau ce résultat reçu avec leur propre secret, les deux parties parviennent indépendamment à calculer la même clé secrète. Cet échange est souvent utilisé en conjonction avec RSA et les signatures numériques pour sécuriser les protocoles comme TLS/HTTPS.
PGP, GPG et AES
PGP (Pretty Good Privacy) et son implémentation open source GPG (GnuPG) sont utilisés pour le chiffrement de fichiers et les signatures numériques. Les clés privées GPG peuvent être protégées par une phrase secrète, craquable avec gpg2john. Exemple d'utilisation basique de GPG pour déchiffrer un message :
gpg --import cle_privee.key
gpg --decrypt message.gpg
AES (Advanced Encryption Standard) est un chiffrement symétrique par blocs, successeur de DES. Il est considéré comme robuste, surtout avec une taille de clé de 256 bits.
L'avenir : l'informatique quantique et le chiffrement
L'ordinateur quantique représente une menace potentielle pour la cryptographie actuelle. Il pourrait rendre le chiffrement asymétrique basé sur la factorisation (RSA) ou le logarithme discret (courbes elilptiques) obsolète. Les systèmes symétriques comme AES-128 seraient vulnérables, mais AES-256 resterait plus résistant. Des recherches sont en cours au NIST pour standardiser des algorithmes résistants aux attaques quantiques (cryptographie post-quantique). Les recommandations actuelles de la NSA incluent l'utilisation de RSA-3072 ou supérieur et d'AES-256.