2018/03/28

パスワード実装のガイドライン

password
2018 年 3 月 28 日 Marc Laliberte 著

次々と増えるパスワードは、厄介な問題です。

パスワードは作成するのも覚えるのも大変であり、同時に安全性も確保しなければならないとなると、本当に一苦労です。複数のサービスに同じパスワードを使えば便利だと誰もが考えますが、安全上の大きな懸念が伴います。それは、1つのパスワードが流出しただけで、すべてのサービスが悪用されてしまう恐れがあるからです。

仕事や職場以外の環境でこのような問題を解決するには、どうすれば良いのでしょうか。
企業においては、この問題を回避するいくつかの方法があります。

SSO(シングルサインオン)は、その良い例であり、これを使えば、複数のリソースにさまざまな場所からアクセスしようとするユーザの認証要求を少なくできます。単一のパスワードを認証する(ほとんどの場合は、会社のコンピュータにログインする)だけで、その自分が所属するセキュリティグループのすべてのリソースにアクセスできるようになります。単一のパスワードで仕事に必要なリソースにアクセスできる場合には、強力な初期パスワードを使用することを強くお勧めします。

そして、これをさらに強化するために、MFA(多要素認証)を使用し、ログインするユーザが間違いなく有効なユーザであることを確認するようことが推奨されます。この 2 つ目の認証方法には、セキュリティトークンやスマートカードなどの物理デバイスが利用されることも多く、入力するパスワード/PINを自動生成されるため、初期ログインに続けて入力する別のパスワードをユーザが覚える必要はありません。

会社以外の環境でも、このガイドラインを採用することはできますが、少し大げさ過ぎるように思えるかもしれません。判断基準は、どの程度の安全性をそれぞれのユーザが求めるかということになるでしょう。サービスによっては、(ほとんどの場合は)ユーザの携帯電話に紐付けされたMFAやワンタイムパスワードトークンをユーザが構成できるものもあります。ただし、サービスごとに新しい異なるパスワードを設定することになります。たくさんのパスワードを記憶するという面倒な作業が発生しますが(パスワードをメモするのは正しいやり方ではありません)、セキュリティは向上します。あるいは、Keeper や LastPass などのパスワードマネージャサービスを利用することで、MFA を利用できない場合に複雑なパスワードを作成したり暗記したりする手間を省くという方法もあります。

規模の大きい会社やドメインであれば、一部のサービスに PKI(公開鍵インフラストラクチャ)を実装するという選択肢もあるでしょう。これには、ユーザを認証するためのリーフ証明書に署名する CA(認証局)がネットワーク上に必要です。そして、ユーザが秘密鍵で署名された CA の公開鍵を取得し、独自の公開鍵を使用して自分自身を検証することになります。この場合、ユーザが自分の秘密鍵を使用し、要求された CA 署名を用意することで、ネットワークにおいて自分が名乗っているとおりの人物であることを証明した上で、自分の証明書を作成することになります。インターネット上には、さまざまなパブリック CA が存在しますが、これは、企業の CA(パブリックに認識されている場合もされていない場合もあります)とは異なるので、注意してください。

以上の点を考慮し、強力なパスワード、絶対に使用してはいけないパスワードとはどのようなものなのかを、考えてみることにしましょう。

使用してはいけないパスワード

  • 「password」というパスワード
  • 辞書に出てくる標準的な単語
  • 辞書に出てくる標準的な単語の単純なバリエーション
  • 単純な単語の前や後に数字を追加したもの
  • ユーザ名
  • 家族や友人の誕生日や記念日など
  • 単純な単語の文字を数字に置き換えたもの(たとえば、文字「e」を数字「3」に置き換えたもの)

今日のリソースを利用すれば、さまざまな方法で情報を入力するプログラムを使って、総当たり方式で簡単にパスワードを解読できます。

ここで、単純なパスワードの解読がいかに簡単であるかを示す例をご紹介することにします。「mypassword」というパスワードをあるサービスで利用した場合、そのMD5ハッシュは「34819d7beeabb9260a5c854bc85b3e44」です。コンピュータシステムでは通常、パスワードがハッシュで保存され、平文では保存されません。すべてのハッシュアルゴリズムが同じではないにもかかわらず、そのハッシュ値を Google で検索するだけで、解読ツールによってハッシュがすでに反転され、最初の文字列として「mypassword」が出力されました。「)&*Gyiol80」という無作為に入力した文字を使った場合のハッシュ結果は、「1eb893fa4fd86c65a0ac248979fe0515」となりますが、これを検索したところ、確かな理由は不明ですが、結果は得られませんでした。ご自分で試してみたい方は、後述の参考文献を参照してください。

上記の「使用してはいけないパスワード」とは反対に、強力なパスワードとはどのようなものであるかと言うと、大文字と小文字の両方の英字、数字、さらには特殊文字などを組み合わせた長いパスワードということになるでしょう。8 文字以上が推奨されていますが、もちろん、長いほど解読されにくくなります。覚えやすく、推測されにくいパスワードであれば、キーボードを見ることなく入力できるため、最良のパスワードということになるでしょう。入力中のパスワードを誰かに覗き見されないとも限らないからです。— Emil Hozan

参考資料(いずれも英文):

『PASSWORD MANAGEMENT(パスワード管理)』、2008 年 2 月 [PDF ファイル]

Crack MD5 Using Google Instead of AWS(Google を AWS の代わりに使って MD5 を解読する最も安価な方法』

MD-5 ハッシュジェネレータ(オンラインツール)

MD-5 復号化(オンラインツール)