一种泄露密钥可追踪的属性基混合加密方法

文档序号:6621506阅读:408来源:国知局
一种泄露密钥可追踪的属性基混合加密方法
【专利摘要】一种泄露密钥可追踪的属性基混合加密方法,可信权威:1、输入系数λ,输出系统参数;2、运行随机数生成算法;3、选择一种抗碰撞哈希函数,计算哈希值;4、运行指纹码生成算法GenFC;5、计算双线性对、求幂运算;6、为用户分配指纹码,指定属性集合S;7、运行随机数生成算法、乘法和求幂运算;8、在用户私钥中嵌入指纹码。数据持有者:9、进行AES数据加密;10、生成访问控制矩阵;11、运行属性基加密算法Encapsulate,对AES会话密钥加密;12、运行双线性对和乘、除法计算,得到会话密钥;数据使用者:13、运行AES数据解密算法;可信权威:1*、寻找适应性码字;2*、计算pj和Z;3*、计算权值和,输出集合C。
【专利说明】一种泄露密钥可追踪的属性基混合加密方法
(—)【技术领域】:
[0001]本发明涉及一种泄露密钥可追踪的属性基混合加密方法,可实现云存储环境下的用户密钥安全管理,在数据遭到非法访问时利用指纹码技术能有效追踪到泄露密钥的用户身份,属于信息安全中密码学领域。
(二)技术背景:
[0002]伴随着云计算概念的提出,越来越多的计算机用户将数据的存储、信息处理等业务交付给现有网络,以按需、易扩展的方式获得所需的资源,如硬件、平台、软件等。云存储就是云计算服务的一种,通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能。云存储服务的出现大大减轻了数据持有用户存储数据时的沉重负担(例如手机用户的移动设备往往可用的存储空间很小,无法实现较大数据的存储)。
[0003]考虑到云存储服务的优势,各网络服务供应商都相应提出了自己的云计算服务模型,例如亚马逊公司的弹性计算云(EC2, Elastic Compute Cloud)、苹果公司的iCloud和微软的Windows Azure。在云存储环境中,用户可以将大量的数据上传到云存储服务器端,服务器由云服务提供商进行维护;唯有数据持有者和被授权的用户可以实现存储数据的访问,用户无需考虑当地存储硬件及软件的限制便可轻松实现数据的共享;脱离了对存储介质的依赖,用户可以随时随地下载存储在云端的数据,便携性更强。
[0004]云存储为我们的生活带来的便利是显而易见的,然而值得引起忧虑的是云存储中的数据安全与隐私保护问题。当我们将重要的数据上传到云端之后便交付出了数据的访问控制权,一旦云端的存储器遭到了恶意的网络攻击或是云服务提供商内部的员工出于商业利益等目的做出了不正等操作,都将对我们的数据安全造成极大的威胁。如何有效地保护云端数据的完整性,制定数据的访问权限成为用户在上传数据到云端之前需优先考虑的问题。
[0005]数据加密方法一直以来都作为数据传输、存储过程中保护数据安全性的有效手段。在云存储环境下,数据持有者可以在将数据上传到云端服务器存储之前,利用数据加密手段,对数据加密后再上传。即便发生了数据泄露事件,由于数据是经加密后存储的,只有授权的用户可以对加密后的数据解密,最大程度地保护了用户的隐私安全。
[0006]现有的加密体制分为对称加密体制与非对称加密体制,对称加密体制的加、解密密钥相同,而非对称加密体制的加、解密密钥不同。对称加密体制的优势在于加、解密速度快,密钥及密文长度短;劣势在于通信双方需使用相同的会话密钥,这往往需要额外的密钥协商协议,才能达到密钥的安全传输。非对称加密体制的优势在于,加密方加密时使用的密钥是解密方公开的密钥,解密方仅需保管好该公钥对应的解密密钥即可,省去了多余的密钥协商步骤;而非对称加密的劣势在于,加、解密的时间长,密钥及密文长度过长,存储负担过重。为了平衡两种加密机制的优劣,本发明采用混合加密的方法对数据进行加密。所谓混合加密是指,原始数据采用对称加密机制加密后作为一份密文,加密时使用的会话密钥采用非对称加密机制加密后作为第二份密文,将两份密文同时传输给解密方。解密方在得到所有密文后,首先对第二份密文解密,解密得到第一份密文的会话密钥,接着利用会话密钥完成第一份密文的解密,恢复出原始数据。
[0007]对称加密机制里主要的加密方法有DES (Data Encrypt1n Standard)和AES(Advanced data Encrypt1n Standard)。DES 限制了加密密钥为长度为 64 比特,由于密钥长度过短,极易遭到字典攻击。考虑到AES的密钥长度可取128、192和256比特,在保证了密钥长度足够长的前提下,更加灵活,可适应不同强度的加密需求,故本发明采用AES的对称数据加密方法。
[0008]目前较为新颖的公钥加密方法有身份基加密方法(IBE,Identity-basedEncrypt1n)和属性基广播加密方法(ABE, Attribute-based Encrypt1n)。身份基加密方法的主要特点是加密数据的公钥为解密方的身份,譬如身份证件号码、电话号或是邮箱地址等。加密方在对数据加密时,首先需要知晓对方的身份信息,方可进行接下来的加密工作。而属性基加密则不同,属性基加密的密钥跟用户的属性集合相关,每个用户在系统中均有对应的属性,属性代表用户的特征,例如某医院的医生Alice在系统中的属性即可定为{{XXX医院},{心脑血管科室},{女},{主治医师},{36岁}}。加密方在对数据加密之前需要制定与属性相关的访问控制策略,只有用户的属性满足该访问控制策略的条件时方可对数据解密。比方说病人Mallory希望将自己的病历信息与某些心脑血管方面的医疗专家共享,她可以根据自己的需求制定访问控制策略:“心脑血管科室”AND “主治医师”;这样上个例子里的Alice便可作为满足访问控制策略的用户对文件进行访问。属性基加密方法较之身份基加密方法的优势在于,属性基加密无需清楚地知道对方用户的具体身份,根据用户的属性便可界定出可以访问自己数据的用户集合,这通常更加贴近现实生活中的应用场景。本发明利用了属性基加密方法的优势,根据用户的属性集合为用户生成私钥;同时,将对称加密的会话密钥用属性基加密的方法加密。
[0009]单单依靠传统的加密手段保护数据并不是万无一失的,属性基加密方法通过给用户颁发与属性集合相对的用户私钥用来对文件解密,一旦用户的私钥出于某种原因遭到了泄露,该私钥可以解密的数据也就不安全了。这时,我们需要采取紧急的应对措施,追踪到私钥泄露的源头,将数据安全的破坏降到最低。指纹码(Fingerprint code)技术便是很好的叛徒追踪方法。顾名思义,指纹是我们每个人所特有的,指纹码即是为系统中的所有用户分配的独一无二的码字,通过指纹码可以直接找到对应的用户的身份。指纹码通常由两个算法组成:指纹码生成算法Genrc和指纹码追踪算法TraF。;GenFC算法通过输入初始系统参数生成所有用户的指纹码,TraF。算法则根据盗版解码器(PD,Pirate Decoder)伪造的适应性码字追踪到泄密用户的身份。盗版解码器在这里的作用是利用泄密用户的指纹码伪造出适应性的码字,达到访问加密数据的目的。由于非法用户运行盗版解密器的具体步骤在追踪时是不可知的,所以这里我们假定它是以黑盒(Black box)的方式运行,即我们在进行追踪泄密用户的过程中无需考虑它的工作方式,同样可以达到追踪的目的。
[0010]在本发明中,我们将Trarc算法为每个用户生成的指纹码嵌入到用户的私钥中,SP通过指纹码标记了用户在系统中的身份,一旦发生文件非法访问事件,通过指纹码追踪技术便可找到泄密的用户。由于指纹码追踪算法是概率算法,有可能发生追踪失败(即追踪到零个用户和无辜用户)的情况,故我们采用Koji Nuida等人的改进的指纹码追踪技术,在事先界定了抗合谋用户的数量上限及失败概率后,理论上保证在发生泄密事件后至少能追踪到一个泄密的用户。
(三)
【发明内容】
:
[0011]1、目的:
[0012]本发明的目的是提出一种泄露密钥可追踪的属性基混合加密方法,在云存储环境下,数据持有者利用混合加密的方式将数据加密后再上传到云端存储,保证了数据在云端的安全性;同时本发明结合指纹码技术,将系统为用户生成的独特的指纹码嵌入到用户私钥中,即使发生了私钥泄露事件,运行指纹码追踪算法可以有效追踪到泄露私钥的用户。
[0013]该方法平衡了对称加密和非对称加密机制的优势,通过混合加密保证数据安全性的同时提高了系统效率,节省了存储空间;指纹码技术的引入,可以确保在发生私钥泄露的情况时,数据持有者向可信权威(TA,Trusted Authority)发送数字验证请求后,可信权威至少可追踪到I位泄露密钥的用户,数据持有者可根据返回的信息采取相应措施,防止数据再次遭到破坏。
[0014]2、技术方案:
[0015]本发明包括四个实体:1)数据持有者(Data Owner):能够根据自己的安全需求制定访问控制策略,依据访问控制策略对数据加密,并将加密后的数据上传到云存储服务提供方处存储;2)数据使用者(Data Consumer):能够从云存储服务提供方处下载加密后的密文,并依据自己的私钥对数据解密;3)云存储服务提供方(Cloud Serve Provider):存储来自数据持有者的加密数据;4)可信任权威机构(Trusted Authority):受各实体信任,能可靠执行来自数据持有者的数字取证请求并作出正确回复,负责系统中所有用户的密钥生成与分发任务。
[0016]2.1基础知识:
[0017]由于本发明所设计的算法中使用了双线性映射、指纹码等方面的数学知识。特在此做出解释说明。
[0018]2.1.1双线性对
[0019]我们定义一种函数映射e(.,.),将群%中的元素映射到群^中去,
即:e:GxG — Gr,其中群,(G和&r:是两个阶数为素数ρ的乘法循环群。
[0020]双线性对满足的特性有:
[0021]①双线性特性:对于g,為 eG,,有 e(ga,hb) = e(g,h)ab 成立;
[0022]②非退化性:G群中至少存在一个元素g,使得计算后的e(g,g)为群的某个生成元;
[0023]③可计算性:存在有效的算法,使得所有的《,veG,可以有效计算出e (u,v)的值;
[0024]其中,25表示集合{0,1,2,...,ρ-1}。
[0025]2.1.2 指纹码
[0026]我们定义一种码ω e {0,1}沁长度为1^比特,可以写作:《 =其中Oi表不ω的第i位,COiG {0,1}。同时,我们选取一个集合W=,集合中的元素均为长度为L比特的码。
[0027]同时我们定义:若某个长度同为L比特的码ω*满足下述条件:对于ω*的任意比特位i,集合W中都能找到某一元素co(j)(j e {1,2,...,η}),满足ω^= ω,)(Β卩ω (J)
与ω*第i位相同),则称码ω*适应该集合W。例如,假设集合W由下述两个码字组成:
[0028](111010,010001)
[0029]则所有满足形式为:
[0030]I O
HO 10 U Ju JJ
[0031]的码字均适应集合W。
[0032]最后我们定义集合F(W),集合中的元素为所有适应集合.■的码的全体。
[0033]抗t人合谋的指纹码的生成算法定义为Genrc,追踪算法定义为Trarc ;生成算法Genp。可以生成集合Γ,由N个长度为L的码元素组成;系统中的N个用户分别被分配到集合中的一个指纹码。假设该系统中有η个用户利用自己的指纹码合谋伪造适应集合胃的码字ω*(这η个人的指纹码共同构成集合W ),在满足集合W为Γ的子集这一条件的前提下,算法Trarc将F(胃)集合中的某一元素ω *作为输入,至少能输出一个集合胃中的码字。
其中,集合臀中的元素个数不得超过最大合谋人数t,即|W|<?。
[0034]2.1.3访问控制结构
[0035]在属性基加密方案中,为了实现对数据使用者细粒度的访问控制,需要在加密数据之前制定访问控制策略,通过访问控制结构表达。本发明方案中使用的访问控制结构为访问控制矩阵Α,即I行η列的矩阵。由于属性基加密方案中访问控制策略是与属性相关的,故在生成访问控制矩阵时,我们选择一种一一映射:P (i),将矩阵A的每一行的行标i均映射到访问控制策略中涉及到的一个属性上。
[0036]2.1.4抗碰撞哈希函数
[0037]本发明中使用的哈希函数具备两个基本特性:单向性和抗碰撞性;单向性是指只能从哈希函数的输入推导出输出,而不能从哈希函数的输出计算出输入;抗碰撞性是指不能找到两个不同的哈希函数输入使其哈希后的结果相同。本发明中的哈希算法输入是任意二进制字符串。
[0038]2.2技术方案内容
[0039]本发明为一种泄露密钥可追踪的属性基加密方法,该方法由系统初始化模块、用户录入模块、文档建立模块、文档访问模块和数字取证模块,五个模块共16个步骤实现其功能。其中系统初始化模块、用户录入模块、文档建立模块、文档访问模块是顺序执行的,数字取证模块的三个步骤只在发生私钥泄露事件,由数据持有者向可信权威发送数字验证请求后,方才由可信权威执行。本发明所设计的泄露密钥可追踪的属性基加密方法的系统架构图如图1所示,现结合图1将本发明所述方法及各模块的功能介绍如下。
[0040]本发明一种泄露密钥可追踪的属性基混合加密方法,其作法如下:
[0041]模块一:系统初始化模块:
[0042]步骤1:可信权威(TA, Trusted Authority)输入系统安全参数λ ,运行算法G(T),输出两个阶数为素数P的群G Gr和一个双线性映射运算e: GxG^Gt;
[0043]步骤2:可信权威接下来运行随机数生成算法,随机选择G群中的某个生成元g,以及Zp域中的两个元素a,α。
[0044]步骤3:可信权威选择一种抗碰撞哈希函数H (.),该函数满足抗碰撞哈希函数的所有特性,输入为任意长度的0、1字符串,输出为映射到G群中的某一元素。
[0045]步骤4:可信权威运行指纹码生成算法Genrc,输入该整数η和L (整数η表示将要生成的指纹码集合Γ中元素的个数,L表示集合Γ中每个指纹码的长度)。算法Genrc输出指纹码集合Γ = {ωα),...,ω(η)},其中每个码字的长度为L。
[0046]步骤5:可信权威经过一次双线性对运算和两次指数运算得到公钥为:
[0047]PK = (g, ga, e (g, g) α,H (.))
[0048]经过一次指数运算得到主密钥为:
[0049]MSK = ga
[0050]其中,在步骤I中所述的“算沒CjO I”,其运行方法如下:可信权威输入系统安全参数λ,根据λ的大小,系统选择相应的._曲线:Y2 = X3+aX+b (a和b是系数),再由椭圆曲线上的点构成两个素数P阶的群G、(Ετ。选择一种函数映射e,将群G中的元素映射到群Gr中去;安全参数数值越大,所选择椭圆曲线上的点也越多,群也越大。
[0051]其中,步骤2中所述的“随机数生成算法”,其做法如下:根据步骤I中所选的椭圆曲线:Y2 = X3+aX+b,随机选择自变量X的一个值^,计算对应因变量Y的值yi ;若点(Xl,yi)在我们想要映射的群中,则成功生成了随机元素。若点(Xl,Y1)不在群中,则继续选择X的值,直到找到出现在群中的点。此外,域2:表示集合{1,2,...,?-1},随机选择域2;)中元素的随机数生成函数可以从Pairing-Based Cryptosystems函数包中调用库函数运行。下文中提到的随机数生成算法皆按上述方法运行。
[0052]其中,步骤3中所述的抗碰撞哈希函数Η(.)同样可以从Pairing-BasedCryptosystems函数包中调用库函数运行。
[0053]其中,步骤4中所述的“指纹码生成算法GenFC”,借用Tardos “OptimalProbabilistic Fingerprint Codes”中所提到的指纹码生成算法步骤生成,在此不做详细赘述。
[0054]其中,步骤5中所述的“运行双线性对运算”,其做法如下:自变量的输入为群G中的元素g、g,输出为群Gt中的元素:e(g,g)。
[0055]模块二:用户录入模块:
[0056]步骤6:对于请求加入系统的用户,由可信权威为其分配集合Γ中的某个指纹码ω(ω e Γ),并根据用户身份条件指定属于该用户的属性集合S。
[0057]步骤7:可信权威输入主密钥MSK = g'运行随机数生成算法,随机选择Zp域中的某个元素r,运行两次指数和一次乘法运算,得到:
[0058]K0 = g° gar 和 K1 = gr
[0059]步骤8:可信权威输入该用户属性集合S和指纹码ω,对属性集合S中的所有属性X,从I到1,进行级联、哈希函数和指数运算,得到:
[0060]{Dx j =H(x\\j\\ Wj)''} /xeS,j =
[0061]用户最终分配到的私钥为:
[0062]SK — {K0, K1, \DX J } VjceS,7=lL )
[0063]其中,步骤8中的级联运算“ I I ”表示字符串X,j, Wj首尾相接。
[0064]模块三:文档建立模块:
[0065]步骤9:数据持有者(Data Owner)首先运行随机数生成算法,随机选择Gt群中的某一元素M作为对称加密的会话密钥。使用会话密钥M对文档进行AES数据加密,加密后的密文CT上传到云端存储器存储。
[0066]步骤10:数据持有者根据自己的安全需求,制定相应的访问控制策略,该策略由用户属性表示,例如“(属性IAND属性2) OR属性3”。根据访问控制策略后,生成对应的访问控制矩阵(A,P ),A表示I行η列的矩阵,P表示可以将矩阵A的一行映射到访问控制策略中的某一属性的映射。
[0067]步骤11:数据持有者输入公钥ΡΚ、访问控制矩阵(Α,P )和待加密的会话密钥M后,为确保泄露的用户私钥可以被追踪到,数据持有者首先随机选择[1,L]区间的某一整数j,对于O和I分别运行属性基加密算法Encapsulate:
IIdrjv <r- EncapsuIate{PK,M,{Α,ρ),(/,O))
[0068]{ r
Ihlrl, Encapsulate{PK j\4,(A, p),( j, I))
[0069]Encapsulate算法的运行如下:
[0070]首先,数据持有者选择随机的向量υ = ,…,%),向量中的s为解密时,数据使用者需要恢复的指数;其他元素U2,…,Un是从Zp域中随机选取的。将矩阵A的每一行作为行向量I与向量进行内积运算,得到X1,λ1:
[0071]Λ = Λ.?> (i = I I)
[0072]接下来,Encapsulate算法对矩阵A中的每一行i进行P (.)映射,得到对应的属性字符串P (i)后与j和O、I字符级联;最后分别计算其抗碰撞哈希函数的值:
丑(P(OIiyi1)
[0073]{
[0074]最后,经过(2+21)次指数和(1+21)次乘法运算,得到Encapsulate算法的结果:
[0075]C = Me (g, g) as, C0 = gs,
[0076]C1 = g^H(p{\) Il j [I 0) C2 = g<u:H(P(2) || j || 0) C1 =|| j || 0)
[0077]C1XCp ⑴ Il./Il I),..,, C;=g^H(p(/)\\j\\\)
[0078]记为:
//rfr/(1-(CCipICpC;,
[0079]{,—, , xIldrj, ^(C,C0,{Ct,C2,...,Ci I)
[0080]最终M经Encapsulate算法加密后的密文表示为:
[0081]Hdr = (j, HdrJ;0, HdrJ; ^
[0082]其中,步骤9中所述的“AES数据加密”,通过下载MySQL (关系数据库管理系统)应用软件,可以通过调用函数“SELECT AES_ENCRYPT() ”进行加密。
[0083]其中,步骤10中所述的“生成对应的访问控制矩阵(A,P ) ”,矩阵A中各元素的选择原则是能够有效恢复出步骤11中提到的“指数S”。
[0084]模块四:文档访问模块:
[0085]这里我们定义集合1(1 = U|p (i) e S}),表示用户属性集合S中所有属性P (i) e S通过映射P (.),对应的访问控制矩阵A的行标i的集合。若用户的属性集合S中的属性满足数据持有者加密M时制定的访问控制策略,则一定可以找到常数Wi e Zp,按照下式:
[0086]X viV^ = s

?€?
[0087]有效恢复出指数S。
[0088]步骤12:在这一模块中,数据的使用者(Data Consumer)从云端存储器下载需要访问的加密文件CT和Hdr。从步骤11的输出可知,消息Hdr由三部分组成;数据使用用户首先查看自身指纹码的第j位:对于指纹码的第j位是O的情况,属性基解密算法的输入为Hdr的第二部分Hdqtl和该数据使用者的用户私钥SK ;对于第j位是I的情况,属性基解密算法的输入为Hdr的第三部分Hdq1和该数据使用者的用户私钥SK。
[0089]第j位是O时属性基解密算法按下式运行双线性对和乘、除法计算:
M I __6*(.(..(1,Κ{) )_
—Π-(机,[丨
[0090]
e{g\g') l^s "
[0091]第j位是I时属性基解密算法按下式运行双线性对和乘、除法计算:
—_Cj(C0vA^0)_
[0092]


,&
[0093]经最后一步除法运算,得到会话密钥M:
[0095]步骤13:数据使用者使用会话密钥Μ,对加密文件CT运行AES数据解密算法,即可访问所需的明文文件。
[0096]其中,步骤13中所述的“运行AES数据解密算法”,通过下载MySQL (关系数据库管理系统)应用软件,可以通过调用函数“SELECT AES_DECRYPT (AES_ENCRYPT O ”进行解密。
[0097]模块五:数字取证模块:
[0098]该数字取证模块只在发生用户私钥泄露的情况时才运行,共分3步执行:
[0099]步骤I*:可信权威首先寻找被盗版解码器(PD)用来伪造用户私钥的适应性码字:

ω 0
[0100]对于j从I到L,每次选择化群中两个不等的消息,分别运行
Encapsulate算法得到输出:
Ildrj () <r~ Encapsulate(PK,M r,( A,ρ),(/.,O))
[0101]'IMrjl ^ EncapsulateiPK,M..\{A,p\{ j,\))
[0102]将得到的结果作为盗版解码器的输入(盗版解密器是根据泄露的用户私钥构造的,具有伪造用户私钥、解密数据的功能,输出为解密后的消息M/),若输出的结果M/与Mj相等,则判断适应性码字ω*的第j位为0,即ω / = O ;否则,判断为I。
[0103]j经I遍历到L后,可以得到被盗版解码器(PD)用来伪造用户私钥的适应性码字:
氺__氺氺氺
ω = O1 ω 2...ω L ο
[0104]步骤2*:首先,可信权威需要指定追踪算法Trarc的容错概率ε (表示Trarc算法追踪到的最后结果包含某个无辜用户或是追踪无果的概率),下式中的t表示该指纹码可以抗t人合谋攻击,即超过t人的合谋,该算法便失去了有效性。故该算法需在运行追踪算法之前确定泄密用户的总数不多于t。
[0105]接下来,分别计算k、k'和阈值Z的值:
[0106]k = l/300t, k' = >/arcsin k (O <k'< , Z = 20t\ log(l/£')l
4
[0107]在得到k'的值后,随机选择区间Κ’,|-^之间的某一随机值-&’],并计算Pj = sin2rj (j从I遍历到L)。
[0108]步骤3*:将上一步得到的适应性码字ω* =ω^,分别与指纹码集合Γ={ωω,...,ω(η)}中的所有码字进行对比,按照下式计算每次比较对应码字位的权值:
σ(ρ) ω; = 1,^/ = I
—ct( \ — Di ) C0.=K=O
[0109]S, = I^? / = I, * * ^ ; / = I, * * *, L
^-CX(Pj) OJj =(1ω; =0J

σ{\- ρ,) (j --1, OJj1 = O
[0110]其中,σ{ρ)=^(\-P)!PO
[0111]对于每个用户,计算所有位的权值之和A = TUs/,并与阈值Z比较,所有权值之和高于Z的用户,其系统标号记入集合C中,可信权威输出追踪结果{1,…,#}。
[0112]3、优点及功效:
[0113]本发明提供一种泄露密钥可追踪的属性基混合加密方法,在云存储环境下使用该方法对数据加密可保证数据在不完全可信的云存储器存储时的安全性,且一旦发生用户私钥泄露事件,可信权威机构可有效追踪到泄密用户的身份,该方法的优点和功效是:
[0114]I)本发明方法首先考虑到数据持有者的明文数据上传到云存储器中存储后,数据持有者便失去了对自身数据的控制权,明文数据的完整性极易遭到来自网络环境中各路不法分子的恶意破坏。出于保护数据外包存储安全性的目的,本发明方法引入密码学中的加密技术,在数据持有者将数据上传到云存储器存储前,先对数据进行加密,仅有数据持有者和授权的数据使用者(即持有解密私钥的用户)方可对加密文件解密。
[0115]2)本发明方法综合了对称加密机制和非对称加密机制的优点,采用混合加密的方式,首先将明文数据以对称加密机制中的AES加密方法加密,该方法加密速度快,密文长度短小,便于存储。以非对称加密机制中的属性基加密方法对AES的会话密钥再加密,用户属性满足访问控制结构的解密者方可获得会话密钥,完成AES解密。该方法省去了繁琐的密钥协商步骤,且属性基加密方法更贴近现实生活的应用场景,实用性更强。
[0116]3)本发明方法与以往的属性基加密方法相比最大的优势与创新点在于:该方法加入了指纹码追踪技术,将独特的指纹码嵌入到用户的私钥中,发生私钥泄露时可有效追踪到泄露的源头;现有的属性基方法仅具备了加、解密数据的功能,一旦用户的私钥泄露,以该私钥对应的公钥加密的数据就会遭到非法访问,这对数据的安全性保护来说是存在漏洞的。本发明方法结合已有的技术成熟的指纹码技术,在可信权威的协助下,通过与盗版解密器(PD)交互,能有效追踪到泄露密钥的用户的身份,数据持有者在知晓泄密用户之后可采取应急手段,防止数据再次遭到破坏。
(四)【专利附图】

【附图说明】:
[0117]图1为本发明所述方法的系统架构图。
[0118]图2为本发明所述方法的流程框图。
(五)

【具体实施方式】
[0119]本发明为一种泄露密钥可追踪的属性基混合加密方法,该方法由系统初始化模块、用户录入模块、文档建立模块、文档访问模块和数字取证模块这五个模块实现。整个泄露密钥可追踪的属性基混合加密方法运行的系统架构图见图1所示,本发明所述方法的流程框图见图2所示,结合该流程框图,将该方法的具体实现步骤介绍如下:
[0120]本发明一种泄露密钥可追踪的属性基混合加密方法,该方法的作法如下:
[0121]模块一:系统初始化模块:
[0122]步骤1:可信权威(TA, Trusted Authority)输入系统安全参数λ ,运行算法5(1勺爿输出两个阶数为素数P的群G、Gt和一个双线性映射运算e: GxG-^Gt
[0123]步骤2:可信权威接下来运行随机数生成算法,随机选择G群中的某个生成元g,以及Zp域中的两个元素a,α。
[0124]步骤3:可信权威选择一种抗碰撞哈希函数H (.),该函数满足抗碰撞哈希函数的所有特性,输入为任意长度的0、1字符串,输出为映射到G群中的某一元素。
[0125]步骤4:可信权威运行指纹码生成算法Genrc,输入该整数η和L (整数η表示将要生成的指纹码集合Γ中元素的个数,L表示集合Γ中每个指纹码的长度)。算法Genrc输出指纹码集合Γ = {ωα),...,ω(η)},其中每个码字的长度为L。
[0126]步骤5:可信权威经过一次双线性对运算和两次指数运算得到公钥为:
[0127]PK = (g, ga, e (g, g) α,H (.))
[0128]经过一次指数运算得到主密钥为:
[0129]MSK = ga
[0130]其中,在步骤I中所述的“算法以O”,其运行方法如下:私钥生成中心(PKG)输入系统安全参数λ,根据λ的大小,系统选择相应的椭圆曲线:Y2 = X3+aX+b(a和b是系数),再由椭圆曲线上的点构成两个素数P阶的群$、&Γ。选择一种函数映射e,将群:G中的元素映射到群Gr中去;安全参数数值越大,所选择椭圆曲线上的点也越多,群也越大。
[0131]其中,步骤2中所述的“随机数生成算法”,其做法如下:根据步骤I中所选的椭圆曲线:Y2 = X3+aX+b,随机选择自变量X的一个值^,计算对应因变量Y的值yi ;若点(Xl,yi)在我们想要映射的群中,则成功生成了随机元素。若点(Xl,Y1)不在群中,则继续选择X的值,直到找到出现在群中的点。此外,域Z-表示集合{1,2,...,p-1},随机选择域ζ中元素的随机数生成函数可以从Pairing-Based Cryptosystems函数包中调用库函数运行。下文中提到的随机数生成算法皆按上述方法运行。
[0132]其中,步骤3中所述的抗碰撞哈希函数H (.)同样可以从Pairing-BasedCryptosystems函数包中调用库函数运行。
[0133]其中,步骤4中所述的“指纹码生成算法Genrc”,借用Tardos “OptimalProbabilistic Fingerprint Codes”中所提到的指纹码生成算法步骤生成,在此不做详细描述。
[0134]其中,步骤5中所述的“运行双线性对运算”,其做法如下:自变量的输入为群G中的元素g、g,输出为群Gt中的元素:e(g,g)。
[0135]模块二:用户录入模块:
[0136]步骤6:对于请求加入系统的用户,由可信权威为其分配集合Γ中的某个指纹码ω(ω e Γ),并根据用户身份条件指定属于该用户的属性集合S。
[0137]步骤7:可信权威输入主密钥MSK = g'运行随机数生成算法,随机选择Zp域中的某个元素r,运行两次指数和一次乘法运算,得到:
[0138]K0 = g° gar 和 K1 = gr
[0139]步骤8:可信权威输入该用户属性集合S和指纹码ω,对属性集合S中的所有属性X,从I到1,进行级联、哈希函数和指数运算,得到:
[0140]{DXJ =H(x\\ JWajY} Vxe 5,/ = 1,--,L
[0141]用户最终分配到的私钥为:
[0142]SK — (K0, K', \DX j}^eS j=1£)
[0143]其中,步骤8中的级联运算“I I”表示字符串X,j,首尾相接。
[0144]模块三:文档建立模块:
[0145]步骤9:数据持有者(Data Owner)首先运行随机数生成算法,随机选择Gt群中的某一元素M作为对称加密的会话密钥。使用会话密钥M对文档进行AES数据加密,加密后的密文CT上传到云端存储器存储。
[0146]步骤10:数据持有者根据自己的安全需求,制定相应的访问控制策略,该策略由用户属性表示,例如“(属性IAND属性2) OR属性3”。根据访问控制策略后,生成对应的访问控制矩阵(A,P ),A表示I行η列的矩阵,P表示可以将矩阵A的一行映射到访问控制策略中的某一属性的映射。
[0147]步骤11:数据持有者输入公钥ΡΚ、访问控制矩阵(Α,P )和待加密的会话密钥M后,为确保泄露的用户私钥可以被追踪到,数据持有者首先随机选择[1,L]区间的某一整数j,对于O和I分别运行属性基加密算法Encapsulate:
IIdrj (| <— Encapsulate(PK, M
[0148]{
1IIdrj I Encapsulate、PK,M,{A,ρ),(/, I))
[0149]Encapsulate算法的运行如下:
[0150]首先,数据持有者选择随机的向量υ:V = {s,l>2,---,l>n),向量中的s为解密时,数据使用者需要恢复的指数;其他元素U2,…,Un是从Zp域中随机选取的。将矩阵A的每一行作为行向量?与向量?进行内积运算,得到入” λ2,…,入1:
[0151]^i=Ir V (/ = I,…,/)
[0152]接下来,Encapsulate算法对矩阵A中的每一行i进行P (.)映射,得到对应的属性字符串P (i)后与j和O、I字符级联;最后分别计算其抗碰撞哈希函数的值:
r n^(P(OIIiI1)
[0153]{
[0154]最后,经过(2+21)次指数和(1+21)次乘法运算,得到Encapsulate算法的结果:
[0155]C = Me (g, g) as, C0 = gs,
[0156]C1 = <r Η(ρ(\) Il j Il 0) a = g^H{p{2) || j 丨丨 0) C1 = g^H(p(l) || j || 0)
[0157]C; = g^Hipd) Il j Il I) C; = g^-H(p(2) || j\\I) C; = gaA'H(p{l) || j || I)
[0158]记为:
I Idv 0 = (C, C0, {Cl, C1,…,C:;)
[0159]{' ' ,
?Idrji ^(C,C2,...,C1 I)
[0160]最终M经Encapsulate算法加密后的密文表示为:
[0161]Hdr = (j, HdrJ;0, HdrJ;1)
[0162]其中,步骤9中所述的“AES数据加密”,通过下载MySQL (关系数据库管理系统)应用软件,可以通过调用函数“SELECT AES_ENCRYPT() ”进行加密。
[0163]其中,步骤10中所述的“生成对应的访问控制矩阵(A,P ) ”,矩阵A中各元素的选择原则是能够有效恢复出步骤11中提到的“指数S”。
[0164]模块四:文档访问模块:
[0165]在这一模块中,数据的使用者(Data Consumer)从云端存储器下载需要访问的加密文件CT和Hdr。运行属性基解密算法,若数据使用者的属性集合S中的属性满足数据持有者加密会话密钥M时制定的访问控制策略,通过输入该数据使用用户的私钥SK和待解密的消息Hdr,则可以从Hdr中成功解密出会话密钥M。
[0166]这里我们定义集合1(1 = U|p (i) e S}),表示用户属性集合S中所有属性P (i) e S通过映射P (.),对应的访问控制矩阵A的行标i的集合。若用户的属性集合S中的属性满足数据持有者加密M时制定的访问控制策略,则一定可以找到常数Wi e Zp,按照下式:
[0167]Σ vH-A-1£l
[0168]有效恢复出指数S。
[0169]步骤12:从步骤11的输出可知,消息Hdr由三部分组成;数据使用用户首先查看自身指纹码的第j位:对于指纹码的第j位是O的情况,属性基解密算法的输入为Hdr的第二部分Hdqtl和该数据使用者的用户私钥SK ;对于第j位是I的情况,属性基解密算法的输入为Hdr的第三部分Hdq1和该数据使用者的用户私钥SK。
[0170]第j位是O时属性基解密算法按下式运行双线性对和乘、除法计算:
M' =_?((-?,厂丨 >.)_

Πρ(,.)ε5).e(C0, Dp{i)J )) '
[0171]
=啪、,^丫.)=电)
e(ga,gr)
[0172]第j位是I时属性基解密算法按下式运行双线性对和乘、除法计算:
M' =_ci^^Kn)_
[0173]
= e(g、,g',)y,g":)=e(g,gr
[0174]经最后一步除法运算,得到会话密钥M:
[0175]
,M e(g,g)
[0176]步骤13:数据使用者使用会话密钥M,对加密文件CT运行AES数据解密算法,即可访问所需的明文文件。
[0177]其中,步骤13中所述的“运行AES数据解密算法”,通过下载MySQL (关系数据库管理系统)应用软件,可以通过调用函数“SELECT AES_DECRYPT (AES_ENCRYPT O ”进行解密。
[0178]模块五:数字取证模块:
[0179]当数据持有者发现自己存储在云端的数据被非法访问时,可以向可信权威(TA)发送数字取证请求,由TA寻找出泄露密钥的用户。TA在接到取证请求后,运行指纹码追踪算法Trarc找到叛徒用户集合C,发送给数据持有者,该数字取证模块只在发生用户私钥泄露的情况时才运行,共分3步执行:
[0180]步骤I*:可信权威首先寻找被盗版解码器(PD)用来伪造用户私钥的适应性码字:

ω 0
[0181]对于j从I到L,每次选择群中两个不等的消息,分别运行Encapsulate算法得到输出:
IIdr..() <— Encapsiilate{PK, M /)),(/.,O))
Γθ182l I
KIIdrj I EncapsiilatciPK,Mj ',(/I,/)),( /, I))
[0183]将得到的结果作为盗版解码器的输入(盗版解密器是根据泄露的用户私钥构造的,具有伪造用户私钥、解密数据的功能,输出为解密后的消息M/),若输出的结果M/与Mj相等,则判断适应性码字ω*的第j位为0,即ω / = O ;否则,判断为I。
[0184]j经I遍历到L后,可以得到被盗版解码器(PD)用来伪造用户私钥的适应性码字:
氺__氺氺氺
ω = O1 ω 2...ω L ο
[0185]步骤2*:首先,可信权威需要指定追踪算法Trarc的容错概率ε (表示Trarc算法追踪到的最后结果包含某个无辜用户或是追踪无果的概率),下式中的t表示该指纹码可以抗t人合谋攻击,即超过t人的合谋,该算法便失去了有效性。故该算法需在运行追踪算法之前确定泄密用户的总数不多于t。
[0186]接下来,分别计算k、k'和阈值Z的值:
[0187]k = l/300t, k' = Varcsin k(() <k'<^), Z = 2(k「log(l / £.)"|
4
[0188]在得到k'的值后,随机选择区间^之间的某一随机值—Η,并计算Pj = sin2rj (j从I遍历到L)。
[0189]步骤3*:将上一步得到的适应性码字ω* = ω广ω/...ω^,分别与指纹码集合Γ={ωω,...,ωω}中的所有码字进行对比,按照下式计算每次比较对应码字位的权值:
(J(Pj) (Oj -1,= 1-σ(1 - ρ:) ω- = I, ω' = O
[0190]5 =.\[ i = 1,...,η ; j = I L

-Gipj) (Oj = O, OJj = O

σ(\ - ρ.) OJj = \,(θ! = O
[0191]其中,¢7(/7)= ^/(1-/7)/ρ。
[0192]对于每个用户,计算所有位的权值之和A = U,并与阈值Z比较,所有权值之和高于Z的用户,其系统标号记入集合C中,可信权威输出追踪结果Cq {I,-。
【权利要求】
1.一种泄露密钥可追踪的属性基混合加密方法,其特征在于:其作法如下: 模块一:系统初始化模块: 步骤1:可信权威即TA输入系统安全参数λ,运行算法6(Γ),输出两个阶数为素数P的群Cr、(£^和一个双线性映射运算e: G X G Gr ; 步骤2:可信权威接下来运行随机数生成算法,随机选择G群中的某个生成元g,以及Zp域中的两个元素a, α ; 步骤3:可信权威选择一种抗碰撞哈希函数H (.),该函数满足抗碰撞哈希函数的所有特性,输入为任意长度的0、1字符串,输出为映射到G群中的某一元素; 步骤4:可信权威运行指纹码生成算法GenF。,输入该整数η和L,该整数η表示将要生成的指纹码集合Γ中元素的个数,L表示集合Γ中每个指纹码的长度;算法Genrc输出指纹码集合Γ = {ω(1),..., ω(η)},其中每个码字的长度为L; 步骤5:可信权威经过一次双线性对运算和两次指数运算得到公钥为:
PK = (g, ga, e(g, g) α, H(.)) 经过一次指数运算得到主密钥为:
MSK = ga ; 模块二:用户录入模块: 步骤6:对于请求加入系统的用户,由可信权威为其分配集合Γ中的某个指纹码ω(ω e Γ),并根据用户身份条件指定属于该用户的属性集合S ; 步骤7:可信权威输入主密钥MSK = g'运行随机数生成算法,随机选择Zp域中的某个元素r,运行两次指数和一次乘法运算,得到:
K0 = gagar 和 K1 = gr ; 步骤8:可信权威输入该用户属性集合S和指纹码ω,对属性集合S中的所有属性X,从I到1,进行级联、哈希函数和指数运算,得到: {?χ.=Η{χ\\]\\ω}γ}/χ^8,] = ν L 用户最终分配到的私钥为: SK = (KivK^l)

Vjc&SJ二I,,..』).其中,该级联运算“ 11 ”表示字符串X,j, 首尾相接; 模块三:文档建立模块: 步骤9:数据持有者即Data Owner首先运行随机数生成算法,随机选择Gt群中的某一元素M作为对称加密的会话密钥;使用会话密钥M对文档进行AES数据加密,加密后的密文CT上传到云端存储器存储; 步骤10:数据持有者根据自己的安全需求,制定相应的访问控制策略,该策略由用户属性表示,例如“(属性IAND属性2) OR属性3”,根据访问控制策略后,生成对应的访问控制矩阵(A,P ),A表示I行η列的矩阵,P表示能将矩阵A的一行映射到访问控制策略中的某一属性的映射; 步骤11:数据持有者输入公钥ΡΚ、访问控制矩阵(Α,P)和待加密的会话密钥M后,为确保泄露的用户私钥能被追踪到,数据持有者首先随机选择[1,L]区间的某一整数j,对于O和I分别运行属性基加密算法Encapsulate:
JIdrj 0 <— EncapsuIateiPK,M,{A,p),{ j,{)))
'IIdrj, <-■ Encapsulate^PK, M,{A, p),( j, I)) Encapsulate算法的运行如下: 首先,数据持有者选择随机的向量P:v = (s,v2,---,un),向量中的s为解密时,数据使用者需要恢复的指数;其他元素U2,…,Un是从Zp域中随机选取的,将矩阵A的每一行作为行向量4.与向量P.进行内积运算,得到λ I,λ2,...,λ1:
Xi = A1-V (i = 1,...,1) 接下来,Encapsulate算法对矩阵A中的每一行i进行P (.)映射,得到对应的属性字符串P (i)后与j和O、I字符级联;最后分别计算其抗碰撞哈希函数的值://(P(OIIiI1) W(OIIiIIi) 最后,经过(2+21)次指数和(1+21)次乘法运算,得到Encapsulate算法的结果:
C = Me (g, g) as, C0 = gs,
C1 = ga^H{p(l) Il j Il 0) C2 = g 唤 H(p(2) || _/1| 0) C1= gaX'H(p(l) ||_/|| 0)
C; = iT //(MDIl./Il I) C;= ?Τ:"(/)(2)Il./Il I) C; = f HiPiD 11/111) 记为: Hdrjn=(QC0ACpCnCl))
W}l-(C,C0,{C;,C2',...,C;}) 最终M经Encapsulate算法加密后的密文表示为:
Hdr = (j, HdrJ;o, Hdru); 模块四:文档访问模块: 定义集合I (I = UIp (i) e S}),表示用户属性集合S中所有属性P (i) e S通过映射P (.),对应的访问控制矩阵A的行标i的集合;若用户的属性集合S中的属性满足数据持有者加密M时制定的访问控制策略,则一定能找到常数Wi e Zp,按照下式:
YjWiXi=S
i'e/ 有效恢复出指数S ; 步骤12:在这一模块中,数据的使用者即Data Consumer从云端存储器下载需要访问的加密文件CT和Hdr ;从步骤11的输出可知,消息Hdr由三部分组成;数据使用用户首先查看自身指纹码的第j位:对于指纹码的第j位是O的情况,属性基解密算法的输入为Hdr的第二部分Hdqtl和该数据使用者的用户私钥SK ;对于第j位是I的情况,属性基解密算法的输入为Hdr的第三部分Hdq1和该数据使用者的用户私钥SK ; 第j位是O时属性基解密算法按下式运行双线性对和乘、除法计算: 从,__e(C0,[0)_

…_ 第j位是I时属性基解密算法按下式运行双线性对和乘、除法计算: _e((i”《O)__
—ΓU>(c,'’,[1).?^(c。,?叫))''',
=-Y M- =g(g,g)
e(ga,g' Γρ,η" 经最后一步除法运算,得到会话密钥M: μ-c/
e(g,gr ; 步骤13:数据使用者使用会话密钥M,对加密文件CT运行AES数据解密算法,即能访问所需的明文文件; 模块五:数字取证模块: 该数字取证模块只在发生用户私钥泄露的情况时才运行,共分3步执行: 步骤I*:可信权威首先寻找被盗版解码器即H)用来伪造用户私钥的适应性码字:ω* ; 对于j从I到L,每次选择群中两个不等的消息M,分别运行Encapsulate算法得到输出:
JIdrj 0 <— Encapsulaie(PK, M j, (A, ρ), (j, O))
χIldrj I <— Enc'apsulateiPK,M; \ (Α,ρ),(],\)) 将得到的结果作为盗版解码器的输入,该盗版解密器是根据泄露的用户私钥构造的,具有伪造用户私钥、解密数据的功能,输出为解密后的消息Μ/,若输出的结果M/与Md目等,则判断适应性码字ω*的第j位为O,即ω/ = O ;否则,判断为I ; j经I遍历到L后,能得到被盗版解码器即H)用来伪造用户私钥的适应性码字:ω* = 氺氺氺?I ?2 …WL ; 步骤2*:首先,可信权威需要指定追踪算法Trarc的容错概率ε (表示Trarc算法追踪到的最后结果包含某个无辜用户或是追踪无果的概率),下式中的t表示该指纹码可以抗t人合谋攻击,即超过t人的合谋,该算法便失去了有效性;故该算法需在运行追踪算法之前确定泄密用户的总数不多于t; 接下来,分别计算k、k,和阈值Z的值:
k = l/300t,k' = Varcsin k (O <k'< , Z = 20/[ log(l/i;)l


4 在得到k'的值后,随机选择区间R’,f-纠之间的某一随机值,并计算Pj = sin2!.」,j从I遍历至丨J L ; 步骤3*:将上一步得到的适应性码字ω* = 03^?/...?^,分别与指纹码集合Γ ={ω(1),..., ω ω}中的所有码字进行对比,按照下式计算每次比较对应码字位的权值:
<y{Pj) ω* =\,aj =1.—σ( I — p,-) ω, = I, ω; = O
Si = -1*> / = I, * *., η ; j = 1,..', L
' -a(pj) 0: =0,ω; =0
σ(1 - Pj) O); = I, ω; = O
其中,σ(ρ) = ^(?-ρ)/ρ ; 对于每个用户,计算所有位的权值之和:4=Σ: s 并与阈值z比较,所有权值之和高于Z的用户,其系统标号记入集合C中,可信权威输出追踪结果\。
2.根据权利要求1所述的一种泄露密钥可追踪的属性基混合加密方法,其特征在于:在步骤I中所述的“运行算法其运行方法如下:可信权威输入系统安全参数λ,根据λ的大小,系统选择相应的椭圆曲线:Y2 = X3+aX+b,a和b是系数,再由椭圆曲线上的点构成两个素数P阶的群G、Gt ;选择一种函数映射e,将群G中的元素映射到群Gr中去;安全参数数值越大,所选择椭圆曲线上的点也越多,群也越大。
3.根据权利要求1所述的一种泄露密钥可追踪的属性基混合加密方法,其特征在于:在步骤2中所述的“随机数生成算法”,其做法如下:根据步骤I中所选的椭圆曲线:Y2 =X3+aX+b,随机选择自变量X的一个值X1,计算对应因变量Y的值Y1 ;若点(X1, Y1)在我们想要映射的群中,则成功生成了随机元素;若点(Xl,Y1)不在群中,则继续选择X的值,直到找到出现在群中的点;此外,域Z=表示集合{1,2,...,ρ-l},随机选择域g中元素的随机数生成函数能从Pairing-Based Cryptosystems函数包中调用库函数运行。
4.根据权利要求1所述的一种泄露密钥可追踪的属性基混合加密方法,其特征在于:在步骤5中所述的“运行双线性对运算”,其做法如下:自变量的输入为群G中的元素g、g,输出为群(Gt1中的元素:e(g,g)。
5.根据权利要求1所述的一种泄露密钥可追踪的属性基混合加密方法,其特征在于:在步骤9中所述的“AES数据加密”,通过下载MySQL应用软件,能通过调用函数“SELECTAES_ENCRYPT O ” 进行加密。
6.根据权利要求1所述的一种泄露密钥可追踪的属性基混合加密方法,其特征在于:在步骤13中所述的“运行AES数据解密算法”,通过下载MySQL应用软件,能通过调用函数“ SELECT AES_DECRYPT (AES_ENCRYPT O ” 进行解密。
【文档编号】G06F21/32GK104168108SQ201410362945
【公开日】2014年11月26日 申请日期:2014年7月28日 优先权日:2014年7月28日
【发明者】伍前红, 邓桦, 周云雅, 刘建伟, 秦波 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1