Privacy Pass: Bypassing Internet Challenges Anonymously
一些私貨
為啥讀論文兒
真正的一手資料,比書籍更強(qiáng)的時(shí)效性和專業(yè)性
啟發(fā)思維和反常理的結(jié)論
讀書與工作環(huán)境的影響
讀論文兒的一些方法
搜論文:google scholar: https://scholar.google.com/
讀新不讀舊?查論文反引:
- 經(jīng)典永流傳,引用數(shù):https://harzing.com/resources/publish-or-perish/os-x
- 站在巨人的肩膀上,跟蹤大佬的研究路徑 dblp:https://dblp.org/
- 論文質(zhì)量?看發(fā)表期刊/會(huì)議的水平:CCF官網(wǎng):A B C 分級(jí) https://www.ccf.org.cn/Academic_Evaluation/By_category/
- 英語(yǔ)看不懂?chrome插件 劃詞翻譯
數(shù)學(xué)符號(hào)?。。。無能為力,只能慢慢積累
關(guān)鍵部分:Introduction!
正題:Privacy Pass
原文:https://www.petsymposium.org/2018/files/papers/issue3/popets-2018-0026.pdf
為啥看他
- Google Chrome上的新功能,Trust Token:https://web.dev/trust-tokens/#sample-api-usage,Privacy Pass是其Token生成與消費(fèi)的基礎(chǔ)密碼協(xié)議
Privacy Pass拓展在10月發(fā)布了v3版本:https://github.com/privacypass/challenge-bypass-extension
CloudFlare 作為世界最大的CDN廠商最早開發(fā)了Privacy Pass體系,已經(jīng)使用了三年
-
優(yōu)點(diǎn):
- 最主要作用:大規(guī)模減少網(wǎng)絡(luò)上的Challenge(人機(jī)挑戰(zhàn))的流量
保護(hù)用戶隱私的token,即服務(wù)端驗(yàn)證token時(shí)并無法定位具體用戶
用戶可驗(yàn)證下發(fā)token不是被中間人或惡意服務(wù)偽造
token即使泄露也將快速消費(fèi)完,無記憶性
缺點(diǎn):
LET'S DISCUSS
背景知識(shí)
一個(gè)群兒
群是一個(gè)集合,有四個(gè)主要性質(zhì)(封閉性,結(jié)合律,單位元,逆元);但我們只討論他的一個(gè)性質(zhì):階
定義一個(gè)群的階N為:任意群里的一個(gè)元素他對(duì)自己做N次定義群的運(yùn)算后會(huì)等于他自己,則該群的階為N
我們不搞抽象的,我們想一個(gè)具體的模乘群:, p為質(zhì)數(shù),其階就為p
為啥?費(fèi)馬小定理,具體就不證明了:
VOPRF
可驗(yàn)證遺忘性偽隨機(jī)數(shù)發(fā)生器(Verifiable oblivious pseudorandom function):用人話說就是就是一個(gè)算法協(xié)議,他通過一個(gè)秘鑰K和種子S來產(chǎn)生偽隨機(jī)數(shù)R,而S是由一個(gè)消息M產(chǎn)生;該算法雖然產(chǎn)生了R,但他并不知道M是什么(遺忘性),但產(chǎn)生的R是可以驗(yàn)證一定來自該秘鑰K產(chǎn)生的(可驗(yàn)證)
零知識(shí)證明ZKP
是實(shí)現(xiàn)VOPRF可驗(yàn)證性的重點(diǎn):如何不告訴你秘鑰K的值確定產(chǎn)生的偽隨機(jī)數(shù)是來自秘鑰K?
阿里巴巴的故事
阿里巴巴證明自己擁有能打開CD之間的石門的咒語(yǔ)
- 盜賊站在A,阿里巴巴在B點(diǎn)隨機(jī)選擇前往C或者D
- 盜賊到B點(diǎn),隨機(jī)讓阿里巴巴從C或者D走出來,假如他不知道咒語(yǔ),他也有50%的成功率
- 重復(fù)該實(shí)驗(yàn)N次,他連續(xù)成功的概率將越來越低,直到到達(dá)一個(gè)可信的范圍
離散對(duì)數(shù)問題
DH密碼協(xié)議所依賴的數(shù)學(xué)難題:
計(jì)算是簡(jiǎn)單的,但計(jì)算
是困難的
消息驗(yàn)證碼MAC
用人話說就是A與B共享一個(gè)秘鑰K,A給B發(fā)送一個(gè)消息m,同時(shí)用這個(gè)秘鑰K和m進(jìn)行計(jì)算生成一個(gè)消息驗(yàn)證碼c,將m和c打包發(fā)給B。由于B也擁有秘鑰K,他可以用相同的算法對(duì)收到的消息m’計(jì)算消息驗(yàn)證碼c’,比較c與c’來判斷m’有沒有遭到篡改。
比較典型的算法是HMAC與GMAC,由于MAC的前提需要有共享秘鑰,GMAC通常與AES結(jié)合使用,即AES-GCM模式。
協(xié)議分析
恐怖嗎?我盡量用自己的理解用人話來描述這個(gè)協(xié)議吧??,就不細(xì)說具體的嚴(yán)格證明(我也沒太看明白,民科罷了)
如何證明我擁有一個(gè)離散對(duì)數(shù)的解
DLEQ(Discrete log equivalence proofs):有一組公開的數(shù):,阿里巴巴如何證明自己擁有私鑰k值?
- 盜賊給阿里巴巴一個(gè)數(shù)
- 阿里巴巴計(jì)算
- 阿里巴巴隨機(jī)生成一個(gè)數(shù)
- 阿里巴巴計(jì)算
- 阿里巴巴計(jì)算
, 最后把
給盜賊
- 盜賊計(jì)算
- 盜賊判斷
,若成立,則本次驗(yàn)證通過;且盜賊無法通過
(兩個(gè)未知數(shù),解不出);也無法通過
(離散對(duì)數(shù)難題)
證明很簡(jiǎn)單:
僅當(dāng)
以上證明形式可以被表述為
推廣到發(fā)送多個(gè)數(shù)的乘積,Batch-DLEQ:
該結(jié)論可以同時(shí)推廣到一次通過n個(gè)數(shù)字乘積,一次完成
的生成:
- 驗(yàn)證者隨機(jī)生成的n個(gè)隨機(jī)數(shù)
并保存下來,同時(shí)發(fā)送
- 證明者計(jì)算
- 把替換成上面的
, 完成證明值
;
- 證明者一次把
發(fā)給驗(yàn)證者,驗(yàn)證者使用DLEQ驗(yàn)證方法完成驗(yàn)證
特點(diǎn):
- 效率高,一次完成多次簽名,同時(shí)可證明
- Batch-DLEQ的遺忘性:上面
可以讓證明者并無法獲取具體的
值;此時(shí)
被稱為 盲化因子
- Batch-DLEQ的可驗(yàn)證性:由DLEQ保證
結(jié)論:Batch-DLEQ實(shí)現(xiàn)了一個(gè)VOPRF
此時(shí)由n個(gè)隨機(jī)數(shù)組成的DLEQ被稱為n-DLEQ,用符號(hào)通常表示為(用Pi,Qi來替代了上面的M,Z)
Privacy Pass正式協(xié)議
整個(gè)協(xié)議其實(shí)分為兩個(gè)階段,簡(jiǎn)單來說就是,Token組簽署下發(fā)階段和Token組贖回階段
Token組簽署下發(fā)階段
- 服務(wù)器發(fā)起挑戰(zhàn)
- 客戶端響應(yīng)挑戰(zhàn),并根據(jù)Batch-DLEQ的第一步,隨機(jī)生成n個(gè)隨機(jī)數(shù)
和n個(gè)盲化因子
, 保存下來,同時(shí)完成上面M的計(jì)算,將M隨挑戰(zhàn)響應(yīng)回復(fù)給服務(wù)器
- 服務(wù)器驗(yàn)證挑戰(zhàn),若驗(yàn)證失敗則協(xié)議結(jié)束
- 服務(wù)器驗(yàn)證挑戰(zhàn)成功,計(jì)算Z,完成
并下發(fā)結(jié)果
- 客戶端驗(yàn)證下發(fā)結(jié)果,驗(yàn)證該Token的合法性
- 去盲化:
, 將
成對(duì)保存下來,形成n個(gè)Token
這一階段主要保證了
- Token的可驗(yàn)證性:Token一定來自可信服務(wù)端,無法被中間人偽造
- Token的隱私性:因?yàn)槊せ蜃拥拇嬖冢M(fèi)Token時(shí)并不知道原本的隨機(jī)數(shù)
,即使服務(wù)器記錄了這些M也無法追蹤客戶端
這正是VOPRF的特性
Token組贖回
即客戶端消費(fèi)Token:
- 服務(wù)器下發(fā)挑戰(zhàn),預(yù)期的計(jì)算結(jié)果為
- 客戶端取出一個(gè)Token,使用一個(gè)協(xié)議好的哈希函數(shù)計(jì)算出MAC所使用的key
- 計(jì)算挑戰(zhàn)結(jié)果
, 并計(jì)算MAC:
,將兩者和
一起響應(yīng)給服務(wù)端
- 服務(wù)端先驗(yàn)證
,若不通過則挑戰(zhàn)失敗
- 服務(wù)器取出計(jì)算私鑰
, 計(jì)算MAC所需秘鑰
- 服務(wù)器計(jì)算對(duì)應(yīng)MAC值,
- 挑戰(zhàn)響應(yīng)成功當(dāng)且僅當(dāng)
主要優(yōu)點(diǎn)
- 一次有感挑戰(zhàn)后,可以完成多次無感挑戰(zhàn),提升體驗(yàn),減少消耗
- 驗(yàn)證結(jié)果可驗(yàn)證,是來自擁有Token的用戶