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ế.
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.
Một giao thức không bằng chứng phải đáp ứng các tiêu chí sau:
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.- Độ 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).- 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
. 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ừ.
Để 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ộ
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:
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
, 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.
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.
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.
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.
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ế:
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 rollupsvàvalidiumslà 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ở.
Đượ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
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.
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:
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à 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.
.
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.
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ử.





