Điểm:0

Có thể tính toán trực tiếp ID khôi phục từ một thông báo, chữ ký và khóa chung trong ECDSA/secp256k1 không?

lá cờ ca

Vấn đề

Giả sử tôi nhận được một chữ ký $(r,s)$, khóa chung tương ứng và thông báo đã được ký. Tôi không có quyền truy cập vào khóa riêng. tôi cần biết những gì tái phạm (Recovery ID) tương ứng với khóa chung. Một điều tôi có thể làm là khôi phục khóa công khai từ chữ ký bằng vô số thư viện và thử mọi cách có thể. tái phạm giá trị (0 hoặc 1, rất hiếm khi 2 hoặc 3). Nhưng tôi đã tự hỏi, tại sao tôi lại thử nhiều phương án thay vì chỉ tính toán trực tiếp?

Bây giờ theo bài viết này ... http://coders-errand.com/ecrecover-signature-verification-ethereum/

... Tôi chỉ cần đảo ngược công thức và điền vào tất cả các hằng số của secpk256k1 đường cong: https://vi.bitcoin.it/wiki/Secp256k1

Vì vậy, tôi đã cố gắng nghĩ xem điều này sẽ được thực hiện như thế nào. Sự khác biệt giữa bài báo và tình huống của tôi là tôi đã có khóa công khai $Q$. tôi quan tâm đến $y$-Tính chẵn lẻ của Điểm $[k]G$ ($X$ trong bài viết). tôi có thể tính toán $X$ vì tôi có $Q$, $R$, $S$ và tất cả các giá trị không đổi được đưa ra trong wiki. Nhưng sau đó tôi sẽ phải tính toán lại hai điểm:

\begin{align} X &= \frac{(eG + rQ)}{s} \bmod n\ -X &= \frac{(eG + rQ)}{-s} \bmod n\ \end{align}

nhưng chính xác là sự tương đương mà tôi quan tâm, -. Tuy nhiên, bây giờ tôi sẽ có hai điểm, trong đó điểm 1 không hợp lệ vì nó thuộc về một điểm khác Hỏivà tôi không biết cách xác minh cái nào là chính xác. Hơn nữa, bây giờ tôi đang kiểm tra lại hai điểm, đó là điều mà tôi muốn ngăn chặn ngay từ đầu.

Câu hỏi

Câu hỏi của tôi là, cách duy nhất để khôi phục khóa chung cho nhiều tái phạm giá trị và thu hẹp nó xuống tái phạm cho khóa công khai của riêng bạn? Hoặc là nó có thể đưa ra một công thức, trong đó tái phạmở một bên và các điều khoản khác ở phía bên kia, đại loại như $tái phạm$ $=$ $Q$... $G$... $r$ $s$... $e$

kelalaka avatar
lá cờ in
Bạn không có khóa công khai trong đó $y$ đã được đề cập?
CoderApprentice avatar
lá cờ ca
@kelalaka Theo cách tôi hiểu, recid liên quan đến tính chẵn lẻ y của điểm kG = (x, y) = X (trong đó k được chọn ngẫu nhiên trong khi ký và G là trình tạo secp256k1) chứ không phải tính chẵn lẻ y của khóa công khai.
Điểm:1
lá cờ gb

Thật không may, tôi không nghĩ rằng điều đó là có thể nếu không chỉ kiểm tra xem cái nào hoạt động. Đó là vì $[s]R$$[-s](-R)$ là cùng một điểm đường cong, và cả hai $R$$-R$ có cùng tọa độ x $r$, Vì thế $(r, s)$$(r, -s)$ đều là chữ ký hợp lệ dưới cùng một khóa công khai $Q$. Không có cách nào để xác định từ một chữ ký như vậy, liệu $R$ hoặc $-R$ cần được sử dụng trong quá trình khôi phục, bởi vì bạn không biết nonce bí mật $k$. Vì vậy, bạn chỉ cần kiểm tra cả hai khả năng và tìm ra khả năng phù hợp.

(Nếu bất cứ ai khác biết một cách thông minh để làm điều này mà tôi đang thiếu, tôi rất vui được sửa chữa!)

CoderApprentice avatar
lá cờ ca
Vâng, điều đó có ý nghĩa. Tôi đoán những gì tôi đang làm ở đây là tính toán 2 tọa độ đều hợp lệ cho cùng một khóa chung, nhưng thực ra tôi cần tìm khóa chung nào tương ứng với khóa riêng đã ký tin nhắn. Tôi đã cố gắng tìm một công thức sao cho recid = , nhưng recid không thực sự là một phần của công thức. Vì vậy, (x,y) chúng tôi thực sự muốn phụ thuộc vào `k` nào đã được chọn trong khi ký? Và đó là con số mà chúng ta không bao giờ có thể tìm ra nếu không có khóa riêng.
meshcollider avatar
lá cờ gb
Chính xác. Tôi thậm chí không chắc liệu recid có được tiêu chuẩn hóa ở bất kỳ đâu hay chỉ phụ thuộc vào việc triển khai. Tôi biết rằng [libsecp256k1](https://github.com/bitcoin-core/secp256k1) sử dụng bit đầu tiên để biểu thị tọa độ y lẻ (khi được đặt thành 1) và bit thứ hai (khi recid = 2 hoặc 3) chỉ ra rằng tọa độ x vượt quá thứ tự nhóm.

Đă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.