2018年03月07日に初出の投稿

Last modified: 2018-03-07

Konami code; security via obscurity; hotel lock USB hack; Kerckhoff's principle; hospital WPA setup hack; DECSS; Lodz tram attack; proper use of cryptography; zero day exploits; security snake oil; realities of in-system firewalls; aircraft infotainment and firewalls; zombie road sign hack

Embedded Software Course Notes On-Line

上記のノートの中で最後に掲載されている "Security Pitfalls"(セキュリティの落とし穴)は、シンプルで要点を的確に押さえてある資料だと思うので、その内容を咀嚼して解説しておきたい。

セキュリティ(ここでは必ずしも情報セキュリティに限った話ではないが)というものは、思わぬところで綻びを生じるし、或る目的をもって攻撃してくる人々は、まさに「クリエーティブ」と言ってよいほどの色々なやり方を考えて弱点を探って来る。よって、守る側にも一定の知識や経験が求められる。しかし大切なことは、守る方は最初から圧倒的に不利であるという事実を正確に理解することである。家の防犯を考えてみても、外から侵入されて困る箇所というのは、家には何か所もある。玄関、裏戸、車庫のシャッター、そして場合によってはトイレの下水管だ。それどころか、条件(長期に渡って家を空けて外出するとか)によっては屋根や壁に穴を空けられて侵入されることすらあるだろう。つまり、家の中のものを守るという目的にとって保護しなくてはならないポイントというのは、それこそ膨大な数に上る。しかし、侵入する方にしてみれば、その膨大な数のうち一つでも突破できれば目的を果たせるかもしれないのである。よって、攻撃側が圧倒的に有利であることは、このような事例から容易に分かるだろう。

そして、これがウェブサイトへの攻撃方法のようなものとして広く伝達されると、色々な通信手段を使って世界中の攻撃者や遊び半分の人々がサイトを一斉に攻撃できるようになる。そして、初めて攻撃方法を見つけるまでは色々な苦労をしたり、実質的に大金を使ったりするかもしれないが、見つけた攻撃方法を後から実行するときは、もっと少ないコストで実行できるかもしれない。昔から、コンピュータゲームの「隠しコマンド」のようなものは、見つけるまでは大変かもしれないが(というか、実際にはゲーム会社の内部関係者がリークしてたりするわけだが)、ひとたび見つかると子供でも簡単に入力できるコマンドとして、たちどころに大勢の人たちが知るところとなる。したがって、サービスや製品や施設のセキュリティを突破するというのは、多くの人にとってはイーサン・ハントにでもならないと不可能だと思われているかもしれないが、いまや大企業のサーバを DDoS 攻撃で悩ませているのは、ボットを増殖させるウィルスをつくる悪ガキ用のLEGOといったもので遊んでいる小学生(特に数学の神童というわけでもない)かもしれないのだ。

では、我々はどうすればよいのだろう。少なくとも、「セキュリティの落とし穴」と呼ばれているような、一見すると説得力がありそうに見えるタワゴトに騙されないようにしたいものである。まず第一に、既に当サイトの「シュナイアーの法則」というページで説明しているように、情報を隠すことによってセキュリティを維持するという手法は、実はさほどセキュリティとして良い手法ではないということに気づかなくてはならない。それはちょうど、誰でもよくやるように、家の鍵を玄関のドアマットの下や植え込みに隠すようなものなのだ。攻撃する側の人間は、多くの人がやっているような生活の知恵など既にたくさん知っており、「アホは家の鍵をドアマットや植え込みに隠す」という法則を始めとして、色々な知識をもっている。そして、鍵がないとしても、鍵の代わりになるようなものを手に入れようと、色々な策略をめぐらしてくる。ドアマットに鍵を隠すのは単純すぎると考え直した人であっても、自分自身で隠した物の置き場所を忘れてしまうと困るので、自分だけが分かると思い込んで色々なヒントを残す。しかし、そういうことは攻撃者にも分かるのである。鍵を埋めた場所を指し示すために、玄関の前にある石の向きを変えたとする。しかし、玄関の前に置いた石の向きで分かるという事実を忘れてしまわないように、玄関の前に置いた石に注意を向けるための別のヒントを残したり・・・といったことをやって、数多くのヒントを残すわけだ。

次の落とし穴は、これも「シュナイアーの法則」で説明したように、自前の暗号化なんてものはたいていクソということだ。あなたの自宅では鍵ではなくセキュリティ・システムとして暗証番号を入力するような端末を使っているとしよう。ドアの横にデカい電卓のようなものが貼り付けてあって、「9367#」などと入力すれば扉のロックが解除されるというアレだ。そして、まず何よりも最初に言えることは、セキュリティへの攻撃というものは、何も扉を突破することだけに限られるわけではない。もし攻撃者が単純にあなたに悪意だけを持っていて、あなたの部屋に侵入するというよりも、寧ろあなたを困らせるという動機が優先するなら、セキュリティ・システムの端末を単純に壊すだけでも十分な攻撃になるのである。同じことは最初に見た鍵の話でも同じである。鍵穴に大量のボンドやパテを埋め込まれてしまえば、単にあなたを困らせるというだけの動機なら、高度なセキュリティ技術やプログラミングの経験やソーシャルハッキングをこなす優れた発想力などなくても攻撃は完遂する。

たとえ特許を取得していて内部構造が隠されているセキュリティ・システムであろうと、利用者が思っているよりも数多くの脆弱性がある。その代表は、「マスター・パスワード」と呼ばれる特殊なパスワードを機器のメモリに最初から仕込んでいたりすることと、実は暗証番号を扱う仕組みが簡単に攻撃できる馬鹿げたレベルの商品だったりすることだ。前者は、管理用パスワードなどと、いかにも必要な機能であるかのように呼ばれたりするが、要するに利用者すら知らない裏口というだけでしかない。そして、その裏口を攻撃者に知られないという保証は全くないのである。攻撃者は、もしかすると同じ商品を買って、自宅で回路を解析している可能性もある。もしメモリに最初から記録させている情報なら、当然ながら同じ方法で全ての商品に記録させてあるだろう。商品ごとにパスワードを変えて記録する可能性もあるが、実はたいていのマスター・パスワードというのは、全く同じパスワードを全ての商品に登録している。よって、その商品をメンテナンスする保守担当者は、パスワードを一つだけ覚えていれば全ての顧客に対応できるのである。そして同じく、パスワードを一つだけ覚えたら、攻撃者もそのセキュリティ・システムが設置してある施設へはどこでも侵入できる。

次に考えておくべき落とし穴は、セキュリティに関する自分の思い込みを捨てるということだ。これまでに述べたような落とし穴も同様だが、他にもたくさんある。たとえば、メーカーというのは、あなたの環境にとって最適な初期設定で機器を販売しているわけではないということを忘れないようにしたい。ルータの管理画面の初期(ディフォールト)パスワードが "admin" であることは、最適だろうか。iPhone のパスコードが、初期状態では四桁の数字で設定できるようになっていることはどうだろう。いま現在、あなたのセキュリティソフトで検知できるウィルスだけが、この世に存在するコンピュータ・ウィルスなのだろうか。現在の建築基準法で安全だと言われているからといって、あなたの家がこれからもずっとどういう地震にも耐えられる保証はあるのだろうか。

他にも、セキュリティに関してガマの油みたいなものを売りつける連中がいることを忘れてはいけない。概して、メディアが取り上げているような営業用語(buzzwords)は、セキュリティにとってクソの役にも立たない。ビッグデータ、スケール、サーバレス、そして差分プライバシーですら、殆どの人々は内容を知らずに話題にしている。そして、セキュリティのイカサマ野郎が口にする決まり台詞は「突破不能(unbreakable)」だ。こんなことは、暗号論の素養があればナンセンスであることが誰でも分かる。たとえあなたが 1,000 桁のパスワードを何かのシステムへ登録したとしても、解除キーを出鱈目に打ち込むサルが、その 1,000 桁とぴったり同じ文字列を入力してしまう確率はゼロではない。ものごとを正確かつ冷静かつ誠実に表現できる人間であれば、「突破するには時間やお金として膨大なコストがかかる」などと言うはずである。

そして最後に、どれだけ高度な技術を使ったデータであっても、それを送受信したり記録するときに間違いを犯すと無意味になるし、高度なセキュリティ・システムであろうと扱う人間がバカなら簡単に脆弱性が生まれるということを弁えておこう。PGP を使って暗号化メールを他人とやりとりする人が、公開鍵の代わりに間違って秘密鍵を公表したらどうなるか。暗証番号を入力する UI を設計するときに、愚かなデザイナーが個々のキーに応じて違う音を出すようなソフトウェアを考え付くかもしれない。セキュリティというものは、周囲の物理的な環境や動作条件を含めて、色々な要素にかかわる。何か一つの要素を考慮し忘れたり、どこか一つの要素について勝手な思い込みがあると、とたんにそこを攻撃される可能性が生まれるのである。

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

冒頭に戻る


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

Google+ Twitter Facebook