Tuyên bố miễn trừ trách nhiệm: Tôi không có bằng chứng bảo mật cho chương trình này. Những lời chỉ trích đều được hoan nghênh.
Để đơn giản hóa ký hiệu, tôi gọi hai cặp khóa (riêng tư, công khai) $(a, A = a\cdot G)$ và $(b, B = b\cdot G)$ trên điểm cơ sở $G$. Chữ thường là số vô hướng, chữ hoa là điểm EC. $H_s()$ có nghĩa là băm và giảm (sửa đổi thứ tự của $G$) thành vô hướng. Tất cả các hoạt động giữa các đại lượng vô hướng (chẳng hạn như phép trừ và phép nhân) được điều chỉnh theo thứ tự của $G$.
Đầu tiên, khai báo $D = a\cdot b\cdot G$.
để cho $m = H_s(\text{"tin nhắn đang được ký"})$ dưới dạng tin nhắn một lần sẽ ngăn việc sử dụng lại chữ ký này trong các ngữ cảnh.
Để chứng minh $D$ thực sự được xây dựng đúng cách, hãy sử dụng chữ ký Schnorr mở rộng:
Chữ ký là $(Đ, c, r)$ ở đâu $k$ là một đại lượng ngẫu nhiên, $c = H_s(m \mathbin\| k\cdot G \mathbin\| k\cdot B)$ và $r = k - c\cdot a$.
Chữ ký được xác minh bằng cách kiểm tra $c \overset{?}{=} H_s(m \mathbin\| r\cdot G + c\cdot A \mathbin\| r\cdot B + c\cdot D)$ và bằng cách kiểm tra $D$ là một điểm hợp lệ và không phải là điểm ở vô cực.
Điều này chứng minh cả rằng $a$ được biết đến, và điều đó $a$ vừa là khóa riêng của điểm $A$ trên điểm máy phát điện $G$, và cũng là khóa riêng của điểm $D$ trên điểm máy phát điện $B$. Vì vậy $D$ được chứng minh là $a\cdot b\cdot G$.
Cuối cùng, chúng ta cần tạo chữ ký thứ hai chứng minh rằng ai đó biết cả hai $a$ và $b$. Chúng ta có thể làm điều đó bằng cách chứng minh kiến thức về khóa bí mật của điểm $D$ trên điểm cơ sở $G$ (do đó chứng minh kiến thức về $a\cdot b$).
Chữ ký là $(c', r')$ ở đâu $k'$ là một đại lượng ngẫu nhiên, $c' = H_s(m \mathbin\| k'\cdot G)$ và $r' = k' - c'\cdot a\cdot b$.
Chữ ký được xác minh bằng cách kiểm tra $c' \overset{?}{=} H_s(m \mathbin\| r'\cdot G + c'\cdot D)$.
Nếu Alice thông đồng với Eve mà Eve không tiết lộ $b$, Alice sẽ phải tiết lộ khóa riêng của mình $a$ đến đêm giao thừa. Kiến thức về $k'$ bởi một trong hai người thông đồng sẽ cho phép người thông đồng đó tính toán khóa riêng của người thông đồng kia. Tính bảo mật của sơ đồ này phụ thuộc vào việc Alice không thể thông đồng với Eve về mặt toán học để xây dựng $r'$ sao cho Alice hoặc Eve sau đó có thể xác định bằng toán học khóa riêng của người kia.
Do đó, chữ ký tổng thể là $(D, c, r, c', r')$ và là $5\cdot 32 = 160$ byte.