b) เส้นโค้งทั้งหมดที่สามารถแสดงเป็น $y^2 = x^3 + ขวาน + b$ ?
เส้นโค้งรูปไข่ของแบบฟอร์ม $y^2 = x^3 + ขวาน + b$ เรียกสั้นๆ ว่าสมการไวเออร์สตราส (ฟอร์ม) แบบสั้นนี้คือ ได้รับจาก (สมการไวเออร์สตราสทั่วไป) $$Y^2 + a_1 XY + a_3 Y = X^3 + a_2 X^2 + a_4 X + a_6$$ โดยการเปลี่ยนแปลงของตัวแปร (transformation) ถ้าลักษณะ $p$ ของสนาม $p>3$. เมื่อทำเช่นนี้ เราจะได้เส้นโค้งไอโซมอร์ฟิคและการดำเนินการสามารถย้อนกลับได้
การประยุกต์ใช้สูตรการเพิ่มจุดสองเท่าในส่วนที่ 3.1 คืออะไร ของ RFC-6090? สามารถทำงานกับจุดโค้งที่ถูกต้องทั้งหมดที่ไม่ใช่จุดสิ้นสุด
เลขคณิตที่มีพิกัดเชิงโครง
ในพิกัดโครงร่าง สมการของ $E$ เป็น
$$Y^2 Z = X^3 + AXZ^2 + BZ^3.$$
คะแนน $(X_1 : Y_1 : Z_1 )$ บน $E$ ตรงกับจุดที่พอดี $(X_1/Z_1,Y_1/Z_1)$ เมื่อไร $Z_1 \neq 0$
เมื่อไร $Z_1$ เรามีจุดที่ไม่มีที่สิ้นสุด $P_\infty = (0:1:0)$ ซึ่งไม่มีตัวแทนในพิกัดใกล้เคียง
ตรงข้าม (ลบ) ของจุด $(X_1 : Y_1 : Z_1 )$ เป็น $(X_1 : -Y_1 : Z_1 )$
อนุญาต $P_i = (X_i : Y_i : Z_i ), i = 1, 2$เป็นจุดบนเส้นโค้งวงรีที่เป็นเนื้อเดียวกัน
แล้ว
$$(X_1 : Y_1 : Z_1 ) + (X_2 : Y_2 : Z_2 ) = (X_3 : Y_3 : Z_3 ).$$
สูตรจาก คู่มือการเข้ารหัสแบบ Elliptic และ Hyperelliptic Curve
สูตร RF9060
RFC แสดงรหัสหลอกสำหรับการเพิ่มและการเสแสร้ง ( มีข้อผิดพลาดสำหรับเรื่องนี้ และนี่คือการแสดงเวอร์ชันที่แก้ไขแล้ว);
ให้ P1=(X1,Y1,Z1) และ P2=(X2,Y2,Z2) เป็นจุดบนเส้นโค้งวงรี
และให้ u = Y2 * Z1 - Y1 * Z2 และ v = X2 * Z1 - X1 * Z2
เราสังเกตว่าจุด P1 และ P2 เท่ากันก็ต่อเมื่อ u และ v
มีค่าเท่ากับศูนย์ทั้งคู่ มิฉะนั้น ถ้า P1 หรือ P2 มีค่าเท่ากับ
จุดที่ไม่มีที่สิ้นสุด v เป็นศูนย์ และ u ไม่ใช่ศูนย์ (แต่กลับกัน
ความหมายไม่ถือ).
ถ้า P1 คือจุดที่อนันต์
P3 = P2
ถ้า P2 คือจุดที่อนันต์
P3 = P1
มิฉะนั้น ถ้า P1=-P2 เป็นจุดฉายภาพ
P3 = (0,1,0)
มิฉะนั้น ถ้า P1 ไม่เท่ากับ P2
X3 = v * (Z2 * (Z1 * u^2 - 2 * X1 * v^2) - v^3)
Y3 = Z2 * (3 * X1 * u * v^2 - Y1 * v^3 - Z1 * u^3) + u * v^3
Z3 = v^3 * Z1 * Z2
อื่น // P2 เท่ากับ P1, P3 = P1 * P1
w = 3 * X1^2 + ก * Z1^2
X3 = 2 * Y1 * Z1 * (w^2 - 8 * X1 * Y1^2 * Z1)
Y3 = 4 * Y1^2 * Z1 * (3 * w * X1 - 2 * Y1^2 * Z1) - w^3
Z3 = 8 * (Y1 * Z1)^3
ต้องใช้สมการเพื่อดูว่ากรณีพิเศษสำหรับ $P_\infty$ มันจำเป็น. และใช่ มันใช้ได้กับทุกจุดนอกเหนือจากนั้น $P_\infty$. ที่ถูกจัดการในสองขั้นตอนแรกของรหัสเทียม
หมายเหตุ 1: RFC นี้ใช้ ผลิตภัณฑ์ สำหรับจุดเสริมที่ต้องดูแล ไม่มีผลคูณในเส้นโค้งวงรี เรามีการบวกจุดและการคูณสเกลาร์ จุดกำลังสร้างกลุ่ม Abelian ภายใต้การบวกจุด และด้วยการคูณแบบสเกลาร์ปกติ เราสามารถมี Z-Module เท่านั้น
โน้ต 2: สูตร RFC6090 มีราคาเท่ากับ Handbook
หมายเหตุ 3: ทั้งสองสูตรได้รับการยืนยันด้วย SageMath และถูกต้องตามสูตรของ SageMath ในขณะที่ใช้การทดสอบ Curve25519 คุณสามารถเปลี่ยนสิ่งนี้ได้อย่างง่ายดายโดยใช้รหัสจาก นักประสาทวิทยา
หมายเหตุ 4: ลบกรณีพิเศษด้วย $P_\infty$ จากนั้นดูว่าผลลัพธ์ไม่ถูกต้อง (ส่วนใหญ่ล้มเหลวเนื่องจากผลลัพธ์ไม่ใช่จุดบนเส้นโค้ง)