JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

交互式證明與零知識證明

如果一個證明不是一份靜態的文件,而是一場對話呢——又如果你能說服別人某個敘述為真,卻完全不洩漏「為什麼為真」呢?只要在驗證器旁加上一位多疑的提問者,再加幾次擲硬幣,「能有效查驗」的觸及範圍就會一路爆炸性地擴張到 PSPACE。

從靜態證明到一場對話

回想 NP 是怎麼框定一個證明的。那裡有一位單一、沉默的驗證器——一台多項式時間的機器——以及一份一次性的證書:證明者交出一個字串(一個可滿足的賦值、一個團、一條路徑),驗證器讀它一次,然後接受或拒絕。這正是那幅拼圖的畫面:難以拼成,但一旦拼好就容易查驗。證明是一份說明自己的、已完成的文件,而驗證器從不反問一句。

交互式證明模型把這個體裁從一份文件改成了一場對話。想像一位全能但不可信的證明者,以及一位多疑、計算能力卻很有限的驗證器。驗證器不再收到一份完成的證書,而是分好幾個回合盤問證明者——送出挑戰、聽取回答、再送出依據那些回答而定的新挑戰——直到最後才決定接受或拒絕。驗證器依然是有效率的(多項式時間),但它獲得了兩種新本領:它能提問,而且關鍵在於,它能擲出證明者看不見的私下硬幣。

那些私下硬幣正是這個模型的靈魂——恰恰是上一篇的隨機化轉折,如今對準了證明者。一個想蒙混過一個假敘述的作弊證明者,並不知道驗證器的硬幣會怎麼落下,所以它無法事先替每一種可能的挑戰都準備好答案。我們要求兩條誠實的保證,對應 BPP 的雙邊誤差。完備性:如果敘述為真,誠實的證明者總能讓驗證器接受。健全性:如果敘述為假,那麼沒有任何證明者——無論多聰明或多強大——能讓驗證器以超過微小的機率接受,比方說至多百萬分之一,而這可靠重複對話把它壓下去。

一個小小的範例:蒙著眼分辨兩樣東西

這裡有一個讓整個機制豁然開朗的經典玩具協定。假設證明者宣稱兩個物件不同——比方說兩張表面上看起來相似、但證明者堅稱其實並非同一張圖喬裝而成的圖(這就是圖非同構問題,它並不已知屬於 NP——對「這兩張真的不同」並沒有一個明顯的短證書)。誠實的證明者不能只是交出一份文件;驗證器反而要用一場猜謎遊戲來測試這個宣稱。

  1. 在一道屏風後,驗證器私下擲硬幣,從兩張圖裡挑出一張,隨機打亂它的頂點標籤把它喬裝起來,然後把這個打亂後的結果拿給證明者看。
  2. 驗證器問:「這是從兩張原圖裡的哪一張變來的?」如果兩張圖真的不同,一位全能的證明者總能認出這個喬裝並答對。
  3. 但若證明者在說謊、兩張圖其實是同一張,那麼一個打亂後的副本不論從哪張圖出發看起來都一模一樣——證明者無從分辨,只能猜,而且只有一半的時候會猜對。
  4. 把這一回合重複,比方說,100 次。誠實的證明者每一回合都過關;說謊者每一回合都得用猜的,能撐過全部 100 回合的機率只有 (1/2)^100——小到天文數字。全數過關,驗證器就被說服了。

交互能觸及多遠?IP 等於 PSPACE

每一個能以這種方式證明的敘述——有效率的隨機化驗證器、全能的證明者、完備性與健全性——全收進一個叫做 IP(交互式多項式時間)的複雜度類別。它有多大?NP 免費地落在 IP 之內:證明者只要把舊的 NP 證書放進一則訊息送出,驗證器查驗它,根本不必真的提問。圖的例子已暗示 IP 觸及的範圍略超 NP。但真正的答案,作為 1990 年代的一個里程碑定理,令人屏息:IP 等於 PSPACE

讓這句話沉澱一下。PSPACE——來自上一階梯——是能用多項式記憶體解決的問題類別,而它裝著一些真正可畏的猛獸:判定誰贏得一場廣義棋局、求值一個帶著交替「存在一步……對所有回應……」的完全量化布林公式。這個定理說:一位卑微的、只會擲硬幣並問多項式那麼多個問題的驗證器,能被一位夠聰明的證明者說服相信任何這樣的事實——即便這位驗證器自己永遠算不出答案,而完整的靜態證明可能長到天文數字。對話為你換來的可查驗真理,遠遠多於一份一次性的文件所能換來的。

零知識:說服卻不洩漏

交互還解鎖了某種更奇怪、也更有用的東西。在一個普通的證明裡,說服你相信一個事實,通常意味著向你展示為什麼——把祕密交出來。一個零知識證明是一種交互式證明,它說服驗證器敘述為真,同時絲毫不洩漏其他任何東西——連背後理由的一丁點都不洩漏。你帶著「它為真」的篤定離開,卻並不因此更有能力向別人證明它、或重建那個祕密,跟對話開始前一樣。

標準的寓言是一個環形山洞,最深處有一道用密碼鎖住的魔法門。佩姬宣稱她知道密碼;她想說服維克多,卻不說出它。佩姬走進去,在維克多看不見的地方選了左邊或右邊那一條岔路。接著維克多走到岔口,喊出他要她從哪一邊走出來。如果佩姬真的知道密碼,她總能從被指定的那一邊出來——必要時就把門打開。如果她在虛張聲勢,她就只能從她進去的那一邊回來,所以維克多一旦喊出另一邊,她當場就被逮到,每一回合只有二分之一的機率能矇混過去。重複許多次:一個冒牌貨幾乎必然被揭穿,而維克多卻一個密碼的音節都沒聽到。

我們怎麼能確定維克多什麼都沒學到?那個優雅的檢驗叫模擬器:如果一位驗證器能完全靠自己、在沒有任何真正證明者的情況下,產生整場對話的一份逐字稿,那麼跟真正的證明者交談,並沒有教給它任何它無法自行偽造的東西。在山洞裡,維克多能自編一份假逐字稿,只要事先把他的挑戰和佩姬正確的出口都決定好——一份與真品難以區分、卻在手裡沒有密碼的情況下製造出來的錄影。由於真實對話的資訊量不多於那份自製的假貨,它便可被證明傳遞了零知識。

為什麼這是現代密碼學的基石

零知識證明不是一場客廳魔術;它們是承重的基礎建設。它們讓你能證明「我已年滿 18 歲」卻不洩漏生日,證明「這筆交易有效、我有這筆錢」卻不洩漏餘額,或證明「我解開了這道謎題」卻不洩漏解答。現代的隱私保護系統與區塊鏈,正是倚靠簡潔的零知識證明,好讓網路能廉價地驗證一個宣稱,而證明者保有祕密。在這裡,計算理論不是一個抽象概念——它正是讓這類保證有確切意義的東西。

但這裡埋著一個深刻的誠實,而它直接繞回 P 對 NP。幾乎整個密碼學都立足於一個單向函數的存在——一種正向容易計算、卻無從反推的運算,好比把兩個大質數相乘,相對於把它們的乘積再因數分解開來。問題在於:沒有人證明過任何這樣的函數存在。倘若結果是 P 等於 NP,那麼每一個答案可查驗的問題也都能被快速解出,單向函數就會崩塌,而現代密碼學基本上整套——密碼、安全通訊,以及上面那些零知識方案——都會瓦解。我們把數位門鎖建在一個我們堅定相信、卻還無法證明的困難之上。