Kerckhoffs princip är en regel för utveckling av kryptografiska system, enligt vilken endast en viss uppsättning algoritmparametrar, kallad nyckeln , hålls hemlig och själva krypteringsalgoritmen måste vara öppen. Med andra ord, när man bedömer tillförlitligheten av krypteringen, måste det antas att motståndaren vet allt om det krypteringssystem som används, förutom de nycklar som används . Används ofta i kryptografi. Denna princip formulerades först på 1800-talet av den holländska kryptografen August Kerkgoffs [1] .
År 1883 lade den holländska kryptografen Auguste Kerckhoffs upp sex principer för utformningen av militära chiffer i sin bok Military Cryptography . De sex grundläggande kraven för ett kryptosystem, som alla hittills har bestämt utformningen av kryptografiskt säkra system, är översatta från franska enligt följande [2] :
Det andra av dessa krav blev känt som "Kerckhoffs princip".
Kerckhoffs såg kryptografi som det bästa alternativet till steganografisk kodning, vilket var vanligt på 1800-talet för att dölja militära meddelanden. Ett problem med kodningsscheman är att de förlitar sig på mänskliga hemligheter som "ordböcker" som avslöjar till exempel ords hemliga betydelse. Upptäckten av en steganografisk ordbok äventyrar för alltid motsvarande kodsystem. Ett annat problem är att risken för avslöjande är direkt relaterad till antalet användare som äger hemligheten. 1800-talets kryptografi använde enkla tabeller som tillhandahöll omvandling av alfanumeriska tecken, vanligtvis givna rad- och kolumnkorsningar, som kunde modifieras med nycklar som vanligtvis var korta, numeriska och kunde fixas i mänskligt minne. Hemliga meddelanden kan bara äventyras om lämplig uppsättning av bord, nyckel och meddelande hamnar i händerna på en motståndare. System är inte i riskzonen eftersom deras komponenter, d.v.s. alfanumeriska teckentabeller och nycklar, lätt kan modifieras [3] .
Kärnan i principen ligger i det faktum att kryptosystemets kraft inte bör baseras på knäckarens okunnighet om algoritmens principer [4] . Bruce Schneier anser faktiskt att Kerckhoffs princip inte bara gäller koder och chiffer, utan säkerhetssystem i allmänhet: varje hemlighet skapar en potentiell punkt för misslyckande. Sekretess är med andra ord den främsta orsaken till sprödhet, och därför kan det leda till en katastrofal kollaps av systemet. Omvänt ger öppenhet systemflexibilitet . Kerckhoffs princip syftar till att göra säkerheten för algoritmer och protokoll oberoende av deras sekretess; öppenhet ska inte påverka säkerheten. [5]
Användningen av säker kryptografi ersätter det svåra problemet med att säkra meddelanden med ett mycket mer hanterbart: att hålla relativt små nycklar säkra. Att hålla de metoder som används hemliga är svårare, särskilt på lång sikt, och att ändra dem efter att systemet har installerats [6] .
Det finns många sätt att upptäcka de interna detaljerna i ett mycket använt system. Det mest kraftfulla och effektiva sättet att öppna är banditkryptanalys . Kryptanalytikern hotar, utpressar eller torterar någon tills de får nyckeln; kan tillgripa utpressning och mutor. Det finns också möjligheten att någon kommer att kunna ta isär källkoden och återställa algoritmen [4] .
I sin tur innebär avslöjandet av nycklar en enklare och billigare process att generera och distribuera nya nycklar. Det vill säga, säkerheten bör endast bero på sekretessen för nyckeln, och inte på sekretessen för de metoder som används [7] .
De flesta krypteringssystem som ofta används inom civil kryptografi, i enlighet med Kerckhoffs princip, använder välkända, icke-hemliga kryptografiska algoritmer . Men National Security Agency håller sina algoritmer hemliga och anställer de bästa kryptograferna i världen. Och dessutom diskuterar de algoritmer med varandra och förlitar sig på kollegors kunskap och kompetens. Följaktligen behöver de inte öppna algoritmer för alla [4] .
Säkerhet genom dunkel är antagonisten till Kerckhoffs princip, som är att det är nödvändigt att dölja systemets interna struktur för att säkerställa dess säkerhet. I vissa företag är det vanligt att hålla systemets inre funktioner hemliga. De hävdar att säkerhet genom dunkel gör en produkt säkrare och mindre sårbar för attacker. Motargumentet är att säkerhet genom dunkel kan leda till många riktiga attacker. Utvecklare bör inte underskatta angriparnas uppfinningsrikedom och bör aldrig använda denna princip [8] .
Att dölja sårbarheter i algoritmer gör dem mindre sannolikt att lappas och ökar chansen att de kan och kommer att utnyttjas av angripare. Öppen diskussion och analys av algoritmer avslöjar svagheter som de ursprungliga författarna inte tänkt på, och leder därmed till skapandet av bättre och säkrare algoritmer. [9]
Den amerikanske matematikern Claude Shannon formulerade i sin artikel från 1949 " Theory of Communication in Secret Systems " i Bell System Technical Journal , denna princip (förmodligen oberoende av Kerckhoffs) på följande sätt: "Fienden känner till systemet" [10] . I denna formulering kallas denna princip för Shannons maxim . Med andra ord måste du designa system baserat på antagandet att fienden kommer att bli helt bekant med dem. [elva]