パスワードをハッシュ化(暗号化)保存することを法律で義務化するくらいのことが必要だと思う

大げさだろうか。でも大げさとは思えないくらい、今の状況はおかしい。 おかしいという意識がWeb屋にもマスコミにも行政監督者にも無いという状況はもっとおかしい。

ヤフオク「ID乗っ取り」で不正出品、被害は5000件に (Internet Watch 2008-09-26)
ヤフオクでID乗っ取り5000件 ヤフー、不正出品の被害補償へ (ITMedia News 2008-09-26)

上のように報道されている、2008年夏に発生したこのコンピュータ犯罪(不正アクセス禁止法違反)の流れはこうだ。

  1. たくさんのユーザーがヤフーのWebサイトでユーザー登録する。好きなようにYahooIDとパスワードを設定する。ヤフーのサービスの中でもヤフーオークションを使いたいひとはさらにしかるべく手続きをする。(手続きなしでいきなりヤフオクを使える例外もある)
  2. たくさんのユーザーはヤフー以外のWebサイトでも同じようにユーザー登録する。アマゾン、mixi、楽天のような有名サイトから、小さな化粧品販売サイト、アウトドア用品販売サイト、絵本販売のサイト、、、、人によって好みのサイトは違うが、とにかく数え切れないぐらいだ。それらサイトでのIDとパスワードをやはり好きなように登録できるとして、IDはともかくパスワードはヤフーで使ったパスワードとまったく同じものを使ってしまう人が非常に多い。違うパスワードを使い分けるのは面倒くさい、記憶するのが大変、という理由で。ただしその行動は「パスワードを(ここではヤフー以外の)第三者に教えてはいけない」というごく一般的な常識に反する行為である。 このことに気づいてない人が多いようだけど、実はこれが事件の原因その一。
  3. それらヤフー以外のWebサイトでは、パスワードをハッシュ化(暗号化)して保存するという、コンピュータ技術的には本来必ずやるべき処理をまったくやっていないケースが多々あり、そういう処理や方針が必須という意識すら無いWebサイト運営者や技術者が同様に多々存在する。 結果として平文のパスワードがそのまんまデータベースに蓄積されてゆく。これが事件の原因その二。
  4. SQLインジェクション攻撃やその他種々の不正な技術手法によって、ヤフー以外のWebサイトで、ユーザー情報が数万人とか数十万人といった単位で丸ごと漏れ出す事件がここ数年で続発した(事例については後述)。上に述べたようにそこには住所氏名クレジットカード番号のような情報だけでなく、そのサイトでのユーザーIDやメールアドレスそしてなによりも、平文のままのパスワードが含まれていた。これが事件の原因その三。
  5. 犯行グループは、いろんなサイトへの不正アクセスでまんまとかき集めた大量のユーザー情報をもとに、他人のヤフーIDとパスワードを使ってヤフーオークションに偽ブランド商品を出品した。オークションシステム使用料金は当然そのIDの持ち主に請求された。 正直言って効率のいい犯罪手法とは思えないけど、中華系DQNの行動なんて読めるものじゃない。
  6. 犯行グループはヤフーIDをどうやって知るか?だが、
    • どうやってもなにも、ヤフー以外のサイトで使っているIDが実はヤフーIDとまったく同じであることは多いだろう。
    • たとえばアマゾンのように、ユーザーIDの概念が無くメールアドレスをID代わりに使っているケースであっても、たとえばメールアドレスがabc@example.ne.jpの人は実はabcの部分がそのままヤフーIDであることが多いだろう。abc@yahoo.ne.jpというメールアドレスであればなおさらその可能性は高い。
    流出した情報をもとにすればこのようにしてYahooIDを容易に推測できる。そしてパスワードは同時に流出した平文のままのパスワードをそのまま使えばいい。 あとは数で勝負だ。もとの情報が何十万件もあれば、そのうち何千件かはヤフオクを使えてしまう=乗っ取り成立。

いくつかポイントを挙げてみよう。

今回のパスワード情報の漏洩元は何を隠そう「ユーザー本人」である。

一番最初に「パスワードを第三者に漏らしてはいけない」という厳守すべき一般常識を破ったのはユーザー自身に他ならないのだから、ここはきちんと認識しておくべきだろう。 「言いすぎじゃないか?かわいそうだ。実際のところパスワードの使いまわしはしょうがないでしょ?」という気持ちはわかるが、「しょうがない」なんていう台詞は通用しないのがビジネスであり世間の冷たさであり社会というものだ。

  • 10年前とは比べ物にならないくらい沢山存在するWebサイト
  • そうした沢山のWebサイトで同じパスワードを使いまわす人の存在
  • 事件がおきたサイト(ここではヤフー)からパスワードが漏れたんだ!と勝手に信じ込んで自分のブログやら掲示板やらにまことしやかに書くばかりでなく、最初に第三者にパスワードを漏らしたのは自分自身であるという非は認めないどころか気づきもしない人の存在

上のような書き方は反感を買うだろうが、しかしこれが現実だ。 そしてこうした人をもユーザーとして許容せざるをえないのも現実。 ユーザー認証という目的のためのパスワードという手段の限界と考えることもできるだろう。 しかしパスワード以外に安価で利便性の高い方法がなく、今後も多くのWebサイトでパスワード式の認証が使い続けられることもまた現実である。

さて、今回の着目点は以下だ。

20年前からある安全なパスワード管理手法を全く活用していないWebサイトが驚くほど多い。

ここで、はじめに説明した「三つの原因」をもう一度おさらいする。

  1. パスワードを第三者に教えてはいけないという一般常識に反して多数の異なるWebサイトのユーザー登録の際に同じパスワードを設定してしまうユーザーが多数いること。
  2. パスワードをハッシュ化(暗号化)して保存するという、コンピュータ技術的には本来必ずやるべき処理をまったくやっていないWebサイトが多々あり、そういう処理や方針が必須という意識すら無いWebサイト運営者や技術者が同様に多々存在すること。
  3. SQLインジェクション攻撃など、新種の不正手段(実は技術的には新しくもない手段)によってユーザー情報を数十万人単位で丸ごと流出させてしまう脆弱なサイトが多数存在すること。(予備軍含め)

1番についてはもうあきらめるしかないのだろう。無知なマスコミいやマスゴミがユーザーを責めることを許さないという状況もある。 3番については最近クローズアップされ、対策強化が叫ばれている。

しかし2番については、おどろくほどみな無頓着で、関心がなく、理解も焦りも無い。 パスワードというものは実はユーザーが入力した文字列をそのまま(平文のまま)データベースに保存するのではなくハッシュ化(暗号化)して保存すれば用を成すことができる。外部攻撃であれ内部犯行であれ万が一漏洩した場合でも平文ではないので乗っ取り犯罪の発生確率を極小化することができるのに。

案の定というか残念ながらというか、上の一連の記事を書いた4年前から現在に至るまで、状況がまったく好転していないどころか悪化している。数十年前からコンピュータの世界で常識的に利用されているはずのパスワード管理手法が、ここ数年急増した多くのWebサイトではまったくといっていいほど定着していない。定着していないことを指摘する業界人や業界マスコミすらものすごく少ない。絶望的な状況だ。

有名デパート「高島屋」が「21番目の店舗です」と胸を張るタカシマヤオンラインショッピング。 つい最近もファッションに特化した TAKASHIMAYA FASHION MALL(タカシマヤ ファッションモール)をこの9月にオープンさせた。ユーザー認証システムは本家のサイトと共通だ。新規会員登録をし、そのときパスワードを「7dk9icfr」にした。(注:本記事を公開する直前に変更済み) パスワードを忘れたことにして、パスワードリマインダというページから手続きをすると、次のようなメールが届く。

Subject: 【タカシマヤオンラインショッピング】パスワード確認メール
From: webmaster@takashimaya.co.jp
To: (筆者のメールアドレス)

ヤマダ様

この度はタカシマヤオンラインショッピングをご利用いただきまして、
誠にありがとうございます。

パスワードをお知らせいたします。
─────────────────────────────────
■パスワード
7dk9icfr
─────────────────────────────────
*このメールに覚えのない方は、お手数ですがメールにてお知らせください。

今後ともタカシマヤオンラインショッピングを宜しくお願いいたします。

タカシマヤオンラインショッピング カスタマーセンター
(以下略)

日経BPパスポートにおいてもまったく同じようにしてパスワード忘れ対応機能を使うと、こうなる。

Subject: [Nikkei BP passport ID等のご連絡]
From: scpp10@nikkeibp.co.jp
To: (筆者のメールアドレス)

================================================= NikkeiBP Passport ===

■ 日経BPパスポートからのお知らせ(ID/パスワードのご連絡) ■

=======================================================================

日頃「日経BPパスポート」をご利用いただき誠に有難うございます。
あなたのユーザーID、パスワードは、下記で登録されています。

     ユーザーID: (筆者のメールアドレス)
     パスワード: 7dk9icfr

このメールはインターネット経由で送信しています。
セキュリティ上、上記パスワードは変更されることをおすすめします。
パスワードは下記の「メンバー情報の変更」ページで変更することができます。
変更後のパスワードは、メモをとるなどして大切に保管してください。

日経BPパスポートの各種サービスへは下記からお進みください。
-----------------------------------------------------------------------
●メンバー情報の変更
https://passport.nikkeibp.co.jp/servlet/UpdateUserTopServlet
(以降省略)

タカシマヤの中の人も日経BPの中の人も、その他のサイトでも身に覚えのある人すべて、恥を知るべきだろう。

  1. お客様のパスワードをハッシュ化(暗号化)保存していないことを自らさらけ出している。
  2. 「えっ!?どこがいけないの?」と思っているんじゃないだろうか。おかしなことをやっているという意識がまったく無いと思われてもしょうがない。タカシマヤは純情無垢のお坊ちゃまだ。
  3. 日経BPの場合は、「セキュリティ上、上記パスワードは変更されることをおすすめします。」と書き添えてユーザーに責任転嫁すればOKと思っているところが逆にひどい。

こうした実態こそが「知らないことの恐ろしさ」あるいは「知らないということを知らない恐ろしさ」だ。

こうなってからパスワードの平文保存の怖さを学んでも後の祭りなんだよ?

65万件のID、メルアド、平文パスワードが流出したナチュラム。最後の一文に激しく同意。

パスワード管理は自己責任 - りょすけ?d 2008-8-11 

ナチュラムの個人情報漏洩事件ですが、パスワードが平文だったのかどうかの質問メールに対して、ようやく返事がきました。
お客様情報の暗号化につきましては、 性別、家族構成等、弊社固有の管理コードで管理されていた一部をのぞき 対象の期間当時、暗号化が施されておらず、 お客様の情報を預かる身として重大な欠陥であったと責任を痛感しております。 誠に申し訳ございませんでした。
まあ、平文だったそうです。 いろんなサイトでパスワードを変更中の俺・・・*1 Firefoxが覚えてるサイトだけでも100を越えてます・・・変更完了終わるのはいつになるやら・・・ 複数サイトでパスワードを使いまわすのはヤメましょう! って理屈はわかるんだけど、共通の使っちゃうよね・・・*2
(途中省略)
やっぱり個人情報保護法なんかで事業者はパスワードを平文で保存しちゃダメってことにして欲しいような

やはりパスワードの平文保存が裏目に出たサウンドハウス。9万件が流出。

「被害を隠すな」サウンドハウス社長が不正アクセス体験語る (Internet Watch 2008/6)

サウンドハウスによれば、攻撃者は、カード決済で使う本人認証システム「3Dセキュア」を導入しているゲームサイトにおいて、クレジットカード番号と、サウンドハウスのサイトのパスワードをマッチングさせて本人認証を通過。その後、金券や商品を購入してRMT(Real Money Trade)などのサイトで転売するなど、足が付かないかたちで換金していた。中島氏は「ここから先は推測」と前置きした上で、「金銭的被害者の大半は、サウンドハウスのパスワードとその他のパスワードを同一にしていた人」としている。

パスワードの平文保存の危険性をあとになって認識し細々と告知する化粧品屋さん。2万件が流出

不正アクセスに関するお詫びとお知らせ (オズインターナショナル 2008/5)

5. サイト、携帯、その他で「同一パスワードを使用している人」は2重、3重のパスワード管理が無意味になりますので、出来るだけ早く全て違うパスワードに変更することをお勧め致します。

その他もろもろ、不正アクセスでユーザーデータベースが丸ごと流出したことに気づいてすらいないWebサイトの存在も考えると、この65万件+9万件+2万件=76万件ですら氷山の一角いや1cmくらいかもしれない。

それから、ユーザーが入力したパスワードをそのまま画面上やメール上に書いてしまうというおまぬけなWeb屋さんならまだかわいい。しかし、

  1. データベース上のパスワードは平文保存のままのくせに、
  2. パスワード忘れ対応機能は「新しいパスワードを強制再設定」や「ワンタイムURLを使ったパスワード再登録画面」を使うことで、
  3. 自分の考えたパスワードが平文保存されているか否かをユーザー側からは見分けつかなくする。
という目くらましな逃げ道をとる輩は必ずいるだろう。

とにかく、パスワードを平文で保管するシステムを作ったり運用したりしている人間は、すごく恥ずかしいことをしているんだということを自覚するべきだ。がしかし、現場の良心に訴えてもカネと時間を与えなければ何も起きやしない。 しかもこの件は業界全体にわたってやらないと効果が薄い。

だからこそ、行政機関や業界団体の出番だと思う。 法律で義務化ってのは無理だろう。すくなくともすぐには絶対にできない。 だとすれば、いっそのことパスワードのハッシュ化(暗号化)保存のための仕様変更に助成金を出すことから始めるってのはどうだろう?

単なるばら撒きにならないように、仕様書や実機の確認とそのためのオブザーバーの派遣も助成の条件に含めるのがいいだろう。 わかっていても予算が下りなくて実行に移せない「中の人」による内部告発を奨励するのもいいかもしれない。

この「恥をしのんで正直に申し出た人にはそれを直すためのお金を上げます」っていう作戦は、 「にっぽんe物産市」(仮称)とかいうデジタルハコモノ行政にカネをばらまいたりするよりもよっぽどIT系産業に向けた税金の使い道として有意義だと思う。 社会不安を招くようなシステムや仕組みを退治するという意味においては、「モバゲータウンを健全サイトと認定します」「だからなに?」的なアリバイづくりよりも、ずっといい。

see also:

なお、はじめは、 一般ピープルな人にもわかりやすかろうと思って「ハッシュ暗号化」という単語を使っておりましたが、やめとけという声がやはり多いようなので、 「ハッシュ化(暗号化)」という単語に置換しました。なんでそんなまどろっこしい言い方に?という件については、 こちらの過去記事をごらんください。 あ。過去記事では「暗号化(ハッシュ化)」って書いてあることにいま気づいた俺。。。

トラックバックURL

このエントリーのトラックバックURL:
http://www.ywcafe.net/mt/mt-tb.cgi/899

コメント

某@が付く大手プロバイダさんの接続パスワードも平文で管理されてて、がっくりきました。

はじめてコメントさせていただきます。
「ネタ帳」として有用な記事が多く、以前から拝見させていただいておりました。
さて、今回の記事後半のパスワードリマインダーの実験ですが、現在開催中のCEATEC Japan入場者登録でも同様に登録したパスワードがメールで送り返されてくることを確認しました。(重要なメールにPGP暗号をかけていないとか、とりあえず置いておいて)

ところで、CEATEC公式サイトによると主催団体は以下の通りのようです。

情報通信ネットワーク産業協会(CIAJ)
社団法人電子情報技術産業協会(JEITA)
社団法人コンピュータソフトウェア協会(CSAJ)

各団体の業界内での影響度は把握していませんが、名前からして情報産業を専門にしている団体が主催している公式サイトでこの体たらくなので管理者様のおっしゃることはその通りだと思います。

開催中でタイムリーな話題だと思ったのでつい勢いでコメントさせていただきました。

CEATECに関しては見学に行く予定があるので、そのときについでに現地の事務局に直接この件について問い合わせてみようと思います。

内容に関しては 99% 同意です。

1%反論しておくと、パスワードをハッシュ(管理者も復元できない)にしてサーバ側で保存する場合、いわゆるダイジェスト認証ができなくなる、という問題があります。たとえば、HTTP Digest とか CRAM-MD5とか。

パスワードをハッシュ暗号化した場合は、どうしても認証時に平パスワードをネットワークで送る必要がでてしまいます(もちろん、SSL の暗号トンネルの中は通すわけですが)。ダイジェスト認証ならこういう必要はない。通信上は、ダイジェスト認証のほうが望ましいわけです。

なので、平文でパスワードを保存するのは論外としても、復元できない形(ハッシュ)でしかパスワードを保存するな、というのは必ずしも正しくないと思います。

ISPへの接続パスワードが平文に戻せるようになってるのは、CHAP使ってるからだと思う。

ウノウの「映画生活」も平文ですが、サイト上には「ウノウ株式会社はプライバシーマークを取得しています」(ユーザー登録のページ)と書いてあります。
そんなもんなんでしょうか。

コメントする

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)


画像の中に見える文字を入力してください。