Appuyez sur Entrée pour voir vos résultats ou Echap pour annuler.

Sécurité des bases de données: Transulcent databases de Peter Wayner

Dans le cadre du développement de l’app web pour ostéopathes ainsi que divers projets dont je vous parlerai sous peu, et ayant tous besoin de sécurité renforcée, je me suis procuré l’ouvrage Translucent Databases de Peter Wayner.

Cet ouvrage aborde la sécurité des bases de données de façon originale. Au lieu de parler des systèmes de contrôles d’accès, l’ouvrage se concentre sur les façons de protéger les données elles-mêmes. C’est à dire que même dans les cas où la base de données serait dérobée ou utilisée à mauvais escient par son propriétaire, les données ne seraient pas exploitables.

La plupart des gens dans le domaine de l’informatique savent que les mots de passes sont stockés en base de donnée seulement après hachage, c’est à dire transformation d’un texte d’entrée en clé de sortie qui ne permet pas l’opération inverse:

$ python
>>> import hashlib
>>> h = hashlib.new('sha256')
>>> h.update(b"MotDePasse")
>>> h.hexdigest()
'9a7e27cb0717bde7f74303379acc416213c400cd1329d7e345dd477203b6f589'

De cette façon, il nous est possible de tester si le mot de passe est correct lors de chaque connexion sans pour autant avoir de moyen pour retrouver le mot de passe à partir du résultat de hachage (parfois appelé somme de contrôle ou empreinte). Il existe une seule solution à vrai dire, et c’est de tester toutes les combinaisons jusqu’à obtenir le même résultat en sortie (9a7e27cb…).

Mais si la majorité des utilisateurs de ces concepts s’arrête aux mots de passe, Peter Weyner va bien plus loin dans son ouvrage en expliquant d’abord les diverses méthodes de chiffrement symétriques et asymétriques. Puis il donne de nombreux exemples sur comment les utiliser pour construire un système sur mesure permettant à la fois la protection des données sensibles et leur partage facile et sécurisé avec tous les autres utilisateurs. Certaines astuces m’ont permis d’aborder les problèmes de sécurité ou de partage d’information d’une façon totalement nouvelle.

J’ai utilisé certaines idées dans la construction de temporar.io (fermé pour l’instant mais qui reviendra sous un autre forme tôt ou tard), un système de messagerie sécurisée avec messages qui s’auto-détruisent. La base de donnée qui héberge les messages n’a pas les clés de déchiffrement, il n’y a donc aucun moyen pour un attaquant de retrouver le contenu des messages même s’il parvenait à obtenir le contenu de la base de données. La beauté des approches discutées dans Translucent Databases est que cela permet de rendre les systèmes plus robustes et cela plus facilement ! Au lieu de rajouter de l’authentification de plus en plus forte et des vérifications de plus en plus complexes, les données elle-mêmes sont protégées.

Enfin, cette approche permet une meilleure distribution de l’utilisation des ressources. D’habitude, le chiffrement se fait sur le serveur. Grâce à cette autre approche, la donnée est chiffrée chez le client. Il y a ainsi moins de calcul côté serveur et la sécurité pendant la transmission des données est renforcée. Si une nouvelle faille est découverte dans le protocole SSL, cela n’aura que peu d’incidence sur la sécurité de temporar.io car les données sont chiffrées sur le client.

Finalement, les caractéristiques fournies par les bases de données décrites dans le livre permettent une diffusion plus sereine des accès et une sécurité distribuée sur les divers utilisateurs (et cette sécurité n’est pas diminuée, au contraire). Bien entendu, je n’ai fait que survoler rapidement les idées du livre. Après quelques chapitres d’introduction plutôt théoriques, le reste du livre est rempli d’exemples divers et variés pour mieux comprendre les applications et voir diverses façons d’assembler ces méthodes et les adapter à chaque cas. Pour tous les curieux et pour toutes les personnes s’intéressant à la sécurité, ce livre est un incontournable !

Nota Bene: Il existe une version Lite de Translucent Databases de Peter Wayner mais je ne sais pas en quoi elle est « Lite ». Peut-être contient-elle moins d’exemples et seulement la partie théorique, qui peut déjà largement suffire. Si à l’occasion quelqu’un a pu lire la version Lite, qu’il me fasse signe 😉