ディジタル署名とは?
ディジタル署名は、改ざんの検出と本人確認が可能です。
改ざんの検出はメッセージ認証、本人確認はエンティティ認証なので、
ディジタル署名はメッセージ認証とエンティティ認証のどちらも行えるということです。
ディジタル署名の流れ
データをハッシュ関数に入れ、ハッシュ値と秘密鍵を使って署名処理することで、ディジタル署名が出来上がります。
秘密鍵は、本人しか持っていないものだから、公開鍵で検証することで
本人であることが分かるんだね。(署名の検証)
受信したら、データファイルを同一のハッシュ関数にいれ、公開鍵とハッシュ値を使って署名検証処理をすることで、本人かどうかを検証できます。
- 署名者以外のものによる改ざんを検出できる(署名者が改ざんした場合は検知できない)
- 署名者による否認は防止できる
署名者本人は、改ざん後に署名し直せば、簡単に改ざん可能です。
これを防ぐために、タイムスタンプをつけることが大事です。
タイムスタンプ
タイムスタンプは、メッセージの内容と信頼できる第さん者が証明する仕組みです。
タイムスタンプにより、次のことが証明できます。
- タイムスタンプの日時におけるデータ(ファイル)の存在
- タイムスタンプの日時以降、署名者も含め、誰も内容を変更していないこと
タイムスタンプは、信頼できる第三者機関であるタイムスタンプ局(TSA)が実施します。
署名を扱う方式
CMS
バイナリ形式(0か1で表現される)のフォーマットです。
S/MIMEやPDFファイルでの署名に使われます。
バイナリ形式なので、Web技術のようなマークアップ形式とは相性がよくありません。
XML署名
マークアップ言語であるXMLを利用して署名を扱います。
マークアップ言語では、タグ(<li>など)を使うよ
XML署名の形式は、次の3種類あります。
- 分離署名(Detached署名)
- 包含署名(Enveloped署名)
- 内包署名(Enveloping署名)