标准模型下匿名的口令认证key exchange protocol

光滑投射哈希函数

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)
    满足两条性质
  1. 如果x是语言中的词,那么两种hash方式将会返回相同的hash值
  2. 如果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

光滑投射函数应该满足两个性质:

  1. 正确性:如果词在语言中,且w确实是相应的一个witness,那么正常算的hash值,和投射算的hash值,二者应该相等
  2. 光滑性:定义了族的安全性,如果不是语言中的词(c,m),也拿到hp, 那么还是不可和从hash值域里随机挑的值统计上区分

一次签名方案

限制只能问一次签名机,伪造valid签名的优势可忽略

带标签的CCA2加密方案

  • malleability: 可塑性,一个加密算法是可塑的,给出m的加密c,m敌手是不知道的,敌手可以改造c得到cc,使得cc的解密是f(m),这里f()敌手知道怎么算。
    可塑性是一个undesirable property,可塑性并不是指攻击者读懂密文的能力,在篡改密文的前后,攻击者都cannot read encrypted message.
  1. 加密:消息m,随机串r,标签l
  2. 解密:密文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以及可信的服务器拿到哈希后的口令集

  1. client i随机均匀地pick一个k bit串,将他的哈希后口令用CPA加密算法给加密了,然后他将①群组名单,②哈希后口令列表,以及③哈希后口令的加密密文c=Enc_pk(pw_i;r)发送给服务器
  2. 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

你可能感兴趣的:(标准模型下匿名的口令认证key exchange protocol)