ケルクホフスの原理

暗号技術において、ケルクホフスの原理（ケルクホフスのげんり、Kerckhoffs' principle もしくはKerckhoffs' assumption）とは、19世紀にアウグスト・ケルクホフス（Auguste Kerckhoffs）によって提案された次の原理である："暗号方式は、秘密鍵以外の全てが公知になったとして、なお安全であるべきである"。
概要.
ケルクホフスの原理は、暗号方式は秘密にしようとしてもスパイによって設計書が盗み出されたり暗号装置ごと敵に捕獲されたりして、遅かれ早かれ敵に解析されてしまうという経験則に基づく。1883年に公表された論文に、軍用暗号に関する次の6個の条件が示されており、そのうちの2番目の条件が現在「ケルクホフスの原理」と呼ばれている。
この原理は現代暗号では重視され、今では「暗号の安全性」と言えば、暗号文から暗号方式を推測する難しさではなく、暗号方式が既知であるとして暗号文(や平文)が入手できた場合に平文や暗号鍵を推測する難しさを言うのが通常である。参考：暗号理論#解読
シャノンはケルクホフスの原理を「敵はシステムを知っている」("the enemy knows the system")という簡潔な言葉で表現した。現在ではこのシャノンのバージョンの方が有名である。このシャノンのバージョンを英語では「Shannon's maxim」と呼ぶ事もある。
さらに、暗号の安全性証明は難しい問題であり、設計者自身や特定の評価機関だけによる評価では、本当に安全かどうかを確認することができない。そのためアルゴリズムを公開して暗号の安全性を誰でも検討できるようにすることが暗号の規格として広く普及するための要件とされている。
暗号学やセキュリティ製品への拡張.
シャノン版のケルクホフスの原則「敵はシステムを知っている」は、暗号方式のみならず、電子署名、電子マネー、電子投票等の暗号プロトコルに対しても適用する事ができる。シャノン版のケルクホフスの原則はさらに、暗号プロトコル以外のセキュリティ製品にも拡張できる。
この場合ケルクホフスの原則は、攻撃者にセキュリティ製品のソースコードや設計図等を盗られてそれを解析されたとしても、なお安全であるようなセキュリティ製品を作らねばならない、という事を意味する。
オープンソースソフトウェアでは、より積極的に、ソースコードを公開することでソースコード等が漏れてもその製品が本当に安全かどうかを世界中の研究者が吟味できることをメリットの一つと考えている。
しかし実製品や実システムにおいては、ソースコード等を全て公開してしまうと安全性を保証するのが原理的にできない場合や、。