iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0

大多數人們常見的密碼學工具,如簽章、雜湊、加解密等,都有非常固定的設計與特定的用途。

「說是常見,但密碼學工具在我們生活中還蠻隱形的,大部分的使用者介面不太會溝通密碼學的細節,或是溝通很隱晦。通訊軟體可能會提到端到端加密,瀏覽器需要特別找才能知道憑證或加密等細節」特務 K 突然發覺「就像特務的工作一樣神秘」

零知識證明和其他密碼學工具不一樣,是可以寫程式去決定用途的。

著名的 Circom 是比較早期能撰寫零知識證明應用的程式語言。下面是一個乘法的例子。

pragma circom 2.0.0;

/*This circuit template checks that c is the multiplication of a and b.*/  

template Multiplier2 () {  

   // Declaration of signals.  
   signal input a;  
   signal input b;  
   signal output c;  

   // Constraints.  
   c <== a * b;  
}

component main = Multiplier2();

這個程式編譯之後,會給證明方一份證明程式,以及一把公開的證明金鑰。另外,會給驗證方一把也是公開的驗證金鑰。

證明方執行證明程式,並輸入參數 a 和 b ,程式會自動算出 c ,並且用證明金鑰產出證明。

驗證方會用驗證金鑰驗證這個證明。

這段驗證程式其實沒什麼應用價值。由於目前這段範例程式沒有指定哪些值是公開值,因此所有的 a, b, c 會被視為計算的中間值,不會給驗證方。驗證方只知道證明方計算了一個合理的乘法,但到底什麼乘了什麼,乘積是什麼則不得而知。

「比較有應用意義的程式,我們之後可以來看看龍捲風現金」小雨說。

樂高積木本身:抽象的數學硬體

「為什麼這個密碼學工具是能夠寫程式去客製化應用邏輯呢?」特務 K 問。

程式是一種和機器溝通的語言,後面的機器是誰呢?

「你又怎麼用程式語言和你的筆電溝通的?」小雨問。

特務 K 還真沒想過這種問題。

程式語言會被編譯為低階的操作碼。操作碼最後被 CPU 逐步執行。但 CPU 之所以能執行,是因為電子元件用最基本的邏輯閘,像 XOR 和 AND 這些,搭成更複雜的數位電路與運算單元。

而在零知識證明裡面,最底層的密碼學提供了最基礎的限制式。以 Circom 語言背後支援的密碼學系統來說,他提供兩種限制式:

  • 加法限制式 a + b === c
  • 乘法限制式 a * b === c

上面的 a, b, c 是變數,人們可以決定他們是否是要公開的值,或是要隱藏的計算中間值。

有了加法和乘法的限制式,他們就像數位邏輯閘一樣,能夠拼成任意想要的運算。

我們好像有了一種用加法和乘法形成的電子迴路,稱作「算數迴路(Arithematic Circuit)」。

「這背後當然沒有「電的部分」,那些限制式只是由數學導出,實體電腦最後計算證明和驗證的過程只是整數的加減乘除而已」小雨說。

Circom 語言,讓開發者可以搭建算數迴路。

程式碼裡面的 <== 符號,對證明、驗證雙方有不一樣的意思。證明方的程式會把 a * b 的結果賦值予 c 。驗證方那邊,他的驗證金鑰其實是由迴路導出來的,驗證金鑰會去檢驗 a * b 是否真的等於 c 。

電腦是什麼

「把點對點網路抽象出來的電腦,部署其上的程式稱為『合約』」特務 K 略一沉吟「在密碼學上抽象出來的程式,稱為『迴路』」

「迴路本身仍是一種低階的硬體」小雨說

「咦!這怎麼說呢?這些看不見摸不著的東西,怎麼說誰是軟的誰是硬的?」特務 K 問。

算數迴路是固定的運算路徑,雖然中間允許分叉,但在執行階段,也就是要證明的時候,就只能照著固定的分支跑。所有的中間變數一但固定了,就沒辦法改了。你也沒辦法寫無窮迴圈。

要變成軟體的話,得先在硬體層做出一個虛擬機,定義一組操作碼。也要做出類似記憶體的東西。

當我們能把程式餵到迴路做出來的硬體裡執行,那就比較能稱得上軟體了。

這是為什麼近年來,許多以驗算壓縮為目標的專案,實作出各式各樣的 zkVM (基於零知識證明的虛擬機,但沒有零知識性質)。這是因為在區塊鏈上需要接近軟體的合約應用。

但以隱私為目標的專案,則為了效能,大多使用硬體般的做法,用固定的迴路。


上一篇
能使出相信我之術的電腦
系列文
那個有好多好多節點的電腦調查報告20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言