ITで遊ぶ

ハッカー、セキュリティエンジニアと法律

ITの技術面にかかわらない人はハッカーとか、セキュリティ・ホールをくぐり抜ける人はすごい知性をもった人だと思うでしょう。
そうでもないと私は思うので、概要をむつかしい言葉を使わずに書くことにします。

ハッキングの初期

当然といえば当然なのですが、1996年ごろからのインターネットの広まり以前はハッキングという存在はとてもマイナーでした。
なくはなかったのですが、電話回線で遠距離のコンピューターを利用するということ自体があまり知られておらず、大学、パソコン通信くらいでしかなかったのです。
むしろ、公衆電話をタダ掛けする、といったNTT相手のほうがメジャーでした。

インターネットそのもので進んでいたアメリカではナイトメア(悪夢という意味です)という名の有名なハッカーがおり、ハッキングの教本を書きました。
記憶のままですが、この中ではソースコードの解析とソーシャルハッキングのふたつが技術の要だということがすでに指摘されていました。

たとえば、今では信じられないことですが、初期のLinuxはバグだらけのアセンブラーとCというプログラムで作られた「動けばいいんだよ」的なものでした。
これはリーナスをバカにするわけではなく、動かすこと自体が当面の目的であって、その上でなにかビジネスめいたものが動くなんてことは誰も考えもしなかったのです。例えていえば、空飛ぶ円盤を作っていて、それでどこまで安全に飛べるかより前に、飛ぶかどうかのほうが大事といえばおわかりいただけるでしょうか。

短気な日本人はそういう初期のものを見るとすぐに「おもちゃだ」「役にたたん」とバカにしますが、ものの10年でレンタルサーバーやスマートフォン(電話)というとても要求がシビアな機器の中心として動いています。はい、アンドロイド(Android)のことです。AndroidはLinuxの派生です。

ハッキングの変化

そういう中で特殊な条件でポロリと中身が見えたりすることがあります。それは偶然だったり、トラブルが起きた時にわかったりします。
注意して欲しいのは、重要な技術のひとつ「ソースコードを解析する」ということが、だんだん「出たトラブルを利用する」に変わってきたことです。

現在のプログラミングの技術は私と同年代以上のエンジニアすらよく理解していないことがあります。数多くのオブジェクトを作り、組み合わせます。そのオブジェクト同士の関連で思わぬことが起きることがあるのです。
遠い昔、COBOL(あ、今も一部では現役か)で上から下に一気呵成に流れていくようなプログラムは今ドキはよほど特殊な環境でなければありません。私の好きな指先に乗るくらいのチップでOS(オペレーティングシステム)すらない世界くらいにしか存在しません。
つまり、動かしてみなければわからないことも多くあるのです。

トラブルで見つかったセキュリティホール(そのとおり穴ですね)はひた隠しにするのはマズイので、マイクロソフトなどは毎月、公表しています。
それゆえ、そのトラブルを利用してコンピュータを不正にコントロールしようというプログラムを書くハッカーがいるのです。

大事なことはプログラムをじっと眺めておかしな点に気付いて、その弱点をつくプログラムを書く人間なんて今どき普通はいないってことです。
手間と成果が吊り合わないのです。

じゃ、絶対にいないかというと、そうでもありません。ちょっと前に某国の施設を攻撃するプログラムが知られました。某国の施設は当然、インターネットから切り離されています。そこで、周囲にはまったく害を与えない「攻撃プログラム」をインターネットで誰かがばらまいたのです。うかつなエンジニアがもって歩いていたUSBメモリーにもそのプログラムはありました。某国の施設につないだパソコンからそのプログラムは見事に目的を達成できたのです。
これは愉快犯のしわざではありません。プログラムは後に解析されましたが、プロの手によるものでした。つまりビジネスとしてやった、ということです。

ここで新しいことを私は指摘しています。ちょっと前まではハッキングは知的好奇心と技術には長けているが社会的には未成熟な人間が遊ぶものでした。
しかし、ビジネスとしてハッキングが成立する時代になったということです。

暗号

技術という意味では大事なことをひとつ指摘しておきます。暗号です。古来、暗号は作り手と解読者の間で熾烈な戦いがなされてきました。
第二次世界大戦のころにドイツが創りだしたエニグマという暗号機があります。解読したのはコンピュータの基礎理論を打ちたてたことで知られるイギリスのアラン・チューリングでした。その解読の課程を見ると、まさに天才でなければなせない技ばかりです。とはいえ、解読はされたのです。

現在は素数や楕円の数式を使った暗号が主流です。これらは解読可能であることは最初からわかっています。しかし、解読のためには莫大な計算量が必要なようにできています。現在のコンピューターでも数百年かかる、というものです。

ですから、解読できないわけではないし、もし誰かが新しい数学の定理を「発見」したら現在の暗号は破られる可能性はあります。もしくは、量子コンピュータが実用化され、飛躍的な計算速度が達成てきても解読されます。そういう前提のもとに現在の暗号化はなされています。
最近、秘密保護法で名前が出てくるアメリカのNSAはこういう事実上、解読不能な暗号の普及に非常に反対しました。

暗号自体はとても多く使われています。インターネットのブラウザーに鍵マークが出たりしますが、あれはすでにブラウザーとサーバーの間の暗号化です。もし、刻々と鍵を変えたらいくらCIAといえども解読は不能です。先に書いた計算量とそれに見合う成果というところで割にあわないのです。一般の人のお買い物でもそれほどのセキュリティが保つことが可能な時代です。
巷で見かけるワンタイムパスワードがいかに強力な暗号であるか、お分かりいただけるかと思います。これが前提だから、クラウドのサービスについて、あまりセキュリティが危ないなどと騒がないのです。
言い換えると暗号製作者の一方的勝利が現在です。

ナイトメアが指摘したもうひとつの「ソーシャルハッキング」について考えましょう。これはしばしば指摘される「パソコンにパスワードを付箋ではるな」という類です。しかし、本格的に調べるハッカーは対象となる人の生年月日、ペットの名前、新婚旅行の場所、などを調べます。こういうイベントはしばしばパスワードのヒントや、パスワードを教えてくれる「特別な質問」の参考になるからです。ゴミ箱も当然あさられます。しばしばパスワードを書いたメモが出てきますからね。

セキュリティエンジニアの実体

ここまででハッキングとその基礎技術について解説しました。
ここまででわかると思いますがハッカー自体はコンピューターの天才ではありませんし、コンピューターの隙をつくプログラムのネタはほとんど公表されたものばかりなのです。もしくはソーシャルハッキング。

それに対抗するセキュリティエンジニアの実態はというと、私はアルセーヌ・ルパンが言った言葉を思い出します。

『泥棒は芸術家だが、探偵は評論家」

つまりハッキングの具体的手法を考えるほうがレベルはやはり高いのです。セキュリティエンジニアはその手法を後からあーだ、こーだという人々です。
もっと困ったことにセキュリティエンジニアの多くはシステムというものを学ぶチャンスが少ないので、おかしなことを言うエンジニアも少なからずいます。

数年前ですが、コンピューターのメモリー上にデータが残るから対策しろ、という話が出ました。
あるプログラムが動いて重要な情報がメモリー上にあったとします。
しかし、そのメモリーからプログラムが消された瞬間、もうそのメモリーは管理されないのです。つまり読み取ることができたとしたら、たまたま読めたということであり、最初から情報を特定して読み取るのは、かなり大掛かりとなります。
例えるならば、東名高速道路を眺めていて、とある車のナンバーがわかった。さぁ、個人情報を握ったぞ、ということに近いといえると思います。

セキュリティエンジニアには、システムについてのバランス感覚を持って欲しいと思っています。それでなければ、よい評論家にはなれません。

法律

最後に法律の話を書きます。「不正アクセス行為の禁止等に関する法律」というものが平成11年に成立しています。
この法律は確かに不正アクセスを犯罪である、と定義した面では画期的でした。
が、技術的にどれだけ馬鹿げているかというと、不正アクセスをした人間には罰則規定がある一方で、システムを管理している人間には努力規定しかないのです。言うなれば、玄関に子供金庫の鍵でもかけておいて「あけちゃだめ」という意思表示をしていれば、それでいい、ってことです。

私はこの法律には、きちんとシステムを破られない努力をしなかった管理者にも罰則規定を作るべきだと思います。
驚くべきこととに、コンピューターシステムというものを扱うための免許というものは存在しません。ここが大きな問題だと思っています。

しばしば巷で、素人がよくわからないのをいいことに、法外な値段をふっかけて、低レベルな技術でシステムを作っているシーンに出くわします。
一級建築士のような資格はあるべきだと思っています。

そうしなければ、先のようなセキュリティエンジニアが出回り、無責任なことばかりを言うことになるからです。言った以上はそれなりのことをするのがプロというものだと思っています。

要約

新聞でしばしばハッキングについて出てきますが、ハッカーとはそんな大層な存在ではありません。逆のセキュリティエンジニアはもっと大層な存在ではありません。
普通の人が忘れてはいけないことは、「かける手間(コスト)と得られる成果」です。
スノーデンがCIAから大量の情報を盗み出しました。それは良い点と悪い点がありました。良い点はCIA、政府の違法行為の判明です。これは内部告発です。
悪い点はそれを関係ないウィキリークスに持ち込んだ点です。これは不正アクセスとなります。この意味をよく考えてみてください。

関連記事

  1. 俺がITで学んだこと(大量のデータの管理)

  2. ベイズの定理

  3. 山口周さんの「ビジネスの未来」

  4. リストラされた人へ

  5. レイヤー(俺がITで学んだこと)

  6. 日本のIT業界の本を信じてはダメ

  7. 伝統的な統計学は別に最強じゃない

  8. コンピュータとネットワーク音痴のSONY