📜 [專欄新文章] [ZKP 讀書會] Trust Token Browser API
✍️ Yuren Ju
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Trust Token API 是一個正在標準化的瀏覽器 API,主要的目的是在保護隱私的前提下提供跨站授權 (Cross-domain authorization) 的功能,以前如果需要跨站追蹤或授權通常都使用有隱私疑慮的 Cookies 機制,而 Trust Token 則是希望在保護隱私的前提下完成相同的功能。
會在 ZKP (Zero-knowledge proof) 讀書會研究 Trust Token 主要是這個 API 採用了零知識證明來保護隱私,這也是這次讀書會中少見跟區塊鏈無關的零知識證明應用。
問題
大家應該都有點了一個產品的網頁後,很快的就在 Facebook 或是 Google 上面看到相關的廣告。但是產品網頁並不是在 Facebook 上面,他怎麼會知道我看了這個產品的頁面?
通常這都是透過 Cookie 來做跨網站追蹤來記錄你在網路上的瀏覽行為。以 Facebook 為例。
當使用者登入 Facebook 之後,Facebook 會透過 Cookie 放一段識別碼在瀏覽器裡面,當使用者造訪了有安裝 Facebook SDK 來提供「讚」功能的網頁時,瀏覽器在載入 SDK 時會再度夾帶這個識別碼,此時 Facebook 就會知道你造訪了特定的網頁並且記錄下來了。如此一來再搭配其他不同管道的追蹤方式,Facebook 就可以建構出特定使用者在網路上瀏覽的軌跡,從你的瀏覽紀錄推敲喜好,餵給你 Facebook 最想給你看的廣告了。
不過跨站追蹤也不是只能用在廣告這樣的應用上,像是 CDN (Content Delivery Network) 也是一個應用場景。CDN 服務 Cloudflare 提供服務的同時會利用 Captcha 先來確定進入網站的是不是真人或是機器人。而他希望使用者如果是真人時下次造訪同時也是採用 Cloudflare 服務的網站不要再跳出 Captcha 驗證訊息。
雖然 Cloudflare 也需要跨站驗證的功能來完成他們的服務,但是相較於 Google 或 Facebook 來說他們是比較沒那麼想知道使用者的隱私。有沒有什麼辦法可以保護使用者隱私的狀況下還能完成跨站驗證呢?
這就是今天要講的新 API: Trust Token。
Trust Token API - The Chromium Projects
Trust Token / Privacy Pass 簡介
Trust Token 其實是由 Privacy Pass 延伸而來。Privacy Pass 就是由 Cloudflare 所開發的實驗性瀏覽器延伸套件實作一個驗證機制,可以在不透漏過多使用者隱私的前提下實作跨站驗證。而 Trust Token 則是標準化的 Privacy Pass,所以兩個運作機制類似,但是實作方式稍有不同。
先看一下 Privacy Pass 是如何使用。因為這是實驗性的瀏覽器延伸套件所以看起來有點陽春,不過大致上還是可以了解整個概念。
以 hCaptcha 跟 Cloudflare 的應用為例,使用者第一次進到由 Cloudflare 提供服務的網站時,網站會跳出一些人類才可以解答的問題比如說「挑出以下是汽車的圖片」。
當使用者答對問題後,Cloudflare 會回傳若干組 blind token,這些 blind token 還會需要經過 unblind 後才會變成真正可以使用的 token,這個過程為 issue token。如上圖所示假設使用者這次驗證拿到了 30 個 token,在每次造訪由 Cloudflare 服務的網站時就會用掉一個 token,這個步驟稱為 redeem token。
但這個機制最重要的地方在於 Cloudflare 並無法把 issue token 跟 redeem token 這兩個階段的使用者連結在一起,也就是說如果 Alice, Bob 跟 Chris 都曾經通過 Captcha 測試並且獲得了 Token,但是在後續瀏覽不同網站時把 token 兌換掉時,Clouldflare 並無法區分哪個 token 是來自 Bob,哪個 token 是來自 Alice,但是只要持有這種 token 就代表持有者已經通過了 Captcha 的挑戰證明為真人。
但這樣的機制要怎麼完成呢?以下我們會透過多個步驟的例子來解釋如何達成這個目的。不過在那之前我們要先講一下 Privacy Pass 所用到的零知識證明。
零知識證明 (Zero-knowledge proof)
零知識證明是一種方法在不揭露某個祕密的狀態下,證明他自己知道那個秘密。
Rahil Arora 在 stackexchange 上寫的比喻我覺得是相對好理解的,下面簡單的翻譯一下:
假設 Alice 有超能力可以幾秒內算出樹木上面有幾片樹葉,如何在不告訴 Bob 超能力是怎麼運作並且也不告訴 Bob 有多少片葉子的狀況下證明 Alice 有超能力?我們可以設計一個流程來證明這件事情。
Alice 先把眼睛閉起來,請 Bob 選擇拿掉樹上的一片葉子或不拿掉。當 Alice 睜開眼睛的時候,告訴 Bob 他有沒有拿掉葉子。如果一次正確的話確實有可能是 Alice 幸運猜到,但是如果這個過程連續很多次時 Alice 真的擁有數葉子的超能力的機率就愈來愈高。
而零知識證明的原理大致上就是這樣,你可以用一個流程來證明你知道某個秘密,即使你不真的揭露這個秘密到底是什麼,以上面的例子來說,這個秘密就是超能力運作的方式。
以上就是零知識證明的概念,不過要完成零知識證明有很多各式各樣的方式,今天我們要介紹的是 Trust Token 所使用的零知識證明:DLEQ。
DLEQ (Discrete Logarithm Equivalence Proof)
說明一下以下如果小寫的變數如 c, s 都是純量 (Scalar),如果是大寫如 G, H則是橢圓曲線上面的點 (Point),如果是 vG 則一樣是點,計算方式則是 G 連續相加 v 次,這跟一般的乘法不同,有興趣可以程式前沿的《橢圓曲線加密演算法》一文解釋得比較詳細。
DLEQ 有一個前提,在系統中的所有人都知道公開的 G 跟 H 兩個點,此時以下等式會成立:
假設 Peggy 擁有一個秘密 s 要向 Victor 證明他知道 s 為何,並且在這個過程中不揭露 s 真正的數值,此時 Victor 可以產生一個隨機數 c 傳送給 Peggy,而 Peggy 則會再產生一個隨機數 v 並且產生 r,並且附上 vG, vH, sG, sH:
r = v - cs
所以 Victor 會得到 r, sG, sH, vG, vH 再加上他已經知道的 G, H。這個時候如果 Victor 計算出以下兩個等式就代表 Peggy 知道 s 的真正數值:
vG = rG + c(sG)vH = rH + c(sH)
我們舉第二個等式作為例子化簡:
vH = rH + c(sH) // 把 r 展開成 v - csvH = (v - cs)H + c(sH) // (v - cs)H 展開成 vH - csHvH = vH - c(sH) + c(sH) // 正負 c(sH) 消掉vH = vH
這樣只有 Peggy 知道 s 的狀況下才能給出 r,所以這樣就可以證明 Peggy 確實知道 s。
從簡易到實際的情境
Privacy Pass 網站上透過了循序漸進的七種情境從最簡單的假設到最後面實際使用的情境來講解整個機制是怎麼運作的。本文也用相同的方式來解釋各種情境,不過前面的例子就會相對比較天真一點,就請大家一步步的往下看。
基本上整個過程是透過一種叫做 Blind Signature 的方式搭配上零知識證明完成的,以下參與的角色分為 Client 與 Server,並且都會有兩個階段 issue 與 redeem token。
Scenario 1
如果我們要設計一個這樣可以兌換 token 來確認身分的系統,其中有一個方法是透過橢圓曲線 (elliptic curve) 完成。Client 挑選一個在橢圓曲線上的點 T 並且傳送給 Server,Server 收到後透過一個只有 Server 知道的純量 (scalar) s 對 T 運算後得到 sT 並且回傳給 Client,這個產生 sT 的過程稱為 Sign Point,不過實際上運作的原理就是橢圓曲線上的連續加法運算。
SignPoint(T, s) => sT
等到 Client 需要兌換時只要把 T 跟 sT 給 Server,Server 可以收到 T 的時候再 Sign Point 一次看看是不是 sT 就知道是否曾經 issue 過這個 token。
Issue
以下的範例,左邊都是 Client, 右邊都是 Server。 -> 代表 Client 發送給 Server,反之亦然。
// Client 發送 T 給 Server, 然後得到 sT
T -> <- sT
Redeem
// Client 要 redeem token 時,傳出 T 與 sT
T, sT ->
問題:Linkability
因為 Server 在 issue 的時候已經知道了 T,所以基本上 Server 可以透過這項資訊可以把 issue 階段跟 redeem 階段的人連結起來進而知道 Client 的行為。
Scenario 2
要解決上面的問題,其中一個方法是透過 Blind Signature 達成。Client 不送出 T,而是先透過 BlindPoint 的方式產生 bT 跟 b,接下來再送給 Server bT。Server 收到 bT 之後,同樣的透過 Sign Point 的方式產生結果,不一樣的地方是情境 1 是用 T,而這邊則用 bT 來作 Sign Point,所以得出來的結果是 s(bT)。
Client:BlindPoint(T) => (bT, b)
Server:SignPoint(bT, s) => sbT
而 Blind Signature 跟 Sign Point 具備了交換律的特性,所以得到 s(bT) 後可以透過原本 Client 已知的 b 進行 Unblind:
UnblindPoint(sbT, b) => sT
這樣一來在 Redeem 的時候就可以送出 T, sT 給 Server 了,而且透過 SignPoint(T, s) 得出結果 sT’ 如果符合 Client 傳來的 sT 就代表確實 Server 曾經簽過這個被 blind 的點,同時因為 T 從來都沒有送到 Server 過,所以 Server 也無法將 issue 與 redeem 階段的 Client 連結在一起。
Issue
bT -> <- s(bT)
Redeem
T, sT ->
問題:Malleability
以上的流程其實也有另外一個大問題,因為有交換律的關係,當 Client 透過一個任意值 a 放入 BlindPoint 時產生的 a(sT) 就會等於 s(aT):
BlindPoint(sT) => a(sT), a// a(sT) === s(aT)
此時如果將 aT 跟 s(aT) 送給 Server Redeem,此時因為
SignPoint(aT, s) => s(aT)
所以就可以兌換了,這樣造成 Client 可以無限地用任意數值兌換 token。
Scenario 3
這次我們讓 Client 先選擇一個純數 t,並且透過一種單向的 hash 方式來產生一個在橢圓曲線上的點 T,並且在 redeem 階段時原本是送出 T, sT 改成送出 t, sT。
因為 redeem 要送出的是 t,上個情境時透過任意數 a 來產生 s(aT) 的方法就沒辦法用了,因為 t 跟 sT 兩個參數之間並不是單純的再透過一次 BlindPoint() 就可以得到,所以就沒辦法無限兌換了。
Issue
T = Hash(t) bT -> <- sbT
Redeem
t, sT ->
問題:Redemption hijacking
在這個例子裏面,Client 其實是沒有必要傳送 sT 的,因為 Server 僅需要 t 就可以計算出 sT,額外傳送 sT 可能會導致潛在的 Redemption hijacking 問題,如果在不安全的通道上傳輸 t, sT 就有可能這個 redemption 被劫持作為其他的用途。
不過在網站上沒講出實際上要怎麼利用這個問題,但是少傳一個可以計算出來的資料總是好的。Client 只要證明他知道 sT 就好,而這可以透過 HMAC (Hash-based Message Authentication Code) 達成。
Scenario 4
步驟跟前面都一樣,唯一不一樣的地方是 redeem 的時候原本是傳 t, sT,現在則改傳 t, M, HMAC(sT, M),如果再介紹 HMAC 篇幅會太大,這邊就不解釋了,但可以是作是一個標準的 salt 方式讓 Hash 出來的結果不容易受到暴力破解。
這樣的特性在這個情境用很適合,因為 Server 透過 t 就可以計算出 sT,透過公開傳遞的 M 可以輕易地驗證 client 端是否持有 sT。
Issue
T = Hash(t) bT -> <- sbT
Redeem
t, M, HMAC(sT, M) ->
問題:Tagging
這邊的問題在於 Server 可以在 issue 階段的時候用不一樣的 s1, s2, s3 等來發出不一樣的 sT’,這樣 Server 在 Redeem 階段就可以得知 client 是哪一個 s。所以 Server 需要證明自己每次都用同樣的 s 同時又不透漏 s 這個純亮。
要解決這個問題就需要用到前面我們講解的零知識證明 DLEQ 了。
Scenario 5
前面的 DLEQ 講解有提到,如果有 Peggy 有一個 s 秘密純量,我們可以透過 DLEQ 來證明 Peggy 知道 s,但是又不透漏 s 真正的數值,而在 Privacy Pass 的機制裡面,Server 需要證明自己每次都用 s,但是卻又不用揭露真正的數值。
在 Issue 階段 Client 做的事情還是一樣傳 bT 給 Server 端,但 Server 端的回應就不一樣了,這次 Server 會回傳 sbT 與一個 DLEQ 證明,證明自己正在用同一個 s。
首先根據 DLEQ 的假設,Server 會需要先公開一組 G, H 給所有的 Client。而在 Privacy Pass 的實作中則是公開了 G 給所有 Client,而 H 則改用 bT 代替。
回傳的時候 Server 要證明自己仍然使用同一個 s 發出 token,所以附上了一個 DLEQ 的證明 r = v - cs,Client 只要算出以下算式相等就可證明 Server 仍然用同一個 s (記住了 H 已經改用 bT 代替,此時 client 也有 sbT 也就是 sH):
vH = rH + c(sH) // H 換成 bTvbT = rbT + c(sbT) // 把 r 展開成 v - csvbT = (v - cs)bT + c(sbT) // (v - cs)bT 展開成 vbT - csbTvbT = vbT - c(sbT) + c(sbT) // 正負 c(sbT) 消掉vbT = vbT
這樣就可以證明 Server 依然用同一個 s。
Issue
T = Hash(t) bT -> <- sbT, DLEQ(bT:sbT == G:sG)
Redeem
t, M, HMAC(sT, M) ->
問題:only one redemption per issuance
到這邊基本上 Privacy Pass 的原理已經解釋得差不多了,不過這邊有個問題是一次只發一個 token 太少,應該要一次可以發多個 token。這邊我要跳過源文中提到的 Scenario 6 解釋最後的結果。
Scenario 7
由於一次僅產生一個 redeem token 太沒效率了,如果同時發很多次,每次都產生一個 proof 也不是非常有效率,而 DLEQ 有一個延伸的用法 “batch” 可以一次產生多個 token, 並且只有使用一個 Proof 就可以驗證所有 token 是否合法,這樣就可以大大的降低頻寬需求。
不過這邊我們就不贅述 Batch DLEQ 的原理了,文末我會提及一些比較有用的連結跟確切的源碼片段讓有興趣的人可以更快速的追蹤到源碼片段。
Issue
T1 = Hash(t1) T2 = Hash(t2)T3 = Hash(t3)b1T1 ->b2T2 ->b3T3 -> c1,c2,c3 = H(G,sG,b1T1,b2T2,b3T3,s(b1T1),s(b2T2),s(b3T3)) <- sb1T1 <- sb2T2 <- sb3T3 <- DLEQ(c1b1T1+c2b2T2+c3b3T3:s(c1b1T1+c2b2T2+c3b3T3) == G: sG)
Redeem
t1, M, HMAC(sT1, M) ->
結論
Privacy Token / Trust Token API 透過零知識證明的方式來建立了一個不需要透漏太多隱私也可以達成跟 cookie 相同效果的驗證方式,期待可以改變目前許多廣告巨頭透過 cookie 過分的追蹤使用者隱私的作法。
不過我在 Trust Token API Explainer 裡面看到這個協議裡面的延伸作法還可以夾帶 Metadata 進去,而協議制定的過程中其實廣告龍頭 Google 也參與其中,希望這份協議還是可以保持中立,盡可能地讓最後版本可以有效的在保護隱私的情況下完成 Cross-domain authorization 的功能。
參考資料
IETF Privacy Pass docs
Privacy Pass: The Protocol
Privacy Pass: Architectural Framework
Privacy Pass: HTTP API
Cloudflare
Supporting the latest version of the Privacy Pass Protocol (cloudflare.com)
Chinese: Cloudflare支持最新的Privacy Pass扩展_推动协议标准化
Other
Privacy Pass official website
Getting started with Trust Tokens (web.dev)
WICG Trust Token API Explainer
Non-interactive zero-knowledge (NIZK) proofs for the equality (EQ) of discrete logarithms (DL) (asecuritysite.com) 這個網站非常實用,列了很多零知識證明的源碼參考,但可惜的是 DLEQ 這個演算法講解有錯,讓我在理解演算法的時候撞牆很久。所以使用的時候請多加小心,源碼應該是可以參考的,解釋的話需要斟酌一下。
關鍵源碼
這邊我貼幾段覺得很有用的源碼。
privacy pass 提供的伺服器端產生 Proof 的源碼
privacy pass 提供的瀏覽器端產生 BlindPoint 的源碼
github dedis/kyber 產生 Proof 的源碼
[ZKP 讀書會] Trust Token Browser API was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有2部Youtube影片,追蹤數超過3萬的網紅MEeeep More,也在其Youtube影片中提到,TINY 吳凱俊 憑藉興趣打造玩具車王國,一步一步實踐夢想,堅持產品必須呈現真實面貌,渴望品牌能為別人帶來感動。 由十幾年前的Toyeast,至今日的TINY微影,創辦人Steve吳凱俊由大學時期已經開始從事玩具車買賣,畢業後亦成功做老闆,但他並非一早部署銳意創業,靠的只是偶然的機會,讀中學的時候...
「零知識證明應用」的推薦目錄:
- 關於零知識證明應用 在 Taipei Ethereum Meetup Facebook 的精選貼文
- 關於零知識證明應用 在 動區動趨 BlockTempo - 由社群而生的區塊鏈媒體 - Media for Blockchain Facebook 的最讚貼文
- 關於零知識證明應用 在 MEeeep More Youtube 的精選貼文
- 關於零知識證明應用 在 光引擎 Youtube 的最佳解答
- 關於零知識證明應用 在 [新聞] 零知識證明的抗量子協議以加強區塊鏈安全 - 批踢踢實業坊 的評價
- 關於零知識證明應用 在 零知识证明学习资源汇总 - GitHub 的評價
- 關於零知識證明應用 在 神奇的零知识证明!既能保守秘密,又让别人信你! - YouTube 的評價
- 關於零知識證明應用 在 web3 零知识证明What are zero-knowledge proofs? - Echo Blog 的評價
- 關於零知識證明應用 在 Blockore 區塊識集- 零知識證明是什麼?讓我們從歷史切入 的評價
零知識證明應用 在 動區動趨 BlockTempo - 由社群而生的區塊鏈媒體 - Media for Blockchain Facebook 的最讚貼文
【四大普華永道PwC|香港|穩定幣】
#韭菜編:四大,又是四大!這幾間會計、審計服務的龍頭老大近期也是動作頻頻,對區塊鏈、加密貨幣和穩定幣的熱請擋也擋不住啊(熱戀期的概念),普華永道(台灣叫「資誠」)看起來則是對穩定幣情有獨鍾呢~
訂閱動區LINE✅:https://pse.is/9ZYL9
>>四大會計師事務所安永(EY)宣布,已開發世界第一個能在以太坊上運行的零知識證明應用:https://pse.is/BYD5H
零知識證明應用 在 MEeeep More Youtube 的精選貼文
TINY 吳凱俊
憑藉興趣打造玩具車王國,一步一步實踐夢想,堅持產品必須呈現真實面貌,渴望品牌能為別人帶來感動。
由十幾年前的Toyeast,至今日的TINY微影,創辦人Steve吳凱俊由大學時期已經開始從事玩具車買賣,畢業後亦成功做老闆,但他並非一早部署銳意創業,靠的只是偶然的機會,讀中學的時候沒有思考過升上大學後要創業。Steve表示一次機緣巧合之下,在報章看到關於eBay的報導,E-zone說eBay是全球排名頭幾位的拍賣網站,於是他便嘗試上eBay尋找自己喜歡的玩具車品牌。他發現到在eBay能找到於香港有出售的玩具車,而且價格很便宜,比起在香港和日本購買現貨更划算,於是便學會了使用網上拍賣。當時是1998年,Steve在eBay上購買火柴盒玩具車來儲藏,在購買的過程中留意到其他玩具車的價錢,意識到在香港出售的玩具車也可以在eBay賣得很貴。當年作為學生的Steve在沒有收入的情況下,打算出售幾輛玩具車,再購入一輛較貴的玩具車,他因而在興趣中學會在網上拍賣、一買一賣的過程。
他從大學二年級開始,回校途中經過灣仔買車,放學後便放上eBay賣車,就如做兼職般,他形容自己為「半入行」。Steve畢業後,曾經應徵過一份工作,並面試過,但最後未能獲得該工作機會,他心想反正要工作,不如直接全職進行網上拍賣,於是他在家四年時間,每天買貨回來後在eBay出售,結果越賣越多,他的家就成為了辦公室,這是他最初創業的雛型。
受校長啟發,正式成立公司
Toyeast的雛型是Steve自己一手包辦入貨、物流、網頁更新、回覆顧客查詢、將貨物寄出等程序,不過一人的力量始終有限,後來在一個節目上才令他萌生招攬人才、擴充業務的鴻圖大計。Steve憶述當時有個由黃霑主持的節目名為《香港濃情》,有一集的嘉賓是當時香港大學首位華人校長黃麗松博士,他依稀記得節目大概講述黃校長的經歷及教學生涯,最後黃霑問黃校長身為香港最高學府的第一位華人校長,對時下大學生有何勉勵的說話,Steve清楚記得黃校長表示,希望大學生不要封閉自己、只顧賺錢,眼光應該放得更遠,聚焦社會,考慮自己在拚搏工作的同時,如何能貢獻社會。Steve由此開始思考自己獨力工作四年,有沒有辦法可以多做一點,並非說要交很多稅金,而是擴大生意,創造職位,給予年青人工作機會,並帶動電子商貿的發展。Steve對自己充滿信心,於是在家附近租下第一個辦公室,並聘請了第一位員工,公司的雛型由此正式成型。
人事管理是一門學問,同時也是一門藝術。作為一位未曾打工的老闆,要處理管理的工作,Steve形容要「邊做邊學」,在人事管理上最難忘的一件事是,他不知道當時租下的辦公室有清潔人員,同時亦無力僱用清潔公司,結果替公司同事編更表輪流負責公司的清潔工作,例如:拖地、抹地、打掃及例垃圾等。當時有一位有經驗的同事反映工作多年,亦不曾擔任清潔工作,令Steve反省
到原來亦非所有事都可由老闆決定,當時亦沒有考慮到同事是否願意,或者是否應該去做,這件事令Steve每次回想都覺得自己做錯。
另一件令Steve最深刻的事情是一位同事偷取公司的貨物。Steve一直以來的管理方式都比較親和,與同事之間並沒有隔膜,亦沒有區分老闆與員工的階級。當時公司有一名非常年青的同事,他在16歲時便加入公司,18歲時申請了第一張信用卡,到了19、20歲時因財務管理不善,因而欠下信用卡債務,還盜取公司的玩具車放上eBay拍賣圖利,以償還債務。此事後來被Steve發現,而令其更為驚訝的地方是,原來其他同事一早已知悉,只是沒有告訴他。
發展多元業務,開拓全新思維
Toyeast由當初的外來品牌玩具車生意,至發展自己的遙控玩具產品,一直走到今日的自家品牌TINY微影,Steve坦承這十幾年來走過一段漫漫長路,他認為自己並非專注地在走同一條路。在IPhone4、5的年代,他曾經開設一間電子公司,不能說是經營得非常成功,但當中認識了很多關於電子、流動商貿,及蘋果授權等領域的知識,並接觸了一些廠家,這有助於他之後將電子元素應用在產品之中,例如:以手提電話控制傳統遙控坦克車;製作香港場景的時候,以線路控制紅綠燈的閃動。在四年前,他又曾經開設花盆公司,因為綠色產品而認識了一班朋友,在他打造香港情懷系列的時候,亦很願意去觀賞及購買他的產品。據他總結所得,花盆、電子禮品及傳統玩具看似毫不相關,但其實三者亦可互補,並成為一個優勢。他形容做生意是一個Know-how的過程,構思好一個概念後便要考慮如何生產,然後再考慮如何出售及獲利。發展業務是一環扣一環的過程,每一個範疇都為他帶來全新的思維及客人。
Toyeast發展至今已接近十五個年頭,Steve將Toyeast累積得來的寶貴經驗,全力研發TINY系列的自家品牌,在別人眼中是成功的典範,而對於創辦人而言則是一個夢想,他形容這是很多香港人的「香港夢」,由於香港是一個很小的市場,傳統上大型品牌及大型廠商其實並不會為七百萬人製作特色情景、禮品及玩具。Steve稱火柴盒的消防車、警車已經推出三、四十年,但從沒有人生產警察局、消防局及香港街道的情景模型,令他大感惋惜。
小細節上花心思,讓玩家感受真實情懷
業務發展了十多年時間,Steve不斷思索欠缺了什麼,他考慮到大型廠商並不會為香港小市場特別生產,香港特色產品亦很難出口,因為無法牟利;而小型廠商往往不夠資源及經驗來生產,而且亦難以用六至七位數字的金額來投資開發香港系列的產品。Steve由此認為,該是時候實踐自己的夢想,建立一個能夠讓人感動的品牌,於是他與其團隊便開始構思及投資。他們遇過很多掙扎的時刻,不論是做文具還是玩具行業,都很容易在各方面被邊緣化,但他們知道要找到自己的定位,以創新作為中心,產品須具備高質素。Steve深信,作為產品開發者,只要多花心思及運用過往經驗在每一個小細節上,做好自己的產品,讓玩家能充分感受到自己的誠意及產品的情懷。
以郵局車(流動郵政車)為例,一百個人當中可能不足五個人知道,香港有一間流動郵政局,以服務較偏遠的地域,而該郵政車內部是經過改裝,放滿了一個個郵政櫃,而非一排排椅子。在開發過程中,有人提議不要太認真,無謂為幾十元一輛的車大費周章,索性內部放椅子的模型便可。從計算上來看,一百個人中可能只有兩個人知道郵局車內部並非椅子,因而放棄購買裝了椅子的郵局車,這樣來說他們已經滿足了大多數不了解郵局車的人,而僅僅失去了2%的客人。裝上郵政櫃的成本將會上升80%,而回本的時間亦增加180%,即是說原本賣100輛車便可回本,現時便要賣18000輛。不過Steve認為,照真實的車來製作模型能讓顧客知道郵政車原來經過特別改裝,內部放置了工作枱及郵政櫃,假如一百人之中有八十人由此增加了對香港的認識,他認為這樣的投資是非常值得的。故此,他懷著樂觀的心態投入生產,而事實亦證明很多香港人樂於支持具香港特色的產品。
對於自己的品牌發展,Steve擁有自己的見解,而對於香港企業的文化,他形容為比較封閉,比如日本的企業會用盡渠道及方法來做各式各樣的宣傳,而香港的企業則有多方面的憂慮,令營運範圍十分狹窄。Steve提及其中一個一拍即合的生意夥伴GoGoVAN,他形容為十分具前瞻性的企業,當他提出為GoGoVAN製作合金模型,並將其銷至香港一百間大大小小的百貨、零售店,甚至海陸空各個碼頭、機場、口岸、貨車站等,對方馬上答應,令他感受到對方的信任及雙方思維的契合。事實亦證明了GoGoVAN客貨車的成功,它在各個渠道都深入民心,很多顧客都願意花四十九元購買,而不會像其他宣傳品般用完即棄,GoGoVAN模型陪伴小朋友成長,對於此品牌建立了感情,Steve稱之為「入屋」。此外,模型車上有GoGoVAN的電話號碼及應用程式的資訊,能有助品牌做到全方位的行銷,Steve認為這種宣傳的發揮與突破是傳統的電視及報章廣告所無法比擬的。
TINY微影
網址:http://www.tiny.com.hk/zh_hk/
零知識證明應用 在 光引擎 Youtube 的最佳解答
光引擎樂團 http://www.facebook.com/LightEngineBand
首張迷你專輯 My Journey‧旅程 收錄歌曲
Q.E.D.:quod erat demonstrandum 故得證之意,宣示定理真實性的建立。
這是一首歌頌知識與真理的歌曲。
步入社會後,就會開始懷念起學生時代單純的美好。在純粹知識的世界裡,一切如此分明。長大後的世界,是非界線變得模糊,令人不知所措。儘管如此,我們依舊努力用著自己的方式,追尋著那個,絕對純粹的世界。
3.1415927
16384次艱辛*
追尋與真理最近距離
轉角遇見費布納西**
鸚鵡螺的曲線曼妙美麗
樹葉一片片排列整齊
* 古代數學家用正多邊形的面積來逼近圓面積,原理簡單,但計算時要不斷開平方,過程非常繁複。南北朝的祖沖之算到16384邊,而得知圓周率介於3.1415926與3.1415927之間。
** 費布納西(Fibonacci)數列:1,1,2,3,5,8,13,21,34,55... 費布納西於西元1202年提出,在葉序問題、最佳化理論、結晶結構等領域都有直接應用。
畢達哥拉斯和商高先生
都發現勾股弦中的秘密*
引領千年後費瑪最後定理**
懷爾斯的熱情與堅定不移
解開懸宕三百年的世紀謎題
* 畢氏定理,又稱商高定理或勾股弦定理,a2 + b2 = c2。
** 費瑪最後定理,源於畢氏定理,17世紀的數學怪傑費瑪在書頁空白處寫下:「xn + yn = zn,當n大於2時沒有整數解。我已為這個命題找到一個非常巧妙的證明,然而這裡狹窄的篇幅不足以讓我寫下。」如此簡短的敘述,卻成為數學史上最深奧的謎團。一直到二十世紀,才由安德魯懷爾斯(Andrew Wiles)破解。
一次一次一次證明 都更接近真理
零是零 一是一 這世界黑白分明
不同不同不同 不同於模糊難解的人心
這浩瀚宇宙是如此美麗
127.0.0.1 *
最美好的秘密基地
二進位言語
改變世界的超能力
沒有終止條件的遞迴函式**
不斷呼喊自己 不到終點永不放棄
* 127.0.0.1 = localhost = home
** 遞迴(recursion),是「函式(function)不斷呼叫自身」的一種程式撰寫法。而為了防止程式無窮盡的遞迴下去,必須為所寫出來的遞迴函式設定一個終止條件(termination condition)。
一次一次一次證明 都更接近真理
零是零 一是一 這世界黑白分明
不同不同不同 不同於模糊難解的人心
這浩瀚宇宙是如此美麗
一次一次一次 喔 接近真理
零是零 一是一 絕對的純粹
不同不同不同 不同於模糊難解的人心
這浩瀚宇宙是如此美麗
零知識證明應用 在 零知识证明学习资源汇总 - GitHub 的推薦與評價
本文收集了关于零知识证明的一些学习资料(包括科普文章,论文,开源仓库及相关 ... 作为零知识证明领域最知名的一类协议,zk-SNARKs 的理论研究和应用也最为广泛。 ... <看更多>
零知識證明應用 在 神奇的零知识证明!既能保守秘密,又让别人信你! - YouTube 的推薦與評價
【加入会员链接】https://www.youtube.com/channel/UCSs4A6HYKmHA2MG_0z-F0xw/join【订阅频道链接】https://www.youtube.com/李永乐 ... ... <看更多>
零知識證明應用 在 [新聞] 零知識證明的抗量子協議以加強區塊鏈安全 - 批踢踢實業坊 的推薦與評價
新聞來源連結:
https://bit.ly/3A6sUDG
新聞本文:
Researchers at Technology Innovation Institute (TII) in the United Arab
Emirates have improved the feasibility of a new class of algorithms to
protect blockchain applications against quantum computing cryptographic
attacks. This builds on the considerable research already underway across the
cryptographic community in developing better protocols for improving
zero-knowledge proofs.
阿拉伯聯合大公國技術創新研究所 (TII) 的研究人員提高了一類新算法的可行性,以保
護區塊鏈應用程序免受量子計算密碼攻擊。這建立在整個加密社區已經進行的大量研究的
基礎上,該研究旨在開發更好的協議以改進零知識證明。
The specialised area of cryptography has been gaining significant interest
since zero-knowledge proofs are widely used in techniques like blockchain,
smart contracts, and identity verification.
由於零知識證明廣泛用於區塊鏈、智能合約和身份驗證等技術,密碼學的專業領域引起了
人們的極大興趣。
The most popular approaches have involved using matrix computations. However,
there is some concern that future research may find new and improved ways to
compromise these protocols. So, researchers are always looking for promising
alternatives to provide multiple types of protection against future
cryptographic attacks.
最流行的方法涉及使用矩陣計算。然而,有人擔心未來的研究可能會找到新的和改進的方
法來破壞這些協議。因此,研究人員一直在尋找有前途的替代方案,以提供多種類型的保
護以防止未來的密碼攻擊。
Need for alternative approaches
需要替代方法
The various types of quantum-resistant problems and algorithms built on them
are considered safe at the present time, because no one has demonstrated a
credible quantum computer attack against them. Emanuele Bellini, Lead
Cryptographer at TII, said: “We are in the early stages of understanding
what is quantum-resistant and what is not. The safest approach is to build
the quantum-resistant scheme based on many different problems so that if one
is broken, you are still hopeful that the others are not.”
目前,各種類型的抗量子問題和建立在它們之上的算法被認為是安全的,因為沒有人證明
過可信的量子計算機攻擊它們。 TII 的首席密碼學家 Emanuele Bellini 說:“我們正
處於了解什麼是量子抗性、什麼不是的早期階段。最安全的方法是基於許多不同的問題構
建抗量子方案,這樣即使一個被破壞,你仍然希望其他的沒有。”
Most of the work on quantum-resistant protocols for zero-knowledge proofs has
been based on lattices. Lattices are very flexible and are one of the most
malleable cryptographic mathematical structures that can be applied across
the board. The TII team has focused on alternatives to lattices based on the
Rank Syndrome Decoding problems, which, although promising, still need more
research to make them a credible solution.
用於零知識證明的抗量子協議的大部分工作都基於格。晶格非常靈活,是可以全面應用的
最具延展性的加密數學結構之一。 TII 團隊專注於基於 Rank Syndrome Decoding 問題
的格子替代方案,雖然前景廣闊,但仍需要更多研究才能使它們成為可靠的解決方案。
Cryptography is a bit of a cat-and-mouse game, where researchers are
constantly finding enhanced solutions to break protocols and more effective
ways to implement them. It is not even necessary to completely break an
approach to reduce its attractiveness. Bellini said, “If someone discovers
an attack to the lattice problem that just slightly improves the previous
attack, it means that the lattice parameters would have to become larger, and
then other approaches would become relatively more efficient.”
密碼學有點像貓捉老鼠的遊戲,研究人員不斷尋找增強的解決方案來破壞協議以及更有效
的實施方法。甚至沒有必要完全打破一種方法來降低其吸引力。貝里尼說,“如果有人發
現對格子問題的攻擊只是稍微改進了之前的攻擊,這意味著格子參數必須變大,然後其他
方法會變得相對更有效。”
The importance of zero-knowledge proofs
零知識證明的重要性
“Zero-knowledge” has recently become the most popular keyword in
cryptographic papers presented at conferences. The popularity of these
protocols grew in response to the enthusiasm around blockchain since this is
the most common use case. In these applications, the goal is to be able to
prove a statement is true without the rest of the blockchain understanding
information about the exchange. The simplest implementations of
zero-knowledge protocols are often used for identity verification.
“零知識”最近成為會議上發表的密碼論文中最受歡迎的關鍵詞。由於區塊鍊是最常見的
用例,因此這些協議的受歡迎程度隨著對區塊鏈的熱情而增長。在這些應用程序中,目標
是能夠證明一個陳述是真實的,而無需區塊鏈的其餘部分理解有關交換的信息。零知識協
議的最簡單實現通常用於身份驗證。
A zero-knowledge-proof protocol organised the interaction between two parties
in which one is the prover and the other the verifier. The two parties
exchange information, and after the exchange, the prover can confirm the
truthfulness of the statement, such as whether someone has enough money in a
blockchain wallet for a transaction without knowing the total in the wallet.
This is also done in a way that hides information from third-party observers.
零知識證明協議組織了兩方之間的交互,其中一方是證明者,另一方是驗證者。雙方交換
信息,交換後,證明者可以確認陳述的真實性,例如某人在區塊鏈錢包中是否有足夠的錢
進行交易,而無需知道錢包中的總數。這也是以向第三方觀察者隱藏信息的方式完成的。
Initially, the zero-knowledge-proof community focused on using classical
cryptographic algorithms based on discrete logs or factorisation problems.
The community has recently started exploring quantum-resistant zero-knowledge
proofs.
最初,零知識證明社區專注於使用基於離散日誌或分解問題的經典密碼算法。社區最近開
始探索抗量子零知識證明。
Classical algorithms were inefficient, and the quantum-resistant
implementations are even less so because they require larger keys. They also
require larger parameters such as the size of the proof, the number of bits
that need to be communicated between prover and verifier, and the amount of
work each party must perform to build the proof. These quantum-resistant
protocols might take minutes or hours to run compared to a few seconds for
the protocols built on classical algorithms.
經典算法效率低下,而抗量子實現的效率更低,因為它們需要更大的密鑰。它們還需要更
大的參數,例如證明的大小、證明者和驗證者之間需要通信的比特數以及各方為構建證明
而必須執行的工作量。與基於經典算法的協議相比,這些抗量子協議可能需要幾分鐘或幾
小時才能運行。
Rank Syndrome Decoding problem
Rank Syndrome 解碼問題
TII’s researchers studied the Rank Syndrome Decoding problem, an evolution
of another technique called the Syndrome Decoding problem. Other popular
quantum techniques have included the shortest vector problem, the NTRU
problem, the isogenies problem, and the multivariate quadratic problem.
TII 的研究人員研究了 Rank Syndrome Decoding 問題,這是另一種稱為 Syndrome
Decoding 問題的技術的演變。其他流行的量子技術包括最短向量問題、NTRU 問題、同構
問題和多元二次問題。
These different classes of problems organise numbers into a particular
structure that is best suited for verifying a zero-knowledge proof built on
top of the problem. The shortest vector and NTRU are similar and use lattices
to encode the numbers to compute the problem’s answer. Multivariate problems
use a system of polynomials to organise the calculation. The Syndrome
Decoding Problem uses a linear code. The Rank Syndrome Decoding problem is
similar to the Syndrome Decoding problem but organises the linear codes more
efficiently.
這些不同類別的問題將數字組織成一個特定的結構,最適合驗證建立在問題之上的零知識
證明。最短向量和 NTRU 相似,使用格子對數字進行編碼以計算問題的答案。多元問題使
用多項式系統來組織計算。Syndrome Decoding問題使用線性代碼。
Rank Syndrome Decoding 問題類似於 Syndrome Decoding 問題,但可以更有效地組織線
性代碼。
Emanuele Bellini, Lead Cryptographer at the TII, said: “The Rank Syndrome
Decoding problem is not something we invented. However, it is a newer problem
than Syndrome Decoding and the lattice problems, so it is less studied.”
TII 的首席密碼學家 Emanuele Bellini 說:“Rank Syndrome Decoding 問題不是我們
發明的。然而,它是一個Syndrome Decoding和格問題更新的問題,因此研究較少。”
More efficient and adaptable
更高效、適應性更強
TII’s researchers improved the efficiency of RSD and implemented it in a way
that is more adaptable to different use cases. Their implementation is 60%
smaller, and the parameters are 1% of the size compared to the
state-of-the-art Syndrome Decoding implementation for a given proof. It is
also considerably faster, solving one benchmark proof in 47 ms compared to
5,000 ms for Syndrome Decoding.
TII 的研究人員提高了 RSD 的效率,並以更適合不同用例的方式實施。對於給定的證明
,與最先進的Syndrome Decoding實現相比,它們的實現小了 60%,參數大小只有其大小的
1%。它也快得多,與 Syndrome Decoding 的 5,000 ms 相比,它在 47 ms 內解決了一個
基準證明。
A key building block of this new construction is a commitment scheme that
essentially requires one party to commit to a statement, such as having
executed a certain amount of work, which can be verified later as part of a
transaction.
這種新結構的一個關鍵構建區塊是一個承諾方案,它本質上要求一方承諾一個聲明,例如
執行了一定數量的工作,稍後可以作為交易的一部分進行驗證。
TII researchers also demonstrated how this commitment scheme could be built
into any kind of circuit, which is a fundamental building block for
cryptographic transactions. Prior research had examined how RSD could be
applied to signature schemes based on identification protocols using
zero-knowledge proofs. However, the TII research is the first demonstration
of how RSD could apply to any arbitrary circuit that could be used across
many different applications.
TII 研究人員還演示了如何將這種承諾方案構建到任何類型的電路中,這是加密交易的基
本構建區塊。先前的研究已經研究瞭如何將 RSD 應用於基於使用零知識證明的識別協議
的簽名方案。然而,TII 研究首次展示了 RSD 如何應用於可用於許多不同應用的任意電
路。
An arbitrary circuit in cryptography is analogous to an electrical circuit in
a computer chip in which bits are logically combined using gates that perform
logical operations such as executing AND, OR, and NOT statements. Bellini
said: “if you have enough of these gates, you can build any function.”
密碼學中的任意電路類似於計算機芯片中的電路,其中使用執行邏輯運算(例如執行 AND
、OR 和 NOT 語句)的門對位進行邏輯組合。貝里尼說:“如果你有足夠多的這些門,你
就可以構建任何功能。”
The proof size required for verifying the statement grows at a quasi-linear
rate. This means that larger statements require more computation to prove but
not nearly as much as would be needed if the proof size grew at a quadratic
or exponential rate.
驗證語句所需的證明大小以準線性速率增長。這意味著更大的語句需要更多的計算來證明
,但如果證明大小以二次或指數速度增長,則沒有所需的那麼多。
Reducing the cheating probability
降低作弊概率
A zero-knowledge proof is not the same as a mathematical proof. A
mathematical proof is a deterministic process that allows someone to assert
whether a statement is true or false based on certain assumptions. In
contrast, a zero-knowledge proof is a probabilistic proof in which a
statement is proved with a certain degree of probability. The probability of
making a mistake is called the soundness error or cheating probability since
it represents the risk that someone might be cheating but not caught.
零知識證明與數學證明不同。數學證明是一個確定性的過程,它允許某人根據某些假設斷
言一個陳述是真是假。相比之下,零知識證明是一種概率證明,其中一個陳述以一定的概
率被證明。犯錯的概率被稱為可靠性錯誤或作弊概率,因為它代表了某人可能作弊但未被
抓住的風險。
This error can be made as small as possible by repeating the calculation
multiple times. The current implementation’s cheating probability is 2/3 on
the first pass, which is insufficient to convince a verifier. However, by
repeating the proof 219 times, the cheating probability drops to 1/2128,
which is extremely low. “The fact that it is wrong is less probable than a
meteor will fall on your head this afternoon,” said Bellini.
通過多次重複計算,可以使這個誤差盡可能小。當前實現的第一遍作弊概率為 2/3,不足
以說服驗證者。但是,通過重複證明219次,作弊概率下降到1/2128,非常低。貝里尼說
:“這件事是錯誤的,遠比今天下午流星落在你頭上的可能性要小。”
Future research is looking at how to reduce the soundness error of the
fundamental building blocks even further. But this needs to be approached
cautiously since it may reduce the probability by creating a much longer
proof that takes more time to execute. Bellini expects this to be doable
since there are already examples of reducing the likelihood from 2/3 to 1/2
when using RSD for identification protocols. This would mean the researchers
would only need to repeat the process 128-times rather than 219-times!
未來的研究將著眼於如何進一步降低基本構建區塊的可靠性誤差。但這需要謹慎處理,因
為它可能會通過創建需要更多時間來執行的更長的證明來降低概率。 Bellini 預計這是
可行的,因為在使用 RSD 進行識別協議時,已經有將可能性從 2/3 降低到 1/2 的例子。
這意味著研究人員只需要重複這個過程 128 次而不是 219 次。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.78.82.243 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/DigiCurrency/M.1633434604.A.CAF.html
... <看更多>