数据库敏感字段的加密研究
所属栏目:信息安全论文
发布时间:2014-02-19 11:58:23 更新时间:2014-02-19 11:59:21
医院的医生开单记录如果被随意读取进行统计分析,容易导致药品销售过程中的不合法行为。因此,对于敏感数据应当进行加密处理后再存储。本文采用基于AES的一种加密算法对医院的门诊、住院、处方等数据表的敏感字段进行加密和解密,从系统的存储层上保证数据的安全性,很大程度上解决了敏感数据的防泄露、防篡改和防破坏问题,从技术层面加强对医院药品的管理控制。
【摘要】为了使敏感数据在存储期间的机密性得到有效保障,在分析数据库加密粒度的基础上,提出一种基于AES的加密算法对敏感字段进行加密存储,并针对密钥的隐蔽性提出建议,从系统存储层上保证数据的安全性。
【关键词】敏感字段,加密粒度,AES算法
1引言
数据库通常以明文存储,现有的数据库管理系统基本上采用用户认证、授权管理、安全审计等技术进行安全管理。但是,诸如数据库管理员或侵入数据库服务器的黑客,都可以毫无阻碍地访问数据库的重要数据,一些敏感数据在存储期间的机密性并不能得到有效保障。
2数据库加密粒度
按照数据库的结构层次,数据库加密粒度可分为数据库级、表级、记录级、字段级以及数据项级。应根据不同的应用需求,选择适合的加密粒度。
数据库级加密粒度的加密对象是整个数据库,对所有的用户数据表、系统数据表、索引、视图、存储过程、函数等都进行加密处理。可以采用库内和库外两种加密方式。库内加密是在DAMS内部实现加密,在对数据库进行物理存取之前由DBMS完成加密/解密工作,加密密钥通常保存在系统表(或称数据字典)中。这种方法对用户是完全透明的,但加密/解密运算需要在服务器端进行,当用户访问数据库时,即使只需检索符合条件的很少一部分记录,也要对整个数据库进行解密,因此加重了数据库系统的负担。另外由于加密密钥通常与数据库保存在一起,因此,加密密钥的安全保护依赖于DBMS中的访问控制机制,密钥管理安全风险大。库外加密是将数据库加密系统做成DBMS的一个外层工具。先将数据在内存中进行加密,然后文件系统把每次加密的内存数据写入数据库文件中,读出数据时再逆向进行解密。这种方法的缺点是对数据库的读写比较麻烦,每次都要进行加密/解密的工作,影响数据库的读写速度。
表级加密粒度的加密对象是数据库中的表。一般来说,只需对数据库中包含敏感信息的部分表进行加密即可。采用表级加密粒度,访问时只需要对特定的表进行解密,与采用数据库级加密粒度相比,系统性能有一定的改善。
记录级、字段级、数据项级加密粒度的加密对象分别是数据表中的记录、字段或某些记录中某字段的值,这几种加密粒度更细,灵活性更好,但密钥管理更加复杂。现实中一些重要和敏感的信息往往是某些记录的某些字段,只需对这些重要内容进行加密即可,普通数据则没有必要加密,以免增加不必要的性能开销。例如医生开单记录具有特定的时效性,因此只需对某个时段的医生姓名字段进行加密即可。
3加密算法
3.1AES算法介绍
高级加密标准算法(AdvancedEncryptionStandard,AES)是一种分组对称加密,使用相同的密钥对数据进行加密和解密,支持128bit分组加密,并可选择使用128、192和256bit密钥。AES算法的原型是采用宽轨迹策略的Square算法。宽轨迹策略是针对线性分析和差分分析提出的,最大优点是可以给出算法的最佳线性逼近偏差的界,以及最佳差分特征的概率,可以提高算法抗击线性密码分析及差分密码分析的能力。
AES算法使用循环结构迭代加密,加密和解密分别经过十轮的运算处理,每一轮操作包括四个基本步骤:字节替换SubBytes()、行移位ShiftRows()、列混合MixColumns()和轮密钥加AddRoundKey()。加密的具体流程如图1所示。
图中每轮变换所需要的密钥,通过密钥扩展算法得到。解密算法与加密算法的主要区别有:使用密钥序列的顺序不同、置换盒不同、行移方向不同、列混系数不同,以及每轮变换中函数的使用顺序不同。
具体实现时,AES算法主要分为三大模块:密钥注入INITKAES()、数据加密Cipher()和数据解密InvCipher()。
AES将加密密钥的位数提高到128bit以上,极大地增加了破解密文的难度。AES算法具有灵活、高效、易实现、抗击多种密码分析的优点,广泛运用于商业、政治和军事的数据加密。3.2算法改进
尽管如此,直接使用AES算法对数据库字段进行加密存储也是不可取的。AES算法工具和源码都很容易得到,对于数据库管理员或黑客来说,由于AES算法是对称加密,只要找到相应的密钥存放表,就可以对加密字段自行解密。因此,本文在实际加密处理时,并不是直接使用AES算法,而是将其作为算法核心,辅以一些变换运算,构成最终的加密算法。
改进的加密算法如下:
①生成两个随机数R1(32字节,即256bit)、R2(16字节),其中,R1作为密钥;
②将密钥R1与一条记录主键的某字段(如ID)异或得到该记录的加密密钥UR1;
UR1=R1?茌ID(1)
③调用密钥注入函数注入加密密钥,aes.INITKAES(32,UR1);
④使用该加密密钥对随机数R2进行加密,得到密文SC(16字节),aes.Cipher(R2,SC);
⑤用SC异或需要加密的字段YW,得到加密结果MI。
MI=SC?茌YW(2)
⑥将该记录的所有主键和R1、R2及加密结果MI等信息作为一条记录,保存到数据库,用于日后解密使用。
解密时,先查询密钥R1、R2和加密结果MI,然后重复上述②~④步骤,得到SC,再用SC异或MI,得到明文YW。
YW=SC?茌MI(3)
4实现与分析
4.1加密实现
首先读取数据表中敏感字段所在记录,采取一次一密的方式,按改进的算法逐条对敏感字段数据进行加密处理,用得到的密文修改数据库原明文字段,同时将该该录的所有主键与密钥(R1、R2)、密文及加密时间等信息保存到相应的密钥表。
解密时,根据主键的一致性检索待解密记录的密钥,当确定数据表中的密文与密钥表中的密文一致时,使用该密钥进行解密,还原数据表中的敏感字段值。对敏感字段加密和解密流程如图2所示。
4.2密钥管理
由于数据表的主键各不相同,因此每一个有需要加密字段的数据表对应一个密钥表。密钥表既可以与原数据表放在同一个数据库内,也可以放在其他数据库内,或单独建立一个密钥表数据库。数据与密钥不仅可以做到逻辑分离,还可以实现物理分离,即两者可以不存放在同一台服务器上,这样隐蔽性更强,能更好地保证数据库中敏感数据的安全。
本文需要加密的敏感字段在Oracle数据库中,而密钥表保存在SQLServer2008数据库,并且两者异地存储。
4.3加解密速率分析
尽管加密效率并不是我们所追求的,但考虑到医院每天的门诊和住院信息量很大,处方记录数量非常多,因此,在加解密速率方面,也适当予以关注。本文采用C++语言编程,在CPU为3.0GHz,内存为1G,window操作系统的笔记本电脑上测试,加密速率达到每秒1000条以上记录。改进后的加密算法,仅仅是在AES算法的基础上进行适当的异或运算,对加解密速率的影响几乎可以忽略不计。
5结束语
本文针对数据库敏感字段的安全性问题,提出一种基于AES算法的加密方法,对敏感字段进行加密存储,从系统存储层上保证数据的安全性。在此基础上,还对密钥的管理提出合理建议,加强密钥的隐蔽性,从而更好地保证数据库中敏感数据的安全。
参考文献
[1]黄吴健,帅仁俊.电子健康档案的加密研究.计算机工程与设计,Oct.2012Vol.33No.10:3833-3837.
[2]朱继锋等.支持密文索引的数据库透明加密方法.信息安全与技术,2011.09:50-55.
[3]李维勇.一种字符型数据加密算法研究.计算机安全,2009.11:56-58.
[4]张金辉等.AES加密算法分析及其在信息安全中的应用.信息网络安全,2011年第05期:31-33.
《计算机科学与探索》杂志是由中华人民共和国工业和信息化部主管、华北计算技术研究所主办的国内外公开发行的计算机学报级高级学术期刊,中国计算机学会会刊,2010年开始由双月刊更改为月刊,大16开。欢迎踊跃投稿(中文,英文稿件均可)。报导范围:坚持刊登计算机(硬件、软件)各学科具有创新性、前沿性、导向性、开拓性及探索性的科研成果。
《计算机科学与探索》办刊宗旨
坚持“双百”方针,传播计算机信息,把握行业动态,探索计算机发展规律,开拓计算机科学技术发展新思路,促进科技交流。
《计算机科学与探索》栏目设置
本刊刊登内容提要:高性能计算机,体系结构、并行处理,计算机科学新理论、算法设计与分析、人工智能与模式识别、系统软件,软件工程、数据库、计算机网络、信息安全、计算机图形学与计算机辅助设计、虚拟现实、多媒体技术及交叉学科的相互渗透和新理论的衍生等(如:认知科学、神经信息学、量子信息学、生物信息学等)。
《计算机科学与探索》期刊数据库收录情况/影响因子
《计算机科学与探索》杂志被列为“中国科学引文数据库来源期刊”,并被“万方数据——数字化期刊群”、“中国学术期刊网络出版总库”、“美国《剑桥科学文摘(CSA)》”、“波兰《哥白尼索引》”收录。
复合影响因子:0.943综合影响因子:0.350
月期刊平台服务过的文章录用时间为1-3个月,依据20年经验,经月期刊专家预审通过后的文章,投稿通过率100%以上!