Kerckhoffsin periaate on salausjärjestelmien kehittämisen sääntö , jonka mukaan vain tietty joukko algoritmiparametreja, nimeltään avain , pidetään salassa ja itse salausalgoritmin on oltava avoin. Toisin sanoen salauksen luotettavuutta arvioitaessa on oletettava, että vastustaja tietää käytetystä salausjärjestelmästä kaiken paitsi käytetyt avaimet . Käytetään laajasti kryptografiassa. Tämän periaatteen muotoili ensimmäisen kerran 1800-luvulla hollantilainen kryptografi August Kerkgoffs [1] .
Vuonna 1883 hollantilainen kryptografi Auguste Kerckhoffs esitti kuusi periaatetta sotilassalausten suunnittelulle kirjassaan Military Cryptography . Salausjärjestelmän kuusi perusvaatimusta, jotka kaikki ovat tähän mennessä määrittäneet kryptografisesti turvallisten järjestelmien suunnittelun, on käännetty ranskasta seuraavasti [2] :
Toinen näistä vaatimuksista tuli tunnetuksi "Kerckhoffin periaatteena".
Kerckhoffs näki kryptografian parhaana vaihtoehtona steganografiselle koodaukselle, joka oli yleistä 1800-luvulla sotilaallisten viestien piilottamiseen. Yksi koodausjärjestelmien ongelma on, että ne perustuvat ihmisten hallussa oleviin salaisuuksiin, kuten "sanakirjoihin", jotka paljastavat esimerkiksi sanojen salaisen merkityksen. Steganografisen sanakirjan löytäminen vaarantaa ikuisesti vastaavan koodausjärjestelmän. Toinen ongelma on, että paljastamisen riski liittyy suoraan salaisuuden omistavien käyttäjien määrään. 1800-luvun kryptografiassa käytettiin yksinkertaisia taulukoita, jotka tarjosivat aakkosnumeeristen merkkien transponoinnin, tyypillisesti annettujen rivien ja sarakkeiden leikkauspisteet, joita voitiin muokata näppäimillä, jotka olivat yleensä lyhyitä, numeerisia ja jotka voitiin tallentaa ihmisen muistiin. Salaiset viestit voivat vaarantua vain, jos sopiva taulukko, avain ja viesti joutuvat vastustajan käsiin. Järjestelmät eivät ole vaarassa, koska niiden komponentteja, eli aakkosnumeerisia merkkitaulukoita ja avaimia, voidaan helposti muokata [3] .
Periaatteen ydin on siinä, että kryptojärjestelmän teho ei saa perustua krakkauksen tietämättömyyteen algoritmin periaatteista [4] . Bruce Schneier uskookin, että Kerckhoffin periaate ei koske vain koodeja ja salauksia, vaan turvajärjestelmiä yleensäkin: jokainen salaisuus luo mahdollisen epäonnistumiskohdan. Toisin sanoen salailu on pääasiallinen haurauden syy, ja siksi se voi johtaa järjestelmän katastrofaaliseen romahtamiseen. Toisaalta avoimuus tarjoaa järjestelmän joustavuutta . Kerckhoffsin periaatteen tavoitteena on tehdä algoritmien ja protokollien turvallisuudesta riippumaton niiden salaisuudesta; avoimuus ei saa vaikuttaa turvallisuuteen. [5]
Turvallisen kryptografian käyttö korvaa vaikean viestien suojaamisen ongelman paljon hallittavammalla ongelmalla: suhteellisen pienten avainten turvassa pitämisellä. Käytettyjen menetelmien salassa pitäminen on varsinkin pitkällä aikavälillä vaikeampaa ja niiden muuttaminen järjestelmän käyttöönoton jälkeen [6] .
On monia tapoja löytää laajalti käytetyn järjestelmän sisäiset yksityiskohdat. Tehokkain ja tehokkain tapa avautua on rosvo kryptoanalyysi . Kryptanalyytikko uhkaa, kiristää tai kiduttaa jotakuta, kunnes hän saa avaimen; voivat turvautua kiristykseen ja lahjontaan. On myös mahdollista, että joku pystyy purkamaan lähdekoodin ja palauttamaan algoritmin [4] .
Avainten paljastaminen puolestaan merkitsee helpompaa ja halvempaa uusien avainten luomis- ja jakeluprosessia. Eli turvallisuuden tulisi riippua vain avaimen salaisuudesta, ei käytettyjen menetelmien salaisuudesta [7] .
Useimmat salausjärjestelmät, joita käytetään laajalti siviili kryptografiassa Kerckhoffin periaatteen mukaisesti, käyttävät hyvin tunnettuja, ei-salaisia kryptografisia algoritmeja . Mutta National Security Agency pitää algoritminsa salassa ja työllistää maailman parhaat kryptografit. Ja lisäksi he keskustelevat algoritmeista toistensa kanssa luottaen kollegoiden tietoon ja osaamiseen. Näin ollen niiden ei tarvitse avata algoritmeja kaikille [4] .
Turvallisuus epäselvyyden kautta on Kerckhoffin periaatteen vastakohta, jonka mukaan järjestelmän sisäinen rakenne on piilotettava sen turvallisuuden takaamiseksi. Joissakin yrityksissä on tapana pitää järjestelmän sisäinen toiminta salassa. He väittävät, että epäselvyyden kautta tapahtuva turvallisuus tekee tuotteesta turvallisemman ja vähemmän alttiin hyökkäyksille. Vasta-argumentti on, että epäselvyyden kautta tapahtuva turvallisuus voi johtaa moniin todellisiin hyökkäyksiin. Kehittäjät eivät saa aliarvioida hyökkääjien kekseliäisyyttä, eikä heidän tulisi koskaan käyttää tätä periaatetta [8] .
Algoritmien haavoittuvuuksien piilottaminen vähentää niiden korjaamisen todennäköisyyttä ja lisää todennäköisyyttä, että hyökkääjät voivat ja tulevat hyödyntämään niitä. Avoin keskustelu ja algoritmien analysointi paljastaa heikkouksia, joita alkuperäiset kirjoittajat eivät ajatelleet, ja johtaa siten parempien ja turvallisempien algoritmien luomiseen. [9]
Amerikkalainen matemaatikko Claude Shannon muotoili vuonna 1949 Bell System Technical Journalissa julkaisemassaan artikkelissa " Theory of Communication in Secret Systems " tämän periaatteen (luultavasti Kerckhoffsista riippumatta) seuraavasti: "Vihollinen tuntee järjestelmän" [10] . Tässä muotoilussa tätä periaatetta kutsutaan Shannonin maksiimaksi . Toisin sanoen sinun on suunniteltava järjestelmiä olettaen, että vihollinen tuntee ne täysin. [yksitoista]