ディジタル署名

ディジタル署名とは?

ディジタル署名は、改ざんの検出と本人確認が可能です。


改ざんの検出はメッセージ認証、本人確認はエンティティ認証なので、
ディジタル署名はメッセージ認証とエンティティ認証のどちらも行えるということです。


ディジタル署名の流れ

引用:ディジタル署名 〜ディジタル署名の目的|情報処理安全確保支援士 – SE娘の剣 –


データをハッシュ関数に入れ、ハッシュ値と秘密鍵を使って署名処理することで、ディジタル署名が出来上がります。


秘密鍵は、本人しか持っていないものだから、公開鍵で検証することで
本人であることが分かるんだね。(署名の検証)



受信したら、データファイルを同一のハッシュ関数にいれ、公開鍵とハッシュ値を使って署名検証処理をすることで、本人かどうかを検証できます。

  • 署名者以外のものによる改ざんを検出できる(署名者が改ざんした場合は検知できない)
  • 署名者による否認は防止できる




署名者本人は、改ざん後に署名し直せば、簡単に改ざん可能です。

これを防ぐために、タイムスタンプをつけることが大事です。

タイムスタンプ

タイムスタンプは、メッセージの内容と信頼できる第さん者が証明する仕組みです。

タイムスタンプにより、次のことが証明できます。

  • タイムスタンプの日時におけるデータ(ファイル)の存在
  • タイムスタンプの日時以降、署名者も含め、誰も内容を変更していないこと


タイムスタンプは、信頼できる第三者機関であるタイムスタンプ局(TSA)が実施します。

引用:タイムスタンプとは?|総務省


署名を扱う方式

CMS

バイナリ形式(0か1で表現される)のフォーマットです。


S/MIMEやPDFファイルでの署名に使われます。

バイナリ形式なので、Web技術のようなマークアップ形式とは相性がよくありません。



XML署名

マークアップ言語であるXMLを利用して署名を扱います。


マークアップ言語では、タグ(<li>など)を使うよ



XML署名の形式は、次の3種類あります。

  • 分離署名(Detached署名)
  • 包含署名(Enveloped署名)
  • 内包署名(Enveloping署名)
引用:XMLのデジタル署名をJavaで実装する|レスキューナウ(24時間365日 災害・危機対応をサポート)