Léαlinux 🐧 Profile picture
Oct 22, 2024 85 tweets 16 min read Read on X
Enfin arrivé dans la hotte de pre-Noël, le livre "La cryptographie déchiffrée" de Jean-Philippe @veorq Aumasson chez Dunod. 420 pages.
Notre roadmap sera de faire une review chapitre par chapitre, au fur et à mesure du temps (le temps de les lire :)
Merci à l'auteur et Dunod ! Image
Dans le chapitre 5 "Streamcipher", nous avons le fonctionnement de ce type de chiffrement, les méthodes annexes (avec état, compteur), on présente les concepts de feedback shift register (FSR), linear feedbak shift register (LFSR), le filtrered LFSR (et les types d'attaques) et..
.. le non-linear FSR (NFSR).
Nous avons une présentation de l'algo Grain-128a utilisant un NFSR 128b et LFSR 128b; algo sûr utilisé dans l'embed (entre autres), l'algo A5/1, utilisé dans les telcoms 2G et bien entendu une partie des attaques possibles sur cet algo cassé depuis
on y découvre l'attaque "subtile" (avec guess-and-dertermine) et les attaques brutales.
Nous avons également une description du RC4, son fonctionnement et son utilisation dans le WEP (WiFi) et TLS... et évidemment aussi les attaques dessus.
Et on fini le chapitre par l'algo Salsa20, un streamcipher avec compteur (utilisant une clef, un nonce et un compteur), la fonction "quarter-round" et les transformations d'état. Et bien entendu, même si Salsa20 est sûr, il existe des attaques théoriques expliquées ici.
Et pour compléter, une brève sur l'algo proprio faible satellitaire GMR-1 et GMR-2. A noter que Chacha est un dérivé de Salsa20 et son implication dans l'algo de hash BLAKE (de l'auteur lui-même)
Intéressant, dans le chapitre 6, les fonctions de hashage, l'auteur nous donne un exemple d'implémentation SHA3 en C en une vingtaine de ligne : (alors, depuis le code source sur le git a augmenté :)github.com/mjosaarinen/ti…
Chap6 "Les fonctions de hachage", nous avons le descriptif global de ce genre de fonction, la notion de "préimage", les collisions avec des exemples d'attaques (naïve, rho, ...). On rentre dans le concret avec le hachage basé sur la compression "Merkle-Damgard", utilisé notamment
dans MD4, MD5, SHA1, SHA2, RIPEMD, Whirlpool, ... on nous explique également comment se construit le padding dans ce cas de figure (super utile, on était pas au courant), des méthodes pour trouver des collisions et même multicollisions: Un descriptif de la méthode Davies-Meyer
et des fonctions "sponge". Le tout agrément de schéma pour mieux comprendre. On a un long passage sur la famille des SHA avec bien évidemment SHA1, et du pseudocode sur comment-que-c'est-gaulé-à-l'intérieur
On va pas mentir, ça pique les neurones à ce moment-là :) et un petit passage sur l'attaque sur SHA1. Puis viens SHA2 (SHA256, SHA224, SHA512) et les différences entre chaque. L'auteur indique qu'à l'heure de l'écriture, il n'existe aucune attaque sur SHA2, même théorique.
Bien évidemment, on passage à SHA3 qui est le successeur de SHA3, dont l'auteur a participé en tant que finalistes avec BLAKE. C'est l'algo Keccak qui a été retenu pour "sa conception élégante, marge de sécurité et bonnes performances, efficacité implem hardware" selon le NIST
L'auteur nous donne donc une explication de SHA3 (aka Keccak) et de ses petits frères SHAKE(128/256) en donnant le code source d'origine de tiny_sha3 (voir au-dessus) qui fait vraiment une vingtaine de lignes, avec une descriptif bloc par bloc d'explications.
L'auteur ne pouvait pas passer outre son (co-)bébé: BLAKE2 et BLAKE3 qui, dixit l'auteur, est performant sur la rapidité (parallélisation, instructions, etc..) et pouvant bouffer et hacher jusqu'à 2Go par sec de données.
BLAKE a été intégré au sein du kernel Linux.
Pour en savoir plus sur BLAKE:
- blake2.net
- github.com/torvalds/linux…
- fr.linuxadictos.com/blake3-une-fon… (en français)
Et on finit ce chapitre sur quelques types d'attaques sur les hash.
Ce chapitre intègre pas mal de codes ou pseudocodes assez complexes, vous allez y perdre un oeil :)
On passe au chapitre 7 "Le hachage à clé". Cette méthode permet d'avoir un hash à l'aide d'un clé et permettant l'authentification et l'intégrité. On fait un petit passage sur MAC (Message Auth Codes) et ses possibles attaques, puis de son petit cousin PRF (pseudorandom function)
Et d'expliquer pourquoi une PRF est plus fort qu'un MAC (et qu'on peut avoir un MAC avec une PRF mais pas l'inverse). Et une explication des différentes possibilités de construction (comme préfixe/suffixe secret), le fameux HMAC, le nouveau CMAC (et son parent CBC-MAC) et..
et bien entendu pour chacun d'entre eux, les différentes méthodes d'attaques ou leurs faiblesses. Nous avons un long passage sur l'algo Poly1305 et son petit frère Poly1305-AES qui utilise... AES :-D
L'auteur évoque également son bébé SipHash pour les petites cryptos.
Et à la fin du chapitre, on évoquera une attaque "timing attack" où il faut bien implémenter ses algos (ou ses auths) sinon on peut déterminer certaines informations en étudiant le temps qu'une fonction crypto prend pour chiffrer/vérifier des données. Un exemple, vous avez une
fonction qui fait un check auth, le truc classique c'est à un moment de comparer le hash original et le hash calculé et donc de le faire caractère par caractère et donc de fail dès que a[x] != b[x], et bien avec cette erreur, un attaquant peut déterminer à quel moment ça foire
Pour le HMAC, je connaissais un peu pour l'avoir étudié, décortiqué et réimplémenté en C et Python pour un projet, avec petite doc explicative, cf img illustration de cette dernière : Image
Chapitre très intéressant car il permet de comprendre assez facilement le hash avec clef, méthode qui peut être utilisé dans un tas de projet. Comme d'habitude, quelques schémas et du pseudo-maths pour comprendre et quelques codes sources en C et Python
Ah oui, petit oubli, le SipHash est utilisé (entre autres) dans Rust, OpenBSD, Bitcoin, et également dans le kernel Linux ()docs.kernel.org/security/sipha…
eBACS: ECRYPT Benchmarking of Cryptographic Systems: bench.cr.yp.to
Le temple de la crypto, notamment sur des algos à permutation: keccak.team
On passe au chapitre 8 "Chiffrement authentifié" avec des exemples d'auth avec MAC avec les grands principes encrypted-and-mac, MAC-then-encrypted et encrypt-then-MAC.
Le 1er est le fait de produire encryption et MAC parallèlement, le second, le MAC est d'abord généré puis
intégré dans l'encryption. Et le 3eme, l'encryption est déjà effectué et le MAC généré sur le produit de l'encryption. Le 3eme est bien évidemment plus robuste car si le MAC est erroné, on peut écarter la procédure de decryption directement. Alors que pour le 2nd, il faut d'abord
déchiffrer pour avoir le MAC, vérifier que le MAC est bien valide et soit accepter le plaintext, soit le rejeter (long, couteux...)
Un cours passage sur l'AEAD, le chiffrement authentifié avec données associées, cela permet d'ajouter des données non-chiffrés dans tout le bordel, utile si on veut avoir un header non-chiffré (pour du traitement) mais que l'auth prenne en compte cette partie quand même.
Une description de l'algo AES-GCM, utilisé notamment dans IPsec, TLS1.3. AES-GCM est perfectible si on a des répétitions de nonce (utilisé à la base de l'algo). Un passage sur l'algo quasi inconnu du plus grand nombre OCB, plus performant que pas mal d'algo mais a été...
.. proprio (sous licence) à sa naissance (2001), et donc "out". Il n'a été libéré que récemment (en 2021 !). Il est plus performant sur certains aspects, que ce soit en sécu ou en perf brute.
Un petit passage sur "Synthetic IV" (SIV), son plus gros défaut : ne pas être streamable (tout comme sa petite évolution GCM-SIV)
Et enfin, nous concluons la partie algo de ce chapitre par le "chiffrement basé sur une permutation", dont vous trouverez une masse d'infos à l'addresse .keccak.team
Bien entendu, la fin de ce chapitre se termine toujours par quelques faiblesses sur certains algos, dont notamment AES-CGM avec des clefs de hachage faibles ou des tags trop courts.
C'est sur ce chapitre qui se termine la cryptographie symétrique:
- blockciphers,
- streamciphers,
- fonctions hashs,
- fonctions pseudo-aléatoires,
- MAC,
- chiffrement authentifié.
On passe dans les prochains chapitres sur la cryptographie asymétrique !
Le chapitre 9 "Les problèmes difficiles" est un chapitre... avec des problèmes difficiles à comprendre et aussi difficile à résumer :-D
On va dire qu'on est entre les bases mathématiques, la philosophie de la mathématique et les définitions des casses têtes mathématiques.
A la fin, vous saurez pourquoi NP, P et NP-complet, les problèmes de factorisation, un peu de logarithme discret.
Ce chapitre sert surtout de préambule pour les chapitres suivants, dont le chapitre 10... RSA !
(ps: donnez-nous de l'aspirine svp)
Le chapitre 10, "RSA", le chapitre le plus important jusqu'à maintenant, il décrit les mécanismes derrière avec un peu d'explication pseudo-mathématique (dans le sens où il a été simplifié pour la compréhension) et le principe de la permutation à trappe !
On a le droit à une explication très claire et simple sur comment générer des clefs RSA avec - en quelques lignes SageMath - une description de toutes les étapes de façon limpide de "comment qu'on fait de la magie". On y apprend notamment le pourquoi de RSA-OAEP et RSA-PSS
J'ai beau avoir étudié aussi RSA-OAEP pour un projet/doc, j'ai appris des tas de choses.
Et du pourquoi on utilise RSA-OAEP pour du chiffrement et RSA-PSS ou RSA-FDH pour la signature; Une explication du fonctionnement interne des 3 modes; Et "qu'est-ce que "textbook RSA" (que j'aurais surnommé "raw RSA" car c'est la forme brute du RSA, à ne pas utiliser comme cela:)
Une description de l'algorithme "square-and-multiply" pour l'exponentiation; sur l'implémentation RSA et pourquoi il ne faut pas faire soit même (variante de "don't roll your own crypto" mais en implem: basez-vous sur des implems déjà effectuées ET validées par la commu crypto)
On a une explication claire et limpide de pourquoi e = 65.537 qu'on trouve dans nos certificats RSA et pourquoi on a tous le même "e" :)
Et enfin, nous avons deux types d'attaques sur deux implems RSA et un paragraphe pour aller plus loin sur les attaques.
Ce chapitre est génial, il apporte pleins d'informations sur des questions qu'on peut se poser sur RSA (ou des trucs qu'on a vu mais pas compris) en très peu de page (une 20ène). J'ai appris pas mal de chose alors que j'avais un peu tâté du RSA interne.
Il y a quelques passages tendaxes car on fait un peu de math plus tendus et quelques notions de maths plus élevés (il faudra avoir un petit moteur de recherche pour certains mots-clefs :)
Passons maintenant au chapitre suivant qui se porte sur "Diffie-Hellman !
Grâce à ce livre, en deux-trois lignes et un schéma simplifié, j'ai capté indirectement comment marchait les eSIM (et comment si un opérateur (ou le sim maker) se faisait hack en profondeur, ça serait la merde totale) Image
ah bah confirmation deux paragraphes plus loin... "(...) si K est compromis, par exemple à partir de la base de données d'un opérateur (...)"
Chapitre 11 "Diffie-Hellman", c'est un protocole crypto asymétrique proposé/inventé un an avant RSA. (à noter que les services anglais avaient aussi conçu une métho algo asymétrique à la même période mais classée secret pendant des décennies)
Dans ce chapitre, on verra les calculs nécessaires pour du DH anonyme (sans auth) et avec authentification (avec sign(pkey) etc...); On a même le droit à un exemple de key-exchange sans DH avec seulement des clefs privés (utilisé dans les telcoms 4G et 5G).
Un listing des différents modèles d'attaques, comme le MITM, dataleak, corruption data; et de l'autres les grands principes (auth, keyctrl, forward secrecy, KCI); Comme vu auparavant, nous aurons une explication entre Diffie-Hellman anonyme et authentifié (le plus courant ?)
On a même le droit à l'explication d'un algo inconnu : "MQV"
Et pourquoi inconnu ? comme tous les autres cas qu'on a vu dans ce thread, c'est soit il a été cassé dès sa publication (donc mort né) soit... l'algo a été protégé (secret defense & co) soit breveté. Pour MQV: brevet...
(notons tout de même que MQV a eu droit au deux : secret + brevets... pas de bol, petit gars...)
Passons maintenant à un nouveau type de cryptographie : Les courbes elliptiques !
SafeCurves : choosing safe curves for elliptic-curve cryptography: safecurves.cr.yp.toImage
Image
Dans le chapitre 12 "Courbes Elliptiques", vous allez avoir des crises d'epilepsies *krkrkrk déso*
Les ECC sont vraiment à part, on ne saurait même pas résumer comme cela, c'est un principe "relativement" jeune (quand même 1985, et première implem openssl en 2005 et openssh en 2011). On peut utiliser Diffie-Hellman même sur des courbes elliptiques (ECDH), on peut
signer (ECDSA pour Elliptic Curve Digital Signature Algorithm), on a aussi EdDSA (pour Edwards-curve DSA) qui a l'avantage de ne pas s'appuyer sur un PRNG, et son petit frère Ed25519 (qui utilise une Twisted Edwards curve)
Contrairement à RSA où on peut insérer 4000 bits de plaintext pour chiffrement, les courbes elliptiques ne peuvent le faire que sur 100 bits, mais y'a un solution de contournement : ECIES (integrated encryption scheme); Enfin, ils existent plusieurs courbes (NIST, Curve25519,...)
A noter que l'ANSSI a développée sa propre courbe mais avec des constances d'origine inconnue (on ne sait pas pourquoi ils ont choisis ces constances, ce qui les rends donc suspectes).
Et bien entendu, fin de chapitre avec quelques types d'attaques sur les ECC.
Ce chapitre permet de défricher la galaxie des courbes elliptiques, qui est assez vaste. On peut dire que les ECC ont des avantages certains dont celui d'avoir des clef plus petits que le RSA avec un niveau de sécurité supérieur.
On passe au chapitre 13, le TLS : Transport Layer Security.
Le chapitre 13 TLS démarre par un historique; en gros SSL : c'est vieux et tout pourri, on est passé à TLS 1.1, puis 1.2; Et puis à force de corriger les merdes, les auteurs ont préféré tout reprendre, virer le legacy pourri et les algos pétés pour faire le TLS v1.3 !
Dans ce chapitre, on décortique le principe du TLS avec son handshake et son record, la structure d'un paquet TLS (qui est une sorte de TLV/KLV), les mesures de sécurité apportés à TLSv1.3; des explications détaillées sur comment marche le handshake, ses paramètres et ses options
Les différents algos gardés dans cette version (et ceux éjectés), des protections (comme le downgrade), le handshake en une fois, des reprises de session, l'authentification, le forward secrecy. On passera également sur les problèmes éventuels de la v1.3;
Il y a même une partie sur les bugs d'implémentations TLS, avec un exemple parlant : Heartbleed avec une explication claire et limpide sur la faille.
A partir de là, on passe aux deux derniers chapitres qui sont en rupture avec le reste. Et pour cause, on va causer "Quantique et Post-Quantique" dans le chapitre 14 !
Préparez vos intrications !
Dans le chapitre "Quantique", l'auteur nous explique le principe de l'ordinateur et le principe des qbits (amplitudes, toussa) et quelques notations quantiques quand vous voulez lire des équations mathématiques sur quantique et de l'appliquer sur des concepts informatiques.
On y voit des concepts purs à ce domaines comme les portes quantiques dont celle de Hadamard. Et bien évidemment, on évoquera les accélérations quantiques. Non, ce n'est pas une méthode vue dans Fast & Furious, mais ce sont des méthodes ou algorithmes pour computer plus vite
On y expose la menace de l'algo de Shor qui peut détruire toute crypto asym. et l'algorithme Grover qui s'attaque sur la crypto sym. On vous laissera le soin de voir dans le livre qui gagne entre crypto asym et sym dans l'aventure du post-quantique :)
On y voit également des astuces pour protéger les algos actuels pour du post-quantique, et des concepts et d'algos pour du véritable post-quantique. Le plus drôle étant qu'un des algos pourrait s'appeler "c'est dans les vieux pots qu'on fait la meilleure soupe" ;-)
Le livre fait état de la différence entre chiffrement/signature dans un monde où l'ordinateur quantique arrive enfin (à l'heure actuelle, c'est pas le cas, les procédés étant très complexes).
Et enfin, on a le droit à la liste des algos post-quantiques sélectionnées par le NIST
Aux dernières nouvelles, les algos sélectionnées sont CRYSTALS-Kyber & Dilithium, Falcon, SPHINCS+, BIKE, McEliece et HQC et un nouveau tour est en cours avec une sélection d'une 50ène de nouveaux algos (en cours d'études). Tous se basent sur de "nouveaux" concepts cryptos.
On passe maintenant au dernier chapitre et le préféré des investisseurs pressés à têtes de singes : la cryptographie dans la cryptomonnaies.
Planquez vos NFT !
Le dernier chapitre, celui de la cryptographie dans la cryptomonnaie.
Sur le coup, j'y suis rentré un peu en mode "meh"
Et en fait, le chapitre est extrèmement intéressant; déjà parce que je pensais naïvement que les cryptomonnaies utilisaient de la cryptographie classique
Mais en fait, il y a des nouveaux algos (en tout cas que je ne connaissais pas), on y apprend des nouveaux principes algorithmiques comme pouvoir signer à plusieurs (avec des exemples sur plusieurs types d'algos); Le chapitre fait mal à la tête car y'a beaucoup de concepts
Autant pour les autres, tu peux toujours te raccrocher à ce que tu connais; là, va falloir t'accrocher sévère et tu peux ne pas tout comprendre du premier coup (même du deuxième coup, même du n coup...), le chapitre est plus long que les autres (x2).
-- Fin du livre !
Notre avis : ce livre est une excellente introduction à la cryptographie en général. Il est à la fois assez ouvert et claire pour des non-initiés et de par moment, il y a des carottages en profondeur avec des concepts mathématiques mais sans être trop "forceur" (comme on peut
voir dans d'autres bouquins ou des thèses où les auteurs blindent des pages d'équations imbitables que seuls les universitaires peuvent comprendre ... et encore..)
L'auteur renvoie vers des références si on souhaite approfondir des sujets précis.
Les chapitres sont assez courts pour souffler entre chaque (20-30 pages), on a l'impression de progresser petit à petit et ne pas se prendre un énorme pavé dans la gueule à chaque chapitre.
Quoiqu'il arrive, vous apprendrez toujours quelque chose, même si vous avez des connaissances dedans.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Léαlinux 🐧

Léαlinux 🐧 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @lea_linux

Mar 29, 2024
L'auteur de la backdoor a été dev sur le projet pendant 2 ans, son dernier commit est... wouah...
"JiaT75 also has commits in wasmtime" @ponceto91 😱
C'est "marrant" comment tous les packages managers - quand tu upgrades xz - passent de 5.6.x à ... 5.4.x !
Le downgrade malade !
Read 8 tweets
Dec 16, 2023
Petit thread émulation et opensource.
On commence par : L'émulateur playstation 3, disponible sous Linux, BSD, MacOS, Windows. Il est considéré comme la référence. Plus de 2457 jeux sont jouables (sur 3612). rpcs3.net
Image
On continue avec PCSX2, l'émulateur Playstation 2 (). Plus de 2667 jeux jouables (98%, dont 1% perfect). Compatible Linux, MacOS et Windows. pcsx2.net
Image
On passe à Nintendo, avec l'émulateur de la Switch: Yuku () est encore expérimental. Ecrit en C++, il est disponible sous Linux, Android et Windows. La compatibilité avoisine les 1400 jeux jouables (sur 2700 environs) yuzu-emu.org
Image
Read 4 tweets
Jan 10, 2020
C'est assez dingue de découvrir que des mathématiciens et cryptanalystes polonais avaient réussi à casser la première version du code Enigma quelques semaines avant la prise de pouvoir d'Hitler en janvier 1933..
Étonnant, en 1922, un cryptanalyste polonais est détaché à Tokyo afin d'aider les japonais à améliorer leurs propres systèmes de code et de chiffrement, empêchant ainsi les cryptanalystes américains de déchiffrer les messages.
Effet Streisand: En 1929, l'utilisation d'Enigma serait peut-être encore passé inaperçu si l’ambassade allemande n’avait pas fait des pieds et des mains pour récupérer un simple colis postal intitulé « matériel radio » auprès d’un centre de tri internationaux en Pologne. (1/3)
Read 21 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(