La cryptographie, c'est compliqué.
D'ailleurs, je n'y comprends pas grand chose, mais ça ne m'empêche pas de m'amuser avec !
Après avoir expliqué les bases, je montrerais quelques astuces cryptographiques.
présentation diffusée aux 15èmes Rencontres Mondiales du Logiciel Libre le 9 Juillet 2014.
planches https://speakerdeck.com/ange/joue-a-la-crypto-french
vidéo https://www.youtube.com/watch?v=iIesDpv9F4s
exemples https://corkami.googlecode.com/svn/trunk/src/angecryption/rmll
Pour être 100% correct, on devrait ajuster le CRC32 du chunk TrueCrypt dans le PNG. En pratique, comme il s'agit d'un chunk auxiliaire, il est complêtement ignoré même si le CRC est incorrect.
Et la 3ème lettre du type de chunk devrait être majuscule.
Récemment, @reversity a poussé l'expérience encore plus loin et a fait du AngeCryption entre 2 PNGs, sauf que cette fois les fichiers source et cible sont 100% standards (pas de données en fin de fichier, chunk IHDR en premier) moyennant un peu de bruteforce. Il a baptisé ça "DemonCryption".
La cryptographie permet de satisfaire les besoins en sécuritéLe crypto-système symétrique souffre d’un problème de distribution de clés, pour cela son utilisation doit être combinée avec le crypto-système asymétriqueLes crypto-systèmes asymétriques souffrent d’une vulnérabilité dite : Man In The Middle AttackSolution : Certificats électroniques
La cryptographie, c'est compliqué.
D'ailleurs, je n'y comprends pas grand chose, mais ça ne m'empêche pas de m'amuser avec !
Après avoir expliqué les bases, je montrerais quelques astuces cryptographiques.
présentation diffusée aux 15èmes Rencontres Mondiales du Logiciel Libre le 9 Juillet 2014.
planches https://speakerdeck.com/ange/joue-a-la-crypto-french
vidéo https://www.youtube.com/watch?v=iIesDpv9F4s
exemples https://corkami.googlecode.com/svn/trunk/src/angecryption/rmll
Pour être 100% correct, on devrait ajuster le CRC32 du chunk TrueCrypt dans le PNG. En pratique, comme il s'agit d'un chunk auxiliaire, il est complêtement ignoré même si le CRC est incorrect.
Et la 3ème lettre du type de chunk devrait être majuscule.
Récemment, @reversity a poussé l'expérience encore plus loin et a fait du AngeCryption entre 2 PNGs, sauf que cette fois les fichiers source et cible sont 100% standards (pas de données en fin de fichier, chunk IHDR en premier) moyennant un peu de bruteforce. Il a baptisé ça "DemonCryption".
La cryptographie permet de satisfaire les besoins en sécuritéLe crypto-système symétrique souffre d’un problème de distribution de clés, pour cela son utilisation doit être combinée avec le crypto-système asymétriqueLes crypto-systèmes asymétriques souffrent d’une vulnérabilité dite : Man In The Middle AttackSolution : Certificats électroniques
Mathématiques et codes secrets - Des mathématiques pour protéger les communic...Dany-Jack Mercier
Aspect historique de la cryptographie, scytale spartiate, chiffre des francs-maçons, cryptographie à clé secrète et à clé révélée, chiffrement de César et de Vigénère, puis ceux des guerres mondiales, DES, RSA et carte bancaire.
La cryptographie n'a jamais été aussi présente dans notre vie de tous les jours, tout en sachant rester discrète. A travers elle, ce sont des mathématiques qui sont mises en oeuvre dans tous les appareils et les systèmes qui nous entourent aujourd'hui.
Beaucoup de lycéens demandent à leurs professeurs à quoi servent les mathématiques et s'il est utile de passer autant de temps à les étudier.
Pour beaucoup, faire des mathématiques revient à couper les cheveux en quatre et ne les concerne pas. On peut d'ailleurs comprendre qu'en tant qu'utilisateurs et consommateurs, on puisse se contenter d'enfoncer des boutons et de poser les doigts sur des écrans tactiles pour obtenir par magie ce que l'on désire.
Qui peut imaginer qu'il utilise l'une des plus grandes découvertes en cryptographie au XXe siècle quand il insère sa carte bancaire dans le terminal d'une caisse de supermarché ?
Qui se rappelle que des mathématiques sont mises en oeuvre chaque fois qu'il se connecte à un site internet sécurisé signalé par le texte « https » ?
Qui enfin se rend compte que la moindre de ses communications sur son Smartphone utilise de l'algèbre, des anneaux de congruences, des corps finis, des matrices, et beaucoup d'arithmétique, et que les algorithmes qui en résultent forment autant de passerelles qui codent et décodent des milliards de messages en des temps records ?
Que se passe-t-il quand nous allumons notre poste de télévision pour recevoir des images ?
L'homme moderne est devenu malgré lui un utilisateur effréné des mathématiques ! Nous baignons dans les mathématiques sans nous en rendre compte.
Nous évoluons dans cet univers de plus en plus magique créé par l'esprit humain.
Cet exposé nous propose de voyager à travers le temps en examinant de nombreux systèmes mis au point par les hommes pour protéger leurs messages. L'aventure commence au Ve siècle avant J.-C. avec les conseils d'Enée le tacticien, traverse le moyen-âge en écoutant la découverte du diplomate, cryptographe, traducteur et alchimiste Vigenère, décrit les codes secrets utilisés pendant les deux guerres mondiales, puis explique le bouleversement opéré en 1976 avec la découverte de Diffie et Hellman menant à l'élaboration des systèmes cryptographiques à clés révélées, un concept indispensable pour faire fonctionner internet comme nous le connaissons aujourd'hui.
Bitcoin and Blockchain Technology Explained: Not just Cryptocurrencies, Econo...Melanie Swan
The blockchain concept may be one of the most transformative ideas to impact the world since the Internet. It represents a new organizing paradigm for all activity and integrates humans and technology. Cryptocurrencies like bitcoin are merely one application of the blockchain concept. The blockchain is a public transaction ledger built in a network structure based on cryptographic principles so there does not need to be a centralized intermediary. Any kind of asset (art, car, home, financial contract) may be encoded into the blockchain and transacted, validated, or preserved in a much more efficient manner than at present including ideas, health data, financial assets, automobiles, and government documents. Blockchain technology applies well beyond cryptocurrencies, economics, and markets to all venues of human information processing, collaboration, and interaction including art, health, and literacy.
Les API HTML5 ont fait de notre navigateur web le nouvel OS ; on fait absolument tout dedans : de la bureautique, du code, des jeux... l'API WebCrypto apporte la couche de sécurité côté client qui manquait à certaines applications (coffre fort en ligne, messagerie chiffrée, etc). Quels problèmes cette API resout elle, comment fonctionne-t-elle et quels sont ses limites ?
Mathématiques et codes secrets - Des mathématiques pour protéger les communic...Dany-Jack Mercier
Aspect historique de la cryptographie, scytale spartiate, chiffre des francs-maçons, cryptographie à clé secrète et à clé révélée, chiffrement de César et de Vigénère, puis ceux des guerres mondiales, DES, RSA et carte bancaire.
La cryptographie n'a jamais été aussi présente dans notre vie de tous les jours, tout en sachant rester discrète. A travers elle, ce sont des mathématiques qui sont mises en oeuvre dans tous les appareils et les systèmes qui nous entourent aujourd'hui.
Beaucoup de lycéens demandent à leurs professeurs à quoi servent les mathématiques et s'il est utile de passer autant de temps à les étudier.
Pour beaucoup, faire des mathématiques revient à couper les cheveux en quatre et ne les concerne pas. On peut d'ailleurs comprendre qu'en tant qu'utilisateurs et consommateurs, on puisse se contenter d'enfoncer des boutons et de poser les doigts sur des écrans tactiles pour obtenir par magie ce que l'on désire.
Qui peut imaginer qu'il utilise l'une des plus grandes découvertes en cryptographie au XXe siècle quand il insère sa carte bancaire dans le terminal d'une caisse de supermarché ?
Qui se rappelle que des mathématiques sont mises en oeuvre chaque fois qu'il se connecte à un site internet sécurisé signalé par le texte « https » ?
Qui enfin se rend compte que la moindre de ses communications sur son Smartphone utilise de l'algèbre, des anneaux de congruences, des corps finis, des matrices, et beaucoup d'arithmétique, et que les algorithmes qui en résultent forment autant de passerelles qui codent et décodent des milliards de messages en des temps records ?
Que se passe-t-il quand nous allumons notre poste de télévision pour recevoir des images ?
L'homme moderne est devenu malgré lui un utilisateur effréné des mathématiques ! Nous baignons dans les mathématiques sans nous en rendre compte.
Nous évoluons dans cet univers de plus en plus magique créé par l'esprit humain.
Cet exposé nous propose de voyager à travers le temps en examinant de nombreux systèmes mis au point par les hommes pour protéger leurs messages. L'aventure commence au Ve siècle avant J.-C. avec les conseils d'Enée le tacticien, traverse le moyen-âge en écoutant la découverte du diplomate, cryptographe, traducteur et alchimiste Vigenère, décrit les codes secrets utilisés pendant les deux guerres mondiales, puis explique le bouleversement opéré en 1976 avec la découverte de Diffie et Hellman menant à l'élaboration des systèmes cryptographiques à clés révélées, un concept indispensable pour faire fonctionner internet comme nous le connaissons aujourd'hui.
Bitcoin and Blockchain Technology Explained: Not just Cryptocurrencies, Econo...Melanie Swan
The blockchain concept may be one of the most transformative ideas to impact the world since the Internet. It represents a new organizing paradigm for all activity and integrates humans and technology. Cryptocurrencies like bitcoin are merely one application of the blockchain concept. The blockchain is a public transaction ledger built in a network structure based on cryptographic principles so there does not need to be a centralized intermediary. Any kind of asset (art, car, home, financial contract) may be encoded into the blockchain and transacted, validated, or preserved in a much more efficient manner than at present including ideas, health data, financial assets, automobiles, and government documents. Blockchain technology applies well beyond cryptocurrencies, economics, and markets to all venues of human information processing, collaboration, and interaction including art, health, and literacy.
Les API HTML5 ont fait de notre navigateur web le nouvel OS ; on fait absolument tout dedans : de la bureautique, du code, des jeux... l'API WebCrypto apporte la couche de sécurité côté client qui manquait à certaines applications (coffre fort en ligne, messagerie chiffrée, etc). Quels problèmes cette API resout elle, comment fonctionne-t-elle et quels sont ses limites ?
8. #DevoxxFR 8
La méthode suivante
est parfaitement sûre en terme de
cryptographie
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.GeneralSecurityException;
public static byte[] decrypt(byte[] cipherText, byte[] iv) throws GeneralSecurityException {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(KEY, "AES"), new IvParameterSpec(iv));
return cipher.doFinal(cipherText);
}
9. #DevoxxFR 9
… mais elle n’est pas sûre
si elle est appelée par la méthode
suivante :
public int processEncryptedMessage(byte[] cipherText, byte[])
int httpStatusCode;
try {
decrypt(cipherText, iv);
httpStatusCode = OK_CODE; // 200
process(plaintext);
} catch (GeneralSecurityException exc) {
httpStatusCode = INTERNAL_ERROR_CODE; // 500
}
return httpStatusCode;
}
15. #DevoxxFR
15
Ajout du padding au chiffrement
longueur 1 => … XX XX XX 01
longueur 2 => … XX XX 02 02
longueur 3 => … XX 03 03 03
16. #DevoxxFR
16
Padding valide (au déchiffrement)
… XX XX XX 01 => longueur 1
… XX XX 02 02 => longueur 2
… XX 03 03 03 => longueur 3
… XX XX 01 01 => longueur 1
18. #DevoxxFR
18
xx xx xxxxxx xx
Avant dernier bloc chiffré
xx xx xxxxxx xx
Dernier bloc chiffré
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx xx xx xxxxxx xx
+
Déchiffrement du bloc
+
Bloc intermédiaire
Bloc clair
19. #DevoxxFR
19
xx xx xxxxxx xx xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx xx xx xxxxxx xx
+
Déchiffrement du bloc
+
Connu
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
20. #DevoxxFR
20
xx xx xxxxxx xx xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx xx xx xxxxxx xx
+
Déchiffrement du bloc
+
ConnuAvant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
21. #DevoxxFR
21
xx xx xxxxxx xx xx xx xxxxxx xx
Déchiffrement du bloc
?? ?? ?????? ??
xx xx xxxxxx xx xx xx xxxxxx xx
+
Déchiffrement du bloc
+
Inconnu
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
22. #DevoxxFR
22
xx xx xxxxxx xx xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx ?? ?? ?????? ??
+
Déchiffrement du bloc
+
Inconnu
A déterminer
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
?? ?? ?????? ??
23. #DevoxxFR
23
xx xx xxxxxx xx xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx ?? ?? ?????? ??
+
Déchiffrement du bloc
+
Cible immédiate
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
?? ?? ?????? ??
24. #DevoxxFR
24
RR RR RRRRRR RR xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx RR RR RRRRRR RR
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
?? ?? ?????? ??
25. #DevoxxFR
25
RR RR RRRRRR RR xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR RRRRRR RR
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
26. #DevoxxFR
26
RR RR RRRRRR ?? xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR RRRRRR 01
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
Objectif
A déterminer
27. #DevoxxFR
27
RR RR RRRRRR 00 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR RRRRRR ??
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
Inconnu
28. #DevoxxFR
28
RR RR RRRRRR 00 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR RRRRRR ??
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
Padding KO≠ 1
29. #DevoxxFR
29
RR RR RRRRRR 01 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR RRRRRR ??
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
2ème
essai
30. #DevoxxFR
30
RR RR RRRRRR 01 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR RRRRRR ??
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
Padding KO
2ème
essai
≠ 1
31. #DevoxxFR
31
RR RR RRRRRR 02 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR RRRRRR ??
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
3ème
essai
32. #DevoxxFR
32
RR RR RRRRRR 02 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR RRRRRR ??
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
Inconnu
Padding OK
3ème
essai
33. #DevoxxFR
33
RR RR RRRRRR 02 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR RRRRRR 01
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
?
Padding OK
3ème
essai
34. #DevoxxFR
34
RR RR RRRRRR 02 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR 02RRRR 02
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
?
Padding OK
3ème
essai
35. #DevoxxFR
35
RR RR RRRRRR 02 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR 0303RR 03
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
?
Padding OK
3ème
essai
36. #DevoxxFR
36
RR RR RR’RRRR 02 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR XXRRRR ??
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
?
Validation
37. #DevoxxFR
37
RR RR RR’RRRR 02 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx 03
xx xx xxxxxx xx RR RR XXRRRR 01
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
= 1
Validation
Padding OK
38. #DevoxxFR
38
RR RR RR’RRRR 02 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR XXRRRR ??
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
≠ 1
Validation
Padding KO
39. #DevoxxFR
39
RR RR RRRR’RR 02 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx RR RR ??XXRR ??
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
Validation
40. #DevoxxFR
40
RR RR 05RR’RR 02 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx 07xxxx 00
xx xx xxxxxx xx RR RR 02YYRR 02
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
= 2 Padding OK
41. #DevoxxFR
41
RR RR RRRRRR RR xx xx xxxxxx xx
Déchiffrement du bloc
xx xx 07xxxx 00
xx xx xxxxxx xx RR RR 0303RR 03
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
Cible
padding de 3
42. #DevoxxFR
42
RR RR 04??RR 03 xx xx xxxxxx xx
Déchiffrement du bloc
xx xx 07xxxx 00
xx xx xxxxxx xx RR RR 0303RR 03
+
Déchiffrement du bloc
+
Avant dernier bloc chiffré Dernier bloc chiffré
Bloc intermédiaire
Bloc clair
Cible
padding de 3
43. #DevoxxFR
43
xx xx xxxxxx xx
Avant dernier bloc chiffré
xx xx xxxxxx xx
Dernier bloc chiffré
Déchiffrement du bloc
xx xx xxxxxx xx
xx xx xxxxxx xx xx xx xxxxxx xx
+
Déchiffrement du bloc
+
Bloc intermédiaire
Bloc clair
Et ce bloc ?
45. #DevoxxFR 45
MAC : Message Authentication Code
Message MessageMessage
MAC
Algorithm
MAC MAC MAC
MAC
Algorithm
MAC
=?
Secret Key Secret Key
=?
Message is
authentic
Message has
bean altered
Y N
78. #DevoxxFR 78
$ gpg -d my_secure_script.sh.gpg | bash
gpg: AES encrypted data
gpg: encrypted with 1 passphrase
gpg: Signature made Sun Apr 17 21:59:14 2016 CEST using RSA
key ID E625A4BB
gpg: BAD signature from "Alice <alice@victime.com>”
gpg: WARNING: message was not integrity protected
… exécution de code “aléatoire” …
82. #DevoxxFR 82
gpg --passphrase=secret --decrypt my_secure_script.sh.gpg
| bash
You need a passphrase to unlock the secret key for
user: "Alice <alice@victime.com>"
2048-bit RSA key, ID 7EFCB32A, created 2016-04-17 (main key ID
E625A4BB)
gpg: encrypted with 2048-bit RSA key, ID 7EFCB32A, created
2016-04-17
“Alice <alice@victime.com>"
J'ai hacké la machine de alice
La victime
84. #DevoxxFR 84
Références
Les slides de ce talk: http://bit.ly/crypto-devoxx
Blog de Matthew Green (cryptologue) http://blog.cryptographyengineering.com/
Blog d’Adam Langley (cryptologue), https://www.imperialviolet.org/
Talk de Matthew Green, https://www.youtube.com/watch?v=uP6np_oKVCk
Talk d’Adam Langley, https://www.yahoo.com/news/video/yahoo-trust-unconference-
tls-adam-223046696.html?ref=gs
Post lié au talk précédent, https://www.imperialviolet.org/2015/05/16/aeads.html
Code de l’Oracle Padding Attack: http://bit.ly/oracle-padding-attack