Điểm:1

Sơ đồ ZK dựa trên Schnorr

lá cờ cn

TL; DR: Điều này TUYỆT ĐỐI không hoạt động và có rủi ro bảo mật rất lớn.Dù sao thì hãy đăng nó trong trường hợp có những mối đe dọa khác mà tôi đã bỏ lỡ hoặc để ngăn cản bất kỳ người nào khác nghĩ ra ý tưởng này.

Xin chào! Tôi là một người mới đối với mật mã học. Tôi đang bắt đầu dấn thân vào các kế hoạch ZK. Đối với một dự án nhỏ của tôi mà tôi dự định áp dụng những gì tôi đã học được cho đến nay, tôi đã nghĩ ra một giao thức và tôi rất muốn biết liệu nó có tốt không (tức là an toàn, thực sự không tương tác và ZK , vân vân). Nó sử dụng lại khá nhiều giao thức xác minh và xây dựng chữ ký Schnorr.

Cài đặt

  • Người chơi là Alice, BobĐám đông.
  • Tất cả người chơi đồng ý sử dụng nhóm con tuần hoàn bảo mật bằng mật mã của một đường cong elip nhất định, với trình tạo $G$.
  • Bob có một cặp khóa công khai/riêng tư ($b$,$B=bG$).

Khách quan

Alice có một bí mật $s$, mà cô ấy cam kết công khai bằng cách thông báo $S$ (được xây dựng như $S=sG$).

Bob muốn chứng minh với bất kỳ thành viên nào của Đám đông rằng anh ta biết $s$, nhưng không tiết lộ bất cứ điều gì về $s$ (ZK). Ngoài ra, anh ấy muốn bằng chứng của mình không tương tác và có thể tái sử dụng bởi bất kỳ thành viên hay hoài nghi nào của Đám đông.

giao thức

  1. Alice thông báo công khai $S$.
  2. Bob tuyên bố biết $s$ và nộp một bằng chứng $p=s-b$.
  3. Đám đông coi đó là bằng chứng hợp lệ nếu $pG+B=S$.

cơ sở lý luận

  1. Để Bob có thể xây dựng một giá trị hợp lệ $p=s-b$ theo ý muốn, anh ta được yêu cầu phải biết $s$. Anh ấy biết việc xác minh liên quan đến việc loại bỏ $-b$ một phần, vì vậy không biết $s$ có nghĩa là không thể kết thúc với $S$ đến cuối cùng.
  2. Bob không cung cấp bất kỳ thông tin nào về $s$ bởi vì nó được che dấu bởi sự bổ sung với $-b$. Vì không ai khác biết $b$, về cơ bản, nó ngẫu nhiên hóa các giá trị một cách thống nhất.
  3. Đám đông biết rằng Bob thực sự biết bởi vì việc tạo ra bằng chứng liên quan đến việc biết $b$ cũng như $s$ cho một nguyên tắc tương tự như điểm đầu tiên. Nếu ai đó biết $s$ nhưng không $b$, họ không thể trừ số tiền chính xác $-b$ được khôi phục trong quá trình xác minh và kết quả cuối cùng của nó sẽ không được $S$.

câu hỏi

  • Đây có phải là chương trình ZK không bắt buộc hợp lệ không?
  • Nó có phải là một trong những tốt nếu vậy?
  • Có bất kỳ lợi thế nào của việc sử dụng zkSNARK so với sơ đồ như vậy không, với chức năng đã được chứng minh là, chẳng hạn, người dùng biết hàm băm của từ và hàm băm của từ được nối với khóa công khai của riêng họ?

Cảnh báo

Điều này hoàn toàn không hoạt động. Nó cực kỳ rủi ro vì bất kỳ người chơi nào (Bob trong trường hợp này) có thể bị rò rỉ khóa riêng của họ: bất kỳ người chơi nào khác biết $s$ (Alice trong trường hợp này, và bất kỳ ai khác nắm giữ $s$ bằng bất cứ cách nào) chỉ có thể làm $b = s - p$. Trong sơ đồ chữ ký Schnorr, có một yếu tố đi kèm $b$. Nhưng yếu tố này được biết đến rộng rãi vì nó được sử dụng trong giao thức xác minh và do đó không thể bảo vệ $b$ trong trường hợp này. Bài học quan trọng mà tôi rất vui vì có thể coi đó là một bài học, đó là trong giao thức Schnorr, điều tối quan trọng là giữ $k$ an toàn.

knaccc avatar
lá cờ es
Tôi cho rằng trong phần zkSNARKs trong câu hỏi của bạn, "từ" là $s$ bí mật? Nếu đó là một từ, thì nó có thể không được coi là có entropy cao. Tôi không chắc làm thế nào nó giúp chứng minh không chỉ kiến ​​thức về hàm băm của $s$, mà còn cả hàm băm của $s$ được nối với khóa công khai $B$ của Bob. zkSNARK phức tạp hơn nhiều và do đó, phần này của câu hỏi của bạn có thể xứng đáng là một câu hỏi khác về crypto.stackexchange nếu bạn muốn khám phá nó chi tiết hơn.
lá cờ cn
Vâng, đó không phải là một từ, đó là một bí mật có entropy cao (có thể là một từ nhưng được trộn lẫn với một nonce có entropy đủ cao). Lý do liên quan đến B trong bằng chứng là tôi muốn bằng chứng là duy nhất đối với Bob, để không bên thứ ba nào Charlie cũng có thể tuyên bố biết câu trả lời với cùng một bằng chứng. Nhưng chắc chắn, tôi sẽ suy nghĩ thêm một chút và đặt cho nó câu hỏi độc lập phù hợp mà nó xứng đáng :)
knaccc avatar
lá cờ es
Nếu tôi hiểu chính xác trường hợp sử dụng của bạn, thì chỉ trong trường hợp không rõ ràng: Bob có thể chỉ cần cung cấp bất kỳ loại chữ ký thông thường nào cho khóa công khai $S$ trên thư bao gồm danh tính hoặc khóa công khai của Bob. Điều này sẽ ngăn chặn việc một bên khác sử dụng lại chữ ký cũng muốn yêu cầu biết về $s$.
lá cờ cn
Tôi không biết rằng tôi hoàn toàn hiểu cách bạn nói rằng bạn có thể tránh sử dụng lại bằng chứng. Tuy nhiên, tôi cũng đang cố gắng giảm thiểu kích thước của bằng chứng đầy đủ. Ý tưởng là có điều này trên một chuỗi khối để xác minh bằng chứng zkSNARK chính xác sẽ rẻ hơn so với bằng chứng + chữ ký zkSNARK. Tôi thực sự không phiền khi thêm độ phức tạp vào chức năng zkSNARK đang được chứng minh.
knaccc avatar
lá cờ es
Loại bằng chứng bạn đã chỉ định trong câu hỏi ban đầu của mình sẽ ràng buộc bằng chứng với khóa công khai của Bob. Tuy nhiên, đối với phương pháp được đề cập trong nhận xét mà tôi vừa thực hiện, chữ ký thông thường sẽ không ràng buộc bằng chứng với Bob với tư cách là tác giả trừ khi bạn cũng bao gồm danh tính của Bob như một phần của thông báo được ký.Do đó, tôi muốn nói rằng bạn có thể tránh phải tạo bất kỳ loại cơ chế chữ ký tùy chỉnh nào và thay vào đó, chỉ cần sử dụng chữ ký thông thường cho khóa công khai S và bao gồm danh tính của Bob trong thư để ngăn người khác sao chép chữ ký làm bằng chứng họ cũng biết $s$.
lá cờ cn
Tôi không hiểu cách bạn đề xuất Bob chứng minh kiến ​​thức về $s$ theo cách ràng buộc với khóa công khai của anh ấy chỉ bằng cách ký tên vào thứ gì đó liên quan đến $S$. Tôi hiểu rằng các sơ đồ như chữ ký Schnorr ràng buộc chữ ký với Bob trong trường hợp này vì giao thức xác minh và chứng minh sử dụng H(m|B). Tuy nhiên, trong trường hợp này, chính xác thì Bob ký tên gì để cho thấy anh ấy biết bí mật? Xin lỗi nếu điều này là cơ bản và tôi đang thiếu nó
knaccc avatar
lá cờ es
Giả sử Bob ký một tin nhắn trống bằng kiến ​​thức về $s$. Eve chỉ có thể sao chép-dán chữ ký đó và tuyên bố rằng cô ấy là người thể hiện kiến ​​thức về $s$. Nhưng nếu Bob ký thông báo "Đây là Bob, khóa công khai của tôi là 01234...." bằng khóa riêng $s$, thì Eve không thể khẳng định nó có nguồn gốc từ cô ấy. Toàn bộ điểm của một chữ ký là thông điệp không thể uốn nắn được.
lá cờ cn
Ồ tôi hiểu rồi. Tôi hiểu, tôi chỉ không thể nghĩ ra một nội dung tin nhắn để ký thể hiện kiến ​​thức về $s$ mà không làm rò rỉ thông tin về nó.
knaccc avatar
lá cờ es
Đúng vậy, bạn không thể đặt $s$ trong tin nhắn. Thay vào đó, bạn tạo một chữ ký thông thường và ký như thể bạn là một người có khóa công khai là $S$, và điều đó chứng tỏ kiến ​​thức về $s$. Nhưng sau đó, bên trong tin nhắn, bạn bao gồm danh tính thực của mình $B$.
lá cờ cn
Tuyệt vời, bây giờ tôi nhận được nó! Sử dụng chữ ký Schnorr với S là người ký (Bob biết $s$) và B là thông điệp (không sử dụng lại, ràng buộc bằng chứng với Bob). Đó là sạch sẽ! Cảm ơn
Điểm:0
lá cờ es

Hãy xem xét một biến thể tương đương của chữ ký Schnorr thông thường để ký một thông điệp $m$. tôi giả sử $s$ là một bí mật entropy đủ cao, và do đó $S$ không thể cưỡng bức.

Chữ ký sẽ là cặp $(B=bG,\ p=c\cdot s-b)$. Nó sẽ được xác minh bằng cách kiểm tra xem $B\overset{?}{=}cS-pG$, ở đâu $c = H(B \mathbin\| m)$.

Bạn đang xóa thử thách $c$, vì vậy bất lợi đầu tiên là bạn không còn có thể ký một tin nhắn. Bạn chỉ có thể chứng minh rằng bạn biết $s$.

Do đó, bạn có cặp $(B=bG,\ p=s-b)$, và xác minh là $pG\overset{?}{=}S-B$.

Thách thức cũng là một phần của phương pháp phỏng đoán Fiat-Shamir đã ngăn chặn $B$ từ được tính toán sau đó các thách thức $c$ đã được chọn. Do đó, sẽ có vấn đề nếu Bob có thể khai báo khóa công khai của mình $B$ sau đó $S$ đã được công bố. Bob có thể chỉ cần chọn một ngẫu nhiên $p$ giá trị, xác định $B=S-pG$, và tuyên bố khóa công khai của mình là $B$. Điều này có thể được giải quyết theo hai cách: 1. Bob phải khai báo $B$ trước $S$ được tuyên bố. 2. Bob được yêu cầu cung cấp chữ ký chứng minh kiến ​​thức về $b$ như vậy mà $B\overset{?}{=}bG$.

Giả sử khóa công khai của Bob đã được khai báo trước $S$ được khai báo, do đó bạn có một cách hợp lệ để chứng minh kiến ​​thức về $s$. Như bạn đã chỉ ra, Alice có thể học khóa bí mật của Bob một cách tầm thường $b$. Do đó, điều này không đáp ứng định nghĩa về kiến ​​thức bằng không, yêu cầu "không tiết lộ thông tin hoặc bất kỳ thông tin bổ sung".

Do đó, cấu trúc của bạn có định nghĩa tương tự như một "chữ ký bộ điều hợp", bởi vì "lược đồ chữ ký bộ điều hợp có thể xác thực thư, nhưng đồng thời làm rò rỉ bí mật cho một số bên nhất định". Lược đồ của bạn không ký thư, nhưng nó chứng tỏ kiến ​​thức về $s$ trong khi rò rỉ có thể kiểm chứng $b$ đến Alice.

Lưu ý rằng cũng có thể có vấn đề với lược đồ của bạn khi có bí mật thứ hai $s'$, và vì lý do nào đó $s'-s$ trở nên nổi tiếng.

lá cờ cn
Điều đó rất kỹ lưỡng, cảm ơn! 1) Trong đoạn 2, thay vào đó, chữ ký có nên là (B, p=c.s-b) không? Dù sao đi nữa, trong sơ đồ của tôi, tôi không bao gồm yếu tố này vì tôi chỉ quan tâm đến việc chứng minh kiến ​​thức chứ không phải ký kết. 2) Yêu vectơ tấn công thứ hai với khai báo B sau S.Trong trường hợp của tôi, đó không phải là vấn đề vì người chơi tương tác theo cách bắt buộc họ phải biết khóa riêng của mình. Nhưng tôi thấy nó thật thông minh! 3) Cảm ơn về thông tin chữ ký của bộ điều hợp, tôi chắc chắn sẽ xem qua!
knaccc avatar
lá cờ es
@GastonMaffei rất tiếc, vâng, cảm ơn tôi đã quên $c$. Tôi đã sửa đổi câu trả lời.

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