在公钥密码学中,如果Alice想要给Bob发送一条消息,她需要Bob的公钥,一般来说公钥都很长,就像一个随机的字符串。
假设Alice可以不用公钥而是使用Bob的名字或者邮件地址作为他的公钥。实际的来说,这会很方便,Alice不必记住很长的公钥,也不用验证这个类似于随机串的公钥是否真的属于Bob。为了让这变得容易,我们需要基于身份的加密(IBE)。
在IBE中,存在一个实体叫做私钥生成器(PKG)。PKG能够通过Bob的ID和一个主密钥来计算Bob的私钥。一旦Bob已经对PKG认证过自己,那么他就可以向PKG请求他的私钥,一旦他获得了自己的私钥,那么他就可以对任何通过他的ID加密的消息进行解密。
但是这里有一个问题,通过主密钥,PKG可以对任何ID都生成一个私钥,因此PKG可以对任何消息进行解密,这叫做密钥托管,意思就是说你必须信任PKG不会读取你的消息或者你不在乎PKG会读取你的消息。在公司中,高级管理者一般都有权限读取你的邮件,因此IBE方案在这种情况下是很恰当的。
正式的,一个IBE方案包含四个算法:setup,extract,encrypt和decrypt。
Setup:采用一个安全参数然后输出主密钥和系统参数,例如明文和密文的消息空间。
Extract:接收一个ID和主密钥,然后返回一个针对ID的私钥。
Encrypt:接收一个消息和ID,然后返回密文。
Decrypt:接收一个密文和公钥,然后返回一个消息。
Boneh和Franklin在2003年给出了一个IBE方案。他们证明了,在一个类似CDH问题的假设情况下,他们的方案在随机oracle模型中是IND-ID-CCA安全的。这意味着(假设所有哈希函数都是随机的oracles),任何以多项式时间运行安全参数的攻击者,可忽略以大于1/2的概率赢得以下安全博弈:
Boneh和Franklin给出的方案依赖于一个非退化的双线性映射e:G1×G1→G2,其中G1和G2的阶均是qe:G_1 \times G_1 \rightarrow G_2 ,其中G_1和G_2 的阶均是qe:G1×G1→G2,其中G1和G2的阶均是q ,而 G1是加法群,G2是乘法群。他们通过椭圆曲线上的Weil对对这个映射进行实例化,但是我们这里省略这个细节。所有双线性性质就是e(aP,bQ)=e(P,Q)ab,其中a,b∈Zq。
原文链接:http://bristolcrypto.blogspot.com/2015/10/52-things-number-51-what-is-security.html
参考链接:https://www.cnblogs.com/zhuowangy2k/p/12249077.html