

Bài viết này là từ: BFTF(ID:bftf2018)chữ
Bài viết này là từ:
, Tác giả: Ngô Quỳnh.
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ố. Hệ thống chứng minh không kiến thức bao gồm hai phần: người chứng minh tuyên bố rằng một mệnh đề nào đó là đúng và người xác minh xác nhận rằng mệnh đề đó thực sự đúng. Việc chứng minh được thực hiện thông qua sự tương tác giữa hai phần này. Khi kết thúc giao thức không có kiến thức, người xác minh chỉ xác nhận xem đề xuất có đúng hay không. Tuy nhiên, nếu người chứng minh khẳng định một mệnh đề sai thì người kiểm chứng hoàn toàn có thể phát hiện ra lỗi sai đó.
Ở đây chúng tôi đưa ra một ví dụ rất cổ điển về bằng chứng không kiến thức để giúp bạn hiểu:
Ali Baba bị bọn cướp bắt, để cứu mạng anh phải chứng minh cho bọn cướp thấy mình có mật khẩu mở cổng đá.
Đồng thời, không thể nói mật khẩu cho tên cướp. Anh ta nghĩ ra một giải pháp, hãy để những tên cướp rời khỏi mũi tên của anh ta trước,
Khoảng cách đủ xa để tên cướp không thể nghe thấy mật khẩu và khoảng cách đủ gần để Ali Baba không thể trốn thoát dưới cung tên của tên cướp.
Nếu tên cướp giơ tay trái, Alibaba sẽ sử dụng mật mã để mở cổng đá, còn nếu giơ tay phải, cổng đá sẽ đóng lại.
Chính ở khoảng cách này, Ali Baba đã chỉ cho bọn cướp cách mở và đóng cổng đá. Nếu cổng có thể được mở và đóng chính xác mọi lúc, điều đó được xác nhận rằng Alibaba biết mật khẩu của Shimen.
Toàn bộ quá trình này là bằng chứng không có kiến thức, tức là người chứng minh có thể thuyết phục người xác minh rằng một khẳng định nào đó (Alibaba biết cách mở Shimen) là chính xác mà không cần cung cấp bất kỳ thông tin hữu ích nào (mật khẩu của cổng đá) cho người xác minh.
Từ đó, chúng ta có thể tóm tắt ba thuộc tính của bằng chứng không kiến thức:
Nếu tuyên bố là đúng, những người xác minh trung thực (nghĩa là: những người xác minh tuân thủ đúng quy trình) sẽ bị thuyết phục bởi sự thật này bởi những người chứng minh trung thực.
Nếu tuyên bố là sai, không loại trừ khả năng kẻ lừa đảo có thể thuyết phục người xác minh trung thực rằng điều đó là đúng.
Nếu tuyên bố là đúng, mục đích của người chứng minh là chứng minh cho người xác minh và làm cho người xác minh tin rằng anh ta biết hoặc có một thông điệp nào đó và trong quá trình chứng minh, anh ta không được tiết lộ bất kỳ nội dung nào về thông điệp đã được chứng minh cho người xác minh.
Satoshi Nakamoto đã đề xuất Bitcoin một cách sáng tạo và xây dựng một nền tảng giao dịch phi tập trung, do đó loại bỏ sự tin tưởng và phụ thuộc lâu dài vào các nền tảng giao dịch của bên thứ ba, nhưng đồng thời, Bitcoin cần phát tất cả các giao dịch lên mạng. Bảo mật của toàn bộ hệ thống là được đảm bảo bằng cách đạt được sự đồng thuận thông qua tất cả các nút, nghĩa là tất cả mọi người có thể xem tất cả các giao dịch trên mạng và giao thức Bitcoin ban đầu không chỉ định địa chỉ của người gửi và người nhận giao dịch. để phân tích mối quan hệ tương ứng giữa địa chỉ và người thực bằng cách phân tích các đặc điểm giao dịch của một địa chỉ và kết hợp một số thông tin thực tế, điều này sẽ mang lại những nguy cơ tiềm ẩn lớn đối với quyền riêng tư của người dùng. Dựa trên điều này, một số đồng tiền bảo mật nổi tiếng đã được tạo ra, trong số đó bằng chứng không kiến thức đã đóng một vai trò rất quan trọng.
ZCash
Hãy giới thiệu một số hệ thống blockchain sử dụng bằng chứng không kiến thức.
tiêu đề cấp đầu tiên
Là một dự án tiền điện tử ẩn danh, ban đầu ZCash chỉ tồn tại dưới dạng một lớp Bitcoin ẩn danh được mã hóa và sau đó trở thành một loại tiền điện tử độc lập vì tính riêng tư tuyệt vời của nó. Giống như Bitcoin, tổng số ZCash cũng là 21 triệu, sự khác biệt là nó có thể đạt được tính ẩn danh thực sự - bạn thậm chí không cần biết bên kia có bao nhiêu tiền để hoàn thành giao dịch.
Vậy làm cách nào để ZCash đạt được tính ẩn danh thực sự và bảo vệ quyền riêng tư?
Sử dụng công nghệ zk-SNARK, nghĩa là công nghệ bằng chứng không có kiến thức: Ngay cả khi thông tin về nguồn và luồng của tiền tệ là hoàn toàn bí mật, công nghệ bằng chứng không có kiến thức vẫn có thể xác minh rằng người dùng chi tiền thực sự sở hữu loại tiền đó.
Khi sử dụng tiền kỹ thuật số ZCash để giao dịch, nó sẽ tự động mã hóa dữ liệu gốc của giao dịch, đồng thời, giao dịch riêng lẻ không cần nút ZCash để lưu dữ liệu mà chỉ cần zk-SNARK để chứng minh "sức tiêu thụ" của nó. Điều này chủ yếu thể hiện ở hai điểm trong quá trình giao dịch, một là có thể cho phép người khác xác minh tính hợp lệ của giao dịch (hoặc lệnh gọi chức năng hợp đồng thông minh) mà không cần biết nội dung giao dịch cụ thể. chuỗi khối công khai. Loại bỏ.
Bằng cách này, hai bên tham gia giao dịch dường như không bao giờ xuất hiện và giao dịch thực sự đã được hoàn thành. Là dân ăn dưa, họ chỉ biết có giao dịch xảy ra chứ không theo dõi được dòng tiền. Bằng cách này, một "giao dịch ẩn danh" thực sự được thực hiện.
tiêu đề phụ
Triển khai kỹ thuật trong zk-SNARK
ẩn đồng hình
Ẩn đồng hình có thể nhận ra bằng chứng không kiến thức ở một mức độ nhất định.
Ví dụ:
A có 2 số bí mật là x và y, cần chứng minh cho B thấy tổng của 2 số này bằng 7 thì chỉ cần thực hiện 3 bước sau:
A tính f(x), f(y) và gửi nó cho B;
Vì hàm f(x) thỏa mãn đồng cấu cộng nên B có thể tính f(x+y) đến f(x), f(y);
B tính toán độc lập f(7) và xác minh rằng f(x+y)=f(7).
xác minh mù đa thức
Xác minh mù đa thức sử dụng thuộc tính của phép cộng đồng cấu cho đa thức. (Các khái niệm toán học ở đây tương đối mạnh nên bạn chỉ có thể hiểu một cách hời hợt)
Giả sử A biết một đa thức P bậc cao nhất d, và B muốn biết E(P(s)) tương ứng với một số s:
Chúng tôi hy vọng rằng trong quá trình xác minh, A chỉ biết P chứ không biết s và B chỉ biết s chứ không biết P. Điều này có thể đạt được theo cách sau:
Với mỗi chỉ số của s, B tính toán E(1), E(s), ..., E(sd) và gửi nó cho A;
A biết tất cả các hệ số của đa thức, có thể tính P(s) bằng cách sử dụng thuộc tính đồng cấu và gửi lại cho B;
KCA (Kiến thức kiểm tra hệ số và giả định) và xác minh mù đa thức đầy đủ.
Phương pháp xác minh mù đa thức được cung cấp ở trên có một vấn đề nghiêm trọng, đó là B không thể xác minh rằng A thực sự sử dụng đa thức P(s) để tính kết quả, nghĩa là, nó không thể chứng minh rằng A thực sự biết đa thức P(X ). KCA tiếp tục cải thiện việc xác minh trên.
Nói tóm lại, thông qua phép đồng cấu cộng, chúng ta có thể thực hiện ẩn cộng, cho phép B xác minh giá trị của x+y mà không cần biết x và y. Hơn nữa, thông qua xác minh mù đa thức, chúng ta có thể để B xác minh P(s) tương ứng với bất kỳ s đã cho nào mà không làm lộ đa thức P(X).
Tính toán tùy ý chuyển thành chứng minh đa thức.
Bước cuối cùng của quá trình xác minh.
đồng tiền
tiêu đề cấp đầu tiên
đồng tiền
Monero, với tư cách là đại diện cho loại tiền kỹ thuật số được mã hóa hiện nay, áp dụng công nghệ mã hóa vô cùng khéo léo để đảm bảo tính riêng tư của các giao dịch.
Hai thuộc tính của Monero:
Không thể liên kết: Không thể chứng minh rằng hai giao dịch đã được gửi cho cùng một người, nghĩa là không thể biết ai là người nhận giao dịch.
Untraceability: Không thể biết ai là người gửi giao dịch.
Triển khai kỹ thuật của Monero:
địa chỉ tàng hình
Trong Monero, mỗi khi người gửi muốn bắt đầu giao dịch, trước tiên, người gửi sẽ sử dụng thông tin khóa chung của người nhận để tính toán địa chỉ trung gian tạm thời một lần, sau đó gửi số tiền đến địa chỉ trung gian này và người nhận sau đó sử dụng khóa công khai của mình. Thông tin chính có thể được sử dụng để tìm giao dịch và chi tiêu nó. Bằng cách này, những người dùng khác trên mạng, bao gồm cả những người khai thác, không thể xác định địa chỉ trung gian thuộc về ai, nhưng họ vẫn có thể xác minh tính hợp lệ của giao dịch. Vì địa chỉ này là một lần, mỗi lần. Mỗi lần nó được tạo lại ngẫu nhiên, kẻ tấn công sẽ không thể tạo bất kỳ liên kết nào với người gửi và người nhận thực.
Giả sử Alice muốn chuyển tài khoản cho Bob, Bob sẽ rất căng thẳng vì anh ta cần quét tất cả các giao dịch trên blockchain, sau đó tính toán và so sánh các thông tin tương ứng để tìm giao dịch được gửi cho anh ta. Monero đề xuất một giải pháp cải tiến cho việc này, đó là Bob có thể giao một nửa khóa riêng của mình (a, B) cho bên thứ ba, qua đó ủy quyền cho bên thứ ba giúp kiểm tra tất cả các giao dịch thuộc về Bob trên chuỗi khối và cả Nó giảm bớt áp lực cho Bob, nhưng cuối cùng chỉ có Bob mới có thể chi tiêu.
Chữ ký nhẫn một lần (chữ ký nhẫn một lần)
Nói tóm lại, những gì chữ ký vòng làm là trộn khóa chung của người ký với một bộ khóa chung khác (nhưng không biết khóa riêng), sau đó ký vào tin nhắn, để người xác minh chữ ký (bất kỳ ai cũng có thể xác minh), nó không thể phân biệt khóa công khai nào trong tập hợp hỗn hợp tương ứng với người ký thực.
Toàn bộ quy trình của công nghệ chữ ký vòng được sử dụng trong Monero:
Bước đầu tiên, tạo khóa (GEN)
Đầu tiên, người ký chọn ngẫu nhiên một khóa riêng x, sau đó tính toán khóa chung tương ứng. Đồng thời, một khóa công khai khác được tính toán. Khóa công khai I này được gọi là "hình ảnh khóa", đối với mỗi chữ ký, hình ảnh khóa này là duy nhất, vì vậy nó cũng được sử dụng sau này để xác định xem chữ ký đã xuất hiện trước đó chưa.
Bước thứ hai, chữ ký (SIG)
Đầu tiên, người ký chọn ngẫu nhiên một bộ khóa công khai chứa n phần tử, sau đó trộn nó với khóa công khai của chính mình để tạo ra một bộ hỗn hợp S. Giả sử rằng chỉ số dưới của khóa công khai của người ký hỗn hợp trong S là s, thì khóa công khai của anh ta là Ps. Sau đó, người ký chọn ngẫu nhiên {qi, i = 0,...,n} và {wi, i=0,...,n,i!=s} từ [1, l-1], rồi Tính toán a thử thách không tương tác.
Tính không tương tác ở đây liên quan đến thách thức trong bằng chứng tương tác không có kiến thức. .Để truyền thông tin, nhưng không tương tác trực tiếp, do đó, bằng chứng không kiến thức không tương tác được chọn ở đây. Sở dĩ có thử thách này là để tránh những trường hợp người chứng minh giả mạo bằng chứng để đánh lừa người kiểm chứng.
Phần thứ ba, xác minh chữ ký (VER)
Để xác minh tính hợp lệ của chữ ký, trước tiên người xác minh sẽ tính toán và sau đó xác minh. Nếu đẳng thức là đúng, sau đó chạy LNK để xác minh xem chữ ký đã được sử dụng chưa; nếu đẳng thức không đúng, chữ ký là bất hợp pháp.
Bước thứ tư, kiểm tra lại (LNK)
Điều này yêu cầu hệ thống duy trì một bộ sưu tập hình ảnh chứa tất cả các chữ ký, sau đó đối với mỗi chữ ký mới, bằng cách đánh giá xem hình ảnh của nó có trong bộ sưu tập hay không, nó sẽ đánh giá xem chữ ký đó đã xuất hiện trước đó hay chưa. Lưu ý rằng trước bước này, quá trình xác minh chữ ký của bước trước đó phải được thông qua.
