« Cryptographie » : différence entre les versions
(Page créée avec « = Introduction à la cryptographie = == Qu'est-ce que c'est? == Plusieurs définitions importantes. * Cryptographie : C’est la protection d’un me... ») |
Aucun résumé des modifications |
||
Ligne 6 : | Ligne 6 : | ||
Plusieurs définitions importantes. | Plusieurs définitions importantes. | ||
* Cryptographie : C’est la protection d’un message à l’aide d’une clé de chiffrement. | * Cryptographie : C’est la protection d’un message à l’aide d’une clé de chiffrement. | ||
* Cryptogramme : C’est un message chiffré auquel on a appliqué une technique de cryptographie. | * Cryptogramme : C’est un message chiffré auquel on a appliqué une technique de cryptographie. | ||
* Cryptanalyse : C’est la science qui consiste à tenter de déchiffrer un cryptogramme sans posséder la clé de chiffrement. Dans ce cas on peut alors parler de décryptage. | * Cryptanalyse : C’est la science qui consiste à tenter de déchiffrer un cryptogramme sans posséder la clé de chiffrement. Dans ce cas on peut alors parler de décryptage. | ||
* Cryptage, Crypter et encrypter : Ces mots sont des anglicismes qu'il est préférable de bannir de votre vocabulaire. Toutefois il est courant de les retrouver utilisés par des personnes qui font de la vulgarisation ou qui ne savent forcément pas très bien de quoi elles parlent. | * Cryptage, Crypter et encrypter : Ces mots sont des anglicismes qu'il est préférable de bannir de votre vocabulaire. Toutefois il est courant de les retrouver utilisés par des personnes qui font de la vulgarisation ou qui ne savent forcément pas très bien de quoi elles parlent. | ||
* Steganographie : La steganographie est l'art de cacher les informations. Il s'agit de passer inaperçu, souvent en faisant passer une information pour une autre. Par exemple, cacher du texte dans des images ou des mp3. | * Steganographie : La steganographie est l'art de cacher les informations. Il s'agit de passer inaperçu, souvent en faisant passer une information pour une autre. Par exemple, cacher du texte dans des images ou des mp3. | ||
* Encoder : Il s'agit ici de changer le format des données. Il n'y a rien de secret par ici. Un format souvent utilisé en sécurité et réseau est le Base64 | * Encoder : Il s'agit ici de changer le format des données. Il n'y a rien de secret par ici. Un format souvent utilisé en sécurité et réseau est le Base64 | ||
* Obfusquer : C’est le fait de rendre difficile à comprendre un message (typiquement du code informatique).L'objectif est de rendre laborieuse la compréhension du message. | * Obfusquer : C’est le fait de rendre difficile à comprendre un message (typiquement du code informatique).L'objectif est de rendre laborieuse la compréhension du message. | ||
* Compresser : Enfin, les algoritmes de compression sont utilisés pour réduire la taille d'un message. | * Compresser : Enfin, les algoritmes de compression sont utilisés pour réduire la taille d'un message. | ||
== A quoi ça sert? == | == A quoi ça sert? == | ||
La cryptographie assure plusieurs services : | La cryptographie assure plusieurs services : | ||
*Intégrité : S'assurer que les données n'ont pas été modifiées lors de leur transmission | *Intégrité : S'assurer que les données n'ont pas été modifiées lors de leur transmission | ||
*Confidentialité : S'assurer que l'information n'est accessible qu'aux personnes autorisées | *Confidentialité : S'assurer que l'information n'est accessible qu'aux personnes autorisées | ||
*Authenticité : Vérifier l'identité d'une personne ou d'une machine | *Authenticité : Vérifier l'identité d'une personne ou d'une machine | ||
== Comment fait-on? == | == Comment fait-on? == | ||
Pour atteindre ces objectifs, on utilise plusieurs techniques de l'univers de la cryptographie : | Pour atteindre ces objectifs, on utilise plusieurs techniques de l'univers de la cryptographie : | ||
*L'intégrité repose sur les fonctions de hachage | *L'intégrité repose sur les fonctions de hachage | ||
Ligne 33 : | Ligne 33 : | ||
== Le hachage == | == Le hachage == | ||
Une fonction de hachage est une fonction qui convertit un grand ensemble en un ensemble plus petit, appellé empreinte. Il est impossible de déchiffrer l'empreinte pour revenir à l'état d'origine; ce n'est donc pas une technique de chiffrement. Quelques exemples de fonctions de hachage connues : MD, SHA, SHA-1, SHA-2... Le hachage permet de s'assurer de l'intégrité des données : on pourra par exemple recalculer l'empreinte d'un fichier donné pour s'assurer que celui-ci est conforme, en la comprant avec une empreinte donnée. | Une fonction de hachage est une fonction qui convertit un grand ensemble en un ensemble plus petit, appellé empreinte. Il est impossible de déchiffrer l'empreinte pour revenir à l'état d'origine; ce n'est donc pas une technique de chiffrement. Quelques exemples de fonctions de hachage connues : MD, SHA, SHA-1, SHA-2... Le hachage permet de s'assurer de l'intégrité des données : on pourra par exemple recalculer l'empreinte d'un fichier donné pour s'assurer que celui-ci est conforme, en la comprant avec une empreinte donnée. | ||
Exemple de hachage d'un fichier : | |||
<pre>justine@Justine-pc:~/Documents$ sha256sum lorem.txt | |||
56293a80e0394d252e995f2debccea8223e4b5b2b150bee212729b3b39ac4d46 lorem.txt</pre> | |||
| | ||
== Différents types de cryptographie == | |||
Il existe deux grandes familles d'algorithmes de cryptographie : symétrique et asymétrique. Chacune à ses utilités. On peut aussi les combiner à différents niveaux pour en tirer le meilleur parti, c'est la cryptographie asymétrique. | |||
=== Cryptographie symétrique === | |||
On utilise des algorithmes symétriques qui sont publics, avec des clefs qui sont, elles, secrètes. Afin de pouvoir chiffrer et déchiffrer les données, tous les participants à la communication doivent partager la même clef secrète. Exemples connus : AES, IDEA, 3DES, Blowfish, etc... Comparée à sa consoeur, la cryptographie symétrique présente les avantages suivants : | |||
*Simple à mettre en oeuvre | |||
*Léger en consommation CPU | |||
*Chiffrement robuste | |||
L'inconvénient est cependant de taille : | |||
*L'échange de clefs | |||
En effet, si on envoie les clefs en même temps que le cryptogramme, on laisse les clefs sur la serrure... | |||
[[File:CryptAsy.png|400x300px]] | |||
Exemple en action ! Je repars du fichier lorem ipsum : | |||
<pre>justine@Justine-pc:~/Documents$ openssl enc -e -a -nosalt -aes-256-cbc -in lorem.txt -out fichier.txt.enc</pre> | |||
Détail de la commande : | |||
*openssl : le programme en lui-même | |||
*enc : On précise que l'on va faire du chiffrement symétrique | |||
*-e : Indique que l'on va chiffrer (encrypt) | |||
*-a : Permet d'indiquer qu'on veut la sortie en base64, sinon la sortie serait illisible | |||
*-nosalt : Pas de sel (donc pas d'aléatoire) dans le chiffrement, on utilisera pas cet argument dans la réalité car le sel améliore la force du chiffrement | |||
*-aes-256-cbc : Indique l'algorithme utilisé, ici AES256 en mode CBC | |||
*-in le fichier en entrée | |||
*-out la sortie | |||
Pour le déchiffrement, on remplace -e (encrypt) par -d (decrypt): | |||
<pre>justine@Justine-pc:~/Documents$ openssl enc -d -a -nosalt -aes-256-cbc -in fichier.txt.enc -out loremdecode.txt | |||
justine@Justine-pc:~/Documents$ cat loremdecode.txt | |||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</pre> | |||
=== Cryptographie asymétrique === | |||
On utilise des algorithmes asymétriques publiques, avec une paire de clefs : une publique, et une privée. La particularité de ces algos est qu'un message chiffré avec une clef publique n'est lisible que par le propriétaire de la clef privée. Exemples connus : RSA, El Gamal, etc... | |||
Les avantages : | |||
*On peut communiquer depuis un canal non sécurisé | |||
Les inconvénients : | |||
*Complexité de mise en oeuvre | |||
*Davantage consommateur en ressources | |||
*Chiffrement moins robuste | |||
[[File:CryptAAsy.png|400x300px]] | |||
=== Cryptographie hybride === | |||
Pour faire de la cryptographie hybride, on chiffre le contenu par chiffrement symétrique avec une clef de session aléatoire, et on chiffre la clef de session par chiffrement asymétrique avec la clef publique du destinataire. Exemples : PGP, TLS, etc. | |||
Les avantages : | |||
*Communication via un canal non sécurisé | |||
*Consommation de ressources raisonnable | |||
*Chiffrement robuste | |||
Inconvénient : | |||
*Une complexité encore plus grande. | |||
[[File:CryptHybr.png|600x500px]] | |||
== La signature numérique == | |||
Grâce au hachage et à la cryptographie asymétrique, il est possible de signer numériquement des données. Pour ceci, on génère une empreinte des données à signer, et on chiffre ensuite cette empreinte avec notre clef privée. Cette empreinte chiffrée est la signature. Elle peut être apposée aux données, ou mise dans un fichier distinct. Cela nous permet de prouver auprès de toutes les entités qui possèdent notre clef publique que les données émises sont authentiques, puisque la clef publique permet de déchiffrer ce que l'on a chiffré avec la clef privée. Il n'y a plus qu'à recalculer l'empreinte pour voir si elle est identique. | |||
Si les empreintes sont différentes, c'est que les données sont corrompues, ou qu'elles ont été modifiées. | |||
| | ||
| |
Version du 22 janvier 2019 à 20:59
Introduction à la cryptographie
Qu'est-ce que c'est?
Plusieurs définitions importantes.
- Cryptographie : C’est la protection d’un message à l’aide d’une clé de chiffrement.
- Cryptogramme : C’est un message chiffré auquel on a appliqué une technique de cryptographie.
- Cryptanalyse : C’est la science qui consiste à tenter de déchiffrer un cryptogramme sans posséder la clé de chiffrement. Dans ce cas on peut alors parler de décryptage.
- Cryptage, Crypter et encrypter : Ces mots sont des anglicismes qu'il est préférable de bannir de votre vocabulaire. Toutefois il est courant de les retrouver utilisés par des personnes qui font de la vulgarisation ou qui ne savent forcément pas très bien de quoi elles parlent.
- Steganographie : La steganographie est l'art de cacher les informations. Il s'agit de passer inaperçu, souvent en faisant passer une information pour une autre. Par exemple, cacher du texte dans des images ou des mp3.
- Encoder : Il s'agit ici de changer le format des données. Il n'y a rien de secret par ici. Un format souvent utilisé en sécurité et réseau est le Base64
- Obfusquer : C’est le fait de rendre difficile à comprendre un message (typiquement du code informatique).L'objectif est de rendre laborieuse la compréhension du message.
- Compresser : Enfin, les algoritmes de compression sont utilisés pour réduire la taille d'un message.
A quoi ça sert?
La cryptographie assure plusieurs services :
- Intégrité : S'assurer que les données n'ont pas été modifiées lors de leur transmission
- Confidentialité : S'assurer que l'information n'est accessible qu'aux personnes autorisées
- Authenticité : Vérifier l'identité d'une personne ou d'une machine
Comment fait-on?
Pour atteindre ces objectifs, on utilise plusieurs techniques de l'univers de la cryptographie :
- L'intégrité repose sur les fonctions de hachage
- La confidentialité repose sur le chiffrement des données.
- L'authentification se fait par aposition d'une signature numérique.
Le hachage
Une fonction de hachage est une fonction qui convertit un grand ensemble en un ensemble plus petit, appellé empreinte. Il est impossible de déchiffrer l'empreinte pour revenir à l'état d'origine; ce n'est donc pas une technique de chiffrement. Quelques exemples de fonctions de hachage connues : MD, SHA, SHA-1, SHA-2... Le hachage permet de s'assurer de l'intégrité des données : on pourra par exemple recalculer l'empreinte d'un fichier donné pour s'assurer que celui-ci est conforme, en la comprant avec une empreinte donnée.
Exemple de hachage d'un fichier :
justine@Justine-pc:~/Documents$ sha256sum lorem.txt 56293a80e0394d252e995f2debccea8223e4b5b2b150bee212729b3b39ac4d46 lorem.txt
Différents types de cryptographie
Il existe deux grandes familles d'algorithmes de cryptographie : symétrique et asymétrique. Chacune à ses utilités. On peut aussi les combiner à différents niveaux pour en tirer le meilleur parti, c'est la cryptographie asymétrique.
Cryptographie symétrique
On utilise des algorithmes symétriques qui sont publics, avec des clefs qui sont, elles, secrètes. Afin de pouvoir chiffrer et déchiffrer les données, tous les participants à la communication doivent partager la même clef secrète. Exemples connus : AES, IDEA, 3DES, Blowfish, etc... Comparée à sa consoeur, la cryptographie symétrique présente les avantages suivants :
- Simple à mettre en oeuvre
- Léger en consommation CPU
- Chiffrement robuste
L'inconvénient est cependant de taille :
- L'échange de clefs
En effet, si on envoie les clefs en même temps que le cryptogramme, on laisse les clefs sur la serrure...
Exemple en action ! Je repars du fichier lorem ipsum :
justine@Justine-pc:~/Documents$ openssl enc -e -a -nosalt -aes-256-cbc -in lorem.txt -out fichier.txt.enc
Détail de la commande :
- openssl : le programme en lui-même
- enc : On précise que l'on va faire du chiffrement symétrique
- -e : Indique que l'on va chiffrer (encrypt)
- -a : Permet d'indiquer qu'on veut la sortie en base64, sinon la sortie serait illisible
- -nosalt : Pas de sel (donc pas d'aléatoire) dans le chiffrement, on utilisera pas cet argument dans la réalité car le sel améliore la force du chiffrement
- -aes-256-cbc : Indique l'algorithme utilisé, ici AES256 en mode CBC
- -in le fichier en entrée
- -out la sortie
Pour le déchiffrement, on remplace -e (encrypt) par -d (decrypt):
justine@Justine-pc:~/Documents$ openssl enc -d -a -nosalt -aes-256-cbc -in fichier.txt.enc -out loremdecode.txt justine@Justine-pc:~/Documents$ cat loremdecode.txt Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Cryptographie asymétrique
On utilise des algorithmes asymétriques publiques, avec une paire de clefs : une publique, et une privée. La particularité de ces algos est qu'un message chiffré avec une clef publique n'est lisible que par le propriétaire de la clef privée. Exemples connus : RSA, El Gamal, etc...
Les avantages :
- On peut communiquer depuis un canal non sécurisé
Les inconvénients :
- Complexité de mise en oeuvre
- Davantage consommateur en ressources
- Chiffrement moins robuste
Cryptographie hybride
Pour faire de la cryptographie hybride, on chiffre le contenu par chiffrement symétrique avec une clef de session aléatoire, et on chiffre la clef de session par chiffrement asymétrique avec la clef publique du destinataire. Exemples : PGP, TLS, etc.
Les avantages :
- Communication via un canal non sécurisé
- Consommation de ressources raisonnable
- Chiffrement robuste
Inconvénient :
- Une complexité encore plus grande.
La signature numérique
Grâce au hachage et à la cryptographie asymétrique, il est possible de signer numériquement des données. Pour ceci, on génère une empreinte des données à signer, et on chiffre ensuite cette empreinte avec notre clef privée. Cette empreinte chiffrée est la signature. Elle peut être apposée aux données, ou mise dans un fichier distinct. Cela nous permet de prouver auprès de toutes les entités qui possèdent notre clef publique que les données émises sont authentiques, puisque la clef publique permet de déchiffrer ce que l'on a chiffré avec la clef privée. Il n'y a plus qu'à recalculer l'empreinte pour voir si elle est identique.
Si les empreintes sont différentes, c'est que les données sont corrompues, ou qu'elles ont été modifiées.