数据库加密方法研究与实现
摘要:论述了数据库安全与保密的概念、数据库基本安全结构,研究了对数据库中存储的重要数据进行加密处理的方法及密匙的管理,实现了对数据库的加密。
关键词:数据库;加密;密匙
0 引言
在现实世界,安全是一个相当简单的概念。人们通过各种方法保障自己生命财产不受别人的侵犯。在数字世界中,安全有着和现实世界相似的概念。随着信息技术的飞速发展,数据信息的安全已成为当前信息社会非常关注的突出问题。而数据库系统作为计算机信息系统的核心部件,其安全问题是信息系统安全的一个重要方面。数据库系统信息的安全性依赖于两个层次:一是系统本身提供的安全性;二是应用程序设置的控制管理。目前一些大型数据库管理系统已经提供了一些安全手段,例如用户分类、数据分类、审计功能等,但这只能满足一般的安全要求。对于一些重要或敏感数据,用户迫切希望以密文的形式存储和传输,并且可以对数据库信息进行操作而又不泄露其中的内容,这就需要通过对数据库的数据进行加密来实现。所谓数据库加密是指对数据库的实际内容(明文)采用一定的算法使之成为非法用户不能理解或者在一定时间内不能理解的乱码(密文)。
1 数据库结构
数据库文件是由结构说明表、字段名表和数据记录三部分构成。
一般数据库采用数据库文件的结构说明表和字段名表,以二维表形式对数据记录进行管理。通过结构说明表对数据库记录进行纵向操作,通过字段名表对数据记录进行横向操作。
1.1 结构说明表结构
数据库的结构说明表占32个字节。各个字节的含义为:第0字节:文件标志信息,如果没有备注字段或通用型字段,为03H,否则为F5H;第1至3字节:最后一次更新的日期;第4至7字节:记录总数;第8至9字节:库文件中数据存放区的起始地址;第10至11字节:库文件中每个记录的总长度;第12至31字节:保留字节。
1.2 字段名表结构
每一个字段用32字节,各字节含义分别是:第0至9字节:以ASCII码表示的字段名;第10字节:00H;第11字节:字段名类型;第12至15字节:数据域地址;第16字节:字段长度;第17字节:小数点位数;第18至19字节:保留字节;第20字节:最后一次更新的工作区标识符;第21至31字节:保留字节。
2 数据库加密
一般而言,一些大型数据库系统本身所提供的比较完善的数据库安全保护措施就足以满足普通用户的需求,包括登陆账号的身份验证、角权限管理、用户的访问控制、审计跟踪等。但是不能防止非法用户通过不正当渠道窃取数据,特别是对于某些重要部门和敏感信息,仅靠简单的安全设置肯定是不够的。例如,某些用户,仍可能非法获取用户口令越权使用数据库,或在网络通信线路上窃取数据,甚
至直接对数据库中的数据进行窃取和篡改。因此有必要对数据库进行加密,从而保护数据库中的重要数据。数据库加密的基本原理就是通过加密算法将数据转换为不可辨识的加密数据即密文的过程,而将密文通过解密算法还原为明文的过程就是解密,加密和解密的过程构成加密系统,明文和密文都称为报文。加密系统通常包含以下四个部分:①明文P;②密文Y;③加密/解密算法E/D;④用于加密和解密的钥匙,即密钥K。
归纳起来,加密就是在发送端利用加密算法E和加密钥匙Ke对明文P进行加密,得到密文Y=Eke(P);解密就是接收端利用解密算法D和解密钥匙Kd对密文Y进行解密,将密文恢复为明文P=DKd (Y)。
根据数据库的结构,可以采用以下的加密方法:①对结构说明表、字段名表和数据记录全部内容进行加密;②对结构说明表进行单独数据处理,从而达到加密的目的;③对数据库文件记录内容进行加密;④对字段内容进行加密;⑤对结构说明表、字段名表和数据记录中的部分要素进行加密,以达到加密的目的。
根据系统具体要求的不同,可选择其中一种加密方式对数据库文件进行加密。具体来说,可以简单地通过对结构说明表的关键字节的标识进行修改,使系统难以辨认,从而达到加密数据库的目的。例如:将结构说明表的第0字节的值由03H或者F5H修改为其它值,从而对数据库实现加密。
2.1 基于文件的数据库加密技术
数据的共享和访问是用户通过解密密匙对整个系统进行解密来实现的。多个方面的缺点限止了它的应用。首先,数据修改的工作将变得十分困难,需要进行解密、修改、复制和加密四个操作,极大地增加了系统的时空开销;第二,即使用户只是需要查看某一条记录,也必须将整个数据库文件解密,这样无法实现对文件中不需要让用户知道的信息的控制。因此,这种方法只适用于能回避这些限制的应用环境。
2.2 基于记录的数据库加密
一般而言,基于记录的数据库加密技术是目前最常用的加密手段,数据库系统中每条记录所包含的信息具有一定的封闭性,即从某种程度上说它独立完整地存储了一个实体的数据。因此,基于记录的加密技术是最常用的数据库信息加密手段。这种方法的基本思路是:在各自密钥的作用下,将数据库的每一个记录加密成密文并存放于数据库文件中;记录的查是通过将需查的值加密成密码文后进行的。然而基于记录的数据库保护有一个缺点,就是在解密一个记录的数据时,无法实现对在这个记录中不需要的
字段不解密;在选择某个字段的某些记录时,如果不对含有这个字段的所有记录进行解密就无法进行选择。
3 基于字段的多级数据库加密技术
3.1 基于字段的多级数据库加密
在数据库的安全中常用到多级数据库的概念和方法,所谓多级数据库是指:每个数据和用户都对应一安全级别,所有级别构成偏序关
系,一个用户只能存取不高于自己安全级别的数据。为了很好地解决基于文件和基于记录的数据库加密中存在的问题,我们选用基于字段的多级数据库加密方案。所谓基于字段的多级数据库加密,就是把数据库中的不同记录和不同字段划分为不同的两个安全级别,对各个不同的安全级别采用不同的密匙。由于该方法可以对数据库中单个数据元素进行加密,所以具有很小的加密粒度,具有很好的灵活性和适应性。同时由于对记录和字段进行了安全划分,所以减少了整个密码系统的密匙量,便于大型数据库的密匙管理。假设数据库记录的安全级集合为L=(L1,L2,…,Lk),记录总数为A,其中符合各个安全级别的记录数分别为:n1,n2,…,nk,则n1+n2+…,+nk=A;字段的安全级集合为F=(F1,F2…,Fi),字段总数为B,其中符合各个安全级别的字段分别为:w1,w2,…,wi,同样的有w1+w2+…wi=B。对于表中的每一个数据项Dij对应两个安全级别分别为:第i 条记录对应的安全级别Li和第j个字段
对应的安全级别Fj。定义该数据项对应的数据项密匙生成函数为Kij=G(K,Li,Fj),其中K为表密匙。密匙生成函数G必须满足:①生成重复子密匙的概率要低;
共享文件如何加密②生成的子密匙要具有足够的强度;③从一个子密匙推算出另外的子密匙在计算上不可行。通过该密匙生成函数,可以做到不同安全级别(记录的安全级别不同,字段的安全级别也不同)的数据项对应不同的密匙。从而达到了基于数据项的加密;同时数据项的密匙是通过密匙生成函数生成的,由于安全级别的有限性,决定了密匙量不会太大,大大方便了密匙的管理。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论