Principe de Kerckhoffs
Aussi appelé : Loi de Kerckhoffs · Maxime de Shannon
Le principe de Kerckhoffs est l’un des piliers conceptuels de la cryptographie moderne. Formulé en 1883 par le linguiste et cryptographe militaire néerlandais Auguste Kerckhoffs dans son article La cryptographie militaire (Journal des sciences militaires), il pose que la sécurité d’un système cryptographique doit reposer uniquement sur le secret de la clé, et jamais sur le secret du procédé. Tout le reste — l’algorithme, la machine, la spécification, le code source — peut être public sans que la sécurité soit affectée.
Six principes, pas un seul
L’article de Kerckhoffs énumérait en réalité six principes, dont la postérité n’a retenu que le second. Voici les six dans leur formulation originale (modernisée) :
- Le système doit être matériellement, sinon mathématiquement, indéchiffrable.
- Il ne doit pas exiger le secret, et doit pouvoir tomber entre les mains de l’ennemi sans inconvénient.
- La clé doit pouvoir en être communiquée et retenue sans le secours de notes écrites, et être changeable à volonté par les correspondants.
- Il doit être applicable à la correspondance télégraphique.
- Il doit être portatif, et son maniement ou son fonctionnement ne doit pas exiger le concours de plusieurs personnes.
- Enfin, il est nécessaire, vu les circonstances qui en commandent l’application, que le système soit d’un usage facile, ne demandant ni tension d’esprit, ni la connaissance d’une longue série de règles à observer.
Le principe #2 est celui qu’on appelle aujourd’hui « principe de Kerckhoffs » tout court. Les autres restent largement pertinents — notamment #3 (rotation de clés) et #6 (utilisabilité), qui ont coûté la guerre à de nombreuses opérations cryptographiques mal pensées.
La maxime de Shannon
Reformulé un siècle plus tard, en 1949, par Claude Shannon dans son article fondateur Communication Theory of Secrecy Systems : « L’ennemi connaît le système ». C’est devenu la maxime de Shannon, et c’est elle qu’on cite couramment dans la pratique. Elle dit la même chose que Kerckhoffs en plus tranchant : on ne spécule pas sur l’ignorance de l’adversaire, on suppose qu’il sait tout sauf la clé.
Pourquoi le principe est si important
-
Les algorithmes secrets finissent toujours par fuiter : transfuges, ingénierie inverse, intrusion, fouille de poubelle, vol de portable, employé licencié rancunier. Un système qui s’écroule à la moindre fuite est fragile par construction. L’histoire est pleine de chiffres qu’on croyait secrets et qui ont fuité — Enigma a été reverse-engineerée par les Polonais avant la guerre, Purple a été cassée par Friedman.
-
Un algorithme public peut être étudié par toute la communauté académique. Les faiblesses sont trouvées et corrigées avant l’attaquant motivé. AES a été choisi en 2001 après un concours public de cinq ans, où quinze candidats ont été cryptanalysés à mains nues par tous les chercheurs du monde. Les survivants gagnent — c’est ce qui donne confiance.
-
Une clé peut être changée beaucoup plus facilement qu’un algorithme. Si une clé fuite, on en redonne une nouvelle. Si l’algorithme fuite, il faut tout redéployer — réécrire le code, redistribuer les machines, re-former les opérateurs. Coût astronomique.
-
Le secret-par-l’obscurité est mauvais signal de qualité. Une boîte qui refuse de publier son algorithme cache autre chose : soit elle ne sait pas l’écrire, soit elle sait que ça ne tient pas si on regarde.
Conséquences concrètes
- Tous les standards modernes (AES, RSA, ChaCha20, SHA-256, Argon2) sont publics, normalisés (NIST, IETF), et leur code de référence est libre. Ils ont été étudiés depuis des décennies par des milliers de chercheurs.
- Méfiez-vous de tout produit qui se vante de sa cryptographie « propriétaire » ou « secrète ». C’est le drapeau rouge classique du snake oil en sécurité. Bruce Schneier a longtemps tenu un blog dédié au démontage de ces produits.
- Audit ouvert : toute bibliothèque crypto sérieuse (OpenSSL, libsodium, BouncyCastle) est open-source et sujette à audit public.
- Open-source ne veut pas dire libre de bugs : Heartbleed (2014) était dans OpenSSL, code public depuis 1998. Mais le bug a été trouvé parce que le code était public — six ans, certes, mais trouvé.
CipherChronicle et Kerckhoffs
Sur CipherChronicle, tous les chiffres présentés ont leur algorithme dans lib/ciphers/registry.ts, ouvert sur GitHub. C’est leur clé qui les protège — pas leur procédé. Les puzzles s’appuient sur la difficulté de cryptanalyse d’un chiffre dont l’algorithme est connu. La pédagogie même de la plateforme repose sur Kerckhoffs : on ne cherche pas à cacher « comment marche César », on cherche à démontrer que connaître le procédé n’aide pas à casser une instance sans la clé.
À retenir :
- « L’ennemi connaît le système » (Shannon, 1949). On suppose que tout sauf la clé est public.
- Six principes originaux chez Kerckhoffs ; on retient surtout le second mais les autres (rotation, utilisabilité) restent essentiels.
- Conséquence : les algos sérieux sont publics et standardisés. Méfiez-vous de la « crypto propriétaire ».
- Open-source ne garantit pas l’absence de bugs — mais c’est la seule façon connue d’avoir une chance de les trouver.