頻発する「パスワード流出事件」。報道に出てくる、「平文」「暗号化」「ハッシュ化」って何?

パスワードから求められる計算結果を保存する「ハッシュ化」

 ハッシュ化では、パスワードを復元可能な状態で保存しない。パスワードから、ハッシュ値と呼ばれる値を計算で求めて、その値を保存する。たとえば、sha256というアルゴリズムでは、「password」という文字列から「5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8」というハッシュ値が求められる。  ものすごく平易化した例で言えば、「1234」というパスワードから「1+2+3+4 = 10」という値を求めるようなものだ。10から1234というパスワードは復元できない。しかし、ログイン時に1234というパスワードが入力された際、それが正しいかは計算結果の10と照合すれば確かめられる。  実際には、求められるハッシュ値は、とても長い値で、複数のパスワードで同じ計算結果になる頻度は低い。自分でも元のパスワードが分からないのだから、盗まれても大丈夫というわけだ。平文や暗号化よりも安全な方式だと言える。  この場合は、パスワードを忘れた場合に、元のパスワードをメールで送ったりはできない。新しいパスワードを登録してもらう必要がある。最近、メールでパスワードが送られてこないのは、こうした理由があるからだ。

ハッシュ化したパスワードの突破とイタチごっこ

 パスワードを自分でも知らないのだから漏洩しようがない。そう考えたくなるハッシュ化だが、必ずしも安全というわけではない。  たとえば「1234」というパスワードが必ず「10」に変換されるならば、10という値が保存されているユーザーのパスワードは1234である可能性が高いということになる。世の中の多くの人は、単純なパスワードを利用している。「123456」「password」「qwerty」といった、多くの人が利用しているパスワードをわざと登録して、同じ値の人を探せば、同じパスワードを利用していると推測できる。  極めて単純な例を紹介したが、このように攻撃側は、様々なアイデアでセキュリティを突破しようとする。そうした攻撃を避けるために、保存する値が同じにならないように、ユーザー毎に個別の値を付加する工夫や、データ流出後にオフラインで計算して破られないように、計算を複雑化する工夫などが存在している。ここまで来ると、技術者向けの専門的な話になるので割愛する。  データは漏洩する可能性がある。漏洩したデータは解読される危険がある。  個人情報やパスワードは、基本的に漏れるものと腹をくくり自衛するべきだ。サービスごとにパスワードを変える。パスワードを長くする。英数字だけでなく、記号を使えるなら記号混じりにするなど、様々な方法が、各所で紹介されている。  そうした個人で採れる対策をしていない場合は、すぐにやっておいた方がよいだろう。 <文/柳井政和> やない まさかず。クロノス・クラウン合同会社の代表社員。ゲームやアプリの開発、プログラミング系技術書や記事、マンガの執筆をおこなう。2001年オンラインソフト大賞に入賞した『めもりーくりーなー』は、累計500万ダウンロード以上。2016年、第23回松本清張賞応募作『バックドア』が最終候補となり、改題した『裏切りのプログラム ハッカー探偵 鹿敷堂桂馬』にて文藝春秋から小説家デビュー。近著は新潮社『レトロゲームファクトリー』。
やない まさかず。クロノス・クラウン合同会社の代表社員。ゲームやアプリの開発、プログラミング系技術書や記事、マンガの執筆をおこなう。2001年オンラインソフト大賞に入賞した『めもりーくりーなー』は、累計500万ダウンロード以上。2016年、第23回松本清張賞応募作『バックドア』が最終候補となり、改題した『裏切りのプログラム ハッカー探偵 鹿敷堂桂馬』にて文藝春秋から小説家デビュー。近著は新潮社『レトロゲームファクトリー』。2019年12月に Nintendo Switch で、個人で開発した『Little Bit War(リトルビットウォー)』を出した。2021年2月には、SBクリエイティブから『JavaScript[完全]入門』、4月にはエムディエヌコーポレーションから『プロフェッショナルWebプログラミング JavaScript』が出版された。
1
2
3