Zero-knowledge proofs là gì?

Người mới bắt đầu1/4/2024, 6:21:16 PM
Bài viết này cung cấp bằng chứng chi tiết về Zero-Knowledge Proofs (ZKP).

Một giao thức không thông tin là một phương pháp mà một bên (người chứng minh) có thể chứng minh cho bên kia (người xác minh) rằng một điều gì đó là đúng, mà không tiết lộ bất kỳ thông tin nào ngoài việc rằng câu lệnh cụ thể này là đúng.

Các chứng minh không thông đã được cải thiện qua nhiều năm và hiện nay đang được sử dụng trong một số ứng dụng thực tế.

Tại sao chúng ta cần chứng minh không biết gì?

Zero-knowledge proofs được coi là một bước đột phá trong mật mã ứng dụng, vì chúng hứa hẹn sẽ cải thiện an ninh thông tin cho cá nhân. Hãy xem xét làm thế nào bạn có thể chứng minh một khẳng định (ví dụ, "Tôi là công dân của quốc gia X") cho một bên khác (ví dụ, một nhà cung cấp dịch vụ). Bạn sẽ cần cung cấp "bằng chứng" để chứng minh khẳng định của mình, chẳng hạn như hộ chiếu quốc gia hoặc giấy phép lái xe.

Nhưng vấn đề của phương pháp này là thiếu sự riêng tư. Thông tin nhận dạng cá nhân (PII) được chia sẻ với dịch vụ của bên thứ ba được lưu trữ trong cơ sở dữ liệu trung tâm, dễ bị hack. Với vấn đề trộm danh tính trở thành một vấn đề quan trọng, đã có yêu cầu cho các phương tiện bảo vệ sự riêng tư hơn khi chia sẻ thông tin nhạy cảm.

Bằng chứng không tiết lộ giải quyết vấn đề này bằng cách loại bỏ nhu cầu phải tiết lộ thông tin để chứng minh tính hợp lệ của các yêu cầu. Giao thức không tiết lộ sử dụng câu lệnh (gọi là 'nhân chứng') như đầu vào để tạo ra một bằng chứng súc tích về tính hợp lệ của nó. Bằng chứng này cung cấp các bảo đảm mạnh mẽ rằng một câu lệnh là đúng mà không tiết lộ thông tin được sử dụng trong quá trình tạo ra nó.

Quay trở lại ví dụ trước đó của chúng tôi, bằng chứng duy nhất mà bạn cần để chứng minh quyền công dân của mình là một chứng minh không kiến thức. Người xác minh chỉ cần kiểm tra xem một số tính chất của chứng minh có đúng để tin rằng câu trả lời cơ bản cũng đúng.

Làm thế nào để chứng minh không biết hoạt động?

Một chứng minh không biết cho phép bạn chứng minh sự thật của một câu lệnh mà không cần phải chia sẻ nội dung của câu lệnh đó hoặc tiết lộ cách bạn phát hiện ra sự thật. Để làm điều này trở thành khả thi, các giao thức không biết dùng các thuật toán mà nhận dữ liệu làm đầu vào và trả về 'đúng' hoặc 'sai' làm đầu ra.

Một giao thức không bằng chứng phải đáp ứng các tiêu chí sau:

  1. Toàn vẹn: Nếu đầu vào hợp lệ, giao thức không tiết lộ luôn trả về 'đúng'. Do đó, nếu tuyên bố cơ bản là đúng, và người chứng minh và người xác minh hành động một cách chuyên nghiệp, bằng chứng có thể được chấp nhận.
  2. Độ chắc chắn: Nếu đầu vào không hợp lệ, lý thuyết không thể đánh lừa giao thức không chứng minh để trả về 'đúng'. Do đó, một bên chứng minh nói dối không thể lừa một bên xác minh trung thực tin rằng một tuyên bố không hợp lệ là hợp lệ (ngoại trừ một phần nhỏ của xác suất).
  3. Zero-knowledge: Bên xác minh không biết gì về một tuyên bố ngoài tính đúng hoặc sai của nó (họ có 'zero knowledge' về tuyên bố). Yêu cầu này cũng ngăn bên xác minh khỏi suy luận ra đầu vào ban đầu (nội dung của tuyên bố) từ bằng chứng.

Dưới dạng cơ bản, một bằng chứng không tiết lộ là sự kết hợp của ba yếu tố: chứng nhân, thách thức và phản ứng.

  • Nhân chứng: Với một bằng chứng không cần biết gì, người chứng minh muốn chứng minh sự hiểu biết về một số thông tin ẩn. Thông tin bí mật là “nhân chứng” cho sự chứng minh, và sự hiểu biết giả định của người chứng minh về nhân chứng tạo ra một tập hợp câu hỏi chỉ có thể được trả lời bởi một bên có kiến thức về thông tin đó. Do đó, người chứng minh bắt đầu quá trình chứng minh bằng cách chọn một cách ngẫu nhiên một câu hỏi, tính toán câu trả lời và gửi nó cho người xác minh.
  • Thách thức: Người xác minh ngẫu nhiên chọn một câu hỏi khác từ tập hợp và yêu cầu người chứng minh trả lời.
  • Phản hồi: Người chứng thực chấp nhận câu hỏi, tính toán câu trả lời và trả về cho người xác minh. Phản hồi của người chứng thực cho phép người xác minh kiểm tra xem người chứng thực thực sự có quyền truy cập vào chứng cứ hay không. Để đảm bảo người chứng thực không đoán mò mù quáng và nhận câu trả lời đúng một cách tình cờ, người xác minh chọn thêm câu hỏi để hỏi. Bằng cách lặp lại tương tác này nhiều lần, khả năng của người chứng thực giả vờ biết về chứng cứ giảm đáng kể cho đến khi người xác minh hài lòng.

Bên trên mô tả cấu trúc của một 'bằng chứng không chứng minh tương tác'. Các giao thức không chứng minh zero-knowledge sớm sử dụng chứng minh tương tác, nơi xác minh tính hợp lệ của một tuyên bố đòi hỏi việc trao đổi thông tin qua lại giữa người chứng minh và người xác minh.

Một ví dụ tốt minh họa cách mà bằng chứng tương tác hoạt động là ý tưởng nổi tiếng của Jean-Jacques QuisquaterCâu chuyện hang động Ali Baba

(opens in a new tab)

. Trong câu chuyện, Peggy (người chứng minh) muốn chứng minh với Victor (người xác minh) rằng cô ấy biết cụm từ bí mật để mở cánh cửa ma thuật mà không tiết lộ cụm từ.

Chứng minh không tương tác không có kiến thức về số không

Mặc dù đổi mới, chứng minh tương tác có giá trị hữu ích hạn chế vì nó yêu cầu hai bên phải sẵn có và tương tác lặp đi lặp lại. Ngay cả khi một người xác minh tin tưởng vào sự trung thực của một người chứng minh, bằng chứng sẽ không thể sẵn có để xác minh độc lập (việc tính toán một bằng chứng mới yêu cầu một bộ tin nhắn mới giữa người chứng minh và người xác minh).

Để giải quyết vấn đề này, Manuel Blum, Paul Feldman và Silvio Micali đề xuất lần đầu tiên bằng chứng không tương tác không tiết lộ

(mở trong tab mới)

nơi người chứng minh và người xác minh có một khóa chia sẻ. Điều này cho phép người chứng minh chứng minh sự hiểu biết của họ về một số thông tin (tức là, nhân chứng) mà không cung cấp thông tin đó.

Không giống như chứng minh tương tác, chứng minh không tương tác chỉ yêu cầu một vòng tròn giao tiếp giữa các bên tham gia (người chứng minh và người xác minh). Người chứng minh truyền thông tin bí mật cho một thuật toán đặc biệt để tính toán một chứng minh không biết. Chứng minh này được gửi cho người xác minh, người kiểm tra rằng người chứng minh biết thông tin bí mật bằng cách sử dụng một thuật toán khác.

Chứng minh không tương tác giảm bớt giao tiếp giữa người chứng minh và người xác minh, làm cho ZK-proofs hiệu quả hơn. Hơn nữa, khi một chứng minh được tạo ra, nó có sẵn cho bất kỳ ai khác (có quyền truy cập vào khóa chung và thuật toán xác minh) để xác minh.

Bằng chứng không tương tác đánh dấu một bước tiến lớn cho công nghệ không chứng minh và thúc đẩy sự phát triển của các hệ thống chứng minh được sử dụng ngày nay. Chúng tôi sẽ thảo luận về những loại chứng minh này dưới đây:

Loại chứng minh không biết về số 0

ZK-SNARKs

ZK-SNARK là viết tắt của Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Giao thức ZK-SNARK có những đặc điểm sau:

  • Zero-knowledge: Một người xác minh có thể xác minh tính toàn vẹn của một tuyên bố mà không biết bất cứ điều gì khác về tuyên bố đó. Kiến thức duy nhất mà người xác minh có về tuyên bố là nó có đúng hay sai.
  • Succinct: Chứng minh không cần chứng minh là nhỏ hơn bằng chứng và có thể được xác minh nhanh chóng.
  • Không tương tác: Bằng chứng là 'không tương tác' vì người chứng minh và người xác minh chỉ tương tác một lần, khác với bằng chứng tương tác yêu cầu nhiều vòng tròn giao tiếp.
  • Lập luận: Bằng chứng đáp ứng yêu cầu 'đáng tin cậy', vì vậy việc gian lận rất không thể xảy ra.
  • (Về) Kiến thức: Bằng chứng không tiết lộ không thể được xây dựng mà không cần truy cập vào thông tin bí mật (nhân chứng). Đối với một người chứng minh không có nhân chứng, việc tính toán một bằng chứng không tiết lộ hợp lệ là khó khăn, nếu không nói là không thể.

‘Khóa chia sẻ’ được đề cập trước đó đề cập đến các thông số công khai mà bằng chứng và người xác minh đồng ý sử dụng trong việc tạo và xác minh các bằng chứng. Việc tạo ra các thông số công khai (được biết đến chung là Chuỗi Tham Chiếu Chung (CRS)) là một hoạt động nhạy cảm vì tầm quan trọng của nó trong việc bảo mật của giao thức. Nếu năng lượng nhiệt (ngẫu nhiên) được sử dụng trong việc tạo CRS rơi vào tay một bằng chứng không trung thực, họ có thể tính toán các bằng chứng giả mạo.

Tính toán đa bên (MPC)

(opens in a new tab)

là cách để giảm thiểu các rủi ro trong việc tạo ra các tham số công cộng. Nhiều bên tham gia vào một buổi lễ thiết lập đáng tin cậy

(mở trong tab mới)

, nơi mỗi người đóng góp một số giá trị ngẫu nhiên để tạo ra CRS. Miễn là một bên trung thực phá hủy phần của họ của entropy, giao thức ZK-SNARK giữ tính toán chắc chắn.

Các thiết lập đáng tin cậy đòi hỏi người dùng phải tin tưởng vào những người tham gia trong việc tạo tham số. Tuy nhiên, việc phát triển ZK-STARKs đã cho phép các giao thức chứng minh hoạt động với một thiết lập không đáng tin cậy.

ZK-STARKs

ZK-STARK là viết tắt của Zero-Knowledge Scalable Transparent Argument of Knowledge. ZK-STARKs tương tự như ZK-SNARKs, ngoại trừ rằng chúng là:

  • Mở rộng: ZK-STARK nhanh hơn ZK-SNARK trong việc tạo ra và xác minh các chứng cứ khi kích thước của bằng chứng lớn hơn. Với chứng cứ STARK, thời gian chứng minh và xác minh chỉ tăng một cách nhẹ khi bằng chứng phát triển (thời gian chứng minh và xác minh SNARK tăng tuyến tính theo kích thước bằng chứng).
  • Rõ ràng: ZK-STARK dựa vào sự ngẫu nhiên có thể xác minh công khai để tạo ra các tham số công khánh cho việc chứng minh và xác minh thay vì sự thiết lập đáng tin cậy. Do đó, chúng rõ ràng hơn so với ZK-SNARKs.

ZK-STARKs tạo ra bằng chứng lớn hơn so với ZK-SNARKs có nghĩa là chúng thường có chi phí xác minh cao hơn. Tuy nhiên, có những trường hợp (như chứng minh các bộ dữ liệu lớn) nơi mà ZK-STARKs có thể hiệu quả về chi phí hơn ZK-SNARKs.

Các trường hợp sử dụng cho chứng minh không kiến thức

Thanh toán ẩn danh

Thanh toán bằng thẻ tín dụng thường thấy được nhiều bên nhìn thấy, bao gồm nhà cung cấp thanh toán, ngân hàng và các bên liên quan khác (ví dụ, cơ quan chức năng). Mặc dù giám sát tài chính mang lại lợi ích trong việc xác định hoạt động bất hợp pháp, nhưng cũng làm suy yếu quyền riêng tư của người dân thông thường.

Tiền điện tử được dự định để cung cấp phương tiện cho người dùng thực hiện các giao dịch riêng tư, ngang hàng. Tuy nhiên, hầu hết các giao dịch tiền điện tử đều được hiển thị công khai trên các blockchain công cộng. Danh tính người dùng thường là giả mạo và có thể tự nguyện liên kết với danh tính thực tế (ví dụ: bằng cách bao gồm địa chỉ ETH trên hồ sơ Twitter hoặc GitHub) hoặc có thể liên kết với danh tính thực tế bằng cách sử dụng dữ liệu cơ bản trên và ngoại chuỗi.

Có những “đồng tiền riêng tư” cụ thể được thiết kế để thực hiện giao dịch hoàn toàn ẩn danh. Các chuỗi khối tập trung vào quyền riêng tư, như Zcash và Monero, bảo vệ chi tiết giao dịch, bao gồm địa chỉ người gửi/nhận, loại tài sản, số lượng, và thời gian giao dịch.

Bằng cách tích hợp công nghệ không biết thông tin vào giao thức, các mạng blockchain tập trung vào quyền riêng tư cho phép các nút xác nhận giao dịch mà không cần truy cập dữ liệu giao dịch.

Bằng chứng không có kiến thức cũng đang được áp dụng để ẩn danh các giao dịch trên các blockchain công khai. Một ví dụ là Tornado Cash, một dịch vụ phi tập trung, không giám sát cho phép người dùng thực hiện các giao dịch riêng tư trên Ethereum. Tornado Cash sử dụng bằng chứng không có kiến thức để làm xáo trộn chi tiết giao dịch và đảm bảo quyền riêng tư tài chính. Thật không may, vì đây là những công cụ bảo mật "chọn tham gia" nên chúng có liên quan đến hoạt động bất hợp pháp. Để khắc phục điều này, quyền riêng tư cuối cùng phải trở thành mặc định trên các blockchain công khai.

Bảo vệ danh tính

Hệ thống quản lý danh tính hiện tại đặt thông tin cá nhân vào rủi ro. Các bằng chứng không biết thông tin có thể giúp cá nhân xác minh danh tính trong khi bảo vệ các chi tiết nhạy cảm.

Chứng minh không thông báo đặc biệt hữu ích trong ngữ cảnh của tự chủ nhận dạng. Định danh phi tập trung (cũng được mô tả là 'định danh tự chủ') mang đến cho cá nhân khả năng kiểm soát quyền truy cập đến các thông tin nhận dạng cá nhân. Chứng minh quốc tịch của bạn mà không cần tiết lộ chi tiết về mã số thuế hoặc hộ chiếu là một ví dụ tốt về cách công nghệ không biết giúp cho việc xây dựng định danh phi tập trung.

Xác thực

Việc sử dụng dịch vụ trực tuyến đòi hỏi phải chứng minh danh tính và quyền truy cập vào những nền tảng đó. Điều này thường đòi hỏi phải cung cấp thông tin cá nhân, như tên, địa chỉ email, ngày sinh, và cũng như vậy. Bạn cũng có thể cần phải ghi nhớ mật khẩu dài hoặc đối mặt với nguy cơ mất quyền truy cập.

Chứng minh không có kiến thức, tuy nhiên, có thể đơn giản hóa xác thực cho cả nền tảng và người dùng. Một khi một bằng chứng không có kiến thức đã được tạo ra bằng cách sử dụng đầu vào công khai (ví dụ, dữ liệu chứng minh cho sự thành viên của người dùng trên nền tảng) và đầu vào riêng tư (ví dụ, chi tiết của người dùng), người dùng chỉ cần trình bày nó để xác thực danh tính của họ khi họ cần truy cập dịch vụ. Điều này cải thiện trải nghiệm cho người dùng và giúp tự do cho các tổ chức không cần lưu trữ một lượng lớn thông tin người dùng.

Tính toán có thể xác minh

Tính toán có thể xác minh là một ứng dụng khác của công nghệ không chứng thực để cải thiện thiết kế blockchain. Tính toán có thể xác minh cho phép chúng ta gửi việc tính toán cho một thực thể khác trong khi vẫn duy trì kết quả có thể xác minh. Thực thể gửi kết quả cùng với bằng chứng xác minh rằng chương trình đã được thực thi đúng cách.

Việc tính toán có thể xác minh là rất quan trọng để cải thiện tốc độ xử lý trên các chuỗi khối mà không làm giảm tính bảo mật. Để hiểu điều này, cần phải biết sự khác biệt trong các giải pháp đề xuất để mở rộng Ethereum.

Giải pháp mở rộng trên chuỗi, như việc phân mảnh, đòi hỏi sự sửa đổi mở rộng của lớp cơ sở của blockchain. Tuy nhiên, cách tiếp cận này rất phức tạp và lỗi trong việc triển khai có thể làm suy yếu mô hình bảo mật của Ethereum.

Giải pháp mở rộng ngoại chuỗikhông cần thiết kế lại giao thức Ethereum core. Thay vào đó, họ dựa vào mô hình tính toán được giao phó để cải thiện khả năng xử lý trên tầng cơ sở của Ethereum.

Đây là cách mà điều đó hoạt động trong thực tế:

  • Thay vì xử lý mỗi giao dịch, Ethereum chuyển giao thực thi cho một chuỗi riêng biệt.
  • Sau khi xử lý giao dịch, chuỗi khác trả kết quả để áp dụng vào trạng thái của Ethereum.

Lợi ích ở đây là Ethereum không cần thực thi bất kỳ điều gì và chỉ cần áp dụng kết quả từ việc tính toán được giao cho trạng thái của nó. Điều này giảm tắc nghẽn mạng và cũng cải thiện tốc độ giao dịch (các giao thức ngoại xứ tối ưu hóa cho việc thực thi nhanh hơn).

Chuỗi cần một cách để xác thực giao dịch ngoại chuỗi mà không cần phải thực hiện lại chúng, nếu không giá trị của việc thực hiện ngoại chuỗi sẽ bị mất.

Đây là nơi tính toán có thể xác minh bắt đầu phát huy tác dụng. Khi một nút thực thi một giao dịch bên ngoài Ethereum, nó sẽ gửi một bằng chứng không tiết lộ để chứng minh tính chính xác của việc thực thi ngoại chuỗi. Bằng chứng này (được gọi là

chứng minh tính hợp lệ) đảm bảo rằng giao dịch là hợp lệ, cho phép Ethereum áp dụng kết quả vào trạng thái của nó—mà không cần chờ đợi ai để tranh cãi về điều đó.

Zero-knowledge rollupsvalidiumslà hai giải pháp mở rộng ngoại chuỗi sử dụng chứng minh tính hợp lệ để cung cấp tính mở rộng an toàn. Các giao thức này thực hiện hàng ngàn giao dịch ngoại chuỗi và gửi chứng minh để xác minh trên Ethereum. Kết quả đó có thể áp dụng ngay lập tức sau khi chứng minh được xác minh, cho phép Ethereum xử lý nhiều giao dịch hơn mà không tăng cường tính toán trên tầng cơ sở.

Giảm hối lộ và kết hợp trong việc bỏ phiếu trên chuỗi

Các hệ thống bỏ phiếu blockchain có nhiều đặc điểm thuận lợi: chúng hoàn toàn có thể kiểm tra, an toàn trước các cuộc tấn công, chống lại sự kiểm duyệt và không bị ràng buộc địa lý. Nhưng ngay cả các hệ thống bỏ phiếu trên chuỗi cũng không miễn phí khỏi vấn đề kết đồng lõa.

Được xác định là “phối hợp để hạn chế cạnh tranh mở bằng cách lừa dối, lừa đảo và làm cho người khác lầm lạc,” sự đồng lòng có thể có dạng một bên gian ác ảnh hưởng đến việc bỏ phiếu bằng cách cung cấp hối lộ. Ví dụ, Alice có thể nhận được một món hối lộ từ Bob để bỏ phiếu cho tùy chọn B trên tờ phiếu dù cô ấy thích tùy chọn A.

Hối lộ và kết đồng giới hạn hiệu quả của bất kỳ quy trình nào sử dụng bỏ phiếu như một cơ chế tín hiệu (đặc biệt là nơi người dùng có thể chứng minh cách họ bỏ phiếu). Điều này có thể có hậu quả quan trọng, đặc biệt là khi các phiếu bỏ phiếu chịu trách nhiệm phân phối tài nguyên khan hiếm.

Ví dụ, cơ chế tài trợ bậc hai

(mở trong tab mới)

dựa vào sự quyên góp để đo lường sở thích cho một số tùy chọn giữa các dự án hữu ích công cộng khác nhau. Mỗi đóng góp được tính như một “phiếu bầu” cho một dự án cụ thể, với những dự án nhận được nhiều phiếu bầu hơn sẽ nhận được nhiều quỹ khớp lệch hơn.

Sử dụng bỏ phiếu trên chuỗi làm cho việc tài trợ bậc hai dễ bị kết đồng: các giao dịch blockchain là công khai, vì vậy người hối lộ có thể kiểm tra hoạt động trên chuỗi của người nhận hối lộ để xem họ đã "bỏ phiếu" như thế nào. Như vậy, tài trợ bậc hai không còn là phương tiện hiệu quả để phân bổ quỹ dựa trên sở thích tổng hợp của cộng đồng.

May mắn thay, các giải pháp mới như MACI (Cơ sở Hạ tầng Chống Sự Đồng Phạm Tối Thiểu) đang sử dụng chứng minh không biết để làm cho việc bỏ phiếu trên chuỗi (ví dụ, cơ chế tài trợ bậc hai) ngăn chặn được hối lộ và đồng phạm. MACI là một bộ hợp đồng thông minh và kịch bản cho phép một người quản trị trung tâm (được gọi là “coordinator”) tổng hợp phiếu bầu và tổng kết kết quả mà không tiết lộ chi tiết về cách mà mỗi cá nhân đã bỏ phiếu. Tuy nhiên, vẫn có khả năng xác minh rằng các phiếu đã được đếm đúng cách, hoặc xác nhận rằng một cá nhân cụ thể đã tham gia vào vòng bỏ phiếu.

Làm thế nào MACI hoạt động với chứng minh không cần biết?

Ở đầu, người phối hợp triển khai hợp đồng MACI trên Ethereum, sau đó người dùng có thể đăng ký bỏ phiếu (bằng cách đăng ký khóa công khai của họ trong hợp đồng thông minh). Người dùng bỏ phiếu bằng cách gửi các tin nhắn được mã hóa bằng khóa công khai của họ đến hợp đồng thông minh (một phiếu bỏ phiếu hợp lệ phải được ký bằng khóa công khai mới nhất liên kết với danh tính của người dùng, trong số các tiêu chí khác). Sau đó, người phối hợp xử lý tất cả các tin nhắn khi kết thúc thời gian bỏ phiếu, tổng kết phiếu và xác minh kết quả trên chuỗi.

Trong MACI, các bằng chứng không tiết lộ được sử dụng để đảm bảo tính chính xác của việc tính toán bằng cách làm cho không thể cho người phối hợp xử lý các phiếu bầu và tổng kết kết quả một cách không chính xác. Điều này được đạt được bằng cách yêu cầu người phối hợp tạo ra các bằng chứng ZK-SNARK xác minh rằng a) tất cả các tin nhắn đã được xử lý đúng cách b) kết quả cuối cùng tương ứng với tổng của tất cả các phiếu bầu hợp lệ.

Do đó, ngay cả khi không chia sẻ thông tin về số phiếu bầu mỗi người dùng (như thường làm), MACI vẫn đảm bảo tính toàn vẹn của kết quả được tính toán trong quá trình đếm phiếu. Tính năng này hữu ích trong việc giảm hiệu quả của các kế hoạch gian lận cơ bản. Chúng ta có thể khám phá khả năng này bằng cách sử dụng ví dụ trước đó về Bob hối lộ Alice để bầu cho một lựa chọn:

  • Alice đăng ký để bỏ phiếu bằng cách gửi khóa công khai của họ đến một hợp đồng thông minh.
  • Alice đồng ý bỏ phiếu cho tùy chọn B để đổi lấy hối lộ từ Bob.
  • Alice bỏ phiếu cho tùy chọn B.
  • Alice heimlich sendet eine verschlüsselte Transaktion, um den öffentlichen Schlüssel zu ändern, der mit ihrer Identität verbunden ist.
  • Alice gửi một tin nhắn (được mã hóa) khác đến hợp đồng thông minh bỏ phiếu cho tùy chọn A bằng cách sử dụng khóa công khai mới.
  • Alice cho thấy cho Bob một giao dịch chỉ ra rằng cô ấy đã bỏ phiếu cho tùy chọn B (điều này là không hợp lệ vì khóa công khai không còn liên kết với danh tính của Alice trong hệ thống nữa)
  • Trong quá trình xử lý tin nhắn, người phối hợp bỏ qua phiếu bầu của Alice cho tùy chọn B và chỉ tính phiếu bầu cho tùy chọn A. Do đó, việc cố kết hợp với Alice và thao túng phiếu bầu trên chuỗi của Bob thất bại.

Việc sử dụng MACI đòi hỏi phải tin tưởng vào người phối hợp không kết hợp với người hối lộ hoặc cố gắng hối lộ cử tri. Người phối hợp có thể giải mã tin nhắn của người dùng (cần thiết để tạo ra bằng chứng), vì vậy họ có thể xác minh chính xác cách mà mỗi người đã bỏ phiếu.

Nhưng trong những trường hợp nơi điều phối viên vẫn trung thực, MACI đại diện cho một công cụ mạnh mẽ để đảm bảo sự linh thiêng của việc bỏ phiếu trên chuỗi. Điều này giải thích sự phổ biến của nó trong các ứng dụng tài trợ bậc hai (ví dụ,clr.fund

(mở trong tab mới)

) mà phụ thuộc nhiều vào tính trích thước của mỗi lựa chọn bỏ phiếu của cá nhân.

Tìm hiểu thêm về MACI

(mở trong tab mới)

.

Nhược điểm của việc sử dụng bằng chứng không biết lời giải

Chi phí phần cứng

Việc tạo ra chứng minh không thông dụng liên quan đến các phép tính rất phức tạp, nên tốt nhất là thực hiện trên các máy chuyên dụng. Do những máy này có giá cao, nên thường không nằm trong khả năng tài chính của cá nhân thông thường. Ngoài ra, các ứng dụng muốn sử dụng công nghệ không thông dụng phải tính đến chi phí phần cứng—điều này có thể làm tăng chi phí cho người dùng cuối.

Chi phí xác minh chứng thực

Xác minh bằng chứng cũng đòi hỏi tính toán phức tạp và tăng chi phí triển khai công nghệ không tiết lộ trong ứng dụng. Chi phí này đặc biệt quan trọng trong bối cảnh tính toán chứng minh. Ví dụ, ZK-rollups trả khoảng ~ 500,000 gas để xác minh một bằng chứng ZK-SNARK duy nhất trên Ethereum, với ZK-STARKs yêu cầu phí cao hơn.

Giả định tin cậy

Trong ZK-SNARK, Chuỗi Tham Chiếu Chung (tham số công khai) được tạo ra một lần và có sẵn để tái sử dụng cho các bên muốn tham gia vào giao thức không tiết lộ. Tham số công khai được tạo thông qua một buổi lễ thiết lập đáng tin cậy, nơi mà các bên tham gia được cho là trung thực.

Nhưng thực sự không có cách nào cho người dùng đánh giá tính trung thực của các bên tham gia và người dùng phải tin tưởng vào lời nói của các nhà phát triển. ZK-STARKs không phụ thuộc vào giả định tin tưởng vì tính ngẫu nhiên được sử dụng trong việc tạo ra chuỗi có thể được xác minh công khai. Trong khi đó, các nhà nghiên cứu đang làm việc trên các thiết lập không cần tin tưởng cho ZK-SNARKs để tăng cường tính bảo mật của cơ chế chứng minh.

Mối đe dọa của máy tính lượng tử

ZK-SNARK sử dụng mật mã đường cong elliptic

ECDSA) cho việc mã hóa. Trong khi thuật toán ECDSA hiện đang an toàn, sự phát triển của máy tính lượng tử có thể phá vỡ mô hình bảo mật của nó trong tương lai.

ZK-STARK được coi là miễn dịch trước mối đe dọa từ máy tính lượng tử, vì nó sử dụng các hàm băm chống va chạm cho việc mã hóa. Khác với việc kết hợp cặp khóa công khai-tư nhân được sử dụng trong mật mã đường cong elliptic, việc băm chống va chạm là khó khăn hơn đối với các thuật toán máy tính lượng tử.

Tuyên bố:

  1. Bài viết này được tái in từ [ Ethereum]. Tất cả bản quyền thuộc về tác giả gốc [Ethereum]. Nếu có bất kỳ ý kiến phản đối nào về việc tái in này, vui lòng liên hệ Học việc Gateđội, và họ sẽ xử lý nhanh chóng.
  2. Miễn trừ trách nhiệm: Các quan điểm và ý kiến được thể hiện trong bài viết này chỉ là của tác giả và không đại diện cho bất kỳ lời khuyên đầu tư nào.
  3. Các bản dịch của bài viết ra các ngôn ngữ khác được thực hiện bởi đội ngũ Gate Learn. Trừ khi được nêu ra, việc sao chép, phân phối hoặc đạo văn các bài viết dịch là không được phép.

Zero-knowledge proofs là gì?

Người mới bắt đầu1/4/2024, 6:21:16 PM
Bài viết này cung cấp bằng chứng chi tiết về Zero-Knowledge Proofs (ZKP).

Một giao thức không thông tin là một phương pháp mà một bên (người chứng minh) có thể chứng minh cho bên kia (người xác minh) rằng một điều gì đó là đúng, mà không tiết lộ bất kỳ thông tin nào ngoài việc rằng câu lệnh cụ thể này là đúng.

Các chứng minh không thông đã được cải thiện qua nhiều năm và hiện nay đang được sử dụng trong một số ứng dụng thực tế.

Tại sao chúng ta cần chứng minh không biết gì?

Zero-knowledge proofs được coi là một bước đột phá trong mật mã ứng dụng, vì chúng hứa hẹn sẽ cải thiện an ninh thông tin cho cá nhân. Hãy xem xét làm thế nào bạn có thể chứng minh một khẳng định (ví dụ, "Tôi là công dân của quốc gia X") cho một bên khác (ví dụ, một nhà cung cấp dịch vụ). Bạn sẽ cần cung cấp "bằng chứng" để chứng minh khẳng định của mình, chẳng hạn như hộ chiếu quốc gia hoặc giấy phép lái xe.

Nhưng vấn đề của phương pháp này là thiếu sự riêng tư. Thông tin nhận dạng cá nhân (PII) được chia sẻ với dịch vụ của bên thứ ba được lưu trữ trong cơ sở dữ liệu trung tâm, dễ bị hack. Với vấn đề trộm danh tính trở thành một vấn đề quan trọng, đã có yêu cầu cho các phương tiện bảo vệ sự riêng tư hơn khi chia sẻ thông tin nhạy cảm.

Bằng chứng không tiết lộ giải quyết vấn đề này bằng cách loại bỏ nhu cầu phải tiết lộ thông tin để chứng minh tính hợp lệ của các yêu cầu. Giao thức không tiết lộ sử dụng câu lệnh (gọi là 'nhân chứng') như đầu vào để tạo ra một bằng chứng súc tích về tính hợp lệ của nó. Bằng chứng này cung cấp các bảo đảm mạnh mẽ rằng một câu lệnh là đúng mà không tiết lộ thông tin được sử dụng trong quá trình tạo ra nó.

Quay trở lại ví dụ trước đó của chúng tôi, bằng chứng duy nhất mà bạn cần để chứng minh quyền công dân của mình là một chứng minh không kiến thức. Người xác minh chỉ cần kiểm tra xem một số tính chất của chứng minh có đúng để tin rằng câu trả lời cơ bản cũng đúng.

Làm thế nào để chứng minh không biết hoạt động?

Một chứng minh không biết cho phép bạn chứng minh sự thật của một câu lệnh mà không cần phải chia sẻ nội dung của câu lệnh đó hoặc tiết lộ cách bạn phát hiện ra sự thật. Để làm điều này trở thành khả thi, các giao thức không biết dùng các thuật toán mà nhận dữ liệu làm đầu vào và trả về 'đúng' hoặc 'sai' làm đầu ra.

Một giao thức không bằng chứng phải đáp ứng các tiêu chí sau:

  1. Toàn vẹn: Nếu đầu vào hợp lệ, giao thức không tiết lộ luôn trả về 'đúng'. Do đó, nếu tuyên bố cơ bản là đúng, và người chứng minh và người xác minh hành động một cách chuyên nghiệp, bằng chứng có thể được chấp nhận.
  2. Độ chắc chắn: Nếu đầu vào không hợp lệ, lý thuyết không thể đánh lừa giao thức không chứng minh để trả về 'đúng'. Do đó, một bên chứng minh nói dối không thể lừa một bên xác minh trung thực tin rằng một tuyên bố không hợp lệ là hợp lệ (ngoại trừ một phần nhỏ của xác suất).
  3. Zero-knowledge: Bên xác minh không biết gì về một tuyên bố ngoài tính đúng hoặc sai của nó (họ có 'zero knowledge' về tuyên bố). Yêu cầu này cũng ngăn bên xác minh khỏi suy luận ra đầu vào ban đầu (nội dung của tuyên bố) từ bằng chứng.

Dưới dạng cơ bản, một bằng chứng không tiết lộ là sự kết hợp của ba yếu tố: chứng nhân, thách thức và phản ứng.

  • Nhân chứng: Với một bằng chứng không cần biết gì, người chứng minh muốn chứng minh sự hiểu biết về một số thông tin ẩn. Thông tin bí mật là “nhân chứng” cho sự chứng minh, và sự hiểu biết giả định của người chứng minh về nhân chứng tạo ra một tập hợp câu hỏi chỉ có thể được trả lời bởi một bên có kiến thức về thông tin đó. Do đó, người chứng minh bắt đầu quá trình chứng minh bằng cách chọn một cách ngẫu nhiên một câu hỏi, tính toán câu trả lời và gửi nó cho người xác minh.
  • Thách thức: Người xác minh ngẫu nhiên chọn một câu hỏi khác từ tập hợp và yêu cầu người chứng minh trả lời.
  • Phản hồi: Người chứng thực chấp nhận câu hỏi, tính toán câu trả lời và trả về cho người xác minh. Phản hồi của người chứng thực cho phép người xác minh kiểm tra xem người chứng thực thực sự có quyền truy cập vào chứng cứ hay không. Để đảm bảo người chứng thực không đoán mò mù quáng và nhận câu trả lời đúng một cách tình cờ, người xác minh chọn thêm câu hỏi để hỏi. Bằng cách lặp lại tương tác này nhiều lần, khả năng của người chứng thực giả vờ biết về chứng cứ giảm đáng kể cho đến khi người xác minh hài lòng.

Bên trên mô tả cấu trúc của một 'bằng chứng không chứng minh tương tác'. Các giao thức không chứng minh zero-knowledge sớm sử dụng chứng minh tương tác, nơi xác minh tính hợp lệ của một tuyên bố đòi hỏi việc trao đổi thông tin qua lại giữa người chứng minh và người xác minh.

Một ví dụ tốt minh họa cách mà bằng chứng tương tác hoạt động là ý tưởng nổi tiếng của Jean-Jacques QuisquaterCâu chuyện hang động Ali Baba

(opens in a new tab)

. Trong câu chuyện, Peggy (người chứng minh) muốn chứng minh với Victor (người xác minh) rằng cô ấy biết cụm từ bí mật để mở cánh cửa ma thuật mà không tiết lộ cụm từ.

Chứng minh không tương tác không có kiến thức về số không

Mặc dù đổi mới, chứng minh tương tác có giá trị hữu ích hạn chế vì nó yêu cầu hai bên phải sẵn có và tương tác lặp đi lặp lại. Ngay cả khi một người xác minh tin tưởng vào sự trung thực của một người chứng minh, bằng chứng sẽ không thể sẵn có để xác minh độc lập (việc tính toán một bằng chứng mới yêu cầu một bộ tin nhắn mới giữa người chứng minh và người xác minh).

Để giải quyết vấn đề này, Manuel Blum, Paul Feldman và Silvio Micali đề xuất lần đầu tiên bằng chứng không tương tác không tiết lộ

(mở trong tab mới)

nơi người chứng minh và người xác minh có một khóa chia sẻ. Điều này cho phép người chứng minh chứng minh sự hiểu biết của họ về một số thông tin (tức là, nhân chứng) mà không cung cấp thông tin đó.

Không giống như chứng minh tương tác, chứng minh không tương tác chỉ yêu cầu một vòng tròn giao tiếp giữa các bên tham gia (người chứng minh và người xác minh). Người chứng minh truyền thông tin bí mật cho một thuật toán đặc biệt để tính toán một chứng minh không biết. Chứng minh này được gửi cho người xác minh, người kiểm tra rằng người chứng minh biết thông tin bí mật bằng cách sử dụng một thuật toán khác.

Chứng minh không tương tác giảm bớt giao tiếp giữa người chứng minh và người xác minh, làm cho ZK-proofs hiệu quả hơn. Hơn nữa, khi một chứng minh được tạo ra, nó có sẵn cho bất kỳ ai khác (có quyền truy cập vào khóa chung và thuật toán xác minh) để xác minh.

Bằng chứng không tương tác đánh dấu một bước tiến lớn cho công nghệ không chứng minh và thúc đẩy sự phát triển của các hệ thống chứng minh được sử dụng ngày nay. Chúng tôi sẽ thảo luận về những loại chứng minh này dưới đây:

Loại chứng minh không biết về số 0

ZK-SNARKs

ZK-SNARK là viết tắt của Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Giao thức ZK-SNARK có những đặc điểm sau:

  • Zero-knowledge: Một người xác minh có thể xác minh tính toàn vẹn của một tuyên bố mà không biết bất cứ điều gì khác về tuyên bố đó. Kiến thức duy nhất mà người xác minh có về tuyên bố là nó có đúng hay sai.
  • Succinct: Chứng minh không cần chứng minh là nhỏ hơn bằng chứng và có thể được xác minh nhanh chóng.
  • Không tương tác: Bằng chứng là 'không tương tác' vì người chứng minh và người xác minh chỉ tương tác một lần, khác với bằng chứng tương tác yêu cầu nhiều vòng tròn giao tiếp.
  • Lập luận: Bằng chứng đáp ứng yêu cầu 'đáng tin cậy', vì vậy việc gian lận rất không thể xảy ra.
  • (Về) Kiến thức: Bằng chứng không tiết lộ không thể được xây dựng mà không cần truy cập vào thông tin bí mật (nhân chứng). Đối với một người chứng minh không có nhân chứng, việc tính toán một bằng chứng không tiết lộ hợp lệ là khó khăn, nếu không nói là không thể.

‘Khóa chia sẻ’ được đề cập trước đó đề cập đến các thông số công khai mà bằng chứng và người xác minh đồng ý sử dụng trong việc tạo và xác minh các bằng chứng. Việc tạo ra các thông số công khai (được biết đến chung là Chuỗi Tham Chiếu Chung (CRS)) là một hoạt động nhạy cảm vì tầm quan trọng của nó trong việc bảo mật của giao thức. Nếu năng lượng nhiệt (ngẫu nhiên) được sử dụng trong việc tạo CRS rơi vào tay một bằng chứng không trung thực, họ có thể tính toán các bằng chứng giả mạo.

Tính toán đa bên (MPC)

(opens in a new tab)

là cách để giảm thiểu các rủi ro trong việc tạo ra các tham số công cộng. Nhiều bên tham gia vào một buổi lễ thiết lập đáng tin cậy

(mở trong tab mới)

, nơi mỗi người đóng góp một số giá trị ngẫu nhiên để tạo ra CRS. Miễn là một bên trung thực phá hủy phần của họ của entropy, giao thức ZK-SNARK giữ tính toán chắc chắn.

Các thiết lập đáng tin cậy đòi hỏi người dùng phải tin tưởng vào những người tham gia trong việc tạo tham số. Tuy nhiên, việc phát triển ZK-STARKs đã cho phép các giao thức chứng minh hoạt động với một thiết lập không đáng tin cậy.

ZK-STARKs

ZK-STARK là viết tắt của Zero-Knowledge Scalable Transparent Argument of Knowledge. ZK-STARKs tương tự như ZK-SNARKs, ngoại trừ rằng chúng là:

  • Mở rộng: ZK-STARK nhanh hơn ZK-SNARK trong việc tạo ra và xác minh các chứng cứ khi kích thước của bằng chứng lớn hơn. Với chứng cứ STARK, thời gian chứng minh và xác minh chỉ tăng một cách nhẹ khi bằng chứng phát triển (thời gian chứng minh và xác minh SNARK tăng tuyến tính theo kích thước bằng chứng).
  • Rõ ràng: ZK-STARK dựa vào sự ngẫu nhiên có thể xác minh công khai để tạo ra các tham số công khánh cho việc chứng minh và xác minh thay vì sự thiết lập đáng tin cậy. Do đó, chúng rõ ràng hơn so với ZK-SNARKs.

ZK-STARKs tạo ra bằng chứng lớn hơn so với ZK-SNARKs có nghĩa là chúng thường có chi phí xác minh cao hơn. Tuy nhiên, có những trường hợp (như chứng minh các bộ dữ liệu lớn) nơi mà ZK-STARKs có thể hiệu quả về chi phí hơn ZK-SNARKs.

Các trường hợp sử dụng cho chứng minh không kiến thức

Thanh toán ẩn danh

Thanh toán bằng thẻ tín dụng thường thấy được nhiều bên nhìn thấy, bao gồm nhà cung cấp thanh toán, ngân hàng và các bên liên quan khác (ví dụ, cơ quan chức năng). Mặc dù giám sát tài chính mang lại lợi ích trong việc xác định hoạt động bất hợp pháp, nhưng cũng làm suy yếu quyền riêng tư của người dân thông thường.

Tiền điện tử được dự định để cung cấp phương tiện cho người dùng thực hiện các giao dịch riêng tư, ngang hàng. Tuy nhiên, hầu hết các giao dịch tiền điện tử đều được hiển thị công khai trên các blockchain công cộng. Danh tính người dùng thường là giả mạo và có thể tự nguyện liên kết với danh tính thực tế (ví dụ: bằng cách bao gồm địa chỉ ETH trên hồ sơ Twitter hoặc GitHub) hoặc có thể liên kết với danh tính thực tế bằng cách sử dụng dữ liệu cơ bản trên và ngoại chuỗi.

Có những “đồng tiền riêng tư” cụ thể được thiết kế để thực hiện giao dịch hoàn toàn ẩn danh. Các chuỗi khối tập trung vào quyền riêng tư, như Zcash và Monero, bảo vệ chi tiết giao dịch, bao gồm địa chỉ người gửi/nhận, loại tài sản, số lượng, và thời gian giao dịch.

Bằng cách tích hợp công nghệ không biết thông tin vào giao thức, các mạng blockchain tập trung vào quyền riêng tư cho phép các nút xác nhận giao dịch mà không cần truy cập dữ liệu giao dịch.

Bằng chứng không có kiến thức cũng đang được áp dụng để ẩn danh các giao dịch trên các blockchain công khai. Một ví dụ là Tornado Cash, một dịch vụ phi tập trung, không giám sát cho phép người dùng thực hiện các giao dịch riêng tư trên Ethereum. Tornado Cash sử dụng bằng chứng không có kiến thức để làm xáo trộn chi tiết giao dịch và đảm bảo quyền riêng tư tài chính. Thật không may, vì đây là những công cụ bảo mật "chọn tham gia" nên chúng có liên quan đến hoạt động bất hợp pháp. Để khắc phục điều này, quyền riêng tư cuối cùng phải trở thành mặc định trên các blockchain công khai.

Bảo vệ danh tính

Hệ thống quản lý danh tính hiện tại đặt thông tin cá nhân vào rủi ro. Các bằng chứng không biết thông tin có thể giúp cá nhân xác minh danh tính trong khi bảo vệ các chi tiết nhạy cảm.

Chứng minh không thông báo đặc biệt hữu ích trong ngữ cảnh của tự chủ nhận dạng. Định danh phi tập trung (cũng được mô tả là 'định danh tự chủ') mang đến cho cá nhân khả năng kiểm soát quyền truy cập đến các thông tin nhận dạng cá nhân. Chứng minh quốc tịch của bạn mà không cần tiết lộ chi tiết về mã số thuế hoặc hộ chiếu là một ví dụ tốt về cách công nghệ không biết giúp cho việc xây dựng định danh phi tập trung.

Xác thực

Việc sử dụng dịch vụ trực tuyến đòi hỏi phải chứng minh danh tính và quyền truy cập vào những nền tảng đó. Điều này thường đòi hỏi phải cung cấp thông tin cá nhân, như tên, địa chỉ email, ngày sinh, và cũng như vậy. Bạn cũng có thể cần phải ghi nhớ mật khẩu dài hoặc đối mặt với nguy cơ mất quyền truy cập.

Chứng minh không có kiến thức, tuy nhiên, có thể đơn giản hóa xác thực cho cả nền tảng và người dùng. Một khi một bằng chứng không có kiến thức đã được tạo ra bằng cách sử dụng đầu vào công khai (ví dụ, dữ liệu chứng minh cho sự thành viên của người dùng trên nền tảng) và đầu vào riêng tư (ví dụ, chi tiết của người dùng), người dùng chỉ cần trình bày nó để xác thực danh tính của họ khi họ cần truy cập dịch vụ. Điều này cải thiện trải nghiệm cho người dùng và giúp tự do cho các tổ chức không cần lưu trữ một lượng lớn thông tin người dùng.

Tính toán có thể xác minh

Tính toán có thể xác minh là một ứng dụng khác của công nghệ không chứng thực để cải thiện thiết kế blockchain. Tính toán có thể xác minh cho phép chúng ta gửi việc tính toán cho một thực thể khác trong khi vẫn duy trì kết quả có thể xác minh. Thực thể gửi kết quả cùng với bằng chứng xác minh rằng chương trình đã được thực thi đúng cách.

Việc tính toán có thể xác minh là rất quan trọng để cải thiện tốc độ xử lý trên các chuỗi khối mà không làm giảm tính bảo mật. Để hiểu điều này, cần phải biết sự khác biệt trong các giải pháp đề xuất để mở rộng Ethereum.

Giải pháp mở rộng trên chuỗi, như việc phân mảnh, đòi hỏi sự sửa đổi mở rộng của lớp cơ sở của blockchain. Tuy nhiên, cách tiếp cận này rất phức tạp và lỗi trong việc triển khai có thể làm suy yếu mô hình bảo mật của Ethereum.

Giải pháp mở rộng ngoại chuỗikhông cần thiết kế lại giao thức Ethereum core. Thay vào đó, họ dựa vào mô hình tính toán được giao phó để cải thiện khả năng xử lý trên tầng cơ sở của Ethereum.

Đây là cách mà điều đó hoạt động trong thực tế:

  • Thay vì xử lý mỗi giao dịch, Ethereum chuyển giao thực thi cho một chuỗi riêng biệt.
  • Sau khi xử lý giao dịch, chuỗi khác trả kết quả để áp dụng vào trạng thái của Ethereum.

Lợi ích ở đây là Ethereum không cần thực thi bất kỳ điều gì và chỉ cần áp dụng kết quả từ việc tính toán được giao cho trạng thái của nó. Điều này giảm tắc nghẽn mạng và cũng cải thiện tốc độ giao dịch (các giao thức ngoại xứ tối ưu hóa cho việc thực thi nhanh hơn).

Chuỗi cần một cách để xác thực giao dịch ngoại chuỗi mà không cần phải thực hiện lại chúng, nếu không giá trị của việc thực hiện ngoại chuỗi sẽ bị mất.

Đây là nơi tính toán có thể xác minh bắt đầu phát huy tác dụng. Khi một nút thực thi một giao dịch bên ngoài Ethereum, nó sẽ gửi một bằng chứng không tiết lộ để chứng minh tính chính xác của việc thực thi ngoại chuỗi. Bằng chứng này (được gọi là

chứng minh tính hợp lệ) đảm bảo rằng giao dịch là hợp lệ, cho phép Ethereum áp dụng kết quả vào trạng thái của nó—mà không cần chờ đợi ai để tranh cãi về điều đó.

Zero-knowledge rollupsvalidiumslà hai giải pháp mở rộng ngoại chuỗi sử dụng chứng minh tính hợp lệ để cung cấp tính mở rộng an toàn. Các giao thức này thực hiện hàng ngàn giao dịch ngoại chuỗi và gửi chứng minh để xác minh trên Ethereum. Kết quả đó có thể áp dụng ngay lập tức sau khi chứng minh được xác minh, cho phép Ethereum xử lý nhiều giao dịch hơn mà không tăng cường tính toán trên tầng cơ sở.

Giảm hối lộ và kết hợp trong việc bỏ phiếu trên chuỗi

Các hệ thống bỏ phiếu blockchain có nhiều đặc điểm thuận lợi: chúng hoàn toàn có thể kiểm tra, an toàn trước các cuộc tấn công, chống lại sự kiểm duyệt và không bị ràng buộc địa lý. Nhưng ngay cả các hệ thống bỏ phiếu trên chuỗi cũng không miễn phí khỏi vấn đề kết đồng lõa.

Được xác định là “phối hợp để hạn chế cạnh tranh mở bằng cách lừa dối, lừa đảo và làm cho người khác lầm lạc,” sự đồng lòng có thể có dạng một bên gian ác ảnh hưởng đến việc bỏ phiếu bằng cách cung cấp hối lộ. Ví dụ, Alice có thể nhận được một món hối lộ từ Bob để bỏ phiếu cho tùy chọn B trên tờ phiếu dù cô ấy thích tùy chọn A.

Hối lộ và kết đồng giới hạn hiệu quả của bất kỳ quy trình nào sử dụng bỏ phiếu như một cơ chế tín hiệu (đặc biệt là nơi người dùng có thể chứng minh cách họ bỏ phiếu). Điều này có thể có hậu quả quan trọng, đặc biệt là khi các phiếu bỏ phiếu chịu trách nhiệm phân phối tài nguyên khan hiếm.

Ví dụ, cơ chế tài trợ bậc hai

(mở trong tab mới)

dựa vào sự quyên góp để đo lường sở thích cho một số tùy chọn giữa các dự án hữu ích công cộng khác nhau. Mỗi đóng góp được tính như một “phiếu bầu” cho một dự án cụ thể, với những dự án nhận được nhiều phiếu bầu hơn sẽ nhận được nhiều quỹ khớp lệch hơn.

Sử dụng bỏ phiếu trên chuỗi làm cho việc tài trợ bậc hai dễ bị kết đồng: các giao dịch blockchain là công khai, vì vậy người hối lộ có thể kiểm tra hoạt động trên chuỗi của người nhận hối lộ để xem họ đã "bỏ phiếu" như thế nào. Như vậy, tài trợ bậc hai không còn là phương tiện hiệu quả để phân bổ quỹ dựa trên sở thích tổng hợp của cộng đồng.

May mắn thay, các giải pháp mới như MACI (Cơ sở Hạ tầng Chống Sự Đồng Phạm Tối Thiểu) đang sử dụng chứng minh không biết để làm cho việc bỏ phiếu trên chuỗi (ví dụ, cơ chế tài trợ bậc hai) ngăn chặn được hối lộ và đồng phạm. MACI là một bộ hợp đồng thông minh và kịch bản cho phép một người quản trị trung tâm (được gọi là “coordinator”) tổng hợp phiếu bầu và tổng kết kết quả mà không tiết lộ chi tiết về cách mà mỗi cá nhân đã bỏ phiếu. Tuy nhiên, vẫn có khả năng xác minh rằng các phiếu đã được đếm đúng cách, hoặc xác nhận rằng một cá nhân cụ thể đã tham gia vào vòng bỏ phiếu.

Làm thế nào MACI hoạt động với chứng minh không cần biết?

Ở đầu, người phối hợp triển khai hợp đồng MACI trên Ethereum, sau đó người dùng có thể đăng ký bỏ phiếu (bằng cách đăng ký khóa công khai của họ trong hợp đồng thông minh). Người dùng bỏ phiếu bằng cách gửi các tin nhắn được mã hóa bằng khóa công khai của họ đến hợp đồng thông minh (một phiếu bỏ phiếu hợp lệ phải được ký bằng khóa công khai mới nhất liên kết với danh tính của người dùng, trong số các tiêu chí khác). Sau đó, người phối hợp xử lý tất cả các tin nhắn khi kết thúc thời gian bỏ phiếu, tổng kết phiếu và xác minh kết quả trên chuỗi.

Trong MACI, các bằng chứng không tiết lộ được sử dụng để đảm bảo tính chính xác của việc tính toán bằng cách làm cho không thể cho người phối hợp xử lý các phiếu bầu và tổng kết kết quả một cách không chính xác. Điều này được đạt được bằng cách yêu cầu người phối hợp tạo ra các bằng chứng ZK-SNARK xác minh rằng a) tất cả các tin nhắn đã được xử lý đúng cách b) kết quả cuối cùng tương ứng với tổng của tất cả các phiếu bầu hợp lệ.

Do đó, ngay cả khi không chia sẻ thông tin về số phiếu bầu mỗi người dùng (như thường làm), MACI vẫn đảm bảo tính toàn vẹn của kết quả được tính toán trong quá trình đếm phiếu. Tính năng này hữu ích trong việc giảm hiệu quả của các kế hoạch gian lận cơ bản. Chúng ta có thể khám phá khả năng này bằng cách sử dụng ví dụ trước đó về Bob hối lộ Alice để bầu cho một lựa chọn:

  • Alice đăng ký để bỏ phiếu bằng cách gửi khóa công khai của họ đến một hợp đồng thông minh.
  • Alice đồng ý bỏ phiếu cho tùy chọn B để đổi lấy hối lộ từ Bob.
  • Alice bỏ phiếu cho tùy chọn B.
  • Alice heimlich sendet eine verschlüsselte Transaktion, um den öffentlichen Schlüssel zu ändern, der mit ihrer Identität verbunden ist.
  • Alice gửi một tin nhắn (được mã hóa) khác đến hợp đồng thông minh bỏ phiếu cho tùy chọn A bằng cách sử dụng khóa công khai mới.
  • Alice cho thấy cho Bob một giao dịch chỉ ra rằng cô ấy đã bỏ phiếu cho tùy chọn B (điều này là không hợp lệ vì khóa công khai không còn liên kết với danh tính của Alice trong hệ thống nữa)
  • Trong quá trình xử lý tin nhắn, người phối hợp bỏ qua phiếu bầu của Alice cho tùy chọn B và chỉ tính phiếu bầu cho tùy chọn A. Do đó, việc cố kết hợp với Alice và thao túng phiếu bầu trên chuỗi của Bob thất bại.

Việc sử dụng MACI đòi hỏi phải tin tưởng vào người phối hợp không kết hợp với người hối lộ hoặc cố gắng hối lộ cử tri. Người phối hợp có thể giải mã tin nhắn của người dùng (cần thiết để tạo ra bằng chứng), vì vậy họ có thể xác minh chính xác cách mà mỗi người đã bỏ phiếu.

Nhưng trong những trường hợp nơi điều phối viên vẫn trung thực, MACI đại diện cho một công cụ mạnh mẽ để đảm bảo sự linh thiêng của việc bỏ phiếu trên chuỗi. Điều này giải thích sự phổ biến của nó trong các ứng dụng tài trợ bậc hai (ví dụ,clr.fund

(mở trong tab mới)

) mà phụ thuộc nhiều vào tính trích thước của mỗi lựa chọn bỏ phiếu của cá nhân.

Tìm hiểu thêm về MACI

(mở trong tab mới)

.

Nhược điểm của việc sử dụng bằng chứng không biết lời giải

Chi phí phần cứng

Việc tạo ra chứng minh không thông dụng liên quan đến các phép tính rất phức tạp, nên tốt nhất là thực hiện trên các máy chuyên dụng. Do những máy này có giá cao, nên thường không nằm trong khả năng tài chính của cá nhân thông thường. Ngoài ra, các ứng dụng muốn sử dụng công nghệ không thông dụng phải tính đến chi phí phần cứng—điều này có thể làm tăng chi phí cho người dùng cuối.

Chi phí xác minh chứng thực

Xác minh bằng chứng cũng đòi hỏi tính toán phức tạp và tăng chi phí triển khai công nghệ không tiết lộ trong ứng dụng. Chi phí này đặc biệt quan trọng trong bối cảnh tính toán chứng minh. Ví dụ, ZK-rollups trả khoảng ~ 500,000 gas để xác minh một bằng chứng ZK-SNARK duy nhất trên Ethereum, với ZK-STARKs yêu cầu phí cao hơn.

Giả định tin cậy

Trong ZK-SNARK, Chuỗi Tham Chiếu Chung (tham số công khai) được tạo ra một lần và có sẵn để tái sử dụng cho các bên muốn tham gia vào giao thức không tiết lộ. Tham số công khai được tạo thông qua một buổi lễ thiết lập đáng tin cậy, nơi mà các bên tham gia được cho là trung thực.

Nhưng thực sự không có cách nào cho người dùng đánh giá tính trung thực của các bên tham gia và người dùng phải tin tưởng vào lời nói của các nhà phát triển. ZK-STARKs không phụ thuộc vào giả định tin tưởng vì tính ngẫu nhiên được sử dụng trong việc tạo ra chuỗi có thể được xác minh công khai. Trong khi đó, các nhà nghiên cứu đang làm việc trên các thiết lập không cần tin tưởng cho ZK-SNARKs để tăng cường tính bảo mật của cơ chế chứng minh.

Mối đe dọa của máy tính lượng tử

ZK-SNARK sử dụng mật mã đường cong elliptic

ECDSA) cho việc mã hóa. Trong khi thuật toán ECDSA hiện đang an toàn, sự phát triển của máy tính lượng tử có thể phá vỡ mô hình bảo mật của nó trong tương lai.

ZK-STARK được coi là miễn dịch trước mối đe dọa từ máy tính lượng tử, vì nó sử dụng các hàm băm chống va chạm cho việc mã hóa. Khác với việc kết hợp cặp khóa công khai-tư nhân được sử dụng trong mật mã đường cong elliptic, việc băm chống va chạm là khó khăn hơn đối với các thuật toán máy tính lượng tử.

Tuyên bố:

  1. Bài viết này được tái in từ [ Ethereum]. Tất cả bản quyền thuộc về tác giả gốc [Ethereum]. Nếu có bất kỳ ý kiến phản đối nào về việc tái in này, vui lòng liên hệ Học việc Gateđội, và họ sẽ xử lý nhanh chóng.
  2. Miễn trừ trách nhiệm: Các quan điểm và ý kiến được thể hiện trong bài viết này chỉ là của tác giả và không đại diện cho bất kỳ lời khuyên đầu tư nào.
  3. Các bản dịch của bài viết ra các ngôn ngữ khác được thực hiện bởi đội ngũ Gate Learn. Trừ khi được nêu ra, việc sao chép, phân phối hoặc đạo văn các bài viết dịch là không được phép.
ابدأ التداول الآن
اشترك وتداول لتحصل على جوائز ذهبية بقيمة
100 دولار أمريكي
و
5500 دولارًا أمريكيًا
لتجربة الإدارة المالية الذهبية!