Bằng chứng không kiến ​​thức: một công cụ mạnh mẽ để bảo vệ quyền riêng tư của chuỗi khối
哈希未来
2018-07-16 06:20
本文约3718字,阅读全文需要约15分钟
Tóm tắt báo cáo: Bằng chứng không kiến ​​thức là phương pháp xác minh dựa trên xác suất và nội dung xác minh bao gồm "tuyên bố thực tế" và "tuyên bố về kiến ​​thức cá nhân".



tác giả:Chen Zhijia, Meng Yize, Xie Qian, Jiang Zewu (Hash World)

Tóm tắt báo cáo:

Tóm tắt báo cáo:

Bằng chứng không có kiến ​​​​thức là một phương pháp xác minh dựa trên xác suất và nội dung xác minh bao gồm "tuyên bố thực tế" và "tuyên bố về kiến ​​​​thức cá nhân". Người kiểm chứng đặt câu hỏi cho người nói dựa trên một sự ngẫu nhiên nào đó, và nếu họ có thể đưa ra câu trả lời đúng, điều đó có nghĩa là người nói có khả năng cao có được “kiến thức” mà mình tuyên bố. Zerocoin (Giao thức Zero Coin) sử dụng xác minh không có kiến ​​thức trong quá trình đúc Zero Coins và đổi Zero Coins để ẩn thông tin người gửi và người nhận tương ứng với một giao dịch. Zerocash (Giao thức tiền giấy Zero) sử dụng công nghệ zkSNARKs mới hơn, chuyển đổi giao dịch nội dung cần xác minh để chứng minh tích của hai đa thức bằng nhau, đồng thời kết hợp mã hóa đồng cấu và các công nghệ khác để thực hiện xác minh giao dịch đồng thời bảo vệ số tiền giao dịch ẩn. Điểm bất lợi là nếu mạng nhận được một cuộc tấn công và phát hành quá nhiều tiền mặt bằng không, nó sẽ không thể phát hiện hoặc thực hiện các biện pháp; cả Zerocoin và Zerocash đều yêu cầu "cài đặt tin cậy" được cài đặt trước, điều này đã không đạt được "sự tin cậy" thực sự. Các công nghệ mới như Intel SGX và zkSTARKs có thể giải quyết các vấn đề trên, nhưng chúng vẫn cần được thử nghiệm trong thực tế.

1. Nguyên tắc chứng minh không kiến ​​thức

Bằng chứng không kiến ​​thức là một sơ đồ mã hóa ban đầu được đề xuất trong các bài báo của các nhà nghiên cứu MIT vào những năm 1980. “Các giao thức không có kiến ​​​​thức là các phương pháp mà một bên (người chứng minh) có thể chứng minh cho bên khác (người xác minh) rằng điều gì đó là đúng mà không tiết lộ bất kỳ thông tin bổ sung nào ngoài thực tế là tuyên bố cụ thể này là đúng. Nói cách khác, giá trị băm của mật khẩu của khách hàng được lưu trữ trên máy chủ web. Để xác minh rằng khách hàng thực sự biết mật khẩu, hầu hết các trang web hiện đang sử dụng phương pháp mà máy chủ tính toán giá trị băm của mật khẩu do khách hàng nhập và so sánh nó với kết quả được lưu trữ. Nhưng nhược điểm của phương pháp này là máy chủ có thể biết mật khẩu ban đầu của khách hàng trong quá trình tính toán. Một khi máy chủ bị tấn công, mật khẩu của người dùng sẽ bị rò rỉ. Nếu có thể nhận ra bằng chứng zero-knowledge, thì có thể thực hiện được mà không cần biết mật khẩu của khách hàng, để xác minh đăng nhập của khách hàng, ngay cả khi máy chủ bị tấn công, tài khoản của người dùng vẫn an toàn vì mật khẩu văn bản gốc của khách hàng không được lưu trữ.

Giao thức chứng minh không kiến ​​​​thức cơ bản là tương tác và người xác minh cần liên tục hỏi người chứng minh một loạt câu hỏi về "kiến thức" mà họ đã nắm vững. Nếu họ có thể đưa ra câu trả lời đúng, thì về mặt xác suất, người chứng minh thực sự rất tốt Có thể biết những gì nó tuyên bố là "kiến thức". Ví dụ: nếu ai đó tuyên bố biết câu trả lời cho câu đố Sudoku, phương pháp chứng minh không có kiến ​​​​thức là người xác minh chỉ định ngẫu nhiên thời gian này để kiểm tra theo cột, hàng hoặc lưới chín ô vuông và không cần xem vị trí cụ thể của con lắc số cho mỗi lần kiểm tra. Nó chỉ cần phát hiện xem nó có chứa các số từ 1-9 hay không. Miễn là số lượng xác minh là đủ, thì có khả năng cao là người chứng minh biết lời giải của bài toán Sudoku . Tuy nhiên, một phương pháp đơn giản như vậy không thể khiến mọi người tin rằng cả người chứng minh và người xác minh đều không gian lận, trong trường hợp Sudoku, cả hai có thể đã thông đồng từ trước để người chứng minh có thể vượt qua cuộc xác minh mà không biết câu trả lời. Nếu họ muốn thuyết phục bên thứ ba, người xác minh cũng phải chứng minh rằng sơ đồ phát hiện của họ mỗi lần là ngẫu nhiên và họ không thông đồng với người chứng minh.

Vì rất khó để các nhà quan sát bên thứ ba xác minh kết quả của bằng chứng tương tác không có kiến ​​thức, nên chúng tôi cần phải nỗ lực và tốn nhiều chi phí hơn khi chứng minh điều gì đó cho nhiều người. Bằng chứng không kiến ​​thức không tương tác, như tên cho thấy, không yêu cầu quy trình tương tác, tránh khả năng thông đồng, nhưng có thể yêu cầu thêm một số máy móc và chương trình để xác định trình tự thử nghiệm: ví dụ: trong ví dụ về Sudoku, thông qua các chương trình để Quyết định thời gian kiểm tra theo hàng và thời gian kiểm tra theo cột, nhưng trình tự kiểm tra này phải được giữ bí mật, nếu không người kiểm tra có thể sử dụng thông tin này nếu biết trước trình tự kiểm tra và chuẩn bị trước mà không cần biết thực hư "kiến thức" đã được phê duyệt.

Nội dung của chứng minh zero-knowledge có thể được tóm tắt thành hai loại: các câu "thực tế": ví dụ, để chứng minh rằng "một đồ thị cụ thể có thể có ba màu." hoặc "một số N là một hợp số"; các câu nói về cá nhân kiến thức: ví dụ: "Tôi biết sơ đồ tô màu cho biểu đồ cụ thể này" hoặc "Tôi biết phân tích thành nhân tử của N".

Nhưng không phải tất cả các vấn đề đều có sơ đồ mã hóa cho bằng chứng không có kiến ​​thức.Goldreich, Micali và Wigderson đã đưa ra các phạm vi hợp lệ về mặt lý thuyết cho các giải pháp bằng chứng không có kiến ​​thức. Họ phát hiện ra rằng có những chương trình chứng minh không kiến ​​thức đã biết cho các bài toán quyết định (các bài toán chỉ có câu trả lời là có/không) mà lời giải của chúng có thể được xác minh trong thời gian đa thức. Chỉ cần tìm mệnh đề mà bạn muốn chứng minh trong một bài toán NP như vậy và biến nó thành một thể hiện của bài toán ba màu, sau đó bạn có thể sử dụng giao thức hiện có để thực hiện bằng chứng không kiến ​​thức. Vì bài toán ba màu là bài toán NPC nên bất kỳ bài toán NP nào khác đều có thể được chuyển đổi thành một thể hiện của bài toán này.

2. Ứng dụng bằng chứng không kiến ​​thức trong chuỗi khối

Trong các giao dịch trên chuỗi khối, chẳng hạn như mạng Bitcoin và Ethereum, ngoài việc sử dụng địa chỉ để thay thế danh tính thực của cả hai bên tham gia giao dịch, làm cho giao dịch ẩn danh một phần, địa chỉ và số tiền gửi và nhận có thể được biết. để khớp địa chỉ Bitcoin với danh tính thực thông qua nhiều thông tin khác nhau trên mạng và hồ sơ tương tác trong thế giới thực, do đó có nguy cơ tiềm ẩn về việc lộ quyền riêng tư. Zerocoin đã thiết kế một ý tưởng hoàn toàn mới, không thể lấy được danh tính thực của người dùng thông qua phân tích lịch sử giao dịch. Trong Zerocoin, một giá trị nhất định của loại tiền tệ được giao dịch được sử dụng để tạo ra một zerocoin với một số sê-ri duy nhất. Bằng chứng không có kiến ​​thức có thể xác minh rằng bạn thực sự đã chi tiền mà không tiết lộ loại tiền nào đã được chi tiêu. Để chuyển số tiền này cho người khác, về mặt logic, chúng ta cần làm cho số tiền bằng 0 này không còn có thể được người khác chi tiêu. Những người khai thác sử dụng phương pháp zero-knowledge proof khi xác minh giao dịch chi tiêu, họ không cần biết zerocoin nào được chi tiêu và cũng có thể xác minh xem số sê-ri của zerocoin có nằm trong danh sách vô hiệu hay không. Do giao dịch chi tiêu không bao gồm thông tin địa chỉ và chữ ký, những người khai thác không biết nguồn gốc của zerocoin trong toàn bộ quá trình giao dịch, do đó rất khó phân tích lịch sử giao dịch để lấy danh tính của người dùng.

Trong Zerocoin, số tiền giao dịch có thể được biết, nhưng Zerocash, sử dụng công nghệ zkSNARK, thậm chí có thể ẩn số tiền giao dịch. Điều duy nhất được ghi công khai trong sổ cái là sự tồn tại của giao dịch. Có thể chỉ ra rằng zkSNARK tồn tại cho tất cả các vấn đề trong NP. Nó giới thiệu một số công nghệ tiên tiến và làm cho chúng có thể sử dụng được trong chuỗi khối. Quan trọng nhất, zkSNARK giảm kích thước của bằng chứng và số lượng tính toán cần thiết để xác minh chúng. Quá trình của nó có thể được mô tả ngắn gọn như.

1. Phân tách chương trình cần xác minh thành các bước xác minh logic và phân tách các bước logic này thành các mạch số học bao gồm cộng, trừ, nhân và chia.

2. Biến đổi chương trình cần chứng minh thành chứng minh rằng các tích đa thức bằng nhau thông qua một loạt các phép biến đổi, chẳng hạn như chứng minh rằng t(x)h(x) = w(x)v(x).

3. Để làm cho bằng chứng ngắn gọn hơn, người xác minh chọn trước một số điểm kiểm tra s một cách ngẫu nhiên và kiểm tra xem sự bằng nhau tại các điểm này có được thiết lập hay không.

4. Thông qua mã hóa/mã hóa đồng cấu, trình xác minh không biết giá trị đầu vào thực tế khi tính toán phương trình, nhưng nó vẫn có thể được xác minh.

5. Một giá trị bí mật k khác 0 có thể được nhân đồng thời ở cả hai vế của phương trình, sau đó khi chứng minh rằng (t(s)h(s)k) bằng (w(s)v(s) k) thì không thể biết t(s), h(s), w(s), v(s) cụ thể nên thông tin có thể bảo vệ được.

Khác với công cụ tích lũy RSA nguyên thủy bằng tiền điện tử của Zerocoin, công nghệ zkSNARKs tương đối mới và chưa được xác minh rộng rãi nên có những rủi ro. Đồng thời, do tính ẩn danh mạnh hơn nên các lỗ hổng của Zerocash cũng khó tìm hơn. So với Zerocoin, Zerocash do đến số tiền giao dịch Thông tin cũng không xác định, vì vậy nếu kẻ tấn công phát hành hóa đơn bằng 0 vô thời hạn, tình huống như vậy sẽ không thể phát hiện được.

Ngoài ra, cả Zerocoin và Zerocash đều yêu cầu các tham số tạo sẵn trước, người dùng phải tin tưởng rằng các tham số này không bị rò rỉ khi sử dụng các mạng này, nhưng một khi các tham số này bị rò rỉ, toàn bộ mạng sẽ phải đối mặt với một đòn tàn phá. Việc đặt niềm tin phức tạp khiến Zerocash gây tranh cãi, ngay cả khi họ thiết kế một bộ "nghi lễ" (chẳng hạn như ghi lại quá trình đập phá máy tính lưu trữ chìa khóa) để chứng tỏ mình là một trong những người có quyền lợi cao nhất.

Theo sách trắng của zkSTARKs, zkSTARKs là hệ thống đầu tiên có thể hoàn thành xác minh chuỗi khối mà không cần dựa vào bất kỳ cài đặt tin cậy nào, đồng thời, tốc độ tính toán tăng theo cấp số nhân với lượng dữ liệu tính toán tăng lên. Nó không dựa vào mật mã khóa công khai và các giả định đơn giản hơn làm cho nó an toàn hơn về mặt lý thuyết, vì giả định mật mã duy nhất của nó là các hàm băm (chẳng hạn như SHA2) là không thể đoán trước (giả định này cũng là cơ sở cho sự ổn định của việc khai thác Bitcoin) , do đó cũng làm cho nó kháng lượng tử. Là một công nghệ mới, giống như zkSTARK, nó cần phải vượt qua thử thách của thời gian.


người giới thiệu:

người giới thiệu:

1. Cộng đồng Zcoin Trung Quốc, "Zcoin và Zcash: Điểm tương đồng và khác biệt". http://www.zcoinchina.org/zcoin-and-zcash/https://z.cash/technology/zksnarks.html.

2. Nhóm Zcash, "Zk-SNARK là gì?"

4. Christian Reitwiessner,《zkSNARKs in a nutshell》,https://blog.ethereum.org/2016/12/05/zksnarks-in-a-nutshell/

5. Matthew Green,《Zero Knowledge Proofs: An illustrated primer》,https://blog.cryptographyengineering.com/2014/11/27/zero-knowledge-proofs-illustrated-primer/

3. Sách trắng về công nghệ Zerocoin "Một loại tiền điện tử đảm bảo quyền riêng tư trong kế toán bằng cách sử dụng giao thức Zerocoin"http://www.sohu.com/a/224915382_117959

6. Lao Qian, "Thảm kịch do Sudoku gây ra: Bằng chứng không tri thức (Zero-Knowledge Proof)",

Bản quyền bài viết thuộc sở hữu của Hash Future, nếu cần in lại vui lòng liên hệ với nhân viên của Hash Future.





哈希未来
作者文库