Với hy vọng làm hài lòng lời mời của @fgrieu trong các nhận xét, tôi thử một câu trả lời đến từ việc triển khai Monero. Nguồn gốc của những từ này là cheatsheet tôi đã viết https://getmonero.org/library/RingsCheatsheet20210301.pdf trong khi học tập https://www.getmonero.org/library/Zero-to-Monero-2-0-0.pdf
Tôi nghĩ điều đúng đắn là bắt đầu từ chữ ký Schnorr không tương tác (theo hương vị Fiat-Shamir) cho các phím trên đường cong hình elip. Hãy nhanh chóng tóm tắt nó.
Hãy cùng nói nào $(x,X)$ là cặp khóa riêng/công khai, trong đó $X\tam giácq xG$ với $G$ điểm phát điện của EC; $tx$ là giao dịch/văn bản/bất cứ thứ gì chúng tôi cần ký; ký tên $tx$ với $x$ có nghĩa là có thể tạo ra một cặp $(c,r)$ như vậy mà:
$H(tx, rG + cX)=c$
ở đâu $H$ là một hàm băm (bất kể cái nào ở đây) và $c$ và $r$ được gọi là "thử thách" và "phản hồi", với các thuật ngữ đến từ lược đồ tương tác. $c$ được lấy từ một bí mật ngẫu nhiên duy nhất $\alpha$ chỉ được biết bởi người ký và không bao giờ được sử dụng lại trong hai chữ ký và đẳng thức ở trên tương đương với:
$rG + cX = \alpha G$
(btw, bằng cách thay thế bạn có được cách $c$ được định nghĩa ;) )
Vì vậy, nhìn nó từ góc nhìn của loài chim, chúng ta có thể nói rằng xác minh của $tx$ chữ ký của $x$ là một chức năng của nội dung đã ký, khóa chung, thử thách và phản hồi:
$f(tx, X, r, c)$
Chữ ký vòng là về việc tìm kiếm hương vị của lược đồ này bằng mồi nhử, trong khi vẫn chỉ giữ lại một người ký THỰC TẾ (từ quan điểm kỹ thuật: cần nhiều $X_i$ -hãy cùng nói nào $n$- trong thuật toán xác minh nhưng đơn lẻ $x$ trong thuật toán ký kết); và tất cả đều không có sự phối hợp giữa các chủ sở hữu chính có liên quan.
Có một thách thức và một phản ứng cho mỗi $X_i$, vì vậy chúng tôi có $c_i$ và $r_i$, tuy nhiên mọi thứ đang được sắp xếp để từ $c_i$ chúng ta có thể tính toán $c_{i+1}$, với "tràn" khi $i=n$ (ở đây là "chiếc nhẫn"), vì vậy:
$H(tx, r_{i}G + c_{i}X_{i})=c_{i+1}$ với $1 \le i \le n-1$
$H(tx, r_{n}G + c_{n}X_{n})=c_1$ với $i=n$
đưa ra chúng ta có thể hồi quy từ $c_n$ đến $c_1$ các điều kiện trên dẫn đến chức năng xác minh chữ ký:
$f(tx, X_i, r_i, c_1)$
Nhưng "ma thuật" đến từ đâu? thế nào là sự sắp xếp làm để có $c_i$ tạo thành một chuỗi khép kín trong đó đưa ra một giá trị thách thức, bạn có thể tính toán tất cả các giá trị khác (lưu ý chúng tôi đã chọn $c_1$ đặc biệt, nhưng điều đó thực sự không có gì đặc biệt cả)?
Vâng, nhờ vào những sự thật này:
- nếu chúng ta chỉ ra là $c_\pi$ thách thức liên quan đến người ký THỰC TẾ, $c_{\pi+1}$ được tính toán từ một bí mật ngẫu nhiên $\alpha$ chỉ người ký THỰC TẾ mới biết (nó có nhớ gì không? ;) );
- tất cả những thứ khác $c_i$ được tính toán với công thức chuỗi trên;
- tất cả các $r_i$ chỉ là những con số ngẫu nhiên, ngoại trừ $r_\pi$ mà được chọn như vậy để cho $c_{\pi+1}$ để tôn trọng công thức chuỗi (ngay cả khi nó đến từ $\alpha$)
Và bây giờ cuối cùng là Hình ảnh chính $X^*$! Một phần được quảng cáo trong giao dịch để ngăn chi tiêu hai lần, nó cũng là một phần của $c_i$ tính toán, và một lần nữa $\alpha$/ thủ thuật công thức chuỗi được sử dụng: và nó chỉ giữ nếu Hình ảnh chính $X^*$ được lấy theo một cách rất cụ thể, chức năng của khóa riêng và khóa chung của người ký THỰC TẾ.
Đó là lý do tại sao bạn không thể chọn ngẫu nhiên một cái vẫn chưa được sử dụng!
Tôi hiểu đây chỉ là dòng lý luận chính, còn thiếu nhiều chi tiết, nhưng tôi hy vọng bạn có thể tìm thấy chúng trong cheatsheet với sự trợ giúp của những từ đồng hành này (Tôi đoán đối với nhu cầu của mình, bạn chỉ có thể quan tâm đến "Không tương tác (Fiat -Shamir) Schnorr", "SAG" và "bLSAG")