SSL通信で個人情報が筒抜け? カード明細に見知らぬ購入履歴


 ネットショッピングの際にクレジットカード番号や銀行口座などの情報を入力し、送信することにためらいを感じる方は、まだ少なくないかもしれません。「個人情報が悪用されて身に覚えのない請求が来た」といったような類の話も、一度は耳にされたことがあるのではないかと思います。

 しかし現在では、クレジットカード番号や個人情報などを扱うウェブサイトの多くは、通信中のデータが第三者に傍受されないようにするために、送受信するデータを暗号化しています。今回は、インターネット上でデータを暗号化して送受信する方法、SSL(Secure Sockets Layer)通信に関する“落とし穴”を紹介します。

SSL通信なら本当に安全ですか?

 日ごろ忙しくて買い物にも満足に行けない会社員のAさんは、最近ネットショッピングの便利さにハマりました。わざわざ出かけて買い物をするのがバカバカしい、とまで思うようになったAさんは、買い物のほとんどをオンラインで済ませるようになりました。

 ある日Aさんは、大好きな映画の限定キャラクターグッズが発売されたことを同僚から教えてもらいました。さっそくAさんは、愛用しているオンラインショップで検索しましたが、そのショップでは取り扱っていません。別のショップで検索してみたところ、今度は売り切れ。こうなると余計に欲しくなるもので、Aさんはさらにネットを検索していると、そのグッズを「在庫あり」としているショップを発見しました。

 オンラインショッピングに慣れているAさんは、いつものようにそのグッズをカートに入れ、決済のページに移動します。すると、情報を入力するページで、「このWebサイトのセキュリティ証明書には問題があります」という警告画面が出てきました。

 Aさんには、具体的な問題点が何なのかがわかりません。とりあえず、「続行しますか」という警告画面の問いかけには「いいえ」のボタンをクリックしましたが、次に飛んだ先のページは、情報入力のページでも決済確認のページでもありません。

 「こうしている間にも売り切れてしまう」と気が気ではなくなったAさんは、「小さいショップっぽいし、サイトが古いせいで警告が出たんだろう」と考え、いったん先ほどのページに戻り、今度は「はい」をクリックし、その先に進んで決済を完了しました。

 しかし、それから何日経ってもグッズは届きません。しかも、クレジットカードの請求書には何やら身に覚えのない購入履歴が。まさかと思いAさんは、そのグッズを買ったサイトで運営者の連絡先を探しますが、どこにも記載されていませんでした。

SSL通信の重要な要素は「証明書」と「カギ」

SSLに対応しているウェブページによっては、URLの最初の部分が「http://」ではなく、「https://」で始まっているものがあるほか、錠前のアイコンが表示されることもある

 Aさんがはまった“落とし穴”を説明するにあたって、まずはSSL通信の仕組みを紹介します。SSL通信というのは、ざっくりと言えば、送信するデータを暗号化し、その暗号を解読(復号化)するためのカギを持っている相手以外には内容がわからないようにする技術です。

 ホームページを公開しているウェブサーバーと、皆さんが使っているブラウザーは一般的に、HTTP(HyperText Transfer Protocol)というプロトコルで通信を行っていますが、このHTTPには、通信を第三者がのぞき見したり、フィッシングサイトのように他のウェブサーバーに成りすますといったことを防止する仕組みはありません。そこで開発されたのがこのSSLという仕組みです。

 お気づきの方もいるかもしれませんが、ウェブページによってはURLの最初の部分が「http://」ではなく、「https://」で始まっているものがあります。これが「SSLによる暗号化を行っているページ」という目印になります。それ以外にも、「SSL通信を行っている」といったような表示が出たり、錠前のアイコンが表示されることもあります。

 このSSL通信による暗号化には、「証明書」と「カギ」という2つの重要な要素があります。

 まず「証明書」とは、SSL通信に対応しているサイトを訪問した際に、そのサイトのウェブサーバーがブラウザーに送信するものです。証明書は「そのサイトが詐欺サイトではなく、信用できる本物のサイトである」ということを客観的に証明するもので、「認証局」と呼ばれる第三者機関が発行するデジタル署名付きの証明書を用意します。もちろんデジタルの世界での話ですから、証明書と言っても紙ではなく「デジタル証明書」と呼ばれる電子データです。

 皆さんがこうしたサイトでSSL通信を行おうとした場合、ウェブサーバーはこの証明書に基づいた「カギ」にあたるデータを、皆さんが使っているブラウザーに送信します。もう少し正確に言えば、「公開鍵」と「秘密鍵」という2つのペアとなる鍵のうち、「公開鍵」と呼ばれるものを送信しているのです(公開鍵は暗号化を行うためのカギ、秘密鍵は復号化を行うためのカギになります)。

 皆さんがお使いのブラウザーがこれらを受け取ると、まずブラウザーはその証明書にあるデジタル署名が本物であるかどうかを確認します。本物であると確認が取れたら、同時に受け取っているカギ(公開鍵)を使ってデータを暗号化し、そのサーバーに送信します。サーバーはそれを受け取り、カギ(秘密鍵)を使って復号化する、という流れになっています。

 こうした仕組みによってSSL通信では、皆さんが送信しているデータは、自分(ブラウザー)と相手(サーバー)以外の第三者(例えばプロバイダーなど)がのぞき見ることができない(のぞき見たとしても内容が解読できない)ようになっているのです。

 さらに言えば、秘密鍵を持っているサーバー以外は誰も内容を解読できず、証明書によって、通信を行っているサーバー自体も信頼できるサイトであると判断でき、安全な通信を確保できるというわけです。

 このように、SSL通信によってウェブ上でクレジットカード番号などの重要な情報をやり取りしても第三者には知られないような仕組みを整えているサイトは、ある程度安心して利用できるように思えます。最近ではウェブメールのようなプライベート情報をやり取りするサービスもSSL化されているケースが増えていますし、SSL通信は非常に広く使われるようになってきました。

SSL通信なら本当に安全ですか?

 いわゆるフィッシング詐欺と呼ばれる犯罪、つまり、あたかも本物の有名サイトのように見えて、実は全く別の悪意ある人物が運営しているサイトに誘導し、そこで個人情報を入力させるといった犯行は、皆さんも一度は耳にしたことがあるでしょう。

 一番厄介なケースでは、たとえば本物の有名サイトが「www.xxxxx.net」だったとして、悪意ある第三者が「www.xxxxx.com」というURLで本物と同じようなサイトを作り、この偽サイト「www.xxxxx.com」が「本物の偽サイトであること」を証明する「本物の証明書」を認証局から取得した場合が考えられます。このようなケースでは、SSL通信的には何の警告も出ません。

 ややこしい話ですが、この場合の証明書は、このサイトが偽サイトの「www.xxxxx.com」であることを証明しているのであって、本物の有名サイト「www.xxxxx.net」であるという証明をしているわけではないのです。つまりフィッシング詐欺では、SSL通信的にはブラウザーが警告を出さない場合もあるわけです。

 これを避けるには、認証局が、紛らわしいURLなど怪しいサイト運営者に対して安易に証明書を発行しない、運営者はURLの見えないボタンなどのハイパーリンク付きメールは送らない、ユーザーは怪しいメールのリンクからは決してサイトを利用しない、といったような全体での取り組みが必要でしょう。

 しかし、Aさんがはまった“落とし穴”はもっと単純な話です。

 先ほど、SSL通信では「証明書」と「カギ」の2つが重要な要素であると書きました。ここでの問題は「証明書に問題がある」という警告の話です。

 証明書は、認証局の署名があって初めて「客観的な証明」としての有効性が生じます。しかし、証明書には自分で発行する自己証明書も存在するのです。自己証明書は例えば、お互いが知人同士で他人に見られないようSSL通信を行ったり、社内の限定されたネットワーク内でSSL通信を行うような場合であれば、問題はないでしょう。認証局の署名付き証明書は通常、無料ではありませんし、実際にこうしたケースで自己証明書が使われることは少なくありません。

 しかし、見知らぬ相手が運営するサイトの証明書が自己証明書では、いったい何の証明になるというのでしょう。ましてや、その証明書(の署名)が偽物であったなら……。

 今回のケースでは、悪意のある人が運営するサイトにおいて、うかつにも署名のない証明書や偽の署名の証明書で行われるSSL通信を利用してしまった、というのがトラブルの原因となりました。これは自己責任と言えますが、残念ながらこうしたケースで表示される「警告」が何を問題だと言っているのか、どういう状況でどういうリスクがあるのかが非常にわかりにくい、というのもまた事実でしょう。

 ブラウザーのようなソフトウェアに限らず、モノづくりにおいて広く一般に使ってもらえるような製品かどうかを表す指針、戒めとして使われている言葉に「Grandma's Test」という言葉があります。

 これは読んで字のごとく、何も知らないおばあちゃんが正しく使えるモノでなければ、製品として成立するレベルのものではない、そのレベルまでユーザビリティー、分かりやすさに気を遣え、という戒めの言葉です。

 ブラウザーを含む各種ソフトウェアのバージョンが上がる度に、このSSL証明書の問題を含めこうした「警告」の表示は大きく、より目立つようになっているように感じます。しかし、はたしてそこに書いてある文章の表現もまたわかりやすく変わっていると言えるでしょうか。「Grandma's Test」をパスする、と自信を持って言えるほどに。この事例は、我々業界の人間が考えなければいけない、とても大きな問題をも含んでいるように、私には感じられます。

 こうした問題を何とか避けるためには、残念ながら今はユーザーである皆さんにも、今回のSSL通信がどういうものなのかといった仕組みを含めた知識を頭に入れ、それらが抱えるリスクも知り、かつ「自分の身は自分で守る」という気持ちを持っていただかなくてはなりません。私の文章が、少しでも皆さんのトラブル回避の手助けになれば幸いです。


関連情報

2010/8/16 12:03


中山 貴禎
好奇心の赴くまま、様々な業種・業界を自由気ままに渡り歩いてきた自由人。現在はネットエージェント取締役。基本はジェネラリストだが異常なまでに負けず嫌いで、一度興味を持ったモノに対しては極めないと気が済まない。常識よりも自分の感覚を優先するが、自己主張よりも調和を重んじる。前世はきっと猫。