柯克霍夫原則檢視原始碼討論檢視歷史
密碼學上的柯克霍夫原則(Kerckhoffs's principle,也稱為柯克霍夫假說、公理、或定律)係由Auguste Kerckhoffs|奧古斯特·柯克霍夫在19世紀提出:即使密碼系統的任何細節已為人悉知,只要密匙(key,又稱金鑰或密鑰)未洩漏,它也應是安全的。 資訊理論的發明者克勞德·夏農則改成說:「敵人瞭解系統」,這樣的說法則稱為夏農箴言。 它和傳統上使用隱密的設計、實作、或其他等等來提供加密的Security through obscurity|隱晦式安全想法相對。
依據柯克霍夫原則,大多數民用保密都使用公開的演算法。 但相對地,用於政府或軍事機密的保密器通常也是保密的。
柯克霍夫為軍用保密器所設計的這六個原則是:
- 即便如果做不到數學上不可破解,系統也應在實質(實用)程度上無法破解。
- 系統內不應含任何機密物,即使落入敵人手中也不會造成困擾。
- 密匙必須易於溝通和記憶,而不須寫下;且雙方可以容易的改變密匙。
- 系統應可以用於電訊。
- 系統應可以攜帶,不應需要兩個人或以上才能使用(應只要一個人就能使用)。
- 系統應容易使用,不致讓使用者的腦力過份操勞,也無需記得長串的規則。
布魯斯·施奈爾將這個想法延伸,認為除了密碼系統之外,任何保安系統都是這樣:試圖使用隱密物來保密一些東西,都會製造了失敗的根源。(筆者註:若以依賴隱密物或隱密方式的隱密性為主,一旦被公開或複製後即可能有遭到破解的危險)
埃里克·雷蒙則將它引伸到開放源代碼[1] 軟體,稱一套未假定敵人可獲得源代碼的資安軟體並不可靠,因此,「永無可信的封閉源碼」。反過來說,開放源碼比封閉源碼更安全。此種論點稱為透明式的安全(security through transparency)。