.NET Framework アプリケーションの NSA Suite B 対応について
(2015.09.04 追記)
本記事でご案内をしている内容は、弊社製品のうち、Visual Studio や .NET Framework といった開発ツールが対象となります。
Windows プラットフォームとしての対応については、以下をご参照ください。
[IT 管理者向け] SHA-1 からの移行を推奨しています
https://blogs.technet.com/b/jpsecurity/archive/2014/10/15/sha1-migration.aspx
SHA1 Deprecation Policy
https://blogs.technet.com/b/pki/archive/2013/11/12/sha1-deprecation-policy.aspx
----
こんにちは、Visual Studio サポート チームです。
今回は .NET Framework アプリケーションの NSA Suite B 対応について取り上げます。
※本ブログの内容は本ブログ発行日時点での見解です。本社開発部門ともディスカッションした内容をもとに記載してはおりますが、将来変更の生じる可能性を含んでいます。将来、このブログに記載されている内容が実現されなかったり、別の形となる可能性もあります。
Suite B とは、米国国家安全保障局 (NSA) によって承認を受けた暗号化アルゴリズム群で、ソフトウェア暗号化の暗号化標準を確立する一般公開されたアルゴリズムのセットです。この中には、セキュア ハッシュ アルゴリズムとして SHA-2 (SHA-256 など) が含まれますが、これまで広く使われていた SHA-1 は含まれていません。
Microsoft では 情報セキュリティの確保と Suite B への対応のため、2016 年 1 月 1 日をもって、マイクロソフト ルート証明書プログラムでの SHA-1 ハッシュ アルゴリズムを廃止することになりました。
2016 年 1 月 1 日以降、SHA-1 による署名は、無効な署名と判断される可能性があります。Microsoft は上記の対応を進めておりますが、各アプリケーション ベンダー様にも、署名等のハッシュ アルゴリズムの SHA-2 への変更と、それに伴うアプリケーションの再発行を推奨いたします。
.NET Framework アプリケーションで必要となる対応について
・ SHA-1 で署名されたものは、SHA-2 で再署名する必要があります。
・ 再署名したものは、再度展開する必要があります。
・ 下記の 3 つの観点で、対応と検証を行っていただく必要があるものと想定されます。
1) アプリケーションのコード署名、および ClickOnce マニフェストに対する再署名とビルド(開発者様の環境での作業)
2) アプリケーション実行環境での対応 (利用者様の環境での作業)
3) インストーラーでのインストール作業(利用者様の環境での作業)
・ SHA-1 で署名されたものは、2016 年 1 月以降、未署名として扱われる可能性が高いと考えられています。このため、未署名では動作しない機能を利用している場合は、再署名が必須となることが想定されます。
1) アプリケーション、マニフェストへの再署名
・ 基本的には、.NET Framework 2.0/3.0/3.5 (CLR2)、.NET Framework 4.x (CLR4) のアプリケーションに対しても、SHA-2 証明書での再署名が可能です。
・ .NET Framework 2.0/3.0/3.5 (CLR2) のアプリケーションを改めて .NET Framework 4.x でコンパイルしなおす必要はありません。再署名だけが必要です。
・再署名だけであれば、Visual Studio Express 2013 for Windows DeskTop を利用可能です。
・ClickOnce マニフェストに対する署名に関しては、IDE 上でのテスト証明書の作成機能は .NET Frameowork 2.0/3.0/3.5 (CLR2) については未対応で、今後の対応予定も未確定です。証明書発行局から入手した SHA-256 の証明書を設定して発行することは可能です。
2) ユーザー側環境の対応
・ OS のモジュールが署名の検証を行いますので、特に個別の対応は不要です。(ただし、最新の Windows Update を適用されていることが前提です。)
3) インストーラーでのインストール作業
インストーラーが署名を検証しているかどうかに依存します。
・ インストーラーが署名を検証していて、その検証を OS に搭載している検証の機能に依存している場合は、アプリケーション側やインストーラー側では再署名以外の特別な対応は通常必要ありません。
・ インストーラーが署名を検証していて、その検証をインストーラーが独自に行っている場合は、その検証のロジックに依存します。Microsoft のテクノロジーでは ClickOnce がこれに相当します。
・ ClickOnce は独自に署名の検証を行っており、検証を行っているモジュールは .NET Framework に含まれています。そのため、インストーラーが動作するクライアントに搭載されている .NET Framework のバージョンに依存して対応状況が異なります。
・ .NET Framework 4.x (CLR4) 系では、.NET Framework 4.5 以降で対応しています。
・ .NET Framework 2.0/3.0/3.5 (CLR2) は現在対応しておりません。今後修正等で対応するかどうかも未定です。ただし、同じ環境に.NET Framework 4.6 など最新バージョンの .NET Framework がサイド バイ サイドでインストールされていれば、ClickOnce ローダーはそちらを使って署名の検証をするため、SHA-2 署名の検証は行えるようになります。
・ インストーラーが署名を検証していない場合は、特に問題はありません。
参考情報
Suite B 暗号化への準拠の概要 https://technet.microsoft.com/ja-jp/library/dd566200(v=WS.10).aspx
暗号サービス https://msdn.microsoft.com/ja-jp/library/92f9ye3s(v=vs.110).aspx