RSA暗号とは
公開鍵暗号と電子署名の基礎知識で解説したように、RSAというのは公開鍵暗号の具体的な仕様です。
RSAという名前は発明者の3人の名前の頭文字からつけられています。歴史的なところはRSA暗号に関するWikipediaのエントリを参照してください。
RSA暗号の仕様
RSA暗号の仕様を管理している人は誰?
RSA暗号は1983年にアメリカで特許が取られていて、RSAセキュリティという会社(現在はEMCコーポレーションに買収されている)がその権利を持っていましたが2000年に特許が切れています。
RSAセキュリティ社がRSAの普及を進めていく中で、PKCSという規格群を制定しました。PKCSとは、Public Key Cryptography Standards の略で、公開鍵暗号のやり方やファイルフォーマットなどを規定しています。
なので、基本的にはPKCSを読めばRSA暗号に関する仕様は網羅されているはずなのですが、PKCSの一部はRFCとしても登録されていたり、また、関連技術仕様が ITU-Tや ISOの仕様としても登録されていたりと、どこを読めば良いのか、何が最新なのかよくわかりません。
PKCSの全体像
全体像が掴みにくいRSA暗号ですが、やはりRSAセキュリティ社(現、EMCコーポレーション)が策定した PKCSを起点に追いかけていくのが良さそうです。
PKCSは以下のように PKCS #1〜#15の規格からなっています。うち2つは廃案で、一部は他の仕様に引き継がれています。また、一部の規格はRFCにも登録されています。
番号 | 説明 | 対応RFC |
---|---|---|
PKCS #1 | RSA暗号に関する標準 | RFC 3447 |
PKCS #2 | (廃案) | |
PKCS #3 | Diffie-Hellman鍵共有に関する標準 | |
PKCS #4 | (廃案) | |
PKCS #5 | パスワードに基づく暗号化の標準 | RFC 2898 |
PKCS #6 | 証明書のフォーマットの拡張(X.509 v3に引き継がれている?) | |
PKCS #7 | 暗号文や署名のフォーマットに関する標準 | RFC 2315 |
PKCS #8 | 秘密鍵のフォーマットに関する標準 | RFC 5208 |
PKCS #9 | 属性タイプの拡張 | |
PKCS #10 | CSR (証明書署名要求)のフォーマットに関する標準 | RFC 2986 |
PKCS #11 | 暗号トークンインターフェースの仕様 | |
PKCS #12 | 個人情報交換のためのフォーマットに関する標準。 秘密鍵と証明書などをセットで保存するためのもので、.p12 という拡張子はこれを表している。 |
|
PKCS #13 | 楕円曲線暗号の標準 (策定中?) | |
PKCS #14 | 擬似乱数の標準 (策定中?) | |
PKCS #15 | 暗号トークン情報フォーマットの標準 |
公開鍵暗号と電子署名に関わる仕様はどのあたり?
PKCSだけ見てもその仕様の範囲は非常に広いので、全部を読むのは大変です。公開鍵暗号や電子署名に関する知識としてはどのあたりを見ればよいのでしょうか。いくつかピックアップしてみました。
PKCS #1
公開鍵暗号と電子署名の範囲で一番重要なのは、PKCS #1 です。
PKCS #1は RFC 3447 としても公開されています。
X.509
X.509も公開鍵暗号に関する規格で、カバーする範囲も広いのですが、一般的には「X.509証明書」というコンテキストでのみ使われます。 X.509 と聞いたら「デジタル証明書のこと」と思ってほぼ間違い無いです。
証明書のフォーマットにつていは、PKCS #6でも触れられているようですが、現在は X.509に引き継がれているようです。
デジタル証明書とは?
https://webpo.jp のように暗号化されたWebサイトを開くと、ブラウザのアドレスバー付近に鍵のアイコンが表示され、クリックすると証明書の中身を見ることができます。
このようなデジタル証明書のフォーマットやその署名方法などを規定したのが X.509という規格です。