2018年08月27日に初出の投稿

Last modified: 2018-08-27

Password Generator

この人物については、確か Google から都内のベンチャーに移籍したという話題が hatena に出ていたのを覚えている。なるほど、業績としてきちんと書いてあるのが納得できるほど優れた人物であることは分かるが、こんな程度の低いパスワード生成プログラムを公表し続ける意図が分からない。「base64_encode( hex2bin( md5( password + "@" + domain) ) ) から英数字以外を取り除き,頭8文字を取り出したものです」ということだが、パスワードはもっと桁数を増やした方がいいとも書いてある。では、この生成プログラムで作成した文字列に何の意味があるのか。もし最初に入力する「マスターパスワード」が10桁の英数文字なら、この生成プログラムで出力したパスワードは元のマスターパスワードよりも暗号学的に弱くなってしまう。また、当サイトでも「パスワードに『コア』となる文字列を設定する管理策について」という論説で指摘したように、共通の文字列と、サイト名やドメイン名のように推定しやすい文字列とを使って、上記のように既存の関数(しかも使われているハッシュ関数は暗号論的にいまや論外とも言える md5() だけだ)を使って生成したパスワードというものは、文字列としてだけ見れば一定の暗号論的な強度をもっていようと、実際には単純な推定に弱い可能性が高い。また、僕の論説でも指摘したように、「マスターパスワード」というものを設定していると、ひとたびクラックされたら残りのパスワードの強度が極端に落ちる。おまけに生成した文字列から先頭の8文字を取り出したとは、どういう冗談なのか。かなり前に、昔の Windows だったか有名なサイトだったかで、認証処理のプログラムが保存されているパスワードと入力されたパスワードとを先頭の8文字だけで比較していたという報道があって世界中から非難を浴びたわけだが(そして、そんな比較ができてしまうこと自体がパスワードをハッシュ化して保存していない証拠だ)、文字列の先頭から一部だけを取り出すという処理は、本来は md5() ですら弱衝突耐性をもっているにも関わらず、その強さを故意に引き下げることになる。

このような事例でも言えることなのだが、どうしてこんな複雑なことをしようとするのか、僕にはよくわからない。自宅で使っているパソコンからアクセスするだけのサイトなら、サービスごとにユニークで非常に強力な桁数や文字列のパスワードを作ってメモ帳に記録しておけばいい(災害のときはメモ帳を持って外へ出なくてはいけないだろうが、ふだんはメモ帳も自宅に保管して構わない)。マスターパスワードなどというものを設定する必要があるのは、いまだにパスワードを「記憶しなくてはいけない情報」だと思い込んでいる人が多く、しかもそれがパスワードを管理する安全で優れた方法だと思い込んでいる人が、彼のようなレベルの技術者ですら多いということなのだろう。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook