2018年10月26日に初出の投稿

Last modified: 2018-10-26

ブルース・シュナイアーが説くコンピュータセキュリティに関する6つの教訓

この記事で紹介されているシュナイアーの「教訓」を眺めていて思うことがあった。「コンピュータの複雑さゆえ、攻撃のほうが防御よりたやすい」。この教訓は、情報セキュリティの実務家として色々な仕方で多くの機会に社内でも(そして当サイトでも)訴えていきたいところだ。

数学の基礎を理解している人なら、シュナイアーのメッセージは簡単に理解できると思う。ここで「基礎」と言っているのは、因数分解のたすき掛けができるとか、2x^3 + x^2 + 8 を微分できるとか、そういった話ではない。そうではなく、恐らくわれわれは既知の定理よりも未知の定理の方が膨大に多いと理解している筈なので、或る処理系(疑似的には証明プロセスとして考えてもいい)のパフォーマンスつまり可能な結果の種類や数は、僕ら開発者が考えているよりも非常に多いという可能性が常にある。その中でも、情報セキュリティの実務家が常に気を付けているのは、或る正しい入力から妥当な処理を経て、数学的には問題がなくても非機能要件としては受け入れられない結果がもたらされる事例だ。簡単な例を使うと、ユーザ・エージェントからクエリ文字列として送信された文字列 q の値を、処理系において $_GET[ 'q' ] として扱い、これをフロントエンドにおいて echo $_GET[ 'q' ]; と出力することは、コーディングとしても、(これを一つの定理として扱う場合)数学的にも全く問題がない。しかし、これは情報セキュリティの実務家であれば、決して実装を許可しないアプリケーション設計(本来の意味で言う「プログラミング」)であろう。つまり、数学的に可能な結果の多くはわれわれが事前に結果を導き出しておいて対処することができないかもしれない、しかし情報セキュリティという観点では受け入れられないような問題を惹き起こすのである。そして、バグと愚かな実装とを同一視するかのような発言を繰り返しているライナス・トーバルズのような人物もいるとは言え、このような問題は処理系にバグが一つもないとしても膨大に存在し得る。

防御よりも攻撃の方が簡単であるというシュナイアーの発言には、恐らく以上のような事実も関わっているだろう。われわれが直面する情報セキュリティの問題の多くは、それらがもっている本来の機能としては何の問題もバグもない機器や処理系によって起こされる。システムのへの攻撃が、いわゆるセキュリティホールといった欠陥だけを狙っているかのように吹聴する人がいるなら、いまや情報セキュリティの専門家どころか実務家とすら言えないだろう。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook