OpenSSL と RSA-PSS

OpenSSL を使って,あるデータに RSA 署名を付けようとした.方法や仕組みを理解するために,情報を探した.

電子証明書認証局を省略すると,自己署名証明書を添え付けるらしい.私有鍵という後は private key を表す.*1

手順はこうなるか.前半部はデータ送信者の作業だ.

  1. 署名者が私有鍵を生成する
  2. 署名鍵から署名者や有効期限など,種々の情報を含む電子証明書を生成する
  3. 電子証明書を自身が署名する(自己署名証明書を作る)
  4. データの署名を作り,付加する(データへの署名となる)
  5. データを自己署名証明書と併せる
  6. 署名検証者は自己署名証明書を検証した後,データの署名を証明書を使って検証する

「データに署名する」とはどういうことか.「データを私有鍵で暗号化すること」だろうか.

署名すると,どうなるんだろう.

  • データ長
  • 検証にかかる時間

情報

The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured, and Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a full-strength general purpose cryptography library. The project is managed by a worldwide community of volunteers that use the Internet to communicate, plan, and develop the OpenSSL toolkit and its related documentation.

OpenSSL is based on the excellent SSLeay library developed by Eric A. Young and Tim J. Hudson. The OpenSSL toolkit is licensed under an Apache-style licence, which basically means that you are free to get and use it for commercial and non-commercial purposes subject to some simple license conditions.

/index.html

The pkeyutl command can be used to perform public key operations using any supported algorithm.

/docs/manmaster/man1/pkeyutl.html

There are also two schemes for dealing with signatures:

  • RSASSA-PSS: improved probabilistic signature scheme with appendix; based on the Probabilistic Signature Scheme originally invented by Bellare and Rogaway.
  • RSASSA-PKCS1-v1_5: old signature scheme with appendix as first standardized in version 1.5 of PKCS#1.
Probabilistic signature scheme - Wikipedia

RSA PKCS#1 v1.5署名/RSA-PSS

RSAプリミティブを利用した署名方式はいくつかあるが、標準化などでよく利用されているのはRSA PKCS#1 v1.5署名とRSA-PSSである[参考文献6]。これらの違いも、RSA暗号の場合と同様、基本的にパディングルールの違いによるものと考えてよい。

RSA PKCS#1 v1.5署名は、世界中で最も広く使われているデジタル署名方式であり、現時点までに有効な攻撃方法が示されたことはないものの、理論的にはいまだ署名としての最も高い安全性(適応的選択文書攻撃に対して存在的偽造を許さないこと)を満たすことが証明されていない。これに対し、RSA-PSSは最も高い安全性を満たすという証明可能安全が示されている[参考文献12]。

以上のことから、相互接続性などの点からRSA PKCS#1 v1.5署名も当面は利用され続けると考えられるが、最近標準化される署名方式としてはRSA-PSSの方が優先的に取り扱われることが多い。このため、中長期的にはRSA-PSSに移行する可能性は高い。

これだけは知っておきたいアルゴリズム 〜ハッシュ関数・公開鍵暗号・デジタル署名編 (3/3):デファクトスタンダード暗号技術の大移行(4) - @IT

RSASSA-PSS という記述もある.RSA Signature Scheme with Appendix - Probabilistic Signature Scheme と展開される.直訳は「署名用の RSA,確率的署名法」でいいのかな.RSA-PSS との表記揺れは,何が原因なんだろう.

*1:private key を秘密鍵でなく私有鍵と呼ぶのは,共通鍵暗号方式における鍵を secret key から秘密鍵と呼べるからだろう.混同を避けるためなら納得できるが,発生源が分からない