デジタル署名とはデータが
「途中で改ざんされていないか」
「誰が送信したか」
を確認できるようにするためのものです。
使用される場面
主にメール送受信の場面で使用されます。
その他にも
・SSL / TLS 通信時
・オンライン上での文書(法的文書や契約書も含む)のやり取り
・ソフトウェアの信頼性
・オンライン取引での安全性
などで使用されているようです。
使われている技術
公開鍵暗号化方式を応用して使っています。ただし注意点としてメール本文全体が暗号化されるわけではないということがあります。
つまりデジタル署名は暗号化されているわけではないので当然複合化もできません。
ここで少しどんな仕組みかを確認してみます。
公開鍵で暗号化された文書はそのペアの秘密鍵でしか複合できません。逆も真なりで秘密鍵で暗号化された文書はそのペアの公開鍵でしか複合できません。
なのでメールでデジタル署名を使って送信して相手が複合できたということは途中で改ざんもされていないし、ペアを持っている相手からの文書だということが保証されるんですね。
デジタル署名に必要な4つのアイテム
ハッシュ関数
ハッシュ値(ランダムな文字列)を作り出す関数になります。ハッシュ関数には種類があります。そしてこのハッシュ関数のどれを使うかはデジタル署名を行う際に使われるプロトコル(S/MIME、PGP、TLS)などによって間接的に決まります。送信者側から送信されたり、デジタル署名に含まれているということはない点にご注意ください。
メッセージダイジェスト
メール本文(全文)をハッシュ関数に通したデータになります。このデータを暗号化して送り、受信者側でも本文とハッシュ関数を使って照らし合わせることで改ざんがないことを確認できます。
検証鍵とは
送信者が作成した公開鍵のことです。メッセージと一緒に受信者に送信され受信者がメッセージを開く時、つまりメッセージダイジェストの検証を行う時に使用されます。
署名鍵とは
送信者が作成した秘密鍵のことです。メッセージダイジェストを暗号化する時に使用されます。
検証鍵、署名鍵の有効期限は1年から3年が一般的ですがセキュリティレベルを上げる場合はもっと短くする場合もあります。
デジタル署名を使ったメール送信の流れ
デジタル署名はメールに限らず使われますが、メールでの使用が多いためメールの例を整理してみます。
1.送信者がまずメール本文からメッセージダイジェストをハッシュ関数を使って作成します。
2.秘密鍵と公開鍵のペアを作成します。(この処理は最初にやり取りを始める時のみでそのあとは送信先が変わってもペアを使い回します。)
3.メッセージダイジェストをこの秘密鍵(署名鍵)を使って暗号化します。
4.暗号化されたメッセージダイジェストに公開鍵を組み込んだものつまりデジタル署名をメールに添付して送信します。
ーーーーここから受信者側になりますーーーー
5.メール本文と公開鍵、デジタル署名を受け取ります。
6.デジタル署名を受け取った公開鍵で複合化しメッセージダイジェストに複合ます。
7.受信側でもハッシュ関数で受け取った本文からメッセージダイジェストを作り直します。
8.手順6の受け取ったメッセージダイジェストと手順7で受信側で新しく作成したメッセージダイジェストが同じであれば改ざんされていないこと、送信者が間違いなく本人であることが確認できます。
![](https://www.xn--4grr4jzer0z13b8ydc6hw8c14slx0cfdtdwftp3d.website/wp-content/uploads/2023/12/デジタル署名メール送信の流れ-1-1024x595.gif)
ハッシュ関数はどのようにして受信者に伝わるのか?
ここでハッシュ関数が送信者と受信者でなぜ共有できているか疑問に思われる方もいると思います。このハッシュ関数は署名プロトコルや証明書に含まれるなど様々な方法で伝わるようです。
コメントを残す