Back to Home

Fiat-Shamir Heuristic - Mô hình Non Interactive ZK đơn giản

Fiat-Shamir heuristic là một kỹ thuật mật mã dùng biến một hệ thống chứng minh tương tác thành một hệ thống chứng minh không tương tác (non-interactive proof system).

Vấn đề

Alice (Prover) muốn thuyết phục Bob (Verifier) là cô ta biết một giá trị ss mà lại không muốn để lộ giá trị này.

Các bước thực hiện

Public parameters - là những giá trị cả AliceBob đều biết, bao gồm:

  • Số nguyên tố pp

  • Generator gg của Fp\mathbb F_p

  • Giá trị gsg^s, với giả định độ khó của log rời rạc (discrete logarithm problem): biết gsg^s nhưng không thể suy ra ss

  • Một hàm Hash mật mã (Cryptographic Hash) HH, như SHA256 chẳng hạn.

Bước 1 - Tạo Commitment

  • Alice chọn một số ngẫu nhiên rr

  • Tính giá trị commitment C=grmodpC=g^r \mod p

  • Alice gửi CC cho Bob

Bước 2 - Tạo Challenge

  • Alice tự sinh ra một challenge bằng cách tính c=H(C,[public parameters])c = H(C, \text{[public parameters]})

  • Hàm HH có thể dùng hàm SHA256SHA256 hoặc động như một random oracle - bảo đảm tính không thể đoán trước

  • Các public parameters có thể đưa thêm vào tùy ý, bao gồm p,g,gsp,g,g^s

Bước 3 - Tạo Response

  • Alice tính response r=r+c.smod(p1)r^{\prime} = r + c.s \mod (p-1)

  • Alice gửi rr'cho Bob

Bước 4 - Verify

Lúc này Bob có các thông tin:

  • p,g,gsp,g,g^s - public parameters

  • C,rC,r' - nhận từ Alice

  • cc - Bob có thể tự tính được từ CC

Và sẽ cần verify: gr=C.(gs)cmodpg^{r^{\prime}} = C.(g^s)^c \mod p

Tại sao mod(p1)\mod (p-1) khi tính rr'?

Theo định lý Fermat Nhỏ: Nếu pp là số nguyên tố thì gp11(modp)g^{p-1} \equiv 1 (\mod p).

Giả sử s=(p1).k+ms = (p-1).k + m, ta có: gx=g(p1).k+m=gk(p1)gm=gm(modp)g^x = g^{(p-1).k + m} = g^{k(p-1)}g^m = g^m (\mod p)

Như vậy: gr+c.smod(p1)=gr+c.s(modp)g^{r+c.s \mod (p-1)} = g^{r+c.s} (\mod p)

Sự hợp lý của bước Verify

Ta có gr=gc.s+rmod(p1)=gc.s+r=(gs)c.gr=C.(gs)cmodpg^{r^{\prime}} = g^{c.s+r \mod (p-1)} = g^{c.s+r} = (g^s)^c.g^r = C.(g^s)^c \mod p

Comments

0/300

Leave name/email blank to comment anonymously

No comments yet. Be the first to comment!