Trước tiên hãy để tôi giới thiệu ngữ cảnh: Giả sử rằng chúng ta có một đánh giá hàm băm: $$h = H(x, y),$$ ở đâu $x$ và $y$ là đầu vào công khai và riêng tư của hàm băm $H$, tương ứng.
Sau đó, nếu tôi muốn chứng minh với ai đó rằng phép tính này đã được tính đúng cách mà không thực sự tiết lộ $x$, thì tôi phải tạo bằng chứng tri thức không có kiến thức $\pi$ (có thể nhận được thông qua ZKPoK có mục đích chung, chẳng hạn như chúng tôi SNARKS, STARKS, ...) $x$ như vậy mà $h = H(x, y)$.
Cho đến thời điểm này, mọi thứ đều ổn.
Điều gì sẽ xảy ra nếu tôi muốn người khác xác minh đánh giá hàm băm mà không tiết lộ thông tin đầu vào riêng tư $x$, không thông qua mục đích chung ZKPoK; và quan trọng hơn: giữ một số hàm băm tính chất chẳng hạn như tính tất định, tính đồng nhất và tính phổ quát?
Ý tưởng đầu tiên của tôi để giải quyết câu hỏi này là tìm một hàm $f$ như vậy mà:
- $f(x)$ có thể được công khai (để mọi người có thể dễ dàng kiểm tra tính toán $H(f(x), y)$).
- $f(x)$ cũng thỏa mãn tính tất định, tính đồng nhất và tính phổ quát.
Trong thực tế, nếu một chức năng như vậy $f$ tồn tại, sau đó tôi chỉ có thể thay thế $H$ với $f$. Giả sử rằng những gì tôi đang cố gắng tìm là một số tính toán chia sẻ một số thuộc tính mà hàm băm có nhưng hiệu quả hơn nhiều (nghĩa là không cần bằng chứng mục đích chung) có thể kiểm chứng được.
Ý tưởng thứ hai là thay thế cơ chế băm bằng một thứ khác (ví dụ: mã hóa được nối với chữ ký ...) có thể được kiểm chứng một cách hiệu quả đồng thời giữ nguyên các thuộc tính được đề cập.