晴耕雨読

working in the fields on fine days and reading books on rainy days

楕円曲線 NIST P-256 と secp256r1 の違い

結論から言うと、これらは全て同じ曲線を指す別名(エイリアス)です。 標準化団体によって呼び方が異なっているだけです。 以下は、楕円曲線暗号のパラメータ(曲線)である secp256r1prime256v1NIST P-256 の違いについて説明します。

楕円曲線のパラメータを定義する団体

楕円曲線暗号のパラメータは、主に以下の3つの団体によって標準化されています。 それぞれの団体が独自の規格書を発行しているため、同じ曲線に対して異なる名前(識別子)が付けられています。

SECG

SECG (Standards for Efficient Cryptography Group) は、Certicom社(現在はBlackBerryの子会社)によって設立された、効率的な暗号技術の標準化を目指すコンソーシアムです。 SEC 1 (Elliptic Curve Cryptography) や SEC 2 (Recommended Elliptic Curve Domain Parameters) などの仕様書を発行しており、ここで定義されたパラメータ名(secp256r1 など)が広く使われています。

ANSI

ANSI (American National Standards Institute) は米国国家規格協会で、米国の工業規格を標準化する団体です。 金融サービス業界向けの規格を策定する委員会(X9)があり、楕円曲線暗号に関する規格 ANSI X9.62 などでパラメータ(prime256v1 など)を定義しています。

NIST

NIST (National Institute of Standards and Technology) は米国国立標準技術研究所で、米国の技術標準を策定する政府機関です。 連邦情報処理標準 (FIPS) を発行しており、FIPS 186 (Digital Signature Standard) などで推奨される楕円曲線パラメータ(P-256 など)を定義しています。これらは米国政府システムでの利用を想定していますが、世界中で広く採用されています。

RFC 8422 での定義

RFC 8422 (Elliptic Curve Cryptography (ECC) Cipher Suites for TLS) の Appendix A にも、secp256r1 と prime256v1 と NIST P-256 が等価であることが明記されています。

All of the NIST curves [FIPS.186-4] and several of the ANSI curves [ANSI.X9-62.2005] are equivalent to curves listed in Section 5.1.1.

表にすると以下のようになります(RFCより抜粋)。

            +-----------+------------+------------+
            | SECG      | ANSI X9.62 | NIST       |
            +-----------+------------+------------+
            | sect163k1 |            | NIST K-163 |
            | sect163r1 |            |            |
            | sect163r2 |            | NIST B-163 |
            | sect193r1 |            |            |
            | sect193r2 |            |            |
            | sect233k1 |            | NIST K-233 |
            | sect233r1 |            | NIST B-233 |
            | sect239k1 |            |            |
            | sect283k1 |            | NIST K-283 |
            | sect283r1 |            | NIST B-283 |
            | sect409k1 |            | NIST K-409 |
            | sect409r1 |            | NIST B-409 |
            | sect571k1 |            | NIST K-571 |
            | sect571r1 |            | NIST B-571 |
            | secp160k1 |            |            |
            | secp160r1 |            |            |
            | secp160r2 |            |            |
            | secp192k1 |            |            |
            | secp192r1 | prime192v1 | NIST P-192 |
            | secp224k1 |            |            |
            | secp224r1 |            | NIST P-224 |
            | secp256k1 |            |            |
            | secp256r1 | prime256v1 | NIST P-256 |
            | secp384r1 |            | NIST P-384 |
            | secp521r1 |            | NIST P-521 |
            +-----------+------------+------------+

この表より、例えば「secp256r1」と「prime256v1」と「NIST P-256」は同じ行にあるため、同じ曲線を意味します。

以上です。