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-186 | P-256 |
| SEC 2 | secp256r1 |
| ANSI X9.62 | prime256v1 |
| JOSE / COSE | P-256 |
| SSH | nistp256 |
ドメインパラメーター
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
← すべての曲線