数据库全文检索的安全技术研究
作者:佚名; 更新时间:2014-12-05
[摘要]目前,全文检索技术是国内外学者研究的热点。它以文本信息作为检索对象,允许用户直接获取文中的有关章节、段落或句子,是从海量信息中精确定位所需信息的最有效手段。随着信息量的急剧增加,为了在浩如烟海的文字信息中快速找到所需的相关信息,很多应用系统都通过全文检索技术来提高系统检索效率。因此,数据库安全问题的解决已经迫在眉睫。在对安全隐患进行分析的基础上,提出一个具体的解决方案对全文索引库进行存储加密。设计专门的加解密模块来实施全文索引的存储加密,并构建该模块的加密机制,对全文索引的安全技术进行初步的探讨。
[关键词]数据库 全文检索 存储加密
目前,计算机系统中数据存储的安全问题越来越引起人们的重视。传统的物理安全、操作系统安全机制和数据库访问控制机制为数据库提供了一定的安全保障,但这些并不能满足全部的安全需求,无法保证一些部门重要数据和敏感数据的安全。
一、安全需求
全文检索功能实现的一个必要条件是建立全文索引库。尽管全文索引也是基于一记录的某个属性建立,但与传统的数据库索引相比,全文索引给数据库系统带来了新的安全问题。传统数据库索引建立在比较容易标识的属性上比如编号,日期等,索引文件是简单的属性值与其存储的位置信息的对应关系而全文索引的优势体现在对长字段的查询上,索引一般建立在信息量较大的属性上,攻击者如果窃取全文索引库后,很可能会通过统计分析得到源文本的一些信息,给整个系统带来安全隐患,因此全文索引库的安全是一个值得关注的问题。
传统的数据库安全技术为全文索引提供了第一层安全保障。目前数据库安全技术主要有身份认证、访问控制、信息流控制、推理控制、审计和加密等。对于数据库中存储的高度敏感机密性数据,如财务数据、军事数据、国家机密等,除以上安全性措施外,一般还要采取对数据实施加密,数据加密是防止数据在存储和传输中失密的有效手段。
加密的基本思想是根据一定的算法将原始数据变换为不可直接识别的格式密文,从而使得非法用户无法获知明文的内容。加密和解密的方法分为两类对称密钥和公开密钥。公开密钥在20世纪70年代才开始出现,一般应用于数字签名中而古典的加密体制以及最近的数据加密标准DES和AES都是基于对称密钥的。
针对全文索引带来的安全问题,本文提出的解决方案是对全文索引库进行存储加密,加密后存储的全文索引有效地防止了信息泄漏。
二、存储安全技术
存储安全技术主要是针对数据库来说的,本文的全文索引库存储安全也属于数据库存储安全的范畴。数据库存储安全一般是通过采取基于密码的数据存储加密和完整性认证来保证。加密是确保数据安全的一个重要因素,也是目前数据库安全技术领域的一个重要研究发展方向。通常所说的数据库加密包括对静态存储在存储介质上的数据库数据的存储加密和在网络信道上传输的数据库数据的传输加密。
数据库存储加密按照对数据的加密范围一般分为整库加密和选择性数据加密两种方式,信捷职称论文写作发表网,其中后一种方式又分为记录加密、字段加密和数据元素加密等方式。
(一)整库加密
数据加密是指对数据库数据文件中的所有数据进行加密。整库加密通常是数据库内核在将内存缓冲区中的数据写入存储介质之前进行加密,一般实现在数据库管理系统的存储管理层。采用这种方式的优点一是安全强度较高,二是存储加密机制对数据库内核的其它功能层完全透明,其缺点是在密钥应用不合理的情况下容易遭受密文攻击的威胁。因此整库加密方式通常采用子密钥的概念来实施,所谓子密钥,就是在整库加密方式下对数据库存储的数据进行分块,然后对不同的数据库块采用不同的子密钥进行加密。
(二)选择性数据加密
选择性数据加密是指有选择性地对某些记录、字段和数据元素进行存储加密。记录加密是把数据库表中的一条记录作为一个加密单元来进行加密。在这种方式下,为了防止合法用户通过对密文记录与明文记录进行比较的方式破解加密记录,原则上应做到一条记录一个密钥。如果数据库中需要加密的记录数比较少,可以考虑采用记录加密的方式。字段加密是把数据库表中的列作为一个加密单元来进行加密。与记录加密类似,为了防止密文攻击,原则上应做到一个字段一个密钥。通常在一个数据库表中,字段的个数小于记录的条数,因此,字段加密与记录加密相比,所需的密钥数量相对要少一些。如果只有少数字段需要加密,字段加密是一种较为可行的方式。
三、全文检索数据库的存储加密机制
存储加密密钥采用系统主密钥和数据块子密钥两级加密密钥,两级加密密钥均由随机数发生器生成。其中系统主密钥用于加密数据块子密钥,数据块子密钥用于加密实际的索引数据块。对于所有的索引库数据文件,数据块大小均划分为每块4KB字节大小。
为了确保存储加密的安全性,主密钥通过专门的密钥存储介质如软盘、盘、卡进行存储,应用系统在访问索引数据之前加载到数据库系统。所有的数据块子密钥由一个专门的子密钥文件进行存储,鉴于所有数据块子密钥是由系统主密钥进行了存储加密保护的,因此,子密钥文件可存储于主机硬盘之上。
随着数据库数据的动态增加,当需要创建新的全文索引数据块时,系统将从随机数发生器采集一个新的随机数作为该数据块的加密子密钥,并使用该加密子密钥对数据块实施加密后存放于索引数据文件中,然后再使用主密钥对该加密子密钥实施加密后存放于子密钥文件中。
本文中索引加解密主要思想是在数据物理存取之前进行加解密操作。也就说,DBMS在将内存中的数据写到外存如磁盘、磁带等时,进行加密操作,而将外存中的数据读到内存时,进行相应的解密操作。因为数据在内存中是明文的,DBMS的功能不会受到任何影响。
在对数据加密时,一个至关重要的问题是密钥的管理。如果密钥采用人为指定的方式产生,安全性通常会不高,毕竟人们更倾向于选择容易记忆的数字或字母来做密钥。所以我们采用了密钥由随机数发生器自动产生的方式,确保密钥随机产生,提高安全性能。为了数据的安全,密钥必须定期更新。我们为密钥设置一个有效期限,如果密钥的上次更新时间与当前时间间隔超过密钥有效期限,系统中的密钥更新程序会提示进行密钥的更新操作。为了防止密钥更新过程中出现查询错误,将加密操作与索引查询操作设为互斥操作,这样用户在访问数据的过程中就不会出现错误。
参考文献:
[1]朱良根、雷振甲、张玉清,数据库安全技术研究.计算机应用研究,2004,9.
[2]Oracle.Oracle9i database security for e-business. An Oracle White Paper,2001,6.
[3]苏新宁,信息检索理论与技术.北京:科学技术文献出版社,2004.
上一篇:高校计算机基础教学改革的探索
下一篇:探索结对编程
热门论文