留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

一种可证安全的密钥隔离无证书代理重加密方案

何粒波 卢震宇 耿贞伟 秦志光

何粒波, 卢震宇, 耿贞伟, 秦志光. 一种可证安全的密钥隔离无证书代理重加密方案[J]. 电子科技大学学报, 2018, 47(4): 606-612. doi: 10.3969/j.issn.1001-0548.2018.04.021
引用本文: 何粒波, 卢震宇, 耿贞伟, 秦志光. 一种可证安全的密钥隔离无证书代理重加密方案[J]. 电子科技大学学报, 2018, 47(4): 606-612. doi: 10.3969/j.issn.1001-0548.2018.04.021
HE Li-bo, LU Zhen-yu, GENG Zhen-wei, QIN Zhi-guang. An Efficient Key-Insulated Proxy Re-Encryption Scheme in Certificateless Cryptography[J]. Journal of University of Electronic Science and Technology of China, 2018, 47(4): 606-612. doi: 10.3969/j.issn.1001-0548.2018.04.021
Citation: HE Li-bo, LU Zhen-yu, GENG Zhen-wei, QIN Zhi-guang. An Efficient Key-Insulated Proxy Re-Encryption Scheme in Certificateless Cryptography[J]. Journal of University of Electronic Science and Technology of China, 2018, 47(4): 606-612. doi: 10.3969/j.issn.1001-0548.2018.04.021

一种可证安全的密钥隔离无证书代理重加密方案

doi: 10.3969/j.issn.1001-0548.2018.04.021
基金项目: 

国家自然科学基金 61003230

国家自然科学基金 61370026

国家自然科学基金 61133016

国家自然科学基金 61272527

详细信息
    作者简介:

    何粒波(1981-), 女, 博士生, 主要从事密码学和网络安全方面的研究

  • 中图分类号: TP309

An Efficient Key-Insulated Proxy Re-Encryption Scheme in Certificateless Cryptography

图(4) / 表(2)
计量
  • 文章访问数:  5350
  • HTML全文浏览量:  1672
  • PDF下载量:  116
  • 被引次数: 0
出版历程
  • 收稿日期:  2016-12-26
  • 修回日期:  2017-05-15
  • 刊出日期:  2018-07-01

一种可证安全的密钥隔离无证书代理重加密方案

doi: 10.3969/j.issn.1001-0548.2018.04.021
    基金项目:

    国家自然科学基金 61003230

    国家自然科学基金 61370026

    国家自然科学基金 61133016

    国家自然科学基金 61272527

    作者简介:

    何粒波(1981-), 女, 博士生, 主要从事密码学和网络安全方面的研究

  • 中图分类号: TP309

摘要: 在代理重加密体制里,一个不可信的代理服务器将用Alice公钥加密的密文转换为用Bob公钥加密的密文,同时该代理服务器无法获知明文及相关用户的私钥。无证书代理重加密体制能够同时避免传统公钥基础设施中复杂的公钥证书管理和基于身份加密中的密钥托管问题。考虑到用户私钥泄露可能带来的危害,该文提出了具有密钥隔离功能的无证书代理重加密体制,随机预言机模型中的安全证明和模拟实验表明该方案是高效安全的。同时,设计了基于云计算的移动互联网中的安全数据共享方案。

English Abstract

何粒波, 卢震宇, 耿贞伟, 秦志光. 一种可证安全的密钥隔离无证书代理重加密方案[J]. 电子科技大学学报, 2018, 47(4): 606-612. doi: 10.3969/j.issn.1001-0548.2018.04.021
引用本文: 何粒波, 卢震宇, 耿贞伟, 秦志光. 一种可证安全的密钥隔离无证书代理重加密方案[J]. 电子科技大学学报, 2018, 47(4): 606-612. doi: 10.3969/j.issn.1001-0548.2018.04.021
HE Li-bo, LU Zhen-yu, GENG Zhen-wei, QIN Zhi-guang. An Efficient Key-Insulated Proxy Re-Encryption Scheme in Certificateless Cryptography[J]. Journal of University of Electronic Science and Technology of China, 2018, 47(4): 606-612. doi: 10.3969/j.issn.1001-0548.2018.04.021
Citation: HE Li-bo, LU Zhen-yu, GENG Zhen-wei, QIN Zhi-guang. An Efficient Key-Insulated Proxy Re-Encryption Scheme in Certificateless Cryptography[J]. Journal of University of Electronic Science and Technology of China, 2018, 47(4): 606-612. doi: 10.3969/j.issn.1001-0548.2018.04.021
  • 代理重加密机制是文献[1]提出的一种特殊的公钥加密体制。在代理重加密的加密系统里,一个由Bob公钥生成的密文可由不可信的代理服务器转化为在Alice公钥下生成的密文,Alice可使用自己的私钥解密出明文。在整个代理重加密的过程中,代理服务器无法解密密文或获取任何用户的私钥。由于密文转化的功能,这一加密系统非常适用于构建针对云计算的安全数据共享方案。为提高代理重加密方案的安全性和效率,大量的代理重加密体制陆续出现[2-7]。但在基于传统公钥证书框架下提出的代理重加密体制本身存在着复杂的公钥证书管理的缺陷(如证书的生成、传输、验证、存储及废除)。于是,文献[8]在2007年提出了第一个基于身份基的代理重加密体制。随后,这一研究领域成为热点。学术界涌现了大量的基于身份基的代理重加密体制[9-11],在这种加密体制里,由于公钥可以直接由用户的属性(如用户的电子邮件)生成,所以避免了使用基于公钥加密的代理重加密体制里复杂的公钥基础。但是由于私钥是由私钥生成中心生成的,所以基于身份的代理重加密体制存在着密钥托管问题。鉴于此,文献[12]在2010年提出了第一个无证书代理重加密体制。这种加密体制可以避免采用复杂的公钥管理体制,也解决了密钥托管问题,从而使得代理重加密这一密码学原语被更加广泛地应用于不同的场景中。

    随着社会工程学与边信道攻击的快速发展,用户的私钥面临着前所未有的威胁。一旦用户私钥泄露,整个公钥密码体制的安全性将面临灭顶威胁。文献[13]提出了第一个密钥隔离的公钥密码体制,在系统里增加了一个物理安全的部件(称之为协助器),整个系统的时间分为n个碎片,在每一个时间片里,协助器生成一个新的协助器私钥,作为用户私钥的一部分,通过这种方法,用户的私钥在每一个时间片里被更新。即使前面时间片的私钥暴露了,也不会泄露后面时间片的私钥。考虑到目前有的代理重加密方案都未考虑密钥泄露带来的威胁,本文结合密钥隔离的思想提出具有抗密钥泄露功能的无证书代理重加密方案。本文的贡献如下:1)通过结合密钥隔离和无证书代理重加密方案,给出了密钥隔离无证书代理重加密方案的形式化定义和安全模型;2)采用构建于椭圆曲线密钥体制上的双线性映射工具,提出了一个密钥隔离无证书代理重加密方案的具体方案;3)在随机预言机模型中给出了所提方案的安全性证明,同时采用Miracl库函数具体实现了该方案,实验结果表明该方案高效实用;4)利用该方案设计了一个基于云计算的适用于移动互联网的安全数据共享协议。

    • 本章讨论了密钥隔离无证书代理重加密体制(KI-CLPRE)的形式化定义、KI-CLPRE体制的IND-CPA安全证明模型及相关困难问题假设。

    • KI-CLPRE体制由以下11个算法构成:

      ${\rm{Setup}}$:算法输入安全参数$k$,输出系统参数${\rm{params}}$、master-key和master-helper-key。

      ${\rm{Set}}\operatorname{Sec} {\rm{retVal}}$:算法输入${\rm{params}}$,用户A身份${\rm{I}}{{\rm{D}}_A}$,输出秘密值${S_A}{\rm{ = (}}{z_A}, {\nu _A})$。

      ${\rm{HelperKeyUpdate}}$:算法输入${\rm{params}}$,master- helper-key,用户A身份${\rm{I}}{{\rm{D}}_A}$和时间周期$i$,输出用户A的第$i$个时刻的协助器密钥${\psi _i} = \tau {H_2}({\rm{ID}}_A, i)$。

      ${\rm{PartialKeyExtract}}$:算法输入${\rm{params}}$,master-key和用户A身份${\rm{I}}{{\rm{D}}_A}$,输出用户A的部分密钥$({P_A}, {E_A}) = ({\omega _A}, {\theta _A})$。

      ${\rm{SetPrivateKey}}$:算法输入${\rm{params}}$、${\psi _i}$、${E_A}$、${S_A}$和时间周期$i$,输出用户A第$i$个时刻的密钥${\rm{SK}}_{A, i} = ({D_{A, i}}, {S_A}) = ({t_{A, i}}, {z_A}, {\nu _A})$。

      ${\rm{SetPublicKey}}$:算法输入${\rm{params}}$、$P{}_A$和${S_A}$,算法输出用户A公钥${\rm{P}}{{\rm{K}}_A} = ({\omega _A}, {\mu _A}, {f_A})$。

      ${\rm{SetReEncKey}}$:算法输入${\rm{P}}{{\rm{K}}_A}$、${\rm{S}}{{\rm{K}}_A}$、${\rm{P}}{{\rm{K}}_B}$,用户A的身份${\rm{I}}{{\rm{D}}_A}$,用户B的身份${\rm{I}}{{\rm{D}}_B}$和时间周期$i$,输出第$i$个时刻的重加密密钥${\rm P}{{\rm K}_{A \to B}} = ({t_A}{H_5}({\mu _A}) + $ ${z_A})\bmod q$。

      ${\rm{Encrypt}}$:算法输入${\rm{params}}$、明文$m$、用户A身份${\rm{I}}{{\rm{D}}_A}$、${\rm{P}}{{\rm{K}}_A}$和时间周期$i$,输出第$i$个时刻的${C_{A, i}} = ({c_{1, i}}, c_{2, i})$。

      ${\rm{ReEncrypt}}$:算法输入${\rm{params}}$、${\rm{R}}{{\rm{K}}_{A \to B}}$、${C_{A, i}} = ({c_{1, i}}, c_{2, i})$和时间周期$i$,输出第$i$个时刻的${C'_{B, i}} = ({c'_{1, i}}, {c'_{2, i}})$。

      ${\rm{Decryp}}{{\rm{t}}_1}$:算法输入${\rm{params}}$、${\rm{R}}{{\rm{K}}_{A \to B}}$、${C_{A, i}} = ({c_{1, i}}, c_{2, i})$和时间周期$i$,输出明文$m$。

      ${\rm{Decryp}}{{\rm{t}}_{\rm{2}}}$:算法输入${\rm{params}}$、${C_{A, i}} = ({c_{1, i}}, c_{2, i})$、${\rm{S}}{{\rm{K}}_A}$和时间周期$i$,输出明文$m$。

    • 本文定义KI-CLPRE的IND-CPA语义安全模型。在这个安全模型里,攻击者可被分为两类:第一类攻击者${\mathcal{A}_{\rm{1}}}$和第二类攻击者${\mathcal{A}_{\rm{2}}}$。第一类攻击者${\mathcal{A}_{\rm{1}}}$代表恶意的第三方,它不能获得master-key和master- helper-key但是它能够知道秘密值,可以任意值重置公钥;第二类攻击者${\mathcal{A}_{\rm{2}}}$代表一个诚实但好奇的密钥生成中心,可以获得master-key和master-helper- key,不能得知秘密值,所以不能替换公钥。在代理重加密的加密体制里有两种不同级别的密文,据此,本文将分别建立KI-CLPRE在IND-CPA游戏中对一级密文和二级密文的安全模型。

      在KI-CLPRE体制中攻击者可能执行的预言机:

      ${\rm{Set - Secret - Value}}$:攻击者$\mathcal{A}$输入参数${\rm{ID}}$,询问预言机${\rm{Set - Secret - Value}}$,挑战者$\mathcal{S}$返回秘密值${S_A}{\rm{ = }}({z_A}, {\nu _A})$给$\mathcal{A}$。

      ${\rm{Helper - Key - Update}}$:攻击者$\mathcal{A}$输入参数${\rm{ID}}$和时间周期$i$,询问预言机${\rm{Helper - Key - Update}}$,挑战者$\mathcal{S}$返回用户的第$i$个时刻的协助器密钥${\psi _i} = $ $\tau {H_2}({\rm{ID}}_A, i)$给$\mathcal{A}$。

      ${\rm{Partial - Key - Extract}}$:攻击者$\mathcal{A}$输入参数${\rm{ID}}$,询问预言机${\rm{Partial - Key - Extract}}$,挑战者$\mathcal{S}$返回用户的部分密钥$({P_A}, {E_A}) = ({\omega _A}, {\theta _A})$给$\mathcal{A}$。

      ${\rm{Set - Private - Key}}$:攻击者$\mathcal{A}$输入参数${\rm{ID}}$和时间周期$i$,询问预言机${\rm{Set - Private - Key}}$,挑战者$\mathcal{S}$返回用户第$i$个时刻的密钥${\rm{SK}}_{A, i} = ({D_{A, i}}, {\mathcal{S}_A}) = $ $({t_{A, i}}, {z_A}, {\nu _A})$给$\mathcal{A}$。

      ${\rm{Set - Public - Key}}$:攻击者$\mathcal{A}$输入参数${\rm{ID}}$,询问预言机${\rm{Set - Public - Key}}$,挑战者$\mathcal{S}$返回输出用户公钥${\rm{PK}}_A = ({\omega _A}, \mu _A, {\phi _A})$给$\mathcal{A}$。

      ${\rm{Set - ReEncrypt - Key}}$:攻击者$\mathcal{A}$输入参数${\rm{ID}}$和时间周期$i$,询问预言机${\rm{Set - ReEncrypt - Key}}$,挑战者$\mathcal{S}$返回输出第$i$个时刻的重加密密钥${\rm{R}}{{\rm{K}}_{A \to B}} = $ $({t_A}{H_5}({\mu _A}) + {z_A})\bmod q$给$\mathcal{A}$。

      ${\rm{Public - Key - Replace}}$:$\mathcal{A}$可以通过询问${\rm{Public - }}$ ${\rm{Key - Replace}}$预言机,用自己选择的秘密值来重置公钥${P_A}$。

      对于一级密文${C_{A, i}} = ({c_{1, i}}, c_{2, i})$,本文分别对两类攻击者建立不同的IND-CPA游戏来论证KI-CLPRE体制的安全性。

      game1_level1_ciphertext(第一类攻击者${\mathcal{A}_{\rm{1}}}$基于一级密文对于KI-CLPRE体制的IND-CPA游戏):

      系统建立阶段:输入安全系数$k$,挑战者$\mathcal{S}$执行${\rm{Setup}}$算法,并返回除了master-key和master- helper-key的系统参数${\rm{params}}$给${\mathcal{A}_{\rm{1}}}$。

      第一阶段:${\mathcal{A}_{\rm{1}}}$适当询问以下的预言机:${\rm{Helper - Key - Update}}$、${\rm{Partial - Key - Extract}}$、${\rm{Set - }}$ ${\rm{Private - Key}}$、${\rm{Set - Public - Key}}$、${\rm{Set - ReEncrypt - Key}}$、${\rm{Public - Key - Replace}}$。询问这些预言机时,${\mathcal{A}_{\rm{1}}}$需要遵守对其的行为限定规则。

      挑战阶段:一旦${\mathcal{A}_{\rm{1}}}$决定第一阶段结束,${\mathcal{A}_{\rm{1}}}$选择一个挑战身份${\rm{I}}{{\rm{D}}^*}$进行挑战,并输出两个等长的明文${m_0}, {m_1} \in \mathcal{M}$。挑战者$\mathcal{S}$随机地选择一个比特$\beta \in \{ 0, 1\} $,并计算出挑战的密文${C^ * } = C_{A, i}^ * = (c_{1, i}^ * , c_{2, i}^ * )$,并将密文${C^ * }$返回给${\mathcal{A}_{\rm{1}}}$。

      猜测阶段:最后,${\mathcal{A}_{\rm{1}}}$输出一个猜测比特$b' \in \{ 0, 1\} $,如果$b' = b$,则${\mathcal{A}_{\rm{1}}}$获胜。

      对${\mathcal{A}_{\rm{1}}}$的行为限定规则:攻击者${\mathcal{A}_{\rm{1}}}$为外部用户,所以无法获取密钥生成中心的主密钥,但可以用任意值替换用户公钥。特别的,${\mathcal{A}_{\rm{1}}}$无法替换挑战中的用户${\rm{I}}{{\rm{D}}^ * }$的公钥。

      游戏game2_level1_ciphertext(第二类攻击者${\mathcal{A}_{\rm{2}}}$基于一级密文对于KI-CLPRE体制的IND-CPA游戏)与游戏game1_level1_ciphertext类似,不再赘述。

      对于二级密文${C'_{B,i}} = \left( {{{c'}_{1,i}},{{c'}_{2,i}}} \right)$,本文分别对两类攻击者建立不同的IND-CPA游戏来论证KI-CLPRE体制的安全性。

      game1_level2_ciphertext(第一种类型的攻击者${\mathcal{A}_{\rm{1}}}$基于二级密文对于KI-CLPRE体制的IND-CPA游戏):

      系统建立阶段:输入安全系数$k$,挑战者$\mathcal{S}$执行${\rm{Setup}}$算法,并返回除了master-key和master- helper-key的系统参数${\rm{params}}$给${\mathcal{A}_{\rm{1}}}$。

      第一阶段:${\mathcal{A}_{\rm{1}}}$适当询问以下的预言机:${\rm{Helper - Key - Update}}$、${\rm{Partial - Key - Extract}}$、${\rm{Set - }}$ ${\rm{Private - Key}}$、${\rm{Set - Public - Key}}$、${\rm{Set - ReEncrypt - Key}}$、${\rm{Public - Key - Replace}}$。询问这些预言机时,${\mathcal{A}_{\rm{1}}}$需要遵守对其的行为限定规则。

      挑战阶段:一旦${\mathcal{A}_{\rm{1}}}$决定第一阶段结束,${\mathcal{A}_{\rm{1}}}$选择一个挑战身份${\rm{I}}{{\rm{D}}^ * }$进行挑战,并输出两个等长的明文${m_0}, {m_1} \in \mathcal{M}$。挑战者$\mathcal{S}$随机地选择一个比特$\beta \in \{ 0, 1\} $并计算出挑战的密文${C^*}$,并将密文${C^*}$返回给${\mathcal{A}_{\rm{1}}}$。

      猜测阶段:最后,${\mathcal{A}_{\rm{1}}}$输出一个猜测比特$b' \in \{ 0, 1\} $,如果$b' = b$,则${\mathcal{A}_{\rm{1}}}$获胜。

      对${\mathcal{A}_{\rm{1}}}$的行为限定规则:攻击者${\mathcal{A}_{\rm{1}}}$为外部用户,所以无法获取密钥生成中心的主密钥,但可以用任意值替换用户公钥。特别的,${\mathcal{A}_{\rm{1}}}$无法替换挑战中的用户${\rm{I}}{{\rm{D}}^ * }$的公钥。

      游戏game2_level2_ciphertext (第二类攻击者${\mathcal{A}_{\rm{2}}}$基于二级密文对于KI-CLPRE体制的IND-CPA游戏)与游戏game1_level2_ciphertext类似,不再赘述。

    • 计算Diffie-Hellman(CDH)问题:给定一个阶为$q$的循环群$\mathbb{G}$,$g$为它的生成元。随机选定$a, b \in \{ 0, 1, \cdots , q - 1\} $的值,给定$g, {g^a}, {g^b}$,计算出${g^{ab}}$的值非常困难。

    • 本文在无证书代理重加密体制CLPRE[14]的基础上构造了具有密钥隔离功能的密钥隔离无证书代理重加密体制KI-CLPRE。具体方案如下:

      1) ${\rm{Setup}}(k)$:给定一个安全参数$k$,${\rm{Setup}}$算法运行如下:

      输入一个安全参数$k$,生成一个$q$阶的乘法循环群$\mathbb{G}$。选择一个群$\mathbb{G}$的生成元$g$。

      随机选取$x \in \mathbb{Z}_a^ * $,$x$是KGC的master-key并计算出$y = {g^x}$。随机选取$\tau \in \mathbb{Z}_a^ * $,$\tau $是协助器的master-helper-key并计算出$\delta = {g^\tau }$。

      选择加密哈希函数:

      ${H_1}:{\{ 0, 1\} ^ * } \times \mathbb{G} \to \mathbb{Z}_a^ *$ ;

      ${H_2}:{\{ 0, 1\} ^ * } \times {\mathbb{Z}^ + } \to \mathbb{Z}_a^ *$ ;

      ${H_3}:\mathbb{G} \to {\{ 0, 1\} ^n}$,其中$n$为某个整数;

      ${H_4}:{\mathbb{Z}^ + } \times {\{ 0, 1\} ^ * } \to \mathbb{Z}_a^ *$ ;

      ${H_5}:\mathbb{G} \to \mathbb{Z}_a^ *$ 。

      系统参数是${\rm{params}} = (p, q, g, y, \delta , {H_1}, {H_2}, {H_3}, $ ${H_4})$,${\rm{master - key}} = x$和${\rm{master - helper - key}} = \tau $。

      2) ${\rm{SetSecretKey}}({\rm{params}}, {\rm{I}}{{\rm{D}}_A})$:输入${\rm{params}}$,用户A身份${\rm{I}}{{\rm{D}}_A}$,算法随机选择${z_A}, {\nu _A} \in \mathbb{Z}_a^ * $。算法输出${S_A}{\rm{ = }}({z_A}, {\nu _A})$作为秘密值。

      3) ${\rm{HelperKeyUpdate}}(i, {\rm{params, master - helper - key}}, $ ${\rm{I}}{{\rm{D}}_A})$:输入${\rm{params}}$,master-helper-key和用户A身份${\rm{I}}{{\rm{D}}_A}$,在各个时间周期$i \in \{ 0, 1, 2, \cdots , n - 1\} $,算法周期生成一个协助器密钥${\psi _i} = \tau {H_2}({\rm{ID}}_A, i)$。算法输出${\psi _i}$做为用户A的协助器密钥。

      4) ${\rm{PartialKeyExtract}}({\rm{params, master - key}}, {\rm{I}}{{\rm{D}}_A})$:输入${\rm{params}}$,master-key和用户A身份ID,算法随机得选择${s_A} \in \mathbb{Z}_a^ * $,并计算出${w_A} = {g^{{S_A}}}$和${\theta _A} = {s_A} + $ $x{H_1}({\rm{I}}{{\rm{D}}_A}, {\omega _A})\bmod q$。算法输出$({P_A}, {E_A}) = ({\omega _A}, {\theta _A})$。

      5) ${\rm{SetPrivateKey}}(i, {\rm{params}}, \psi , {E_A}, {S_A})$:输入${\rm{params}}$, ${\psi _i}$, ${E_A}$, ${S_A}$,在各个时间周期$i \in \{ 0, 1, 2, \cdots , $ $n - 1\} $,算法生成${t_{A, i}} = {s_A} + x{H_1}({\rm{I}}{{\rm{D}}_A}, {g^{{S_A}}}) + $ $\tau {H_2}({\rm{I}}{{\rm{D}}_A}, i)$。算法输出用户A的密钥${\rm{S}}{{\rm{K}}_{A, i}} = $ $({D_{A, i}}, {S_A}) = ({t_{A, i}}, {z_A}, {\nu _A})$。

      6) ${\rm{SetPublicKey}}({\rm{params}}, {P_A}, {S_A})$:输入${\rm{params}}$,${P_A}$和${S_A}$。算法计算${\mu _A} = {g^{{Z_A}}}$和${\phi _A} = {g^{{\nu _A}}}$。算法输出用户A的公钥${\rm{P}}{{\rm{K}}_A} = ({\omega _A}, {\mu _A}, {\phi _A})$。

      7) ${\rm{SetReEncKey}}(i, {\rm{params}}, {\rm{S}}{{\rm{K}}_{A, i}}, {\rm{I}}{{\rm{D}}_A}, {\rm{P}}{{\rm{K}}_A}, {\rm{I}}{{\rm{D}}_B}, $ ${\rm{P}}{{\rm{K}}_B})$:输入params,${\rm{P}}{{\rm{K}}_A} = ({\omega _A}, {\mu _A}, {\phi _A})$, ${\rm{S}}{{\rm{K}}_A} = $ $({t_A}, {z_A}, {\nu _A})$,${\rm{P}}{{\rm{K}}_B} = ({\omega _B}, {\mu _B}, {\nu _B})$,用户A的身份$I{D_A}$和用户B的身份${\rm{I}}{{\rm{D}}_B}$,在各个时间周期$i \in \{ 0, 1, 2, \cdots , n - 1\} $, 算法计算${\gamma _{A, i}} = $ ${\omega _A}{y^{{H_1}({\rm{I}}{{\rm{D}}_A}, {\omega _A})}}{\delta ^{{H_2}({\rm{I}}{{\rm{D}}_A}, i)}}$和${X_{AB, i}} = {H_4}(i, \gamma _B^{{\nu _A}}, \phi _B^{{\nu _A}}, {\rm{I}}{{\rm{D}}_A}, $ ${\rm{P}}{{\rm{K}}_A}, {\rm{I}}{{\rm{D}}_B}, {\rm{P}}{{\rm{K}}_B})$。算法输出在第$i$时刻时的重加密密钥${\rm{R}}{{\rm{K}}_{A \to B}} = ({t_A}{H_5}({\mu _A}) + {z_A})\bmod q$。

      8) ${\rm{Encrypt}}(i, {\rm{params}}, {\rm{I}}{{\rm{D}}_A}, {\rm{P}}{{\rm{K}}_A}, m)$:输入${\rm{params}}$,明文$m$,用户A身份${\rm{I}}{{\rm{D}}_A}$,${\rm{P}}{{\rm{K}}_A} = $ $({\omega _A}, {\mu _A}, {\phi _A})$,在各个时间周期$i \in \{ 0, 1, 2, \cdots , n - 1\} $,算法计算${\gamma _{A, i}} = {\omega _A}{y^{{H_1}({\rm{I}}{{\rm{D}}_A}, {\omega _A})}}{\delta ^{{H_2}({\rm{I}}{{\rm{D}}_A}, i)}}$和${Y_A} = \gamma _{A, i}^{{H_5}({\mu _A})}{\mu _A}$。选择一个随机数$r \in \mathbb{Z}_a^ * $并且计算${c_{1, i}} = {g^r}$, ${c_{2, i}} = m \oplus $ ${H_2}(Y_A^r)$。算法输出${C_{A, i}} = ({c_{1, i}}, c_{2, i})$。

      9) $\operatorname{Re} {\rm{Encrypt}}(i, {\rm{params}}, {\rm{R}}{{\rm{K}}_{A \to B}}, {C_{A, i}})$:输入${\rm{params}}$,${\rm{R}}{{\rm{K}}_{A \to B}}$和${C_{A, i}} = ({c_{1, i}}, c_{2, i})$,在各个时间周期$i \in \{ 0, 1, 2, \cdots , n - 1\} $,算法计算$c_{1, i}^{{\rm{R}}{{\rm{K}}_{A \to B}}}$和设置$c'_{2,i} = {c_{2,i}}$。算法输出$C'_{B, i} = (c'_{1, i}, c'_{2, i})$。

      10) ${\rm{Decryp}}{{\rm{t}}_1}(i, {\rm{params}}, {\rm{S}}{{\rm{K}}_B}, C'_{B, i})$:输入${\rm{params}}$,${\rm{S}}{{\rm{K}}_B} = ({t_B}, {z_B}, {\nu _B})$,${\rm{P}}{{\rm{K}}_A} = ({\omega _A}, {\mu _A}, {\phi _A})$和$C'_{B, i} = (c'_{1, i}, c'_{2, i})$,在各个时间周期$i \in \{ 0, 1, 2, \cdots , n - 1\} $,算法计算$m = {c'_{2,i}} \oplus {H_2}\left( {{{c'}_{1,i}}^{1/{X_{AB,i}}}} \right)$,这里${X_{AB, i}} = $ ${H_4}(i, \phi _A^{{t_B}}, \phi _A^{{\nu _B}}, {\rm{I}}{{\rm{D}}_A}, {\rm{P}}{{\rm{K}}_A}, {\rm{I}}{{\rm{D}}_B}, {\rm{P}}{{\rm{K}}_B})$。算法输出$m$。

      11) ${\rm{Decryp}}{{\rm{t}}_2}(i, {\rm{params}}, {\rm{S}}{{\rm{K}}_A}, {C_{A, i}})$:输入${\rm{params}}$,${C_{A, i}} = ({c_{1, i}}, c_{2, i})$和${\rm{S}}{{\rm{K}}_A} = ({t_A}, {z_A}, {\nu _A})$。在各个时间周期$i \in \{ 0, 1, 2, \cdots , n - 1\} $,算法计算$m = {c_{2, i}} \oplus $ ${H_2}(c_{1, i}^{({t_A}{H_5}({\mu _A}) + {z_A})})$。算法输出$m$。

    • 定理 1  设哈希函数${H_1}, {H_2}, {H_3}, {H_4}, {H_5}$为随机预言机。考虑计算Diffie-Hellman困难问题假设,KI_CLPRE体制对于攻击者${\mathcal{A}_{\rm{1}}}$关于一级密文${C_{A, i}} = ({c_{1, i}}, c_{2, i})$在随机预言机模型中是CPA安全的。

      证明:将规约到计算Diffie-Hellman困难问题上进行安全证明。设定计算Diffie-Hellman问题,挑战者$\mathcal{S}$利用攻击者${\mathcal{A}_{\rm{1}}}$来计算出$\hat e{(g, g)^{ab}}$。当game1_ level1_ciphertext游戏开始后,由于攻击者${\mathcal{A}_{\rm{1}}}$为外部用户,所以该攻击者无法获取密钥生成中心的主密钥master-key。挑战者$\mathcal{S}$设定$y = {g^x} = {g^a}$,并且模拟哈希函数${H_1}, {H_2}, {H_3}, {H_4}, {H_5}$为随机预言机。之后,设置${g^b} = {g^r}$。在仿真试验中,挑战者需要在一个时间片内猜测目标明文中的每一位。在挑战阶段,挑战者$\mathcal{S}$返回一个一级密文${C_{A, i}} = ({c_{1, i}}, c_{2, i})$:

      $${c_{2, i}} = {m^ * } \oplus {H_2}(Y_A^r) = {m^ * } \oplus {H_2}({(\gamma _{A, i}^{{H_5}({\mu _A})}{\mu _A})^r})$$

      其中:

      $$\begin{gathered} \xi = {(\gamma _{A, i}^{{H_5}({\mu _A})}{\mu _A})^r} = {({\omega _A}{y^{{H_1}({\rm{I}}{{\rm{D}}_A}, {\omega _A})}}{\delta ^{{H_2}({\rm{I}}{{\rm{D}}_A}, i)}}{g^{{Z_A}}})^r} = \\ {({g^{{S_A}}}{g^{x{H_1}({\rm{I}}{{\rm{D}}_A}, {\omega _A})}}{g^{\tau H_2({\rm{I}}{{\rm{D}}_A}, i)}}{g^{{Z_A}}})^r} \\ \end{gathered} $$

      显然,在$\xi $中${g^{{S_A}}}$, ${g^{\tau {H_2}(I{D_A}, i)}}$及${g^{{Z_A}}}$均为已知,所以可以得到${g^{xr}}$即为CDH问题的解,即攻击者${\mathcal{A}_{\rm{1}}}$只有在解决CDH问题之后才能对所提方案中的一级密文进行解密。故本文的方案在随机预言机模型下是CPA安全的。

      定理 2  设哈希函数${H_1}, {H_2}, {H_3}, {H_4}, {H_5}$为随机预言机。考虑计算Diffie-Hellman困难问题假设,KI_CLPRE体制对于攻击者${\mathcal{A}_{\rm{2}}}$关于一级密文${C_{A, i}} = ({c_{1, i}}, c_{2, i})$在随机预言机模型中是CPA安全的。

      证明:将规约到计算Diffie-Hellman困难问题上进行安全证明。设定计算Diffie-Hellman问题,挑战者$\mathcal{S}$利用攻击者${\mathcal{A}_{\rm{2}}}$来计算出$\hat e{(g, g)^{ab}}$。当game1_ level1_ciphertext游戏开始后,由于攻击者${\mathcal{A}_{\rm{2}}}$为恶意的密钥生成中心,所以该攻击者可以获取密钥生成中心的主密钥master-key,但无法获得用户的密钥等参数。挑战者$\mathcal{S}$设定$y = {g^{{Z_A}}} = {g^a}$,并且模拟哈希函数${H_1}, {H_2}, {H_3}, {H_4}, {H_5}$为随机预言机。之后,设置${g^b} = {g^r}$。在仿真试验中,挑战者需要在一个时间片内猜测目标明文中的每一位。在挑战阶段,挑战者$\mathcal{S}$返回一个一级密文${C_{A, i}} = ({c_{1, i}}, c_{2, i})$:

      $${c_{2, i}} = {m^ * } \oplus {H_2}(Y_A^r) = {m^ * } \oplus {H_2}({(\gamma _{A, i}^{{H_5}({\mu _A})}{\mu _A})^r})$$

      其中:

      $$\begin{gathered} \xi = {(\gamma _{A, i}^{{H_5}({\mu _A})}{\mu _A})^r} = {({\omega _A}{y^{{H_1}({\rm{I}}{{\rm{D}}_A}, {\omega _A})}}{\delta ^{{H_2}({\rm{I}}{{\rm{D}}_A}, i)}}{g^{{Z_A}}})^r} = \\ {({g^{{S_A}}}{g^{x{H_1}({\rm{I}}{{\rm{D}}_A}, {\omega _A})}}{g^{\tau H_2({\rm{I}}{{\rm{D}}_A}, i)}}{g^{{Z_A}}})^r} \\ \end{gathered} $$

      显然,在$\xi $中${g^{{S_A}}}$、${g^{x{H_1}({\rm{I}}{{\rm{D}}_A}, {\omega _A})}}$及${g^{\tau {H_2}({\rm{I}}{{\rm{D}}_A}, i)}}$及均为已知,所以挑战者可以获得${g^{{Z_A}r}}$即为CDH困难性问题的解。即攻击者${\mathcal{A}_{\rm{2}}}$只有在解决CDH问题之后才能对本文方案中的一级密文进行解密。故本文的方案在随机预言机模型下是CPA安全的。

      定理 3  设哈希函数${H_1}, {H_2}, {H_3}, {H_4}, {H_5}$为随机预言机。考虑计算Diffie-Hellman困难问题假设,KI_CLPRE体制对于攻击者${\mathcal{A}_{\rm{1}}}$关于二级密文$C'_{B, i} = (c'_{1, i}, c'_{2, i})$在随机预言机模型中是CPA安全的。

      证明:将规约到计算Diffie-Hellman困难问题上进行安全性证明。由于本文方案中一级密文与二级密文加密算法一致,所以安全性证明与定理1类似,不再赘述。攻击者${\mathcal{A}_{\rm{1}}}$只有在解决CDH问题之后才能对所提方案中的二级密文进行解密。故本文的方案在随机预言机模型下是CPA安全的。

      定理 4  设哈希函数${H_1}, {H_2}, {H_3}, {H_4}, {H_5}$为随机预言机。考虑计算Diffie-Hellman困难问题假设,KI_CLPRE体制对于攻击者${\mathcal{A}_{\rm{2}}}$关于二级密文$C'_{B, i} = (c'_{1, i}, c'_{2, i})$在随机预言机模型中是CPA安全的。

      证明:将规约到计算Diffie-Hellman困难问题上进行安全性证明。由于本文方案中一级密文与二级密文加密算法一致,所以安全性证明与定理2类似,不再赘述。攻击者${\mathcal{A}_{\rm{2}}}$只有在解决CDH问题之后才能对所提方案中的二级密文进行解密。故本文的方案在随机预言机模型下是CPA安全的。

    • 在密钥隔离无证书代理重加密体制KI-CLPRE方案中,A方和B方由KGC周期性得提供一个协助器密钥,从而得以在每个时间片更新各自的重加密密钥。该方法虽然增加了方案的执行时间,但是由于每个时间片的重加密密钥都得以更新,所以即使单个时间片的重加密密钥被泄露,却仍然保密了其他时间片的重加密密钥,减少了系统在复杂环境下密钥泄露问题,提高了方案的安全性。接下来,将本文的方案与文献[12]和文献[14]的方案进行性能和安全的对比分析。

      ${t_e}$代表在群$\mathbb{G}$中指数运算的执行时间,${t_p}$代表对运算的执行时间,$\left| \mathbb{G} \right|$,$\left| {{\mathbb{G}_T}} \right|$分别代表群$\mathbb{G}$中元素的长度以及群${\mathbb{G}_T}$元素的长度,$\left| {{\mathbb{Z}_q}} \right|$代表随机数的长度,$\left| m \right|$代表消息m的长度,$\left| \sigma \right|$代表签名的长度。

      表 1可知,就执行效率而言,在文献[14]和文献[12]的方案中${\rm{Encrypt}}$、${\rm{Set}}\operatorname{Re} {\rm{Encrypt}}$、$\operatorname{Re} {\rm{Encrypt}}$、${\rm{Decryp}}{{\rm{t}}_1}$、${\rm{Decryp}}{{\rm{t}}_2}$算法的执行时间分别为$3{t_e}$、$3{t_e}$、${t_e}$、$3{t_e}$、${t_e}$和$6{t_e}$、$4{t_e}$、$6{t_p}$、${t_p} + 4{t_e}$、$2{t_p} + 4{t_e}$,而在本文的方案中,执行上述算法的时间为$4{t_e}$、$4{t_e}$、${t_e}$、$3{t_e}$、${t_e}$,由此可知,本文方案和文献[14]的方案相当,而明显高于文献[12]的方案。就重加密密钥、原始密文以及转换密文长度而言,本文方案中$\left| {{C_{A, i}}} \right|$、$\left| {{\rm{R}}{{\rm{K}}_{A \to B}}} \right|$、$\left| {C'_{B, i}} \right|$的长度为$\left| \mathbb{G} \right| + \left| m \right|$、$\left| {{\mathbb{Z}_q}} \right|$、$\left| \mathbb{G} \right| + \left| m \right|$,而文献[14]和文献[12]的方案中对应长度分别为$\left| \mathbb{G} \right| + \left| m \right|$、$\left| {{\mathbb{Z}_q}} \right|$、$\left| \mathbb{G} \right| + \left| m \right|$以及$3\left| \mathbb{G} \right| + \left| m \right| + \left| \sigma \right|$、$3\left| \mathbb{G} \right|$、$\left| \mathbb{G} \right| + 2\left| {{\mathbb{G}_T}} \right| + \left| m \right| + \left| \sigma \right|$,上述结论同样成立。就功能来说,本文方案在基于CDH困难问题的前提下能够达到CPA安全,并且能提供无证书和抗密钥泄露两种功能。虽然安全性达不到文献[12]方案中的CCA安全,但是文献[12]的方案不能提供抗密钥泄露和无证书两种功能,并且效率明显低于本文的方案。文献[14]的方案在性能方面和本文方案大致相当,但没有提供抗密钥泄露的功能。

      表 1  本文方案和文献[14]、文献[12]方案的性能对比

      Scheme 文献[14] 文献[12] 本文方案
      ${\rm{Encrypt}}$ $3{t_e}$ $6{t_e}$ $4{t_e}$
      ${\rm{Set}}\operatorname{Re} {\rm{Encrypt}}$ $3{t_e}$ $4{t_e}$ $4{t_e}$
      $\operatorname{Re} {\rm{Encrypt}}$ ${t_e}$ $6{t_p}$ ${t_e}$
      ${\rm{Decryp}}{{\rm{t}}_1}$ $3{t_e}$ ${t_p} + 4{t_e}$ $3{t_e}$
      ${\rm{Decryp}}{{\rm{t}}_2}$ ${t_e}$ $2{t_p} + 4{t_e}$ ${t_e}$
      $\left| {{C_{A, i}}} \right|$ $\left| \mathbb{G} \right| + \left| m \right|$ $3\left| \mathbb{G} \right| + \left| m \right| + \left| \sigma \right|$ $\left| \mathbb{G} \right| + \left| m \right|$
      $\left| {{\rm{R}}{{\rm{K}}_{A \to B}}} \right|$ $\left| {{\mathbb{Z}_q}} \right|$ $3\left| {\left| \mathbb{G} \right|} \right|$ $\left| {{\mathbb{Z}_q}} \right|$
      $\left| {C'_{B, i}} \right|$ $\left| \mathbb{G} \right| + \left| m \right|$ $\left| \mathbb{G} \right| + 2\left| {{\mathbb{G}_T}} \right| + \left| m \right| + \left| \sigma \right|$ $\left| \mathbb{G} \right| + \left| m \right|$

      综上所述,本文方案和文献[14]的方案相比,具有更多功能,比文献[12]的方案在效率方面具有明显的优势。表 2给出了与表 1相对应的定量分析,该数据证实了上述性能分析结论。图 1~图 4是几种方案在加密的消耗时间、一级密文解密时间以及二级密文解密时间方面的比较。本文方案通过周期性得更新密钥,提供了密钥隔离功能,减缓了在复杂环境下的密钥泄露问题。

      表 2  对表 1性能定量分析的对比

      Scheme 文献[14] 文献[12] 本文方案
      ${\rm{Encrypt}}$ 3.54 ms 7.08 ms 4.72 ms
      ${\rm{Set}}\operatorname{Re} {\rm{Encrypt}}$ 354 ms 4.72 ms 4.72 ms
      $\operatorname{Re} {\rm{Encrypt}}$ 1.18 ms 87.9 ms 1.18 ms
      ${\rm{Decryp}}{{\rm{t}}_1}$ 3.54 ms 19.37 ms 3.54 ms
      ${\rm{Decryp}}{{\rm{t}}_2}$ 1.18 ms 34.02 ms 1.18 ms
      $\left| {{C_{A, i}}} \right|$ 2 048 bits 4 256 bits 2 048 bits
      $\left| {{\rm{R}}{{\rm{K}}_{A \to B}}} \right|$ 160 bits 3 072 bits 160 bits
      $\left| {C'_{B, i}} \right|$ 2 048 bits 4 256 bits 2 048 bits

      图  1  不同方案加密所需时间的比较

      图  2  不同方案一级密文解密所需时间的比较

      图  3  不同方案二级密文解密所需时间的比较

      图  4  应用场景

    • 基于无证书的密钥隔离代理重加密系统可以应用到受到私钥泄露问题困扰的一系列实际环境中。达到取消证书机构、避免密钥托管问题和降低密钥泄露的危害的目的。

      将本文方案部署到手机邮件应用程序,如图 4所示,该环境下系统对时间分片。每个用户持有手机和对应的充电器,充电器作为协助器,密钥分发中心(KGC)负责生成用户的部分私钥。例如,在该系统中,用户Alice想给用户Bob发送一份邮件$m$。首先,KGC将Alice的公钥${P_A}$部分私钥${E_A}$发给Alice,然后Alice在自己的手机上生成秘密值${S_A}$,并使用充电器生成时间片$i$下的协助器密钥${\psi _{A, i}}$,利用这三部分信息,Alice将私钥更新为对应系统时间片$i$下的私钥${\rm{S}}{{\rm{K}}_{A, i}}$。同理,Bob按照这种方式得到自己的公私钥对。Alice计算出由Alice到Bob的重加密密钥${\rm{R}}{{\rm{K}}_{A \to B}}$和邮件$m$对应的密文${C_{A, i}}$,将${\rm{R}}{{\rm{K}}_{A \to B}}$和${C_{A, i}}$发送给重加密服务器。重加密服务器将${C_{A, i}}$转换为${C_{B, i}}$,Bob使用自己的私钥就可以解密${C_{B, i}}$得到$m$。假设恶意的攻击者Malice想偷看Alice发给Bob的邮件,Malice偷取了Bob的手机,但由于Malice无法得到Bob的充电器(协助器),因此无法得到最新的私钥,所以即使手机丢失,加密的内容仍然能保持机密性。

    • KI-CLPRE体制是将密钥隔离的功能嵌入到代理重加密体制而形成的。这种新的体制将时间分为$n$个时间片,在每个时间片周期性得更新用户的密钥和重加密密钥,即使在某个时期,用户的密钥或重加密密钥被泄露,也不会影响到系统在其它的时间片的安全性。从而,KI-CLPRE体制的私钥暴露问题在恶劣的实际环境中得到了减少。本文首先形式化定义了KI-CLPRE体制,并给出了安全模型和相关困难问题假设。接着,给出了KI-CLPRE体制的具体结构。最后,在随机预言机模型里,论证了KI-CLPRE体制在IND-CPA游戏里的安全性。

参考文献 (15)

目录

    /

    返回文章
    返回