[デジタル署名]2016年以降のハッシュアルゴリズムSHA-1廃止について

古い既存アプリケーション(ActiveX)の改修作業をした際に、デジタル署名ツールのsigncodeにて例外エラーが発生し署名が出来なかったため、デジタル署名ツールのsigntoolに変更しました。するとデジタル署名のアルゴリズムが、md5からsha1に変更されました。  

これによりデジタル署名について、2016年以降にハッシュアルゴリズムのsha1が廃止という話題もあり調査しているところです。  
[SHA-1 ハッシュ アルゴリズムによって署名された証明書の廃止について - Ask the Network & AD Support Team - Site Home - TechNet Blogs](http://blogs.technet.com/b/jpntsblog/archive/2015/10/21/sha-1.aspx)
[[IT 管理者向け] SHA-1 からの移行を推奨しています - 日本のセキュリティチーム - Site Home - TechNet Blogs](http://blogs.technet.com/b/jpsecurity/archive/2014/10/15/sha1-migration.aspx)  

ちなみに自分もまだデジタル署名およびデジタル証明書について理解度が足りなく、MSDNフォーラムに質問をしている段階です。
[デジタル署名書のアルゴリズムMD5またはSHA-１の廃止について](https://social.msdn.microsoft.com/Forums/ja-JP/b36927e6-4da7-4f25-937d-3bf2e1351070/md5sha?forum=windowsgeneraldevelopmentissuesja)

SHA-１が廃止でSHA-2に移行となるのですがSHA-2には、SHA-224、SHA-256、SHA-384、SHA-512が含まれており、signToolではSHA256を(/fdオプション)で指定できます。(Windows XP SP3は、SHA-256のみ対応。よって、SP2以下は非対応)  
後述するが、Windows VISTAとWindows Server 2008は、ファイルダイジェストアルゴリズムでSHA-2に対応させるパッチを提供していない。  

* * *

自分としてはサイト側(https)ではなく、CabファイルやSetup.exe等の付与するデジタル署名について知りたいわけです。

丁度、2016/02/17の記事とタイムリーにいいサイトがありました。
[SHA-1廃止が引き起こす悲劇と対策法～開発者(Cab署名者)編～ - IT、IT製品の情報なら【キーマンズネット】](http://www.keyman.or.jp/kc/30008511/)
引用：Micorsoft社が2016年1月1日時点で変更を求めているのは、コードサイニング証明書の署名アルゴリズムのみです。  
signtoolで指定するファイルダイジェストアルゴリズムは対象外という見解です。  

コードサイニング証明書(pfxファイル等)とは、ソフトウェアにデジタル署名を行う電子署名用の証明書でベリサインなどの認証局（CA）からお金を払って発行してもらう必要があります。  
ただ、ClickOnceなどでイントラでしか使用しないのなら、makecert.exe等を使って自己署名証明書いわゆるオレオレ証明証(無料)を作成することが出来ます。  

signtoolで指定するファイルダイジェストアルゴリズムは既定では「sha1」となっています。

Microsoft社はVistaおよびWindows Server 2008について、ファイルダイジェストアルゴリズムとタイムスタンプサーバのダイジェストアルゴリズムについて、SHA-2に対応させるパッチを提供していないとのことなので、「sha256」にすると未証明扱いになります。  
また、Setup.exeにデジタル署名をsha256のみにすると、「[Windows Vista/Server 2008 環境で SHA-2 署名されたインストーラーが正常に作動しない](https://hds.networld.co.jp/helpdesk/support/FaqFacadeServlet?TaskType=Detail&seriesId=InstallShieldFAQ&id=00003215&categoryId=0073&JspUrl=/support/FrequentlyDetail.jsp)」となります。  
ちなみに、signtoolにアルゴリズム変更オプション(/fd sha256)があるのですが、古いバージョンにはこのオプションがありません。Windows 8.1 SDK以降のsigntoolなら使用できるようです。デジタル署名は複数付ける(/asオプション)ことができるので、VISTA等も対象としたいなら、SHA1とSHA256の両方を付けるといいです。  
[Signtoolでの署名方法 - Symantec](https://knowledge.symantec.com/jp/support/code-signing-support/index?vproductcat=V_C_C&vdomain=VERISIGN.JP&page=content&actp=CROSSLINK&id=SO23053&locale=ja_JP&redirected=true)、[SHA-1とSHA-256で同時に署名する - The Grimoire of Nonsense](http://sx1752.hateblo.jp/entry/2015/07/30/120829)
signtool.exe sign  /f <pfx証明書ファイル名> /p <pfx証明書パスワード> /t [http://timestamp.verisign.com/scripts/timstamp.dll](http://timestamp.verisign.com/scripts/timstamp.dll) /v <署名するファイル>
signtool.exe sign  /fd sha256 /f <pfx証明書ファイル名> /p <pfx証明書パスワード> /as /tr [http://timestamp.geotrust.com/tsa](http://timestamp.geotrust.com/tsa)  /v <署名するファイル>

[Windows Enforcement of Authenticode Code Signing and Timestamping - TechNet Articles - United States (English) - TechNet Wiki](http://social.technet.microsoft.com/wiki/contents/articles/32288.windows-enforcement-of-authenticode-code-signing-and-timestamping.aspx)
signtool.exe sign /n <Subject name of SHA-1 certificate> /t <URL to SHA-1 Authenticode timestamp server> /v foo.exe
signtool.exe sign /n <Subject name of SHA-2 certificate> /fd sha256 /tr <URL to SHA-2 RFC-3161 timestamp server> /td sha256 /as /v foo.exe  
※タイムスタンプサーバ(/td)にも「sha256」を付けるべきかはよく分からない。  

CabファイルやSetup.exe等の付与するデジタル署名については、焦ってSHA-256に変更しなくてもいいのかも知れませんね。
いつどうなるか分からないので対応はするべきでしょう。  

また、何か分かれば追記していきます。  

【その他 参照】 
[セキュリティ アドバイザリ 2862973 ～ ルート証明書プログラムにおける MD5ハッシュの利用制限 - TechNet Blogs](http://blogs.technet.com/b/jpsecurity/archive/2013/08/14/3590346.aspx)
[コードサイニング証明書における Microsoft 社のポリシー変更について | SSL・電子証明書ならGMOグローバルサイン](https://jp.globalsign.com/information/important/detail.php?no=1429769655)
[準備OK？ EVコードサイニング証明書の現状とその実際 3ページ | OSDN Magazine](https://osdn.jp/magazine/15/11/16/113000/3)
[ゲーム開発者のための Authenticode 署名](https://msdn.microsoft.com/ja-jp/library/ee416211(v=vs.85).aspx)
[[IT 管理者向け] 残っていませんか? SSL/TLS 証明書の SHA-1 廃止はもうすぐ](http://windowswideopen.com/category/pki/)
[Microsoft Authenticodeに署名する方法 | Digicert コードサイニング証明書](https://rms-digicert.ne.jp/codesigning/howto/signcode-signtool-command-line.html)
[個人ソフト作者にとってのデジタル署名とは？](http://www.officedaytime.com/tips/codesigning.html)
[Windows XP SP3 SHA256ルート証明書](http://seesaawiki.jp/w/k_urushima77/d/Windows%20XP%20SP3%20SHA256%A5%EB%A1%BC%A5%C8%BE%DA%CC%C0%BD%F1)
[SHA-2への移行 サーバー証明書へのSHA-2ハッシュアルゴリズム適用](https://rms-digicert.ne.jp/howto/basis/transitioning-to-sha-2.html)