本发明涉及计算机学科、信息安全学科中的数据安全领域,特别涉及对数据的细粒度访问控制。
背景技术:
信息安全的主要目标是保密性、完整性和可用性。对于政府、军队和企事业单位来说,防止秘密信息泄露始终是工作的重中之重。访问控制是实现保密性的主要手段之一。自主访问控制(discretionaryaccesscontrol,简称dac)策略允许用户自主控制其他用户对其拥有对象的访问权限,系统的访问控制工作分散给所有的用户,让这些用户共同完成。但是,dac本身存在无法避免的缺陷,例如,它不能防止特洛伊木马的威胁。相比自主访问控制,强制访问控制(mandatoryaccesscontrol,简称mac)提供了更高的安全性。强制访问控制策略一般是根据主体和客体的安全属性来管理用户对信息的访问。主体是那些访问信息的主动实体,客体是存放信息的被动实体。mac利用强制性的规定防止信息的不安全流动,可以非常有效地防止特洛伊木马的攻击,让系统根据安全信息来管理用户访问对象的权限,用户无法自由地把其拥有对象的访问权限授予其他用户,mac的目的在于保证信息的流动始终处于系统的控制之下。
bell-lapadula模型是高安全等级系统中最常用的强制访问控制模型,是根据军方的安全政策设计的,解决的本质问题是对具有密级划分的信息访问进行控制,具有较强的保密性,能够很好地保护数据安全。blp模型可以看作是矩阵模型的扩展,其基本思想是确保信息不向下流动,从而保证系统内的信息是安全的,blp模型的信息不向下流动是通过简单安全特性和*-安全特性两个规则来保证的,此基本模型虽然保密性强,但其完整性不够。文献“towardsalocation-basedmandatoryaccesscontrolmodel”中,提出一种基于位置的强制访问控制模型,对blp模型进行了改进,将位置定义为访问中的客体,加强了系统的完整性,实现了主体对位置信息的强制访问控制,但强制访问控制的灵活性不足,无法实现细粒度的访问控制。
属性加密(attribute-basedencryption,abe)机制一种前景广阔的现代公钥密码技术,能够实现数据加密和细粒度访问控制的结合。abe有两种结构,分别为密钥策略的abe(key-policyabe,kp-abe)和密文策略的abe(cp-abe)。在kp-abe机制中,每个用户的密钥与访问结构相关,每个密文与一组属性集相关;在cp-abe机制中则相反,每个用户密钥与一组属性集相关,密文与访问结构相关。当把abe应用到实际环境中,考虑到需要访问的数据被存储到服务器上,为了使数据能够被更好地管理,cp-abe更具优势。
然而当把cp-abe机制在实际中运用时,不可避免地需要考虑一些实际问题。例如,在实际系统中,用户职位会发生变化,进而用户的权限会发生变化。在cp-abe机制中,用户的权限与属性一一对应,所以用户权限的变化可以看成用户属性的变化,即用户属性撤销问题。同时考虑到用户终端的计算能力有限,而在cp-abe中,解密时间与访问结构中属性数量线性相关,当属性数量较多时,会给用户带来沉重的计算负担。因此,在实际环境中设计cp-abe机制时,高效的用户撤销和高效的解密问题都亟待解决。
cn201410055341.9在cp-abe的基础上提出了一种外包解密的方法,实现了高效解密,但是并没有考虑用户权限撤销问题。cn201310647570.5提出了一种cp-abe方法,该方法能够实现高效解密和用户撤销,可以实现用户的权限撤销,但此种用户撤销方法会带来巨大的开销,为了实现更高的密钥分发的效率,作者lij等在文献“enhancingattribute-basedencryptionwithattributehierarchy”一文中,提出了层次化的属性加密方案,权威运用树形层次结构对属性进行管理,属性之间的层次关系与现实生活中的组织结构类似。在同一棵属性树中,层次越高,属性对应的权限更高,与上层属性相关的私钥可以解密与下层属性相关的密文。具有属性层次化的加密方案具有与强制访问控制相同的控制信息单向流动的特点,因此,本发明利用层次化的属性加密方案设计一种细粒度的强制访问控制方法,该方法能够实现单个文件层次上的细粒度强制访问控制,而且不要求数据存储服务器的执行访问控制策略,特别适合强制访问控制策略在外包环境下不可信服务器上的执行。另外,本发明也考虑轻量级终端用户和及时的用户权限撤销。
技术实现要素:
为了实现上述访问控制机制,本发明提出一种基于层次化属性加密的外包强制访问控制方法,其设计了一种层次化的cp-abe方案,通过层次化的属性定义对系统中的用户和访问数据进行安全级别划分,从而为用户划分相应的访问权限,同时支持外包解密,又能满足高效的用户权限撤销。在该加密机制中,加密数据时会定义一个访问结构,数据的安全等级由访问结构确定,用户的安全等级由其拥有的属性私钥确定。当且仅当用户的安全等级符合访问控制规则时,用户的私钥才能正确解密密文。当用户的权限发生变化时,用户需要撤销原来的身份,然后以一个新的身份重新加入系统,实现用户的及时撤销。为了减轻用户的开销,解密密文的大部分工作被委托给了存储服务器。
本发明提供的基于属性加密的访问控制方法,包括以下几个步骤:
s1:系统初始化,生成系统公共参数、第三方服务器tp(trustedthirdparty)的公/私钥对以及属性的公/私钥对;
s2:以受保护的数据为客体,使用强制访问控制规则(mandatoryaccesscontrol,mac)对其进行安全级别划分,安全级别由授权集决定,数据安全类别为访问结构对应的属性向量集合,数据管理者为数据定义安全等级;
s3:以用户即为主体,使用强制访问控制规则对其进行安全级别划分,安全级别由用户属性的层次深度决定,用户安全类别为层次化的用户属性集合,tp为用户定义相应的安全等级;
s4:根据主体和客体的安全级别和类别定义安全等级集合及其集合上的偏序关系,根据安全等级定义安全属性,判定用户的安全等级和数据的安全等级,实现用户对数据的细粒度访问控制;
s5:用户权限撤销,当用户的权限发生变化时,则对用户的私钥和安全等级进行更新,使其以一个新的身份重新加入到系统中。
进一步,所述步骤s1包括如下步骤:
s11:tp初始化,输入安全参数,生成系统公共参数和tp的公/私钥对;
s12:aa初始化,aa从tp处接收到系统公共参数和tp的公/私钥对;管理属性树的公/私钥对。
进一步,所述步骤s2包括如下步骤:
s21:数据管理者分别从tp和aa处接收到系统公共参数和属性树的公钥;
s22:数据管理者基于全局属性集u,将属性组织为一棵层次化的树,给数据定义一个访问结构a,a由访问矩阵(m,ρ)来表示,其中函数ρ表示矩阵m每一行到一个属性向量
s23:从zp选取随机数s和一个向量
s24:计算对应的分享
s25:选取随机数ri∈zp;
s26:计算对应的密文组件,输出对应的密文ctr;
s27:数据管理者把密文上传到服务器上。
进一步,所述步骤s3包括如下步骤:
s31:用户加入系统,向tp提交身份信息进行注册;
s32:tp认证用户的合法性;
s33:若用户合法,根据用户的属性向量确定用户的安全等级ls(cs,ks),其中,安全级别cs为用户属性向量的深度,安全类别ks为用户的属性向量集合,然后给用户分配一个gid,并给用户分发一个证书acert和全局私钥,其中证书包含用户的gid、安全等级ls以及用户的全局公钥;若该用户不合法,则拒绝加入系统;
s34:当用户收到tp发来的证书和全局私钥,便把证书和发给其所属的aa;
s35:当aa收到证书后,aa使用tp的公钥验证证书,并验证用户gid是否属于用户撤销列表ul;
s36:若
s37:然后aa把用户的属性私钥发送给外包存储服务器,并存储在服务器上。
进一步,所述步骤s4包括如下步骤:
s41:用户向外包存储服务器发送数据访问请求(读请求),并把证书发给服务器;
s42:服务器使用tp的公钥验证证书,并验证用户是否属于用户撤销列表ul;
s43:若
s44:服务器分别对用户的属性私钥进行检索;
s45:若用户为读请求且搜索到用户的密钥,用其对密文进行解密,并生成解密令牌tkr。
其中s45包括如下步骤:
s451:令
s452:接着服务器计算解密令牌tkr;
s46:然后服务器把tkr和读密文发送给相应的用户;
s47:最后用户使用全局私钥和tkr解密读密文,若满足相应的密文中的访问结构,则解密成功,从而进行相应的读操作;
s48:用户向数据管理者发出写操作请求,数据管理者判定用户安全等级和数据安全等级,若用户安全等级等于数据安全等级,用户对数据进行写操作,再由数据管理者重复s2步骤。
进一步,所述步骤s5包括如下步骤:
s51:当用户的权限发生变化时,即读写权限发生变化时,用户把其发生变化的权限信息发送给tp,并在tp处进行重新注册;
s52:tp把用户原来的gid写入ul中,并公布ul;
s53:tp为用户分配一个新的全局身份标识gid′,并为用户分发一个新的证书和全局私钥,其中新的证书包含gid′、新的安全等级ls'、新的用户属性列表以及新的全局公钥,然后tp将其发送给用户;
s54:当用户收到tp发来的新的证书和全局私钥后,使用新的证书重新与其所属的aa进行交互;
s55:当aa收到证书acert'后,aa使用tp的公钥解密证书,并验证用户gid′是否属于ul;
s56:若
s57:该步骤与s36一样,aa基于用户的属性列表和安全等级给撤销用户生成新的属性私钥;
s58:然后aa把用户的属性私钥发送给外包存储服务器,外包存储服务器从参与密钥分发的aa处收到用户的属性私钥并存储,同时服务器删除ul中新增撤销用户的属性私钥。
本发明的优点在于:本发明设计了一种层次化的cp-abe方案,通过层次化的属性定义对系统中的用户和访问数据进行安全级别划分,从而为用户划分相应的访问权限,同时支持外包解密,把解密过程中大部分的解密工作量委托给了服务器端,而服务器端只拥有用户的属性密钥,只能解密相应的密文,这样既提高了系统的效率,又保证了系统的安全性。
本发明为了更好地实现数据的安全访问控制,引入了强制访问控制模型,而属性层次化的加密方案具有与强制访问控制相同的控制信息单向流动的特点,本发明利用层次化的属性加密方案设计一种细粒度的强制访问控制方法,该方法能够实现单个文件层次上的细粒度强制访问控制,而且不要求数据存储服务器的执行访问控制策略,特别适合强制访问控制策略在外包环境下不可信服务器上的执行。另外,本发明也考虑轻量级终端用户和及时的用户权限撤销。
附图说明
图1为系统模型框图;
图中:(1)公布属性树公钥;(2)上传加密的数据;(3用户申请权限;(4)给用户发布证书和全局私钥;(5)发送读密钥请求;(6)分发读密钥;(7)请求数据访问(读操作);(8)提供解密令牌;(9)请求数据访问(写操作);
图2为本发明的流程框图;
图3为系统初始化流程框图;
图4为数据安全等级划分流程框图;
图5为用户安全等级划分流程框图;
图6为访问控制流程框图;
图7为用户权限撤销流程框图。
具体实施方式
以下将结合附图,对本发明的优选实施例进行详细描述。优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。
本发明提供的基于属性加密的分布式访问控制方法,是采用层次化属性加密机制(hierarchicalattribute-basedencryption,habe)和强制访问控制(mandatoryaccesscontrol,mac)结合的机制,支持外包环境下,由拥有者控制的细粒度数据读、写强制访问控制和及时的用户权限撤销,实现信息的单向流动,保证数据的机密性,本发明的系统模型参见图1,方法包括以下步骤:
s1:系统初始化,生成系统公共参数、tp的公/私钥对以及属性树的公/私钥对;参见图3;
进一步,所述步骤s1包括如下步骤:
s11:tp初始化,输入安全参数λ,属性树可允许的最大深度l,生成系统公共参数pp和tp的公/私钥对,其中系统公共参数包括两个阶为p的双线性群g、gt,g中的生成元g和双线性映射e:g×g→gt,以及随机元素h1,h2,...hl∈g,tp的公/私钥对为(sktp,pktp);
s12:aa初始化;
其中s12包括如下步骤:
s121:权威属性aa从tp处接收到系统公共参数{g,g,gt,e(g,g)}和tp的公钥pktp;
s122:aa选取三个随机数αt,βt,γt∈zp作为属性树t的私钥,随机选择vt∈g表示属性树t的根节点,然后为属性树生成公钥
s2:受保护的数据为客体,使用强制访问控制规则对其进行安全级别划分,安全级别由授权集决定,数据安全类别为层次化的用户属性集合,数据管理者为数据定义安全等级;参见图4,所述步骤s2包括如下步骤:
s21:数据管理者分别从tp和aa处接收到系统公共参数{g,g,gt,e(g,g)}和属性树的公钥
s22:数据管理者基于全局属性集u,将属性组织为一棵层次化的树,定义授权集
s23:给数据m定义一个访问结构a,a由访问矩阵(m,ρ)来表示,其中函数ρ表示矩阵m每一行到一个属性向量
s24:从zp中选取随机数s和一个向量
s25:对于a中的属性向量
s26:选取随机数ri∈zp;
s27:计算对应的密文组件,输出对应的读密文ctr;
其中ra表示访问结构a中的属性向量集合;
s28:数据管理者把密文ctr上传到存储服务器上。
s3:用户即为主体,使用强制访问控制规则对其进行安全级别划分,安全级别由用户属性的层次深度决定,用户安全类别为层次化的用户属性集合,tp为用户定义相应的安全等级;参见图5,所述步骤s3包括如下步骤:
s31:用户加入系统,向tp提交身份信息进行注册;
s32:tp认证用户的合法性;
s33:若用户合法,则给用户分配一个gid,定义安全等级ls,全局属性集
s34:选择一个随机数ugid∈zp作为用户全局私钥ugsk,接着生成用户全局公钥
s35:当用户收到tp发来的证书和全局私钥,便把证书发给其隶属的aa;
s36:当aa收到证书acert后,aa使用tp的公钥pktp解密证书acert,并验证用户gid和安全等级ls是否属于用户撤销列表ul;
s37:若
s38:aa基于用户的属性列表和安全等级给用户生成属性私钥uask:
读密钥:
s39:然后aa把用户的各个属性私钥发送给服务器,服务器从参与的aa收到用户的属性密钥并存储。
s4:根据主体和客体的安全级别和类别定义安全等级集合及其集合上的偏序关系,根据安全等级定义安全属性,当用户的安全等级支配数据的安全等级时,实现用户对数据的细粒度访问控制;参见图6,所述步骤s4包括如下步骤:
s41:用户向服务器发送数据访问请求(读),并把其证书acert发给服务器;
s42:服务器使用tp的公钥pktp解密证书acert,并验证用户gid和安全等级qs是否属于用户撤销列表ul;
s43:若
s44:服务器检索用户的属性私钥uask;
其中s44包括如下步骤:
s441:服务器判定用户安全等级ls和数据安全等级lo。≤表示定义在l上的偏序关系,读作“支配”,在属性树中,属性向量
s45:若为用户的读密钥,用其对密文进行解密,并生成解密令牌tkr;
其中s45包括如下步骤:
s451:令
s452:接着服务器计算解密令牌tkr
s46:然后服务器把tkr和读密文发送给相应的用户;
s47:最后用户使用全局私钥和tkr解密密文,若满足相应的密文中的访问结构,则访问成功,最终用户获得数据
s48:用户向数据管理者发出写操作请求,数据管理者判定用户安全等级和数据安全等级,当用户的属性向量为数据的访问结构中的属性向量的后缀时,用户属性向量对应的深度小于数据对应访问结构中的属性向量深度,安全级别由属性向量对应的深度确定,即用户安的全级别cs低于数据的安全级别co,且安全类别
s5:用户权限撤销,当用户的权限发生变化时,则对用户的私钥和安全等级进行更新,使其以一个新的身份重新加入到系统中来;参见图7,所述步骤s5包括如下步骤:
s51:当用户的权限发生变化时,即读写权限发生变化时,用户把其发生变化的权限信息发送给tp,并在tp处进行重新注册;
s52:tp把用户原来的gid写入ul中,并公布ul;
s53:tp为用户分配一个新的全局身份标识gid′,一个新的安全等级ls',随机选择ugid'∈zp作为新的用户全局私钥ugsk',并生成新的用户全局公钥
s54:当用户收到tp发来的新的证书和全局私钥后,使用新的证书和新的安全等级重新与其所属的aa进行交互;
s55:当aa收到证书acert'后,aa使用tp的公钥解密证书,并验证用户gid′是否属于ul;
s56:若
s57:该步骤与s36一样,aa基于用户的属性列表和安全等级给撤销用户生成新的属性私钥uask';
s58:然后aa把用户的属性私钥发送给服务器,服务器收到用户的属性私钥并存储,同时云服务器删除ul中新增撤销用户的属性私钥。
以上所述仅为本发明的优选实施例,并不用于限制本发明,显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。