« Cryptographie/Applications informatique » : différence entre les versions

Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (- *\|\s?leçon\s*=\s?\[\[([^\]]*)\]\] + | leçon = ../)
Saiketsu (discussion | contributions)
Aucun résumé des modifications
Ligne 9 :
}}
 
=== Approche du problème ===
Les applications de chiffrement sont nombreuses, citons principalement les tunnels chiffrés (appelés communément VPN), le chiffrement de disque-dur ou d'espace disque (seul le propriétaire du disque peut y relire les informations) et les signatures numériques (emails ou autres documents).
 
Supposons que Alice veut parler à Bob, pour lui faire des confidences à propos de leur amie Claire. Ils vivent tous les trois côte à côte, et ils communiquent par un tuyau reliant les trois pièces. Dès lors, si Alice et Bob veulent échanger des informations sans que leur amie Claire ne le sachent, ils doivent recourir à la cryptographie.
=== Chiffrement simple : le contrôle d'erreur ===
De manière générale, toute communication informatique peut :
# Être altérée accidentellement pendant la transmission ;
# Être interceptée en cours de transmission, voire modifiée par un tiers.
La cryptographie permet de résoudre ces problèmes.
 
=== Exemples ===
C'est le chiffrement le plus simple qui permet d'obtenir l'empreinte d'un fichier. Le fichier peut faire plusieurs méga-octets, l'empreinte ne dépassera pas 160 bits. La technique dite CRC (''Cyclic Redondary Control'') utilise une fonction booléenne XOR. Les techniques d'empreintes « infalsifiables » utilisent des algorithmes plus compliqués comme MD5 ou SHA-1.
 
Prenons un exemple pratique. Alice veut envoyer à Bob un fichier sur son ordinateur, en s'assurant que le fichier arrivera identique, sans avoir été ni lu par Claire, ni modifié.
=== Chiffrement symétrique : le codage rapide ===
 
=== ChiffrementFonctions simplede hachage : le contrôle d'erreur ===
Le chiffrement symétrique utilise le même algorithme pour coder et décoder l'information. Par exemple le code de César consiste à décaler chaque lettre du message d'un nombre défini : pour décoder, il suffit de connaître ce nombre.
 
L'idée est que chaque fonction de hachage produit en théorie un unique hash pour une unique suite d'octets. Alice commence la transmission de son fichier. Pour vérifier l'intégrité du message, chaque paquet du fichier subit un CRC (Contrôle de Redondance Cyclique), qui sera intégré dans le paquet avant l'envoi. À l'arrivée, l'ordinateur de Bob effectue de nouveau le CRC. Si le résultat est différent de celui envoyé par Alice, le paquet a été altéré : la fonction de hachage a permis de vérifier la bonne transmission du message.
 
Similairement, on utilise couramment les fonctions de hachage pour stocker des mots de passe. Imaginons un site proposant un espace membre. Par soucis de sécurité, les mots de passes ne sont pas stockés en clair sur le serveur, mais sous la forme de leur empreinte. L'intérêt est double ; si un attaquant parvient à entrer en possession de ces empreintes, il ne peut théoriquement pas retrouver les mots de passes autrement qu'en utilisant une attaquer par bruteforce. Or, les fonctions de hachage utilisées en cryptographie (MD5, SHA) nécessitant un temps de calcul élevé, un mot de passe ayant un nombre suffisamment élevé de caractère prendra un temps élevé pour être découvert.
 
=== Chiffrement symétrique : le codage rapide ===
 
Cependant, comment savoir si Claire n'a pas intercepté le paquet pour le lire ? Pour pallier ce problème, Alice chiffre son fichier avec un algorithme symétrique, par exemple l'AES. Pour déchiffrer le message, il faut donc avoir la clé de chiffrement, que Claire n'a pas. Alice et Bob peuvent donc communiquer de manière incompréhensible pour ceux qui ne disposent pas de cette clé.
 
=== Chiffrement asymétrique :et je code, vous décodezauthentification ===
 
Reste à déterminer comment Alice peut communiquer la clé de chiffrement symétrique. Elle ne peut raisonnablement envoyer la clé en clair (sans la chiffrer) sur le réseau. Elle va donc utiliser le chiffrement asymétrique, avec par exemple le cryptosystème RSA. Le mode opératoire sera le suivant (source : Wikipédia, article Cryptographie asymétrique):
Objectif : Bob souhaite envoyer des données chiffrées à Alice en lui garantissant qu'il en est l'expéditeur.
# Bob crée une paire de clés asymétriques : il conserve la clé privée et diffuse librement la clé publique (notamment à Alice)
# Alice crée une paire de clés asymétriques : clé privée (qu'elle conserve), clé publique (qu'elle diffuse librement, notamment à Bob)
# Bob effectue un condensat de son message « en clair » puis chiffre ce condensat avec ''sa propre clé privée''
# Bob chiffre son message avec ''la clé publique d'Alice''.
# Bob envoie le message chiffré accompagné du condensat chiffré.
# Alice reçoit le message chiffré de Bob, accompagné du condensat.
# Alice déchiffre le message avec ''sa propre clé privée''. À ce stade le message est lisible mais elle ne peut pas être '''sûre''' que Bob en est l'expéditeur.
# Alice déchiffre le condensat avec ''la clé publique de Bob''. Alice utilise la même fonction de hachage sur le texte ''en clair'' et compare avec le condensat déchiffré de Bob. Si les deux condensats correspondent, alors Alice peut avoir la certitude que Bob est l'expéditeur. Dans le cas contraire, on peut présumer qu'une personne malveillante a tenté d'envoyer un message à Alice en se faisant passer pour Bob !
 
Cette méthode d'authentification utilise la spécificité des paires de clés asymétriques : si l'on chiffre un message en utilisant la clé publique, alors on peut déchiffrer le message en utilisant la clé privée ; l'inverse est aussi possible : si l'on chiffre en utilisant la clé privée alors on peut déchiffrer en utilisant la clé publique.
 
=== Chiffrement asymétrique : je code, vous décodez ===
Dans le cas du chiffrement asymétrique, la clé de codage est différente de la clé de décodage : le décodeur peut ainsi être sûr que l'émetteur du message est bien '''authentifié'''.
 
[[Catégorie:Cryptographie]]