🙆‍♀️

デジタル署名はなりすまし防止策ではない

2023/09/10に公開

はじめに

最近仕事で必要になったので暗号化とかデジタル署名について調べていました。
その過程で、自分の中でこんがらがった点があり、しかもそれはネット上でも誤解されている記事が散見されます。
よってここにまとめたいと思います。

それはタイトル通り、「デジタル署名はなりすまし防止策ではない」ということです。

デジタル署名とは

詳細を説明する前に、そもそもデジタル署名とは、をおさらいしておきます。

  1. アリスは、秘密鍵と公開鍵を作成
  2. アリスは、秘密鍵とメッセージから署名を作成
  3. アリスは、メッセージ、署名、公開鍵をボブに送信
  4. ボブは、公開鍵を使って署名を検証

誤解の詳細

ありがちな誤解内容は以下のようなものです。

  • 公開鍵による検証により、その署名が間違いなくアリスによって作られたものであることが分かる。
  • もしアリス以外の人物が作った署名ならば検証は失敗するはず

つまり、デジタル署名によってなりすましを検知できるというのです。

何が間違っている?

4で検証する内容は、より詳細には以下です。

  • 署名は、ボブが手にしたメッセージおよび公開鍵と対になる秘密鍵によって作成された

これによって保証できるのは以下の事実です。

  1. メッセージを作った人物と署名した人物が同じである
  2. 署名時からメッセージ内容は変わっていない

ん?1ってつまりなりすまし防止じゃないの?と思われましたか?よく読むと違います。

署名は確かにメッセージを作った人物によって作成されました。ただし、それが期待している人物によって作られたかは不明です。

上記が言っているのは、
「アリスが作成したメッセージを途中で悪意のある第三者マロリーが改竄していない」ということです。

一方、マロリーが

  1. 自分で作った(適当な)メッセージに自分で作った秘密鍵で署名
  2. 「自分はアリスだ」と言い張ってメッセージ、署名、公開鍵を送信

ということをした場合、検証は成功します。なぜなら署名は間違いなく検証に用いた(マロリーの)公開鍵と対応する秘密鍵によって作成されたからです。

予想される反論

Q. 秘密鍵はアリスしか持っていないのだから、署名がその鍵によってなされたことが分かれば、署名の作成者はアリスであると証明できるのでは?

A. 物理的な鍵とのアナロジーで考えるとこのような勘違いに陥りがちです。
秘密鍵、公開鍵というのはある一定の関係を持った数字の組です。いわばただの数字です。規則さえ知っていれば誰でも作れます。

Q. 秘密鍵と公開鍵の対応規則を知っていないと正しい鍵は作れないのだから、秘密鍵を作ったのはアリスだと分かるのでは?

A. 秘密鍵と公開鍵の対応規則は公開されています。誰でも作成できます。
もちろん、「検証に用いた公開鍵」と対になる秘密鍵は、公開鍵を作った本人にしか作れません。
しかし「正しい対応規則を満たすような公開鍵と秘密鍵のペア」は誰にでも作れます。

デジタル署名の正当性は、「たとえ公開鍵の値と鍵作成ロジックを知っていても、それと対になる秘密鍵は作成できないこと」によって担保されています。
「公開鍵と秘密鍵の対応規則の秘密を知っている」ことに依存しているわけではありません。
(補足ですが、暗号理論の世界では独自のアルゴリズムを考え出すのはご法度で、アルゴリズムが公開されていることが望ましいとされています)

ではなりすまし防止はどうするの?

一般に、なりすまし防止のためには「この署名を作ったのはアリスです」という「証明書」を作成します。
もちろん、自分で自分の証明書を作っただけでは信頼できませんから、信頼のおける第三者(公共機関など)に証明書を作成してもらったり、複数人に証明書を作ってもらったりします。

まとめ

  • デジタル署名で保証できるのは

    • メッセージを作った人物と署名した人物が同じである
    • 署名時からメッセージ内容は変わっていない
  • しかし、メッセージ(と署名、公開鍵)の送信者が期待する人物かは保証できない

  • それを保証するためには、証明書を作成してもらう

Discussion