La sécurité ne repose pas sur le secret de l'algorithme
Le principe de Kerckhoffs
En 1883, un linguiste néerlandais, Auguste Kerckhoffs, publie dans une revue militaire un article qui va fonder toute la cryptographie moderne. Il y énonce un principe qui semble paradoxal : un bon système de chiffrement doit rester sûr même si l'ennemi connaît tout de son fonctionnement.
L'énoncé du principe
Formulé aujourd'hui, le principe de Kerckhoffs dit ceci :
Un système cryptographique doit rester sûr même si tout, sauf la clé, est rendu public.
Autrement dit, on suppose que l'adversaire connaît l'algorithme de chiffrement dans ses moindres détails. La seule chose qu'il ignore, c'est la clé secrète. Et cela doit suffire à le tenir en échec.
La sécurité repose donc entièrement sur le secret de la clé, jamais sur le secret de l'algorithme.
Le corollaire de Shannon
Soixante-cinq ans plus tard, le mathématicien Claude Shannon, père de la théorie de l'information, reformule l'idée en une phrase plus brutale :
« L'ennemi connaît le système. »
C'est la maxime de Shannon. Elle invite l'ingénieur à concevoir un système en supposant le pire : l'attaquant a lu la documentation, dispose du code source, possède peut-être même un exemplaire de la machine. Malgré tout cela, sans la clé, il ne doit rien pouvoir faire.
Public ou secret ?
Le schéma suivant sépare ce qui est connu de tous de ce qui reste caché :
+------------------------------------------------------+
| CONNU DE TOUS |
| |
| - l'algorithme de chiffrement (AES, RSA...) |
| - le protocole, le format des messages |
| - le texte chiffré qui circule sur le reseau |
| |
+------------------------------------------------------+
|
| une seule chose reste cachee
v
+------------------------------------------------------+
| SECRET ABSOLU |
| |
| >>> LA CLE <<< |
| |
+------------------------------------------------------+
Tout est sur la table, sauf la clé. C'est elle qui fait la différence entre un texte lisible et une suite inexploitable.
Pourquoi c'est une bonne idée
Rendre l'algorithme public n'est pas une faiblesse, c'est une force :
- L'audit par la communauté. Un algorithme publié est analysé par des milliers de chercheurs. Les failles sont trouvées et corrigées avant d'être exploitées. AES a été choisi après un concours public de plusieurs années.
- Le remplacement d'une clé. Une clé compromise se change en quelques secondes. Un algorithme secret compromis, lui, doit être entièrement reconçu et redéployé partout : un désastre.
- La confiance. On ne fait confiance qu'à ce qu'on peut vérifier. Un algorithme que personne n'a le droit d'examiner ne mérite aucune confiance.
En résumé
Le principe de Kerckhoffs (1883), repris par la maxime de Shannon « l'ennemi connaît le système », pose que la sécurité d'un chiffrement doit reposer uniquement sur le secret de la clé, jamais sur le secret de l'algorithme. Rendre l'algorithme public permet son audit par la communauté et facilite le remplacement d'une clé compromise. C'est le fondement de toute la cryptographie moderne.

