2014年4月11日金曜日

まさに血を吹く心臓。ネット業界震撼の「Heartbleed」ってどんなもの?


問題は1行のコードに。

パスワードやメール内容、決済情報など、暗号化されるはずのデータが筒抜けになってしまうバグ「Heartbleed」が発見されました。カナダ政府が確定申告サービスを閉鎖するほどの緊急事態になっていますが、実際どんな仕組みのバグなんでしょうか? 米ギズのエリック・ライマー記者が、コードの核心部分についてわかりやすいメタファーで解説してくれています。

 

Heartbleedがどんなものかざっくりいうと、OpenSSLという、コンピュータとサーバにお互いの素性を知らせ合うためのセキュリティプロトコルのバグです。このOpenSSLのバグのために、米Yahoo!やFlickr、Imgurといったサイト(リストはここに)が数年間セキュリティ面で脆弱な状態のままになっていて、それを知っているハッカーならデータ取り放題の状態になっていたのです。

OpenSSLはオープンソースプロジェクトなので、誰でもコードの閲覧が可能です。なので、その気になればコードの意味を知らなくても、Heartbleedが生まれた場所やどこが修正されたのかも、把握できてしまうのです。

誰もが見られるコードなのに、Heartbleedが何年も発見されなかったのは驚愕に値します。2年間も気づかれないまま、経験豊富なプログラマーにすら知られていませんでした。でもいったん見つかってみると、問題は非常にクリアでシンプルです。

Heartbeatの仕組み


Heartbleedは、インターネットを暗号化するための基本的な技術であるTLSやSSLの問題ではありません。また、理論上はOpenSSLそれ自体の問題でもありません。単なるコーディング上のミスだったのです。

サーバとクライアントというふたつのコンピュータが暗号化のための握手をするとき、その準備として「Heartbeat」と呼ばれる手順が行われます(「Heartbleed(血を吹く心臓)」という怖い名前はここから来ています)。

Heartbeatは、ふたつのコンピュータがお互いの生存を確認するための手段で、これがあることで、処理の途中で問題が起きた際に進行を止めることができます。

クライアント(ユーザー)がHeartbeatをサーバ(たとえば銀行)に送ると、サーバはそれをすぐに返してきます。これで、取引の間に何か問題があったとき(たとえばどちらかのコンピュータがいきなり爆発したときなど)、Heartbeatが途切れることで相手側のコンピュータも異常に気づくことができるのです。

0 comments:

コメントを投稿