Zero knowledge proof (ZKP) là gì? Tìm hiểu bằng chứng không kiến thức

ByNghĩa Nguyễn24/06/2023
Bạn nghe nhiều khái niệm Zero-knowledge proof (bằng chứng không kiến thức) nhưng chưa hiểu nó là gì. Trong bài viết dưới đây, Bigcoin sẽ giúp bạn hiểu hơn về công nghệ Zero-knowledge proof (ZKP) là gì, ưu điểm nhược điểm của công nghệ ZKP.

1. Zero knowledge proof (ZKP) là gì?

Zero-knowledge proof (Bằng chứng không kiến thức) là một phương pháp chứng minh tính hợp lệ của một tuyên bố mà không cần tiết lộ thông tin của tuyên bố đó. Đó là một hệ thống bằng chứng với người chứng minh, người xác minh và thách thức mang đến cho người dùng khả năng chia sẻ công khai bằng chứng về kiến thức hoặc quyền sở hữu mà không tiết lộ chi tiết về nó.

2. Nguồn gốc của Zero knowledge proof

2.1. Lý do Zero knowledge proof ra đời

Trước hết chúng ta sẽ tìm hiểu về Proof System. Trong thực tế chúng ta đã bắt gặp rất nhiều Proof System (hệ thống bằng chứng): Verifier (người kiểm tra) với nhiệm vụ là kiểm tra xem Prover (người chứng minh) có hiểu biết về một proof (bằng chứng) hoặc thông tin, kiến thức nào đó không. Sau khi đã xác thực được việc này thì sẽ cho phép Prover được truy cập vào những tài nguyên của hệ thống với những quyền hạn khác nhau. Ví dụ như sau:

  • Khi đăng nhập vào website/app, người dùng cần cung cấp username/password để chứng minh là họ biết thông tin đăng nhập account đó (tuy nhiên không nhất thiết đảm bảo là người đó là chủ sở hữu)
  • Khi bạn ra cây ATM rút tiền cũng tương tự, bạn cần điền vào số tài khoản và mã PIN mới có thể thực hiện được thao tác trên tài khoản đó

Trong những nghiên cứu trước đây người ta luôn giả sử rằng Prover là người xấu, luôn tìm cách đánh lừa người kiểm tra nhằm vượt qua hệ thống (ví dụ bằng cách hacking, SQLi, …). Thế nhưng ngược lại, Verifier là người xấu thì sao? Trong trường hợp đăng nhập hệ thống, về cơ bản người dùng sẽ đưa thông tin này lên server, server sẽ hash password và kiểm tra với hash đã lưu trong server, nếu trùng nhau thì OK. Thế nhưng có những nguy cơ tiềm ẩn trong quá trình xác thực như sau:

  • Trong quá trình gửi password lên, password bị lộ do môi trường truyền thông tin không an toàn
  • Không có gì đảm bảo là server sẽ thực hiện hash password rồi mới lưu (hoặc lưu luôn dưới dạng plain-text )
  • Không có gì đảm bảo là những dữ liệu đó sẽ được an toàn, không bị lộ một cách vô ý hoặc cố ý

Với những tồn tại trên, việc cần có một giao thức kiểm tra mà phía Verifier không biết gì về những kiến thức mà phía Prover đang nắm giữ là cần thiết. Từ những bằng chứng mà người chứng minh đưa ra, người kiểm tra không có cách nào lần ra được kiến thức nguồn (do đó mới có tên gọi Zero Knowledge Proof (ZKP) - bằng chứng không kiến thức.

2.2. Lịch sử ra đời Zero knowledge proof

Zero-knowledge trong mật mã lần đầu xuất hiện trong bài báo năm 1985 "The knowledge complexity of interactive proof systems [GMR85]" của các nhà mật mã học Shafi Goldwasser, Silvio Micali và Charles Rackoff. Họ đưa ra một định nghĩa về zero-knowledge proofs mà ngày nay được sử dụng rộng rãi:

"Một giao thức zero-knowledge proof là một phương pháp mà bên thứ nhất *prover (*người chứng minh) có thể chứng minh cho bên thứ hai verifier (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 nhận biết rằng thông tin đó là đúng."

Để có thể hoạt động được ZKP cần thoả mãn những tính chất sau:

  • Completeness (tính trọn vẹn): Nếu mệnh đề là đúng thì một người kiểm tra trung thực sẽ bị thuyết phục bởi một người chứng minh trung thực rằng mệnh đề đó là đúng
  • Soundness (tính đúng đắn): Nếu người chứng minh là không trung thực thì họ không thể thuyết phục được người kiểm tra rằng mệnh đề đúng bằng cách dối trá
  • Zero-Knowledge (tính không có thông tin): Nếu mệnh đề là đúng thì người kiểm tra chỉ biết là nó đúng và không thể biết được chính xác mệnh đề đó là gì.

Các cột mốc đáng chú ý

Các cột mốc đáng chú ý
Các cột mốc đáng chú ý

1985: Zero-knowledge trong mật mã lần đầu xuất hiện trong bài báo "The knowledge complexity of interactive proof systems [GMR85]" của các nhà mật mã học Shafi Goldwasser, Silvio Micali và Charles Rackoff.

2011: zk-SNARK (Succinct Non-Interactive Arguments of Knowledge) được công khai lần đầu trên bài báo Bit+11 2013: Công nhận Zero knowledge proof có thể được sử dụng trong các ứng dụng thực tế trên bài báo Pinocchio PHGR13 2016: Groth16 thuật toán giảm độ phức tạp tính toán và trở thành tiêu chuẩn cho zk-SNARKs. 2017: Bulletproofs (BBBPWM17) được giới thiệu, không yêu cầu thiết lập đáng tin cậy ban đầu. 2018: zk-STARKs (BBHR18) được ra đời và phát triển bởi Eli-Ben Sasson, giáo sư tại Viện Công nghệ Technion-Israel. Hiện tại ông là chủ tịch của StarkWare. 2019: PlonK giới thiệu thuật toán Universal Zero-Knowledge proof, giúp giảm thiểu sự cần thiết của thiết lập đáng tin cậy cho mỗi mạch điện.

3. Ví dụ về ZKP

Chúng ta cùng xem xét một vài ví dụ đơn giản để hiểu rõ hơn về ZKP trong thực tế:

3.1. Hang của Alibaba

Hang của Alibaba
Hang của Alibaba

Đây là một cái hang hình tròn với 1 cánh cửa ngăn đôi ở giữa hang. Prover (P) sẽ chứng minh cho Verifier (V) là mình biết mật khẩu mở cửa mà không cần nói cho (P) biết cụ thể mật khẩu là gì. Ta sẽ thực hiện việc này theo các bước sau:

  • (P) đi vào hang và chọn đi theo hướng A hoặc B tuỳ ý và đi đến chỗ cánh cửa.
  • (V) đi vào cửa hang và yêu cầu: "(P) hãy xuất hiện ở cửa B". Khi đó sẽ có 2 trường hợp
    • Nếu ban đầu (P) đi vào đường B thì (P) chỉ cần quay đầu trở lại
    • Nếu ban đầu (P) đi vào đường A thì cách duy nhất để (P) có thể xuất hiện ở đầu B là (P) phải biết mật khẩu cửa để đi từ đầu A sang đầu B
  • Giả sử là (P) xuất hiện ở đầu B thật, vậy ta sẽ có 50% xác xuất là (P) không biết mật khẩu cửa

Vậy làm thế nào để có thể chắc chắn được (P) biết mật khẩu ? Đơn giản, hãy thực hiện việc kiểm tra này thật nhiều lần. Nếu lần 2 (P) vẫn đúng thì xác suất đúng sẽ là: 0.5 * 0.5 = 0.25, lần 3 sẽ là 0.5 * 0.5 * 0.5 = 0.125 và cứ tiếp tục như vậy. Sau 100 lần chẳng hạn thì xác suất ăn may của (P) sẽ là cực kì nhỏ và lúc này, ta hầu như có thể chắc chắn là (P) biết mật khẩu cửa thực sự.

Hãy cùng kiểm tra lại 3 tính chất của ZKP:

  • Completeness (tính trọn vẹn): Nếu (P) biết mật khẩu cửa thì (V) sẽ bị thuyết phục (bằng cách kiểm tra nhiều lần).
  • Soundness (tính đúng đắn): Nếu (P) ăn may 1,2 lần thì bằng cách thử lại nhiều lần, ta đã loại bỏ được khả năng này.
  • Zero-Knowledge (tính không có thông tin): (V) không hề biết thực sự mật khẩu là gì.

3.2. Người mù màu và hai quả bóng

Người mù màu và hai quả bóng
Người mù màu và hai quả bóng

Những người bị bệnh mù màu khi được đưa ra 2 quả bóng có màu khác nhau thì với họ, họ cũng không thể phân biệt được. Vậy làm thế nào để một người bình thường (Prover) có thể chứng minh cho một người mù màu (Verifier) rằng họ biết là 2 quả bóng khác màu mà không lộ ra là quả bóng nào là quả nào và có màu gì ?

Ta thực hiện như sau:

  • Người bị mù màu sẽ giấu 2 quả bóng sau lưng, sau đó đưa ra 1 quả cho người bình thường xem
  • Sau đó người bị mù màu sẽ giấu quả bóng vừa đưa ra về sau lưng, rồi đưa quả bóng còn lại (hoặc chính quả bóng vừa đưa ra) cho người bình thường xem và yêu cầu người bình thường trả lời là anh ta đã đánh tráo quả bóng hay không.
  • Lặp đi lặp lại việc này nhiều lần.

Nếu người mù màu tráo bóng thì ta có thể nhận ra ngay bằng việc nhìn vào màu của chúng, nếu không thì có 50% xác suất là chúng ta đoán mò (bóng giống nhau nhưng chúng ta lại kêu là khác nhau). Tương tự như ví dụ trên, bằng cách lặp đi lặp lại nhiều lần, người bị mù màu có thể giảm xác suất này xuống và cuối cùng bị thuyết phục là người bình thường biết là 2 quả bóng khác nhau.

Và tất nhiên, các tính chất của ZKP vẫn được đảm bảo.

  • Completeness (tính trọn vẹn): Người bình thường thuyết phục được người bị mù màu là hai quả bóng khác nhau.
  • Soundness (tính đúng đắn): Người bình thường không thể đoán mò.
  • Zero-Knowledge (tính không có thông tin): Người mù màu không biết quả bóng nào là quả nào và có màu gì.

4. Ưu điểm và hạn chế của zero-knowledge proof

4.1. Ưu điểm của Zero knowledge proof (ZKP)

  • Tăng khả năng mở rộng cho Blockchain: Các giải pháp ZK Rollup, như StarkNET, Loopring và Zksync, sử dụng công nghệ ZKP để tăng thông lượng và khả năng mở rộng cho các lớp Blockchain Layer 1.
  • Bảo vệ quyền riêng tư và bảo mật: Công nghệ ZKP cho phép xác minh tính đúng đắn của dữ liệu mà không cần tiết lộ thông tin quan trọng. Ngoài ứng dụng trong các lớp 2, ZKP còn được sử dụng trong các ứng dụng về bảo mật và quyền riêng tư như Monero và Zcash.

4.2. Hạn chế của Zero Knowledge Proof (ZKP):

  • Yêu cầu sức mạnh tính toán lớn: Các giao thức ZKP thường dựa trên phương trình toán học phức tạp, đòi hỏi sức mạnh tính toán cao để vận hành và tính toán. Điều này làm cho việc tham gia vào quá trình xác thực giao dịch trở nên khó khăn cho các máy tính thông thường.
  • Không thân thiện với nhà phát triển: Mặc dù ZKP được sử dụng cho công nghệ Layer 2 để cải thiện khả năng mở rộng cho Blockchain, nhưng hiện tại, các ứng dụng ZK Rollup chỉ hỗ trợ trong các khoản thanh toán đơn giản và giao dịch. Ngoài ra, ZK Rollup hiện tại không hỗ trợ khả năng tổng hợp và không cho phép tương tác giữa các ứng dụng ZK Rollup khác nhau trong cùng một Layer 2.

5. Công nghệ Zero-knowledge proof (ZKP) trong Blockchain

Hiện nay trong lĩnh vực Blockchain, Zero-knowledge proof (ZKP) đóng vai trò quan trọng giúp tạo ra những blockchain thế hệ mới đầy hứa hẹn. Một số dự án blockchain nổi bật sự dụng ZKP như: Mina Protocol, Dusk Network, zkSync Era, Starknet, Polygon, Secret Network…

6. Tổng kết

Zero knowledge proof (Bằng chứng không kiến thức- ZKP) là một phương pháp chứng minh tính hợp lệ của một tuyên bố mà không cần tiết lộ thông tin của tuyên bố đó. Sau gần 40 năm phát triển, Zero-knowledge proof ngày càng có nhiều ứng dụng thực tiễn hơn. Hi vọng qua bài viết trên bạn đọc đã hiểu rõ Zero knowledge proof là gì, ưu nhược điểm của phương pháp chứng minh này.

Đọc thêm:

Disclaimer: Bài viết mang mục đích cung cấp thông tin, không phải lời khuyên tài chính. Tham gia nhóm chat Bigcoinchat để cập nhật thông tin mới nhất về thị trường.

Thảo luận thêm tại

Facebook:https://www.facebook.com/groups/bigcoincommunity

Telegram: https://t.me/Bigcoinnews

Twitter: https://twitter.com/BigcoinVN 

Nghĩa Nguyễn

Nghĩa Nguyễn

Researcher and writer at Bigcoin Vietnam

5 / 5 (1Bình chọn)

Bài viết liên quan