光滑投射哈希函数
Recall the notion of smooth projective hash function:
- 由Cramer和Shoup引进
对于语言L,允许hash其中的word x,以两种不同的方式: - with some secret key(hashing key, hk)
- with associated pk(投射key,hp)
满足两条性质
- 如果x是语言中的词,那么两种hash方式将会返回相同的hash值
- 如果x不是语言里的词,给了hp,由第一种方式得到的hash值和随机从hash值域里取的值统计不可区分
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来自验证者,prover用hp去hash这个词,把结果发回给verifier,verifier比对由secret key hash来的值,接受这个证明,如果两个hash值是一样的。
这里给出一个associated CPA安全的加密方案:
D:可以高效识别的消息空间
固定一组(pk,sk)
C:关于pk的有效密文集合,在仅有pk的情形下可以被高效识别
定义语言的背景集合,(密文,消息),密文来自C,消息来自D
所有配套的(密文,消息)对构成了语言L
一族光滑投射函数是,把语言 onto 到长为l的01串,有如下四个算法构成
算法1:为语言L生成some secret key,hk
算法2:将hk和语言中的一个词(c,m)作为输入,生成投射钥hp
算法3:用hk去hash词(c,m)
算法4:用hp去hash词(c,m), 附带输入witness w of the fact (c,m) in L
光滑投射函数应该满足两个性质:
- 正确性:如果词在语言中,且w确实是相应的一个witness,那么正常算的hash值,和投射算的hash值,二者应该相等
- 光滑性:定义了族的安全性,如果不是语言中的词(c,m),也拿到hp, 那么还是不可和从hash值域里随机挑的值统计上区分
一次签名方案
限制只能问一次签名机,伪造valid签名的优势可忽略
带标签的CCA2加密方案
- malleability: 可塑性,一个加密算法是可塑的,给出m的加密c,m敌手是不知道的,敌手可以改造c得到cc,使得cc的解密是f(m),这里f()敌手知道怎么算。
可塑性是一个undesirable property,可塑性并不是指攻击者读懂密文的能力,在篡改密文的前后,攻击者都cannot read encrypted message.
- 加密:消息m,随机串r,标签l
- 解密:密文c,标签l
比之前的多一个分量的参数
标准的攻击实验modified为
原来可以选一对m0,m1,现在还要再多选一个标签
其他的能力还是一样,有解密机,但是不能问(挑战密文,所选l)这条的解密.
proposed protocol
building blocks
- CPA安全加密方案
- 带标签的CCA2安全加密方案
- 一次签名方案
- 光滑投射哈希函数
假设群组里的一个client想要向服务器匿名地认证他自己,并和服务器建立会话密钥.
client i将他的编号i和口令i绑定,利用一个抗碰撞的哈希函数,pw_i=hash(i,pwd_i).
client i以及可信的服务器拿到哈希后的口令集
- client i随机均匀地pick一个k bit串,将他的哈希后口令用CPA加密算法给加密了,然后他将①群组名单,②哈希后口令列表,以及③哈希后口令的加密密文c=Enc_pk(pw_i;r)发送给服务器
- upon receiving the message,服务器先独立地选择n个hk,下面生成投射key。review生成投射🔑的算法,
算法2:将hk和语言中的一个词(c,m)作为输入,生成投射钥hp
这里的词是(c,pw_i), 从1到n,把每个投射🔑算出来,
hp_j算法3:用hk去hash词(c,m)
对于第j个词, 用第j个hash key去哈希它,得到一个长为3k的01串,分为tk: kbit和tp: 2kbit两个部分。δ_j=tp1 xor tp_j.
服务器set hp=(hp1,...,hpn,δ2,...,δn), 然后tp1分为两个部分
=============================================
服务器生成一次签名的VK,SK, 令标签是S||c||hp||VK
使用标签加密,密文是第j个哈希后口令,随机串是第j个哈希口令的hash值的前k个bit,由此得到CCA2密文列表,对此进行签名,服务器将投射列表,VK,CCA2密文列表以及签名发给client
网友评论