けんぼうは留年生

ノンジャンルで何か書きたくなった時に書く感じ

パスワードを作るやつを作った話

GitHub - kembo/password_generator_kembo: パスワード作るやつ
http://kembo-net.github.io/password_generator_kembo/javascript/
一年くらい前の記事で語った「ハッシュを使ってパスワードを作る」って奴javascriptで作ってGitHubに上げてみた。
GitHubってそのままWebに公開出来るんだねー。便利だねー。

使い方

http://kembo-net.github.io/password_generator_kembo/javascript/
キーワードを入力して「生成」ボタンを押せば同じキーワードに対して必ず同じパスワードが返ってくる。キーワードのセキュリティ意識は多少低くても生成されるパスワードはまるでランダム文字列のように見えるので問題無い。入力ボックスに並んで確認ボックスもあるが、空欄のままにしておけば比較は行われない。最初パスワードを作る時は間違いを防ぐために確認を行うべきだが、普段パスワードを使う時には確認はすっ飛ばしても構わないだろう。

もし、君が本当にセキュリティを気にするのであれば先述のGitHubのページからjavascriptディレクトリの部分だけ引っ張ってきてソースコードを確認して自分のローカル内で動作させるのが確実だ。もっと言うとアルゴリズムだけ参考にしてちょこっとだけアレンジして作れば更に安全性は高まる。

なんでこんな物を作ったのか


どんなサービスでもパスワードを安全な方法で保持してくれていて絶対に流出しないなど、そんな保証はどこにもない。大手でも平気でパスワード複合できる形で保存してたり、ポロッとお漏らししちゃったりそういう可能性は常に存在している(むしろお漏らしのリスクは大きい所の方が狙われやすさ的な意味で危ないかもしれない)。そうなると自分の身は自分で――自分のパスワードは自分で守るしかない。そして、自分を守るためのパスワードは大体↓こんな感じの要件を満たしている必要がある。

  • 個人情報等から推測できない
  • 法則性を見出だせない程度に無意味な文字・記号の羅列
  • 十分に長い
  • 使い回しはしない
  • (定期的に変更する)

さて、こんなの大量に作って覚えていられるか? まず無理だろう。普段使ってるサービスのパスワードとか銀行のパスワードとか特別に重要なものや日常的に使うものなら覚えられるかもしれないが、そうじゃない瑣末なパスワードなんて覚えてられないだろう。ついつい使い回したり分かりやすいものにしちゃったり。そして、そういう瑣末な所から漏れたパスワードがどんな結末をもたらすことか……。aを@に置き換えるとか複数の単語をストライプ状に混ぜるとかパスワードを作り出す「法則」というものはいくつかある。だが、「法則性を見出だせない」と「大量に作成・覚えられる」を両立させるのは結構難しいものだ。

そこで今回私の作ったサービスを挟むことで多少なりとも簡単にパスワードのセキュリティ性を上げることが出来る。パスワードを作り出す「法則」の部分はコンピューターが弾きだしてくれる。万一流出しても攻撃者にとっては無意味な羅列と区別付きにくく、もし生成方法が判明しても逆算して突き止めるのは地味に困難だからね。

パスワード管理ソフト? あーいいよね、そう言うの。うん。ストレージで複数の端末間で共有させたりしてね。入力まで自動でやってくれる場合もあるしね。便利だよね。
僕はさ、何かを作り上げて世に出すというその行為自体に意味があると思うんだよね。それが例え100行未満の粗末な代物だったとしてもさ。ばいばい。