Serious cryptography – Jean-Philippe Aumasson

A practical introduction to modern encryption

Langue: Anglais

Ayant acheté ce livre pour renforcer mes connaissances dans le domaine de la cryptographie, j’ai vite pris peur en feuilletant le livre car il semblait contenir beaucoup de formules mathématiques, j’ai donc préféré le garder dans mes dernières lectures. Ne faisant que 260 pages, il était le seul petit livre sur l’informatique qu’il me restait, je me voyais de ce fait dans l’obligation de serrer les dents et de m’atteler à la tâche.

La première bonne surprise en ouvrant le livre est que le titre est absolument mal choisi et cela m’a vite rassuré : il est fait pour des développeurs qui n’ont pas de connaissance préalable dans le domaine et a pour but de vulgariser au maximum, je correspondais plutôt bien au profil de lecteur. À chaque chapitre, le premier paragraphe est écrit en police plus grande que les chapitres suivants, ce qui donne un effet très étrange (je n’ai même pas osé le faire sur ce résumé tellement je trouve que c’est laid)

Tout est bien expliqué mais je ne vais pas vous le cacher, il y a une abondance de mathématiques. Même si toute la première moitié du livre est plutôt simplifiée, l’auteur ne prend plus trop la peine de nous ménager sur la deuxième partie. On ne lui en voudra pas, les mathématiques sont inhérentes au domaine. Attendez-vous à vous faire tabasser à chaque chapitre, mais si vous vous accrochez un peu ça le fait (en tout cas pour la majorité du livre)

Tous les classiques y passent: AES et ses modes de chiffrement, DES, la génération aléatoire, Diffie-Hellman, RSA, les hashs, stream et block ciphers, les courbes elliptiques type ECDSA, TLS, etc. Il nous ajoute également un chapitre sur la cryptographie post-quantique (résistant aux ordinateurs quantiques)

Je peux vous dire d’expérience que la majorité de ce qui est présentée se porte sur des algorithmes utiles et utilisés dans de nombreux systèmes informatiques. TLS est le protocole pour les sites en https, les courbes elliptiques sont utilisées dans les crypto-monnaies, il m’est également arrivé d’utiliser AES. Cela porte donc sur des choses qui servent forcément pour de la programmation informatique. 

Pour chaque domaine, il présente les anciens et nouveaux protocoles, leurs failles et comment certains ont été crackés. C’est vraiment intéressant, car on peut comprendre bien mieux comment certains problèmes majeurs sont apparus avec des exemples concrets. Il nous explique le hack de Sony et de la PS3, comment hacker la 2G, les clés WEP, le problème de la fonction random de Netscape à l’époque. J’ai par ailleurs un peu découvert le monde du hacking de hardware que je ne connaissais pas réellement et l’intérêt de sécuriser le hardware. Une explication sur le fonctionnement de la sécurité des cartes SIM était également très intéressante.

Grâce à ce livre, j’ai solidifié ma compréhension de tous ces protocoles et je comprends mieux les problématiques inhérentes au chiffrement des systèmes (diffusion, résistance aux collisions, etc.) Avec tous ces protocoles modernes, même si des failles sont plus dures à trouver, des mauvaises implémentations existeront toujours.

Il fait également référence au livre “Cryptography engineering” dont j’ai fait le résumé. Je pense que les deux se complètent bien, mais si vous n’en avez qu’un seul à lire et que vous êtes développeur, je vous recommande « Serious Cryptography » car il est plus concret.