Skip to content

基于属性加密

基于身份IBE

  • 特点: 和CA相比,没有配置证书链的繁琐
  • 缺点: 私钥生成中心KGC掌握所有私钥

Boneh-Franklin IBE

  1. SetupSetup

    • 选择双线性映射的两个群和映射、随机数、哈希函数:
    • pp:(G,GT,e,H)pp: (\mathbb{G},\mathbb{G}_T,e,H)
    • 主私钥: msk=amsk=a
  2. KeyGen(ID,msk)skIDKeyGen(ID,msk) \rightarrow sk_{ID}

    • skID=H(ID)ask_{ID} = H(ID)^a 为了简化表达,视作 skID=gabsk_{ID} = g^{ab},这里假设 H(ID)=gbH(ID) = g^b
  3. Encrypt(m,ID,pp)CEncrypt(m,ID,pp) \rightarrow C

    • 选择随机数 cZpc \in \mathbb{Z}_p
    • 计算 C=(C1,C2)=(gc,me(H(ID),g)c)C = (C_1,C_2) = ( \; g^{c},m \cdot e(H(ID),g)^c \; )
  4. Decrypt(C,skID)mDecrypt(C,sk_{ID}) \rightarrow m

    • 计算 m=C2/e(skID,C1)m = C_2 / e(sk_{ID},C_1)
    • e(skID,C1)=e(gab,gc)=e(g,g)abc=e(H(ID),g)c\because e(sk_{ID},C_1) = e(g^{ab},g^c) = e(g,g)^{abc} = e(H(ID),g)^c
  5. 方案流程

IBE-多对私钥

  1. SetupSetup

    • 选择双线性映射的两个群和映射、随机数、哈希函数:
    • pp:(G,GT,e,H)pp: (\mathbb{G},\mathbb{G}_T,e,H)
    • 主私钥: msk=amsk=a
  2. KeyGen(ID,msk)skIDKeyGen(ID,msk) \rightarrow sk_{ID}

    • 选择随机数 rZpr \in \mathbb{Z}_p
    • skID=(d1,d2)=(gaH(ID)r,gr)=e(ga+br,gr)sk_{ID} = (d_1,d_2) = ( \; g^a \cdot H(ID)^r,g^r \; ) = e(g^{a+br},g^r)
  3. Encrypt(m,ID,pp)CEncrypt(m,ID,pp) \rightarrow C

    • 选择随机数 cZpc \in \mathbb{Z}_p
    • 计算 C=(C0,C1,C2)=(e(g,g)acm,gc,H(ID)c)C = (C_0,C_1,C_2) = ( \; e(g,g)^{ac} \cdot m , \; g^c , \;H(ID)^c \; )
  4. Decrypt(C,skID)mDecrypt(C,sk_{ID}) \rightarrow m

    • m=C0/e(d1,c1)ed2,c2m = C_0 / \frac{e(d_1,c_1)}{e{d_2,c_2}}
    • e(d1,c1)=e(ga+br,gc)=e(g,g)ac+bcr\because e(d_1,c_1) = e(g^{a+br},g^c) = e(g,g)^{ac+bcr}
    • e(d2,c2)=e(gr,H(ID)c)=e(g,g)bcr\because e(d_2,c_2) = e(g^r,H(ID)^c) = e(g,g)^{bcr}
    • e(d1,c1)ed2,c2=e(g,g)ac\therefore \frac{e(d_1,c_1)}{e{d_2,c_2}} = e(g,g)^{ac}
    • m=C0/e(g,g)ac\therefore m = C_0 / e(g,g)^{ac}
  5. 这个方案不满足不可区分性

    • 假设有 ID1,ID2ID_1,ID_2,以及对应密文 C1,C2C_1,C_2
    • 由于密文 C?C_? 中存在 c2=gb?cc_2 = g^{b_?c}, c1=gcc_1 = g^c 已知
    • 同时可根据 H(ID)?=gb?H(ID)_? = g^{b_?} 导出 gb?g^{b_?}
    • 故而可以构造:e(g,gb?c)==e(gb?,gc)e(g, g^{b_?c}) == e(g^{b_?}, g^c) 来判断密文是发送给哪个 IDID