本文へスキップ
ecdsa.com
推奨短縮ワイエルシュトラス形式

P-256

P-256(secp256r1、prime256v1)は最も広く普及している楕円曲線で、TLS、X.509、JOSE の ES256、WebAuthn、DNSSEC のすべてで使われています。

P-256 は、256 ビットの素体上の短縮ワイエルシュトラス形式の曲線 y² = x³ + ax + b で、位数が 256 ビットの素数である部分群とコファクター 1 を持ちます。推定セキュリティレベルは 128 ビットです。ステータス:新しいシステムに推奨。

P-256 は、素数 p = 2^256 − 2^224 + 2^192 + 2^96 − 1 上の短縮ワイエルシュトラス曲線 y² = x³ − 3x + b です。この素数は特殊な形をしているため、剰余演算を高速に行えます。群の位数は約 2^256 の素数(コファクター 1)で、約 128 ビットのセキュリティを提供します。同じ曲線に 3 つの名前があります。P-256(NIST、JOSE、COSE)、secp256r1(SEC 2、TLS)、prime256v1(ANSI X9.62、OpenSSL)です。

公開鍵は曲線上の点で、非圧縮形式では 65 バイト(0x04 ‖ x ‖ y)、圧縮形式では 33 バイトです。ECDSA 署名は、生の r ‖ s(JOSE、WebCrypto)では 64 バイト、DER(X.509、TLS、OpenSSL、WebAuthn のアサーション)では通常 70〜72 バイトです。この 2 つのエンコーディングの取り違えは、相互運用性に関するバグの中でも特によくあるものの 1 つで、DER ⇄ 生形式の変換ツールで相互に変換できます。

ハードウェアの対応は幅広く、Apple の Secure Enclave は P-256 の鍵しか生成しません。FIDO2 セキュリティキーやプラットフォーム認証器も、一般に P-256 のパスキー(COSE アルゴリズム −7、ES256)を生成します。ほかの NIST 曲線と同じく、b は出所が文書化されていない SHA-1 のシードから導出されています。これが一部のプロトコル設計者が Curve25519 を好む理由の 1 つですが、P-256 に弱点は見つかっていません。

規格での名称

規格名称
NIST FIPS 186-5 / SP 800-186P-256
SEC 2secp256r1
ANSI X9.62prime256v1
JOSE / COSEP-256
SSHnistp256

オブジェクト識別子

ドメインパラメーター

256 ビットの素体 · 約 128 ビットセキュリティ

有限体の素数 p
0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff
係数 a
0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc
係数 b
0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b
ベースポイントの x 座標
0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296
ベースポイントの y 座標
0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5
ベースポイントの位数 n
0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551
コファクター h
0x1
シード
0xc49d360886e704936a6678e1139d26b7819f7e90

採用例

  • TLS 1.3
  • X.509 / Web PKI
  • JOSE (ES256)
  • COSE (ES256, ESP256)
  • SSH (ecdsa-sha2-nistp256)
  • DNSSEC (algorithm 13)
  • WebAuthn / passkeys
  • Apple Secure Enclave

レジストリでの識別子

TLS のサポートされるグループ
secp256r1 0x0017SecP256r1MLKEM512 0x11E9SecP256r1MLKEM768 0x11EBSecP256r1Kyber768Draft00 0x639A
TLS の署名方式
ecdsa_secp256r1_sha256 0x0403
JOSE アルゴリズム
ES256HPKE-0HPKE-0-KEHPKE-7HPKE-7-KE
JWK の曲線
P-256
COSE アルゴリズム
ESP256 -9
COSE の楕円曲線
P-256 1
SSH の鍵交換方式
ecdh-sha2-nistp256gss-nistp256-sha256-*mlkem768nistp256-sha256
SSH の公開鍵アルゴリズム
ecdsa-sha2-nistp256x509v3-ecdsa-sha2-nistp256
DNSSEC のアルゴリズム番号
ECDSAP256SHA256 13
HPKE の KEM 識別子
DHKEM(P-256, HKDF-SHA256) 0x0010DHKEM(CP-256, HKDF-SHA256) 0x0013MLKEM768-P256 0x0050

規格と参考文献

すべての曲線