キー・署名ツールについて

 キー・署名ツールは、配布するデータに対し、簡単な電子署名を行うためのツールです。
 電子署名を使えば、ファイルが正当な制作者によって作成された物であることのチェック、ファイルの改ざんチェック、破損チェックを行うことができます。
 現在では、ファイル破損チェックツールがこの署名を利用します。

公開鍵・秘密鍵について

 キー・署名ツールを使うためには、このツールを使って「公開鍵」(public key)と「秘密鍵」(private key)という2つの対になる(ペアになる)キー(キーペア)を作成する必要があります。
 鍵といっても、実体は「-- PUBLIC KEY - ECC(160) --hgACAAEUFAAAAIPNcfiXntBLgTgarRtk3JnyVZYPAQ==」のような形式の文字列です。
 公開鍵は公開してもかまわないキー、秘密鍵は公開してはならないキーです。
 署名を行うときには秘密鍵を用います。電子署名は、その秘密鍵を使って生成します。
 その署名を確認するときには公開鍵を用います。秘密鍵と公開鍵は常に対になり、該当する秘密鍵を使って行った署名のみが、その秘密鍵と対になる公開鍵で正常に確認できます。
 秘密鍵を知らない者が他の秘密鍵で署名しても、正当な公開鍵では署名を確認できないことになります。公開鍵から秘密鍵を推測することは不可能ですので、秘密鍵を持っている人しか正当な署名ができないことになります。

Note
本来は、その「公開鍵」が公開される際に、その「公開鍵」が正当な物かどうかを確認させる必要があります。公開鍵がそもそも正当なものかどうかが分からなければ、電子署名の意味は薄くなります。しかし、吉里吉里のキー・署名ツールではそこまでの考慮は行っていません。


Note
吉里吉里のキー・署名ツールが用いる暗号方式は160ビット長のECC(楕円曲線暗号)、ハッシュアルゴリズムはMD5です。160ビット長のECCの暗号強度は1024ビット長のRSA暗号に匹敵し、現在の技術では解読は非常に難しいと言われています。

キー生成のしかた


 キー・署名ツール(tools フォルダにある krkrsign.exe)を起動すると最初に表示されるのはキー生成の画面です。
sign0.png


「生成する」ボタン
 クリックするとキーペアの生成が始まります。最初に「エントロピーを収集中」というウィンドウが現れ、マウスをでたらめに動かすことを要求されるので、指示に従ってください(他人に推測されないキーを生成する為に必要です)。
 ウィンドウが閉じると、下の「生成された公開鍵」と「生成された秘密鍵」の欄に、生成されたキーペアが表示されます。
生成された公開鍵
 生成された公開鍵が表示されます。横の「コピー」ボタンを押すと、鍵をクリップボードにコピーすることができます。
生成された秘密鍵
 生成された秘密鍵が表示されます。横の「コピー」ボタンを押すと、鍵をクリップボードにコピーすることができます。
 セキュリティの都合上、このウィンドウを閉じるときにクリップボードの内容はクリアされるので注意してください。

署名のしかた


 「署名」タブをクリックすると、署名の画面が表示されます。
sign1.png


秘密鍵
 秘密鍵を指定してください。
対象ファイル
 署名の対象となるファイルを指定することができます。
 「参照」ボタンを押すと、ファイル参照ダイアログボックスが開くので、対象とするファイルを指定してください。
 このウィンドウに対象とするファイルをドロップすることでも、対象ファイルを指定することができます(現バージョンでは複数ファイルを一度に署名することはできません)。
「署名する」ボタン
 対象となるファイルを署名します。
 署名ファイルは、対象ファイルのファイル名に、拡張子 .sig が付加されたファイル名になりますが、例外的に吉里吉里本体の場合は、本体に署名が埋め込まれます。

署名確認のしかた


 「署名確認」タブをクリックすると、署名の画面が表示されます。
sign2.png


公開鍵
 公開鍵を指定してください。
対象ファイル
 署名確認の対象となるファイルを指定することができます。
 「参照」ボタンを押すと、ファイル参照ダイアログボックスが開くので、対象とするファイルを指定してください。
 このウィンドウに対象とするファイルをドロップすることでも、対象ファイルを指定することができます(現バージョンでは、このツールで複数ファイルの署名を一度に確認することはできません)。
「チェック」ボタン
 対象ファイルの署名を確認します。
 結果はメッセージボックスで通知されます。

コマンドラインからの使用法

 コマンドラインからキー・署名ツールを使用することにより、ファイルに署名を行うことができます。これはmakeなどのツールと組み合わせて使うときに便利です。
 以下の書式で指定します。

krkrsign -sign "対象ファイル名" "秘密鍵"
たとえば、game.eXe に署名する場合は

krkrsign -sign "game.eXe" "-- PRIVATE KEY - ECC(160) --hgACAAAUFAAAABkiVqMkINmoCYhe41wzleMIqElUABQAAADZsyrLo1RKsgt17saXG+pDfVSDfw=="
 と指定します。一回の呼び出しでは一個のファイルしか署名できません。