光滑投射哈希函數(shù)
Recall the notion of smooth projective hash function:
- 由Cramer和Shoup引進(jìn)
對于語言L,允許hash其中的word x泻仙,以兩種不同的方式: - with some secret key(hashing key乳讥, hk)
- with associated pk(投射key女淑,hp)
滿足兩條性質(zhì)
- 如果x是語言中的詞牍蜂,那么兩種hash方式將會(huì)返回相同的hash值
- 如果x不是語言里的詞嫩海,給了hp早抠,由第一種方式得到的hash值和隨機(jī)從hash值域里取的值統(tǒng)計(jì)不可區(qū)分
Intuitively, this can be used as kind of designated-verifier zero-knowledge proof (although it does not satisfy the classical zero-knowledge property) to 證明詞x在語言中:
prover收到投射鑰hp來自驗(yàn)證者,prover用hp去hash這個(gè)詞碑韵,把結(jié)果發(fā)回給verifier赡茸,verifier比對由secret key hash來的值,接受這個(gè)證明祝闻,如果兩個(gè)hash值是一樣的占卧。
這里給出一個(gè)associated CPA安全的加密方案:
D:可以高效識別的消息空間
固定一組(pk,sk)
C:關(guān)于pk的有效密文集合联喘,在僅有pk的情形下可以被高效識別
定義語言的背景集合华蜒,(密文,消息)豁遭,密文來自C叭喜,消息來自D
所有配套的(密文,消息)對構(gòu)成了語言L
一族光滑投射函數(shù)是蓖谢,把語言 onto 到長為l的01串捂蕴,有如下四個(gè)算法構(gòu)成
算法1:為語言L生成some secret key,hk
算法2:將hk和語言中的一個(gè)詞(c,m)作為輸入闪幽,生成投射鑰hp
算法3:用hk去hash詞(c,m)
算法4:用hp去hash詞(c,m), 附帶輸入witness w of the fact (c,m) in L
光滑投射函數(shù)應(yīng)該滿足兩個(gè)性質(zhì):
- 正確性:如果詞在語言中啥辨,且w確實(shí)是相應(yīng)的一個(gè)witness,那么正常算的hash值盯腌,和投射算的hash值溉知,二者應(yīng)該相等
- 光滑性:定義了族的安全性,如果不是語言中的詞(c,m)腕够,也拿到hp, 那么還是不可和從hash值域里隨機(jī)挑的值統(tǒng)計(jì)上區(qū)分
一次簽名方案
限制只能問一次簽名機(jī)着倾,偽造valid簽名的優(yōu)勢可忽略
帶標(biāo)簽的CCA2加密方案
- malleability: 可塑性,一個(gè)加密算法是可塑的燕少,給出m的加密c,m敵手是不知道的蒿囤,敵手可以改造c得到cc客们,使得cc的解密是f(m),這里f()敵手知道怎么算材诽。
可塑性是一個(gè)undesirable property底挫,可塑性并不是指攻擊者讀懂密文的能力,在篡改密文的前后脸侥,攻擊者都cannot read encrypted message.
- 加密:消息m建邓,隨機(jī)串r,標(biāo)簽l
- 解密:密文c睁枕,標(biāo)簽l
比之前的多一個(gè)分量的參數(shù)
標(biāo)準(zhǔn)的攻擊實(shí)驗(yàn)modified為
原來可以選一對m0,m1,現(xiàn)在還要再多選一個(gè)標(biāo)簽
其他的能力還是一樣官边,有解密機(jī)沸手,但是不能問(挑戰(zhàn)密文,所選l)這條的解密.
proposed protocol
building blocks
- CPA安全加密方案
- 帶標(biāo)簽的CCA2安全加密方案
- 一次簽名方案
- 光滑投射哈希函數(shù)
假設(shè)群組里的一個(gè)client想要向服務(wù)器匿名地認(rèn)證他自己注簿,并和服務(wù)器建立會(huì)話密鑰.
client i將他的編號i和口令i綁定契吉,利用一個(gè)抗碰撞的哈希函數(shù),pw_i=hash(i,pwd_i).
client i以及可信的服務(wù)器拿到哈希后的口令集
- client i隨機(jī)均勻地pick一個(gè)k bit串诡渴,將他的哈希后口令用CPA加密算法給加密了捐晶,然后他將①群組名單,②哈希后口令列表妄辩,以及③哈希后口令的加密密文c=Enc_pk(pw_i;r)發(fā)送給服務(wù)器
- upon receiving the message惑灵,服務(wù)器先獨(dú)立地選擇n個(gè)hk,下面生成投射key眼耀。review生成投射??的算法英支,
算法2:將hk和語言中的一個(gè)詞(c,m)作為輸入,生成投射鑰hp
這里的詞是(c,pw_i), 從1到n畔塔,把每個(gè)投射??算出來潭辈,
hp_j算法3:用hk去hash詞(c,m)
對于第j個(gè)詞, 用第j個(gè)hash key去哈希它,得到一個(gè)長為3k的01串澈吨,分為tk: kbit和tp: 2kbit兩個(gè)部分把敢。δ_j=tp1 xor tp_j.
服務(wù)器set hp=(hp1,...,hpn,δ2,...,δn), 然后tp1分為兩個(gè)部分
=============================================
服務(wù)器生成一次簽名的VK,SK, 令標(biāo)簽是S||c||hp||VK
使用標(biāo)簽加密,密文是第j個(gè)哈希后口令谅辣,隨機(jī)串是第j個(gè)哈闲拊蓿口令的hash值的前k個(gè)bit,由此得到CCA2密文列表桑阶,對此進(jìn)行簽名柏副,服務(wù)器將投射列表,VK蚣录,CCA2密文列表以及簽名發(fā)給client