Don’t roll your own crypto

crypto

Qu’est-ce que la cryptographie ?

La cryptographie est probablement l’outil le plus important de la sécurité informatique. Basée sur des concepts mathématiques complexes, elle permet d’assurer la confidentialité, l’intégrité et l’authenticité des données. Malheureusement elle est trop souvent mal employée. Et quand c’est le cas, l’information sensée être protégée ne reste pas en sécurité très longtemps.

La cause est le plus souvent une volonté d’utiliser des algorithmes ou des implémentations qui ne sont pas des standards reconnus et se révèlent au final bien plus fragile que ceux-ci. Le but de cet article est d’expliquer en quoi c’est une mauvaise idée ou pourquoi, comme disent les anglophones, « You don’t roll your own crypto ».

Qui que vous soyez, cher lecteur, je ne pense pas me tromper en affirmant que vous êtes loin d’avoir les compétences nécessaires pour concevoir un algorithme de chiffrement sûr. Ne le prenez pas mal : c’est aussi mon cas, et celui de 99% de la population mondiale. Il est facile d’avoir l’impression contraire et, en mobilisant ses connaissances mathématiques, de parvenir à un résultat qui donne une illusion de robustesse, alors qu’il ne résisterait pas plus de quelques minutes aux attaques d’un expert. C’est ce que résume la « Loi de Schneier », d’après le cryptologue Bruce Schneier qui l’a formulée en ces termes : « n’importe qui, de l’amateur le moins éclairé au meilleur cryptographe, est capable de concevoir un algorithme qu’il ne peut lui-même casser ».

Les algorithmes que nous connaissons tous – AES, RSA, 3DES… – ont été inventés par des cryptologues expérimentés qui ont travaillé à plusieurs. Leurs trouvailles ont ensuite été passées au crible par des cryptanalystes chevronnés qui se sont efforcés d’y trouver des failles. Et ce n’est qu’après avoir passé avec succès de nombreux tests que ces algorithmes ont été considérés suffisamment sûrs pour être utilisés à grande échelle.

C’est une erreur commune que de penser que ces standards, puisqu’ils sont bien connus, sont plus susceptibles d’être cassés qu’un algorithme « fait maison » qui restera secret. Le principe le plus important en cryptographie est le principe de Kerchoffs qui énonce, en substance, que la sécurité d’un algorithme de chiffrement doit reposer sur le secret de la clef et non de l’algorithme en lui-même, puisque celui-ci n’a quasiment aucune chance de rester inconnu. En effet le reverse- engineering, le social engineering ou d’autres procédés permettront toujours à un attaquant d’obtenir les informations qui lui sont nécessaires. Les standards comme RSA sont examinés en permanence et depuis des années à la recherche de failles, et pourtant sont toujours considérés comme sûrs. Alors pourquoi chercher une alternative ?

De même il est fortement déconseillé, à moins d’avoir des connaissances approfondies en mathématiques comme en programmation, d’implémenter soi-même ces standards. Les algorithmes de chiffrement sont extrêmement sensibles, et la plus petite erreur peut réduire à néant la sécurité du code. Prenons l’exemple de la faille Heartbleed (certes il s’agit d’un protocole et non d’un algorithme de chiffrement à proprement parler, mais le principe reste le même) : l’implémentation SSL la plus utilisée a comporté une vulnérabilité aux conséquences potentiellement catastrophiques qui est restée inconnue pendant 2 ans. Et il s’agit d’une bibliothèque open-source extrêmement répandue dont le code est analysé en permanence. Il serait bien prétentieux de penser pouvoir faire mieux soi-même.

Enfin il est important de se tenir informé des évolutions dans ce domaine. Régulièrement des algorithmes jusque-là largement utilisés sont délaissés, soit à cause de la publication d’une faille, soit suite à l’arrivée d’un concurrent plus performant et/ou plus sûr. Le choix d’un algorithme cryptographique doit toujours tenir compte des dernières découvertes en la matière.

Pour résumer si vous devez vous servir de la cryptologie utilisez des standards, utilisez les bons et utilisez-les bien. C’est à ces conditions que vous pourrez avoir l’esprit tranquille sur la sécurité de vos données.

Emile

Consultant Securité