はじめに
「パスワードクラック手法」と「有効な管理策」に関する2部構成の後半部分です。主に管理策について記述します。
パスワードクラック手法について記述している前半部分については下記から確認できます。
blg8.hatenablog.com
注)なお、本稿は筆者が文献の参照と経験に基づき独自に解釈した内容のため、認識が間違っている可能性があります。(誤りに気付いた方は、コメントいただけると幸いです)
パスワードクラックに対し有効な管理策について
パスワードクラックに対し有効と思われる主な管理策を各ガイドラインを参考に書き出します。
1.パスワードポリシーによる利用者への意識付け・義務化
脅威に応じて定めた一定レベル以上の強度を持つパスワードが組織内で使用されるように、利用者への意識付け、(ツールの設定による強制を含む)利用者への義務化などの管理策により以下のセキュリティ要件を含むパスワードポリシーを定める必要があります。
一定以上の長さの文字列の使用
一定以上の長さの文字数を使用することにより、パスワードを特定するために行う試行回数が多くなるため、ほとんどのクラック手法に対し有効です。
※)パスワード登録時の条件として「○○文字以上、○○文字以下で設定してください」のように上限を設けている例がありますが、NISTでは上限は設定すべきではないとされており、処理能力の許す限り設定可能な文字数は多くすることが推奨されています。全てのASCII文字、Unicode文字の使用許可
SQLインジェクションのように特殊文字を用いた攻撃を回避するために、パスワードにスペースや様々な特殊文字を利用することができないようにしている例がありますが、適切にハッシュ化されているものをデータベースに送信することでインジェクション攻撃は回避できるため、NISTでは利用者が選択可能な文字種に制限を設けるべきではないとされています。クラックされ難い(質の良い)パスワードの利用
以下のような具体例を提示し、利用者に対しクラックされ難いパスワードの利用を促すことが必要です。
・本人に関連する情報(例えば、名前、電話番号、誕生日)のように、第三者が推測できる又は得ることができる内容に基づく文字列を使用しない
・異なるサイト(ドメイン)でパスワードの使いまわしをしない
(特に組織内と個人利用のパスワード共用の禁止)
・従業員同士であってもパスワードを共有しない
(組織内でのなりすまし防止、責任追跡性の維持のため)
・パスワードが侵害された兆候がある場合は、速やかにパスワードを変更するパスワードの変更
以下のように不正にパスワードを利用される恐れがある場合には、速やかにパスワードを変更することを利用者に周知することが必要です。
・インシデントの発生によりパスワードが侵害された恐れがある
・共有アカウントを利用している自分以外の誰かが組織を離れた
2.パスワードの保管
パスワードが攻撃者により容易に窃取されないように保護することを考慮した保管方法を定める必要があります。
平文パスワード保管の禁止
パスワードは、平文ではなく、アカウント毎にランダムに生成したソルトを連結し、ストレッチングにより得られたハッシュ値*1を保管します。
また、最終的に生成されたパスワードファイルだけではなく、ハッシュ化処理中のログなど全てのプロセスで平文が残っていないことを確認する必要があります。パスワードファイルとアプリケーションシステムのデータとの分離
アプリケーションシステム用のデータとは異なる領域に保管することにより、パスワードファイルの窃取はより困難になります。
3.パスワード登録・管理のための支援機能
パスワード登録・管理を行うシステムには、以下のような利用者が強度の高いパスワードを選択できるような支援機能を備える必要があります。
パスワードポリシーの強制機能
パスワードポリシーを満たさないパスワードの登録を拒否することで、利用者によるポリシー順守を支援します。レート制限によるロックアウト機能
例えば、同一アカウントへ一定回数以上の認証試行失敗が続いた場合、一定時間または解除するまでそのアカウントを用いた認証を受け付けないなどのレート制限によるロックアウト機能を設けることで、オンラインによる攻撃を防ぐ効果があります。パスワード利用禁止リストの参照機能
利用者が使用する傾向が高い文字列,攻撃者に類推され得る文字列,危殆化した文字列を含むパスワード利用禁止リスト(攻撃者に利用される可能性の高い文字列を集めたリスト)を作成し、パスワード登録時にその利用を拒否する機能を提供することにより、辞書、マスク、類推の各攻撃手法への耐性を高めることができます。
パスワード利用禁止リストは、以下の考え方に基づき外部情報を入手するなどにより最新に維持することが求められます。
・組織外のサイトを含む過去に流出した資格情報
(アカウントとパスワードの組み合わせ)
・辞書攻撃用の辞書に含まれる文字列
・繰り返しまたは規則的な文字列 (例: aaaaaa,1234abcd)
・サービス名,ユーザ名などから推測可能な文字列
なお、上記リストに含める文字列は、パスワードポリシーによって定められている文字数以上のものに限定することにより、無駄な照会の機会を減らすことが可能です
追加機能として、資格情報の流出リスト更新の際に、組織内で登録されているアカウント情報と照会し、流出の可能性がある場合に当該アカウントの保有者に対しパスワード変更を促すことにより侵害の可能性を低くすることができます。ランダムに生成された文字列の利用促進機能
パスワードマネジャやブラウザのキーチェーン機能など、信頼できる乱数生成機能によりランダムに生成されたパスワードの利用を許可することにより、辞書、マスク、類推の各攻撃手法への耐性を高くすることができます。また、ランダムに生成されたパスワードを利用しやすいように、パスワード入力時にペースト機能の利用を許可するなどの考慮も必要です。パスワード強度メーターの表示機能
利用者が登録しようとしているパスワードの強度を表すパスワード強度メーターを表示することにより、利用者がより耐性のある文字列を選択しやすくなります。登録時のパスワード入力値確認機能
通常、入力されたパスワードは覗き見を防止するためにドットやアスタリスクとして画面上に表示されることが多いため、利用者がパスワードを登録する際、自らが入力した内容を確認できないことによる入力誤りが発生し、その結果、利用者がパスワードを誤って記憶している可能性があります。
そこで、利用者が考えたパスワードが間違いなく入力されていることを確認できる機能(例えば、同じ文字列を2回入力させ比較する機能)を提供することでパスワードの記憶ミスを防ぐことができます。
また、パスワード登録の際に正しい入力を行うために、限られた時間内で(例えば、表示ボタン押下時のみ)入力したパスワードを表示できる機能を提供することを検討します。
その場合、入力した文字列が盗み見される可能性もあるため、アスタリスク表示により保護しつつ、盗み見される可能性が低い時など、パスワード文字表示のタイミングを利用者によりコントロールできるようにする必要があります。パスワードの再利用禁止機能
同アカウントに対するパスワード(実際にはハッシュ値)を数世代にわたり履歴保持し、再使用を禁止する機能を提供することにより、パスワード変更の本来の目的である「万が一、漏洩していた場合の補完管理策」が有効に機能します。
あまり効果がないとされている管理策
以下の管理策は、最新のガイドラインでは効果が薄いと言われています。
パスワードポリシーの複雑さ要件
パスワードの複雑さを利用者に強制すると、記憶との両立が難しいことを理由とする以下のような脆弱性を孕む可能性があります。
・推測可能な規則性を持ったものを登録する
・メモや暗号化されていないなどのセキュアではない方法により保管されるパスワードの定期更新の強制
パスワードを定期的に更新することが分かっている場合、利用者は推測可能な規則性を持ったものを考える傾向があります。「ヒント」や「秘密の質問」
類推攻撃のターゲットになり得る(例えば、「ペットの名前は?」などの質問はSNSなどにより到達可能な情報です)ため、「ヒント」や「秘密の質問」への回答を前提としたパスワード変更権限の付与は実施すべきではないとされています。
まとめ
今回は、パスワードクラック手法と有効な管理策について考えてみました。どちらも時間の経過とともに変化するため、攻撃手法については、MITRE ATT&CKなどの確認による脅威インテリジェンスの維持、有効な管理策についてはMITRE ATT&CKやNISTなどのガイドラインで最新の情報を確認し、組織内のルールを見直す必要があります。
また、各管理策(例えば、パスワードポリシーとパスワード支援・管理機能)は互いに関連するため、ルールを見直す場合は関連性を見極め総合的な見地で実施する必要があります。
参考資料
本稿は、以下のサイト、文献を参考にしています。より詳細な情報を得たい、正確性を重視したい方は以下を参照して下さい。
ISO/IEC 27002:2022 Information security, cybersecurity and privacy protection — Information security controls
NIST SP800-53 Rev.5 Security and Privacy Controls for Information Systems and Organizations IA-5
NIST SP 800-63B Rev.3 Digital Identity Guidelines — Authentication and Lifecycle Management
脚注
*1:例えば、CRYPTREC暗号リスト(https://www.cryptrec.go.jp/)により危殆化していないことを確認したハッシュ関数により、コンピュータの処理性能・負荷の許容範囲内で繰り返し演算して得られた結果