サーヴィスごとに異なるパスワードの生成法

追記: この記事の内容は (当時から、あるいはこの注釈を書いている2018年現在の基準だと) 誤りが含まれています**

今どきの安全なパスワードについてと言う記事を新たに書いたため、そちらをご覧ください**

サーヴィスごとに異なるパスワードを作りたければ (作るべきだが)、そのサーヴィスから生成した文字列を混ぜるという手がある。

最近、Yahoo! JAPANをご利用のお客様から「不正にYahoo! JAPAN IDを使われオークションに出品されていた」「ログイン履歴に身に覚えのないものがあった」など、IDの不正利用に関するお問い合わせを多数いただいております。調査の結果、「他サイトに登録しているパスワードと同一のパスワードを設定していた」ことが原因のひとつであることが判明しました。

んなこと言っても「他のサイト」はいっぱいあるから全部覚えらんねー! という気持ちはわかるがしかししょーがない。

個人的なノウハウになるが、こういう場合は、サーヴィス名から手動でエンコードした文字列を使う、という手がある。

  1. ランダムな文字列を1つ覚える。例えば "aoc1-QW"。念のために辞書に載っていない、小文字、大文字、数字、記号が使われている文字列にしておく。
  2. サーヴィス名から適当な文字列を生成する。例えば、"Yahoo" なら、頭2文字とって"Ya"。さらに隣のキーにして "Us" など。
  3. ランダムな文字列 ("aoc1-QW") に、サーヴィス名から生成した文字列 ("Us") を不連続に混ぜる。例えば、2番目と最後から2番目に挿入して "aUoc1-QsW"。
  4. 最後にそのシステムがパスワードとして使用可能な文字数の上限か、適当な長さ (16文字とか32文字とか気が済むまで) 適当な文字を挿入して埋める。

こうすると、覚えやすく、復号が困難な上に、仮に1つのサーヴィスでパスワードが1つ突破されても、他のサーヴィスのパスワードはばれにくい状態になる (もちろん、安全は保障できないが、それになりに効果はある、筈)。