Zero-knowledge Proof (ZKP) là gì ? Tìm hiểu về ZKP

Proof System là gì ?

Để tìm hiểu ZKP, trước hết chúng ta tìm hiểu khái niệm về Proof System. Trong thực tế chúng ta đã bắt gặp rất nhiều Proof System (tạm dịch: 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ư:

  • 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 by-pass hệ thống (ví dụ bằng cách hacking, SQLi, vân vân). 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ộ (thực tế đã chứng minh: https://en.wikipedia.org/wiki/List_of_data_breaches) 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. Chính xác hơn, 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 Knoledge Proof (ZKP) – bằng chứng không có thông tin).

Để 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ì

Vậy Zero knowledge proof (ZKP) là gì ?

Vậy thì zero-knowledge proof (ZKP) là giao thức kỹ thuật số cho phép chia sẻ dữ liệu giữa 2 bên mà không cần sử dụng mật khẩu hay thông tin nào khác liên quan đến giao dịch.

Chúng ta sẽ xem qua ví dụ thực tế sau để dễ hình dung hơn về ZKP nhé:

Đây là một cái hang hình tròn với 1 cánh cửa ngăn đôi ở cuối 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:

Zero-Knowledge-Proof-zkp
  • (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à thế nào để ta có thể chắc chắn được (P) biết mật khẩu ? Đơn giản, ta 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ự.

Chúng ta 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ì.

Các giao thức Zero-knowledge Proof có thể rất hữu ích trong trường hợp GDPR (General Data Protection Regulation – Quy định bảo vệ dữ liệu chung) vì chúng có thể được sử dụng để xây dựng các kế hoạch xác thực an toàn hơn hoặc bảo mật dữ liệu tốt hơn cho các giao dịch có chứa dữ liệu nhạy cảm, không thể phân tách. Ví dụ, giao thức OTR được sử dụng để nhắn tin an toàn thực hiện các chương trình xác thực dựa trên ZKP để xác thực tính an toàn và trao đổi khóa.

Những dự án triển khai công nghệ ZKP

NuCypher

zkp

NuCypher là một dự án ICO mạnh mẽ đang được xây dựng trong mạng lưới để tái mã hóa proxy. Ý tưởng của dự án này là bạn sở hữu một tài liệu bí mật nào đó và bạn mã hóa nó bằng private key của mình. Nếu bạn muốn chia sẻ tài liệu được mã hóa đó với một đồng nghiệp, bạn phải cho anh ta biết private key của bạn, đó KHÔNG phải là một điều nên làm! Thay vào đó, đây là nơi tái mã hóa proxy có ích. Công nghệ này cho phép bạn tạo khóa được tái mã hóa tương đương với public key của ai đó. Bây giờ, bạn có thể chia sẻ tài liệu một cách an toàn với mã mới được tái mã hóa để người nhận có thể mở nó bằng private key của họ.

NuCypher làm việc với một mạng lưới các node chịu trách nhiệm cho các khóa được tái mã hóa vì các khóa được lưu trữ thành nhiều phần trên nhiều nút để làm cho các dữ liệu trở nên an toàn hơn. Để làm cho mọi việc trở nên nhanh hơn, mạng lưới sử dụng một dạng dẫn xuất của công nghệ ZKP: non-interative zero-knowledge (NIZK) với mục đích xác minh tính chính xác của kết quả từ quá trình tái mã hóa, để tránh trường hợp các nút KMS gian lận mà không bị bắt.

zkp

Nuggets

Dự án Nuggets kiểm soát người dùng khi mua hàng trực tuyến. Bạn sở hữu dữ liệu cá nhân của mình và quyết định lượng dữ liệu sẽ được chia sẻ với các cửa hàng trực tuyến nơi bạn đang mua sản phẩm. Nguyên nhân đằng sau ý tưởng Nuggets này là do các cơ sở dữ liệu tập trung thuộc sở hữu của các cửa hàng trực tuyến thường thiếu an ninh và là một mục tiêu tiềm năng cho tội phạm đánh cắp dữ liệu. Nuggets không phải là duy nhất. Tuy nhiên, blockchain Nuggets đã thực hiện công nghệ ZKP để ẩn thông tin cá nhân của giao dịch.

zkp

ZCash

ZCash, còn được gọi là Zerocash, mở rộng giao thức và phần mềm cơ bản của Bitcoin. ZCash đã thêm ZK-SNARK vào blockchain bitcoin để mã hóa tất cả dữ liệu giao dịch trong sổ kế toán, trong khi vẫn chứng minh được rằng họ đã không chi tiêu gấp đôi cho ZK-SNARK.

Enigma

Theo dự án Enigma, công nghệ ZKP rất quan trọng, nhưng không đủ để đáp ứng mọi nhu cầu về quyền riêng tư, đặc biệt là khi phải bảo mật tính toán. Một trích dẫn thú vị từ Enigma nói rằng:

“Trong thực tế, ZKP hữu ích khi một bên có quyền truy cập vào dữ liệu muốn chứng minh cho người khác thấy, mà không tiết lộ dữ liệu cho họ. Trong trường hợp liên quan đến nhiều bên, họ sẽ không thể tin tưởng ngay cả khi đã xem xét tất cả dữ liệu. Điều này càng nghiêm trọng trong cài đặt hợp đồng thông minh, nơi các bên thực thi các tính toán không đáng tin cậy và ẩn danh.”

zkp

Enigma muốn nhìn xa hơn cả công nghệ ZKP và thúc đẩy nghiên cứu chuyên về các hợp đồng thông minh bí mật. Bảo mật tính toán cho các hợp đồng thông minh sẽ trở thành một nhu cầu quan trọng để nâng không gian blockchain lên một tầm cao mới. Nghiên cứu của dự án Enigma rất quan trọng cho tương lai của công nghệ blockchain.

Tương lai cho ZKP

Số lượng các công cụ zero-knowledge và các tích hợp của nó chắc chắn sẽ tiếp tục tăng theo các quy định bảo vệ dữ liệu, GDPR và nhu cầu thị trường mạnh mẽ hơn về bảo đảm an ninh.

Việc xâm nhập vào dữ liệu cá nhân của ai đó sẽ trở nên khó khăn hơn vì bất kỳ người nào không được phép truy cập sẽ không thể nhìn thấy dữ liệu.

Với sức mạnh của công nghệ zero-knowledge proof, công nghệ sẽ trở thành một thành phần quan trọng của hầu hết các chiến lược tuân thủ GDPR một cách nghiêm ngặt.