楕円曲線の追加
免責事項:これは、楕円曲線の豊富なトピックに関する正義を行いません。かなり簡素化されています。楕円曲線は最近、暗号化のコンテキストで多くのメディアの注目を集めたため、楕円曲線の「計算」が実際にどのように機能するかについて、いくつかの小さな洞察を提供したかったのです。
前書き
楕円曲線は(x,y)、フォームの平面内の点の集合ですy^2 = x^3+Ax+B。(さらに、4A^3+27B^2 ≠ 0厄介な特異点を避けるために。)これらの曲線はどのフィールドでも考慮することができます。実数のフィールドを使用すると、曲線を視覚化でき、次のようになります。
これらの曲線の特別な点は、加算に類似した算術演算が組み込まれていることです。ポイントを追加および削除することができ、この操作は結合的および可換的(アーベル群)です。
追加はどのように機能しますか?
注:楕円曲線上の点の追加は直感的ではありません。この種類の追加は、特定の優れたプロパティがあるため、そのまま定義されています。奇妙ですが、動作します。
楕円曲線はグループを形成するため、0に相当する付加的な同一性があり0ます。つまり、任意のポイントに追加しても結果は変わりません。この付加的なアイデンティティは、無限の「ポイント」です。平面上のすべての線にはこの点が無限遠に含まれるため、追加しても違いはありません。
与えられた線が3点で曲線と交差すると仮定します0。これはである可能性があり、これら3点の合計は0です。それを念頭に置いて、この画像を見てください。
さて、自然な質問は、何P+Qですか?まあ、if P+Q+R = 0、then P+Q = -R(またはとして書かれていますR')。どこ-Rですか?ここでR + (-R) = 0、はからX軸の反対側にあるRため、それらを通る線は、、、およびのみRと交差-Rし0ます。この画像の最初の部分でこれを見ることができます:
これらの画像で確認できるもう1つの点は、ポイントとそれ自体の合計が、線が曲線に接していることを意味していることです。
直線と楕円曲線の交点を見つける方法
2つの異なるポイントの場合
一般に2点を通る正確に1本の線がありP=(x0,y0), Q=(x1,y1)ます。それが垂直ではなく、2つのポイントが明確であると仮定すると、と書くことができますy = m*x+q。楕円曲線との交点を見つけたいとき、次のように書くことができます。
0 = x^3+Ax+B-y^2 = x^3+Ax+B-(m*x+q)^2
これは3次多項式です。これらは一般的に解くのはそれほど簡単ではありませんが、この多項式の2つのゼロを既に知っています。追加したい2点の2つのx座標x0, x1!
このように我々の線形因子アウト因子(x-x0)と(x-x1)、そのルートである第三の線形因子が残されているx点の-座標R。(-R。あまりにも対称性のためであればその注意してくださいR = (x2,y2)、その後を-R = (x2,-y2)。-グループからであり、それはベクトルマイナスではありません。)
P自身に1つのポイントを追加する場合
この場合、で曲線の正接を計算する必要がありますP=(x0,y0)。私たちは、直接書き込むことができますmとqの観点A,B,x0,y0:
3*x0^2 + A
m = ------------
2*y0
-x0^3 + A*x0 + 2*B
q = --------------------
2*y0
方程式を取得し、y = m*x+q上記の段落と同じ方法で進めることができます。
完全なケースツリー
これは、これらすべてのケースを処理する方法の完全なリストです。
ましょうP,Q楕円曲線上の点(「無限」点を含む0)
- もし
P = 0またはQ = 0、その後、P+Q = QまたはP+Q = P、それぞれ - それ以外の場合
P ≠ 0、およびQ ≠ 0letP = (x0,y0)およびQ = (x1,y1):- if
P = -Q(つまりx0 = x1andy0 = -y1)thenP+Q = 0 - その他
P ≠ -Q- もしそうなら
x0 = x1、をP=Q取得するためにタンジェントを計算します(上記のセクションを参照)R。それからP+Q = P+P = 2P = -R - それ以外の場合:を
y = m*x+y計算するために、これらの2つのポイント(上記のセクションを参照)を介してフォームの行を作成できますR。それからP+Q=-R
- もしそうなら
- if
有限フィールド
この挑戦のために我々は唯一のサイズのフィールドを検討するpところp素数である(そしてのでいくつかの詳細のp ≠ 2, p ≠ 3)。これには、単純に計算できるという利点がありますmod p。他のフィールドでの演算は、はるかに複雑です。
この例ではこれを設定しp = 5、ここでのすべての平等は合同mod 5です。
2+4 ≡ 6 ≡ 1
2-4 ≡ -2 ≡ 3
2*4 ≡ 8 ≡ 3
2/4 ≡ 2*4 ≡ 3 because 4*4 ≡ 16 ≡ 1, therefore 1/4 ≡ 4
チャレンジ
A,B楕円曲線のパラメーター、素数フィールドの特性p、およびP,Q楕円曲線上の2つのポイントを指定すると、それらの合計が返されます。
- パラメーターが
A,B実際に楕円曲線を記述すると仮定できます4A^3+27B^2 ≠ 0。 - これ
P,Qは実際に楕円曲線または-点上の点であると仮定でき0ます。 - あなたはそれ
p ≠ 2,3が素数であると仮定することができます。
テストケース
MATLAB / Octaveで(非常にエレガントではない)実装を作成しました。これを独自のテストケースに使用できます。ideone.com正しいことを願っています。少なくとも手作業で行ったいくつかの計算を再現しました。
ここで考慮するすべての曲線に対して機能する簡単なテストケースに注意してください。
ゼロの追加:P+0 = P
逆の追加:(x,y) + (x,-y) = 0
以下のためのp = 7, A = 0, B = 5二点P = (3,2)及びQ = (6,2)楕円曲線上にあります。その後、次のことが成り立ちます。
2*Q = Q+Q = P
2*P = P+P = (5,2)
3*P = P+P+P = (5,2)+P = (6,5)
4*P = P+P+P+P = (5,2)+(5,2) = (6,5)+(5,2) = Q
楕円曲線上のすべてのポインは (3,2),(5,2),(6,2),(3,5),(5,5),(6,5),0
以下のためにp = 13, A = 3, B = 8我々が得ます
(1,8)+(9,7) = (2,10)
(2,3)+(12,11) = (9,7)
2*(9,6) = (9,7)
3*(9,6) = 0
用p = 17, A = 2, B = 2とP=(5,1) 我々が得ます
2*P = (6,3)
3*P = (10,6)
4*P = (3,1)
5*P = (9,16)
6*P = (16,13)
7*P = (0,6)
8*P = (13,7)
9*P = (7,6)
10*P = (7,11)
本当に野心的な人は
p = 1550031797834347859248576414813139942411
A = 1009296542191532464076260367525816293976
x0 = 1317953763239595888465524145589872695690
y0 = 434829348619031278460656303481105428081
x1 = 1247392211317907151303247721489640699240
y1 = 207534858442090452193999571026315995117
そして、nそのような自然数を見つけようとしますn*(x0,y0) = (x1,y1)。詳細はこちら。
付録
まず、私の下書きをレビューして編集してくれた@ El'endiaStarmanに感謝します!
なぜ楕円曲線なのか?
まあ、それは任意の式のいくつかの種類のように見えるかもしれないが、それはありませんが、それはかなり一般的である:一般的に我々はそれらの幾何学的な「形」を検討射影平面を「無限大」はどこから来ているであること(私たちはすべての存在を検討してください。この長いワイエルシュトラス形式の楕円曲線である。これらは、基本的に我々が考えられ、ちょうどやや斜めに同じ曲線である。線形座標変換を使用すると、簡単に短いWeierstrasは、その。のうち方程式作ることができますたとえば、まだすべて保持します、興味深いプロパティ。均質で 3 次の多項式(次の低次または高次の多項式は、難しすぎるか、調べるのが簡単です。)希望する優れた特性を得るためにいくつかの制限を適用し、それらの多項式を非均質化した後(3つのアフィン平面のいずれかに投影します) )のような方程式で終わるy^2+a*x*y+b*y = x^3+c*x^2+d*x+e
なぜ除外したのp=2,3ですか?
これは、短いワイエルシュトラス型の場合、4A^3+27B^2 ≠ 0特異点を回避するために制限が必要であるという事実と関係があります(詳細については後述)。特性2 4 = 0のフィールドと特性3のフィールドでは27 = 0、これらの種類のフィールドに対して短いワイエルシュトラス形式の曲線を作成することはできません。
特異点とは何ですか?
方程式4A^3+27B^2=0が成り立つ場合、次のような特異点があります。これらのポイントでわかるように、微分を見つけることができず、したがって接線がなく、操作を「殺します」。方程式を見y^2 = x^3たり、y^2 = x^3-3*x+2
とにかく楕円曲線と呼ばれるのはなぜですか?
その理由は、この形状の方程式が楕円積分でポップアップするためです。たとえば、楕円の弧長などを計算したいときに得られるものです。名前の由来についての短いスライドショー。
彼らは暗号化と何の関係があるのでしょうか?
nP = P+P+...+P非常に効率的に計算する方法があります。これは例えばDiffie Hellman鍵交換で使用できます。モジュラー演算は、ねじれサブグループの追加で置き換えることができます。これらは、有限次数を持つ曲線上の点にすぎません。(つまりmP = 0、一部のm、基本的には単に計算することを意味しますmod m)。



y^2 = x^3 + xは有効な楕円曲線であり(0,0) ≠ 0、曲線上の点です!)