Bổ sung vào đường cong Elliptic
Disclaimer: Điều này không làm bất kỳ công lý về chủ đề phong phú của các đường cong elip. Nó được đơn giản hóa rất nhiều. Vì các đường cong elliptic gần đây đã nhận được rất nhiều sự chú ý của truyền thông trong bối cảnh mã hóa, tôi muốn cung cấp một số hiểu biết nhỏ về cách "tính toán" trên một đường cong elliptic thực sự hoạt động.
Giới thiệu
Đường cong elip là tập hợp các điểm (x,y)
trong mặt phẳng có dạng y^2 = x^3+Ax+B
. (Ngoài ra, 4A^3+27B^2 ≠ 0
để tránh những điểm kỳ dị khó chịu.) Bạn có thể xem xét các đường cong này trong bất kỳ lĩnh vực nào. Nếu bạn sử dụng trường số thực, các đường cong có thể được hiển thị và chúng trông như thế này:
Điều đặc biệt về các đường cong này là chúng có một phép toán số học được xây dựng tương tự như phép cộng. Bạn có thể cộng và trừ điểm, và thao tác này là cả kết hợp và giao hoán (một nhóm abelian).
Làm thế nào để bổ sung làm việc?
Lưu ý: việc thêm điểm trên các đường cong elip không trực quan. Loại bổ sung này được định nghĩa theo cách của nó bởi vì nó có các thuộc tính tốt nhất định. Thật lạ, nhưng nó hoạt động.
Khi các đường cong elip tạo thành một nhóm, có một danh tính phụ gia tương đương với 0. Nghĩa là, thêm 0
vào bất kỳ điểm nào sẽ không thay đổi kết quả. Nhận dạng phụ gia này là "điểm" ở vô cực. Tất cả các dòng trên mặt phẳng bao gồm điểm này ở vô cực, vì vậy việc thêm nó không tạo ra sự khác biệt.
Giả sử rằng bất kỳ đường thẳng nào cũng cắt đường cong tại ba điểm, có thể là 0
, và tổng của ba điểm này là 0
. Giữ điều đó trong tâm trí, hãy xem hình ảnh này.
Bây giờ, câu hỏi tự nhiên là, cái gì P+Q
? Vâng, nếu P+Q+R = 0
, sau đó P+Q = -R
(viết thay thế là R'
). Ở đâu -R
? Đó là nơi R + (-R) = 0
, mà là ở phía bên kia của trục x từ R
để cho đường thẳng qua chúng là thẳng đứng, giao nhau chỉ R
, -R
và 0
. Bạn có thể thấy điều này trong phần đầu tiên của hình ảnh này:
Một điều khác bạn có thể thấy trong những hình ảnh này là tổng của một điểm có nghĩa là đường thẳng tiếp xúc với đường cong.
Làm thế nào để tìm giao điểm của đường và đường cong elip
Trong trường hợp có hai điểm khác biệt
Nói chung có chính xác một dòng qua hai điểm P=(x0,y0), Q=(x1,y1)
. Giả sử nó không thẳng đứng và hai điểm là khác biệt, chúng ta có thể viết nó là y = m*x+q
. Khi chúng ta muốn tìm các điểm giao nhau với đường cong elip, chúng ta chỉ cần viết
0 = x^3+Ax+B-y^2 = x^3+Ax+B-(m*x+q)^2
đó là một đa thức bậc ba. Chúng thường không dễ giải quyết, nhưng chúng ta đã biết hai số không của đa thức này: Hai x
tọa độ x0, x1
của hai điểm chúng ta muốn thêm!
Đó là yếu tố cách chúng ta ra khỏi những yếu tố tuyến tính (x-x0)
và (x-x1)
và chỉ còn lại một yếu tố tuyến tính thứ ba có gốc là x
Phối của điểm R
. ( -R
cũng vì tính đối xứng. Lưu ý rằng nếu R = (x2,y2)
sau đó -R = (x2,-y2)
. -
Đó là từ nhóm; nó không phải là một phép trừ véc tơ.)
Trong trường hợp thêm một điểm P
vào chính nó
Trong trường hợp này, chúng ta phải tính tiếp tuyến của đường cong tại P=(x0,y0)
. Chúng tôi có thể trực tiếp viết m
và q
về A,B,x0,y0
:
3*x0^2 + A
m = ------------
2*y0
-x0^3 + A*x0 + 2*B
q = --------------------
2*y0
Chúng ta có được phương trình y = m*x+q
và có thể tiến hành tương tự như trong đoạn trên.
Cây hoàn chỉnh
Đây là danh sách đầy đủ về cách xử lý tất cả các trường hợp đó:
Gọi P,Q
là các điểm trên đường cong elip (bao gồm cả điểm "vô cực" 0
)
- Nếu
P = 0
hoặcQ = 0
, sau đóP+Q = Q
, hoặcP+Q = P
, tương ứng - Khác
P ≠ 0
vàQ ≠ 0
, vì vậy hãyP = (x0,y0)
vàQ = (x1,y1)
:- Nếu
P = -Q
(có nghĩa làx0 = x1
vày0 = -y1
) thìP+Q = 0
- Khác
P ≠ -Q
- Nếu
x0 = x1
sau đó chúng ta cóP=Q
và chúng ta tính toán tiếp tuyến (xem phần bên trên) để có đượcR
. Sau đóP+Q = P+P = 2P = -R
- Khác: Chúng ta có thể xây dựng một dòng của biểu mẫu
y = m*x+y
thông qua hai điểm đó (xem phần bên trên) để tính toánR
. Sau đóP+Q=-R
- Nếu
- Nếu
Lĩnh vực hữu hạn
Đối với thách thức này, chúng ta sẽ chỉ xem xét lĩnh vực kích thước p
mà p
là số nguyên tố (và vì một số thông tin chi tiết p ≠ 2, p ≠ 3
). Điều này có lợi thế mà bạn có thể chỉ cần tính toán mod p
. Số học trong các lĩnh vực khác phức tạp hơn nhiều.
Điều này trong ví dụ này chúng tôi đặt ra p = 5
và tất cả các đẳng thức ở đây là đồng đẳng 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
Thử thách
Cho các tham số A,B
của một đường cong elliptic, một đặc tính trường nguyên tố p
và hai điểm P,Q
trên đường cong elliptic, trả về tổng của chúng.
- Bạn có thể giả sử rằng các tham số
A,B
thực sự mô tả một đường cong elip, điều đó có nghĩa là4A^3+27B^2 ≠ 0
. - Bạn có thể giả sử rằng đó
P,Q
thực sự là các điểm trên đường cong elip hoặc0
điểm. - Bạn có thể cho rằng đó
p ≠ 2,3
là số nguyên tố.
Các trường hợp thử nghiệm
Tôi đã thực hiện một triển khai (không thanh lịch) trong MATLAB / Octave, mà bạn có thể sử dụng cho các trường hợp thử nghiệm của riêng mình: ideone.com Tôi hy vọng nó là chính xác. Nó ít nhất đã sao chép một vài tính toán tôi làm bằng tay.
Lưu ý các trường hợp thử nghiệm tầm thường hoạt động cho tất cả các đường cong mà chúng tôi xem xét ở đây:
Thêm số không: P+0 = P
Thêm nghịch đảo:(x,y) + (x,-y) = 0
Cho p = 7, A = 0, B = 5
hai điểm P = (3,2)
và Q = (6,2)
nằm trên đường cong elip. Sau đó giữ:
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
Tất cả các chất độc trên đường cong elip là (3,2),(5,2),(6,2),(3,5),(5,5),(6,5),0
Cho p = 13, A = 3, B = 8
chúng tôi nhận
(1,8)+(9,7) = (2,10)
(2,3)+(12,11) = (9,7)
2*(9,6) = (9,7)
3*(9,6) = 0
Cho p = 17, A = 2, B = 2
và P=(5,1)
chúng tôi nhận được
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)
Nếu bạn thực sự có tham vọng, hãy dùng
p = 1550031797834347859248576414813139942411
A = 1009296542191532464076260367525816293976
x0 = 1317953763239595888465524145589872695690
y0 = 434829348619031278460656303481105428081
x1 = 1247392211317907151303247721489640699240
y1 = 207534858442090452193999571026315995117
và cố gắng tìm một số tự nhiên n
như vậy n*(x0,y0) = (x1,y1)
. Thêm thông tin ở đây.
ruột thừa
Trước hết, CẢM ƠN BẠN đã đến @ El'endiaStarman để xem xét và chỉnh sửa bản nháp của tôi!
Tại sao đường cong elip?
Chà nó có vẻ giống như một loại phương trình tùy ý, nhưng thực tế không phải vậy, nó khá chung chung: Nói chung chúng ta xem xét các "hình dạng" hình học đó trong mặt phẳng chiếu (đó là nơi "vô cực" xuất phát. Chúng ta xem xét tất cả sự đồng nhất Đa thức bậc ba (Những người có mức độ thấp hơn hoặc cao hơn sẽ quá khó khăn hoặc chỉ tầm thường để kiểm tra.) Sau khi áp dụng một số hạn chế để có được các tính chất tốt đẹp mà chúng ta muốn, và sau khi khử các đa thức đó (chiếu vào một trong ba mặt phẳng affine ) chúng tôi kết thúc với các phương trình nhưy^2+a*x*y+b*y = x^3+c*x^2+d*x+e
Đây là một đường cong elip ở dạng Weierstrass dài. Về cơ bản, đây là những đường cong giống như chúng ta đã xem xét, nhưng chỉ hơi sai lệch. Với một phép biến đổi tọa độ tuyến tính, bạn có thể dễ dàng tạo ra một phương trình Weierstras ngắn từ đó. ví dụ , vẫn giữ tất cả các thuộc tính thú vị.
Tại sao chúng tôi loại trừ p=2,3
?
Điều này có liên quan đến thực tế là đối với dạng Weierstrass ngắn, chúng ta cần hạn chế 4A^3+27B^2 ≠ 0
để tránh các điểm kỳ dị (nhiều hơn về điều đó dưới đây). Trong một lĩnh vực của đặc tính 2 chúng ta có 4 = 0
và trong một lĩnh vực của đặc tính 3 chúng ta có 27 = 0
, điều này làm cho không thể có các đường cong ở dạng weierstrass ngắn cho các loại trường đó.
Điểm kỳ dị là gì?
Nếu phương trình đúng 4A^3+27B^2=0
, chúng ta có các điểm kỳ dị như sau: Như bạn thấy tại các điểm đó, bạn không thể tìm thấy đạo hàm và do đó không có tiếp tuyến, "giết chết" phép toán. Bạn có thể nhìn vào các phương trình y^2 = x^3
hoặcy^2 = x^3-3*x+2
Tại sao chúng được gọi là đường cong elliptic ?
Lý do là các phương trình của hình dạng này bật lên trong các tích phân elip, ví dụ, đó là những gì bạn nhận được khi bạn muốn tính toán ví dụ: ví dụ về hình elip. Một slideshow ngắn về nguồn gốc của tên.
Họ phải làm gì với mật mã?
Có nhiều cách để tính toán nP = P+P+...+P
rất hiệu quả. Điều này có thể được sử dụng ví dụ trong trao đổi khóa Diffie Hellman . Số học mô-đun có thể được thay thế bằng việc thêm vào các nhóm con xoắn, đây chỉ là các điểm trên đường cong có thứ tự hữu hạn. (Điều đó có nghĩa là mP = 0
đối với một số người m
, về cơ bản chỉ là tính toán mod m
).
y^2 = x^3 + x
là một đường cong elip hợp lệ và(0,0) ≠ 0
là một điểm trên đường cong!)