云存储中口令增强且可更新的盲化密钥管理方法转让专利
申请号 : CN202110242844.7
文献号 : CN113098681B
文献日 : 2022-03-15
发明人 : 许春香 , 李闪闪 , 张源
申请人 : 电子科技大学
摘要 :
权利要求 :
1.一种云存储中口令增强且可更新的盲化密钥管理方法,其特征在于,基于四个主体,分别是用户、n个密钥服务器、n'个认证服务器和云存储器,其中,n和n'为相同或不相同的正整数;
包括以下步骤:
步骤1.初始化;
系统初始化安全参数和公共参数;每个用户随机选择一个秘密值分成n'份,分别发送给n'个认证服务器;n个密钥服务器为每个用户共享一个用户专用的秘密值,密钥服务器相互交互,计算自身子秘密,并且公布用户专用的秘密值对应的公钥;
步骤1的具体过程为:
在安全参数l下,公共参数为PP={p,P,G,GT,e,h(·),H(×),Enc1,Enc2,Dec1,Dec2},其中,G是一个阶为素数p、生成元为P的加法群,GT是乘法群,e:G×G→GT是双线性映射;
*
为有限域,H(·):{0,1}→G,h(·)和H(·)都是哈希函数;Enc1是对称加密算法,Enc2是公钥加密算法;Dec1为对称解密算法,Dec2为非对称解密算法;
每个用户ui随机选择一个秘密值mski分成n'份,分别发送给n'个认证服务器ISλ,1≤λ≤n',1≤i≤N,N为用户个数,具体过程如下:步骤1‑1.用户ui随机选择t'‑1个独立的系数 建立一个
2 t'‑1
多项式g(i,x)=ai,0+ai,1x+ai,2x+…+ai,t'‑1x ,x为自变量,其中,ai,0=mski;
步骤1‑2.用户ui计算认证服务器ISλ的自身子秘密yi,λ=g(i,x)modp,其中,mod为取模运算;
步骤1‑3.用户ui分别发送{λ,yi,λ}给所有的认证服务器ISλ,认证服务器ISλ计算自身子公钥Yi,λ=yi,λP;针对用户ui,所有认证服务器共同保存的秘密值为mski,公开值为Yi=mskiP;
n个密钥服务器KSγ之间交互为每个用户共享用户ui专用的秘密值si,1≤γ≤n,具体过程如下:
步骤1‑4.每个密钥服务器KSγ随机选择 和一个t‑1的多项式fγ(x)=bγ,0+bγ,1x+
2 t‑1
bγ,2x+…+bγ,t‑1x ,2≤t
步骤1‑5.密钥服务器KSγ发送{bγ,0P,bγ,1P,bγ,2P,…,bγ,t‑1P}和fγ(w)给其他的密钥服务器KSw,1≤w≤n,w≠γ;
步骤1‑6.密钥服务器KSγ收到来自其他的密钥服务器KSw的fw(γ),密钥服务器KSγ验证公式 是否成立,若公式不成立,认证失败,密钥服务器KSγ拒绝接受fw(γ),否则,密钥服务器KSγ接受fw(γ);
步骤1‑7.密钥服务器KSγ计算自身子密钥 并计算自身子公钥PKi,γ=si,γP;用户ui专用的秘密值为 公开值为PKi=siP;
步骤2.每个用户与n'个认证服务器交互,获取用户的认证凭证;
用户选择随机数,利用随机数对口令的哈希值进行盲化,并把盲化值发送给n'个认证服务器;每个认证服务器收到盲化值后,用自身子秘密做签名,签名结果返回给用户;用户随机选择t'个认证服务器的签名去盲化,2≤t'
步骤2的具体过程为:
步骤2‑1.用户ui生成自己的身份标识 选择随机数 计算盲化值为用户ui的口令;用户ui把 发送给n'个认证服务器;
步骤2‑2.认证服务器ISλ首先验证 是否已经注册过,若已经注册过,认证服务器ISλ通知用户ui身份标识重复,否则,认证服务器ISλ存储 并利用自身子秘密yi,λ进行签名把签名结果σλ发送给用户ui;
步骤2‑3.用户ui利用个t'个认证服务器返回的签名结果生成公共认证凭证:令t'个认证服务器为{IS1,IS2,…,ISt'},返回的签名结果为{σ1,σ2,…,σt'};对于每一个λ'=[1,t'],用户ui判断公式 是否成立,若验证公式成立,用户ui计算聚合签名结果 其中 否则,终止程序;用户ui验证公式是否成立,若成立,用户ui计算并公布公共认证凭证否则,用户ui终止程序;
步骤3.用户uj给用户ui发送一则消息,1≤i≤N,1≤j≤N,i≠j,用户uj对消息进行加密,存储已加密消息到云服务器;
首先,用户uj选择一个秘密随机数,并计算秘密随机数对应的公共随机数;其次,用户uj利用用户ui公布的公共认证凭证作为公钥,使用公钥加密算法加密公共随机数;然后,用户uj利用密钥服务器组公布的用户ui专用秘密值对应的公钥和自己选取的秘密随机数,计算对称加密密钥,用对称加密算法加密明文消息;最后,用户uj上传密文信息到云服务器;
步骤4.用户ui下载密文,与n'个认证服务器和n个密钥服务器做交互,解密得到明文消息;
首先,用户ui选择随机数,利用随机数对口令的哈希值进行盲化,并把盲化值发送给n'个认证服务器;每个认证服务器收到盲化值后,用自身子秘密做签名,签名结果返回给用户ui;用户ui随机选择t'个认证服务器的签名去盲化,计算自己的秘密认证凭证;利用秘密认证凭证,用户ui解密得到用户uj的公共随机数;其次,用户ui再选择一个新的随机数,利用新的随机数对用户uj的公共随机数进行盲化,并把盲化值发送给n个密钥服务器;每个密钥服务器收到盲化值后,用自身子秘密做签名,签名结果返回给用户ui;用户ui随机选择t个密钥服务器的签名去盲化,2≤t
2.根据权利要求1所述的云存储中口令增强且可更新的盲化密钥管理方法,其特征在于,步骤3的具体过程为:
步骤3‑1.用户uj选择一个秘密随机数 计算公共随机数 利用公共认证凭证 作为公钥,计算
步骤3‑2.用户uj利用r'PKi作为对称密钥,计算c2=Enc1(r'PKi,M),M为用户uj给用户ui发送的消息,并计算消息标识符c0=H(r'PKi,M);
步骤3‑3.用户uj上传密文信息(c0,c1,c2)。
3.根据权利要求2所述的云存储中口令增强且可更新的盲化密钥管理方法,其特征在于,步骤4的具体过程为:
步骤4‑1.云服务器发送(c0,c1,c2)给用户ui,用户ui收到密文信息后,选择一个随机数并计算盲化值 用户ui把 发送给n'个认证服务器;
步骤4‑2.认证服务器ISλ首先验证 是否保存过,若已经保存,认证服务器ISλ利用自身子秘密对 进行签名 并把签名结果发送给用户ui;
步骤4‑3.用户ui收到签名结果σλ'后,验证公式 是否成立;若不成立,拒绝,否则接受;
用户ui在接受了t'个签名结果后,令t'个认证服务器为{IS1,IS2,…,ISt'},返回的签名结果为{σ1',σ2',…,st′′},用户ui计算 其中 用户ui通过验证公式 是否成立验证σ'的合法性,如果认证通过,用户ui计算秘密认证凭证
步骤4‑4.用户ui利用秘密认证凭证 作为私钥解密得到用户uj的公共随机数用户ui选择一个随机数 计算 并发送给每个密钥服务器KSγ;
步骤4‑5.每个密钥服务器KSγ利用自身的子秘密si,γ生成签名 并把签名结果发送给用户ui;
步骤4‑6.用户ui收到签名结果ηγ后,验证公式 是否成立,若不成立,拒绝,否则接受;
用户ui在接受了t个有效的签名后,令t个密钥服务器为{KS1,KS2,…,KSt},返回的签名结果为{η1,η2,…,ηt'},用户ui计算 其中, 用户ui通过验证公式 是否成立验证η的合法性,如果等式成立,认证通过,用户ui利用η作为*
对称密钥解密得到M=Dec1(η,c2);
*
步骤4‑7.用户ui利用公式H(η,M)=c0判断消息的完整性,如果等式成立,用户ui接受消息,否则用户ui拒绝。
4.根据权利要求3所述的云存储中口令增强且可更新的盲化密钥管理方法,其特征在于,在步骤4后还包括以下步骤:步骤5.密钥服务器子秘密更新;
每个密钥服务器都周期性更新每个用户的专用的秘密值。
5.根据权利要求4所述的云存储中口令增强且可更新的盲化密钥管理方法,其特征在于,步骤5的具体过程为:
2
步骤5‑1.每个密钥服务器KSγ随机选择一个t‑1的多项式lγ(x)=cγ,1x+cγ,2x +…+t‑1
cγ,t‑1x ,
步骤5‑2.密钥服务器KSγ发送{cγ,0P,cγ,1P,cγ,2P,…,cγ,t‑1P}和lγ(w)给其他的密钥服务器KSw,1≤w≤n,w≠γ;
步骤5‑3.密钥服务器KSγ收到来自KSw的lw(γ),密钥服务器KSγ验证公式是否成立,如果不成立,认证失败,密钥服务器KSγ拒绝接受lw(γ),否则,密钥服务器KSγ接受lw(γ);
步骤5‑4.密钥服务器KSγ计算自身新子密钥 并计算自身子公钥PKi,γ'=si,γ'P。
说明书 :
云存储中口令增强且可更新的盲化密钥管理方法
技术领域
背景技术
前,许多云存储提供商都可以访问用户存储在其上的任何信息,包括用户的外包数据,这引
起了用户们对外包数据机密性的担心。一个应用最广的方法是:用户对外存的数据加密以
保护数据的机密性。
解决上述安全问题,一个最直观的方法是:一个用户在加密不同的外包数据时使用不同的
加密密钥。为了确保这些加密后的数据之后能被该用户解密,该用户需要秘密保存所有的
加密密钥。在这种机制下,用户需要承受一定的存储开销,这对于资源受限的用户设备是无
法承受的;另一方面,当用户需要解密某个密文时,由于用户存储了多个密钥,密钥与密文
之前没有明确的对应关系,所以用户需要反复试验,直至密文被正确解密,这带来了额外的
计算开销。为了在保护数据机密性的同时降低用户端的开销,Jarecki等人提出了一个新的
密码学原语——盲化的密钥管理系统。该机制引入了一个可信第三方——密钥服务器:对
于每个用户,密钥服务器都随机选择且保存每个用户专用的秘密值。一个用户把数据存储
到云服务器之前,首先与密钥服务器交互生成该数据的加密密钥;其次,用户利用加密密钥
对外包的数据进行加密并将密文外包存储在云服务器。此机制中,用户无须保存加密密钥
且密钥服务器只保存用户专用的秘密值而不会得知用户的加密密钥。更进一步,Jarecki等
人对盲化的密码管理系统做了改进,提出了一套可更新的盲化密钥管理系统:密钥服务器
在秘密保存用户专用的秘密值的同时公布该秘密值对应的公钥值;若一个用户uj想发送ui
一则消息,uj选择一个秘密随机数,计算该随机数对应的公共随机数;uj利用密钥服务器公
布的关于ui的公钥值和自己选取的秘密随机数计算出加密密钥,并利用该加密密钥加密消
息得到密文消息,外包消息的唯一标识、公共随机数、密文消息到云服务器;ui从服务器下
载与自己相关的消息,利用公共随机数和自己选取的随机数与密钥服务器交互得到解密密
钥解密得到明文消息;为了避免密钥服务器保存的用户专用秘密值泄露,密钥服务器需定
期更新用户专用的秘密值,与此同时,云服务器需更新用户对应的密文消息确保用户可以
正确解密。
的是,诚实但好奇的云服务器与密钥服务器合谋即可以恢复用户的消息明文。更棘手的是,
目前可更新的盲化密钥管理系统的安全性只依赖于密钥服务器的安全性和可靠性,且密钥
服务器的用户专用密钥更新机制需要密钥服务器和云服务器的共同参与,带来了额外的通
讯和计算开销。
发明内容
数,本发明所述方法包括以下步骤:
器相互交互,计算自身子秘密,并且公布用户专用的秘密值对应的公钥;
用户随机选择t′个认证服务器的签名去盲化,2≤t′<n′,计算并公布用户的公共认证凭
证;
后,用户uj利用密钥服务器组公布的用户ui专用秘密值对应的公钥和自己选取的秘密随机
数,计算对称加密密钥,用对称加密算法加密明文消息;最后,用户uj上传密文信息到云服
务器;
用户ui;用户ui随机选择t′个认证服务器的签名去盲化,计算自己的秘密认证凭证;利用秘
密认证凭证,用户ui解密得到用户uj的公共随机数;其次,用户ui再选择一个新的随机数,利
用新的随机数对用户uj的公共随机数进行盲化,并把盲化值发送给n个密钥服务器;每个密
钥服务器收到盲化值后,用自身子秘密做签名,签名结果返回给用户ui;用户ui随机选择t个
密钥服务器的签名去盲化,2≤t<n,计算出对称加密密钥;最终,用户ui利用对称加密密
钥,对密文消息进行解密,得到明文消息。
与认证服务器通过口令进行身份认证,同时限制一个周期内用户的认证次数,防止了敌手
的冒充攻击和口令猜测攻击。本发明抵御了诚实但好奇的云服务器与密钥服务器的合谋,
通过引入了一组认证服务器,密钥服务器与云服务器合谋也无法恢复用户的密文消息。本
发明引入了多个密钥服务器,避免了一个密钥服务器的单点失效攻击。
具体实施方式
的任意正整数,本发明所述方法包括以下步骤:
器相互交互,计算自身子秘密,并且公布用户专用的秘密值对应的公钥;
*
双线性映射; 为有限域,H(·):{0,1} →G,h(·)和H(·)都是哈希函数;
Enc1是一个安全的对称加密算法(例如:AES),Enc2是一个安全的公钥加密算法(例如:
ElGamal);Dec1为一个安全的对称解密算法,Dec2为一个安全的非对称解密算法;
一个多项式g(i,x)=ai,0+ai,1x+ai,2x+…+ai,t′‑1x ,x为自变量,其中,ai,0=mski;
mskiP;
bγ,1x+bγ,2x+…+bγ,t‑1x ,2≤t<n;
接受fω(γ),否则,密钥服务器KSγ接受fω(γ);
用户随机选择t′个认证服务器的签名去盲化,计算并公布用户的公共认证凭证;
签名 把签名结果σλ发送给用户ui;
户ui计算聚合签名结果 其中 否则,终止程序;用户ui验证公
式 是否成立,若成立,用户ui计算并公布公共认证凭证
否则,用户ui终止程序。
后,用户uj利用密钥服务器组公布的用户ui专用秘密值对应的公钥和自己选取的秘密随机
数,计算对称加密密钥,用对称加密算法加密明文消息;最后,用户uj上传密文信息到云服
务器;
用户ui;用户ui随机选择t′个认证服务器的签名去盲化,计算自己的秘密认证凭证;利用秘
密认证凭证,用户ui解密得到用户uj的公共随机数;其次,用户ui再选择一个新的随机数,利
用新的随机数对用户uj的公共随机数进行盲化,并把盲化值发送给n个密钥服务器;每个密
钥服务器收到盲化值后,用自身子秘密做签名,签名结果返回给用户ui;用户ui随机选择t个
密钥服务器的签名去盲化,计算出对称加密密钥;最终,用户ui利用对称加密密钥,对密文
消息进行解密,得到明文消息;
通过验证公式 是否成立验证σ′的合法性,如果认证通过,用户ui计
算秘密认证凭证
KSγ;
证公式 是否成立验证η的合法性,如果等式成立,认证通过,用户ui利用η
*
作为对称密钥解密得到M=Dec1(η,c2);
务器保存的子秘密。
则,密钥服务器LSγ接受lω(γ);