Il principio di Kerckhoffs è il principio fondante della crittografia moderna, enunciato dal crittografo olandese Auguste Kerckhoffs nel 1883 nel saggio La cryptographie militaire:
Un sistema crittografico deve essere sicuro anche se tutto ciò che riguarda il sistema, eccetto la chiave, è di pubblico dominio.
In termini moderni: la segretezza del sistema non deve dipendere dalla segretezza dell’algoritmo, ma esclusivamente dalla segretezza della chiave. L’algoritmo può — e dovrebbe — essere noto a tutti.
Perché è il principio fondante
Kerckhoffs formulò il principio in risposta alla prassi militare dell’epoca: sistemi crittografici la cui sicurezza dipendeva dal fatto che il nemico non conoscesse il metodo. Questa strategia detta security through obscurity è intrinsecamente fragile: ogni sistema che dipende dalla segretezza del suo funzionamento cede non appena il funzionamento viene scoperto — per reverse engineering, tradimento, cattura di un manuale.
Il principio di Kerckhoffs ribalta la prospettiva: si deve progettare assumendo che l’avversario conosca perfettamente l’algoritmo. La sola variabile che protegge il sistema è la chiave, e solo su quella si concentra il segreto.
Conseguenze pratiche
Analisi pubblica e fiducia. Gli algoritmi crittografici moderni — AES, RSA, ChaCha20, SHA-256 — sono pubblicamente noti, pubblicati su riviste scientifiche, implementati in open source, analizzati e attaccati dalla comunità crittografica mondiale per decenni. Questa esposizione è un punto di forza, non di debolezza: le vulnerabilità vengono scoperte e corrette prima che causino danni su larga scala. Un algoritmo proprietario e segreto, al contrario, è analizzato solo dai suoi creatori — con inevitabili punti ciechi.
Gestione delle chiavi come problema centrale. Se la sicurezza risiede nella chiave, la gestione sicura delle chiavi diventa il problema critico: generazione con entropia sufficiente, distribuzione sicura, rotazione periodica, revoca, archiviazione (HSM, KMS) e distruzione sicura. Un algoritmo perfetto con una chiave gestita male è insicuro.
Security through obscurity come complemento, non sostituto. Nascondere i dettagli implementativi (offuscamento del codice, API private) può aggiungere un piccolo costo per l’attaccante ma non costituisce sicurezza reale. Non deve mai essere l’unica difesa né essere presentato come equivalente alla crittografia.
Il principio di Shannon
Claude Shannon formalizzò matematicamente lo stesso concetto nel 1949 con la nozione di sicurezza computazionale: un sistema è sicuro se un avversario che conosce l’algoritmo e ha potenza computazionale limitata non può ricavare informazioni sul plaintext dal ciphertext in tempo polinomiale. L’unica eccezione è il one-time pad (sicuro in senso informazionale), inutilizzabile nella pratica perché richiede chiavi lunghe quanto il messaggio.