Tiêu đề gốc: "Học zk-SNARK từ đầu (2) - Chứng minh không có kiến thức không tương tác về đa thức"
Nguồn gốc: Ambi Labs Tác giả: Maksym Petkus
Giới thiệu
Ở bài viết trước (Tính chất và chứng minh của đa thức), tác giả đã giới thiệu cách sử dụng tính chất của đa thức để chứng minh kiến thức về một đa thức nhất định. Tôi tin rằng mọi người đều đã có một số hiểu biết cơ bản về việc xây dựng chứng minh . Giao thức chứng minh hiện tại vẫn còn một số thiếu sót, bài viết này sẽ cải thiện những điểm yếu này và cuối cùng xây dựng một giao thức chứng minh không có kiến thức cho đa thức. Trọng tâm của bài viết này: KEA, bằng chứng không có kiến thức tương tác, bằng chứng không có kiến thức không tương tác và Thiết lập.






Chú thích
even@ Anbi Labs: Nói cách khác, ghép nối chỉ hỗ trợ nhân hai giá trị như x * y, nhưng không hỗ trợ nhân ba giá trị trở lên, chẳng hạn như x . *y*z.
Theo một nghĩa nào đó, điều này tương tự như hàm băm, ánh xạ tất cả các giá trị đầu vào có thể có vào On an phần tử trong tập hợp các giá trị đầu ra có thể, quá trình này thường không thể đảo ngược.
Lưu ý: Thoạt nhìn, hạn chế này có thể cản trở việc triển khai các chức năng liên quan, nhưng trong zk-SNARK Đây là thuộc tính quan trọng nhất để đảm bảo chế độ an toàn, xem nhận xét 3.3.
Hàm ghép nối e(g,g) ban đầu có thể được tương tự hóa (nói đúng ra là không chính xác) thành "trao đổi" hoạt động của từng cơ số đầu ra và số mũ làm cho cơ số g bị sửa đổi thành số mũ trong quá trình trao đổi, tức là ga → ag. Hai đầu vào được "chuyển đổi" được sửa đổi cùng nhau sao cho giá trị ban đầu a và b được nhân với cùng số mũ, đó là: 
Lưu ý: Thao tác ghép nối đạt được các thuộc tính này bằng cách thay đổi đường cong elip. Ký hiệu gⁿ chúng tôi sử dụng hiện đại diện cho một điểm trên đường cong nơi trình tạo đã được thêm vào n lần và Nó không phải là phép nhân trình tạo nhóm mà chúng tôi đã sử dụng trước đó.
[DBS04] Bài đánh giá này cung cấp điểm khởi đầu để tìm hiểu về cách ghép nối.
Thiết lập cho các bên đáng tin cậy
Với việc ghép nối sẵn có, giờ đây chúng tôi đã sẵn sàng thiết lập các thông số được hiển thị một cách an toàn và có thể tái sử dụng. Giả sử chúng ta để một bên trung thực tạo ra các giá trị bí mật s và α. Chỉ α và tất cả các lũy thừa cần thiết của s và các phép biến đổi α tương ứng của chúng được mã hóa, khi đó dữ liệu gốc phải bị xóa (i là 0, 1,…,d):

Tin tưởng bất kỳ người tham gia nào
Mặc dù thiết lập đáng tin cậy là hiệu quả, nhiều người dùng CRS cũng phải tin tưởng rằng trình tạo thực sự đã xóa α và s, điều này không có cách nào để chứng minh (bằng chứng về sự thiếu hiểu biết là một lĩnh vực nghiên cứu tích cực [DK18]), vì vậy phương pháp này vẫn không hợp lệ . Vì vậy cần giảm thiểu hoặc loại bỏ sự tin tưởng này. Nếu không, bên không trung thực có thể tạo ra bằng chứng giả mà không bị phát hiện.
Một giải pháp dành cho nhiều bên sử dụng các công cụ toán học được giới thiệu trong phần trước để tạo CRS kết hợp sao cho các Không một người có liên quan biết "bí mật". Sau đây là kế hoạch thực hiện, giả sử có ba người tham gia là Alice, Bob và Carol, tương ứng với A, B và C, trong đó i là 1, 2, …, d:
Trừ khi thông đồng, những người tham gia không biết thông số bí mật của nhau. Trên thực tế, một người tham gia phải thông đồng với tất cả những người tham gia khác để có được s và α, do đó chỉ cần một trong những người tham gia trung thực thì không có cách nào giả mạo bằng chứng.
Lưu ý: Quá trình này có thể được lặp lại với càng nhiều người tham gia càng tốt.
Một vấn đề là làm thế nào để xác minh rằng các giá trị ngẫu nhiên được người tham gia sử dụng khi tạo CRS là nhất quán, bởi vì kẻ tấn công có thể tạo ra nhiều số ngẫu nhiên khác nhau s₁, s₂, … và α₁, α₂, …, sau đó thay thế các số ngẫu nhiên khác nhau này để thực hiện các phép tính lũy thừa khác nhau của s (hoặc cung cấp các số ngẫu nhiên dưới dạng phần mở rộng của CRS), từ đó làm cho CRS không hợp lệ hoặc không thể sử dụng được .
May mắn thay, vì chúng ta có thể sử dụng tính năng ghép nối để nhân giá trị được mã hóa nên chúng ta có thể thực hiện từng giá trị một bắt đầu từ tham số đầu tiên và đảm bảo rằng mỗi tham số đều được bắt nguồn từ tham số trước đó. 
Khi chúng tôi xác minh tính nhất quán của các tham số bí mật của từng người tham gia, chúng tôi phải chú ý đến việc tạo người tham gia. Quy trình CRS không bắt buộc người tham gia sau (tức là Bob và Carol trong ví dụ của chúng tôi) sử dụng CRS đã được tiết lộ trước đó. Do đó, nếu kẻ tấn công là người tham gia cuối cùng trong chuỗi, anh ta có thể bỏ qua CRS trước đó và xây dựng CRS hợp lệ theo ý muốn giống như người tham gia đầu tiên trong chuỗi, để anh ta trở thành người duy nhất biết bí mật s và α. mọi người.
Để giải quyết vấn đề này, chúng tôi có thể yêu cầu thêm từng người tham gia ngoại trừ người đầu tiên mã hóa và sau đó tiết lộ các thông số của mình. Ví dụ: Bob cũng tiết lộ:
Tương tự, Carol phải chứng minh rằng CRS của cô ấy nhân với Gained bình thường sau khi có được CRS của Alice-Bob.
Đây là mô hình thiết lập CRS mạnh mẽ và không hoàn toàn phụ thuộc vào một tác nhân duy nhất. Trên thực tế, ngay cả khi tất cả những người tham gia khác thông đồng, miễn là một người tham gia trung thực và có thể xóa và không bao giờ chia sẻ các thông số bí mật của mình thì CRS vẫn hợp lệ. Vì vậy, càng có nhiều người tham gia không liên quan tham gia vào việc thiết lập CRS (đôi khi được gọi là buổi lễ [Wil16]), thì khả năng chứng nhận bị làm giả càng ít. Khi có sự tham gia của các bên cạnh tranh, việc giả mạo bằng chứng gần như là không thể. Mẫu này chấp nhận các bên không đáng tin cậy khác nghi ngờ khả năng nhận dạng của thiết lập vì bước xác minh đảm bảo rằng họ sẽ không làm hỏng (ở đây bao gồm cả việc sử dụng rất yếu α và s) CRS cuối cùng.
Chú thích
even@ Anbi Labs: Hiện có một số giải pháp zkSNARK hỗ trợ CRS có thể nâng cấp và bất kỳ người tham gia nào nghi ngờ CRS đều có thể cập nhật CRS. Ngoài ra, còn có một số giải pháp zkSNARK hỗ trợ Universal CRS, thay vì thiết lập độ tin cậy cho từng mạch thì chỉ cần thực hiện một lần trên toàn cầu. Ngoài ra, một số lượng lớn các giải pháp không yêu cầu Trusted Setup đang được nghiên cứu đầy đủ.
SNARK đa thức
Chúng tôi hiện đã sẵn sàng hợp nhất giao thức zk-SNARKOP đang phát triển dần dần này. Để cho ngắn gọn, chúng ta sẽ sử dụng dấu ngoặc nhọn để biểu thị một tập hợp các phần tử chứa các chỉ số con bên cạnh chúng, ví dụ: 
Nhận xét 3.3 Nếu kết quả ghép nối có thể được sử dụng lại trong các giao thức nhân tương tự khác thì không có sự bảo mật nào cả, vì khi đó có thể xây dựng bộ chứng minh
Kết luận
Chúng tôi sử dụng giao thức zk-SNARK để giải kiến thức bài toán đa thức, nhưng đây chỉ là một ví dụ hạn chế. Bởi vì bạn có thể nói rằng người chứng minh có thể dễ dàng xây dựng một đa thức p(x) có thể vượt qua bài kiểm tra bằng cách nhân t(x) với một đa thức bị chặn khác và cấu trúc này cũng hợp lệ.
Người xác minh biết rằng người chứng minh có đa thức hợp lệ nhưng không biết đó là đa thức nào. Chúng ta có thể bổ sung thêm chứng minh bằng cách sử dụng các tính chất khác của đa thức, chẳng hạn như: chia hết cho nhiều đa thức là bình phương của một đa thức nhất định. Mặc dù có thể có một dịch vụ chấp nhận, lưu trữ và khen thưởng tất cả các đa thức đã được chứng minh hoặc có thể có yêu cầu tính toán bằng mật mã một số dạng đa thức chưa biết. Tuy nhiên, nếu có một giải pháp chung, nó có thể hỗ trợ vô số ứng dụng.
Chú thích
even@ Anby Lab: Tóm lại, bài viết này giải quyết từng bước các vấn đề sau:
Bằng chứng đảm bảo rằng người chứng minh được xây dựng chính xác theo các quy tắc——> KEA
Đảm bảo không có kiến thức thông minh——> Chuyển đổi delta "Không tốn kém"
Bằng chứng có thể tái sử dụng——> Không tương tác
Không tương tác Cách đặt bảo mật , các tham số công khai và có thể tái sử dụng——> Mã hóa tham số, trình xác minh sử dụng ghép nối mật khẩu để xác minh
Đảm bảo rằng trình tạo tham số không làm rò rỉ bí mật --> Thiết lập nhiều bên
Tại thời điểm này, giao thức zk-SNARK hoàn chỉnh được sử dụng để chứng minh kiến thức đa thức đã được xây dựng, nhưng bây giờ Giao thức vẫn còn nhiều hạn chế về tính linh hoạt, các bài viết sau sẽ tiếp tục giới thiệu cách xây dựng một zk-SNARK phổ quát.
Liên kết gốc
https://arxiv.org/pdf/1906.07221.pdf
https://medium.com/@imolfar/why-and- How-zk-snark-works-2-proving-know-of-a-polynomial-f817760e2805
https://medium.com/@imolfar/why-and-how-zk-snark-works-3-non -interactivity-distributed-setup-c0310c0e5d1c
Tài liệu tham khảo
[Dam91]—Ivan Damgård. "Hướng tới các hệ thống khóa công khai thực tế an toàn trước các cuộc tấn công bằng văn bản mã hóa đã chọn". Trong: Hội nghị Mật mã Quốc tế Thường niên. Springer. 1991, trang 445–456.
[ Gro10]—Jens Groth. "Các lập luận không có kiến thức không tương tác dựa trên ghép nối ngắn". Trong: Hội thảo quốc tế về lý thuyết và ứng dụng của mật mã và bảo mật thông tin. Springer. 2010, trang 321–340.
[ JSI96 ]—Markus Jakobsson, Kazue Sako, và Russell Impagliazzo. "Các bằng chứng xác minh được chỉ định và ứng dụng của chúng". Trong: Hội thảo quốc tế về lý thuyết và ứng dụng kỹ thuật mật mã. Springer. 1996, trang 143–154.
[DBS04 ] —Ratna Dutta, Rana Barua, và Palash Sarkar. Các giao thức mã hóa dựa trên cặp đôi: Một cuộc khảo sát. Lưu trữ ePrint mật mã, Báo cáo 2004/064. https://eprint.iacr.org/2004/064.2004.
[ DK18 ]—Apoorvaa Deshpande và Yael Kalai. Bằng chứng về sự thiếu hiểu biết và ứng dụng để che giấu nhân chứng trong 2 tin nhắn. Lưu trữ ePrint mật mã, Báo cáo 2018/896. https://eprint.iacr.org/2018/896. 2018.
[ Wil16 ]—Zooko Wilcox. Thiết kế của buổi lễ. 2016. url: https://z.cash/blog/the-design-of-the-ceremony/
Liên kết nguồn: weixin.qq.com span>
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia