HOME情報セキュリティ資料・報告書・出版物調査・研究報告書情報セキュリティ技術動向調査(2010 年上期)

本文を印刷する

情報セキュリティ

情報セキュリティ技術動向調査(2010 年上期)

1 楕円曲線暗号の整備動向

金岡 晃

1. 楕円曲線暗号整備の背景

  現在利用されている公開鍵暗号のほとんどはRSA暗号方式であると言っても過言ではないが、標準化がされている公開鍵暗号の方式は他にも存在する。特に楕円曲線暗号(ECC)は同レベルの強度を持つRSA暗号と比較して鍵長が短いことに加え処理の速さも特徴となっていることからポストRSA暗号として注目を浴びている。
  ECCは単一の暗号アルゴリズムではなく、楕円曲線上の離散対数問題を安全性の根拠とする暗号方式の総称である。そこには、楕円曲線上でDiffie-Hellman(DH)鍵共有を行うECDHや楕円曲線上でDigital Signature Algorithm(DSA)を実現するECDSA、楕円曲線上でMenezes-Qu-Vanstone(MQV)方式を実現するECMQVなどが含まれる。
  2005年、米国国家安全保障局(NSA)は機密情報の保護のために用いる暗号アルゴリズムのリストであるSuite B[1]を発表した。Suite Bでは暗号化と鍵交換、電子署名、ハッシュ関数のアルゴリズムがそれぞれ定められているが、その鍵交換と電子署名のアルゴリズムにRSA暗号はリストに入っておらず、鍵交換にはECDH、電子署名にはECDSAが指定されていた。このことはECCをポストRSA暗号としてさらに強く注目を浴びせることとなった。

暗号化 128ビットまたは256ビット鍵のAES
鍵交換 P-256曲線またはP-384曲線を使ったECDH
電子署名 P-256曲線またはP-384曲線を使ったECDSA
ハッシュ関数 SHA-256またはSHA-384

  その後、RFC 4869[2]、5008[3]、5430[4]といったSuite Bに合わせた仕様も策定され、またNSA自身からECDH版のSuite Bの実装ガイド[5]も公開されてくるなど、Suite BやECCの仕様整備が進んできた。

2. 今期の動向

  2010年上期では、NSAがSuite Bの実装ガイドのECDSA版である「Suite B Implementer's Guide to FIPS 186-3 (ECDSA)」[6]を2月に公開し、またECC関連としては3つの新規RFCと3つのRFCの改訂または更新があった。

新規RFC RFC 5759 「Suite B Certificate and Certificate Revocation List (CRL) Profile」[7] 2010年1月
RFC 5639 「Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation」[8] 2010年3月
RFC 5915 「Elliptic Curve Private Key Structure」[9] 2010年6月
更新・改訂RFC RFC 5753 「Use of Elliptic Curve Cryptography (ECC) Algorithms in Cryptographic Message Syntax (CMS) 」[10] 2010年1月
RFC 5758 「Internet X.509 Public Key Infrastructure:Additional Algorithms and Identifiers for DSA and ECDSA 」[11] 2010年1月
RFC 5903 「Elliptic Curve Groups modulo a Prime (ECP Groups) for IKE and IKEv2」[12] 2010年6月

3. NSA Suite B Implementer's Guide to FIPS 186-3 (ECDSA)

  2010年2月に発行された「NSA Suite B Implementer's Guide to FIPS 186-3 (ECDSA)」[6]はSuite Bに含まれているECDSAの実装ガイドである。ECDSA自身はNISTのFIPS 186-3[13]で定められているものであるが、FIPS 186-3は電子署名方式についての標準であり、DSA(Disital Signature Algorithm)、RSA署名、ECDSAが定められており、ECDSAだけを定めたものではない。また、暗号アルゴリズムそのものはANSIのX9.62で定められているなどFIPS 186-3を読むだけではECDSAの実装は困難なことから作成されたと考えられる。
  ガイドは用語定義や略称についての解説、ECDSAのドメインパラメータ、鍵ペアの生成と検証、管理方法、署名の生成と検証方法などが示されている。またAppendixでは鍵ペア生成と検証の詳細と、逆元の計算法や整数からビット列データへの変換法、そして利用される曲線についての詳細が記載されている。
  FIPS 186-3でも、ECDSAで利用が推奨される楕円曲線が15種類示されている。しかしこのうちSuite Bで規定されているのはP-256とP-384の2種類のみであり、ガイド中のAppendixではP-256とP-384のパラメータのみ記載がされている。

P-192
P-224
P-256
P-384
P-521
B-163
B-233
B-283
B-409
B-571
K-163
K-233
K-283
K-409
K-571

4. IETFでの関連仕様(RFC)

4.1 新規RFC

 
  • RFC 5639「Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation」
  • Brainpoolによる楕円曲線群の仕様。Brainpoolの楕円曲線群は電子パスポートePassportで利用可能な楕円曲線群である。

  • RFC 5759「Suite B Certificate and Certificate Revocation List (CRL) Profile」
  • Suite B対応のX.509v3証明書プロファイルとX.509v2 CRLプロファイルを定めた仕様。

  • RFC 5915「Elliptic Curve Private Key Structure」
  • 楕円曲線暗号のPrivate鍵フォーマットがASN.1で規定されている。

4.2 更新・改訂RFC

 
  • RFC 5753「Use of Elliptic Curve Cryptography (ECC) Algorithms in Cryptographic Message Syntax (CMS) 」
  • RFC 3278の改訂。CMSでのECCの利用についての仕様。参照仕様の変更と利用可能ハッシュ関数の拡大(SHA2対応)がされている。

  • RFC 5758「Internet X.509 Public Key Infrastructure:Additional Algorithms and Identifiers for DSA and ECDSA」
  • RFC 3279の更新。SHA-224, SHA-256, SHA-384, SHA-512を使ったDSAとECDSAのアルゴリズムのOID(Object IDentifier)。

  • RFC 5903「Elliptic Curve Groups modulo a Prime (ECP Groups) for IKE and IKEv2」
  • RFC 4753の改訂。IPsecで利用されるIKEとIKEv2用の楕円曲線群についての仕様。誤記の修正がされている。

5. ECCを使った公開鍵証明書の利用環境調査

  ECCに関連する仕様は多く策定されているが、実際に現在の環境でどれほどが利用可能であるかを調査した。調査は「鍵生成・証明書発行」と「証明書の利用」のふたつを行った。

5.1 鍵生成・証明書発行

  暗号や公開鍵証明書を扱うときに広く使われるOpenSSLとWindowsのCNG(Cryptography Next Generation)におけるECC鍵ペアの生成と証明書の発行について調査した。
  OpenSSLではバージョン0.9.8よりECCの利用が可能である。OpenSSLは多くの楕円曲線に対応しており、OpenSSL 1.0.0aでは67種類の曲線が利用可能である。楕円暗号で利用される曲線については多くのものが存在するが、NISTではFIPS 186-3において15種類の曲線を推奨している。NIST推奨曲線とOpenSSLでの曲線の名称の対応表はAppendixに示す。
  OpenSSLではすべての曲線において鍵ペアの生成は可能であるが、証明書発行要求(CSR)の作成はOakley-EC2N-4, Oakley-EC2N-3の2種類において生成が失敗する。また65種類のCSRについて、OpenSSLではすべての要求に対して証明書の発行に成功した。
  CNGでは、NIST推奨曲線のうちP-256、P-384、P-521に対応しているとされている。CNGが実装されているWindows Server 2008を使った実験では、CA(Certificate Authority)鍵としてECCを選択し鍵生成・証明書発行は可能であったが、証明機関のWeb登録サポートを利用してWebサーバ証明書などのクライアント鍵生成と証明書発行要求を行う場合、ECC鍵を利用可能なプロバイダ(CSP)は選択肢にはあらわれない。
  一方、OpenSSLを利用して作成したCSRを用いてWindows Server 2008に対して発行要求を行う場合では、P-256曲線(OpenSSLにおけるprime256v1)、P-384曲線(同secp384r1)、P-521曲線(同secp521r1)の3種類が証明書発行可能であった。

5.2 証明書の利用

  代表的なWebサーバソフトウェアとブラウザにおけるECC証明書の利用についても調査を行った。
  WebサーバソフトウェアではApache HTTP Serverの2.3.6-alphaとOpenSSL 1.0.0a、Microsoft IIS 7.0、OpenSSL 1.0.0aのs_serverを利用した。ブラウザはMicrosoft Windows Vista上でMicrosoft Internet Explorer 8、Mozilla Firefox 3、Google Chrome 5、Opera 10、Apple Safari 5を利用した。
  調査は各WebサーバソフトウェアにECC証明書を設定して起動を確認し、その後各ブラウザでアクセスを行った。
  Apache HTTP Serverではどの種類の曲線も起動時にエラーが発生し起動しなかった。バージョン2.2系列ではECCの対応がされておらず、2.3系列より対応がされるとされているが現在2.3系列は安定版のリリースはされておらず、Alpha版のみのリリースとなっており、不安定な部分も多いことから今後改善がされていくものと考えられる。
  Microsoft IISではOpenSSLで作成したCSRを用いて、prime256v1(P-256)、secp384r1 (P-384)、secp521r1(P-521)曲線で発行された証明書を利用して起動が成功した。またOpenSSLのs_serverコマンドではOpenSSLで発行した65種類の証明書すべてで起動が成功した。
  ブラウザの利用においては、prime256v1, secp384r1, secp521r1曲線による証明書をつかったIISサーバへのアクセスはOpera以外で成功した。Operaはブラウザで利用可能な暗号スイートにECCが含まれていないために接続ができなかったものと考えられる。
  またOpenSSLで作成した65種類の証明書で起動したs_serverへのアクセスでは、Operaは同様にすべての証明書でアクセスが失敗した。Ineternet Explorer、Chrome、Safariではprime256v1, secp384r1, secp521r1曲線による証明書の場合のみアクセスに成功した。またFirefoxは、IISサーバアクセス時ではprime256v1, secp384r1, secp521r1曲線による証明書を用いた場合のアクセスに成功していたが、s_serverの場合、これらの曲線でもアクセスに失敗した。

6. まとめ

  ECCに関連する仕様は整備されつつあり実装面でもその整備が進みつつあるが、まだ利用するにあたってはいくつかの困難が残っている。ECCで利用する楕円曲線の選択においては、NIST推奨曲線が15種類、OpenSSLで利用可能な曲線が67種類と多くの種類が存在するが、Windows CNSで利用可能な曲線は3種類(P-256、P-384、P-521)、またSuite Bで定められている曲線は2種類(P-256、P-384)であることから、今後はP-256とP-384の2つの曲線が中心的に利用されていくことが予想される。

Appendix OpenSSLの曲線名とNIST推奨曲線名の対応

下記の表はRFC 4492[13]のTable.6を基に作成した。

OpenSSL NIST推奨曲線名
sect163k1K-163
sect163r2B-163
sect233k1K-233
sect233r1B-233
sect283k1K-283
sect283r1B-283
sect409k1K-409
sect409r1B-409
sect571k1K-571
sect571r1B-571
prime192v1P-192
secp224r1P-224
prime256v1P-256
secp384r1P-384
secp521r1P-521

以上

参考文献

[1] NSA Suite B Cryptography
http://www.nsa.gov/ia/programs/suiteb_cryptography/
[2] RFC 4869: Suite B Cryptographic Suites for IPsec,
http://www.rfc-editor.org/rfc/rfc4869.txt
[3] RFC 5008: Suite B in Secure/Multipurpose Internet Mail Extensions (S/MIME) ,
http://www.rfc-editor.org/rfc/rfc5008.txt
[4] RFC 5430: Suite B Profile for Transport Layer Security (TLS),
http://www.rfc-editor.org/rfc/rfc5430.txt
[5] NSA Suite B Implementers' Guide to NIST SP 800-56A,
http://www.nsa.gov/ia/_files/SuiteB_Implementer_G-113808.pdf
[6] NSA Suite B Implementer's Guide to FIPS 186-3 (ECDSA)
http://www.nsa.gov/ia/_files/ecdsa.pdf
[7] RFC 5759: Suite B Certificate and Certificate Revocation List (CRL) Profile,
http://www.rfc-editor.org/rfc/rfc5759.txt
[8] RFC 5639: Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation,
http://www.rfc-editor.org/rfc/rfc5639.txt
[9] RFC 5915: Elliptic Curve Private Key Structure,
http://www.rfc-editor.org/rfc/rfc5915.txt
[10] RFC 5753: Use of Elliptic Curve Cryptography (ECC) Algorithms in Cryptographic Message Syntax (CMS),
http://www.rfc-editor.org/rfc/rfc5753.txt
[11] RFC 5758: Internet X.509 Public Key Infrastructure:Additional Algorithms and Identifiers for DSA and ECDSA,
http://www.rfc-editor.org/rfc/rfc5758.txt
[12] RFC 5903: Elliptic Curve Groups modulo a Prime (ECP Groups) for IKE and IKEv2,
http://www.rfc-editor.org/rfc/rfc5903.txt
[13] RFC4492: Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS),
http://www.rfc-editor.org/rfc/rfc4492.txt

 

目次へ 次へ