国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

零知識證明學習(三)—— 非交互式零知識證明(zkSNARKs)

這篇具有很好參考價值的文章主要介紹了零知識證明學習(三)—— 非交互式零知識證明(zkSNARKs)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

非交互式零知識證明

本節(jié)主要介紹一種新的零知識證明- z k S N A R K zkSNARK zkSNARK z k S N A R K : z e r o ? k n o w l e d g e S u c c i n c t N o n ? I n t e r a c t i v e A r g u m e n t s o f K n o w l e d g e zkSNARK:zero-knowledge Succinct Non-Interactive Arguments of Knowledge zkSNARKzero?knowledgeSuccinctNon?InteractiveArgumentsofKnowledge。

背景

z k S N A R K zkSNARK zkSNARK是零知識證明中最經(jīng)典的加密算法體系。目前已經(jīng)被應(yīng)用在很多地方,特別是在區(qū)塊鏈領(lǐng)域,包括實際生活中隱私保護相關(guān)的應(yīng)用。

Z e r o ? K n o w l e d g e Zero-Knowledge Zero?Knowledge: 零知識證明體系里有兩個角色,一個是證明者(Prover), 一個是驗證者(Verifier)。舉個例子,比特幣創(chuàng)始人中本聰身份不明,之前傳出過很多人聲稱自己是中本聰最后都不了了之。那么一個人如何證明自己是中本聰呢?因為大家知道中本聰錢包的地址。因此他只需要用這個錢包的私鑰對這句話簽名 “我是XXX,我其實就是中本聰"。然后其他人(Verifier) 都可以用中本聰錢包的公鑰對這個簽名進行驗證。這個就是一個零知識證明。首先只有私鑰持有方的簽名才能通過驗證,其次這個簽名沒有泄漏私鑰的任何信息,錢包不會被其他人盜用。因此零知識證明解決了兩個問題,一個是信任問題,一個是隱私問題。

S u c c i n c t Succinct Succinct:是指對于一個很復(fù)雜的問題,驗證者可能需要進行很長時間的計算才能提供出相應(yīng)的證明,但是我們希望證明的大小不要太大 (比如實際應(yīng)用中只有幾十 k b kb kb),同時驗證者只需要很少的時間(比如微秒級別的時間) 就能夠驗證計算是否正確。

N o n ? I n t e r a c t i v e Non-Interactive Non?Interactive:是指在證明的過程中雙方不需要互相交換信息。有一些算法體系需要證明者和驗證者之間互相對話幾次,交換信息。這對于實際應(yīng)用就很不方便,增加了系統(tǒng)特別是網(wǎng)絡(luò)通訊的復(fù)雜度。因此最好的情況是證明者一次性地把證明發(fā)送給驗證者,驗證者直接驗證即可。

A r g u m e n t o f K n o w l e d g e Argument\quad of \quad Knowledge ArgumentofKnowledge:指的是證明者只有知道問題的答案才可能提供證明。這個比較繞口,另一個解釋就是證明者造假成功的概率可以忽略不計。這里還有一個類似的概念 Proof of Knowledge。它們之間是有區(qū)別的。對于Argument來說,證明者的計算能力有限,也就是多項式的算力,而Proof of Knowledge則對證明者計算能力沒有要求。比如一個驗證者是從未來穿越回來,帶著最先進的量子計算機,那么對于Proof of Knolwege的系統(tǒng),他仍然沒法造假。但是對于Argument of Knowledge的系統(tǒng)則有可能。簡單的說就是:proof(證明)和argument(論證)在零知識證明里,是有區(qū)別的,在proof system中,即便是計算能力無限的prover也沒法欺騙verifier去相信一個錯誤的陳述為真(統(tǒng)計可靠性),而在argument system中,只有多項式時間計算能力的沒法欺騙(計算可靠性),假設(shè)能破解橢圓曲線離散對數(shù)問題,那么可能就不再安全。

多項式知識的證明(Proving Knowledge of a Polynomial)

我們從一個證明多項式知識的問題開始,然后使用一般方法。我們還會發(fā)現(xiàn)多項式的其他性質(zhì)。

到目前為止,問題集中在一個薄弱的證明概念上,各方必須相互信任。例如,證明者不需要知道多項式,他可以使用任何其他可用的方法來得出正確的結(jié)果。而且,如果驗證者多項式求值的范圍并不大,她可能有概率會猜到一個數(shù),這個概率是無法忽視的。接下來我們來處理這個缺陷,但首先要清楚的分析多項式的性質(zhì)。一個多項式表達形式如下(n階多項式):
c n x n + . . . + c 1 x 1 + c 0 x 0 c_nx^n+...+c_1x^1+c_0x^0 cn?xn+...+c1?x1+c0?x0
如果證明者或者驗證者知道是1階多項式( c 1 x 1 + c 0 c_1x^1+c_0 c1?x1+c0?),那意味著他們知道該多項式系統(tǒng)為 c 1 , c 0 c_1,c_0 c1?,c0?,而且系數(shù)可能為任意值。代數(shù)基本定理指出,任何多項式都可以分解成線性多項式(即,1階多項式代表一條直線),只要它是可解的。因此,我們可以將任何有效多項式表示為線性多項式的乘積:
( x ? a 0 ) ( x ? a 1 ) . . . ( x ? a n ) = 0 (x-a_0)(x-a_1)...(x-a_n)=0 (x?a0?)(x?a1?)...(x?an?)=0
從上式看出一個多項式可以由多個1階多項式組成。例如多項式 x 3 ? 3 x 2 + 2 x x^3-3x^2+2x x3?3x2+2x分解為 ( x ? 0 ) ( x ? 1 ) ( x ? 2 ) (x-0)(x-1)(x-2) (x?0)(x?1)(x?2)。從分解的多項式可以明顯的看出解為 0 , 1 , 2 0,1,2 0,1,2,你可以很容易地在多項式的任意一種形式上檢查這個解,但是分解形式在表面上有所有以上的解(也稱為根)。

假設(shè)證明者聲明,他知道一個3次多項式的根是1和2,這意味著他的多項式具有這種形式: ( x ? 1 ) ( x ? 2 ) . . . (x-1)(x-2)... (x?1)(x?2)...,換句話說, ( x ? 1 ) (x-1) (x?1) ( x ? 2 ) (x-2) (x?2)可以看作多項式 x 3 ? 3 x 2 + 2 x x^3-3x^2+2x x3?3x2+2x的余子式。因此,如果證明者想要證明他聲明的多項式有這些根,但又不想揭露多項式本身,他需要證明他的多項式 p ( x ) p(x) p(x)是這些余子式 t ( x ) = ( x ? 1 ) ( x ? 2 ) t(x)=(x-1)(x-2) t(x)=(x?1)(x?2)的乘積,所以存在任意多項式 h ( x ) h(x) h(x)有以下形式:
p ( x ) = t ( x ) h ( x ) p(x) = t(x)h(x) p(x)=t(x)h(x)
因此,多項式多項式 p ( x ) p(x) p(x)是由多項式 t ( x ) t(x) t(x)和多項式 h ( x ) h(x) h(x)乘積等到,多項式 p ( x ) p(x) p(x)包含多項式 t ( x ) t(x) t(x)

如何得到多項式 h ( x ) h(x) h(x),這里我們很自然想到 h ( x ) = p ( x ) t ( x ) h(x)=\frac{p(x)}{t(x)} h(x)=t(x)p(x)?,如果證明者不能找到多項式 h ( x ) h(x) h(x),這意味著多項式 p ( x ) p(x) p(x)并沒有多項式 t ( x ) t(x) t(x)余子式,這也以為多項式除法有余數(shù)。這里舉個小例子: p ( x ) = x 3 ? 3 x 2 + 2 x p(x)=x^3-3x^2+2x p(x)=x3?3x2+2x, t ( x ) = ( x ? 1 ) ( x ? 2 ) = x 2 ? 3 x + 2 t(x)=(x-1)(x-2)=x^2-3x+2 t(x)=(x?1)(x?2)=x2?3x+2,這里很容易得到 h ( x ) = x h(x)=x h(x)=x

證明者和驗證者具體驗證協(xié)議如下:

  • 驗證者隨機選取一個值 r r r,計算 t = t ( r ) t=t(r) t=t(r),并把 r r r發(fā)送給證明者
  • 證明者計算 h ( x ) = p ( x ) t ( x ) h(x)=\frac{p(x)}{t(x)} h(x)=t(x)p(x)?,將 p ( r ) p(r) p(r) h ( r ) h(r) h(r)值發(fā)送給驗證者
  • 驗證者檢查 p = t × h p=t\times h p=t×h,如果多項式相等,意味著多項式 p ( x ) p(x) p(x) t ( x ) t(x) t(x)余子式

這里還需要介紹一種情況,如果證明者使用不同的 p ′ ( x ) p\prime (x) p(x),它沒有必要的代數(shù)余子式,,例如: p ′ ( x ) = 2 x 3 ? 3 x 2 + 2 x p\prime (x)=2x^3-3x^2+2x p(x)=2x3?3x2+2x,這里我們可以得到 p ′ ( x ) = t ( x ) × ( 2 x + 3 ) + 7 x ? 6 p\prime (x)=t(x)\times (2x+3) +7x-6 p(x)=t(x)×(2x+3)+7x?6。因此證明者整除將會有余數(shù),所以我們將式子 p ′ ( x ) = t ( x ) × ( 2 x + 3 ) + 7 x ? 6 p\prime (x)=t(x)\times (2x+3) +7x-6 p(x)=t(x)×(2x+3)+7x?6整除 t ( x ) t(x) t(x)得到 h ( x ) = 2 x + 3 + 7 x ? 6 t ( x ) h(x)=2x+3+\frac{7x-6}{t(x)} h(x)=2x+3+t(x)7x?6?。因為x是由驗證者隨機選擇的,有一個低概率概率余數(shù) 7 x ? 6 7x-6 7x?6 t ( x ) t(x) t(x)整除,如果驗證者檢查 p ( x ) , h ( x ) p(x),h(x) p(x),h(x)必須是整數(shù),這樣的證明將被拒絕。但是,該檢查要求多項式系數(shù)也是整數(shù),這對協(xié)議造成了很大的限制。因此,這就是引入密碼原語的原因,這使得這種除法不可能實現(xiàn),即使原始的計算結(jié)果碰巧是可除的。

問題(issues)

  • 證明者可能不知道聲明的多項式 p ( x ) p(x) p(x),他可以計算 t = t ( r ) t=t(r) t=t(r),并選擇一個隨機數(shù) h h h,計算 p = t × h p=t \times h p=t×h,驗證者接收到值是正確的。
  • 證明者知道隨機點 x = r x=r x=r,他能構(gòu)造任意多項式在 r r r處有一個共享點與 t ( r ) × h ( r ) t(r) \times h(r) t(r)×h(r)。
  • 在初始情況下,證明者聲稱知道一個特定次數(shù)的多項式,在當前的協(xié)議中沒有階數(shù)的強調(diào)。因此,證明者可以利用一個滿足余子式檢查的高次多項式進行欺騙。

這里說明一下,零知識證明的研究方向,本文主要一環(huán)扣一環(huán)的講解,希望有興趣的朋友能耐心讀下去。文章來源地址http://www.zghlxwxcb.cn/news/detail-806665.html

到了這里,關(guān)于零知識證明學習(三)—— 非交互式零知識證明(zkSNARKs)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Azure - 機器學習:使用 Apache Spark 進行交互式數(shù)據(jù)整理

    Azure - 機器學習:使用 Apache Spark 進行交互式數(shù)據(jù)整理

    關(guān)注TechLead,分享AI全維度知識。作者擁有10+年互聯(lián)網(wǎng)服務(wù)架構(gòu)、AI產(chǎn)品研發(fā)經(jīng)驗、團隊管理經(jīng)驗,同濟本復(fù)旦碩,復(fù)旦機器人智能實驗室成員,阿里云認證的資深架構(gòu)師,項目管理專業(yè)人士,上億營收AI產(chǎn)品研發(fā)負責人。 數(shù)據(jù)整理已經(jīng)成為機器學習項目中最重要的步驟之一。

    2024年02月08日
    瀏覽(28)
  • 用 ChatGPT 嘗試 JavaScript 交互式學習體驗,有用但不完美

    用 ChatGPT 嘗試 JavaScript 交互式學習體驗,有用但不完美

    很好,但還不能取代專家導(dǎo)師,有時還會犯錯! ChatGPT 教小狗編程( Midjourney 創(chuàng)作) GPT-4剛剛發(fā)布,相較于GPT-3.5,它有顯著的增強功能。其中之一是它在更長時間的交互和更大的提示下,能夠更好地保持連貫性。 多年來,我一直致力于建立前端教學網(wǎng)站,為JavaScript開發(fā)人員

    2024年02月02日
    瀏覽(25)
  • Interactive Linear Algebra:免費的交互式線性代數(shù)學習教程

    Interactive Linear Algebra:免費的交互式線性代數(shù)學習教程

    本文介紹一個學習線性代數(shù)的網(wǎng)站,該網(wǎng)站通過將線性代數(shù)中的數(shù)學規(guī)則可視化,更直觀的展示線性代數(shù)的運算過程。該網(wǎng)站可以幫助我們更快更高效的學習線性代數(shù)。如果有考研的同學或者覺得學習線性代數(shù)很枯燥或者很困難的同學,可以了解該網(wǎng)站,促進高效學習和理解

    2024年02月13日
    瀏覽(28)
  • 交互式shell與非交互式shell,反彈shell

    交互shell就是shell等待你的輸入,并且立即執(zhí)行你提交的命令。 這種模式被稱作交互式是因為shell與用戶進行交互。 這種模式也是大多數(shù)用戶非常熟悉的:登錄、執(zhí)行一些命令、簽退。當簽退后,shell也終止了。 需要進行信息交互,例如輸入某個信息 會返回信息 你需要對其輸

    2024年02月02日
    瀏覽(28)
  • Pyspark交互式編程

    Pyspark交互式編程 有該數(shù)據(jù)集Data01.txt 該數(shù)據(jù)集包含了某大學計算機系的成績,數(shù)據(jù)格式如下所示: 根據(jù)給定的數(shù)據(jù)集,在pyspark中通過編程來完成以下內(nèi)容: 該系總共有多少學生; (提前啟動好pyspark) 該系共開設(shè)了多少門課程; Tom同學的總成績平均分是多少; 求每名同學的

    2023年04月08日
    瀏覽(33)
  • 交互式shell

    交互式shell

    交互式模式就是shell等待用戶的輸入,并且執(zhí)行用戶提交的命令。這種模式被稱作交互式是因為shell與用戶進行交互。這種模式也是大多數(shù)用戶非常熟悉的:登錄、執(zhí)行一些命令、簽退。當用戶簽退后,shell也終止了。 shell也可以運行在另外一種模式:非交互式模式。在這種模

    2024年02月02日
    瀏覽(22)
  • 構(gòu)建一個動態(tài)交互式圖表

    在Web開發(fā)中,JavaScript不僅是實現(xiàn)交互效果的關(guān)鍵,還可以用于構(gòu)建復(fù)雜的可視化組件,如動態(tài)交互式圖表。在本篇博客中,我將演示如何使用JavaScript和HTML5的Canvas元素來創(chuàng)建一個簡單的動態(tài)條形圖。 HTML結(jié)構(gòu) ?首先,我們需要一個HTML結(jié)構(gòu)來容納我們的圖表。 JavaScript實現(xiàn) 接下

    2024年02月20日
    瀏覽(31)
  • ZoKrates+Remix在線實現(xiàn)zkSNARK零知識證明

    ZoKrates+Remix在線實現(xiàn)zkSNARK零知識證明

    引言:在之前的文章里,我介紹了利用circom和snarkjs實現(xiàn)zkSNARK零知識證明,包含了snarkjs的使用步驟,并且我的畢業(yè)論文也全部采用snarkjs實現(xiàn)zkSNARK算法。 不過snarkjs里的signal信號的概念和高級語言變量之間的差別有點大,很多運算操作都不能直接進行,而且在執(zhí)行circom庫里的

    2024年02月06日
    瀏覽(26)
  • Android2:構(gòu)建交互式應(yīng)用

    Android2:構(gòu)建交互式應(yīng)用

    一。創(chuàng)建項目 項目名 Beer Adviser 二。更新布局 activity_main.xml 三。增加資源 strings.xml 四。響應(yīng)點擊 MainActivity.kt 知識點:

    2024年02月12日
    瀏覽(24)
  • Matlab交互式的局部放大圖

    Matlab交互式的局部放大圖

    在數(shù)據(jù)可視化中,很多時候需要對某一區(qū)間的數(shù)據(jù)進行局部放大,以獲得對比度更高的可視化效果。下面利用 MATLAB 語言實現(xiàn)一個交互式的局部放大圖繪制。 源碼自行下載: 鏈接:https://pan.baidu.com/s/1yItVSinh6vU4ImlbZW6Deg?pwd=9dyl 提取碼:9dyl 使用方法 : 1.將 BaseZoom.m 和 parameters

    2024年01月16日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包