基于代理重加密的PostgreSQL系统访问控制方法

2018-08-17 00:27刘红超
计算机工程 2018年8期
关键词:加密算法访问控制密文

刘红超, ,,,

(1.北京许继电气有限公司,北京 100085; 2.国家电网公司,北京 100085; 3.武汉大学 计算机学院,武汉 430074)

0 概述

近年来,随着互联网大数据的爆发,数字化信息快速渗入到各行各业,由此产生的海量数据存储方式由传统的基于文件转换为电子信息数据库,例如PostgreSQL[1-2],一个自由的对象-关系数据库管理系统,为用户提供随时随地利用互联网访问数据的便捷服务,带来方便的同时也引起了很大的安全问题。首先由于大量的数据集中存储在同一个存储系统中,如何保证不同用户的数据隔离是一个重要问题。其次数据存储的集中性很可能受到黑客针对数据的集中攻击。另外还存在数据库管理员(Database Administrator,DBA)与攻击者合谋恶意窃取内容。一旦用户的隐私数据得不到保护将会带来严重的后果,面对严峻的数据泄密的形势,传统的信息安全措施难以应对,加强数据自身安全迫在眉睫。

目前针对数据库中隐私数据的保护得到了诸多学者的重视,在密文数据下的访问控制研究取得了很多重要的成就。这些成果均是围绕如何高效地管理数据和密钥安全分发进行展开,说明密文数据访问授权的本质为密钥的管理和分发。有学者专门针对组密钥的管理进行大量的研究[3-5],其中逻辑密钥层次(Logical Key Hierarchy,LKH)以其的高效性被广泛使用,是基于密钥树的方法进行密钥关系的构造,采用对称密钥来对新的密钥加密。在其基础提出了基于高效的大规模用户组密钥(Efficient Large-group Key,ELK)[6]的新协议,但是当有用户频繁加入或离开时该方法不能有效地对密钥进行管理。针对这一情况,学者们提出了基于子用户组的层次框架[7],选择将大的用户组分为小的子用户组并安排管理人员掌握该小组的密钥,但是该方法数据访问效率很低。在访问控制研究领域,基于属性加密(Attribute-based Encryption,ABE)[8]的访问控制模型被提出,不同于传统的公钥加密系统,该方法是对错误有容忍度的访问控制模型。其主要缺点是其阈值语义表达力不足导致其无法设计出通用的密文访问控制系统。在此基础上出现了新的加密系统,采用基于密钥策略属性的加密(Key-Policy Attribute-based Encryption,KP-ABE)[9]方法,该系统中密文数据加密基于属性的集合,但是数据加密者并没有运用任何访问控制策略在密文数据上。

尽管很多学者针对数据加密和密文数据下的访问控制做了大量工作,但仍存在一些问题,目前还没有较好的方法对密文数据进行轻量级、细粒度的访问控制方法[10],为此,本文提出一种基于密文的访问控制框架,以实现细粒度轻量级的密文访问控制。

1 问题描述

本文针对PostgreSQL数据库系统可能出现的隐私数据泄密问题,提出新的访问控制模型,并将该方法应用到图1所示的访问控制场景中。

图1 数据访问控制场景

数据拥有者先将数据本地加密后上传至PostgreSQL,然后针对其所属的密文数据进行访问授权,授权过程本质就是密钥分发的过程,数据拥有者期望有细粒度的访问授权,但不增加密钥的管理负担,在数据撤销时要能高效地完成授权撤销。

基于实际需求,本文要解决的问题是提出一套机制保证数据安全而且拥有者能灵活对数据库中数据进行授权,共享者也能便捷高效地访问数据。

2 基础理论

2.1 AONT数据变换

文献[11]提出了一种新的加密方式AONT,经过该模式加密的数据要想获取某些明文必须要对整个数据进行完整解密,否则无法获知。

该方法主要包括:

1)针对原始数据m1,m2,…,ms,首先利用转换函数f获得伪数据信息m1’,m2’,…,ms’,s’≥s,其中转换函数f满足:可逆性;可计算性;不可部分分解,无法通过部分伪装数据推导出明文。

2)利用传统对称加密算法对上述结果进行数据加密得到密文c1,c2,…,ct。

下面给出转换函数过程:

输入m1,m2,…,ms,K0

输出m1’,m2’,…,ms’,s’=s+1

1)生成随机密钥K’。

2)计算:

mi’=mi⨁E(K’,i),i=1,2,…,s

(1)

3)计算:

ms’’=K’⨁h1⨁h2⨁…⨁hs

(2)

hi=E(K0,mi’⨁i),i=1,2,…,s

(3)

其中,K0是公开密钥,K’是每次加密随机生成的,通过式(4)计算:

K’=ms’⨁h1⨁h2⨁…⨁hs

(4)

转换后的数据还原为原始密文通过式(5)实现:

mi=mi’⨁E(K’,i),i=1,2,…,s

(5)

上述方法是针对数据块进行的,所以,要先对数据分块,过程的本质只是对数据进行预处理。

2.2 基于对称密钥的重加密

在代理重加密[12-14]的基础上,根据需求不断改进,文献[15]提出基于对称密钥重加密方法,先采用AONT对数据预处理后,使用传统对称加密算法进行加密。数据拥有者随机生成初始b字节密钥K1、K2、K3、Kx对数据m加密。再利用AONT技术处理原始密文。利用PGen(K1,b)置换密钥生成函数生成置换密钥P1、P2、P3。对预处理后数据利用P3和Perm函数进行置换。重加密过程将原始密钥转化为K1’、K2’、K3’、Kx’重加密密钥后对密文数据重新加密。

3 一种细粒度轻量级的访问控制方法

本文提出了一种轻量级细粒度的访问控制方法,并在此基础上给出优化方法。

3.1 问题定义

本文在介绍基于密文的访问控制方法时采用统一的符号,表1为使用的符号及其意义。

表1 全文符号及意义

3.2 设计思想

轻量级细粒度的访问控制方法的设计思想如下:

1)数据上传存储,数据拥有者在本地将数据进行加密,将加密后的密文上传至PostgreSQL。

2)数据授权,当数据拥有据者对数据进行授权时,先对将要授权的数据生成镜像,pkdmi并为之生成相应的公私钥对(pkdmi,skdmi),计算该数据与镜像之间的代理重加密密钥rski,并将重加密密钥rski存储在数据库中。针对被授权的用户或用户组进行权限的划分,并构建权限控制节点,在权限控制层利用数据授权者和被授权者之间的会话密钥pubUj将私钥skdmi加密得到skdmi′,将其存储于权限控制节点。

3)数据访问,当用户提出访问数据的请求后,PostgreSQL先判断用户对于该数据是否有权限访问,若有,则用重加密密钥对密文进行二次加密得到新的密文,连同数据授权过程中的私钥skdmi′返回给请求者,被授权者利用会话密钥先对私钥skdmi′进行解密得到skdmi,再用解密后的密钥对密文解密。

4)数据撤销,当数据拥有者想撤销某些用户对数据的访问权限时,直接通过调整镜像以及权限控制节点值来只想权限的收回。

在整个过程中,通过构建数据镜像层和权限控制层,能有效实现无副本数据访问共享,并确保数据加密密钥的安全性,能在多个方面防止了隐私数据防泄密。具体的密文访问控制层次结构如图2所示。

3.3 基于公钥系统的访问控制方法

基于公钥系统的访问控制方法采用的加密技术是RSA加密算法,RSA算法是目前最具影响力的公钥加密算法,可以抵抗密码攻击。本文采用RSA算法对隐私数据进行初次加密和会话密钥加密。

3.3.1 数据上传发布

每一个用户都拥有一个公私钥对,在用户前端安全存储,数据加密后将密文存上传至PosrgreSQL。已知待上传至PosrgreSQL的数据集合以及公钥pub,完成用户前端加密,具体过程如下:

1)从大小为|M|的待上传的明文数据集M中依次选取元素i=1,2,…,|M|。

2)采用公钥加密算法对数据mi进行加密ci=E(pub,mi)。

3)将加密后的密文集合C上传至数据库。

4)数据库管理层根据权限控制集,即针对当前数据用户访问权限表,构建初始权限控制层。如果权限访问表非空则创建权限控制表中对应的权限控制节点。

3.3.2 数据授权

当密文成功上传至PostgreSQL后,数据拥有者可能需要将数据授权给不同的用户,最主要的问题就是如何针对不同用户分发不同的密钥,同时也要考虑PostgreSQL和不被授权用户的合谋攻击。因此,在数据授权时通过数据镜像层将数据的存储与访问分开,从而保证数据库中数据的安全性,为了不引入副本,该方法中采用代理重加密的机制,对首次加密后的密文进行二次加密,其中,通过会话密钥将重加密过程中用到的私钥进行加密保护原始密钥的不可访问性,用镜像点的私钥分发来完成数据访问权限的控制。

为了完成数据二次加密,系统为每一个数据的镜像点分配相应的公私钥对(pkdmi,skdmi),密文ci与镜像点之间的代理重加密的密钥通过式(6)计算:

rski=(pub/pkdmi) mod Ф(n)

(6)

其中,n为RSA加密系统中的公共参数。

通过式(6)的计算实现了解密密钥由pri向密钥skdmi的转换,对原始密钥完成了安全的隔离。要将解密密钥安全可靠地分发给被授权的用户,需要将skdmi封装,在此采用会话密钥的方式对其进行加密,就是用Uj的公钥对其加密,并将密钥密文存储在控制访问层的节点中,通过数据拥有者的权限控制可以完成授权访问和权限的收回。引用权限控制层就是为了能够方便灵活地进行权限管理。

上述机制中授权者只是需要在本地完成重加密密钥rski的计算再将rski上传给PostgreSQL,让其完成重加密的过程,大大减少用户前端的计算成本。对于镜像点的公私钥对只是在数据授权时被调用,一旦完成了重加密密钥的计算用户就不需要占用存储空间继续保存该镜像的公私钥对,释放占用的存储空间,若有新的授权需要完成时,只要再次生成新的密钥对即可,重新计算重加密密钥。针对整个数据授权的过程算法实现,已知需要授权的数据DM、被授权的用户集合U、访问控制表,构建密文访问控制结构具体步骤如下:

1)依次选取i=1,2,…,|DC|。

2)待授权的数据dmi生成相应的镜像点Mirrdmi。

3)为镜像点生成相应的公私钥对(pkdmi,skdmi)。

4)根据镜像点公私钥对、授权用户的(pri,pub)和式(6)在本地算出重加密密钥rski。

5)将rski上传至数据库。

6)针对用户集合里的所有元素对每一个待授权用户做如下操作。

7)如果用户Uj对数据dmi由访问权限。利用会话密钥pubUj对镜像私钥skdmi进行加密得到skdmi′。

8)将skdmi′存储在与Uj对应的权限控制节点中。

过程中凡是涉及到密钥之间的计算都是在用户前端完成,以保证半可信的第三方PostgreSQL难以获得任何关于数据加密的密钥内容。

3.3.3 数据访问

当构建出一个基于镜像的数据访问控制结构后存储在PostgreSQL中,当用户Uj期望对某个数据进行访问时,不需要和数据拥有者进行任何操作,只需要利用在注册时分配的公私钥即可访问期望的数据。该方法中对于数据拥有者是完全透明的,这一特点保证了授权用户对数据拥有者的透明性,由于被授权用户只是掌握一个密钥,因此在解密时不必刻意针对不同数据进行密钥选择,真正意义上实现了一个用户一个密钥的机制。给出用户信息和用户Uj对应的私钥prij用户访问控制权限结构,待访问的密文数据集合DC要找出用户要访问的明文数据集的具体步骤如下:

1)依次选取i=1,2,…,|DC|。

2)对于ci判断在用户访问控制权限结构中是否有对应的镜像点。

3)如果ci有对应的镜像点,那么判断该镜像点下的权限控制节点是否存在用户Uj的相关信息。

4)如果存在用户Uj的相关信息,那么获取密文ci与镜像点之间的代理重加密的密钥rski。

5)使用上述重加密密钥对密文ci进行重加密得到ci。′

6)获得相应权限控制节点中用户Uj对应的密钥密文skdmi′。

7)将数据ci′和skdmi′返回给用户Uj。

8)若不存在用户Uj的相关信息,则用户Uj属于该权限控制节点但是没有访问权限。

9)若ci没有对应的镜像点,则数据ci没有授权进行,拒绝一切用户对该数据信息的访问请求。

10)当用户Uj收到返回的重加密后的密文后。用自己的私钥prij解密返回的密钥skdmi′得到skdmi。

11)利用skdmi对密文ci′进行解密得到mi。

虽然从密文ci′到明文需要经过两次解密过程,但是在被授权用户前端只需要进行一次解密过程,是由于代理重加密的特点,使得Uj只需要用自己的私钥就可以直接解密出明文。

3.4 基于对称加密系统的方法优化

本文提供了一套基本的隐私数据防泄密的方法,但是在整个过程中还存在一些问题。首先系统需要对每次请求访问的数据完成一次重加密的过程,而公钥体系对数据加密是低效的,因此,是一个低效的数据操作过程。其次在该机制中针对同一数据文件的多用户授权,系统要计算多次的密钥密文并存在控制节点中,这样针对被授权用户组的一次授权需要多次加密过程,这样消耗大量的资源成本。所以,在会采用基于对称密钥对数据进行加密,其效率相较于前文的RSA提高很多。

目前有很多较为成熟的对称加密技术,但是应用到重加密的算法中难以进行,本文采用基于AONT预处理的对称密钥重加密算法对加密算法进行优化。

3.4.1 前端加密算法的优化

由于优化方法是采用对称密钥,因此授权者初始分配的密钥不再是公私钥对(pub,pri)而是对称密钥key,对于明文数据的初次加密相对于3.3节中的加密算法对参数做了更改,基于ATON的对称密钥加密算法大大提高了加密的效率。

3.4.2 重加密过程优化

在前文的基于镜像点的重加密过程中,在每次数据访问过程中都要做一次代理重加密过程,不论是基于公钥还是对称密钥都是十分耗时的,因此,为了提高每次数据访问的效率,通过增加一个数据副本,此处的副本不是传统的数据副本,它只是存在于数据镜像层,即面向权限控制层的一个数据镜像。这样当被授权用户请求访问时,只需要将当前的数据副本及相应的密钥发送给访问用户。尽管每次数据授权时会增加额外的空间时间消耗,但是对于整个系统,访问次数远远大于数据授权的次数,因此,该优化能大大提升整个系统的效率。具体加密和重加密过程如下:已知数据拥有者要上传给PostgreSQL的数据信息集合M,对称密钥key=(K1,K2,K3,Kx),对称加密密钥key′=(K1′,K2′,K3′,Kx′),通过具体的加密和重加密算法得到密文数据集C,以及数据ci重加密后的数据副本Dupci。加密和重加密算法的步骤如下:

1)若进行数据加密,则依次选取要上传的数据集合中|M|个元素i=1,2,…,|M|。

2)对mi进行数据等分,分为s段。

3)利用AONT转换算法计算mi中每一段数据mij。

5)利用K1、K2、K3生成相应的P1、P2、P3。

6)利用Tdi′ =Perm(P3,Tdi)对数据进行置换。

8)依次选取j=2,3,…,s,计算:

9)得到密文数据集并上传至数据库。

10)如果进行数据重加密,那么针对得到的待加密数据集进行重加密,使得重加密后key′=(K1′,K2′,K3′,Kx′)可计算。

11)针对于每个要重加密的数据依次选取i=1,2,…,|DM|。通过函数FindCK计算从K1和K3到K1′,K3′的转换密钥:

CK1=FindCK(PGen(K1,b),PGen(K1′,b))

CK3=FindCK(PGen(K3,b),PGen(K3′,b))

得到重加密密钥:

rsk=(CK1,CK3,Kx,Kx′,K2,K2′)

12)利用K2和K2′分别计算P2和P2′。

13)选取变量j=2,3,…,s,计算:

15)在Tdi′上进行Perm(CK3,Tdi′)变换。

16)当j取值为1时,变换方法为:

17)依次赋值变量j=2,3,…,s,计算公式如下:

通过上述过程可以得到,基于AONT变换加密算法的数据密文以及重加密密文数据副本Dupci。最终密文可以通过K1′、K2′、K3′实现解密。

4 安全性分析

安全性分析如下:

1)数据安全性:数据在可信前端进行数据加解密,因此,不论数据在上传至数据库还是在数据库中的存储都是以密文的形式出现,方法中选择的加密算法的安全性保证了数据在传输以及存储过程中的安全性。

2)重加密的安全性:对于每一个密文数据在利用重加密密钥加密后得到的新的密文数据副本过程中,由于重加密密钥是数据授权者在本地计算得出后上传给PostgreSQL,因此在数据库中完全得不到任何关于密钥的信息,因密钥生成的单向性,无法由新的密钥推导出之前的加密密钥,所以重加密过程中并不会涉及到数据的明文信息。因此,该过程也是安全的。

3)抗合谋:当数据接收者即被授权者Uj获得解密密钥后意欲联合半可信的第三方数据库管理者对其他数据进行合攻击窃取时,尽管数据拥有者在本地初次加密时采用的是同一个加密密钥,但因为采用的是存储和控制分离的方式,对于用户没有权限访问的数据,用户即使联合数据库拿到了重加密后的密文,也无法获取相对应的使用会话密钥封装后的重加密密钥,所以用户能获得的也只是有访问权限的数据信息。

优化后的方法对于授权控制是基于代理重加密后的数据副本进行的,这会使统一加密密钥加密的数据经过重加密后,不同的数据需要利用不同的解密密钥进行解密,原理和基于RSA方法中一样用户只能获得有访问权限的数据,这种方法很好地将原始加密密钥保护,可以有效地抵御来自用户和半可信数据库的联合攻击。

5 实验结果分析

5.1 数据发布开销

数据上传至PostgreSQL前都要在前端加密,保证前端加密效率直接影响用户满意度,在本次实验中针对不同数据规模分别采用文中提到的2种加密算法比较加密效率。本次数据规模m=1 000,2 000,…,8 000个文档,得到如下数据如图3所示。

图3 数据加密效率对比

从图3可知,随着文档规模逐渐增大相较于AONT的对称加密基于RSA加密算法劣势越趋明显,虽然两者在数据安全性上都有很好的保障但考虑到效率问题采用对称密钥可有效减少本地计算开销。

5.2 重加密过程效率

本文2层存储架构选择的重加密方法直接影响存储层和镜像层之间的数据访问效率,针对提出的2种方法进行效率对比,结果如图4所示。选取的文档规模m为1 000~8 000。

图4 重加密效率

5.3 数据访问效率

在数据访问的整个过程中,2种方法的访问权限判断和网络传输时间基本相同不做考虑,主要是重加密和本地解密的时间不同,对于优化后方法中每个数据授权均有一数据副本,不存在重加密时间。

由图5可知,基于对称密钥重加密机制读取效率是基于公钥机制的上千倍,但与此同时在数据库中占用的额外存储空间如表2所示。

图5 数据读取效率对比

mRSA/KBAONT/MB1 00012833.22 00025669.83 00038496.94 000512117.05 000640140.06 000768190.07 000896219.08 0001 024243.0

经过对比后发现,优化后方法是以存储空间为代价提高数据的读取效率,2种方法各有优劣势,具体采用什么方法视实际情况和需求决定。

6 结束语

本文基于PostgreSQL隐私数据防泄密,提出一种细粒度轻量级的访问控制方法。实验结果表明,基于RSA加密的方法效率较低,但占用存储空间小,优化后方法相较于传统加密方法效率高,但需要占用额外空间,2种方法都具有很好的安全性。

尽管本文方法可以有效进行细粒度轻量级的访问控制,但是隐私数据在其创建、存储、传递、处理、销毁等各个生命周期都遭受着被泄露的风险,不安全的存储方式、频繁的数据访问处理传递都会给隐私数据带来极大威胁,为了实现隐私数据安全,不仅从技术层面解决问题,还要从管理层面入手,两者相结合才能发挥最大的效益,这将是今后研究的重点。

猜你喜欢
加密算法访问控制密文
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
基于整数矩阵乘法的图像加密算法
基于混沌系统和DNA编码的量子图像加密算法
混沌参数调制下RSA数据加密算法研究
ONVIF的全新主张:一致性及最访问控制的Profile A
一种基于密文分析的密码识别技术*
一种基于密文分析的密码识别技术*
动态自适应访问控制模型
浅析云计算环境下等级保护访问控制测评技术