取引先に見積書のファイルを送る際、そのファイルを自分が作成したことと、途中で内容が 書き換えられていないことを相手が確認できるように、デジタル署名を付けた。署名の作成と 検証に使う鍵の組合せとして、適切なものはどれか。
正解:ウ
ア受信者の公開鍵で署名を作成し、受信者の秘密鍵で検証する。
誤り。これは内容を第三者に読ませないための暗号化で使う鍵の向きです。受信者の 公開鍵は誰でも手に入るので、この向きでは誰でも同じ署名を作れてしまいます。
イ受信者の秘密鍵で署名を作成し、送信者の公開鍵で検証する。
誤り。鍵の持ち主が入れ替わっています。受信者の秘密鍵は受信者しか持たないため、 送信者はそもそも署名を作成できません。署名は作る人自身の鍵で作ります。
ウ送信者の秘密鍵で署名を作成し、送信者の公開鍵で検証する。
正解。秘密鍵を持つのは送信者だけなので、送信者の公開鍵で検証が通れば、その人が 作ったこと(本人性)と、内容が変わっていないことが確かめられます。
エ送信者と受信者が共有する一つの鍵で、作成と検証の両方を行う。
誤り。同じ鍵を両者が持つと、受信者も全く同じ署名を作れます。「送信者が作った」 証明にならず、後から本人に否定されたときに反論できません。
印鑑は本人だけが持ち、印影は誰でも照合できる
デジタル署名の鍵は、印鑑と印鑑登録証明書の関係に似ています。 押せるのは印鑑を持つ本人だけですが、押された印影が本物かどうかは、 登録された情報と見比べれば誰でも確認できます。
- 署名鍵=送信者の秘密鍵。本人しか持たないので、本人しか署名を作れない
- 検証鍵=送信者の公開鍵。誰でも入手でき、誰でも検証できる
秘密にするときとは鍵の向きが逆
内容を秘密にしたいときは、受信者の公開鍵で暗号化し、受信者だけが持つ秘密鍵で 復号します。受け取る人の鍵を使う点が、署名とちょうど逆になります。
| 目的 | 使う鍵の向き |
|---|---|
| デジタル署名(本人性・改ざん検知) | 送信者の秘密鍵で作成し、送信者の公開鍵で検証 |
| 暗号化(機密性) | 受信者の公開鍵で暗号化し、受信者の秘密鍵で復号 |
| タイムスタンプ(時刻認証) | 第三者機関が時刻情報とともに署名を付与 |
署名で分かること、分からないこと
デジタル署名で確認できるのは「誰が作ったか」「内容が変わっていないか」、 そして本人が後から作成を否定できないこと(否認防止)の3つです。
一方、署名を付けてもファイルの中身はそのまま読めます。 秘密にしたいなら、署名とは別に暗号化が必要です。 「その時刻に確かに存在した」ことを示すのはタイムスタンプの役割で、これも署名とは別物です。
試験では「鍵の向き」と「署名だけでは機密性は守れない」の2点が繰り返し問われます。 迷ったら、署名は作る人の鍵、暗号化は受け取る人の鍵、と覚えておくと取り違えません。