Zero-Knowledge-Proofs
有沒有類似“計算證明”的東西?
有什麼加密方法
Proof Of Computation
嗎?如果我在不受信任的硬體(遠端伺服器)上執行我的程序,一段時間後我想驗證遠端機器沒有篡改我的程序並成功執行它所需的時間(並且結果/輸出是正確的),怎麼能我驗證?
有
Zero knowledge proof
嗎?另外我想檢查遠端伺服器是否在一段時間內處於活動狀態(線上),這可以通過計算證明來完成嗎?(就像伺服器需要繼續執行我的自定義程序一段時間,當我回來檢查它會給我要求
mathematical proofs
使用它我可以驗證伺服器在那段時間處於活動狀態)
是的,這可以使用 zk-SNARKS 和 zk-STARKS 等方法實現。Vitalik Buterin 寫了一系列很好的部落格,概述了這些想法。連結的部落格以可驗證的斐波那契遞歸計算為例;PLONK上的部落格描述瞭如何對更一般的計算進行編碼。
ZoKrates工具包提供了一種使用 zk-SNARKS 創建計算證明的可行方法。
您可以使用稍微不同的方法,而不是要求證明。您可以發送同態加密的有效載荷並要求伺服器按照事先約定的同態執行它。在伺服器計算出答案後,您可以將其取回並對其進行解密。
如果您不想自己驗證整個伺服器解決方案,您可以在有效負載中隨機插入一些虛擬欄位(例如要添加的一些整數)并快速驗證伺服器是否正確計算它。伺服器永遠不會看到明文,因此它不能通過執行不同的計算來作弊,否則您可以通過查看虛擬有效負載結果快速找出。
這種技術的局限性幾乎就是同態加密的局限性。