Tôi đang đọc qua BIP340 và tôi không hiểu phần này:
Ví dụ: không có hàm băm được gắn thẻ, chữ ký BIP340 cũng có thể hợp lệ đối với lược đồ chữ ký trong đó điểm khác biệt duy nhất là các đối số của hàm băm được sắp xếp lại. Tồi tệ hơn, nếu hàm dẫn xuất nonce BIP340 được sao chép hoặc tạo độc lập, thì nonce có thể vô tình được sử dụng lại trong sơ đồ khác làm rò rỉ khóa bí mật.
Tôi cho rằng câu đầu tiên chỉ hợp lệ trong trường hợp các đối số xảy ra để chia sẻ giá trị, điều này có đúng không? Chẳng hạn, hàm băm được sử dụng bởi BIP340 là $\text{hash}(R||P||m)$. Nếu một sơ đồ khác được sử dụng $\text{hash}(R||m||P)$, thì hai lược đồ này sẽ dẫn đến xung đột nếu thông báo $m$ được ký đã xảy ra bằng với khóa công khai $P$, làm cho chữ ký trong một lược đồ có giá trị trong lược đồ kia.
Câu hỏi chính của tôi liên quan đến câu thứ hai. Làm thế nào chính xác việc không gắn thẻ băm sẽ gây ra việc sử dụng lại một nonce trong một sơ đồ riêng biệt để rò rỉ khóa riêng tư? Tôi đang cố gắng giải toán để xem nó sẽ hoạt động như thế nào.
Giả sử chúng ta có hai sơ đồ Schnorr tạo ra giá trị băm của chúng như sau:
Sơ đồ 1: $e_1=\text{hash}(R||P||m)$
Sơ đồ 2: $e_2=\text{hash}(R||m||P)$
Tôi có thể thấy việc sử dụng lại một nonce sẽ làm rò rỉ khóa riêng như thế nào nếu cùng một khóa được sử dụng trong cả hai lược đồ và giá trị băm là khác nhau. Đối với một nonce $k$, khóa riêng $d$, và chữ ký $s_1$ và $s_2$ chúng ta có:
\begin{align}
s_1 &= k + e_1 \cdot d \
s_2 &= k + e_2 \cdot d \
s_1 - s_2 &= d (e_1 - e_2) \
d &= (s_1 - s_2) (e_1 - e_2) ^ {-1}
\end{align}
Tuy nhiên, nếu các giá trị băm đã khác, thì việc thay đổi các đối số băm bằng thẻ dành riêng cho lược đồ sẽ không có gì khác biệt.
Cách tiếp cận khác mà tôi có thể thấy là nếu các khóa riêng tư khác nhau và các giá trị băm giống nhau, như tôi đoán được ngụ ý bởi câu đầu tiên trong trích dẫn BIP. Nếu các khóa riêng là $d_1$ và $d_2$và các giá trị băm đã xảy ra xung đột và cả hai đều $e$, thì sự khác biệt về khóa riêng tư có thể bị rò rỉ như sau:
\begin{align}
s_1 &= k + e \cdot d_1 \
s_2 &= k + e \cdot d_2 \
s_1 - s_2 &= e \cdot (d_1 - d_2) \
d_1 - d_2 &= (s_1 - s_2) \cdot e^{-1}
\end{align}
Mặc dù điều này làm rò rỉ sự khác biệt trong các khóa riêng tư, điều này có thể không lý tưởng, nhưng tôi không hiểu tại sao các khóa riêng tư lại bị rò rỉ.
Có lẽ tôi đang đi về điều này một cách sai lầm. Làm thế nào để toán học hoạt động trong điều kiện rò rỉ khóa riêng do cả việc sử dụng lại một nonce và không gắn thẻ băm?