Kerckhoffs princippet er en regel for udvikling af kryptografiske systemer, ifølge hvilken kun et bestemt sæt algoritmeparametre, kaldet nøglen , holdes hemmeligt , og selve krypteringsalgoritmen skal være åben. Ved vurdering af krypteringens pålidelighed må det med andre ord antages, at modstanderen ved alt om det anvendte krypteringssystem, bortset fra de anvendte nøgler . Udbredt i kryptografi. Dette princip blev først formuleret i det 19. århundrede af den hollandske kryptograf August Kerkgoffs [1] .
I 1883 fremlagde den hollandske kryptograf Auguste Kerckhoffs seks principper for udformningen af militære cifre i sin bog Military Cryptography . De seks grundlæggende krav til et kryptosystem, som alle hidtil har bestemt designet af kryptografisk sikre systemer, er oversat fra fransk som følger [2] :
Det andet af disse krav blev kendt som "Kerckhoffs-princippet".
Kerckhoffs så kryptografi som det bedste alternativ til steganografisk kodning, som var almindeligt i det nittende århundrede for at skjule militære beskeder. Et problem med kodningsskemaer er, at de er afhængige af menneskelige hemmeligheder såsom "ordbøger", der afslører for eksempel ords hemmelige betydning. Opdagelsen af en steganografisk ordbog kompromitterer for altid det tilsvarende kodningssystem. Et andet problem er, at risikoen for afsløring er direkte relateret til antallet af brugere, der ejer hemmeligheden. Kryptering fra det nittende århundrede brugte simple tabeller, der gav transponering af alfanumeriske tegn, typisk givet række- og kolonneskæringspunkter, som kunne modificeres med nøgler, der normalt var korte, numeriske og kunne fikseres i menneskets hukommelse. Hemmelige beskeder kan kun kompromitteres, hvis det passende sæt bord, nøgler og beskeder falder i hænderne på en modstander. Systemer er ikke i fare, fordi deres komponenter, dvs. alfanumeriske tegntabeller og nøgler, nemt kan ændres [3] .
Essensen af princippet ligger i, at kryptosystemets magt ikke bør være baseret på krakkerens uvidenhed om algoritmens principper [4] . Faktisk mener Bruce Schneier , at Kerckhoffs princip ikke kun gælder for koder og cifre, men for sikkerhedssystemer generelt: enhver hemmelighed skaber et potentielt fejlpunkt. Med andre ord er hemmeligholdelse hovedårsagen til skørhed, og derfor kan det føre til et katastrofalt sammenbrud af systemet. Omvendt giver åbenhed systemfleksibilitet . Kerckhoffs-princippet sigter mod at gøre sikkerheden af algoritmer og protokoller uafhængig af deres hemmeligholdelse; åbenhed bør ikke påvirke sikkerheden. [5]
Brugen af sikker kryptografi erstatter det vanskelige problem med at sikre meddelelser med et meget mere håndterbart: at holde relativt små nøgler sikre. At holde de anvendte metoder hemmelige er vanskeligere, især i det lange løb, og at ændre dem efter at systemet er implementeret [6] .
Der er mange måder at opdage de interne detaljer i et meget brugt system på. Den mest kraftfulde og effektive måde at åbne på er banditkryptanalyse . Kryptanalytikeren truer, afpresser eller torturerer nogen, indtil de får nøglen; kan ty til afpresning og bestikkelse. Der er også mulighed for, at nogen vil være i stand til at adskille kildekoden og gendanne algoritmen [4] .
Til gengæld medfører offentliggørelsen af nøgler en lettere og billigere proces med at generere og distribuere nye nøgler. Det vil sige, at sikkerheden kun bør afhænge af hemmeligheden af nøglen, og ikke af hemmeligheden af de anvendte metoder [7] .
De fleste krypteringssystemer, der er udbredt i civil kryptografi, bruger i overensstemmelse med Kerckhoffs princippet velkendte, ikke-hemmelige kryptografiske algoritmer . Men National Security Agency holder sine algoritmer hemmelige og beskæftiger de bedste kryptografer i verden. Og desuden diskuterer de algoritmer med hinanden, afhængigt af kollegernes viden og kompetence. Derfor behøver de ikke åbne algoritmer for alle [4] .
Sikkerhed gennem uklarhed er antagonisten af Kerckhoffs princip, som er, at det er nødvendigt at skjule systemets interne struktur for at sikre dets sikkerhed. I nogle virksomheder er det sædvanligt at holde systemets indre funktioner hemmeligt. De hævder, at sikkerhed gennem uklarhed gør et produkt mere sikkert og mindre sårbart over for angreb. Modargumentet er, at sikkerhed gennem uklarhed kan føre til mange reelle angreb. Udviklere bør ikke undervurdere angribernes opfindsomhed og bør aldrig bruge dette princip [8] .
At skjule sårbarheder i algoritmer gør dem mindre tilbøjelige til at blive rettet og øger chancen for, at de kan og vil blive udnyttet af angribere. Åben diskussion og analyse af algoritmer afslører svagheder, som ikke var tænkt på af de oprindelige forfattere, og fører dermed til skabelsen af bedre og mere sikre algoritmer. [9]
Den amerikanske matematiker Claude Shannon formulerede i sin artikel fra 1949 " Theory of Communication in Secret Systems " i Bell System Technical Journal dette princip (sandsynligvis uafhængigt af Kerckhoffs) som følger: "Fjenden kender systemet" [10] . I denne formulering kaldes dette princip for Shannons maksime . Med andre ord skal du designe systemer baseret på den antagelse, at fjenden vil blive fuldt bekendt med dem. [elleve]