一般財団法人日本情報経済社会推進協会

ナビゲーションをスキップ

EN

お問い合わせ

電子署名と公開鍵暗号方式

公開鍵暗号方式

電子署名で重要な役割を果たす公開鍵暗号は、暗号化と復号とで異なる2つの鍵(秘密鍵と公開鍵)を使用する方式です。秘密鍵は、その所有者(署名者)によって秘密を保って管理される鍵であり、秘密鍵と対になる公開鍵は基本的に公開することが可能で、他の人(署名検証者)に利用してもらうための鍵です。電子署名は、秘密鍵鍵で署名を作成し、秘密鍵と対になる公開鍵で検証することになります。
 電子署名法で、使用が認められている「公開鍵暗号」としては、RSA暗号方式、DSA署名方式、およびECDSA署名方式の3種類です。このうち、DSA署名方式とECDSA署名方式は、公開鍵暗号に分類されますが、署名しかできない公開鍵暗号方式です。

1.RSA暗号方式

RSA暗号方式は、現在最も一般的に使われている公開鍵暗号方式です。RSA暗号方式では、2つの大きな素数 p と q を生成し、 p と q の積 n ( n = p × q ) を用いて、秘密鍵(プライベート鍵とも呼ばれます) e と公開鍵 d の対を生成するとともに、 p と q の積 n も公開鍵の一部として用いています。そのため、 n を素因数分解することが難しい(素因数分解するためには、膨大な計算時間が必要となる)ことが必要となります。現在であれば、300桁を超えるような積nを素因数分解して、素因数 p と q を求めることが困難であることが知られており、RSA暗号の安全性の根拠の一つとなっています。
 RSA暗号方式を用いた電子署名では、電子文書の作成者は、電子文書のハッシュ値を自らの秘密鍵と公開鍵の一部である n で「暗号化」し、電子文書に対する署名とします。電子文書と署名を受信者(検証者)に渡します。検証者は、署名を作成者の公開鍵と公開鍵の一部である積 n を用いて「復号」し、電子文書のハッシュ値を入手します。また、検証者は、受け取った電子文書からハッシュ関数を用いて、独自にハッシュ値を計算し、「復号」で得られたハッシュ値と照合します。受信者が計算したハッシュ値と電子署名を復号した結果であるハッシュ値が一致すれば、公開鍵に対応した秘密鍵を持つ文書の作成者が署名を生成したことと電子文書が改ざんされていないことが確認できることになります。

RSA暗号を用いた署名作成

RSA暗号を用いた署名検証

2.DSA(Digital Signature Algorithm)署名方式

RSA暗号方式は、基本的に暗号化と復号の処理を電子署名として利用したのに対して、DSA署名方式は、正の整数同士の演算を用いた電子署名専用の公開鍵暗号です。DSA署名方式の安全性の根拠は、「離散対数問題(DLP:Discrete Logarithm Problem)」(注1)と呼ばれる数学の問題を利用しています。DSA署名では、離散対数問題を計算する数値の集合の大きさ L と秘密鍵の長さ N で安全性が決まります。通常、 L の長さをDSA署名方式での「鍵長」と呼んでいます。
 DSA署名方式を用いた電子署名では、電子文書に署名する際に、電子文書のハッシュ値、ドメインパラメータ(注2) 、秘密鍵と電子文書に対応してランダムに発生させる秘密値を用い、「べき乗剰余」と呼ばれる演算を用いて署名 ={ r,s }を計算します。検証の際には、電子文書 、署名 { r,s } のうち値 s 、および公開鍵からべき乗剰余演算した結果 r' と署名{ r,s }に含まれている値 r とが一致すれば、公開鍵に対応した秘密鍵を持つ文書の作成者が署名を生成したことと電子文書が改ざんされていないことが確認できることになります。

(注1) 離散対数問題 「素数 p と定数 g が与えられたとき、ある整数 x に対して g の x 乗( g i )を、 p で割った余り y を計算することは容易ですが、 y から x を計算することは困難」という問題。

(注2)ドメインパラメータ DSA署名やECDSA署名を実行(計算)する際に、署名者(電子文書の作成者)と検証者の双方で持つ共通な値。

3.ECDSA(Elliptic Curve Digital Signature Algorithm)署名方式

ECDSAとは、楕円曲線DSA署名方式の略号です。単純に言えば、楕円曲線上の演算を用いてDSA署名を実現する方式です。DSA署名方式は、正の整数同士の乗算が基本的な計算ですが、ECDSA署名方式は、楕円曲線と呼ばれる数式によって定義される特殊な加算法(楕円曲線上の有理点同士の加算)が基本的な計算になります。
 また、DSA署名方式では、2048ビットや3072ビットの「鍵長」が推奨されているのに対して、ECDSA署名方式での推奨される「鍵長」は、その10分の1程度の長さ(224ビット~255ビット)です。しかし、DSA署名方式と同様にドメインパラメータや楕円曲線に関する情報が必要です。

DSA(ECDSA)暗号を用いた署名作成

DSA(ECDSA)暗号を用いた署名検証

(このコンテンツは、デジタル庁委託事業「電子署名及び認証業務に係る利用促進業務」の一環として作成されました。)