zoukankan      html  css  js  c++  java
  • 第五十一个知识点:什么是基于ID的加密的安全模型,然后描述一个IBE方案

    第五十一个知识点:什么是基于ID的加密的安全模型,然后描述一个IBE方案

    在公钥密码学中,如果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安全的。这意味着任何攻击者在多项式时间内赢得下面的游戏的概率最多比1/2多可忽略的概率。

    首先,攻击者:

    • 能够对任何ID请求一个私钥。
    • 能够对任何ID的任何密文进行解密。

    然后攻击者选择两个消息(m_0)(m_1)和一个之前没有被问询过的ID---(ID^*)。攻击者会收到一个基于(ID^{*})对消息(m_b)加密的消息(c),其中(b in {0,1})是随机选择的。然后攻击者:

    • 能对任何不是(ID^{*})的ID请求私钥。
    • 能够除了((c*,ID^{*}))之外的对进行解密。

    最后攻击者输出一位(b^{'}),如果(b^{'}=b),那么我们说攻击者赢得了游戏。

    Boneh和Franklin给出的方案依赖于一个非退化的双线性映射$e:G_1 imes G_1 ightarrow G_2 (,其中)G_1(的阶是)q$ ,我们将运算写成加法,而(G_2)的阶也是(q),我们将运算写成乘法。他们通过椭圆曲线上的Weil对对这个映射进行实例化,但是我们这里省略这个细节。所有双线性性质就是(e(aP,bQ)=e(P,Q)^{ab}),其中(a,b in Z_q)

    没有足够的空间来描述所有的方案的细节,但是主密钥是一个非零的(s in Z_q),然后ID的私钥是(s cdot H(ID)),其中(H)是一个将比特流映射到(G_1)中元素的Hash函数。有两个公共参数(P)(P_{pub} = s cdot P in G_1)

    为了加密消息(m),我们能选择一个随机的串(sigma),然后将(m)和随机的串进行异或,得到密文(C_m)。然后(m)(sigma)一起进行hash运算获得一个(Z_q)中的非零元素(r)。最后我们能计算出对(e(H(ID),P_{pub]})^r)。然后hash得到的值与(sigma)进行异或,得到(c_{ID})。最后三元组((r cdot P,c_{ID},c_m))就是密文。

    已经获得了私钥(d = s cdot H(ID))的Bob可以解密密文((U,V,W)):首先计算(e(d,U)),通过双线性的性质这个值等于(e(H(ID),P_{pub})^r)。因此将这个值和(V)进行异或得到(sigma)。最后异或(W)得到消息(m)。最后一步是检查预定信息(U = r cdot P),等式成立表明这就是预期的信息。

  • 相关阅读:
    谈谈Nginx有哪些特点
    网站嵌入百度地图制作
    8张图理解Java
    linux问题-easy_install安装bpython时报错
    linux问题-Centos 安装Sublime text 3
    python例子-Nmap扫描IP并更新
    python例子-PyQuery抓取信息.
    python例子-MySQLdb和练习题
    python例子-线程和队列
    mysql问题-centos7中mysql远程连接问题
  • 原文地址:https://www.cnblogs.com/zhuowangy2k/p/12249077.html
Copyright © 2011-2022 走看看