Zero-Knowledge Proof: Kỹ thuật xác minh không tiết lộ dữ liệu
Zero-Knowledge Proof (ZKP, bằng chứng không tiết lộ tri thức) là kỹ thuật mật mã cho phép một bên chứng minh với bên kia rằng một khẳng định là đúng, mà không tiết lộ bất kỳ thông tin nào ngoài việc khẳng định đó đúng. Ví dụ, bạn chứng minh mình đủ 18 tuổi mà không cần đưa ra ngày sinh, hoặc chứng minh mình biết mật khẩu mà không gửi mật khẩu. ZKP đang được ứng dụng trong blockchain, định danh số và xác thực, và được xem là một trong những công cụ quan trọng của quyền riêng tư thế hệ mới.
Ý tưởng qua câu chuyện hang động
Ví dụ kinh điển: một hang động hình vòng tròn có hai lối vào A và B, phía trong có cánh cửa bí mật nối hai nhánh, chỉ mở được bằng mật mã. Người chứng minh muốn thuyết phục người xác minh rằng mình biết mật mã mà không nói ra.
- Người chứng minh vào hang theo một nhánh bất kỳ, người xác minh đứng ngoài không thấy.
- Người xác minh hô ngẫu nhiên "ra bằng lối A" hoặc "ra bằng lối B".
- Nếu biết mật mã, người chứng minh luôn làm được, vì có thể đi qua cánh cửa khi cần.
- Nếu không biết, mỗi lần chỉ có một nửa cơ hội đoán đúng nhánh.
Lặp lại nhiều lần, xác suất gian lận thành công giảm xuống gần bằng không. Trong khi đó, người xác minh không học được gì về mật mã, và cũng không thể dùng đoạn ghi hình để thuyết phục người khác, vì ghi hình có thể được dàn dựng.
Ba tính chất định nghĩa ZKP
- Tính đầy đủ (completeness): nếu khẳng định đúng và người chứng minh trung thực, người xác minh sẽ chấp nhận.
- Tính đúng đắn (soundness): nếu khẳng định sai, người chứng minh gian lận chỉ thành công với xác suất không đáng kể.
- Tính không tiết lộ (zero-knowledge): người xác minh không học được gì ngoài việc khẳng định là đúng.
Khái niệm này được Shafi Goldwasser, Silvio Micali và Charles Rackoff giới thiệu trong một bài báo nổi tiếng giữa thập niên 1980.
Từ tương tác đến không tương tác
Ví dụ hang động là ZKP tương tác: cần nhiều lượt hỏi đáp. Trong thực tế, ta thường muốn một bằng chứng gửi một lần, ai cũng kiểm tra được. Kỹ thuật Fiat-Shamir thay câu hỏi ngẫu nhiên của người xác minh bằng giá trị băm của các thông điệp trước đó, biến giao thức tương tác thành không tương tác. Vai trò của hàm băm trong đây được giải thích ở bài hàm băm mật mã.
Các họ ZKP hiện đại
| Họ | Đặc điểm | Ưu điểm | Hạn chế |
|---|---|---|---|
| zk-SNARK | Bằng chứng ngắn, kiểm tra rất nhanh | Phù hợp blockchain, nơi chi phí lưu trữ cao | Nhiều lược đồ cần bước thiết lập tin cậy; dựa trên giả định không chống lượng tử |
| zk-STARK | Dựa trên hàm băm, không cần thiết lập tin cậy | Minh bạch, được cho là kháng lượng tử | Bằng chứng lớn hơn |
| Bulletproofs | Bằng chứng ngắn cho khoảng giá trị | Không cần thiết lập tin cậy | Kiểm tra chậm hơn khi mạch lớn |
| Giao thức Sigma (như Schnorr) | Chứng minh biết khóa bí mật | Đơn giản, hiệu quả, nền tảng của nhiều chữ ký số | Chỉ cho các khẳng định cụ thể |
"Thiết lập tin cậy" là một bước sinh tham số ban đầu; nếu dữ liệu bí mật của bước này không bị hủy, ai giữ nó có thể tạo bằng chứng giả. Các dự án thường tổ chức nghi thức nhiều bên để giảm rủi ro này.
Ứng dụng thực tế
Xác thực không gửi mật khẩu
Các giao thức trao đổi khóa xác thực bằng mật khẩu và giao thức nhận dạng kiểu Schnorr cho phép chứng minh biết bí mật mà không truyền bí mật qua mạng. Ngay cả khi máy chủ bị nghe lén, kẻ tấn công không lấy được mật khẩu.
Định danh số và tiết lộ có chọn lọc
Ví định danh điện tử có thể chứng minh "người này trên 18 tuổi" hoặc "người này cư trú tại quốc gia X" mà không đưa ra toàn bộ giấy tờ. Đây là hướng đi được nhiều dự án định danh số quan tâm để giảm lượng dữ liệu cá nhân phải chia sẻ.
Blockchain
Một số tiền mã hóa dùng ZKP để giấu người gửi, người nhận và số tiền mà vẫn chứng minh giao dịch hợp lệ. Các giải pháp mở rộng dạng zk-rollup gom nhiều giao dịch, chứng minh tính đúng bằng một bằng chứng ngắn đăng lên chuỗi chính. Lưu ý đây là thông tin kỹ thuật; các tài sản mã hóa có rủi ro cao và bài viết không khuyến nghị đầu tư.
Kiểm chứng tính toán
ZKP có thể chứng minh một phép tính được thực hiện đúng, ví dụ máy chủ đã chạy đúng mô hình trên dữ liệu. Kết hợp với mã hóa đồng cấu, ta có thể vừa giữ bí mật dữ liệu vừa kiểm chứng kết quả.
Tuân thủ mà không phơi bày dữ liệu
Doanh nghiệp có thể chứng minh với kiểm toán viên rằng số dư dự trữ lớn hơn nghĩa vụ, hoặc dữ liệu thỏa một chính sách, mà không công bố toàn bộ dữ liệu chi tiết.
Giới hạn và thách thức
- Chi phí tạo bằng chứng: tạo bằng chứng cho phép tính phức tạp vẫn tốn nhiều tài nguyên, dù kiểm tra thì nhanh.
- Lỗi trong mạch: nếu "khẳng định" được mô tả sai trong mạch, bằng chứng vẫn hợp lệ nhưng chứng minh điều sai. Nhiều lỗ hổng thực tế nằm ở đây chứ không ở mật mã.
- Thiết lập tin cậy: rủi ro với các lược đồ cần bước này.
- Máy tính lượng tử: lược đồ dựa trên đường cong elliptic sẽ cần thay thế, xu hướng chung được bàn trong bài mã hóa lượng tử và tương lai bảo mật.
- Siêu dữ liệu vẫn rò rỉ: ZKP giấu nội dung khẳng định, nhưng thời điểm, tần suất và ngữ cảnh sử dụng vẫn có thể tiết lộ thông tin.
Vì sao ZKP quan trọng với quyền riêng tư
Phần lớn hệ thống hiện nay hoạt động theo kiểu "đưa hết dữ liệu để chứng minh một điều nhỏ": photo cả căn cước để chứng minh tuổi, gửi toàn bộ sao kê để chứng minh thu nhập. ZKP đảo ngược cách làm đó, cho phép tối thiểu hóa dữ liệu ngay từ thiết kế. Dữ liệu không bị thu thập thì cũng không thể bị rò rỉ, và đó là lý do kỹ thuật này đáng được theo dõi.
Câu hỏi thường gặp
Zero-Knowledge Proof có phải là mã hóa không?
Không hẳn. Mã hóa giấu dữ liệu để người có khóa đọc lại được. ZKP chứng minh một khẳng định về dữ liệu mà không tiết lộ dữ liệu, và không có bước giải mã.
ZKP có dùng được trong đăng nhập website hằng ngày không?
Có các giao thức dựa trên ý tưởng tương tự, nhưng phổ biến hơn hiện nay là passkey dựa trên chữ ký số. Passkey cũng tránh gửi bí mật qua mạng, dù không phải ZKP theo nghĩa đầy đủ.
zk-SNARK và zk-STARK khác nhau thế nào?
zk-SNARK cho bằng chứng rất ngắn nhưng nhiều lược đồ cần thiết lập tin cậy. zk-STARK không cần thiết lập tin cậy và được cho là kháng lượng tử, đổi lại bằng chứng lớn hơn.
Người không chuyên có cần hiểu ZKP không?
Không cần hiểu toán học, nhưng nên biết khái niệm để nhận ra lợi ích khi dịch vụ cho phép chứng minh thông tin mà không phải nộp toàn bộ giấy tờ cá nhân.
Bài liên quan

Bảo mật dữ liệu trên đám mây: Mã hóa ở trạng thái nghỉ và chuyển động
Giải thích mã hóa dữ liệu đám mây ở trạng thái nghỉ và khi chuyển động, mã hóa phong bì, các mô hình quản lý khóa KMS, HSM và danh sách việc cho doanh nghiệp.

Cách bảo vệ file tài liệu quan trọng bằng mã hóa GPG/PGP
Hướng dẫn mã hóa file bằng GPG: mã hóa bằng mật khẩu, bằng khóa công khai, ký số, mã hóa thư mục, quản lý và sao lưu khóa, các sai lầm cần tránh.

Hàm băm Cryptographic Hash Functions: Vai trò trong xác thực dữ liệu
Hàm băm mật mã hoạt động thế nào, ba tính chất bảo mật cốt lõi, so sánh MD5, SHA-1, SHA-2, SHA-3 và ứng dụng trong chữ ký số, lưu mật khẩu, kiểm tra tệp.

Hiểu rõ về chứng chỉ SSL/TLS và cách thức hoạt động trên Website
Giải thích chứng chỉ SSL/TLS: nội dung chứng chỉ, chuỗi tin cậy, bắt tay TLS 1.3, các loại DV, OV, EV, ý nghĩa ổ khóa và cấu hình HTTPS đúng cho quản trị web.