公開キーをベースに暗号化アルゴリズムの強度を考えた場合に、ブルート フォース攻撃によって公開キーが奪われる時間は鍵長が長いほど強度が高いということができます。
2004 年の 8 月に米国商務省国立標準研究所が発表したガイドラインでは、暗号解読技術の進歩により、2011 年以降は公開鍵暗号の代表的なアルゴリズムである RSA の鍵長を 1024 ビットから 2048 ビットに強化する必要があると示しています。
マイクロソフトは、RSA アルゴリズムに対する強化策として、8/14 (米国時間) に、鍵長 1024 ビット未満の暗号キーをブロックする更新プログラム (KB2661254) を公開します。
対象 OS は、以下の通りです。
- Windows XP
- Windows Server 2003
- Windows Vista
- Windows Server 2008
- Windows 7
- Windows Server 2008 R2
この更新プログラムの適用後に、以下のような問題が発生することが予想されます。
- 1024 ビット未満のキーを使用した SSL 証明書を使っている
Web サイトが見れなくなる - 1024 ビット未満のキーを使用した証明書の登録に失敗する
- 1024 ビット未満のキーを署名や暗号化に使用した S/MIME のメールの作成や受信
- 1024 ビット未満で署名された Active X コントロールのインストールに失敗する
- 1024 ビット未満で署名されたアプリケーションのインストールに失敗する
まずは、現在、1024 ビット未満の暗号キーを使用しているかどうかを確認し、使用している場合には、1024 ビット未満のキーを使用しないように暗号化の設定を変更する必要があります。
以下の項目は、現在のキーが 1024 ビット以上かどうかをチェックしたり、そうでない場合に変更するための手順です。
● 1024 ビット未満のキーは、証明書チェーンのビルド時にブロックされる **
この更新プログラム適用後、証明書が利用される際に証明書チェーンの中で 1024 ビット未満のキーを使用した証明書があった場合には、以下のエラーが返されるようになります。
Event 11, CAPI2
• CERT_TRUST_IS_NOT_SIGNATURE_VALID
• CERT_TRUST_HAS_WEAK_SIGNATURE
● 既定で最小 512 ビットのキーを使用する CSP の設定を変更する **
CryptoAPI において暗号化やデジタル署名を行うソフトウェア コンポーネントである Cryptographic Service Provider (CSP) の中で、以下の 3 つは Windows Server 2008 R2 上で、既定で最小 512 ビットのキーを使用するように設定されています。
- Microsoft Base Cryptographic Provider v1.0 (RSA)
- Microsoft Base DSS and Diffie-Hellman Cryptographic Provider (DH)
- Microsoft DH SChannel Cryptographic Provider (DH)
新たに証明書のテンプレートを作成する場合に上記の 3 つの CSP のいずれかが既定で選択されている場合、1024 ビット未満のキーが生成されてしまうため、テンプレートで使用する CSP および最小キー サイズ (1024 ビット以上) に設定する必要があります。
Certreq.exe を使用している場合は、INF ファイルで 1024 ビット以上のキーを指定してください。詳細は、Best Practice for Configuring Certificate Template Cryptography をご参照ください。
● 1024 ビット未満のキーが証明書テンプレートで使用されているかどうかの確認 **
1024 ビット未満のキーが使用されている証明書テンプレートは、以下のコマンドを使用して確認することができます。
Certutil -dstemplate | findstr “[ msPKI-Minimal-Key-Size”| findstr /v “1024 2048 4096”
確認の結果、1024 ビット未満のキーを受け付ける証明書テンプレートが見つかった場合は、CA コンソール上でテンプレートが利用可能になっているかを確認し、テンプレートのプロパティで最小キー サイズの設定を 1024 に変更する必要があります。
詳細な手順については、RSA Keys under 1024 bits are blocked の “Discovering Usage of Keys under 1024 Bits in Certificate Templates” を参照してください。
● 暗号化の操作で 1024 ビット未満のキーがどのように使われているかの確認 **
Windows Vista/Windows Sever 2008 以降のバージョンの OS では、イベント ビューアーで CAPI2 ログを使用して、1024 ビット未満のキーを確認することができます。キーの確認後は、それを使用している証明書を特定し、必要な変更を加えてください。
ログの取得方法の詳細については、RSA Keys under 1024 bits are blocked の “Discovering Usage of Keys under 1024 Bits in Cryptographic Operations” を参照してください。
● ブロックされたキーを有効にする
更新プログラム適用後に、certutil コマンドを使ってレジストリを修正することにより、ブロックされる鍵長の制限値に変更を加えることができます。
たとえば、ブロックされた 512 ビットのキーを有効化し、512 ビット未満のキーをブロックする場合は、以下のコマンドを使用します。
Certutil -setreg chain\minRSAPubKeyBitLength 512
また、証明書チェーンで、ルート証明書のみが 512 ビットで、その下のキーがすべて 1024 ビット以上の場合は、次のコマンドを使用して 512 ビットのルート証明書だけを有効にし、その下の 1024 ビット未満のキーをすべてブロックする設定にすることができます。
Certutil -setreg chain\EnableWeakSignatureFlags 2
修正方法に関する詳細は、Blocking RSA Keys less than 1024 bits (part 2) を参照してください。
注意:
1. 上記の certutil コマンドを使用しての修正は、OS 上のすべてのアプリケーションや証明書について反映されるものであり、特定のアプリケーション、証明書、シナリオのみを選んで修正することはできません。
2. certutil コマンドを使用しての修正は、更新プログラムの適用時または適用前に行ってください。また、コマンドは、ローカルの管理者として実行する必要があります。
参考資料:
◆ RSA keys under 1024 bits are blocked
http://blogs.technet.com/b/pki/archive/2012/06/12/rsa-keys-under-1024-bits-are-blocked.aspx
◆ Blocking RSA Keys less than 1024
bits (part 2):
http://blogs.technet.com/b/pki/archive/2012/07/13/blocking-rsa-keys-less-than-1024-bits-part-2.aspx
◆ セキュリティ アドバイザリ (2661254) 証明書の鍵長の最小値に関する更新プログラム
http://technet.microsoft.com/ja-jp/security/advisory/2661254
◆ セキュリティチームのブログ 「1024 ビット未満の暗号キーをブロックする更新プログラム (KB2661254) を 8/14 に公開 - その 2」
http://blogs.technet.com/b/jpsecurity/archive/2012/08/10/3513621.aspx
◆ セキュリティチームのブログ 「1024 ビット未満の暗号キーをブロックする更新プログラム (KB2661254) を 8/14 に公開 - その 3」
http://blogs.technet.com/b/jpsecurity/archive/2012/08/14/3514260.aspx