ディジタル署名とは?
ディジタル署名は、送信されたデータの『真正性』と『完全性』の証明に用います。
●ディジタル署名が証明できること
・真正性:送信者本人がデータを送信したこと
・完全性:データが改ざんされていないこと
・真正性:送信者本人がデータを送信したこと
・完全性:データが改ざんされていないこと
また、ディジタル署名は次の手順で作成します。
●ディジタル署名の作成手順
①データをハッシュ関数(※後述)で変換し、メッセージダイジェストを作成
②メッセージダイジェストを送信者の秘密鍵で暗号化
①データをハッシュ関数(※後述)で変換し、メッセージダイジェストを作成
②メッセージダイジェストを送信者の秘密鍵で暗号化
つまり、ディジタル署名は『データのメッセージダイジェストを送信者の秘密鍵で暗号化(署名)をしたもの』です。
[補足]ハッシュ関数
ハッシュ関数とは、入力したデータを固定長の出力データに変換する関数です。入力データをメッセージ、出力データをメッセージダイジェスト(ハッシュ値)と呼びます。
ハッシュ関数には、『非衝突性』、『一方向性』の特性があります。
●ハッシュ関数の特性
①非衝突性:メッセージ(入力)が異なれば、メッセージダイジェスト(出力)も異なる
②一方向性:メッセージダイジェスト(出力)からメッセージ(入力)へ逆変換できない
①非衝突性:メッセージ(入力)が異なれば、メッセージダイジェスト(出力)も異なる
②一方向性:メッセージダイジェスト(出力)からメッセージ(入力)へ逆変換できない
大きなメッセージ(入力)を一意の固定長のメッセージダイジェスト(出力)に変換が可能なため、認証技術のディジタル署名では、データの改ざんがないことの照合に利用されます。
ディジタル署名の手順
具体的に、送信者(Aさん)のディジタル署名を受信者(Bさん)が真正性と完全性を確認するまでの流れを見ていきます。
工程 | 説明 |
---|---|
① | 送信者(Aさん)がデータをハッシュ関数で変換し、メッセージダイジェストAを作成 |
② | 送信者(Aさん)が自身(Aさん)の秘密鍵(※署名鍵)でメッセージダイジェストAを暗号化し、ディジタル署名を作成 |
③ | 送信者(Aさん)は受信者(Bさん)へディジタル署名を送付 |
④ | 受信者(Bさん)は送信者(Aさん)の公開鍵(※検証鍵)でディジタル署名を復号し、メッセージダイジェストAを作成 |
⑤ | 受信者(Bさん)は送信者(Aさん)から受け取った平文をハッシュ関数で変換し、メッセージダイジェストBを作成 |
⑥ | 受信者(Bさん)はメッセージダイジェストAとメッセージダイジェストB比較し、一致することを確認 |
ここで、ディジタル署名で利用した、公開鍵暗号方式の送信者の秘密鍵と公開鍵を、それぞれ署名鍵、検証鍵と呼びます。
●署名鍵/検証鍵
・署名鍵:メッセージダイジェストを暗号化した送信者の秘密鍵
・検証鍵:ディジタル署名を復号した送信者の公開鍵
・署名鍵:メッセージダイジェストを暗号化した送信者の秘密鍵
・検証鍵:ディジタル署名を復号した送信者の公開鍵
ディジタル署名による真正性・完全性の証明
ディジタル署名では、真正性と完全性を証明可能です。この理由について、確認します。
●真正性を証明できる理由
ディジタル署名が送信者本人の公開鍵で復号可能
=送信者本人の秘密鍵で暗号化された
=送信者本人が送付した
ディジタル署名が送信者本人の公開鍵で復号可能
=送信者本人の秘密鍵で暗号化された
=送信者本人が送付した
●完全性を証明できる理由
メッセージダイジェストAとメッセージダイジェストBが一致
=ハッシュ関数で変換したメッセージと平文が同じ
=改ざんがない
メッセージダイジェストAとメッセージダイジェストBが一致
=ハッシュ関数で変換したメッセージと平文が同じ
=改ざんがない
つまり、真正性は、ディジタル署名が送信者の秘密鍵(署名鍵)で暗号化されたことの確認で証明します。完全性は、メッセージダイジェストが一致から、入力であるデータも一致することが証明できます。
【まとめ】ディジタル署名
今回、学んだ内容をおさらいしておきましょう。
用語 | 説明 |
---|---|
ハッシュ関数 | 入力したデータを固定長の出力に変換する関数 |
メッセージ | ハッシュ関数の入力 |
メッセージダイジェスト (ハッシュ値) | ハッシュ関数の出力 |
ディジタル署名 | 送信されたデータの『真正性(送信者が本人であること)』と『完全性(改ざんされていないこと)』の証明に用いるもの データのメッセージダイジェストを送信者の秘密鍵で暗号化(署名)したもの |
署名鍵 | メッセージダイジェストを暗号化した送信者の秘密鍵 |
検証鍵 | ディジタル署名を復号した送信者の公開鍵 |
コメント