一、数据库加密技术 数据库系统提供的上述措施难以完全保证数据安全性,某些用户仍可能非法获取用户名、口令字,或利用其他方法越权使用数据库,甚至直接窃取或篡改数据库信息。因此,有必要对数据库中存储的重要数据进行加密处理,安全保护存储数据。 1、 数据加密 数据加密就是将明文数据M经过一定的交换变成密文数据C,解密是加密的逆过程。数据库密码系统要求将M加密成C,C存储到数据库中,查询时将C取出解密得到NI。数据库数据加/解密处理过程如图1所示。 企业数据库安全与加密设计 2、加密算法 基于密钥的算法通常有两类:对称加密算法和公开密钥算法(又称非对称加密算法)。 大多数对称加密算法的加密密钥和解密密钥相同,安全性依赖于密钥k,要求发送者和接受者在安全通信之前商定一个k,算法为:加密E k(M) =C和解密Dk(C)=M。根据对明文信息的加密方式,对称算法又可分为序列密码和分组密码两大类:序列密码直接对当前的字符进行变换,每次加密一位或者一个字节的明文,每一字符数据的加密与明文的其他部分无关;分组密码将明文按一定的位长分组(通常是64或128位),对各组数据用不同的密钥加密或解密。公开密钥算法,加密密钥(是公开的,简称公钥)与解密密钥(简称私钥)不相同,且私钥不能从公钥计算出来(至少在合理假定的时间内)。用公钥ka加密既Eka(M)=C,只有用相应的私钥ka’才能解密Dka’(C)=M。 公钥钥算法的速度很慢,不能满足数据库文件加密对密码的要求;而对称密码中的序列密码适用于通信领域,对数据库加密来说也不适合;分组密码的速度快,对密文攻击不敏感,保密强度高,可以用于数据库加密。因此,在数据库加密中,一般都采用分组密码算法,如DES、三重DES、IDEA、AES等。 3、数据库加密方式 (1) 库外加密 整个数据库作为普通文件看待,把数据分块先在库外进行数据加密,然后把每次加密后的数据块写入到数据库文件中(而不是按数据关系写入)。读出时逆向解密即可。 (2)库内加密 经典的数据库系统将内部结构划分为三层(存储模式、概念模式和子模式),可以在三层结构的各层映射之间增加一个数据加密映射层次(即加密模式)。对数据进行加密的粒度可以是表、记录、字段或数据元素。所选择的加密粒度越精细,需要掌管的加密密钥的数量就愈大,密钥管理的难度和复杂性就越高。由于是在数据库管理系统内部实现,所以与数据存取访问控制等数据库安全机制的结合比较自然有效。 1)基于表的数据加密 使用传统的单密钥密码体制,不适合分布式数据库系统。 2)基于记录的数据加密 记录在各自密钥的作用下,加密成密文并存放于相关数据库文件中;记录的查找是将欲查找值加密成密文后进行的。加密后的记录不能实现索引、连接、统计、排序等操作。 3)基于字段的数据加密 将记录中的一部分字段进行加密。对于用于索引项、比较、表间连接的关键字等字段不进行加密,否则大大影响查询速度,甚至无法使用恻。 4、数据库存取技术 存取控制对系统中的对象进行了两种划分:一个是主体,一个是客体。主体是系统中的活动实体,包括DBMS所管理的实际用户、代表用户的各进程。客体是系统中受主体操纵的被动实体,包括文件、基本表、索引、视图等。存取控制就是在主体欲对客体进行存取时,检查主体的合法性(即权限),确保数据不被非法查询和修改。存取控制模型分为自主存取控制、强制存取控制和基于角色的存取控制。无论哪种控制都是有关不同权限的用户对不同数据进行不同操作权限的控制问题。
|