シュナイアーの法則 (Schneier’s Law)
Contact: takayuki.kawamoto@markupdancing.net
ORCID, Google Scholar, PhilPapers.
First appeared: 2018-02-21 18:01:38,
Modified: 2018-02-24 17:23:53,2019-05-22 22:09:12,2021-12-07 19:04:28,2023-09-01 08:35:35,
Last modified: 2023-10-25 09:21:09.
Quora でこの記事がリンクされているのは知っていますが、特に詳しく見ていないので、応答するような内容は追加しません。それよりも、ここのところウィキペディアの体裁で自動翻訳が生成したようなサイトが増えていて、「シュナイアーの法則」というエントリーもあるようで、検索すると上位に出てきます。しかし、そういうサイトのページには暗号通貨のマイニングを手伝いさせられる JavaScript から本物のウィルスに至るまで、色々な仕掛けがあると考えるべきでしょう。*.wikipedia.org 以外のドメインで、個人が良い Wiki を運営している事例は知っていますが、一般用語としての “wiki” という言葉を使う習慣がない日本では、そういうまともなコンテンツと愚劣な連中が運営するウィキは、どちらも「野良」として扱われるため、注意が必要です。 [2021-12-07 19:04:28 (JST: GMT+0900)]
はじめに
YouTube で久しぶりにブルース・シュナイアー(Bruce Schneier)の講演を眺めていたときに、ふと彼の著作一覧を調べようとウィキペディアへアクセスしたら、もちろん彼の名前を冠している「シュナイアーの法則」という言葉は紹介されているのだが、その意味合いが全く説明されていないことに気づいた。
上記の記述だけで、果たしてどれくらいの人がシュナイアーの法則を理解できるのだろうか。どうして素人が自分でも破れないような暗号を作れるのか。暗号のアルゴリズムを作れるなら、その人は素人ではないのではないか。もちろん、ここで強調しなくてはいけないのは、このような暗号アルゴリズムは、だいたいにおいて暗号学的に妥当なアルゴリズムではないということであって、暗号アルゴリズムを素人でも暗号学的に妥当なレベルで簡単に作れるということではない。しかし、このフレーズの何が重要なポイントなのかを誰も解説しようとはしていないために、国内でも多くの専門家は知っているらしいが、彼らが本当にこのフレーズの主旨と趣旨の両方が分かっているのかどうかは実は怪しいという実情がある。現に、「シュナイアーの法則」というキーワードを固定して(つまり二重引用符で囲むことで正確に「シュナイアーの法則」というフレーズを含んでいるページだけを)検索してみると、下記のようにウィキペディアのページ以外はまともなページがないという状況だ。(とは言え、実は DuckDuckGo で “bruce schneier's law” というキーワードで日本語へ限定せずに検索してもロクなページが出てこないのだが。)
この結果にはいささか驚いた。もちろん、シュナイアーや彼の実績は情報セキュリティ業界の人々しか知らないだろう。たとえプログラマやシステム開発や IT ベンチャーの業界人ですら、大半は名前すら知らないと思う。あくまでも一例だが、Beautiful Security (eds. by Andy Oram and John Viega, O'Reilly, 2009) という本にシュナイアーの名前が出てくるのは、小さなエッセイの著者として参考文献表(246ページ)に一箇所だけである。しかし、せめて情報セキュリティの技術に関する専門家であれば彼の著作を幾つかは読んでいると期待しても無理な話ではないだろうし、情報セキュリティ・マネジメントに従事している僕らのようなバックオフィス系の実務家であっても、彼の著作の幾つかは(翻訳書ならなおさら)特に高度な離散数学や代数系のような素養を要求するわけでもないので、手にしていてもおかしくはないだろう。そして、実際に彼の著作を読むと、シュナイアーは何冊かの著作で「シュナイアーの法則」と同じ趣旨の議論を述べている。
こういう箇所からシュナイアーの考え方を受け取れば、「シュナイアーの法則」について言及し、専門家や実務家の観点から自由に語りうることは容易に予想がつくし、期待もできる。しかし、少なくとも日本語のリソースとしては、上記で述べたように(Google や Bing の検索結果としてヒットした限りでの、という前提はあるにせよ)殆ど言及も議論もされていない。これは、要するにシュナイアーの法則というフレーズどころか、彼が論じている内容についても、国内では殆ど議論されたり考察されていないのではないかと疑える余地がある。もちろん、専門家や実務家が海外の或る技術者が「言ったこと」について議論していなくてもいいが、しかしその人物が議論しているポリシーや発想や着想や主張については、専門家や実務家として従事している限りは学んで検討に付してから自分なりの見識をもつことが要求されてよいだろう。その結果として、ブログやウェブページに記載するかどうかは確かに自由だが、これだけページがないというのはどう考えても不自然だ。仮に、専門家や実務家ならば、この程度のフレーズの主旨は正しく理解しておくのが当たり前であって、わざわざフレーズを取り上げて紹介したり論じること自体が一種の恥であるというコンセンサスが、国内の情報セキュリティ技術者や研究者や実務家の中にあると仮定しても、いまこうして書いている僕のような人間が全く国内におらず、何らかの牽制が社内や学界や業界で働いていたなどという陰謀論を想定しても無意味だろう。つまり僕の予想としては、多くの研究者や技術者や実務家は、「シュナイアーの法則」というフレーズどころか、彼が語っている話題そのものについて、そもそも関心がないのではないかという可能性しか残らないのである。もしそのように思われては困るというプロパーや実務家がいるなら、ぜひ反論を期待したいところであるが、少なくとも「無能」呼ばわりしていないだけ、こちらは穏健に解釈しているということだけは肝に銘じておくべきだ。
「シュナイアーの法則」の経緯
「シュナイアーの法則」と呼ばれることになった議論が現れた経緯は、シュナイアー自身が丁寧に調べている。彼が2011年に書いた “Schneier's Law” というブログ記事よれば、1988年に彼が自分の発行するメルマガで書いた 'Memo to the Amateur Cipher Designer' というエッセイに “Anyone, from the most clueless amateur to the best cryptographer, can create an algorithm that he himself can't break”(「誰であれ、それがたいていの無知な素人だろうと最高の暗号解読者だろうと、自分自身で破れないアルゴリズムを作り出せてしまうものだ」)というフレーズがある。しかし、これだけだと(趣旨は措くとしても)多くの人には主旨が分からないので、やはりもう少し丁寧に紹介する必要があるだろう。彼はそのエッセイで、続けて次のように書いている。「そういうアルゴリズムを作り出すのは、困難ですらない。何が困難なのかと言うと、それは何年かの解析を経ていようと誰にも破れないようなアルゴリズムを作り出すことなのである。そして、そのアルゴリズムが解析に何年かかろうと誰にも破れないということを証明する唯一の方法は、最高の暗号解読者たちによる解析結果なのである」[Schneier, 1998]。つまり、アルゴリズムを作り出した当人が自分でアルゴリズムの強さを主張しても不十分なのであり、アルゴリズムが強いかどうかは専門家のコミュニティによって検証されなくてはならないという、言わば社会的な信用という根拠を要求する [Cepelewicz, 2023]。
もちろん、このような考え方は「草の根」という観念を何か無条件に善いものだと考えがちな人々からは反感を持たれるだろう。なぜなら、専門家のコミュニティによって認められた専門家の業績でなければ信用に値しないというのであれば、専門家によって認められていないアマチュアは専門家のコミュニティに加わることなど永久にできず、したがってアマチュアは最初から専門家のコミュニティからは締め出されてしまっているように見えるからだ。これは、しばしば大学の教員採用において「パラドクス」と揶揄されるものと似ている。なぜなら、日本の大学において若手の研究者を教員として公募する際に、その採用条件として「講師の経験がない人は採用しない」と公示することがあり、これでは大学の現職教員しか応募できなくなり、博士課程修了者や OD が締め出されてしまって、殆どの若手研究者が応募できなくなるという状況に陥り、これは専門家でなければ専門家として認められないと言っているかのような上記の状況と似ている。
そして、シュナイアーが述べるところでは、このような考えを公に「シュナイアーの法則(Schneier’s Law)」として名付けたのは、コリー・ドクトロウの次のような文章だったという。
なお、この「法則」と似たような考えは更に古くからあるらしいが、それ自体は別に驚くようなことでもないだろう。先行するアイデアの一つとして、次の節でケルクホフスの原理と呼ばれるものの一部を紹介するが、他にも似たようなアイデアは数多くあり、そのこと自体はシュナイアーの議論の価値を減ずるものではない。(実際、彼は何も「シュナイアーの法則」と呼ばれる議論を自分のオリジナルな業績だと言っているわけでも何でもない。)
「シュナイアーの法則」の妥当性
ここまでなら、初めてシュナイアーの法則を紹介された人の中でも察しが良い人は即座に理解できるのかもしれない。よって、日本版のウィキペディアに書かれているような引用一つで十分だと言い得るので、わざわざプロのセキュリティ技術者は自明の知識についてブログ記事など書かないものだと開き直ることだってできるだろう。それはちょうど、「私は今日も呼吸をしていた」と書くようなものだからだ。しかし、ここから先のような吟味や検証については、やはり「法則」を支持するにせよ疑問を感じるにせよ、思うところがあれば何かを議論したり表明しておくことが望ましいと思う。こういうテーマに関する専門家や実務家としての見識というものは、アンチウイルス・ソフトのベンダーや情報セキュリティのコンサルティング会社や大学の研究室において、部下や同僚や学生と話して互いに了解しておけばいいというものではないのである。その最も強い理由は、シュナイアーたちがまさに論じているように、世の中には安全性を保証する根拠が開発者である自分たちの検証だけというソリューションやツールやサービスが市中に出回っているからだ。そして、そういう技術が特許を取得しているというのは(ましてや出願しているだけというのは)、暗号技術の設計に対する一定の保証にはなり得ても、それをサービスとして提供する際の安全性の保証にまではならない。情報セキュリティに関する全ての設計やモデルというものは、blockchain と各種の仮想通貨システムの関係が示すように、理論、理論の応用、応用の実装、そして実装の運用と、それぞれの実務なり場面を区別してリスクを見積もるものである。どれほど理論として優れた数理モデルがあろうと、その応用が脆弱性を追加してしまう可能性もあるし、実装時にコーダが脆弱性を作り込むこともあれば、サービスの運用方法や手順の間違いで途方もない結果を生じることがあり得る。このようなことは、およそ単独の部門や企業や業界あるいは国の単位ですら十分な検討ができる人材や時間を確保できるとは限らず、少なくとも理論に関する事前のリスク対策として最も効果的で効率的なのは、理論(設計)を自分たちがどう理解しているかということや、どう評価しているかを公に問うことなのである。
では、改めてシュナイアーの主張に戻ってみよう。本稿の「はじめに」で彼の著作から引用したが、その後にも同じ趣旨からシュナイアーは次のように書き進めている。
*元の表現は “cryptographic primitive” と言い [Schneier, 2015: 116]、暗号技術を利用したセキュリティ・システムを設計するにあたって処理を分解したときの基本的なルーチンなり仕組みのことを言う。例えば、ストリーム暗号とか一方向性関数とか疑似乱数発生器などだ。もちろん「要素」で意味は通じるのだが、“building blocks” あるいは “components” という意味合いが伝わり難いように思う。昨今、「要素」という言葉を “aspect” のような意味で使ったり理解する人も多いため、できれば(たとえ読み手が不見識な人々でも)誤解を与えないようにしたいところだが、プロパーの著作を見ると「暗号プリミティブ」などと表記していて、これはこれで普及しているなら合わせておきたいところだ。しかし、今度は日本語で「プリミティブ」と書くと、「素朴」とか「原始的」などという意味にとる人が出てくるのでややこしい。ということで、個人的には「暗号学的な構成要素」という非常に堅苦しい表現にするか、あるいは山形さんのノリに倣って「暗号の部品」とでも訳した方がいいのではないかと思えてくる。
既に彼の趣旨は十分に展開したり説明できていると思うので、次にこのような「権威主義」が本当に妥当なのかどうかを検討してみよう。なお、僕が当サイトで書いているものを読んでいる方はご承知のとおり、僕は「権威」というものを社会の安定性や効率にとって必要だと考えているので、シュナイアーの議論を「権威主義」だと指摘したからといって、だから彼の議論や発想は駄目だとか批判しなくてはならぬなどと loaded language を込めているわけではない。とは言え、僕は権威という委譲の仕組みを許容しているだけであって、形式的に国会議員であるとか大学教員であるとか上場企業の経営者であるというだけで、当該分野について権威を認めるのは愚かであろう(大学教員であろうと僕よりも学術的な観点で言って無能な人は大勢いる。もう Twitter でそれは十分に分かった)。
シュナイアーの議論は、主旨としては専門家や実務家あるいは学術研究者のコミュニティによる権威をむやみに振り回しているだけに見えるが、その後に続く、「暗号コミュニティが発見したのは、だれ一人としてそんな資格をもったヤツはいない、ということだ」(“What the cryptographic community has found is that no one person has those sorts of credentials”)という結論を読めば、暗号アルゴリズムの妥当性を、誰か最終的な判定者なるものに託すことはできないという見識もうかがえる [Schneier, 2001: 157; 2015: 116]。それに、アマチュアであろうと自分の能力を公に証明すれば「専門家」の一人として受け入れられるようになるという道筋を描いているわけなので、専門家のコミュニティとアマチュアや素人という断絶それ自体に何か価値判断を与えているわけではない(愚かな権威主義というものは、自分の権威を保護することを自己目的化してしまうので、こういう断絶を固定して自分の立場が安全になることを求める)。なんにせよ、シュナイアーが暗号アルゴリズムの妥当な評価手続きに求めているのは、その評価を公に行うことと、一定の能力を公に立証したものが評価することという二つの点に集約できるだろう。もちろん彼も述べているように、どれほどすぐれた専門家であろうと、或る一人の人物が既存の成果を遥かに凌駕するような特性をもつ暗号アルゴリズムを考え出せないと断言し得る根拠は持っていないだろうし、あらゆる暗号アルゴリズムについて妥当な評価ができるような優れた人物が出てこないと断言できる根拠もない。しかし、それだけのことで、どこにでもいる日曜プログラマが安楽椅子で考え出したアルゴリズムを ACM や NSA の作業部会において真面目に検討するべきだと言える根拠にはならない。そして、どちらの想像や推定を基準にして暗号アルゴリズムの評価を行うことが社会にとって生産的で信頼し得る成果を上げるかは、おおよそ歴史が証明していると言ってよいだろう。もしチューリングの論文と見知らぬアマチュアの論文とを数学者のコミュニティが全く同じだけのリソースで査読しなければならないとすれば、アマチュアの論文の方が数も多くて頻繁に学会や学会誌の編集者や個々の研究者の元へ送られてくるので、学術コミュニティの生産性は著しく低下するだろう。学術やビジネスにおいては、偽陰性を恐れるあまり偽陽性の山を処理して「本当は陰性」だと取り除いていかなければならなくなると、その集団の生産性は極端に下がる。したがって、以上の理由でシュナイアーの議論は妥当として良いと思う。ただし、見かけは在野の研究者やアマチュアを締め出すような(ただの)権威主義に見えてしまうので、この議論は丁寧に補足した方がいいとは思う。
「ケルクホフスの原理」との関係
では次に、シュナイアーの法則は「ケルクホフスの原理(Kerckhoffs’ principle)」として知られている原則に関連付けられて紹介されることもあるので、これらの関係を検討してみよう。
上記の説明で語られているように(なお、「敵はその仕組みを知っている」というフレーズはクロード・シャノンによる言い換えなので、「シャノンの格率(Shannon’s maxim)」と呼ばれることもある)、暗号というものは暗号アルゴリズムが攻撃者に知られていると仮定してもメッセージを安全に通信できるように設計されることが理想とされる。例えば、サーバ証明書を使った HTTPS 通信や PGP を使った暗号化メールの送受信のように鍵だけを秘密にしておけば、それぞれの通信プロトコルや暗号化のアルゴリズムが公表されていても安全性が損なわれることはないというわけである。
シュナイアー自身がケルクホフスについて言及している文章を見てみると、すぐに Applied Cryptography: Protocols, Algorithms, and Source Code in C(『暗号技術大全』)にある、以下の箇所が出てくる。
このように、「秘匿によるセキュリティ(Security through obscurity)」を否定するスタンスとして、ケルクホフスの原理とシュナイアーの法則はアイデアを共有していると言えるだろう。僕も当サイトで WordPress のセキュリティ対策について記事を書いたときに、WordPress のバージョン番号がメタタグとして出力されることを抑制してもセキュリティ対策になどならないし(そんなものを確認しない大規模なボットネットで、手当たり次第に攻撃される危険が増えてきている)、Apache のシグネチャ表示を抑制したところで、バージョンが分からないから攻撃をやめるなんて攻撃者などいないと書いた。寧ろ、そのような情報の隠蔽によってサーバ・ソフトウェアや WordPress を古いまま使い続けるなどという運用の言い訳にしてしまうサイト運営者の愚かさこそが、サイトやサーバのセキュリティを損なっているのである。
「リーナスの法則」との関係
それから、含意するところが似ているので関係が気になる人もいると思うのだが、「リーナスの法則(Linus’s Law)」との関りも考えてみよう。これは、もともとエリック・S・レイモンドが次のように論じたことから普及したものだった。
多くの人たちがチェックすれば、プログラムに問題があっても即座に特定されるだろうという信念は、逆に言うと少数の人たちだけで開発されているプログラムは検証の回数や検証の着眼点が不足しており、つまるところシュナイアーの法則と同じように、不十分なチェックだけで「誰にも破られない暗号」を開発したと豪語してしまうことになるかもしれない。
参考文献
- Cepelewicz, Jordana
-
2023
“Why Mathematical Proof Is a Social Compact,” Quanta Magazine, August 31th, 2023, retrieved on September 1st, 2023, https://www.quantamagazine.org/why-mathematical-proof-is-a-social-compact-20230831/.
- Doctorow, Cory
-
2004
“Microsoft Research DRM talk,” given on June 17, 2004, http://craphound.com/msftdrm.txt.
- Jogenfors, Jonathan
-
2017
Breaking the Unbreakable: Exploiting Loopholes in Bell’s Theorem to Hack Quantum Cryptography. Linköping University (Linköping Studies in Science and Technology Dissertations, No. 1875), 2017.
- Raymond, Eric Steven
-
2000
The Cathedral and the Bazaar, version 3.0, http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/, accessed on 1st June, 2018.
- Rambus Press
-
2020
“A Modern Interpretation of Kerckhoff,” Rambus Blog, September 21st, 2020, retrieved on October 25th, 2023, https://www.rambus.com/blogs/a-modern-interpretation-of-kerckhoff/.
- Schneier, Bruce
-
1996
Applied Cryptography: Protocols, Algorithms, and Source Code in C. 2nd edition, John Wiley & Sons, 1996.
-
1998
“Memo to the Amateur Cipher Designer,” Crypto-Gram, October 15, 1998, https://www.schneier.com/crypto-gram/archives/1998/1015.html#cipherdesign.
-
2001
『暗号の秘密とウソ: ネットワーク社会のデジタルセキュリティ』, 山形浩生/訳, 翔泳社, 2001 (1st, 2000); [Schneier, 2015] の初版の翻訳.
-
2011
“'Schneier’s Law',” Schneier on Security, posted on April 15, 2011 at 1:45 PM, https://www.schneier.com/blog/archives/2011/04/schneiers_law.html.
-
2015
Secrets and Lies: Digital Security in a Networked World, 15th Anniversary Edition, John Wiley & Sons, 2015 (1st, 2000); [Schneier, 2001] の原著の新版.
- Wikipedia contributors
-
2017
“ブルース・シュナイアー,” Wikipedia, https://ja.wikipedia.org/w/index.php?title=%E3%83%96%E3%83%AB%E3%83%BC%E3%82%B9%E3%83%BB%E3%82%B7%E3%83%A5%E3%83%8A%E3%82%A4%E3%82%A2%E3%83%BC&oldid=65953887, accessed on 16th October, 2017.