脅威の軽減手法

パスワードのセキュリティを強化するために使用できる脅威軽減手法は多数あります。 これらの手法は、次の主要なテクノロジの 1 つ以上を使用して実装されます。

テクノロジー 形容
暗号化: 次世代 (CNG) CNG は、Windows開発に推奨される暗号化 API です。 最新のアルゴリズム、キーの分離、暗号化の機敏性がサポートされています。 詳細については、「 CNG 機能」を参照してください。
アクセス制御リスト アクセス制御リスト (ACL) は、オブジェクトに適用されるセキュリティ保護の一覧です。 オブジェクトには、ファイル、プロセス、イベント、またはセキュリティ記述子を持つその他のオブジェクトを指定できます。 ACL の詳細については、「Access Control リスト」を参照してください。
Data Protection API (DPAPI) DPAPI には、ユーザー アカウントまたはコンピューターにバインドされている機密データを暗号化および復号化する関数 ( CryptProtectDataCryptUnprotectDataCryptProtectMemoryCryptUnprotectMemory) が用意されています。
資格情報マネージャーのWindows ユーザー資格情報 (パスワード、証明書、およびその他のシークレット) のセキュリティで保護されたストレージを提供します。 プログラムによるアクセス には CredWriteCredRead を使用します。 CredUIPromptForWindowsCredentials を介してアクセスすることもできます。

Note

旧バージョンとの互換性のために CryptoAPI (レガシ Crypt* 関数) は引き続きサポートされていますが、新しいコードでは、最新のアルゴリズムのサポートとセキュリティ アーキテクチャの向上に CNG (Cryptography: Next Generation) API を使用する必要があります。

次の脅威軽減手法では、上記の 1 つ以上のテクノロジを使用します。

ユーザーからのパスワードの取得

ユーザーにパスワードの設定を許可する場合は、強力なパスワードを強制的に使用します。 たとえば、パスワードは 8 文字以上などの最小長にする必要があります。 パスワードには、大文字と小文字、数字、およびその他のキーボード文字 (ドル記号 ($)、感嘆符 (!)、またはより大きい (>) も含める必要があります。

パスワードを取得したら、(できるだけ少ないコードを使用して) すばやく使用し、パスワードのすべての痕跡を消去します。 これにより、侵入者がパスワードを"トラップ"するために使用できる時間が最小限に抑えられます。 この手法とのトレードオフは、ユーザーからパスワードを取得する必要がある頻度です。ただし、可能な限り原則を採用する必要があります。 パスワードを適切に取得する方法については、「ユーザーに資格情報のを要求する」を参照してください。

"パスワードを記憶する" ユーザー インターフェイス オプションは指定しないでください。 多くの場合、ユーザーはこのオプションを必要とします。 パスワードを指定する必要がある場合は、少なくとも、パスワードが安全な方法で保存されていることを確認します。 詳細については、このトピックの「パスワードの保存」セクションを参照してください。

パスワード 入力試行を制限します。 成功せずに一定回数試行した後、一定の時間ユーザーをロックアウトします。 必要に応じて、各試行の応答時間を最大に長くします。 この手法は、推測攻撃を倒すことを目的としています。

パスワードの保存

Warning

ファイル、レジストリ、構成、またはソース コードではなく、プレーンテキスト (暗号化されていない) にパスワードを保存しないでください。 パスワードを暗号化すると、セキュリティが大幅に向上します。

暗号化されたパスワードの格納については、「CryptProtectData」を参照してください。 メモリ内のパスワードの暗号化については、「CryptProtectMemoryを参照してください。 パスワードはできるだけ少ない場所に保存してください。 パスワードが保存されている場所が多いほど、侵入者がそれを見つける可能性が高くなります。 Web ページや Web ベースのファイルにパスワードを保存しないでください。 Web ページまたは Web ベースのファイルにパスワードを格納すると、パスワードを簡単に侵害できます。

パスワードを暗号化して保存したら、セキュリティで保護された ACL を使用してファイルへのアクセスを制限します。 または、リムーバブル デバイスにパスワードと暗号化キーを格納することもできます。 スマート カードなどのリムーバブル メディアにパスワードと暗号化キーを格納すると、より安全なシステムを作成できます。 特定のセッションのパスワードを取得した後、カードを削除できるため、侵入者がアクセスできる可能性を排除できます。