Functional Commitment

& its Applications

NSLab Final by 王褕立 b11902030

  • 動機
  • Functional Commitment 簡介
  • FC 應用遇到的困難
  • FC 的其他應用 —— Neural Network
  • 個人感想

Outline

動機

From Lootbox to FC

Loot Box:

用密碼學保證抽獎函數的公平性

  • 不能公開函數 \(f(x)\)
  • 證明 \(f(x) = y'\) 的機率
  • 要能在合理時間內驗證

動機

轉換為:

  • 給一個 \(F_p \; (p > 2) \) 下的函數 \(f\)
  • 不能公開函數 \(f(x)\)
  • 給定 \(x\),證明 \(f(x) = y\) (WHP)
  • 要能在合理時間內驗證

 

\(\Rightarrow\) Functional Commitment!

動機

FC Introduction

From functions to (zk-)SNARK

先假裝所有函數都可以變成 \(F_p\) 底下的算術函數

流程:

  • 給定函數 \(f\) 和輸入 \(x\)
  • Prover 生成 \(y = f(x)\) 以及證明 \(\pi\)
  • Verifier 可以用 \(\pi\) 驗證 \(y = f(x)\)

特別的,我們希望用 zk-SNARK 這個 scheme 保證:

  • Prove / Verify 很快且 proof 不會太長
  • 驗證的過程是 non-interactive 的
  • 可以保證 ZK

Settings

例子:\(x = (a, b, c), f(a, b, c) = abc\)

Arithmetic Circuit

\(a\)

\(b\)

\(c\)

\(\times\)

\(\times\)

\( = y\)

例子:\(x = (a, b, c), f(a, b, c) = abc\)

寫成 \(Ax \odot Bx = Cx\) 的型式

R1CS

\(a\)

\(b\)

\(c\)

\(\times\)

\(\times\)

\( = y\)

\( = u\)

\(\begin{bmatrix}1 & 0 & 0 & 0 & 0 \end{bmatrix} x' \odot \begin{bmatrix}0 & 1 & 0 & 0 & 0 \end{bmatrix} x' = \begin{bmatrix}0 & 0 & 0 & 1 & 0 \end{bmatrix} x'\)

\(x' = \begin{bmatrix} a \\ b \\ c \\ u \\ y \end{bmatrix}\)

\(\begin{bmatrix}0 & 0 & 0 & 1 & 0 \end{bmatrix} x' \odot \begin{bmatrix}0 & 0 & 1 & 0 & 0 \end{bmatrix} x' = \begin{bmatrix}0 & 0 & 0 & 0 & 1 \end{bmatrix} x'\)

例子:\(x = (a, b, c), f(a, b, c) = abc\)

把 \(A, B, C\) 的 column 換成多項式????

R1CS to QAP

\(\begin{bmatrix}1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 \end{bmatrix} x' \odot \begin{bmatrix} 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 \end{bmatrix} x' = \begin{bmatrix}0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 1 \end{bmatrix} x'\)

\(x' = \begin{bmatrix} a \\ b \\ c \\ u \\ y \end{bmatrix}\)

\(A_p^T(z) = \begin{bmatrix} 2 - z \\ 0 \\ 0 \\ z - 1 \\ 0  \end{bmatrix}\)

\(B_p^T(z) = \begin{bmatrix} 0 \\ 2 - z \\ z - 1 \\ 0 \\ 0  \end{bmatrix}\)

\(C_p^T(z) = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 2 - z \\ z - 1  \end{bmatrix}\)

例子:\(x = (a, b, c), f(a, b, c) = abc\)

QAP

\(x' = \begin{bmatrix} a \\ b \\ c \\ u \\ y \end{bmatrix}\)

\(A_p^T(z) = \begin{bmatrix} 2 - z \\ 0 \\ 0 \\ z - 1 \\ 0  \end{bmatrix}\)

\(B_p^T(z) = \begin{bmatrix} 0 \\ 2 - z \\ z - 1 \\ 0 \\ 0  \end{bmatrix}\)

\(C_p^T(z) = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 2 - z \\ z - 1  \end{bmatrix}\)

\(A_p x' \cdot B_p x' - C_p x' \equiv 0 \pmod{\prod_{i = 1}^{n} (z - i)}\)

這樣 WHP 兩邊相等 by Schwartz–Zippel lemma

\(A_p x' \cdot B_p x' - C_p x' \equiv 0 \pmod{\prod_{i = 1}^{n} (z - i)}\)

問題變成:

  • Prover 有整個 \(x'\)
  • Verifier 只有 \(x\)(\(x'\) 的前綴)
  • 有三坨 + 一個 Polynomial \(A_p, B_p, C_p, \prod (z - i)\)

可以用 神祕密碼學方法 做到!

Idea:把 polynomial 移到 elliptic curve 上利用 descrete log 的難度做到 ZK,用 pairing 處理兩者相乘

Commit & ZK proof

Loot Box 的抽獎函數:

  • 轉成 Arithmetic Circuit
  • 轉成 R1CS、QAP
  • 用 KZG 等方式達到 zk-SNARK
  • 完成……?

才沒有!

Recap

FC 應用的困難

From theory to application

Bit operations

  • ex. SHA256
  • 不可以 mod 2!

Code \(\rightarrow\) Arithmetic Function

  • 不能有 syscall / file read
  • 除法、浮點數、變數數量的複雜度

對函數的假設

  • 可能離 \(F_p\) 很遠
  • 遊戲廠商不能講

應用上的困難

FC 其他應用

FC applications on NN

Basically see CNN as a function

  • Circuit from FFT, ZK w/ GKR protocol
  • Represent real numbers with scaled integers
  • Decent accuracy w/ reasonable verify time

與 Loot Box 不同:

  • 可以 Approximate 並接受 error

 

(感謝仲楷分享這篇)

應用:zkCNN

  • 其實不是 Functional Commitment
  • 利用 Homomorphic encryption 讓 server 不知道 client 傳了什麼
  • 照常 train,最後換成 approximation
    • 所以又逃掉了 Floating point 問題

 

(感謝朗軒學長分享這篇)

  • 好希望對函數可以有好的假設 qwq
    • 有想過可不可以用 state machine 和
      Markov chain 來 model 但是貌似不行?

小結

個人心得

Yapping

  • 感覺要像 RSA 一樣可以用還有好遠
  • 逃到密碼學 Lab 但還是遇到 NTT / FFT
  • 學習的時候不用一直線推到底
  • 看不懂的東西可以先接受然後當 Oracle 不求甚解
    • Blockchain, Tate pairing 之類
    • 還是要檢查一下使用條件和複雜度之類
  • 很遺憾的我學 Functional Commitment 的博客倒了
    • 還沒有 Web Archive,哭了

結論 & 心得

  • https://eprint.iacr.org/2022/1368
  • https://eprint.iacr.org/2016/260.pdf
  • https://eprint.iacr.org/2021/673
  • https://ieeexplore.ieee.org/document/10411911
  • zk-SNARK 學習資源

Reference

Functional Commitment & its Applications

By FHVirus

Functional Commitment & its Applications

  • 11