Auguste Kerckhoffs(1835–1903)是出生於荷蘭林堡的語言學家,在巴黎高等商業學院任教,精通多種語言(也是人造語言 Volapük 的推廣者)。1883 年 1、2 月他在《Journal des sciences militaires》分兩期發表〈La cryptographie militaire〉(軍事密碼學),檢討當時法軍(普法戰爭 1870–71 戰敗後)的密碼實務。他在文中區分兩種情境:「少數孤立者之間暫時交換信件的密寫系統」與「要長期規範各軍團指揮官之間通訊的密碼方法」。後者才需要滿足下面六個「desiderata」(期望條件)。原文掃描版見 Fabien Petitcolas 的網站 https://petitcolas.net/kerckhoffs/。
六條原則:原文、英譯與中譯
@C0.8cmL4.5cmL4.5cmL4.2cm@ # & 法文原文(1883) & 英譯(Petitcolas;講義採用) & 中譯與關鍵詞
& Le système doit être matériellement, sinon mathématiquement, indéchiffrable ; & The system must be substantially, if not mathematically, indecipherable; & 系統必須在實務上(即使不是數學上)不可破譯。→ 計算安全 vs. 資訊論安全
& Il faut qu’il n’exige pas le secret, et qu’il puisse sans inconvénient tomber entre les mains de l’ennemi ; & The system must not require secrecy and can be stolen by the enemy without causing trouble; & 系統不得依賴保密;落入敵手亦無妨。→ 「Kerckhoffs 原則」本體
& La clef doit pouvoir en être communiquée et retenue sans le secours de notes écrites, et être changée ou modifiée au gré des correspondants ; & It must be easy to communicate and retain the key without the aid of written notes, and easy to change or modify the key at the discretion of the correspondents; & 金鑰要能不靠紙本傳遞與記憶,且可隨時更換。→ 金鑰短、可更換、金鑰管理
& Il faut qu’il soit applicable à la correspondance télégraphique ; & The system ought to be compatible with telegraph communication; & 須相容於電報通訊。→ 相容於通訊媒介/協定
& Il faut qu’il soit portatif, et que son maniement ou son fonctionnement n’exige pas le concours de plusieurs personnes ; & The system must be portable, and its use must not require more than one person; & 須可攜,一人即可操作。→ 可實作於受限裝置、可自動化
& 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. & Finally, given the circumstances in which the system is applied, it must be easy to use and must neither stress the mind or require the knowledge of a long series of rules. & 須易用,不費心神、不需記一長串規則。→ 可用性、不易誤用(misuse resistance)
「Kerckhoffs 原則」= 第二條
今天說「Kerckhoffs 原則」(單數)幾乎都指 :系統的安全只能依賴金鑰的保密,不能依賴演算法的保密。Shannon 在 1949 年〈Communication Theory of Secrecy Systems〉把它濃縮成一句:「the enemy knows the system」——假設敵人知道系統。
短的金鑰比演算法容易保密。演算法要寫進每一台裝置、每一份程式碼、每一位工程師的腦袋裡;金鑰只是 128 位元,可以放在硬體安全模組裡。
洩漏後,換金鑰比換演算法容易得多。金鑰外洩就重新產生一把();演算法外洩等於整個系統、所有使用者都要重新設計與部署。
公開才能標準化與受公眾檢驗。公開的演算法可以被全世界的密碼學家攻擊、改進、互通;秘密演算法只被少數人看過,錯誤往往要到被攻破時才被發現。
它沒有要求演算法一定要公開發表——它要求的是「即使公開也安全」。Petitcolas 的註解:方法不必公開,但「設計時必須被當成公開的」。把演算法保密作為額外的一層(defence in depth)並不違反原則;依賴它才違反。
它沒有說金鑰可以公開。恰恰相反:全部的秘密都集中到金鑰上,所以 的金鑰管理變得至關重要。
「安全靠隱匿」(security through obscurity)是它的反面:把演算法藏起來並以此為安全依據。Problem 3 (iv) 會看到一連串的災難。
從 1883 到今天
現代密碼學把 做到了極致:AES(1997–2000)、SHA-3(2007–2012)、後量子標準 ML-KEM/ML-DSA(2016–2024)都由 NIST 公開競賽選出,候選演算法在數年間被全世界公開攻擊;TLS、Signal 等協定的規格與程式碼都公開。安全定義本身(§[sec:ind])也內建了 Kerckhoffs:遊戲裡敵手知道 \((\KGen,\Enc,\Dec)\),不知道的只有 \(\sk\)。
的「電報」當然過時了,但把它讀成「相容於當代通訊媒介」就不過時;、 是今日「可用性安全」(usable security)與「不易誤用的 API」的祖先; 是金鑰管理學; 則演變成了本週後半的計算安全定義。Problem 3 (iii) 會請你逐條重寫。