サイバー攻撃の脅威が広まる中、Webシステム管理者はパスワードの保存方法をいま一度確認する必要がありそうだ。特に注意すべきなのは、最新のWebアプリケーションフレームワークを使わずに開発した、古いWebシステム。パスワードが漏洩した際に簡単に解読されてしまう可能性があるので注意が必要だ。
2023年8月15日、作品投稿サイト「pictBLand」やオンライン即売会サービス「pictSQUARE」を運営するGMWが不正アクセスを受けたと発表した。pictBLandは作品情報のデータが改ざんされ、pictSQUAREでは会員情報が窃取されていると判明。ユーザーアカウント情報が約80万件流出し、メールアドレスは約61万件、電話番号は約67万件、配送先住所は約22万件、銀行口座情報は883件、X(旧Twitter)のIDは約24万件が流出したという。GMWはユーザーに対して、IDやパスワードを使い回している場合は即座に変更するように呼びかけた。
同時にSNS(交流サイト)などで話題となったのが、ダークウェブ上でpictSQUAREから流出したパスワードが販売されている可能性だ。しかもパスワードの解読防止策として比較的脆弱なハッシュ化手法であるMD5(Message Digest algorithm 5)関数を使っており、「ソルト」と呼ぶ解読防止策も使っていなかったという。
MD5なら数時間で解読可能
Webシステムに利用するログインパスワードは、データベースにそのまま保存することは少ない。漏洩すると、即座に不正利用されてしまうからだ。パスワードが漏洩してしまった場合は、ユーザーに通知して、ユーザーがパスワードを変更するまでの時間をかせぐ必要がある。そのためパスワードをハッシュ関数でハッシュ化し、得られたハッシュ値をデータベースに保存する。ユーザーを認証する際もこのハッシュ値を利用する。
同じデータから得られるハッシュ値は常に同じ結果になる。またハッシュ値は元に戻せない不可逆性という特徴がある。ハッシュ値ならば、攻撃者が元のパスワードを把握しづらい。社内のシステム管理者であってもパスワードを把握できないというメリットも得られる。
しかしEGセキュアソリューションズの徳丸浩CTO(最高技術責任者)は「MD5で得られるハッシュ値では、数時間で元のパスワードを解読できてしまうこともある」と説明する。インターネット上には「Hashcat」といったハッシュ値から元データを解読するツールが出回っている。こうしたツールを使えば、一般的なパソコンで解読可能だという。
高速な解読を可能にするのが、GPU(画像処理半導体)の進化だ。コアの数が多いGPUは総当たりの計算が得意である。現在は一般的なパソコンにも高性能なGPUが搭載されていて、解読ツールもGPU利用に最適化されているという。このため、もはやMD5によるハッシュ化はほとんど意味がない。徳丸CTOは「8文字のパスワードであれば、個人のパソコンでも3時間程度で解読できる」と説明する。
MD5以外のハッシュ関数も解読された事例はある。例えばSNS「LinkedIn」の事例だ。LinkedInでは2012年に約650万件のハッシュ化されたパスワードが漏洩した。ハッシュ関数にはSHA-1が使われており、「MD5のように高速には解読できないが、当時でも1週間で漏洩したパスワード全体の8~9割程度を解読できたとするエンジニアがいた」(徳丸CTO)。コンピューターリソースが潤沢な現在であれば、さらに短い時間で解読できるはずだ。
ソルトやストレッチングは基本
現在の主要なWebアプリケーションフレームワークでは、ハッシュ値の逆算が難しい「Bcrypt」や「Argon2」といったハッシュ関数を利用している。しかしこうしたハッシュ関数を使ってもパスワードを解読される可能性は残る。そこで有効なのがソルトや「ストレッチング」という方法だ。ハッシュ値の解読を難しくするハッシュ関数の利用と組み合わせて、攻撃者にコンピューターリソースをより多く使わせることで、パスワード解読に時間がかかるようにする。