b) trên tất cả các đường cong có thể được biểu diễn dưới dạng $y^2 = x^3 + ax + b$ ?
Đường cong elip có dạng $y^2 = x^3 + ax + b$ được gọi là phương trình Weierstrass ngắn (dạng). Hình thức ngắn này là thu được từ (phương trình Weierstrass chung) $$Y^2 + a_1 XY + a_3 Y = X^3 + a_2 X^2 + a_4 X + a_6$$ bằng cách thay đổi các biến (biến đổi) nếu đặc tính $p$ của lĩnh vực này $p>3$. Bằng cách này, chúng ta có được một đường cong đẳng cấu và hoạt động có thể đảo ngược.
Khả năng ứng dụng của công thức nhân đôi điểm trong phần 3.1 là gì? của RFC-6090? Nó có thể hoạt động với tất cả các điểm đường cong hợp lệ không phải là điểm vô cực không,
Các số học với tọa độ xạ ảnh
Trong tọa độ xạ ảnh, phương trình của $E$ Là
$$Y^2 Z = X^3 + AXZ^2 + BZ^3.$$
một điểm $(X_1 : Y_1 : Z_1 )$ trên $E$ tương ứng với điểm affine $(X_1/Z_1,Y_1/Z_1)$ khi nào $Z_1 \neq 0$
Khi nào $Z_1$ chúng ta có điểm ở vô cực $P_\infty = (0:1:0)$ không có biểu diễn trên tọa độ affine.
Đối diện (âm) của một điểm $(X_1 : Y_1 : Z_1 )$ Là $(X_1 : -Y_1 : Z_1 )$
Để cho $P_i = (X_i : Y_i : Z_i ), i = 1, 2$, là các điểm trên đường cong elip đồng nhất
sau đó
$$(X_1 : Y_1 : Z_1 ) + (X_2 : Y_2 : Z_2 ) = (X_3 : Y_3 : Z_3 ).$$
Công thức từ Sổ tay mật mã đường cong Elliptic và Hyperelliptic
công thức RF9060
RFC Hiển thị mã giả để thêm và nhân đôi ( có một errata cho điều này và ở đây phiên bản sửa chữa được đại diện);
Đặt P1=(X1,Y1,Z1) và P2=(X2,Y2,Z2) là các điểm trên đường cong elip,
và đặt u = Y2 * Z1 - Y1 * Z2 và v = X2 * Z1 - X1 * Z2.
Ta quan sát thấy rằng các điểm P1 và P2 bằng nhau khi và chỉ khi u và v
đều bằng không. Mặt khác, nếu P1 hoặc P2 bằng
điểm ở vô cực, v bằng không và u khác không (nhưng ngược lại
hàm ý không giữ).
nếu P1 là điểm ở vô cực,
P3 = P2
khác nếu P2 là điểm ở vô cực,
P3 = P1
ngược lại nếu P1=-P2 là điểm xạ ảnh
P3 = (0,1,0)
khác nếu P1 không bằng 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
khác // P2 bằng P1, P3 = P1 * P1
w = 3 * X1^2 + a * 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
Người ta phải sử dụng các phương trình để thấy rằng các trường hợp đặc biệt cho $P_\infty$ là cần thiết. Và, vâng, nó hoạt động cho tất cả các điểm khác với $P_\infty$. Điều đó được xử lý trong hai bước đầu tiên của mã giả.
lưu ý 1: RFC này sử dụng sản phẩm đối với điểm cộng mà người ta phải chăm sóc. Không có tích trong một đường cong elip, chúng ta có phép cộng điểm và phép nhân vô hướng. Các điểm đang tạo thành một nhóm Abelian dưới phép cộng điểm và với phép nhân vô hướng thông thường, chúng ta chỉ có thể có Mô-đun Z.
Lưu ý 2: Công thức RFC6090 có cùng chi phí như Handbook.
lưu ý 3: Cả hai công thức đều được xác minh bằng SageMath và chúng đúng theo công thức của SageMath. Trong khi thử nghiệm Curve25519 được sử dụng. Người ta có thể dễ dàng thay đổi điều này bằng cách sử dụng mã từ bệnh thần kinh
lưu ý 4: Loại bỏ các trường hợp đặc biệt với $P_\infty$ sau đó thấy kết quả không đúng (đa số là fail do kết quả không phải là 1 điểm trên đường cong)