Điểm:7

Tìm Tham Số Đường Cong Elliptic, a và b, Cho Hai Điểm Trên Đường Cong

lá cờ th

Tôi chưa quen với Mật mã đường cong Elliptic và đang thực hiện thử thách CTF sử dụng Đường cong Elliptic. Hiện tại, tôi đang cố gắng tìm máy phát điện, $G$, và được cung cấp khóa công khai và khóa riêng, $P$$k$, s.t. $P = [k]G$, cũng như một điểm ngẫu nhiên khác trên đường cong. Tôi biết thứ tự, $n$, của nhóm, và tôi biết hai số nguyên tố, $p$$q$, đó là những yếu tố duy nhất của $n$.

Tôi đọc rằng nếu bạn có khóa riêng và khóa chung, bạn có thể tính trình tạo là ...

$$G = [k^{-1}]P\pmod n$$

... ở đâu $k^{-1} = n - k$.

Điều đó thật tuyệt, nhưng thật không may, tôi không biết các thông số, $a$$b$, của đường cong elip, $y^2 = x^3 + ax + b$, và vì vậy tôi gặp khó khăn khi thực hiện phép nhân điểm EC với $k^{-1}$.

Tôi đang nghĩ, vì tôi biết giá trị của hai điểm trên đường cong, nên về cơ bản tôi có hệ phương trình tuyến tính sau:

\begin{align} y_1^2 &= x_1^3 + ax_1 + b\ y_2^2 &= x_2^3 + ax_2 + b\ \end{align}

Tôi đã thử giải bài này bằng cách sử dụng trình giải định lý z3 nhưng nhận được câu trả lời khẳng định rằng hệ không thỏa mãn. Sau đó, tôi đã thử sửa đổi hệ phương trình của mình để cả hai vế của phương trình được tính theo modulo $n$, nhưng điều này dẫn đến việc z3 mất nhiều thời gian để tìm ra giải pháp, có lẽ là do $a$$b$ là các số 128 bit và $n$ là một số 512-bit. Điều này khiến tôi nghĩ lại về các lớp khoa học máy tính đại học của mình, nơi tôi nhớ đã học về các vấn đề khác nhau trong khoa học máy tính và điều này có vẻ giống với Lập trình số nguyên, đó là NP-đầy đủ.

Do đó, có thể tính toán hiệu quả các tham số, $a$$b$, của một đường cong elip nếu tôi biết thứ tự $n$ và hai điểm $P$$Q$ trên đường cong?

knaccc avatar
lá cờ es
Để đảo $k$ thành $k^{-1}$, bạn cần thực hiện phép "nghịch đảo nhân modulo". Xem https://en.wikipedia.org/wiki/Modular_multiplicative_inverse
Điểm:8
lá cờ in

Cho hai điểm trên đường cong $P=(x_1,y_1), Q=(x_2,y_2)$ chúng ta có thể xác định các tham số của dạng Weierstrass ngắn $y^2 = x^2 + ax +b$. Chèn tọa độ các điểm vào phương trình đường cong để được hai phương trình như bạn đã làm;

\begin{align} y_1^2 &= x_1^3 + ax_1 + b &\pmod{n} \ y_2^2 &= x_2^3 + ax_2 + b &\pmod{n}\ \hline & & \text{trừ}\ y_1^2 - y_2^2 &= x_1^3 - x_2^3 + a (x_1 - x_2) &\pmod{n}\ (y_1^2 - y_2^2) -(x_1^3 - x_2^3)&= a (x_1 - x_2) &\pmod{n}\ [(y_1^2 - y_2^2) -(x_1^3 - x_2^3)] \cdot (x_1 - x_2)^{-1}&= a &\pmod{n}\ \end{align}

Để có thể tìm thấy $a$ vấn đề duy nhất là sự tồn tại của nghịch đảo nhân mô-đun của $(x_1 - x_2)$ đến $\bmod n$.

  • Nếu $\gcd((x_1 - x_2),n) = 1$ thì nghịch đảo nhân mô-đun tồn tại và có thể dễ dàng tìm thấy với Thuật toán Euclide mở rộng (Ext-GCD)
  • Nếu $\gcd((x_1 - x_2),n) \neq 1$ thì không có nghịch đảo (xem Điều gì xảy ra nếu bên dưới).
  • Lưu ý rằng, trong trường hợp $x_1 - x_2 = 0$ sau đó chúng tôi có $\gcd(0,n) = n.$ Nói cách khác, không có nghịch đảo.

Một lần $a$ được tìm thấy thành công, việc tìm kiếm $b$ là dễ dàng hơn. Thay cái đã biết vào phương trình rồi giải cho cái chưa biết duy nhất $b$.


SageMath cho nghịch đảo mô-đun;

Zn = Số nguyên(12)
a = Zn(5)
b = a^-1
một

nếu đặt $a = 4$ sau đó bạn sẽ nhận được lỗi: ZeroDivisionError: nghịch đảo của Mod(4, 12) không tồn tại.


Chuyện gì xảy ra nếu không có nghịch đảo của $(x_1 - x_2)$ đến $\bmod{n}$. Chúng ta có thể tìm thấy giải pháp dưới đây?

$$(y_1^2 - y_2^2) -(x_1^3 - x_2^3)= a (x_1 - x_2) \pmod{n} \label{a}\tag{1}$$

Có, chúng ta vẫn có thể tìm giải pháp cho $\ref{a}$ nhưng chúng sẽ không phải là duy nhất.

bổ đề: Nếu $d$ là ước chung lớn nhất của a và m thì đồng dạng tuyến tính $ax \equiv b \pmod m$ có nghiệm khi và chỉ khi $d$ phân chia $b$. Nếu $d$ phân chia $b$, thì có chính xác $d$ các giải pháp

Để tìm thấy chúng, từ $a/d \cdot x \equiv b/d \pmod{m/d}$. Rõ ràng là $\gcd(a/d,m/d)=1$. Sau đó chúng ta có thể đảo ngược $a/d$ và giải quyết cho $x$. sau đó $\{x, x+\dfrac{m}{d},x+\dfrac{2m}{d}, \ldots, x+\dfrac{(d-1)m}{d} \}$$d$ giải phương trình $\ref{a}$.

Đối với mỗi giải pháp, nó dự kiến ​​​​sẽ có một khác nhau $b$, do đó để xác định duy nhất thông tin bổ sung sẽ là cần thiết.

2.71828-asy avatar
lá cờ in
Phương trình $ab = c (\text{mod} n)$ có thể đúng ngay cả khi cả a và b đều không có nghịch đảo cấp số nhân. Chẳng phải điều kiện chính xác là liệu $(y_1^2 - y_2^2) - (x_1^3 - x_2^3)$ có chia hết cho $\gcd(x_1 - x_2, n)$ hay không?
kelalaka avatar
lá cờ in
@2.71828-asy Lấy trường hợp $4x \equiv 6 \bmod 10$, $4x = 6 + 10 k$ chia cho 2, ta có $2x = 3 \bmod 5$ nên $x = 4$ và cái còn lại là $x+5$ vì cả hai đều thỏa mãn $4x \equiv 6 \bmod 10$ nên cả hai đều là nghiệm. Tuy nhiên, nghịch đảo phải là duy nhất!
2.71828-asy avatar
lá cờ in
Ok, vì chúng ta biết rằng phải có một $a$ duy nhất, chúng ta biết rằng chúng ta đang tìm kiếm một nghịch đảo chứ không phải một giải pháp?
kelalaka avatar
lá cờ in
@2.71828-asy trong khi trả lời trường hợp đầu tiên, tôi cũng đang xem xét trường hợp này. Tuy nhiên, tôi không nghĩ rằng OP sẽ cần điều đó quá tập trung vào giải pháp duy nhất. Đã thêm một phần cho điều đó. Trong một cái nhìn thứ hai, tôi đã thấy rằng họ có thể cần. Đã thêm dưới dạng **Điều gì xảy ra nếu**, cảm ơn. Đây là một vấn đề rất phổ biến trong các giải pháp mật mã Hill mà chúng tôi đề xuất xem xét...
jinscoe123 avatar
lá cờ th
@kelalaka Cảm ơn! Lời giải thích của bạn đã giúp tôi nhận ra sai lầm của mình. Tôi đang thực hiện phép chia thông thường cho $(x_1 - x_2)$ thay vì phép chia theo mô-đun.
kelalaka avatar
lá cờ in
@ jinscoe123 ECC hơi phức tạp vì có một trường hơn các tọa độ đang tạo thành một nhóm theo luật bổ sung. Tuy nhiên, mọi thao tác đều được thực hiện đối với trường cơ sở. Tôi đã lưu ý Sagemath rằng một người cần lệnh đặc biệt để cho phép $a \in \mathbb Z_5$ hoặc tự xử lý bằng các ngôn ngữ lập trình khác.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.