2006年11月25日 - 署名ツール (SignTool.exe) でファイルにデジタル署名を

 署名できるファイルの形式について(VeriSign)を眺め、電子署名がつけられないファイル形式が何なのか気になったのだ。
 あちらこちらで一般的に配布されているようなファイル形式の幾つかがどうなのか、興味深い。

 早速署名ツール (SignTool.exe)(Microsoft)を試してみる。
 Windows® Server 2003 SP1 Platform SDK Web Install(Microsoft)よりPSDK-x86.exeをダウンロードしインストール。
 Microsoft Platform SDK (3790.1830)が導入された。

 Platform SDK Redistributable : CAPICOM(Microsoft)よりCC21INST.EXEをダウンロード。
 ダブルクリックして解凍し、capicom.dllを得て、C:\Program Files\Microsoft Platform SDK\Binへコピー。

 無料でデジタル証明書を取得するに従い、Thawte Inc.のデジタル証明書を取得。
 (署名後のファイルにてデジタル署名の詳細を開けば、「証明書は要求された使用法では無効です。」と表示はされるのだが、署名できるファイル形式が知りたいだけなので構わないだろう)
 エクスポートしたpxfファイルをC:\Program Files\Microsoft Platform SDK\Binへコピー。

 コマンドプロンプトを起動。
 cd /d C:\Program Files\Microsoft Platform SDK\Bin
 「signtool.exe sign /f filename.pfx /p pfxのパスワード デジタル署名を付けるファイルのfilename」

署名できなかったファイル


 アーカイブファイルでは、zip・lzh・tarファイルには署名できなかった。
 バッチファイルのbatと、拡張子をcmdにしたファイルもまた署名できなかった(バッチファイルの拡張子はWindowsNT・2000・XPではbatとcmdいずれも利用できる)。
 その他のファイルとしては、inf・sysなど。

署名できたファイル


 アーカイブファイルでは、cabファイルには署名できた。またzipの圧縮書庫(exe)も署名できた。
 実行形式ファイルのexe・comファイル、スクリーンセーバーのscrファイルには、デジタル署名が付けられた。
 その他のファイルとしては、dllなど。

2006年12月15日追記事項


 拡張子がCOMのファイルはMS-DOS時代より利用されていた実行ファイルである。
 ファイルサイズの上限は64KB。

 拡張子がEXEの実行形式ファイルはMS-DOS時代にもあった。ファイルサイズは64KB以上であっても大丈夫だ。
 バイナリエディタで開けば、ファイルヘッダの先頭はMZより始まる。
 zipの自動実行圧縮書庫ファイルなどでもEXEだったりする。

 サイバークリーンセンターのボット駆除ツール(2006年12月14日)(LucaBlog)へのせがわさんのコメント 『auto_tsc.com / CCC.com とも、ファイル名は *.com ですが、中身は普通の exe です。』で、完全に見落としていた部分に気付いたんですが。
 アンチウイルスソフトメーカーが配布するcomファイルは、本当はcomファイルではないのでは?単に拡張子をcomに変更しただけなのではと。

追試


 WindowsMeのC:\WINDOWS\COMMAND.COMは114 KB (117,638 バイト)であり、ファイルのヘッダ先頭部分はMZだ。
 署名しようとすると「SignTool Error: This File Format cannot be Signed because it is not recognized.」と表示された。
 COMMAND.EXEにリネームしてもだ。

 WindowsMeのC:\WINDOWS\COMMAND\CHOICE.COMは7.35 KB (7,527 バイト)でファイルのヘッダ部にMZの文字列は無い。だが署名できないし、exeに拡張子を変更しても署名できなかった。

 ブログに掲載する画像を作成するために日常的に利用しているWinShot(WoodyBells)など幾つかのソフトウェアでは、EXEファイルをバイナリエディタで開けば先頭はMZである。
 EXEファイルのままでも署名できたし、COMに拡張子を変更しても署名できた。またWinShotなどはCOMに拡張子を変更しても起動し利用できたのだ。

 F-Secure社・Symantec社・TrendMicro社が公開しているCOMの駆除ツールは、ファイルサイズは64KB以上のものが多く、いずれもファイルヘッダはMZからだ。



この記事へのコメント
あっちゃー、微妙に違うとはいえ、デジタル署名ネタが被った…

うちの記事は疑問形で終わってます。

もし情報があったら下さい(特にラストの疑問)
(教えてクレクレで申し訳ありませんが、全くわかりません…)

http://blog.ptlabo.net/index.php?id=06110122

(追記:まだ早いということであれば、ラストの疑問は削除します)
Posted by itochan at 2006年11月25日 19:53