Deniable Encryption(CRYPTO 97') [Ran Canetti, Cynthia Dwork, Moni Noar, Rafail Ostrovsky] 可否认加密
1. 提出动机与场景
本文[CRYPTO97 canetti]提出的场景来自于这样一种情况,由发送者向接受者发送信息,此处敌手具备两种能力:
第一种:敌手可以窃听信道,获得本次通信的密文。
第二种:敌手可以强迫通信参与方,供述算法中使用的随机数等信息,甚至于打开密文。
2. 设计目标
为了实现防御上述能力的敌手加密协议,文章提出了一种可否认的加密协议,利用这个可否认的加密协议可以使得为敌手“诚实”的打开密文,敌手不能区分这是真实传输的明文还是伪造的明文。
可否认加密形式化定义如下:
(a) 情况,密文C是对明文b的一个加密,其中随机输入可以是随机选取的值(不为人知)。
(b)情况,密文C是对另外一个明文b`的加密,其中随机输入 r 为独立均匀选取的。
此时,敌手将以一定的概率(较小)区分这个密文C是由哪两套参数生成的。
3. 可否认协议模型描述
对于公钥体制而言:
一句话概括:伪造的随机输入可以导致对明文m1的加密结果三元组与诚实发送m2加密结果的三元组 统计接近。
这个定义是比较严格的,要求这一对三元组统计接近。
进一步,定义一个弱可否认定义:
这个弱-可否认加密协议定义如上所述,叫灵活的发送者可否认加密协议。这里与上边定义2的区别为安全定义部分。所以,这个弱的定义并非是功能上弱,
可否认程度上弱,而是安全性更弱。
定义2 要求
消息空间中任意两个消息m, 其协议通信数据元祖是计算不可区分的,这个要求比较严格。
定义3 要求
消息空间中任意两个消息 以及 任意的一种属于T C共四种分布的二进制参数是计算不可区分的,这里的弱安全定义体现在否认的元组只需要与真实传送m2的
元组计算不可区分即可(真实传送m2的元组不需要必须使用真实加密的参数rS 与 rR)。所以,这就放宽了安全的定义要求。
其实这里有一个小问题:按理说发送者可否认协议,难道不应该,由发送者对同一个密文c解密得到明文为m2吗?这里只要求C与真实的m2密文统计接近,或者说,
com(m1) 与 com(m2) 计算不可区分,这里实质上有一个问题,发送者可否认的意思就是字面的意思,发送者只能在自己掌握的信息范围内可否认,那么发送者不应当掌握接受方的随机输入Rr信息。
所以敌手,在要求发送方“打开”时,本质不能直接将诚实的明文m1密文C解密为确定的明文m2。(公钥加密算法是公开的,如果敌手掌握双方所有的随机输入,那么则没有任何保护的意义)
并且这个弱安全的定义实质上是一个"plan-ahead deniable encryption" 即为,在定义3中,加密时已经提前考虑到此条密文应该具有的可否认性质,而不是定义2中,对任意的明文都要做到加密后,
存在伪造算法,达到可否认性质。
对于对称体制而言:
定义4 是针对共享秘钥体系提出的可否认加密体制的形式化定义描述。不同之处,伪造算法需要伪造出一个二元组(秘钥,随机输入)。
4 可否认加密协议构造
本文所有的协议构造基于一个这样的组件:Translucent set
对于,上述整个构造,文中给出了两种具体的构造,第三种构造为基于格密码的构造,这里不进行赘述:
一个基本的可否认协议:
上述基础协议,存在一个问题,接收方会以一定的概率解密失败,无法完全实现加密比特0时做到可否认,有可能会否认失败。针对这个可能会否认失败的协议
进一步提出了一个对于加密0或者1不会出现单方否认失败的协议。
这个改进版的协议,不会出现对于0或者1 不相同解密的情况,此协议中,对于0或者1的解密出现不同分布的情况,实际上这个改进的协议中,R元素依然是在t长字符串上
随机选取的,则接受方在解密是依然有可能出现解密不对的情况。当然,这种情况实际上是允许的,为什么?因为在可否认的定义中,已经在正确性上定义了,发送方的输入
与接受方的输出不同的概率为可忽略。只是这里,对于加密0或是加密1的出错情况是一样的了。
可否认定理证明与可否认优势
这里的定理5 证明是一个简略的说法,仅仅考虑了诚实打开 和 否认打开 这两种分布被检测出不同的概率。并且使用了统计距离这个概念来描述两种不同分布的区别,
刻画敌手可检测不诚实打开的优势。
可否认性与协议效率的关系
可否认性 与 协议效率到底关系如何?如何计算与刻画这样一个关系?
文章中,使用了否认分布 与 诚实分布 两种概率分布的统计距离来描述可否认优势,并给出了如何估算这种情况下的统计距离方法。
最终对于这样一个m-separable的协议而言,可检测否认优势为1/2m。在多项式时间上,也可写为omiga(1/m)。