一种基于CP-ABE高效且安全的细粒度访问控制方法与流程

文档序号:15624618发布日期:2018-10-09 22:40阅读:258来源:国知局
本发明涉及云环境下数据访问控制领域,更具体地,涉及一种基于cp-abe高效且安全的细粒度访问控制方法。
背景技术
:当前,数据成为个人和企业的最宝贵的资产,数据资产及其管理能力将会决定企业竞争的胜败,成为个人发展的关键。然而,在大数据和云计算环境下,当个人数据被远程存储的时候,存储的数据将被用到哪里,被谁使用却不是用户可以再决定的,数据所有者丧失对其数据尤其是敏感数据的绝对控制权,用户隐私泄露和数据主权问题时有发生。用户迫切需要明确数据主权,能够决定其数据的去向,对其数据实施细粒度访问控制策略。通过研究发现近年来提出的密文策略属性基加密(cp-abe)通过数据拥有者制定访问控制策略的形式实现对其数据的细粒度访问控制,能够较好的明确数据主权,且cp-abe能实现一次为所有方加密而不是每次为各方加密,只有满足访问控制结构属性集的用户才能够访问数据,具有富表达力的特点,能对加密数据实施细粒度的访问控制。但是cp-abe方法却存在着运行过程中,服务器可以窃取用户数据、访问控制策略难以更新、属性撤销困难,本地加解密过程中将消耗大量的计算和通信资源而难以在小微设备、移动设备有效工作的问题。技术实现要素:本发明的目的在于克服现有技术的不足,提供一种基于cp-abe高效且安全的细粒度访问控制方法。为解决上述问题,本发明提供的技术方案为:一种基于cp-abe高效且安全的细粒度访问控制方法,其中,包括以下步骤:s1.系统初始化和参数生成,可信中心ta运行setup(k)算法,对系统进行初始化和参数生成,算法以安全参数k为输入,生成系统公钥pk、主密钥mk;s2.私钥生成,可信中心ta运行keygen(pk,mk,a)算法,根据用户属性集,为用户生成私钥sk;s3.数据加密,可信中心ta运行encrypt(pk,m,t)算法,根据用户制定的访问控制策略t,为数据密文m进行数据加密,生成具有访问控制策略的密文ct;s4.重加密密钥生成,数据拥有者do运行rekeygen(pk,t1,sk)算法,当用户制定的访问控制策略更新时,根据用户私钥为用户生成密文重加密密钥rk;s5.密文重加密,解密服务ds运行reencrypt(pk,ct,rk)算法,当用户制定的访问控制策略更新时,在密文状态下进行密文更新,生成重加密密文ct1;s6.私钥划分,数据请求者dr运行deydiv(pk,sk)算法,将用户私钥进行划分,生成密文转换私钥rk和本地解密密钥tk;s7.数据解密,解密服务ds运行decrypt(pk,ct,sk)算法,判断用户私钥是否满足数据加密时用户制定的访问控制策略,为用户进行数据解密,若满足则输出明文m,否则输出为空;s8.属性撤销,运行attrrevoke(ct,sk)算法,用以更新密文和用户私钥,当发送属性撤销时,未被撤销属性的用户可直接更新私钥,被撤销属性的用户必须向可信中心ta请求更新私钥。在本发明中,系统包括:用户层:包含数据拥有者和数据请求者。数据拥有者即数据文件的提供者,在上传数据文件的时候,定义数据的访问控制策略,且负责维护数据;数据请求者即数据文件的使用者,服务器判断其私钥是否具有解密权限来决定其是否可以使用数据文件。计算层:包含加密服务和解密服务,具有较大的运算能力。加密服务提供数据的加密功能,向下接收数据拥有者加密请求。解密服务提供数据的解密功能,向下接收数据请求者的请求。存储层:由存储服务构成,提供存储服务,具有较大的存储能力,向下接收加密服务存储请求,和解密服务的访问请求。可信中心:可信中心进行系统初始化并生成系统的参数。与用户层的联系是双向联系,提供用户层系统公共参数,并根据用户层的用户属性集为用户生成私钥;与计算层是单向联系,仅为计算层提供系统公共参数。在本发明中,初始化算法setup(k)由可信中心ta运行,进行系统初始化和参数的生成。算法以安全参数k为输入,输出系统主密钥mk和公钥pk,该算法能够为系统运行配置环境和生成安全参数。私钥生成算法keygen(pk,mk,a)由可信中心ta运行,为用户生成属性私钥。输入用户属性集a,输出与属性集相关的属性私钥sk,该算法能够为每一个合法用户生成唯一的私钥。加密算法encrypt(pk,m,t)由加密服务es运行,用以加密明文。输入公钥pk,do制定的访问结构t和明文信息m,输出具有访问控制策略的密文ct,该算法在利用服务器计算资源加密数据的同时,保持数据信息对于服务器保持致盲状态。重加密密钥生成算法rekeygen(pk,t1,sk)由数据拥有者do运行。输入公钥pk,新访问结构t1,以及用户当前的私钥,算法输出用于密文重加密的密钥rk,该算法能够生成用于密文重加密的密钥。重加密算法reencrypt(pk,ct,rk)由解密服务ds运行。算法以重加密密钥rk,公钥pk和原始密文ct为输出,输出重加密密文ct1。当访问结构更新时,可以直接将在访问结构t下加密的密文转换为在访问结构t1下加密的密文。私钥划分算法keydiv(pk,sk)由用户执行。算法以公钥pk和用户私钥sk为输入,输出与私钥sk相关的密文转换密钥rk和本地解密密钥tk,可以将私钥进行拆分,保证服务器获取不到用户私钥。解密算法decrypt(pk,ct,sk)由解密服务ds运行,用以解密密文。算法以公钥pk,密文ct和用户私钥sk为输入,如果用户私钥满足密文访问控制结构的要求是,输出明文信息m,否则输出为空,该算法在解密的过程中,利用服务器计算资源的同时,仍然能够保持数据信息对服务器的致盲状态。属性撤销算法attrrevoke(ct,sk),当发生属性撤销时,算法用以更新密文和用户私钥。算法以密文ct和用户私钥为输入,输出更新后的密文和用户私钥{ct′,sk′},当属性撤销发生时,可以及时更新系统,保证数据的安全性。进一步地,所述的s1步骤具体包括:s11.系统初始化,选择循环群其中循环群的阶为素数p,生成元分别为g1,g2,设定双线性映射并选取哈希函数s12.生成参数,可信中心ta运行setup(k)算法,算法以随机选择的两个安全参数α,β∈zp,zp为以p为阶的整数群,生成系统的公钥和主密钥参数,主密钥mk=(β,g1α),为可信中心ta保留,公钥分发给系统参与者。进一步地,所述的s2步骤具体包括:可信中心ta运行keygen(pk,mk,a)算法,算法随即随机选择r∈zp,设用户的属性集为a,对于每一个属性i∈a,随机选择ri∈zp,生成私钥sk,进一步地,所述的s3步骤具体包括:s31.可信中心ta运行encrypt(pk,m,t)算法,数据拥有者do制定访问树形式的访问结构t=tdo+tes,其中tdo为用户独立控制的访问结构,tes是为服务器处理的访问控制策略,ldo和les表示tdo和tes的叶子节点集合,lt表示访问树t的叶子节点集合,加密时采用shamir秘密共享方案;对于访问树中的任一节点x,则其共享秘密为qx(0)。s32.数据拥有者do随机选择一个1阶多项式q(x),计算s=q(0),s1=q(1),s2=q(2);s33.加密服务es接收数据拥有者do发送的{s1,tes},并以s1为共享秘密,计算s34.数据拥有者do以s2为共享秘密,计算且对于明文m和s=q(0)计算c=me(g1,g2)αs和c′=hs;s35.加密服务es接收数据拥有者do发送的信息{ctdo,c,c’},联合ctes计算密文:s36.加密服务es发送ct到存储服务,存储服务保存密文信息到数据库中。进一步地,所述的s4步骤具体包括:s41.数据拥有者do运行rekeygen(pk,t1,sk)算法,do随机选择θ∈zp,更新私钥为s42.do计算s43.do联合两部分信息,计算重加密密钥rk:进一步地,所述的s5步骤具体包括:s51.解密服务ds运行reencrypt(pk,ct,rk)算法,对于原始密文进行递归解密,计算其中y为访问树中的叶子节点;s52.对于访问树中的非叶子节点x进行递归解密,计算:对于根节点r,有a=fr=e(g1,g2)rs;s53.ds计算s54.数据拥有者do接收ds发送的信息{a,b}计算s55.计算重加密密文ct1:s56.用户do上传重加密密文ct1到解密服务,解密服务更进一步将ct1上传到存储服务,保存到存储服务器中,更新原始密文为重加密密文。进一步地,所述的s6步骤具体包括:s61.数据请求者dr运行keydiv(pk,sk)算法,dr随机选择t∈zp,联合其私钥计算k′=gt(α+r)/β;s62.dr计算密文转换密钥发送到解密服务ds;s63.dr计算本地解密密钥tk=t,并保存。进一步地,所述的s7步骤具体包括:s701.解密服务ds运行decrypt(pk,ct,sk)算法,对于密文,ds进行递归解密,计算其中y为访问树中的叶子节点,如果fy输出为空;s702.对于访问树中的非叶子节点x进行递归解密,计算进一步地,所述的s7步骤还包括:当密文为原始密文时,解密过程如下:s711.此时a=fr=e(g1,g2)rs;s712.计算b=e(c′,k′)=e(hs,g1t(α+r)/β)=e(g2βs,g1t(α+r)/β)=e(g1,g2)t(α+r)×s;s713.数据请求者dr接收信息,{a,b,c}={e(g1,g2)rs,e(g1,g2)t(α+r)×s,me(g1,g2)αs};s714.dr使用tk=t进行本地解密,计算b=b1/tk=e(g1,g2)(α+r)×s;s715.dr进行最终解密,获取数据明文m:当密文为访问结构更新后的密文,解密过程如下:s721.此时a=fr=e(g1,g2)rλ;s722.计算b=e(c′,k′)=e(hλ,g1t(α+r)/β)=e(g2βs,g1t(α+r)/β)=e(g1,g2)t(α+r)×λ;s723.数据请求者dr接收信息,{a,b,c,e,c’}={e(g1,g2)rλ,e(g1,g2)t(α+r)×λ,me(g1,g2)θs,g1θe(g1,g2)αλ,hs};s724.dr使用tk=t进行本地解密,计算b=b1/tk==e(g1,g2)(α+r)λ;s725.dr向可信中心请求解密c′=hs,计算newc′=c′1/β=(hs)1/β=g2s;s726.dr进行最终解密,获取数据明文m:进一步地,所述的s8步骤,当发送属性参数时,运行attrrevoke(ct,sk算法,算法执行过程包括:s81.可信中心ta随机选择r∈zp;s82.加密服务es接收r的值,更新密文s83.未被撤销属性的用户接收可信中心的r值,更新私钥s84.被撤销属性的用户,接收不到可信中心的r值,必须向可信中心请求更新私钥,新计算用户私钥其中s’为用户更新的属性集。与现有技术相比,有益效果是:本发明提供的一种基于cp-abe高效且安全的细粒度访问控制方法,可有效解决服务器泄露用户数据、访问控制策略难以更新、属性撤销困难等问题,同时可解决了本地加解密过程中将消耗大量的计算和通信资源而难以在小微设备、移动设备有效工作的问题,实现了对数据的细粒度访问控制,明确数据主权保障了用户的合法权益,本方法安全高效。附图说明图1为本发明方法原理图。图2为本发明系统模型图。图3为本发明访问控制策略图。图4为本发明参数生成流程图。图5为本发明私钥生成流程图。图6为本发明数据加密生成流程图。图7为本发明密文访问结构更新流程图。图8为本发明文件解密流程图。图9为本发明属性撤销流程图。具体实施方式如图1至3所示,一种基于cp-abe高效且安全的细粒度访问控制方法,包括以下步骤:步骤1:系统初始化和参数生成主要是配置系统的运行环境和生成系统运行过程中需要的密钥参数,结合图4的参数生成流程图,可信中心ta启动系统设置运行setup(k)算法,选择循环群其中循环群的阶为素数p,生成元分别为g1,g2,设定双线性映射选取的hash函数;且算法随机选择的两个安全参数α,β∈zp,输出系统的公钥和主密钥;主密钥mk=(β,g1α),为ta保留;公钥分发给系统参与者。步骤2:私钥生成ta运行keygen(pk,mk,a)算法为用户生成私钥,并通过安全信道将私钥传递给用户。具体生成私钥时,结合图5的私钥生成流程图,算法随机选择r∈zp,设用户的属性集为a,对于每一个属性i∈a,随机选择ri∈zp,生成私钥sk并通过安全信道传回用户,其中,步骤3:文件加密文件加密的过程中运行encrypt(pk,m,t)加密算法,其主要目的是在能够利用服务器的计算能力的同时,保持数据对于服务器的致盲状态,以保证数据主权。算法采用公钥pk,数据拥有者制定的访问结构t和明文信息m作为输入,输出与访问结构t相关的密文ct。在加密过程中,结合图3访问树和图6数据加密流程图,do可以设置访问树形式的访问控制结构t=tdo+tes,为了减少本地的计算量,通常tdo拥有一部分属性,这里选择tdo仅拥有一个属性,并设ldo和les表示tdo和tes的叶子节点集合,lt表示访问树t的叶子节点集合,方案采用shamir秘密共享方案,对于访问树中任一节点x,qx(0)为节点x共享的秘密值。算法主要执行如下操作:s31.do随机选择一个1阶多项式q(x),计算s=q(0),s1=q(1),s2=q(2);s32.do发送{s1,tes}到加密服务es;s33.es接收{s1,tes}后运行,以s1为共享秘密,计算ctes:s34.用户do以s2为共享秘密,计算ctdo;s35.另外在用户端,对于明文信息m,计算c=me(g1,g2)αs;对于共享秘密s=q(0),计算c′=hs;s36.用户do发送{ctdo,c,c’}到es;s37.es接收{ctdo,c,c’,v}后,联合各种信息生成密文ct:s38.es发送ct到存储服务,存储服务保存密文信息到数据库中。步骤4:密文访问结构更新,计算重加密密钥rk,对密文重加密,生成重加密密文ct1在密文策略属性基加密算法的实际应用中,由do制定的访问控制策略频繁变化,为解决此问题,常有代理处更新和用户处更新两种解决办法,但是代理处更新常常会向代理暴露数据信息,用户处更新计算资源消耗严重且要求用户实时在线。本发明提出密文访问结构更新算法,结合代理处和用户处更新的优点,数拥有者仅需要计算重加密密钥rk,代理就可以使用此密钥来转换一个访问结构t下加密的密文成在另一个访问结构t1下计算的重加密密文。结合图7密文访问结构更新流程图,首先do运行rekeygen(pk,t1,sk)计算重加密密钥rk,算法执行包括私钥转换和重加密密钥计算。1私钥转换:随机选择θ∈zp,联合do的私钥更新k的值为生成do的转换私钥sk′:2重加密密钥计算:联合隐藏私钥sk’,设重加密密钥其中,则重加密密钥rk为:3密文重加密es运行reencrypt(pk,ct,rk)算法,将在访问结构t下加密的密文转化为在访问结构t1下加密的密文,对于原始密文:密文重加密的建立过程为:1)代理对访问树进行递归解密:a.对访问树中的叶子节点的解密:b.对访问树中非叶子节点的解密:c.通过递归机密,对于访问树的对于根节点r,有:a=fr=e(g1,g2)rs。2)计算b=(c′,k)=e(hs,g1(α+r-θ)/β)=e(g1,g2)(α+r-θ)s;3)将a和b发送回用户,进行如下操作:a.用户计算b/a=e(g1,g2)(α+r-θ)s/e(g1,g2)rs=e(g1,g2)(α-θ)s;b.联合原始密文包含明文信息的c值计算newc=me(g1,g2)αs/e(g1,g2)(α-θ)s=me(g1,g2)θs。4)计算重加密密文ct1:重加密密文ct1相比于原始密文,多添加了一项e=g1θe(g1,g2)αλ,更新密文为:5)用户上传重加密密文ct1到解密服务,解密服务更进一步将ct1上传到存储服务,保存到存储服务器中,更新原始密文为重加密密文。步骤5:数据解密数据解密的过程中运行decrypt(pk,ct,sk)解密算法,其主要目的是在能够利用服务器的计算能力的同时,保持数据对于服务器的致盲状态,以保证数据主权。结合图8数据解密流程图,算法采用公钥pk,密文ct和用户私钥sk作为输入,满足访问要求时输出数据明文。加密过程包括私钥划分,密文转换和本地解密三个过程。1)私钥划分:私钥划分的目的主要是保证数据的安全,使得数据请求者dr的私钥对于解密服务隐藏。此过程由用户执行keydiv(pk,sk)算法,输入dr的私钥sk和系统公钥pk,输出用于密文转换的密钥rk和本地解密的密钥tk,具体为:用户随机选择t∈zp,联合用户私钥计算d′=gt(α+r)/β,生成密文转换密钥rk和本地解密密钥tk,其中:发送到es请求解密服务,tk=t本地保存。2)密文转换:密文转换的目的是利用服务器的计算资源进行密文初解密。在收到解密请求和密文转换密钥rk后,ds首先向存储服务请求要解密的数据密文,存储服务收到数据请求后,将所请求的密文ct发送回ds;密文可能是原始密文ct:或经过访问结构更新的密文ct1:解密时,ds首先进行属性集与密文的访问结构之间匹配性检查,如果属性集不满足访问结构的需求,密文转换过程输出⊥,如果满足访问结构的需求,则开始密文初解密过程,设lt表示访问树t的叶子节点集合,具体过程如下:a.叶节点的部分解密操作,对于任意的y∈lt,ds根据接收信息计算fy:如果计算结果为空;b.非叶子节点x的部分解密操作:对于x的所有子节点z,sx是节点x任意kx个子节点的集合,调用上述算法首先解密所有的节点x的子节点z的fz,由拉格朗日插值公式可以部分解密节点如下,在访问树中,i=index(z),sx′=index(z):z∈sx},δ为拉格朗日系数,计算fx,c.对于根节点的解密操作:由以上可知,当r为t的根节点,对每一个叶节点y∈ldo∪lesp和非叶子节点进行递归计算可得:对于两类密文a的值分别为:a1=e(g1,g2)rs和a2=e(g1,g2)rλ;d.对两类密文,由公钥中的k’和密文中的c’分别计算b的值为:b1=e(c′,k′)=e(hs,g1t(α+r)/β)=e(g2βs,g1t(α+r)/β)=e(g1,g2)t(α+r)×sb2=e(c′,k′)=e(hλ,g1t(α+r)/β)=e(g2βs,g1t(α+r)/β)=e(g1,g2)t(α+r)×λe.ds将发送数据回数据请求者dr,对两类密文,发送的数据如下:针对原始密文:{a1,b1,c}={e(g1,g2)rs,e(g1,g2)t(α+r)×s,me(g1,g2)αs};针对访问结构更新后的密文:{a2,b2,c,e,c’}={e(g1,g2)rλ,e(g1,g2)t(α+r)×λ,me(g1,g2)θs,g1θe(g1,g2)αλ,hs}。3)本地解密:此过程使用本地解密密钥tk和ds返回的密文转换数据为输入,输出密文的对应的数据明文,算法执行过程分为原始密文的本地解密和访问结构更新后密文的本地解密,在进行解密过程中,先判断ds返回数据元组的多少,判断返回的数据类型,并进行对应的解密。a.原始密文本地解密:此时dr接收ds返回的数据为{a1,b1,c},首先对于数据b1以本地解密密钥tk=t计算之后进行数据最终解密,获取数据明文m:b.访问结构更新后的密文解密:此时用户接收ds返回的数据为{a2,b2,c,e,c’},首先对于数据b以本地解密密钥tk=t计算然后求解之后用户向可信中心请求解密c′=hs,可信中心ta计算newc′=c′1/β=(hs)1/β=g2s并返回给用户,最后进行最终密文解密,获取数据明文m:步骤6:属性撤销系统运行过程中,不可避免的会发生属性变更的问题,涉及到属性撤销。结合图9属性撤销流程图,当系统中某个用户发生属性撤销时,可信中心随机选择r∈zp,并将r值和更新需求发送给未被撤销属性的用户和加密服务es,用于密文和用户私钥的更新。1)加密服务es收到可信中心发送的密文更新需求和r值时,对于密文更新的密文计算为:2)未被撤销属性的用户更新私钥,未被撤销属性的用户接收到可信中心发送的更新需求和r值时,对于其私钥更新的私钥计算为:3)被撤销属性的用户更新私钥,被撤销属性的用户,由于其未收到私钥更新说明和r值,并且此时的密文已经被更新过,撤销属性用户的私钥已经不能再解密密文获取数据明文,撤销属性的用户必须更新自己的私钥才能解密数据。此时用户需要重新向可信中心发送私钥请求,可信中心接受到私钥请求时,假设此时用户的属性集更新为a’,可信中心计算用户私钥为最后,对本发明提供的方法进行安全性分析和具体运行时间统计。安全性分析本发明中将访问控制结构t分解为:t=tdo+tes,tdo中包含较少的属性能够有效减少计算和通信的复杂度,根据tdo随机指定一阶多项式q(x),并设置s=q(0),s1=q(1),s2=q(2)。在加密过程中es仅能够获得(tesp,s1),对于任意指定的一阶多项式,根据门限秘密共享方案,在仅知道s1的情况下,秘密分量s是理论安全的。而对于算法的安全性而言,es,ds和ss都是不可信的,他们在根据算法执行计算任务的同时,也能获取相应的信息。假定es,ds和ss进行合谋攻击,分别对其获取信息情况进行如下分析:mk=(β,gα),为ta保留;ds:拥有和自己计算的a=e(g,g)rs,b=e(g,g)t(α+r).s;es:拥有s1,tesp,自己计算的和用户上传的ctdo,c′=me(g,g)αs和c=hs;存储服务:拥有密文:公钥对各方是共享的;ess1e(g,g)αs1e(g,g)βs1dse(g,g)rse(g,g)t(α+r)se(g,g)ts由上表可知,es由于不知道用于隐藏明文m的随机数s,密文对es就是致盲状态,且es还不知道用户设置的访问控制结构,也无法尝试进行解密操作;对于ds由于中的隐藏私钥中嵌入了随机数t,且由于t是生成元g的指数,求解用户的私钥等同于解决dlp困难问题,即用户私钥对ds也是致盲状态,服务器无法或者数据内容,数据的隐私性得以保护,因此算法是安全的。运行时间统计本实验在测试于ubuntu14.04lts,3.8gb内存,i5-4210m@2.6ghz×4,16.8gb硬盘虚拟机下。设置属性集为['one','two','three'],访问结构为((oneandthree)and(twoorfour)),明文使用随机选择,更新的访问结构为(oneand(twoorfour)),运行上述算法,有如下表运行时间统计结果。表2各算法运行时间表setupkeygenencryptionrekeygenreencryptionkeydiv密文转换本地解密秒0.038750.044630.051580.055140.055210.001400.042920.00175显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1