kakke18’s blog

ゆるふわ学生エンジニア

ディジタル署名は公開鍵暗号と対称関係にあるのか

暗号技術のすべて』の第7章を参考にしました。 ディジタル署名電子署名)についてです。

ディジタル署名はよく「公開鍵暗号とは対称関係である」といわれますが、そうではないということを説明していきます。

ディジタル署名とは

署名とは、「本人であることを明らかにするために自分の氏名を記すこと」です。

  • 現実世界:文書に捺印
  • 電子的:電子文書に捺印に相当するデータを付与

このように電子的に署名することを ディジタル署名といいます。

ディジタル署名アルゴリズム

ディジタル署名は、

の3つのアルゴリズムで構成されます。 今回は、内部構造は気にせずに入出力だけ書いていきます。

鍵生成アルゴリズム

  • 入力:k(セキュリティパラメータ)
  • 出力:vk(検証鍵)、sk(署名鍵)

検証鍵は誰でも参照できるようにし、署名鍵は他人には秘密にするものです。

署名作成アルゴリズム

  • 入力:m(平文)、sk(署名鍵)
  • 出力:σ(署名)

入力に平文が含まれるので、署名は、平文によって異なるデータとなります。

署名検証アルゴリズム

  • 入力: m(平文)、σ(署名)、vk(検証鍵)
  • 出力:0 or 1

検証が成立すれば1、成立しなければ0を出力します。

ディジタル署名の誤解

アルゴリズムを見ると分かる通り、検証鍵が公開されており、 署名鍵が秘密にされていることから、公開鍵暗号と対比し、

  • 検証鍵=公開鍵
  • 署名鍵=秘密鍵

と捉え,

ディジタル署名秘密鍵で暗号化し、公開鍵で復号する」

と説明されることがありますがこれは大きな誤解です。

公開鍵暗号からディジタル署名が作れるのか?

署名作成アルゴリズム公開鍵暗号の復号アルゴリズム、 署名検証アルゴリズム公開鍵暗号の暗号アルゴリズムを 用いることでディジタル署名アルゴリズムもどきを 作成することが出来ます(下図)。 f:id:kakke18:20190305232253j:plain f:id:kakke18:20190305235359j:plain

これのどこが問題なのでしょうか? 実は、署名検証アルゴリズムに問題があります。 同一の平文に対して、異なる暗号文を出力するような暗号のアルゴリズムを 署名検証アルゴリズムで用いると、検証のための m' が実行したタイミングによって 異なるので、検証がうまくいきません。

結論

以前の記事 で紹介したRSA暗号のように平文空間と暗号文空間が同じな確定的暗号なら 問題ないですが、ElGamal暗号のような確率的暗号では、このような構成に することはできません。

まとめ

公開鍵暗号ディジタル署名は対称関係にありません!!