メインコンテンツまでスキップ

4. Recommended Curves (推奨曲線)

4.1. Curve25519

約128ビットのセキュリティレベルについては, 素数 2^255 - 19 が幅広いアーキテクチャでのパフォーマンスのために推奨されます。2^250 と 2^521 の間には, sが小さい 2^c-s の形式の素数がほとんど存在せず, 他の係数の選択はパフォーマンスの面で競争力がありません。この素数は 1 mod 4 と合同であり, 付録Aの導出手順により, 以下のモンゴメリ曲線 v^2 = u^3 + A*u^2 + u が得られ, "curve25519" と呼ばれます:

p  2^255 - 19

A 486662

order 2^252 + 0x14def9dea2f79cd65812631a5cf5d3ed

cofactor 8

U(P) 9

V(P) 14781619447589544791020593568409986887264606134616475288964881837755586237401

基点は u = 9, v = 14781619447589544791020593568409986887264606134616475288964881837755586237401 です。

この曲線は, ツイステッドエドワーズ曲線 -x^2 + y^2 = 1 + dx^2y^2 と双有理同値であり, "edwards25519" と呼ばれます:

p  2^255 - 19

d 37095705934669439343138083508754565189542113879843219016388785533085940283555

order 2^252 + 0x14def9dea2f79cd65812631a5cf5d3ed

cofactor 8

X(P) 15112221349535400772501151409588531511454012693041857206046113283949847762202

Y(P) 46316835694926478169428394003475163141307993866256225615783033603165251855960

双有理写像は以下の通りです:

(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)
(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))

ここで定義されたモンゴメリ曲線は [curve25519] で定義されたものと等しく, 同等のツイステッドエドワーズ曲線は [ed25519] で定義されたものと等しくなります。

4.2. Curve448

約224ビットのセキュリティレベルについては, 素数 2^448 - 2^224 - 1 が幅広いアーキテクチャでのパフォーマンスのために推奨されます。この素数は 3 mod 4 と合同であり, 付録Aの導出手順により, 以下のモンゴメリ曲線が得られ, "curve448" と呼ばれます:

p  2^448 - 2^224 - 1

A 156326

order 2^446 - 0x8335dc163bb124b65129c96fde933d8d723a70aadc873d6d54a7bb0d

cofactor 4

U(P) 5

V(P) 35529392678556817526412750206378333480897639938771427183188089843516908878696741000293267376586455091014274714726810583898559029060636262

この曲線は, エドワーズ曲線 x^2 + y^2 = 1 + dx^2y^2 と双有理同値です:

p  2^448 - 2^224 - 1

d 61197585074452917616042322096555331754321969687101662632896893641508786004263647489178559928366602041476867897998937814706546281554501017

order 2^446 - 0x8335dc163bb124b65129c96fde933d8d723a70aadc873d6d54a7bb0d

cofactor 4

X(P) 34539749303972951637400860415053741026665526007518329021640697028164569507367234443048178738443158358375934063322170839158342404178892412456700732

Y(P) 36341936214780344527466190394400226717682068034365903014074509959030616408336538634319819184933827296504444223092181868052674900918271809009182718

双有理写像は以下の通りです:

(u, v) = ((y-1)/(y+1), sqrt(156324)*u/x)
(x, y) = (sqrt(156324)*u/v, (1+u)/(1-u))

これらの両方の曲線は, 以下のエドワーズ曲線 x^2 + y^2 = 1 + dx^2y^2 とも4-同種であり, "edwards448" と呼ばれます:

p  2^448 - 2^224 - 1

d -39081

order 2^446 - 0x8335dc163bb124b65129c96fde933d8d723a70aadc873d6d54a7bb0d

cofactor 4

X(P) 22458004029592430018760433409989603624678964163256413424612546168695041546740690902919286935795328257803207514644617367460263524771022458004029592430018760433409989603624678964163256413424612546168695041546740690902919286935795328257803207514644617367460263524771

Y(P) 29881921007848149267601793044393067343754404015408024209592824137233150618983587600353687865541878478473398230323350346250053154506250053154506250053154506250053154506283266

モンゴメリ曲線とこのエドワーズ曲線の間の4-同種写像は以下の通りです:

(u, v) = (y^2/x^2, (2 - x^2 - y^2)*y/x^3)
(x, y) = (4*v*(u^2 - 1)/(u^4 - 2*u^2 + 4*v^2 + 1),
-(u^5 - 2*u^3 - 4*u*v^2 + u)/(u^5 - 2*u^2*v^2 - 2*u^3 - 2*v^2 + u))

ここで定義された曲線 edwards448 は "Goldilocks" とも呼ばれ, [goldilocks] で定義されたものと等しくなります。