CN113098683B - 一种基于属性的数据加密方法和系统 - Google Patents

一种基于属性的数据加密方法和系统 Download PDF

Info

Publication number
CN113098683B
CN113098683B CN202110286075.0A CN202110286075A CN113098683B CN 113098683 B CN113098683 B CN 113098683B CN 202110286075 A CN202110286075 A CN 202110286075A CN 113098683 B CN113098683 B CN 113098683B
Authority
CN
China
Prior art keywords
attribute
private key
user
file
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110286075.0A
Other languages
English (en)
Other versions
CN113098683A (zh
Inventor
龙毅宏
刘泉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University of Technology WUT
Original Assignee
Wuhan University of Technology WUT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan University of Technology WUT filed Critical Wuhan University of Technology WUT
Priority to CN202110286075.0A priority Critical patent/CN113098683B/zh
Publication of CN113098683A publication Critical patent/CN113098683A/zh
Application granted granted Critical
Publication of CN113098683B publication Critical patent/CN113098683B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0847Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving identity based encryption [IBE] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

基于属性的加密方法及系统:有双线性映射e:G1×G2→GT;用户的一个属性A被映射为群G1或中G2的一个元GA,称为公钥,对应一个私钥dA=[s]GA或dA=[s‑1]GA,s是主密钥;用户申请属性私钥时,dA被分解为保存在服务端的秘密份额dAs和保存在用户端的秘密份额dAu;以GA1+…+GAm为属性集S=(A1,…,Am)对应的公钥采用双线性映射加密算法对数据加密;需要使用属性集S=(A1,…,Am)对应的私钥dA1+…+dAm对数据解密时,服务端和用户端使用各自的dA1,…,dAm的秘密份额通过交互、采用双线性映射完成解密运算;基于此方法的系统包括服务端的属性私钥生成器、属性及属性私钥秘密份额管理器、密钥服务器、密码服务器,用户端的数据解密客户端程序、密钥客户端程序和密码组件。

Description

一种基于属性的数据加密方法和系统
技术领域
本发明属于密码技术领域,特别是一种基于属性的数据加密方法和系统。
背景技术
基于属性的加密(Attribute Based Encryption,ABE)是一种公钥密码体制,它将用户属性和密钥关联,将数据加密和解密与基于属性的控制结构相关联,确保只有获得相应属性的用户才能够解密数据,实现对数据解密的控制。基于属性的加密又分为密文策略-基于属性的加密(CP-ABE)和密钥策略-基于属性的加密(KP-ABE)。
基于属性的加密通常是基于双线性映射(bilinear mapping,也称配对运算,Pairing)的算法,其中双线性映射(配对运算)如为:
e:G1×G2→GT时,其中G1、G2(配对或双线性映射的群)是加法循环群,GT是一个乘法循环群,G1、G2、GT的阶是素数n;
若P、Q、R分别为G1、G2中的元,则e(P,Q)为GT中的元,且:
e(P+R,Q)=e(P,Q)e(R,Q),
e(P,Q+R)=e(P,Q)e(P,R),
e([a]P,[b]Q)=e(P,Q)ab
这里a、b是[0,n-1]中的一个整数,[a]P、[b]Q表示点的P、Q的多倍点加运算或数乘运算。
目前的基于属性的加密方案的一个比较突出的问题是算法非常复杂,一般的工程技术人员不容易搞懂,相应的实施难度也较大。有工程经验的人都知道,解决工程中的实际问题,在取得同样技术效果的前提下,尽可能采用简单的方案,这样不但实施简单,而且运行可靠,而不是追求采用理论上最完美的方案,应用理论上最好的算法。目前的基于属性的加密方案面临的另一个问题是实现属性撤销比较困难。
基于属性的加密的应用场景大多是用户端、服务端模式(客户端、服务器模式),对于这种应用场景,可以通过将基于属性的加密和服务端的访问控制结合起来来解决问题,实现预期的技术目标,而不是让基于属性的加密算法去解决所有的问题。
发明内容
本发明的目的是提出一种基于属性的数据加密技术方案,以克服现有技术存在的问题。
为了实现以上目的,本发明的技术方案包括一系列的方法和系统,其中包括一种属性私钥及私钥秘密份额生成和管理方法,以及基于此方法的基于属性的数据加密方法和数据解密方法,以及在这些方法基础上构建的属性私钥及私钥秘密份额生成和管理系统、基于属性的数据加密系统、基于属性的文件加密系统、基于属性的加密文件服务系统。
本发明涉及双线性映射(配对运算)e:G1×G2→GT,其中,G1、G2为加法群,GT为乘法群;群G1、G2、GT的阶为素数n(G1、G2通常是椭圆曲线点群,GT是阶为n的乘法群);
[k]P,其中k为整数,表示针对双线性映射中加法群(G1、G2)中的元P的多倍点加(数乘)运算,即若k为正整数,[k]P表示k个P相加;若k负正整数,[k]P表示|k|个P相加得到的元的加法逆元;若k为零,则[k]P是零元。
在本发明的描述中,如无特别说明,整数的逆(比如,a-1,a为非0整数)都是指该整数针对双线性映射中的群(G1、G2、GT)的阶n的模n乘法逆,或该整数的模n余数的模n乘法逆(二者等价)。
本发明提出的属性私钥及私钥秘密份额生成和管理方法具体如下。
所述属性私钥及私钥秘密份额生成和管理方法涉及服务端的属性私钥生成器(Attribute Private Key Generator)、密钥服务器、属性及属性私钥秘密份额管理器(manager),用户端的用户、密钥客户端程序和密码组件;
所述属性私钥生成器用于生成用户属性所对应的私钥即属性私钥;所述用户属性是反映用户特征的信息(如性别、职务、职称、角色等);
所述密钥服务器是用户申请属性私钥的秘密份额时与用户端的密钥客户端程序进行交互的服务端的系统组件;所述属性私钥是用户属性所对应的私钥;所述属性私钥的秘密份额指服务端和用户端分别保存的与属性私钥有关并能恢复属性私钥的秘密;
所述属性及属性私钥秘密份额管理器对用户的属性以及属性私钥的秘密份额进行管理;所述属性及属性私钥秘密份额管理器有用户数据库,用于存放用户属性以及属性私钥的秘密份额;
所述用户是具有用户属性、需要使用属性私钥(的秘密份额)进行数据解密操作处理的个人、机构或系统;
所述密钥客户端程序是用户申请属性私钥的秘密份额时所使用的与密钥服务器进行交互的用户端程序;
所述密码组件是用户端进行密码运算、存储用户密钥(属性私钥之外的其他密钥)以及存储属性私钥的秘密份额的软件组件或软硬件结合的组件;
所述用户、密钥客户端程序和密码组件统称为用户方;
所述属性私钥及私钥秘密份额生成和管理方法涉及双线性映射(配对运算)e:G1×G2→GT(即双线性映射e(V,T),其中V是群G1中的元,T是群G2中的元,而e(V,T)是群GT中元);G1、G2为加法群(通常是椭圆曲线点群),GT为乘法群;群G1、G2、GT的阶为素数n;群G1、G2的生成元分别为P1、P2
针对以上所述双线性映射还定义有:
e1(V,T)=e(V,T),其中V是群G1中的元,T是群G2中的元;
e2(V,T)=e(T,V),其中V是群G2中的元,T是群G1中的元;
所述属性私钥生成器有一个[1,n-1]内的主密钥(主私钥)s;
当用户方需要申请属性A所对应的私钥(即属性私钥)dA的秘密份额时,用户方将获取属性A的私钥的秘密份额的申请提交到密钥服务器;
密钥服务器通过属性及属性私钥秘密份额管理器的用户数据库验证确认申请属性私钥秘密份额的用户就是其声称的用户(如其声称的人、机构或系统)且拥有对应的属性A,验证通过后将用户方提交的获取属性A的私钥的秘密份额的申请提交到属性私钥生成器(若验证确认不通过,则密钥服务器拒绝用户方申请);
属性私钥生成器检查本地是否已缓存或保存有属性A所对应的属性私钥dA,若有,则转入针对属性A的属性私钥dA的秘密份额的生成处理;若本地没有缓存或保存有属性A所对应的属性私钥dA,则属性私钥生成器按约定的(公开的、非保密的)规则将属性A的名字(name)或标识符(identifier)映射到群Gi中的一个元GA,i=1或2,然后计算得到属性A对应的私钥即属性私钥dA=[s]GA或dA=[s-1]GA,其中s-1是s的模n乘法逆(即(s-1s)mod n=1),将属性私钥dA缓存或保存在本地(缓存在内存中或保存在属性私钥生成器的密码装置中或加密保存在数据库中);GA称为属性A对应的公钥即属性公钥(实际上,将属性本身称为公钥也行,将映射得到的GA称为公钥也行,本发明GA将称为公钥描述更方便);
所述属性的名字是属性的标识名称(如男性、女性),或者是针对属性的描述文字(如年龄大于18岁,只要能区分不同属性即可);
属性私钥生成器将dA分解为dA=dAs+dAu,或者将dA化解为dA=[dAu]dAs或dA=[dAs]dAu;属性私钥生成器将dAs、dAu返回给密钥服务器;
或者,属性私钥生成器将dA返回给密钥服务器,密钥服务器将dA分解为dA=dAs+dAu,或者将dA化解为dA=[dAu]dAs或dA=[dAs]dAu
密钥服务器将dAs保存在属性及属性私钥秘密份额管理器用户数据库中的当前用户的用户信息中,将dAu返回给用户方(的密钥客户端程序);所述当前用户是指当前正在申请属性A的属性私钥dA的秘密份额的用户方的用户;
用户方(由密钥客户端程序)将dAu保存到用户端的密码组件中;
以上所述dAs为服务端的针对属性私钥dA的秘密份额(secret share),dAu为用户端(或用户方)的针对属性私钥dA的秘密份额(不同用户的同一个属性A所对应的属性私钥dA是相同的,但不同用户针对同一个属性A的属性私钥dA的秘密份额dAs、dAu不同;本发明中用户永远不会被允许获得属性私钥,只能获得属性私钥的秘密份额);
若用户有多个属性需要申请属性私钥的秘密份额,则用户方分多次申请获得用户每个属性所对应的属性私钥的用户端的秘密份额,或者一次获得用户所有属性的属性私钥的用户端的秘密份额;于此同时,密钥服务器将用户多个属性的属性私钥的服务端的秘密份额保存在属性及属性私钥秘密份额管理器的用户数据库中的用户信息中;所述多个属性指多于一个的属性(两个或更多);
所述属性私钥生成器有一个主公钥Ppub=[s]Pj,j=3-i(即属性公钥GA和属性私钥dA与Ppub不在同一个群);[]表示对群G1和G2中的元的多倍点加运算(数乘运算)。
(若这里取i=1,那么,后续的i都为1,后续的j都为3-i=2;若这里取i=2,那么,后续的i都为2,后续的j都为3-i=1)
对于以上所述的属性私钥及私钥秘密份额生成和管理方法,所述用户属性包括受时间有效期限定的属性和未受时间有效期限定的属性;
所述受时间有效期限定的属性由属性名或属性标识符加上时间有效期所构成(如,属性名:时间有效期的,如user@secret.com:xxxx-yyyy,即属性名或属性标识符与时间有效期的字串合并);所述时间有效期由起始时间和结束时间构成;
所述时间有效期的表示方式是从一个约定的零时时刻开始(如约定某年某月某日的零时为零时时刻,如1970年1月1日0时0分0秒),然后按每隔一个约定的时间周期(如三个月、半年)更新时间有效期;
对于受时间有效器限定的属性,用户方在属性的时间有效期即将到期之前的规定时间内(如到期之前的一周、两周内)或到期后,申请受新的时间有效期限定的属性所对应的私钥的秘密份额,用户方以及属性及属性私钥秘密份额管理器分别保存用户端和服务端的针对新的属性私钥的秘密份额(之前的秘密份额可以继续保存一段时间)。
对于以上所述的属性私钥及私钥秘密份额生成和管理方法,所述属性私钥生成器或密钥服务器将dA分解为dA=dAs+dAu的方法包括:
在群Gi中随机选取一个不等于dA的非零元P作为dAs,计算dAu=dA-dAs,或者在群Gi中随机选取一个不等于dA的非零元P作为dAu,计算dAs=dA-dAu
或者,在[2,n-1]内随机选取一个整数ts,计算tu=(1-ts)mod n(求模n余数运算),或在[2,n-1]内随机选取一个整数tu,计算ts=(1-tu)mod n;计算dAs=[ts]dA,dAu=[tu]dA
所述属性私钥生成器或密钥服务器在群Gi中随机选取一个不等于dA的非零元P的方法包括:
在[2,n-1]内随机选取一个整数tA,计算P=[tA]dA
或者,在[1,n-1]内随机选取一个整数tA,计算P=[tA]Pi,其中Pi为群Gi的生成元;若P不等于dA,则P即为所取;若P等于dA,则重新选取tA,重新计算P=[tA]Pi,直到P不等于dA
对于以上所述的属性私钥及私钥秘密份额生成和管理方法,所述属性私钥生成器或密钥服务器将dA化解为dA=[dAu]dAs或dA=[dAs]dAu的方法包括:
在[1,n-1]内随机选择一个整数tZ,计算dt=[(tZ)-1]dA,其中(tZ)-1为tZ的模n乘法逆(即(tZ(tZ)-1)mod n=1),然后以tZ作为dAu,以dt作为dAs,或者以tZ作为dAs,以dt作为dAu
对于以上所述的属性私钥及私钥秘密份额生成和管理方法,将属性A的名字或标识符映射为群Gi中的元GA的方式包括:
将属性A的名字或标识符映射到群Gi中的一个元的纵坐标yA,然后通过群Gi对应的椭圆曲线方程得到横坐标xA,则GA=(xA,yA)(Boneh-Franklin方式);
或者,将属性A的名字或标识符映射到群Gi中的一个元的横坐标xA,然后通过群Gi对应的椭圆曲线方程得到两个纵坐标,取其中一个纵坐标yA,则GA=(xA,yA)(注意,不是每个xA都有解yA,对于无解的情形,对xA再变换,如多次取散列或哈希值,直到有解yA);
或者,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pi,其中Pi为群Gi的生成元;
或者,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pit,其中Pit是属性私钥生成器在群Gi中随机选择的一个不等于Pi的元,并作为公开参数发布(即Pit是固定的公开参数);
或者,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pi+Pit
或者,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pih+Pit,其中Pih是属性私钥生成器在群Gi中随机选择的一个不等于Pi的元,并作为公开参数发布(即Pih是固定的公开参数);
将属性A的名字或标识符映射到[1,n-1]中的一个整数hA的方式包括使用约定的散列或哈希函数(如SM9标识密码算法中规定的散列或哈希函数);
属性私钥生成器在群Gi中随机选择一个不等于Pi的元Pit的方式包括:在[2,n-1]随机选择一个整数t,计算Pit=[t]Pi
属性私钥生成器在群Gi中随机选择一个不等于Pi的元Pih的方式包括:在[2,n-1]随机选择一个整数h,计算Pih=[h]Pi
若采用将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pi的方式将属性A映射到群Gi中的一个元,并采用dA=[s]GA方式生成属性私钥,则须从Ppub无法得到[s]Pi
若采用将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pi+Pit的方式将属性A映射到群Gi中的一个元GA,则一旦出现GA为零元的情况(概率极小),所述属性私钥生成器重新在群Gi中随机选择一个不等于Pi的群元Pit并公开发布;
若采用将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pih+Pit的方式将属性A映射到群Gi中的一个元GA,则一旦出现GA为零元的情况(概率极小),所述属性及属性私钥秘密份额管理器改变属性A的名字或标识符,或者所述属性私钥生成器重新在群Gi中随机选择一个不等于Pi的群元Pih或Pit并公开发布。
对于以上所述的属性私钥及私钥秘密份额生成和管理方法,若将属性A映射到群Gi中的一个元的方式是先将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pi或GA=[hA]Pit或GA=[hA]Pi+Pit或GA=[hA]Pih+Pit的方式,则:
若采用dA=[s]GA的方式生成属性私钥,则所述属性私钥生成器预先计算并缓存或保存有Qi=[s]Pi,或Qit=[s]Pit,或Qi=[s]Pi和Qit=[s]Pit,或Qih=[s]Pih和Qit=[s]Pit
若采用dA=[s-1]GA的方式生成属性私钥,则所述属性私钥生成器预先计算并缓存或保存有Qi=[s-1]Pi,或Qit=[s-1]Pit,或Qi=[s-1]Pi和Qit=[s-1]Pit,或Qih=[s-1]Pih和Qit=[s-1]Pit
当需要计算属性A对应的私钥dA时,属性私钥生成器直接使用缓存或保存的Qi,或Qit,或Qi和Qit,或Qih和Qit,计算dA=[hA]Qi,或dA=[hA]Qit,或dA=[hA]Qi+Qit,或dA=[hA]Qih+Qit
若采用dA=[hA]Qi+Qit方式计算属性A对应的私钥dA,则一旦出现dA为零元的情况(概率极小),所述属性私钥生成器重新在群Gi随机选择一个群元Pit并公开发布,重新计算Qit
若采用dA=[hA]Qih+Qit方式计算属性A对应的私钥dA,则一旦出现dA为零元的情况(概率极小),所述属性及属性私钥秘密份额管理器改变属性A的名字或标识符,或者所述属性私钥生成器重新在群Gi中随机选择一个不等于Pi的群元Pih或Pit并公开发布。
对于以上所述的属性私钥及私钥秘密份额生成和管理方法,当用户的一个属性A被取消后,所述属性及属性私钥秘密份额管理器将用户数据库中保存的用户的属性A对应的属性私钥dA的秘密份额dAs从用户信息中删除。
基于以上所述的属性私钥及私钥秘密份额生成和管理方法的基于属性的数据加密方法如下。
当数据加密方需要利用属性集S=(A1,…,Am)对数据加密时,其中m≥1,数据加密方按与属性私钥生成器同样的约定的方式,将属性A1,…,Am分别映射到群Gi,得到属性A1,…,Am的属性公钥GA1,…,GAm(因为属性公钥的映射规则是约定的、公开的,故而任何一方都能进行此映射);
数据加密方以GA1+…+GAm为(属性集S的)公钥采用基于双线性映射的加密算法对数据加密;
若采用dA=[s]GA的方式生成属性A对应的私钥dA,则所述以GA1+…+GAm为(属性集S的)公钥采用基于双线性映射的加密算法对数据加密所进行的操作包括计算w=ei(GA1+…+GAm,Ppub)r,T=[r]Pj,其中r是密码运算过程中在[1,n-1]内随机选取的整数或者从在[1,n-1]内的随机选取的整数导出的的整数(如Boneh-Franklin的IBE),而T=[r]Pj(群Gj中的元)是附加在加密的数据中用于解密的密码数据;
若采用dA=[s-1]GA的方式生成属性A对应的私钥dA,则所述以GA1+…+GAm为(属性集S的)公钥采用基于双线性映射的加密算法对数据加密所进行的操作包括计算w=ei(GA1+…+GAm,Pj)r,T=[r]Ppub,其中r是密码运算过程中在[1,n-1]内随机选取的整数或者从在[1,n-1]内的随机选取的整数导出的的整数(如Boneh-Franklin的IBE),而T=[r]Ppub(群Gj中的元)是附加在加密的数据中用于解密的密码数据;
所述利用属性集S=(A1,…,Am)对数据加密,限定了只有属性集S中所有属性的拥有者(拥有所有属性的用户)才能解密被加密的数据;
所述数据加密方是所述属性及属性私钥秘密份额管理器中的用户或用户之外的其他实体。
对于以上所述的基于属性的数据加密方法,若m≥2,则所述属性集S中允许包含一个系统属性AS(用系统名或系统标识表示),所述系统属性AS与其他属性一样被映射到群Gi中一个元GAS,以GAS为属性公钥,同样对应一个系统属性私钥dAS=[s]GAS;系统属性私钥dAS的服务端的秘密份额dASs就是dAS(即系统属性私钥dAS本身),而系统属性私钥dAS的用户端的秘密份额dASu如下:
若属性私钥生成器采用dA=dAs+dAu的方式分解一个属性私钥dA,则系统属性私钥dAS的用户端的秘密份额dASu是群Gi中零元(固定如此);
若属性私钥生成器采用dA=[dAu]dAs的方式化解一个属性私钥dA,则系统属性私钥dAS的用户端的秘密份额dASu是整数1固定地;
若允许属性集S中包含系统属性AS,则采用dA=[dAs]dAu的方式化解一个属性私钥dA的方式不被采用;
若允许属性集S中包含系统属性AS,则用户方无需申请系统属性AS的私钥的用户端的秘密份额,服务端自动生成、保存系统属性AS的私钥dAS,并将dAS作为服务端的秘密份额;
属性及属性私钥秘密份额管理器的每个用户缺省地拥有系统属性AS,并拥有属性私钥dAS的的秘密份额(已知常数)。
对于以上所述的基于属性的数据加密方法的基于属性的数据解密方法,所述基于属性的数据解密方法还涉及服务端的密码服务器和用户端的与密码服务器交互、进行数据解密操作处理的数据解密客户端程序;所述数据解密客户端程序调用用户端的密码组件进行数据解密运算;用户端的密钥客户端程序、密码组件和数据解密客户端程序统称为用户方;
当用户方需要解密采用属性集S=(A1,…,Am)加密的数据时,即需要对以GA1+…+GAm为公钥采用基于双线性映射的加密算法加密后的数据解密时,也即需要以dA1+…+dAm为(属性集S的)私钥对加密的数据解密时,也即在解密过程中需要计算w=ei(dA1+…+dAm,T)时,其中dA1,…,dAm分别是属性A1,…,Am对应的属性私钥,T=[r]Pj或T=[r]Ppub(前者对应dA=[s]GA,后者对应dA=[s-1]GA)是数据加密时计算的、并附在被加密数据中的密码数据,所述服务端的密码服务器检查所述属性及属性私钥秘密份额管理器的用户数据库的当前用户的用户信息中是否有解密数据所需的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,若没有,则解密失败,若有,则所述服务端的密码服务器利用用户数据库中的当前用户的用户信息中的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,而所述用户方利用用户端保存的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,二者在不暴露各自秘密的情况下,通过交互完成针对加密数据的解密运算(最后解密得到数据明文的操作由密码服务器完成,或者由用户方完成);
所述当前用户是正在进行数据解密操作的用户方的用户。
对于以上所述的基于属性的数据解密方法:
若dA1+…+dAm=(dA1s+…+dAms)+(dA1u+…+dAmu),则所述密码服务器和用户方按如下方式协同计算w=ei(dA1+…+dAm,T):
密码服务器计算ws=ei(dA1s+…+dAms,T);
用户方计算wu=ei(dA1u+…+dAmu,T);
之后密码服务器或用户方计算w=wswu
若dA1+…+dAm=[dA1u]dA1s+…+[dAmu]dAms,则所述密码服务器和用户方按如下方式协同计算w=ei(dA1+…+dAm,T):
密码服务器计算ws1=ei(dA1s,T),…,wsm=ei(dAms,T),然后将ws1,…,wsm将发送给用户方;
用户方计算wu1=ws1^dA1u,…,wum=wsm^dAmu,其中^表示幂运算,^前的元是基数,^后的数是指数;
之后密码服务器或用户方计算wu1,…,wum的乘,w=wu1…wum
若dA1+…+dAm=[dA1s]dA1u+…+[dAms]dAmu,则所述密码服务器和用户方按如下方式协同计算w=ei(dA1+…+dAm,T):
用户方计算wu1=ei(dA1u,T),…,wum=ei(dAmu,T),然后将wu1,…,wum将发送给密码服务器;
密码服务器计算ws1=wu1^dA1s,…,wsm=wum^dAms
之后密码服务器或用户方计算ws1,…,wsm的乘,w=ws1…wsm
对于以上所述的基于属性的数据解密方法:
若在进行数据解密的过程中用户方的数据解密客户端程序通过与密码服务器的交互知道用户拥有属性集S=(A1,…,Am)中的属性,但没有(S中的一个或多个或全部)属性所对应的属性私钥的秘密份额时,所述数据解密客户端程序调用前述密钥客户端程序申请获取属性所对应的属性私钥的秘密份额(当然,对于系统属性AS对应的属性私钥的秘密份额是无需获取的)。
基于以上所述的属性私钥及私钥秘密份额生成和管理方法的属性私钥及私钥秘密份额生成和管理系统如下。
所述属性私钥及私钥秘密份额生成和管理系统包括服务端的属性私钥生成器、密钥服务器、属性及属性私钥秘密份额管理器,用户端的密钥客户端程序和密码组件;
所述属性私钥及私钥秘密份额生成和管理系统按所述属性私钥及私钥秘密份额生成和管理方法生成用户属性所对应的私钥以及属性私钥的服务端的秘密份额和用户端的秘密份额,保存和管理用户属性所对应的私钥的服务端的秘密份额。
基于以上所述的基于属性的数据加密方法和基于属性的数据解密方法的基于属性的数据加密系统如下。
所述基于属性的数据加密系统包括服务端的属性私钥生成器、密钥服务器、属性及属性私钥秘密份额管理器、密码服务器,用户端的密钥客户端程序、数据解密客户端程序和密码组件;
所述基于属性的数据加密系统按前述属性私钥及私钥秘密份额生成和管理方法生成用户属性所对应的私钥以及属性私钥的服务端的秘密份额和用户端的秘密份额,保存和管理用户属性以及用户属性所对应的私钥的服务端的秘密份额;
当数据加密方需要利用属性集S=(A1,…,Am)对数据加密时,数据加密方按所述基于属性的数据加密方法对数据加密;
当用户方需要解密采用属性集S=(A1,…,Am)加密的数据时,用户方和密码服务器按所述基于属性的数据解密方法对加密的数据解密。
基于以上所述的基于属性的数据加密系统的基于属性的文件加密系统如下。
所述基于属性的文件加密系统还包括用户端的文件解密客户端程序;所述文件解密客户端程序调用数据解密客户端程序与密码服务器交互,对加密文件进行解密操作处理;用户端的密钥客户端程序、数据解密客户端程序、密码组件和文件解密客户端程序统称为用户方;
文件加密方按如下方式对文件进行加密(文件加密方可以是任一用户或系统,不必是属性及属性私钥秘密份额管理器的用户):
随机生成一个对称密钥ke(随机对称密钥ke),采用对称密钥密码算法对文件进行加密;
分别使用p个属性集S1,…,Sp,p≥1,按前述基于属性的数据加密方法分别对随机对称密钥ke加密,得到随机对称密钥ke的p份密文数据kenc_1,…,kenc_p;(如何选择S1,…,Sp属性集及属性集中的每个属性于本发明之外的事情)
设定文件的访问控制策略ac(访问控制策略可以是基于属性的访问控制策略,也可以不是,如何选择、设定访问控制策略ac属于本发明之外的事情);
将p个属性集S1,…,Sp及对应的随机对称密钥ke的p份密文数据kenc_1,…,kenc_p,以及文件访问控制策略ac合并,对合并得到的数据进行数字签名(采用何种数字签名算法、方法和技术,属于本发明之外的事),得到文件解密控制数据;
将文件解密控制数据作为附加数据附加到加密后的文件中(如附加到加密文件的头部或尾部)得到加密的文件(加密文件);
当用户方需要对加密文件进行解密时,用户方和密码服务器按如下方式进行文件解密操作处理:
所述密码服务器从加密文件中取出文件解密控制数据,或者用户方从加密文件中取出文件解密控制数据并提交到密码服务器;
密码服务器验证文件解密控制数据的数字签名的有效性,若验证失败,则解密失败,若验证通过,则继续;
密码服务器利用文件解密控制数据中的文件访问控制策略ac,检查确定用户是否具有访问此加密文件明文的权限,若没有,则解密失败,若有,则继续;(访问控制策略规定的是基于属性的访问控制,则密码服务器根据属性及属性私钥秘密份额管理器的用户数据库中的当前用户的用户信息中的属性信息进行访问控制决策;若访问控制策略规定的不是基于属性的访问控制,则密码服务器根据属性及属性私钥秘密份额管理器的用户数据库中的当前用户的用户信息中的其他用户信息,或者依据其他系统的用户数据库中的当前用户的其他用户信息进行访问控制决策)
密码服务器依据属性及属性私钥秘密份额管理器的用户数据库中的当前用户的属性信息,检查确定当前用户的用户属性是否满足文件解密控制数据中的p个属性集S1,…,Sp中的任一个,即用户是否有p个属性集S1,…,Sp中的某一个属性集中的全部属性,若没有,则解密失败,若有,密码服务器利用用户数据库中的、用户满足的属性集中的用户属性所对应的属性私钥的服务端的秘密份额,通过与用户方交互,解密得到对文件进行加密时所采用的随机对称密钥ke,然后利用解密得到的随机对称密钥ke解密被加密的文件,得到文件的明文(最终是密码服务器还是用户方最后解密得到对文件进行加密的随机对称密钥ke和使用ke解密加密文件得到文件的明文都可以,取决于具体实施);
所述当前用户是正在进行文件解密操作的用户方用户。
对于以上所述的基于属性的文件加密系统:
若加密使用的属性集中的属性是受时间有效期限定的属性,则密码服务器在进行解密操作前,先检查每个属性集中的每个属性的有效期,若当前时刻超过了文件解密控制数据中的某一个属性集中的某一个属性的时间有效期或未到属性中规定的时间有效期,则此属性集不能用于文件解密;若文件解密控制数据中的所有属性集不能用于文件解密,则文件解密失败;
若文件解密控制数据中的某一个属性集中的属性是受时间有效期限定的属性,则当前用户除了需要有此属性集中规定的有效的属性外,还需要有受时间有效期限定的属性所对应的属性私钥的秘密份额(若有有效的属性,没有对应的属性私钥秘密份额,则需解密方申请对应的属性私钥的秘密份额);所述有效的属性即在进行文件解密操作时有效的属性。
基于以上所述基于属性的数据加密系统的基于属性的加密文件服务系统如下。
所述加密文件服务系统还包括服务端的存储有加密文件的加密文件存储服务器和用户端的用于访问加密文件存储服务器中的加密文件的文件客户端程序;
所述文件客户端程序访问所述加密文件存储服务器获取被加密的问题;所述文件客户端程序调用数据解密客户端程序与密码服务器交互,完成加密文件的解密操作;
用户端的密钥客户端程序、数据解密客户端程序、密码组件和文件客户端程序统称为用户方;
所述加密文件存储服务器对存储的加密文件实施有访问控制(采用何种访问控制方式属于本发明之外的事);
在文件被存储到加密文件存储服务器之前,文件加密方按如下方式对文件进行加密(文件加密方可以是文件存储系统、用户或其他实体):
随机生成一个对称密钥ke(随机对称密钥ke)采用对称密钥密码算法对文件进行加密;
分别使用p个属性集S1,…,Sp,p≥1,按前述基于属性的数据加密方法对对称密钥ke加密,得到对称密钥ke的p份密文数据kenc_1,…,kenc_p;
将p个属性集S1,…,Sp和对应的随机对称密钥ke的p份密文数据kenc_1,…,kenc_p合并,得到文件解密控制数据;
将文件解密控制数据作为附加数据附加到加密后的文件中(如附加到加密文件的头部或尾部);
当用户方使用文件客户端程序访问加密文件存储服务器,请求获取一个加密文件时,加密文件存储服务器根据(自身)实施的访问控制,检查确定用户是否具有访问此加密文件明文的权限,若没有,则解密失败,若有,则继续后续操作;
加密文件存储服务器将加密文件提交给密码服务器,请求解密加密文件;
所述密码服务器从加密文件中取出文件解密控制数据;
密码服务器从属性及属性私钥秘密份额管理器的用户数据库中的当前用户的属性信息,检查确定用户属性是否满足文件解密控制数据中的p个属性集S1,…,Sp中的任一个,即用户是否有p个属性集S1,…,Sp中的某一个属性集中的全部属性,若没有,则解密失败;若有,则密码服务器利用用户数据库中的、用户满足的属性集中的用户属性所对应的私钥的服务端的秘密份额,以加密文件存储服务器为中介,通过与用户方交互,解密得到对文件进行加密时采用的随机对称密钥ke,然后利用解密得到的随机对称密钥ke解密被加密的文件,得到文件的明文;
密码服务器将解密后的文件返回给加密文件存储服务器;
加密文件存储服务器将解密得到的文件(明文文件)返回给用户方,或者通过人机交互界面将文件内容展现给用户。
对于以上所述的基于属性的加密文件服务系统:
若文件解密控制数据中的某一个属性集中的属性是受时间有效期限定的属性,且属性的有效期当前有效(当前时刻有效),则解密文件的用户方的用户除了需要有此属性集中所规定的有效的属性外,还需要有受时间有效期限定的属性所对应的属性私钥的秘密份额(若用户有有效的属性,但没有对应的属性私钥的秘密份额,则需解密方申请对应的属性私钥的秘密份额);用户有此属性集中所规定的有效的属性,即在进行文件解密操作时用户有对应于此所属性集所规定的属性(过去拥有此属性不行);
若文件解密控制数据中的属性集中的某一个属性集中的属性是受时间有效期限定的属性,且此属性集中的(一个或多个)属性的有效期未到,则此属性集及对应的属性私钥(的秘密份额)不允许用于解密加密文件;
对于包含有受时间有效期限定的属性的属性集,文件加密方在文件解密控制数据中设定是否允许对属性集中的受时间有效期限定的属性进行更新;
若文件解密控制数据中的某一个属性集中的属性是受时间有效期限定的属性,且属性的有效期超过了有效时间(当前时刻已失效),而属性集中的受时间有效期限定的属性不允许更新,则此属性集及对应的属性私钥(的秘密份额)不允许用于解密加密文件;
若用于文件加密的属性集中有受时间有效期限定的属性,且加密文件所用的属性集中包含的受时间有效期限定的属性允许更新,则文件加密方在加密文件时,同时使用加密文件服务系统的一个标识(如系统的域名)作为公钥,采用标识密码算法对随机对称密钥ke加密,得到ke的密文kenc_s,然后将kenc_s作为文件解密控制数据的一部分加入到文件解密控制数据中(当有多个属性集时,只要一个属性集有此性质,则如此);
当密码服务器解密被加密的文件时,若检查发现文件解密控制数据中的属性是受时间有效期限定的属性,且属性有效期超过了有效时间,而属性的有效期允许更新,则密码服务器从文件解密控制数据中取出采用加密文件服务系统的标识加密的随机对称密钥ke的密文kenc_s,使用加密文件服务系统的标识私钥解密kenc_s,得到随机对称密钥ke的明文,然后使用当前时刻有效的p个属性集S1,…,Sp(p个属性集S1,…,Sp中的每个属性集中的每个属性都是当前时刻有效的属性)重新对随机对称密钥ke加密,去掉加密文件的原文件解密控制数据中的使用过期的属性集加密的随机对称密钥ke的密文数据,将新加密得到的随机对称密钥ke的密文数据放入到加密文件的文件解密控制数据中,更新文件解密控制数据中的数据集,即更新文件解密控制数据,然后将更新了文件解密控制数据的加密文件返回给加密文件存储服务器保存,替换以前的加密文件,之后密码服务器,使用更新的文件解密控制数据,以加密文件存储服务器为中介,通过与用户方交互解密加密文件。
从以上描述可以看到,本发明的方案无论是私钥生成,还是数据加密和解密,与现有基于属性的加密方案相比都要简单得多,而且易于实施用户属性撤销,属性私钥更新;本发明的方案虽然不像现有的基于属性的加密(如CP-ABE、KP-ABE)方案那样由密码算法本身来实现复杂的加密解密控制结构,但却能满足现实中的大部分加密解密控制需求,因为大部分的基于属性的数据加密、解密控制需求是针对的用户端、服务端模式(客户端、服务器模式)的应用场景,而且大部分的基于属性的访问控制可用属性集的并(即逻辑“或”)来表示,而且通过与访问控制的有机结合,能很好地满足高安全的数据安全防护需求,而不是仅仅依赖于密码算法本身来解决所有问题(这样做的使用效果未必好)。
附图说明
图1:本发明的数据加密系统示意图
图2:本发明的文件加密系统示意图
图3:本发明的加密文件服务系统示意图
具体实施方式
下面结合实施例对本发明的具体实施方式进行描述。
实施例1、
此实施例涉及属性私钥及私钥秘密份额生成和管理方法的实施。此实施例涉及服务端的属性私钥生成器(Attribute Private Key Generator)、密钥服务器、属性及属性私钥秘密份额管理器,用户端的用户、密钥客户端程序和密码组件。
属性私钥生成器用于生成用户属性所对应的私钥即属性私钥;用户属性是反映用户特征的信息(如性别、职务、职称、角色等);
密钥服务器是用户申请属性私钥的秘密份额时与用户的密钥客户端程序进行交互的服务端的系统组件;
属性及属性私钥秘密份额管理器对用户的属性以及属性私钥的秘密份额进行管理;属性及属性私钥秘密份额管理器有用户数据库,用于存放用户属性以及属性私钥的秘密份额;属性私钥的秘密份额是与属性私钥相关的秘密数据;
用户是具有用户属性、需要使用属性私钥进行数据解密操作的个人、机构或系统;
密钥客户端程序是用户端的与密钥服务器交互、申请获取用户属性私钥的秘密份额的程序;
密码组件是用户端的进行密码运算、存储用户密钥以及存储属性私钥的秘密份额的软件组件或软硬件结合的组件;
用户、密钥客户端程序和密码组件统称为用户方。
实施例涉及双线性映射(配对运算)e:G1×G2→GT(即双线性映射e(V,T),其中V是群G1中的元,T是群G2中的元,而e(V,T)是群GT中元);G1、G2为加法群(通常是椭圆曲线点群),GT为乘法群;群G1、G2、GT的阶为素数n;群G1、G2的生成元分别为P1、P2
在此实施例中,属性私钥生成器有主密钥s和对应的主公钥Ppub=[s]P2,其中P2是群G2的生成元。
在此实施例采用的将属性A的名字或标识符映射到双线性映射e:G1×G2→GT的椭圆曲线群G1中的元的方法如下:
将属性A的名字或标识符映射到群G1中的一个元的纵坐标yA,然后通过群G1对应的椭圆曲线方程得到横坐标xA,则GA=(xA,yA);(即Boneh-Franklin的基于配对的IBE算法中的将标识ID映射为双线性映射的椭圆曲线群中的元GID的方法)
或者,将属性A的名字或标识符映射到群G1中的一个元的横坐标xA,然后通过群G1对应的椭圆曲线方程得到两个纵坐标,取其中一个纵坐标yA,则GA=(xA,yA)(注意,不是每个xA都有解yA,对于无解的情形,对xA再变换,如多次取散列或哈希值,直到有解yA)。
这里所说的属性的名字是属性的标识名称(如男性、女性),或者是针对属性的描述文字(如年龄大于18岁,只要能区分不同属性即可)。
当用户方通过密钥服务器申请属性A所对应的私钥的秘密份额时,属性私钥生成器检查本地是否已缓存或保存有属性A所对应的属性私钥dA,若有,则转入后续处理;若本地没有缓存或保存有属性A所对应的属性私钥dA,则属性私钥生成器按前述方法将属性A的名字(name)或标识符(identifier)映射到群G1中的一个元GA,然后计算得到属性A对应的私钥即属性私钥dA=[s]GA或dA=[s-1]GA,其中s-1是s的模n乘法逆(即(s-1s)mod n=1),将属性私钥dA缓存或保存在本地(缓存在内存中或保存在属性私钥生成器的密码装置中或加密保存在数据库中);
之后,属性私钥生成器将dA分解为dA=dAs+dAu,或者将dA化解为dA=[dAu]dAs或dA=[dAs]dAu;然后将dAs、dAu返回给密钥服务器;
或者,属性私钥生成器将dA返回给密钥服务器,密钥服务器将dA分解为dA=dAs+dAu,或者将dA化解为dA=[dAu]dAs或dA=[dAs]dAu
密钥服务器将dAs保存在属性及属性私钥秘密份额管理器用户数据库中的当前用户的用户信息中,将dAu返回给用户方的密钥客户端程序保存到用户端的密码组件中。
此实施例中的用户属性可以是受时间有效期限定的属性,也可以是未受时间有效期限定的属性;
若是受时间有效期限定的属性,则属性由属性名或属性标识符加上时间有效期所构成:
如,属性名:时间有效期,如user@secret.com:xxxx-yyyy);
这里的时间有效期由起始时间和结束时间构成,时间有效期的表示方式是从一个约定的零时时刻开始(如约定某年某月某日的零时为零时时刻,如1970年1月1日0时0分0秒),然后按每隔一个约定的时间周期(如三个月、半年)更新时间有效期;
对于受时间有效器限定的属性,用户方在属性的时间有效期即将到期之前的规定时间内(如到期之前的一周、两周内)或到期后,申请受新的时间有效期限定的属性所对应的私钥的秘密份额,用户方以及属性及属性私钥秘密份额管理器分别保存用户端和服务端的针对新的属性私钥的秘密份额(之前的秘密份额可以继续保存一段时间)。
当用户的一个属性A被取消后,所述属性及属性私钥秘密份额管理器将用户数据库中保存的用户的属性A对应的属性私钥dA的秘密份额dAs从用户信息中删除。
实施例2、
此实施例与实施例1的差别在于:在此实施例中用户属性A按与实施例1同样的方式被映射到群G2中的元GA,以此作为属性A所对应的公钥,并生成对应的属性私钥dA;属性私钥生成器有主密钥s和对应的主公钥Ppub=[s]P1,其中P1是群G1的生成元。
实施例3、
此实施例与实施例1的差别在于:将属性A的名字或标识符映射到群G1中的元的方法是,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]P1
将属性A的名字或标识符映射到[1,n-1]中的一个整数hA的方式包括使用约定的散列或哈希函数(如SM9标识密码算法中规定的散列或哈希函数)。
此实施例,若采用dA=[s]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q1=[s]P1
若采用dA=[s-1]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q1=[s-1]P1
当需要计算属性A对应的私钥dA时,属性私钥生成器直接使用缓存或保存的Q1,计算dA=[hA]Q1
此实施例,若采用dA=[s]GA方式生成属性私钥,则须从Ppub=[s]P2无法得到[s]P1
实施例4、
此实施例与实施例2的差别在于:将属性A的名字或标识符映射到群G2中的元的方法是,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]P2
此实施例,若采用dA=[s]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q2=[s]P2
若采用dA=[s-1]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q2=[s-1]P2
当需要计算属性A对应的私钥dA时,属性私钥生成器直接使用缓存或保存的Q2,计算dA=[hA]Q2
此实施例,若采用dA=[s]GA方式生成属性私钥,则须从Ppub=[s]P1无法得到[s]P2
实施例5、
此实施例与实施例3的差别在于:将属性A的名字或标识符映射到群G1中的元的方法是,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]P1t,其中P1t是属性私钥生成器在群G1中随机选择的一个不等于P1的元,并作为公开参数发布。
此实施例,若采用dA=[s]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q1t=[s]P1t
若采用dA=[s-1]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q1t=[s-1]P1t
当需要计算属性A对应的私钥dA时,属性私钥生成器直接使用缓存或保存的Q1t,计算dA=[hA]Q1t
属性私钥生成器在群G1中随机选择一个不等于P1的元P1t的方式包括:在[2,n-1]随机选择一个整数t,计算P1t=[t]P1
实施例6、
此实施例与实施例4的差别在于:将属性A的名字或标识符映射到群G2中的元的方法是,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]P2t,其中P2t是属性私钥生成器在群G1中随机选择的一个不等于P2的元,并作为公开参数发布。
此实施例,若采用dA=[s]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q2t=[s]P2t
若采用dA=[s-1]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q2t=[s-1]P2t
当需要计算属性A对应的私钥dA时,属性私钥生成器直接使用缓存或保存的Q2t,计算dA=[hA]Q2t
属性私钥生成器在群Gi中随机选择一个不等于P2的元P2t的方式包括:在[2,n-1]随机选择一个整数t,计算P2t=[t]P2
实施例7、
此实施例与实施例5的差别在于:将属性A的名字或标识符映射到群G1中的元的方法是,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]P1+P1t
此实施例,若采用dA=[s]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q1=[s]P1和Q1t=[s]P1t
若采用dA=[s-1]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q1=[s-1]P1和Q1t=[s-1]P1t
当需要计算属性A对应的私钥dA时,属性私钥生成器直接使用缓存或保存的Q1和Q1t,计算dA=[hA]Q1+Q1t
此实施例,若一旦出现GA或dA为零元的情况(概率极小),属性私钥生成器重新在群G1中随机选择一个不等于P1的群元P1t并公开发布。
实施例8、
此实施例与实施例6的差别在于:将属性A的名字或标识符映射到群G2中的元的方法是,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]P2+P2t
此实施例,若采用dA=[s]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q2=[s]P2和Q2t=[s]P2t
若采用dA=[s-1]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q2=[s-1]P2和Q2t=[s-1]P2t
当需要计算属性A对应的私钥dA时,属性私钥生成器直接使用缓存或保存的Q2和Q2t,计算dA=[hA]Q2+Q2t
此实施例,若一旦出现GA为零元的情况(概率极小),属性私钥生成器重新在群G2中随机选择一个不等于P2的群元P2t并公开发布。
实施例9、
此实施例与实施例7的差别在于:将属性A的名字或标识符映射到群G1中的元的方法是,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]P1h+P1t,其中P1h是属性私钥生成器在群G1中随机选择的一个不等于P1的元,并作为公开参数发布;
此实施例,属性私钥生成器在群G1中随机选择一个不等于P1的元P1h的方式包括:在[2,n-1]随机选择一个整数h,计算P1h=[h]P1
此实施例,若采用dA=[s]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q1h=[s]P1h和Q1t=[s]P1t
若采用dA=[s-1]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q1h=[s-1]P1h和Q1t=[s-1]P1t
当需要计算属性A对应的私钥dA时,属性私钥生成器直接使用缓存或保存的Q1h和Q1t,计算dA=[hA]Q1h+Q1t
此实施例,若一旦出现GA或dA为零元的情况(概率极小),所述属性及属性私钥秘密份额管理器改变属性A的名字或标识符,或者所述属性私钥生成器重新在群G1中随机选择一个不等于P1的群元P1h或P1t并公开发布。
实施例10、
此实施例与实施例8的差别在于:将属性A的名字或标识符映射到群G2中的元的方法是,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]P2h+P2t,其中P2h是属性私钥生成器在群G2中随机选择的一个不等于P2的元,并作为公开参数发布;
此实施例,属性私钥生成器在群G2中随机选择一个不等于P2的元P2h的方式包括:在[2,n-1]随机选择一个整数h,计算P2h=[h]P2
此实施例,若采用dA=[s]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q2h=[s]P2h和Q2t=[s]P2t
若采用dA=[s-1]GA的方式生成属性私钥,则属性私钥生成器预先计算并缓存或保存有Q2h=[s-1]P2h和Q2t=[s-1]P2t
当需要计算属性A对应的私钥dA时,属性私钥生成器直接使用缓存或保存的Q2h和Q2t,计算dA=[hA]Q2h+Q2t
此实施例,若一旦出现GA或dA为零元的情况(概率极小),所述属性及属性私钥秘密份额管理器改变属性A的名字或标识符,或者所述属性私钥生成器重新在群G2中随机选择一个不等于P2的群元P2h或P2t并公开发布。
在以上实施例1-10中,属性私钥生成器或密钥服务器将dA分解为dA=dAs+dAu的方法包括:
在群G1或G2(取决于将dA在哪个群)中随机选取一个不等于dA的非零元P作为dAs,计算dAu=dA-dAs,或者在群G1或G2中随机选取一个不等于dA的非零元P作为dAu,计算dAs=dA-dAu
或者,在[2,n-1]内随机选取一个整数ts,计算tu=(1-ts)mod n(求模n余数运算),或在[2,n-1]内随机选取一个整数tu,计算ts=(1-tu)mod n;计算dAs=[ts]dA,dAu=[tu]dA
在以上分解dA=dAs+dAu的过程中,属性私钥生成器或密钥服务器在群G1或G2中随机选取一个不等于dA的非零元P的方法包括:
在[2,n-1]内随机选取一个整数tA,计算P=[tA]dA
或者,在[1,n-1]内随机选取一个整数tA,计算P=[tA]Pi,其中Pi为群Gi的生成元,i=1或2(取决于dA在哪个群);若P不等于dA,则P即为所取;若P等于dA,则重新选取tA,重新计算P=[tA]Pi,直到P不等于dA
在以上实施例1-10中,属性私钥生成器或密钥服务器将dA化解为dA=[dAu]dAs或dA=[dAs]dAu的方法包括:
在[1,n-1]内随机选择一个整数tZ,计算dt=[(tZ)-1]dA,其中(tZ)-1为tZ的模n乘法逆(即(tZ(tZ)-1)mod n=1),然后以tZ作为dAu,以dt作为dAs,或者以tZ作为dAs,以dt作为dAu
实施例11、
此实施例在实施例1、3、5、7、9中任一个的基础上,实施本发明的基于属性的数据加密方法和数据解密方法,其中基于属性的数据加密方法实施如下。
当数据加密方需要利用属性集S=(A1,…,Am)对数据加密时,其中m≥1,数据加密方按与属性私钥生成器同样的、约定的方式,将属性A1,…,Am分别映射到群G1,得到属性A1,…,Am的属性公钥GA1,…,GAm(因为映射规则是约定的、公开的,故而任何一方都能进行此映射);
数据加密方以GA1+…+GAm为(属性集S的)公钥采用基于双线性映射的加密算法对数据加密;
若采用dA=[s]GA的方式生成属性A对应的私钥dA,则以GA1+…+GAm为(属性集S的)公钥采用基于双线性映射的加密算法对数据加密的操作包括计算w=e(GA1+…+GAm,Ppub)r,T=[r]P2,其中r是密码运算过程中在[1,n-1]内随机选取的整数或者从在[1,n-1]内的随机选取的整数导出的的整数,而T=[r]P2(群G2中的元)是附加在加密的数据中用于解密的密码数据;
若采用dA=[s-1]GA的方式生成属性A对应的私钥dA,则以GA1+…+GAm为(属性集S的)公钥采用基于双线性映射的加密算法对数据加密的操作包括计算w=e(GA1+…+GAm,P2)r,T=[r]Ppub,其中r是密码运算过程中在[1,n-1]内随机选取的整数或者从在[1,n-1]内的随机选取的整数导出的的整数,而T=[r]Ppub(群G2中的元)是附加在加密的数据中用于解密的密码数据。
利用属性集S=(A1,…,Am)对数据加密,限定了只有属性集S中所有属性的拥有者(拥有所有属性的用户)才能解密被加密的数据;
数据加密方是属性及属性私钥秘密份额管理器中的用户或用户之外的其他实体。
此实施例,若m≥2,则属性集S中允许包含一个系统属性AS(用系统名、系统标识表示);系统属性AS与其他属性一样被映射到群G1中一个元GAS,以GAS为属性公钥,同时对应一个属性私钥dAS=[s]GAS;系统属性私钥dAS的服务端的秘密份额dASs就是dAS(系统属性私钥dAS本身),而系统属性私钥dAS的用户端的秘密份额dASu如下:
若属性私钥生成器采用dA=dAs+dAu的方式分解一个属性私钥dA,则系统属性私钥dAS的用户端的秘密份额dASu固定地是群G1中零元;
若属性私钥生成器采用dA=[dAu]dAs的方式化解一个属性私钥dA,则系统属性私钥dAS的用户端的秘密份额dASu固定地是整数1;
若允许属性集S中包含系统属性AS,则采用dA=[dAs]dAu的方式化解一个属性私钥dA的方式不被采用。
若允许属性集S中包含系统属性AS,则用户方无需申请系统属性AS的私钥的用户端秘密份额,服务端自动生成、保存系统属性AS的私钥dAS
属性及属性私钥秘密份额管理器的每个用户缺省地拥有系统属性AS,并拥有属性私钥dAS的的秘密份额(已知常数)。
此实施例实施的基于属性的数据解密方法还涉及服务端的密码服务器,以及用户端的与密码服务器交互、进行数据解密操作处理的数据解密客户端程序;所述数据解密客户端程序调用用户端的密码组件进行数据解密运算;用户端的密钥客户端程序、密码组件和数据解密客户端程序在此实施例中统称为用户方。
基于属性的数据解密方法的实施如下。
当用户方需要解密采用属性集S=(A1,…,Am)加密的数据时,即需要对以GA1+…+GAm为公钥采用基于双线性映射的加密算法加密后的数据解密时,也即需要以dA1+…+dAm为(属性集S的)私钥对加密的数据解密时,也即在解密过程中需要计算w=e(dA1+…+dAm,T)时,其中dA1,…,dAm分别是属性A1,…,Am对应的属性私钥,T=[r]P2或T=[r]Ppub(前者对应dA=[s]GA,后者对应dA=[s-1]GA)是数据加密时计算的、并附在被加密数据中的密码数据,所述服务端的密码服务器检查所述属性及属性私钥秘密份额管理器的用户数据库的当前用户的用户信息中是否有解密数据所需的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,若没有,则解密失败,若有,则所述服务端的密码服务器利用用户数据库中的当前用户的用户信息中的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,而所述用户方利用用户端保存的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,二者在不暴露各自秘密的情况下,通过交互完成针对加密数据的解密运算(最后解密得到数据明文的操作由密码服务器完成,或者由用户方完成);
所述当前用户是正在进行数据解密操作的用户方的用户。
更具体地,若采用dA=[s]GA的方式生成属性私钥,则本实施例的数据加密和解密可采用如下实施方式。
采用Boneh-Franklin的基于配对的IBE算法中的基于双线性映射(配对)的加密方法以及相应的数据解密方法:
对于属性集S(A1,…,Am),数据加密方以公钥GA1+…+GAm作为Boneh-Franklin算法中的从标识ID映射得到的群G1中的元GID,通过计算w=e(GA1+…+GAm,Ppub)r和T=[r]P2按Boneh-Franklin算法进行数据加密,其中r是从[1,n-1]中随机选择的一个整数导出的[1,n-1]中的一个整数;这里,GA1,…,GAm分别是属性A1,…,Am对应的公钥;
数据解密方以dA1+…+dAm作为Boneh-Franklin算法中的标识私钥dID,通过计算w=e(dA1+…+dAm,T)按Boneh-Franklin算法完成解密运算。
或者,采用如下数据加密和解密方法:
对于属性集S(A1,…,Am),数据加密方以GA1+…+GAm为公钥,计算w=e(GA1+…+GAm,Ppub)r和T=[r]P2进行数据加密,其中r是在[1,n-1]内随机选择的整数,然后采用散列或哈希算法(如采用SM9标识密码算法中规定的密钥派生函数)得到w的散列值或哈希值k,然后以k为密钥对待加密的数据加密(直接对数据异或运算加密,或者采用约定的对称密钥密码算法对数据加密);
数据解密时,密码服务器和用户方,以dA1+…+dAm为私钥,通过交互协同完成w=(dA1+…+dAm,T)的计算,然后采用同样的散列或哈希算法得到w的散列值或哈希值k,然后以k为密钥对加密的数据解密(直接对加密的数据异或运算,或者采用约定的对称密钥密码算法对加密的数据解密)。
若采用dA=[s-1]GA的方式生成属性私钥,则可采用与以上两种具体的实施方式类似的方式,所采用的计算式、计算过程是类似的,差别仅仅在于w、T的计算式为,w=e(GA1+…+GAm,P2)r和T=[r]Ppub,其他计算过程一样。
在此实施例,若dA1+…+dAm=(dA1s+…+dAms)+(dA1u+…+dAmu),则所述密码服务器和用户方按如下方式协同计算w=e(dA1+…+dAm,T):
密码服务器计算ws=e(dA1s+…+dAms,T);
用户方计算wu=e(dA1u+…+dAmu,T);
之后密码服务器或用户方计算w=wswu
若dA1+…+dAm=[dA1u]dA1s+…+[dAmu]dAms,则所述密码服务器和用户方按如下方式协同计算w=e(dA1+…+dAm,T):
密码服务器计算ws1=e(dA1s,T),…,wsm=e(dAms,T),然后将ws1,…,wsm将发送给用户方;
用户方计算wu1=ws1^dA1u,…,wum=wsm^dAmu,其中^表示幂运算,^前的元是基数,^后的数是指数;
之后密码服务器或用户方计算wu1,…,wum的乘,w=wu1…wum
若dA1+…+dAm=[dA1s]dA1u+…+[dAms]dAmu,则所述密码服务器和用户方按如下方式协同计算w=e(dA1+…+dAm,T):
用户方计算wu1=e(dA1u,T),…,wum=e(dAmu,T),然后将wu1,…,wum将发送给密码服务器;
密码服务器计算ws1=wu1^dA1s,…,wsm=wum^dAms
之后密码服务器或用户方计算ws1,…,wsm的乘,w=ws1…wsm
此实施例,若在进行数据解密的过程中用户方的数据解密客户端程序通过与密码服务器的交互知道用户拥有属性集S=(A1,…,Am)中的属性,但没有(S中的一个或多个或全部)属性所对应的属性私钥的秘密份额时,所述数据解密客户端程序调用前述密钥客户端程序申请获取属性所对应的属性私钥的秘密份额(当然,对于系统属性AS对应的属性私钥的秘密份额是无需获取的)。
实施例12、
此实施例在实施例2、4、6、8、10中任一个的基础上,实施基于属性的数据加密方法和数据解密方法,具体如下。
当数据加密方需要利用属性集S=(A1,…,Am)对数据加密时,其中m≥1,数据加密方按与属性私钥生成器同样的、约定的方式,将属性A1,…,Am分别映射到群G2,得到属性A1,…,Am的属性公钥GA1,…,GAm(因为映射规则是约定的、公开的,故而任何一方都能进行此映射);
数据加密方以GA1+…+GAm为(属性集S的)公钥采用基于双线性映射的加密算法对数据加密;
若采用dA=[s]GA的方式生成属性A对应的私钥dA,则以GA1+…+GAm为(属性集S的)公钥采用基于双线性映射的加密算法对数据加密的操作包括计算w=e(Ppub,GA1+…+GAm)r,T=[r]P1,其中r是密码运算过程中在[1,n-1]内随机选取的整数或者由在[1,n-1]内的随机选取的整数导出的的整数,而T=[r]P1(群G1中的元)是附加在加密的数据中用于解密的密码数据;
若采用dA=[s-1]GA的方式生成属性A对应的私钥dA,则以GA1+…+GAm为(属性集S的)公钥采用基于双线性映射的加密算法对数据加密的操作包括计算w=e(P1,GA1+…+GAm)r,T=[r]Ppub,其中r是密码运算过程中在[1,n-1]内随机选取的整数或者从在[1,n-1]内的随机选取的整数导出的的整数,而T=[r]Ppub(群G1中的元)是附加在加密的数据中用于解密的密码数据。
利用属性集S=(A1,…,Am)对数据加密,限定了只有属性集S中所有属性的拥有者(拥有所有属性的用户)才能解密被加密的数据;
数据加密方是属性及属性私钥秘密份额管理器中的用户或用户之外的其他实体。
此实施例,若m≥2,则所述属性集S中允许包含一个系统属性AS(用系统名或系统标识表示),所述系统属性AS与其他属性一样被映射到群G2中一个元GAS,以GAS为属性公钥,同样对应一个系统属性私钥dAS=[s]GAS;系统属性私钥dAS的服务端的秘密份额dASs就是dAS(即系统属性私钥dAS本身),而系统属性私钥dAS的用户端的秘密份额如下:
若属性私钥生成器采用dA=dAs+dAu的方式分解一个属性私钥dA,则系统属性私钥dAS的用户端的秘密份额dASu是群G2中零元(固定如此);
若属性私钥生成器采用dA=[dAu]dAs的方式化解一个属性私钥dA,则系统属性私钥dAS的用户端的秘密份额dASu是整数1固定地;
若允许属性集S中包含系统属性AS,则采用dA=[dAs]dAu的方式化解一个属性私钥dA的方式不被采用。
若允许属性集S中包含系统属性AS,则用户方无需申请系统属性AS的私钥的用户端的秘密份额,服务端自动生成、保存系统属性AS的私钥dAS,并将dAS作为服务端的秘密份额;
属性及属性私钥秘密份额管理器的每个用户缺省地拥有系统属性AS,并拥有属性私钥dAS的的秘密份额(已知常数)。
此实施例实施的基于属性的数据解密方法还涉及服务端的密码服务器,以及用户端的与密码服务器交互、进行数据解密操作处理的数据解密客户端程序;数据解密客户端程序调用用户端的密码组件进行数据解密运算;用户端的密钥客户端程序、密码组件和数据解密客户端程序在此实施例中统称为用户方。
基于属性的数据解密方法的实施如下。
当用户方需要解密采用属性集S=(A1,…,Am)加密的数据时,即需要对以GA1+…+GAm为公钥采用基于双线性映射的加密算法加密后的数据解密时,也即需要以dA1+…+dAm为(属性集S的)私钥对加密的数据解密时,也即在解密过程中需要计算w=e(T,dA1+…+dAm)时,其中dA1,…,dAm分别是属性A1,…,Am对应的属性私钥,T=[r]P1或T=[r]Ppub(前者对应dA=[s]GA,后者对应dA=[s-1]GA)是数据加密时计算的、并附在被加密数据中的密码数据,所述服务端的密码服务器检查所述属性及属性私钥秘密份额管理器的用户数据库的当前用户的用户信息中是否有解密数据所需的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,若没有,则解密失败,若有,则所述服务端的密码服务器利用用户数据库中的当前用户的用户信息中的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,而所述用户方利用用户端保存的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,二者在不暴露各自秘密的情况下,通过交互完成针对加密数据的解密运算(最后解密得到数据明文的操作由密码服务器完成,或者由用户方完成)。
类似地,若采用dA=[s]GA的方式生成属性私钥,则本实施例的数据加密和解密可按如下方式具体实施。
采用Boneh-Franklin的基于配对的IBE算法中的基于双线性映射(配对)的加密方法以及相应的数据解密方法,只是属性公钥和属性私钥所在的群是G2,具体地,对于属性集S(A1,…,Am),数据加密方以公钥GA1+…+GAm作为Boneh-Franklin算法中的从标识ID映射得到群G2中的元GID,通过计算w=e(Ppub,GA1+…+GAm)r和T=[r]P1按Boneh-Franklin算法进行数据加密,其中r是从[1,n-1]中随机选择的一个整数导出的[1,n-1]中的一个整数;这里,GA1,…,GAm分别是属性A1,…,Am对应的公钥。
数据解密方以dA1+…+dAm作为Boneh-Franklin算法中的标识私钥dID,通过计算w=e(T,dA1+…+dAm)按Boneh-Franklin算法完成解密运算。
与Boneh-Franklin算法原算法的差别仅仅在于,这时的群G1、G2及其所涉及的元的位置互换了。
或者,类似地,数据加密和解密可采用如下方法:
对于属性集S(A1,…,Am),数据加密方以GA1+…+GAm为公钥,计算w=e(Ppub,GA1+…+GAm)r和T=[r]P1进行数据加密,其中r是在[1,n-1]内随机选择的整数,然后采用散列或哈希算法(如采用SM9标识密码算中的密钥派生函数)得到w的散列值或哈希值k,然后以k为密钥对待加密的数据加密(直接对数据异或运算加密,或者采用约定的对称密钥密码算法对数据加密);
数据解密时,密码服务器和用户方通过交互协同完成w=(T,dA1+…+dAm)的计算,然后采用同样的散列或哈希算法得到w的散列值或哈希值k,然后以k为密钥对加密的数据解密(直接对加密的数据异或运算,或者采用约定的对称密钥密码算法对加密的数据解密)。
若采用dA=[s-1]GA的方式生成属性私钥,则可采用与以上两种具体的实施方式类似的方式实施,所采用的计算式、计算过程是类似的,差别仅仅在于w、T的计算式为,w=e(P1,GA1+…+GAm)r和T=[r]Ppub,其他计算过程一样。
在此实施例中,若dA1+…+dAm=(dA1s+…+dAms)+(dA1u+…+dAmu),则所述密码服务器和用户方按如下方式协同计算w=ei(dA1+…+dAm,T):
密码服务器计算ws=e(T,dA1s+…+dAms);
用户方计算wu=e(T,dA1u+…+dAmu);
之后密码服务器或用户方计算w=wswu
若dA1+…+dAm=[dA1u]dA1s+…+[dAmu]dAms,则所述密码服务器和用户方按如下方式协同计算w=e(T,dA1+…+dAm):
密码服务器计算ws1=e(T,dA1s),…,wsm=e(T,dAms),然后将ws1,…,wsm将发送给用户方;
用户方计算wu1=ws1^dA1u,…,wum=wsm^dAmu,其中^表示幂运算,^前的元是基数,^后的数是指数;
之后密码服务器或用户方计算wu1,…,wum的乘,w=wu1…wum
若dA1+…+dAm=[dA1s]dA1u+…+[dAms]dAmu,则所述密码服务器和用户方按如下方式协同计算w=e(T,dA1+…+dAm):
用户方计算wu1=e(T,dA1u),…,wum=e(T,dAmu),然后将wu1,…,wum将发送给密码服务器;
密码服务器计算ws1=wu1^dA1s,…,wsm=wum^dAms
之后密码服务器或用户方计算ws1,…,wsm的乘,w=ws1…wsm
此实施例,若在进行数据解密的过程中用户方的数据解密客户端程序通过与密码服务器的交互知道用户拥有属性集S=(A1,…,Am)中的属性,但没有(S中的一个或多个或全部)属性所对应的属性私钥的秘密份额时,所述数据解密客户端程序调用前述密钥客户端程序申请获取属性所对应的属性私钥的秘密份额(当然,对于系统属性AS对应的属性私钥的秘密份额是无需获取的)。
实施例13、
此实施例在以上实施例1-10中任何一个的基础上实施属性私钥及私钥秘密份额生成和管理系统,系统包括服务端的属性私钥生成器、密钥服务器、属性及属性私钥秘密份额管理器,用户端的密钥客户端程序和密码组件;
属性私钥及私钥秘密份额生成和管理系统按实施例1-10中任何一个的方式生成用户属性所对应的私钥以及属性私钥的服务端的秘密份额和用户端的秘密份额,保存和管理用户属性所对应的私钥的服务端的秘密份额。
实施例14、
此实施例,在以上实施例11或12的基础上实施基于属性的数据加密系统,系统包括服务端的属性私钥生成器、密钥服务器、属性及属性私钥秘密份额管理器、密码服务器,用户端的密钥客户端程序、数据解密客户端程序和密码组件;
基于属性的数据加密系统通过实施例11或12,而实施例11或12通过实施实施例1-10中的一个相应实施例,生成用户属性所对应的私钥以及属性私钥的服务端的秘密份额和用户端的秘密份额,保存和管理用户属性以及用户属性所对应的私钥的服务端的秘密份额。
当数据加密方需要利用属性集S=(A1,…,Am)对数据加密时,数据加密方按实施例11或12中的基于属性的数据加密方法对数据加密;
当用户方需要解密采用属性集S=(A1,…,Am)加密的数据时,用户方和密码服务器实施例11或12中的基于属性的数据解密方法对加密的数据解密。
实施例15、
此实施例在实施例14的基于属性的数据加密系统的基础上,实施基于属性的文件加密系统,具体如下。
此实施例的基于属性的文件加密系统还包括用户端的文件解密客户端程序;
文件解密客户端程序调用数据解密客户端程序与密码服务器交互,对加密文件进行解密操作处理;
用户端的密钥客户端程序、数据解密客户端程序、密码组件和文件解密客户端程序统称为用户方;
文件加密方按如下方式对文件进行加密(文件加密方可以是任一个用户或系统):
随机生成一个对称密钥ke(随机对称密钥ke)采用对称密钥密码算法对文件进行加密;
分别使用p个属性集S1,…,Sp,p≥1,按所述基于属性的数据加密方法分别对随机对称密钥ke加密,得到对称密钥ke的p份密文数据kenc_1,…,kenc_p;(如何选择S1,…,Sp属于本发明之外的事情)
设定文件的访问控制策略ac(访问控制策略可以是基于属性的访问控制策略,也可以不是,如何选择访问控制策略ac属于本发明之外的事情);
将p个属性集S1,…,Sp及对应的随机对称密钥ke的p份密文数据kenc_1,…,kenc_p,以及文件访问控制策略ac合并,对合并得到的数据进行数字签名(采用何种数字签名算法和技术,属于本发明之外的事),得到文件解密控制数据;
将文件解密控制数据作为附加数据附加到加密后的文件中(如附加到加密文件的头部或尾部)得到加密的文件;
当用户方需要对加密文件进行解密时,用户方和密码服务器按如下方式进行文件解密操作处理:
密码服务器从加密文件中取出文件解密控制数据,或者用户方从加密文件中取出文件解密控制数据并提交到密码服务器;
密码服务器验证文件解密控制数据的数字签名的有效性,若验证失败,则解密失败,若验证通过,则继续;
密码服务器利用文件解密控制数据中的文件访问控制策略ac,检查确定用户是否具有访问此加密文件明文的权限,若没有,则解密失败,若有,则继续;(访问控制策略规定的是基于属性的访问控制,则密码服务器根据属性及属性私钥秘密份额管理器的用户数据库中的当前用户的用户信息中的属性信息进行访问控制决策;若不是基于属性的访问控制,则密码服务器根据属性及属性私钥秘密份额管理器的用户数据库中的当前用户的用户信息中的其他用户信息,或者依据其他系统的用户数据库中的当前用户的其他用户信息进行访问控制决策)
密码服务器依据属性及属性私钥秘密份额管理器的用户数据库中的当前用户的属性信息,检查确定用户属性是否满足文件解密控制数据中的p个属性集S1,…,Sp中的任一个,即用户是否有p个属性集S1,…,Sp中的某一个属性集中的全部属性,若没有,则解密失败,若有,密码服务器利用用户数据库中的、用户满足的属性集中的用户属性所对应的私钥的服务端的秘密份额,通过与用户方交互,解密得到对文件进行加密时所采用的随机对称密钥ke,然后利用解密得到的随机对称密钥ke解密被加密的文件,得到文件的明文(最终是密码服务器还是用户方最后解密得到对文件进行加密的随机对称密钥ke和使用ke解密加密文件得到文件的明文都可以,取决于具体实施)。
若加密使用的属性集中的属性是受时间有效期限定的属性,则密码服务器在进行解密操作前,先检查每个属性集中的每个属性的有效期,若当前时刻超过了文件解密控制数据中的某一个属性集中的某一个属性的时间有效期或未到属性中规定的时间有效期,则此属性集不能用于文件解密;若文件解密控制数据中的所有属性集不能用于文件解密,则文件解密失败。
此实施例中,若文件解密控制数据中的某一个属性集中的属性是受时间有效期限定的属性,则当前用户除了需要有此属性集中规定的有效的属性外,还需要有受时间有效期限定的属性所对应的属性私钥的秘密份额(若有有效的属性,没有对应的属性私钥秘密份额,则需解密方申请对应的属性私钥的秘密份额);所述有效的属性即在进行文件解密操作时有效的属性。
此文件加密系统用于不集中存放加密文件的场景。
实施例16、
此实施例在实施例14的基于属性的数据加密系统的基础上实施基于属性的加密文件服务系统,系统还包括服务端的存储有加密文件的加密文件存储服务器和用户端的用于访问加密文件存储服务器中的加密文件的文件客户端程序;
所述文件客户端程序访问所述加密文件存储服务器获取被加密的问题;所述文件客户端程序调用数据解密客户端程序与密码服务器交互,完成加密文件的解密操作;
用户端的密钥客户端程序、数据解密客户端程序、密码组件和文件客户端程序统称为用户方;
加密文件存储服务器对存储的加密文件实施有访问控制(采用何种访问控制方式属于本发明之外的事);
在文件被存储到加密文件存储服务器之前,文件加密方按如下方式对文件进行加密(文件加密方可以是文件存储系统、用户或其他实体):
随机生成一个对称密钥ke(随机对称密钥ke)采用对称密钥密码算法对文件进行加密;
分别使用p个属性集S1,…,Sp,p≥1,按前述基于属性的数据加密方法对对称密钥ke加密,得到对称密钥ke的p份密文数据kenc_1,…,kenc_p;
将p个属性集S1,…,Sp和对应的随机对称密钥ke的p份密文数据kenc_1,…,kenc_p合并,得到文件解密控制数据;
将文件解密控制数据作为附加数据附加到加密后的文件中(如附加到加密文件的头部或尾部);
当用户方使用文件客户端程序访问加密文件存储服务器,请求获取一个加密文件时,加密文件存储服务器根据(自身)实施的访问控制,检查确定用户是否具有访问此加密文件明文的权限,若没有,则解密失败,若有,则继续后续操作;
加密文件存储服务器将加密文件提交给密码服务器,请求解密加密文件;
密码服务器从加密文件中取出文件解密控制数据;
密码服务器从属性及属性私钥秘密份额管理器的用户数据库中的当前用户的属性信息,检查确定用户属性是否满足文件解密控制数据中的p个属性集S1,…,Sp中的任一个,即用户是否有p个属性集S1,…,Sp中的某一个属性集中的全部属性,若没有,则解密失败;若有,则密码服务器利用用户数据库中的、用户满足的属性集中的用户属性所对应的私钥的服务端的秘密份额,以加密文件存储服务器为中介,通过与用户方交互,解密得到对文件进行加密时采用的随机对称密钥ke,然后利用解密得到的随机对称密钥ke解密被加密的文件,得到文件的明文;
密码服务器将解密后的文件返回给加密文件存储服务器;
加密文件存储服务器将解密得到的文件(明文文件)返回给用户方,或者通过人机交互界面将文件内容展现给用户。
若文件解密控制数据中的某一个属性集中的属性是受时间有效期限定的属性,且属性的有效期当前有效(当前时刻有效),则解密文件的用户方的用户除了需要有此属性集中所规定的有效的属性外,还需要有受时间有效期限定的属性所对应的属性私钥的秘密份额(若用户有有效的属性,但没有对应的属性私钥的秘密份额,则需解密方申请对应的属性私钥的秘密份额);用户有此属性集中所规定的有效的属性,即在进行文件解密操作时用户有对应于此所属性集所规定的属性(过去拥有此属性不行);
若文件解密控制数据中的属性集中的某一个属性集中的属性是受时间有效期限定的属性,且此属性集中的(一个或多个)属性的有效期未到,则此属性集及对应的属性私钥(的秘密份额)不允许用于解密加密文件;
对于包含有受时间有效期限定的属性的属性集,文件加密方在文件解密控制数据中设定是否允许对属性集中的受时间有效期限定的属性进行更新;
若文件解密控制数据中的某一个属性集中的属性是受时间有效期限定的属性,且属性的有效期超过了有效时间(当前时刻已失效),而属性集中的受时间有效期限定的属性不允许更新,则此属性集及对应的属性私钥(的秘密份额)不允许用于解密加密文件;
若用于文件加密的属性集中有受时间有效期限定的属性,且加密文件所用的属性集中包含的受时间有效期限定的属性允许更新,则文件加密方在加密文件时,同时使用加密文件服务系统的一个标识(如系统的域名)作为公钥,采用标识密码算法对随机对称密钥ke加密,得到ke的密文kenc_s,然后将kenc_s作为文件解密控制数据的一部分加入到文件解密控制数据中(当有多个属性集时,只要一个属性集有此性质,则如此);
当密码服务器解密被加密的文件时,若检查发现文件解密控制数据中的属性是受时间有效期限定的属性,且属性有效期超过了有效时间,而属性的有效期允许更新,则密码服务器从文件解密控制数据中取出采用加密文件服务系统的标识加密的随机对称密钥ke的密文kenc_s,使用加密文件服务系统的标识私钥解密kenc_s,得到随机对称密钥ke的明文,然后使用当前时刻有效的p个属性集S1,…,Sp(p个属性集S1,…,Sp中的每个属性集中的每个属性都是当前时刻有效的属性)重新对随机对称密钥ke加密,去掉加密文件的原文件解密控制数据中的使用过期的属性集加密的随机对称密钥ke的密文数据,将新加密得到的随机对称密钥ke的密文数据放入到加密文件的文件解密控制数据中,更新文件解密控制数据中的数据集,即更新文件解密控制数据,然后将更新了文件解密控制数据的加密文件返回给加密文件存储服务器保存,替换以前的加密文件,之后密码服务器,使用更新的文件解密控制数据,以加密文件存储服务器为中介,通过与用户方交互解密加密文件。
此加密文件服务系统用于集中存放加密文件的场景。
为了保证存放在用户数据库中的服务端的属性私钥秘密份额的安全,可以对属性私钥秘密份额加密保存。
其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。

Claims (18)

1.一种属性私钥及私钥秘密份额生成和管理方法,其特征是:
所述属性私钥及私钥秘密份额生成和管理方法涉及服务端的属性私钥生成器、密钥服务器、属性及属性私钥秘密份额管理器,用户端的用户、密钥客户端程序和密码组件;
所述属性私钥生成器用于生成用户属性所对应的私钥即属性私钥;所述用户属性是反映用户特征的信息;
所述密钥服务器是用户申请属性私钥的秘密份额时与用户端的密钥客户端程序进行交互的服务端的系统组件;所述属性私钥是用户属性所对应的私钥;所述属性私钥的秘密份额指服务端和用户端分别保存的与属性私钥有关并能恢复属性私钥的秘密;
所述属性及属性私钥秘密份额管理器对用户的属性以及属性私钥的秘密份额进行管理;所述属性及属性私钥秘密份额管理器有用户数据库,用于存放用户属性以及属性私钥的秘密份额;
所述用户是具有用户属性、需要使用属性私钥进行数据解密操作处理的个人、机构或系统;
所述密钥客户端程序是用户申请属性私钥的秘密份额时所使用的与密钥服务器进行交互的用户端程序;
所述密码组件是用户端进行密码运算、存储用户密钥以及存储属性私钥的秘密份额的软件组件或软硬件结合的组件;
所述用户、密钥客户端程序和密码组件统称为用户方;
所述属性私钥及私钥秘密份额生成和管理方法涉及双线性映射e:G1×G2→GT;G1、G2为加法群,GT为乘法群;群G1、G2、GT的阶为素数n;群G1、G2的生成元分别为P1、P2
针对以上所述双线性映射还定义有:
e1(V,T)=e(V,T),其中V是群G1中的元,T是群G2中的元;
e2(V,T)=e(T,V),其中V是群G2中的元,T是群G1中的元;
所述属性私钥生成器有一个[1,n-1]内的主密钥s;
当用户方需要申请属性A所对应的私钥dA的秘密份额时,用户方将获取属性A的私钥的秘密份额的申请提交到密钥服务器;
密钥服务器通过属性及属性私钥秘密份额管理器的用户数据库验证确认申请属性私钥秘密份额的用户就是其声称的用户且拥有对应的属性A,验证通过后将用户方提交的获取属性A的私钥的秘密份额的申请提交到属性私钥生成器;
属性私钥生成器检查本地是否已缓存或保存有属性A所对应的属性私钥dA,若有,则转入针对属性A的属性私钥dA的秘密份额的生成处理;若本地没有缓存或保存有属性A所对应的属性私钥dA,则属性私钥生成器按约定的规则将属性A的名字或标识符映射到群Gi中的一个元GA,i=1或2,然后计算得到属性A对应的私钥即属性私钥dA=[s]GA或dA=[s-1]GA,其中s-1是s的模n乘法逆,将属性私钥dA缓存或保存在本地;GA称为属性A对应的公钥即属性公钥;
所述属性的名字是属性的标识名称,或者是针对属性的描述文字;
属性私钥生成器将dA分解为dA=dAs+dAu,或者将dA化解为dA=[dAu]dAs或dA=[dAs]dAu;属性私钥生成器将dAs、dAu返回给密钥服务器;
或者,属性私钥生成器将dA返回给密钥服务器,密钥服务器将dA分解为dA=dAs+dAu,或者将dA化解为dA=[dAu]dAs或dA=[dAs]dAu
密钥服务器将dAs保存在属性及属性私钥秘密份额管理器用户数据库中的当前用户的用户信息中,将dAu返回给用户方;所述当前用户是指当前正在申请属性A的属性私钥dA的秘密份额的用户方的用户;
用户方将dAu保存到用户端的密码组件中;
以上所述dAs为服务端的针对属性私钥dA的秘密份额,dAu为用户端的针对属性私钥dA的秘密份额;
若用户有多个属性需要申请属性私钥的秘密份额,则用户方分多次申请获得用户每个属性所对应的属性私钥的用户端的秘密份额,或者一次获得用户所有属性的属性私钥的用户端的秘密份额;于此同时,密钥服务器将用户多个属性的属性私钥的服务端的秘密份额保存在属性及属性私钥秘密份额管理器的用户数据库中的用户信息中;所述多个属性指多于一个的属性;
所述属性私钥生成器有一个主公钥Ppub=[s]Pj,j=3-i;[]表示对群G1和G2中的元的多倍点加运算。
2.根据权利要求1所述的属性私钥及私钥秘密份额生成和管理方法,其特征是:
所述用户属性包括受时间有效期限定的属性和未受时间有效期限定的属性;
所述受时间有效期限定的属性由属性名或属性标识符加上时间有效期所构成;所述时间有效期由起始时间和结束时间构成;
所述时间有效期的表示方式是从一个约定的零时时刻开始,然后按每隔一个约定的时间周期更新时间有效期;
对于受时间有效期限定的属性,用户方在属性的时间有效期即将到期之前的规定时间内或到期后,申请受新的时间有效期限定的属性所对应的私钥的秘密份额,用户方以及属性及属性私钥秘密份额管理器分别保存用户端和服务端的针对新的属性私钥的秘密份额。
3.根据权利要求1所述的属性私钥及私钥秘密份额生成和管理方法,其特征是:
所述属性私钥生成器或密钥服务器将dA分解为dA=dAs+dAu的方法包括:
在群Gi中随机选取一个不等于dA的非零元P作为dAs,计算dAu=dA-dAs,或者在群Gi中随机选取一个不等于dA的非零元P作为dAu,计算dAs=dA-dAu
或者,在[2,n-1]内随机选取一个整数ts,计算tu=(1-ts)mod n,或在[2,n-1]内随机选取一个整数tu,计算ts=(1-tu)mod n;计算dAs=[ts]dA,dAu=[tu]dA
所述属性私钥生成器或密钥服务器在群Gi中随机选取一个不等于dA的非零元P的方法包括:
在[2,n-1]内随机选取一个整数tA,计算P=[tA]dA
或者,在[1,n-1]内随机选取一个整数tA,计算P=[tA]Pi,其中Pi为群Gi的生成元;若P不等于dA,则P即为所取;若P等于dA,则重新选取tA,重新计算P=[tA]Pi,直到P不等于dA
4.根据权利要求1所述的属性私钥及私钥秘密份额生成和管理方法,其特征是:
所述属性私钥生成器或密钥服务器将dA化解为dA=[dAu]dAs或dA=[dAs]dAu的方法包括:
在[1,n-1]内随机选择一个整数tZ,计算dt=[(tZ)-1]dA,其中(tZ)-1为tZ的模n乘法逆,然后以tZ作为dAu,以dt作为dAs,或者以tZ作为dAs,以dt作为dAu
5.根据权利要求1所述的属性私钥及私钥秘密份额生成和管理方法,其特征是:
将属性A的名字或标识符映射为群Gi中的元GA的方式包括:
将属性A的名字或标识符映射到群Gi中的一个元的纵坐标yA,然后通过群Gi对应的椭圆曲线方程得到横坐标xA,则GA=(xA,yA);
或者,将属性A的名字或标识符映射到群Gi中的一个元的横坐标xA,然后通过群Gi对应的椭圆曲线方程得到两个纵坐标,取其中一个纵坐标yA,则GA=(xA,yA);
或者,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pi,其中Pi为群Gi的生成元;
或者,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pit,其中Pit是属性私钥生成器在群Gi中随机选择的一个不等于Pi的元,并作为公开参数发布;
或者,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pi+Pit
或者,将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pih+Pit,其中Pih是属性私钥生成器在群Gi中随机选择的一个不等于Pi的元,并作为公开参数发布;
将属性A的名字或标识符映射到[1,n-1]中的一个整数hA的方式包括使用约定的散列或哈希函数;
属性私钥生成器在群Gi中随机选择一个不等于Pi的元Pit的方式包括:在[2,n-1]随机选择一个整数t,计算Pit=[t]Pi
属性私钥生成器在群Gi中随机选择一个不等于Pi的元Pih的方式包括:在[2,n-1]随机选择一个整数h,计算Pih=[h]Pi
若采用将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pi的方式将属性A映射到群Gi中的一个元,并采用dA=[s]GA方式生成属性私钥,则必须有从Ppub无法得到[s]Pi,否则,不能采用dA=[s]GA方式生成属性私钥;
若采用将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pi+Pit的方式将属性A映射到群Gi中的一个元GA,则一旦出现GA为零元的情况,所述属性私钥生成器重新在群Gi中随机选择一个不等于Pi的群元Pit并公开发布;
若采用将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pih+Pit的方式将属性A映射到群Gi中的一个元GA,则一旦出现GA为零元的情况,所述属性及属性私钥秘密份额管理器改变属性A的名字或标识符,或者所述属性私钥生成器重新在群Gi中随机选择一个不等于Pi的群元Pih或Pit并公开发布。
6.根据权利要求5所述的属性私钥及私钥秘密份额生成和管理方法,其特征是:
若将属性A映射到群Gi中的一个元的方式是先将属性A的名字或标识符映射到[1,n-1]中的一个整数hA,然后计算GA=[hA]Pi或GA=[hA]Pit或GA=[hA]Pi+Pit或GA=[hA]Pih+Pit的方式,则:
若采用dA=[s]GA的方式生成属性私钥,则所述属性私钥生成器预先计算并缓存或保存有Qi=[s]Pi,或Qit=[s]Pit,或Qi=[s]Pi和Qit=[s]Pit,或Qih=[s]Pih和Qit=[s]Pit
若采用dA=[s-1]GA的方式生成属性私钥,则所述属性私钥生成器预先计算并缓存或保存有Qi=[s-1]Pi,或Qit=[s-1]Pit,或Qi=[s-1]Pi和Qit=[s-1]Pit,或Qih=[s-1]Pih和Qit=[s-1]Pit
当需要计算属性A对应的私钥dA时,属性私钥生成器直接使用缓存或保存的Qi,或Qit,或Qi和Qit,或Qih和Qit,计算dA=[hA]Qi,或dA=[hA]Qit,或dA=[hA]Qi+Qit,或dA=[hA]Qih+Qit
若采用dA=[hA]Qi+Qit方式计算属性A对应的私钥dA,则一旦出现dA为零元的情况,所述属性私钥生成器重新在群Gi随机选择一个群元Pit并公开发布,重新计算Qit
若采用dA=[hA]Qih+Qit方式计算属性A对应的私钥dA,则一旦出现dA为零元的情况,所述属性及属性私钥秘密份额管理器改变属性A的名字或标识符,或者所述属性私钥生成器重新在群Gi中随机选择一个不等于Pi的群元Pih或Pit并公开发布。
7.根据权利要求1所述的属性私钥及私钥秘密份额生成和管理方法,其特征是:
当用户的一个属性A被取消后,所述属性及属性私钥秘密份额管理器将用户数据库中保存的用户的属性A对应的属性私钥dA的秘密份额dAs从用户信息中删除。
8.一种基于权利要求1-7中任一项所述的属性私钥及私钥秘密份额生成和管理方法的基于属性的数据加密方法,其特征是:
当数据加密方需要利用属性集S=(A1,…,Am)对数据加密时,其中m≥1,数据加密方按与属性私钥生成器同样的约定的方式,将属性A1,…,Am分别映射到群Gi,得到属性A1,…,Am的属性公钥GA1,…,GAm
数据加密方以GA1+…+GAm为公钥采用基于双线性映射的加密算法对数据加密;
若采用dA=[s]GA的方式生成属性A对应的私钥dA,则所述以GA1+…+GAm为公钥采用基于双线性映射的加密算法对数据加密所进行的操作包括计算w=ei(GA1+…+GAm,Ppub)r,T=[r]Pj,其中r是密码运算过程中在[1,n-1]内随机选取的整数或者从在[1,n-1]内的随机选取的整数导出的的整数,而T=[r]Pj是附加在加密的数据中用于解密的密码数据;
若采用dA=[s-1]GA的方式生成属性A对应的私钥dA,则所述以GA1+…+GAm为公钥采用基于双线性映射的加密算法对数据加密所进行的操作包括计算w=ei(GA1+…+GAm,Pj)r,T=[r]Ppub,其中r是密码运算过程中在[1,n-1]内随机选取的整数或者从在[1,n-1]内的随机选取的整数导出的的整数,而T=[r]Ppub是附加在加密的数据中用于解密的密码数据;
所述利用属性集S=(A1,…,Am)对数据加密,限定了只有属性集S中所有属性的拥有者才能解密被加密的数据;
所述数据加密方是所述属性及属性私钥秘密份额管理器中的用户或用户之外的其他实体。
9.根据权利要求8所述的基于属性的数据加密方法,其特征是:
若m≥2,则所述属性集S中允许包含一个系统属性AS,所述系统属性AS与其他属性一样被映射到群Gi中一个元GAS,以GAS为属性公钥,同样对应一个系统属性私钥dAS=[s]GAS;系统属性私钥dAS的服务端的秘密份额dASs就是dAS,而系统属性私钥dAS的用户端的秘密份额dASu如下:
若属性私钥生成器采用dA=dAs+dAu的方式分解一个属性私钥dA,则系统属性私钥dAS的用户端的秘密份额dASu是群Gi中零元;
若属性私钥生成器采用dA=[dAu]dAs的方式化解一个属性私钥dA,则系统属性私钥dAS的用户端的秘密份额dASu固定地是整数1;
若允许属性集S中包含系统属性AS,则采用dA=[dAs]dAu的方式化解一个属性私钥dA的方式不被采用;
若允许属性集S中包含系统属性AS,则用户方无需申请系统属性AS的私钥的用户端的秘密份额,服务端自动生成、保存系统属性AS的私钥dAS,并将dAS作为服务端的秘密份额;
属性及属性私钥秘密份额管理器的每个用户缺省地拥有系统属性AS,并拥有属性私钥dAS的的秘密份额。
10.一种针对权利要求9所述的基于属性的数据加密方法的基于属性的数据解密方法,其特征是:
所述基于属性的数据解密方法还涉及服务端的密码服务器和用户端的与密码服务器交互、进行数据解密操作处理的数据解密客户端程序;所述数据解密客户端程序调用用户端的密码组件进行数据解密运算;用户端的密钥客户端程序、密码组件和数据解密客户端程序统称为用户方;
当用户方需要解密采用属性集S=(A1,…,Am)加密的数据时,即需要对以GA1+…+GAm为公钥采用基于双线性映射的加密算法加密后的数据解密时,也即需要以dA1+…+dAm为私钥对加密的数据解密时,也即在解密过程中需要计算w=ei(dA1+…+dAm,T)时,其中dA1,…,dAm分别是属性A1,…,Am对应的属性私钥,T=[r]Pj或T=[r]Ppub是数据加密时计算的、并附在被加密数据中的密码数据,所述服务端的密码服务器检查所述属性及属性私钥秘密份额管理器的用户数据库的当前用户的用户信息中是否有解密数据所需的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,若没有,则解密失败,若有,则所述服务端的密码服务器利用用户数据库中的当前用户的用户信息中的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,而所述用户方利用用户端保存的属性私钥dA1,…,dAm的秘密份额dA1s,…,dAms,二者在不暴露各自秘密的情况下,通过交互完成针对加密数据的解密运算;
所述当前用户是正在进行数据解密操作的用户方的用户。
11.根据权利要求10所述的基于属性的数据解密方法,其特征是:
若dA1+…+dAm=(dA1s+…+dAms)+(dA1u+…+dAmu),则所述密码服务器和用户方按如下方式协同计算w=ei(dA1+…+dAm,T):
密码服务器计算ws=ei(dA1s+…+dAms,T);
用户方计算wu=ei(dA1u+…+dAmu,T);
之后密码服务器或用户方计算w=wswu
若dA1+…+dAm=[dA1u]dA1s+…+[dAmu]dAms,则所述密码服务器和用户方按如下方式协同计算w=ei(dA1+…+dAm,T):
密码服务器计算ws1=ei(dA1s,T),…,wsm=ei(dAms,T),然后将ws1,…,wsm将发送给用户方;
用户方计算wu1=ws1^dA1u,…,wum=wsm^dAmu,其中^表示幂运算,^前的元是基数,^后的数是指数;
之后密码服务器或用户方计算wu1,…,wum的乘积w=wu1…wum
若dA1+…+dAm=[dA1s]dA1u+…+[dAms]dAmu,则所述密码服务器和用户方按如下方式协同计算w=ei(dA1+…+dAm,T):
用户方计算wu1=ei(dA1u,T),…,wum=ei(dAmu,T),然后将wu1,…,wum将发送给密码服务器;
密码服务器计算ws1=wu1^dA1s,…,wsm=wum^dAms
之后密码服务器或用户方计算ws1,…,wsm的乘,w=ws1…wsm
12.根据权利要求11所述的基于属性的数据解密方法,其特征是:
若在进行数据解密的过程中用户方的数据解密客户端程序通过与密码服务器的交互知道用户拥有属性集S=(A1,…,Am)中的属性,但没有属性所对应的属性私钥的秘密份额时,所述数据解密客户端程序调用前述密钥客户端程序申请获取属性所对应的属性私钥的秘密份额。
13.一种基于权利要求1-7中任一项所述的属性私钥及私钥秘密份额生成和管理方法的属性私钥及私钥秘密份额生成和管理系统,其特征是:
所述属性私钥及私钥秘密份额生成和管理系统包括服务端的属性私钥生成器、密钥服务器、属性及属性私钥秘密份额管理器,用户端的密钥客户端程序和密码组件;
所述属性私钥及私钥秘密份额生成和管理系统按所述属性私钥及私钥秘密份额生成和管理方法生成用户属性所对应的私钥以及属性私钥的服务端的秘密份额和用户端的秘密份额,保存和管理用户属性所对应的私钥的服务端的秘密份额。
14.一种基于权利要求12所述的基于属性的数据解密方法的基于属性的数据加密系统,其特征是:
所述基于属性的数据加密系统包括服务端的属性私钥生成器、密钥服务器、属性及属性私钥秘密份额管理器、密码服务器,用户端的密钥客户端程序、数据解密客户端程序和密码组件;
所述基于属性的数据加密系统按前述属性私钥及私钥秘密份额生成和管理方法生成用户属性所对应的私钥以及属性私钥的服务端的秘密份额和用户端的秘密份额,保存和管理用户属性以及用户属性所对应的私钥的服务端的秘密份额;
当数据加密方需要利用属性集S=(A1,…,Am)对数据加密时,数据加密方按前述基于属性的数据加密方法对数据加密;
当用户方需要解密采用属性集S=(A1,…,Am)加密的数据时,用户方和密码服务器按所述基于属性的数据解密方法对加密的数据解密。
15.一种基于权利要求14所述的基于属性的数据加密系统的基于属性的文件加密系统,其特征是:
所述基于属性的文件加密系统还包括用户端的文件解密客户端程序;所述文件解密客户端程序调用数据解密客户端程序与密码服务器交互,对加密文件进行解密操作处理;用户端的密钥客户端程序、数据解密客户端程序、密码组件和文件解密客户端程序统称为用户方;
文件加密方按如下方式对文件进行加密:
随机生成一个对称密钥ke,称为随机对称密钥ke,然后使用随机对称密钥ke采用对称密钥密码算法对文件进行加密;
分别使用p个属性集S1,…,Sp,p≥1,按前述基于属性的数据加密方法分别对随机对称密钥ke加密,得到随机对称密钥ke的p份密文数据kenc_1,…,kenc_p
设定文件的访问控制策略ac;
将p个属性集S1,…,Sp及对应的随机对称密钥ke的p份密文数据kenc_1,…,kenc_p,以及文件访问控制策略ac合并,对合并得到的数据进行数字签名,得到文件解密控制数据;
将文件解密控制数据作为附加数据附加到加密后的文件中得到加密的文件;
当用户方需要对加密文件进行解密时,用户方和密码服务器按如下方式进行文件解密操作处理:
所述密码服务器从加密文件中取出文件解密控制数据,或者用户方从加密文件中取出文件解密控制数据并提交到密码服务器;
密码服务器验证文件解密控制数据的数字签名的有效性,若验证失败,则解密失败,若验证通过,则继续;
密码服务器利用文件解密控制数据中的文件访问控制策略ac,检查确定用户是否具有访问此加密文件明文的权限,若没有,则解密失败,若有,则继续;
密码服务器依据属性及属性私钥秘密份额管理器的用户数据库中的当前用户的属性信息,检查确定当前用户的用户属性是否满足文件解密控制数据中的p个属性集S1,…,Sp中的任一个,即用户是否有p个属性集S1,…,Sp中的某一个属性集中的全部属性,若没有,则解密失败,若有,密码服务器利用用户数据库中的、用户满足的属性集中的用户属性所对应的属性私钥的服务端的秘密份额,通过与用户方交互,解密得到对文件进行加密时所采用的随机对称密钥ke,然后利用解密得到的随机对称密钥ke解密被加密的文件,得到文件的明文;
所述当前用户是正在进行文件解密操作的用户方用户。
16.根据权利要求15所述的基于属性的文件加密系统,其特征是:
若加密使用的属性集中的属性是受时间有效期限定的属性,则密码服务器在进行解密操作前,先检查每个属性集中的每个属性的有效期,若当前时刻超过了文件解密控制数据中的某一个属性集中的某一个属性的时间有效期或未到属性中规定的时间有效期,则此属性集不能用于文件解密;若文件解密控制数据中的所有属性集不能用于文件解密,则文件解密失败;
若文件解密控制数据中的某一个属性集中的属性是受时间有效期限定的属性,则当前用户除了需要有此属性集中规定的有效的属性外,还需要有受时间有效期限定的属性所对应的属性私钥的秘密份额;所述有效的属性即在进行文件解密操作时有效的属性。
17.一种基于权利要求14所述基于属性的数据加密系统的基于属性的加密文件服务系统,其特征是:
所述加密文件服务系统还包括服务端的存储有加密文件的加密文件存储服务器和用户端的用于访问加密文件存储服务器中的加密文件的文件客户端程序;
所述文件客户端程序访问所述加密文件存储服务器获取被加密的问题;所述文件客户端程序调用数据解密客户端程序与密码服务器交互,完成加密文件的解密操作;
用户端的密钥客户端程序、数据解密客户端程序、密码组件和文件客户端程序统称为用户方;
所述加密文件存储服务器对存储的加密文件实施有访问控制;
在文件被存储到加密文件存储服务器之前,文件加密方按如下方式对文件进行加密:
随机生成一个对称密钥ke,称为随机对称密钥ke,然后使用随机对称密钥ke采用对称密钥密码算法对文件进行加密;
分别使用p个属性集S1,…,Sp,p≥1,按前述基于属性的数据加密方法对随机对称密钥ke加密,得到随机对称密钥ke的p份密文数据kenc_1,…,kenc_p
将p个属性集S1,…,Sp和对应的随机对称密钥ke的p份密文数据kenc_1,…,kenc_p合并,得到文件解密控制数据;
将文件解密控制数据作为附加数据附加到加密后的文件中;
当用户方使用文件客户端程序访问加密文件存储服务器,请求获取一个加密文件时,加密文件存储服务器根据实施的访问控制,检查确定用户是否具有访问此加密文件明文的权限,若没有,则解密失败,若有,则继续后续操作;
加密文件存储服务器将加密文件提交给密码服务器,请求解密加密文件;
所述密码服务器从加密文件中取出文件解密控制数据;
密码服务器从属性及属性私钥秘密份额管理器的用户数据库中的当前用户的属性信息,检查确定用户属性是否满足文件解密控制数据中的p个属性集S1,…,Sp中的任一个,即用户是否有p个属性集S1,…,Sp中的某一个属性集中的全部属性,若没有,则解密失败;若有,则密码服务器利用用户数据库中的、用户满足的属性集中的用户属性所对应的私钥的服务端的秘密份额,以加密文件存储服务器为中介,通过与用户方交互,解密得到对文件进行加密时采用的随机对称密钥ke,然后利用解密得到的随机对称密钥ke解密被加密的文件,得到文件的明文;
密码服务器将解密后的文件返回给加密文件存储服务器;
加密文件存储服务器将解密得到的文件返回给用户方,或者通过人机交互界面将文件内容展现给用户。
18.根据权利要求17所述的基于属性的加密文件服务系统,其特征是:
若文件解密控制数据中的某一个属性集中的属性是受时间有效期限定的属性,且属性的有效期当前有效,则解密文件的用户方的用户除了需要有此属性集中所规定的有效的属性外,还需要有受时间有效期限定的属性所对应的属性私钥的秘密份额;用户有此属性集中所规定的有效的属性,即在进行文件解密操作时用户有对应于此所属性集所规定的属性;
若文件解密控制数据中的属性集中的某一个属性集中的属性是受时间有效期限定的属性,且此属性集中的属性的有效期未到,则此属性集及对应的属性私钥不允许用于解密加密文件;
对于包含有受时间有效期限定的属性的属性集,文件加密方在文件解密控制数据中设定是否允许对属性集中的受时间有效期限定的属性进行更新;
若文件解密控制数据中的某一个属性集中的属性是受时间有效期限定的属性,且属性的有效期超过了有效时间,而属性集中的受时间有效期限定的属性不允许更新,则此属性集及对应的属性私钥不允许用于解密加密文件;
若用于文件加密的属性集中有受时间有效期限定的属性,且加密文件所用的属性集中包含的受时间有效期限定的属性允许更新,则文件加密方在加密文件时,同时使用加密文件服务系统的一个标识作为公钥,采用标识密码算法对随机对称密钥ke加密,得到ke的密文kenc_s,然后将kenc_s作为文件解密控制数据的一部分加入到文件解密控制数据中;
当密码服务器解密被加密的文件时,若检查发现文件解密控制数据中的属性是受时间有效期限定的属性,且属性有效期超过了有效时间,而属性的有效期允许更新,则密码服务器从文件解密控制数据中取出采用加密文件服务系统的标识加密的随机对称密钥ke的密文kenc_s,使用加密文件服务系统的标识私钥解密kenc_s,得到随机对称密钥ke的明文,然后使用当前时刻有效的p个属性集S1,…,Sp重新对随机对称密钥ke加密,去掉加密文件的原文件解密控制数据中的使用过期的属性集加密的随机对称密钥ke的密文数据,将新加密得到的随机对称密钥ke的密文数据放入到加密文件的文件解密控制数据中,更新文件解密控制数据中的数据集,即更新文件解密控制数据,然后将更新了文件解密控制数据的加密文件返回给加密文件存储服务器保存,替换以前的加密文件,之后密码服务器,使用更新的文件解密控制数据,以加密文件存储服务器为中介,通过与用户方交互解密加密文件。
CN202110286075.0A 2021-03-17 2021-03-17 一种基于属性的数据加密方法和系统 Active CN113098683B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110286075.0A CN113098683B (zh) 2021-03-17 2021-03-17 一种基于属性的数据加密方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110286075.0A CN113098683B (zh) 2021-03-17 2021-03-17 一种基于属性的数据加密方法和系统

Publications (2)

Publication Number Publication Date
CN113098683A CN113098683A (zh) 2021-07-09
CN113098683B true CN113098683B (zh) 2022-05-03

Family

ID=76668313

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110286075.0A Active CN113098683B (zh) 2021-03-17 2021-03-17 一种基于属性的数据加密方法和系统

Country Status (1)

Country Link
CN (1) CN113098683B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113630245B (zh) * 2021-07-20 2023-12-12 武汉理工大学 一种基于门限属性的数据加密方法和系统
CN114785622B (zh) * 2022-06-21 2022-09-30 深圳赛思鹏科技发展有限公司 多标识网络的访问控制方法、装置及存储介质
CN116980890B (zh) * 2023-09-20 2023-12-22 北京集度科技有限公司 信息安全通信装置、方法、车辆、计算机程序产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103891195A (zh) * 2011-09-28 2014-06-25 皇家飞利浦有限公司 基于分层属性的加密与解密
CN106230590A (zh) * 2016-07-22 2016-12-14 安徽大学 一种多授权机构的密文策略属性基加密方法
CN111106936A (zh) * 2019-11-27 2020-05-05 国家电网有限公司 一种基于sm9的属性加密方法与系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7865742B2 (en) * 2006-07-12 2011-01-04 Palo Alto Research Center Incorporated Method, apparatus, and program product for enabling access to flexibly redacted content
US20090080658A1 (en) * 2007-07-13 2009-03-26 Brent Waters Method and apparatus for encrypting data for fine-grained access control
CN101997876B (zh) * 2010-11-05 2014-08-27 重庆大学 基于属性的访问控制模型及其跨域访问方法
CN102916954B (zh) * 2012-10-15 2015-04-01 南京邮电大学 一种基于属性加密的云计算安全访问控制方法
CN109873699B (zh) * 2017-12-05 2021-09-28 南京师范大学 一种可撤销的身份公钥加密方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103891195A (zh) * 2011-09-28 2014-06-25 皇家飞利浦有限公司 基于分层属性的加密与解密
CN106230590A (zh) * 2016-07-22 2016-12-14 安徽大学 一种多授权机构的密文策略属性基加密方法
CN111106936A (zh) * 2019-11-27 2020-05-05 国家电网有限公司 一种基于sm9的属性加密方法与系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于CP-ABE的可撤销属性加密访问控制算法;屠袁飞等;《计算机科学》;20181115(第11期);全文 *
基于公私属性的多授权中心加密方案;初晓璐等;《计算机科学》;20181115(第11期);全文 *

Also Published As

Publication number Publication date
CN113098683A (zh) 2021-07-09

Similar Documents

Publication Publication Date Title
Li et al. An efficient attribute-based encryption scheme with policy update and file update in cloud computing
CN113098683B (zh) 一种基于属性的数据加密方法和系统
CN110213042B (zh) 一种基于无证书代理重加密的云数据去重方法
CN108600217B (zh) 一种云端基于代理重加密的数据授权确定性更新方法
US7634085B1 (en) Identity-based-encryption system with partial attribute matching
CN111371561A (zh) 基于cp-abe算法的联盟区块链数据访问控制方法
CN106487506B (zh) 一种支持预加密和外包解密的多机构kp-abe方法
WO2021190452A1 (zh) 用于云雾协助物联网的轻量级属性基签密方法
CN112532580B (zh) 一种基于区块链及代理重加密的数据传输方法及系统
CN108632385B (zh) 基于时间序列的多叉树数据索引结构云存储隐私保护方法
CN113411323B (zh) 基于属性加密的医疗病历数据访问控制系统及方法
CN113708917B (zh) 基于属性加密的app用户数据访问控制系统及方法
Guo et al. Revocable blockchain-aided attribute-based encryption with escrow-free in cloud storage
Ming et al. Efficient revocable multi-authority attribute-based encryption for cloud storage
CN113901512A (zh) 数据共享方法及系统
CN109740383B (zh) 一种面向雾计算医疗系统的隐私保护控制方法
Yan et al. Traceable and weighted attribute-based encryption scheme in the cloud environment
CN111447200B (zh) 数据处理方法、装置、系统、电子设备及存储介质
CN116599659B (zh) 无证书身份认证与密钥协商方法以及系统
CN110519040B (zh) 基于身份的抗量子计算数字签名方法和系统
WO2019127912A1 (zh) 差异化安全的密文保护系统
CN116318696A (zh) 一种双方无初始信任情况下代理重加密数字资产授权方法
Zhang et al. Secure data sharing with lightweight computation in E-health
CN108880798B (zh) 一种实现细粒度属性撤销的属性基重加密方法
CN111585756A (zh) 一种适用于多副本-多云情形下的无证书云审计方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant