นอกจากนี้บน Elliptic Curves
ข้อสงวนสิทธิ์: สิ่งนี้ไม่ได้ทำเพื่อความยุติธรรมในหัวข้อที่สมบูรณ์ของเส้นโค้งรูปไข่ มันง่ายขึ้นมาก เมื่อเร็ว ๆ นี้เส้นโค้งรูปไข่ได้รับความสนใจจากสื่อเป็นอย่างมากในบริบทของการเข้ารหัสฉันต้องการที่จะให้ข้อมูลเชิงลึกเล็กน้อยเกี่ยวกับวิธีการ "คำนวณ" บนเส้นโค้งรูปไข่ที่ใช้งานได้จริง
บทนำ
เส้นโค้งรูปไข่เป็นชุดของจุดในระนาบของฟอร์ม(x,y)
y^2 = x^3+Ax+B
(นอกจากนี้4A^3+27B^2 ≠ 0
เพื่อหลีกเลี่ยงภาวะเอกฐานที่น่ารังเกียจ) คุณสามารถพิจารณาส่วนโค้งเหล่านี้ได้ในทุกสาขา หากคุณใช้ฟิลด์ตัวเลขจริงเส้นโค้งสามารถมองเห็นได้และจะมีลักษณะดังนี้:
สิ่งที่พิเศษเกี่ยวกับเส้นโค้งเหล่านี้เป็นสิ่งที่พวกเขามีในตัวดำเนินการทางคณิตศาสตร์ซึ่งเป็นอนาล็อกของการเพิ่ม คุณสามารถเพิ่มและลบคะแนนและการดำเนินการนี้เป็นทั้งการเชื่อมโยงและการสลับ (กลุ่ม abelian)
นอกจากนี้ทำงานอย่างไร
หมายเหตุ: การเพิ่มจุดต่าง ๆ บนวงรีรูปไข่นั้นไม่ง่าย การเพิ่มชนิดนี้ถูกกำหนดในแบบที่เป็นเพราะมีคุณสมบัติที่ดีบางอย่าง มันแปลก แต่ก็ใช้งานได้
เมื่อเส้นโค้งรูปไข่เป็นกลุ่มจึงมีตัวตนเพิ่มเติมที่เทียบเท่ากับ 0 นั่นคือการเพิ่ม0
ไปยังจุดใด ๆ จะไม่เปลี่ยนผลลัพธ์ ตัวตนเพิ่มเติมนี้คือ "จุด" ที่ไม่มีที่สิ้นสุด เส้นทั้งหมดบนเครื่องบินจะรวมจุดนี้ไว้ที่ระยะอินฟินิตี้ดังนั้นการเพิ่มเข้าไปจึงไม่แตกต่างกัน
พูด Let 's ที่ตัดสายใดก็ตามโค้งสามจุดซึ่งอาจจะเป็นและว่าผลรวมของทั้งสามจุดคือ0
0
โปรดจำไว้ว่าให้ดูที่ภาพนี้
คำถามธรรมชาติคืออะไรP+Q
? ดีถ้าP+Q+R = 0
แล้วP+Q = -R
(เขียนอีกทางหนึ่งเป็นR'
) อยู่ที่ไหน-R
? มันเป็นที่ที่R + (-R) = 0
ซึ่งเป็นในด้านอื่น ๆ ของแกน x จากR
ดังนั้นบรรทัดผ่านพวกเขาอยู่ในแนวตั้งตัดเพียงR
, และ-R
0
คุณสามารถเห็นสิ่งนี้ได้ในส่วนแรกของภาพนี้:
อีกสิ่งที่คุณสามารถเห็นได้ในภาพเหล่านี้คือผลรวมของจุดด้วยตัวเองหมายความว่าเส้นสัมผัสกับส่วนโค้ง
วิธีการหาจุดตัดของเส้นและเส้นโค้งรูปไข่
ในกรณีที่มีสองจุดที่แตกต่างกัน
P=(x0,y0), Q=(x1,y1)
โดยทั่วไปมีตรงหนึ่งเส้นผ่านจุดสองจุด สมมติว่ามันไม่ใช่แนวตั้งและจุดสองจุดนั้นแตกต่างกันเราสามารถเขียนมันy = m*x+q
ได้ เมื่อเราต้องการหาจุดตัดด้วยเส้นโค้งรูปไข่เราก็เขียนได้
0 = x^3+Ax+B-y^2 = x^3+Ax+B-(m*x+q)^2
ซึ่งเป็นพหุนามระดับสาม เหล่านี้มักจะไม่ง่ายที่จะแก้ แต่เรารู้อยู่แล้วว่าสองศูนย์ของพหุนามนี้: สองx
-coordinates x0, x1
ของทั้งสองจุดที่เราต้องการเพิ่ม!
ว่าปัจจัยทางที่เราออกจากปัจจัยเชิงเส้น(x-x0)
และ(x-x1)
และจะเหลือเป็นปัจจัยเชิงเส้นที่สามที่มีรากเป็นประสานงานของจุดx
R
( -R
เช่นกันเนื่องจากความสมมาตรโปรดทราบว่าหากเป็นเช่นR = (x2,y2)
นั้นแล้ว-R = (x2,-y2)
กลุ่ม-
นั้นมาจากไม่ใช่กลุ่มเวกเตอร์ลบ)
ในกรณีของการเพิ่มจุดหนึ่งP
ไปยังตัวของมันเอง
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 ≠ 0
เพื่อให้P = (x0,y0)
และQ = (x1,y1)
:- หาก
P = -Q
(นั่นหมายถึงx0 = x1
และy0 = -y1
) จากนั้นP+Q = 0
- อื่น
P ≠ -Q
- หาก
x0 = x1
แล้วเรามีP=Q
และเราคำนวณสัมผัสกัน (ดูด้านบน)R
เพื่อที่จะได้รับ แล้วก็P+Q = P+P = 2P = -R
- อื่น ๆ : เราสามารถสร้างเส้นของรูปแบบ
y = m*x+y
ผ่านทั้งสองจุด (ดูด้านบน)R
เพื่อคำนวณ แล้วก็P+Q=-R
- หาก
- หาก
ฟิลด์ จำกัด
สำหรับความท้าทายนี้เราจะพิจารณาด้านของขนาดp
ที่p
เป็นสำคัญ (และเพราะรายละเอียดบางอย่างp ≠ 2, p ≠ 3
) นี่คือข้อดีที่คุณสามารถคำนวณได้mod p
ได้ เลขคณิตในสาขาอื่นมีความซับซ้อนมากขึ้น
นี้ในตัวอย่างนี้เราตั้งp = 5
และ equalities ทั้งหมดที่นี่มี mod 5
congruences
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
บนเส้นโค้งรูปไข่จะคืนค่าผลรวมของพวกเขา
- คุณสามารถสันนิษฐานได้ว่าพารามิเตอร์
A,B
อธิบายเส้นโค้งรูปไข่จริง ๆ นั่นหมายความว่า4A^3+27B^2 ≠ 0
จริงอธิบายไข่โค้งซึ่งหมายความว่า - คุณสามารถสมมติว่า
P,Q
เป็นจริงจุดบนเส้นโค้งรูปไข่หรือ0
-point - คุณสามารถสรุปได้ว่า
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
poins ทั้งหมดบนเส้นโค้งรูปไข่คือ (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 ที่ยิ่งใหญ่สำหรับการตรวจสอบและแก้ไขร่างของฉัน!
ทำไมเส้นโค้งรูปไข่
มันอาจดูเหมือนสมการที่กำหนดเองบางอย่าง แต่ก็ไม่เป็นเช่นนั้นโดยทั่วไป: โดยทั่วไปแล้วเราพิจารณา "รูปทรง" ทางเรขาคณิตเหล่านั้นในแบบระนาบ projective (นั่นคือที่ "อนันต์" มาจากที่นั่นเราพิจารณาความเป็นเนื้อเดียวกันทั้งหมดชื่อพหุนามของระดับที่สาม (ระดับที่ต่ำกว่าหรือสูงกว่านั้นยากเกินไปหรือเพียงเล็กน้อยที่จะตรวจสอบ) หลังจากใช้ข้อ จำกัด บางอย่างเพื่อให้ได้คุณสมบัติที่ดีที่เราต้องการและหลังจาก dehomogenizing ชื่อพหุนามเหล่านั้น ) เราลงท้ายด้วยสมการเช่นy^2+a*x*y+b*y = x^3+c*x^2+d*x+e
นี่เป็นรูปวงรีรูปไข่ในรูปแบบ Weierstrass ที่ยาว โดยทั่วไปแล้วสิ่งเหล่านี้เป็นเส้นโค้งแบบเดียวกับที่เราพิจารณา แต่ค่อนข้างเบ้ ด้วยการแปลงพิกัดเชิงเส้นคุณสามารถสร้างสมการ Weierstras สั้น ๆ ได้อย่างง่ายดาย ตัวอย่างซึ่งยังคงมีคุณสมบัติที่น่าสนใจทั้งหมด
ทำไมเราถึงแยกออกp=2,3
?
สิ่งนี้เกี่ยวข้องกับความจริงที่ว่าสำหรับรูปแบบ Weierstrass สั้น ๆ นั้นเราจำเป็นต้องมีข้อ จำกัด4A^3+27B^2 ≠ 0
เพื่อหลีกเลี่ยงภาวะเอกฐาน (เพิ่มเติมจากด้านล่าง) ในสาขาลักษณะ 2 เรามี4 = 0
และในสาขาลักษณะ 3 เรามี27 = 0
สิ่งนี้ทำให้เป็นไปไม่ได้ที่จะมีส่วนโค้งในรูปแบบ Weierstrass สั้น ๆ สำหรับสาขาเหล่านั้น
สิ่งแปลกประหลาดคืออะไร?
หากสมการ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
เป็นจุดบนเส้นโค้ง!)