您好, 访客   登录/注册

数据库加密技术研究

来源:用户上传      作者: 胡永亮

  摘要:文章结合笔者多年工作的实践经验,就数据库加密层次的选择、加密算法的选择以及数据库加密与外部系统之间的关系进行了分析与阐述。
  关键词:数据库加密;加密算法;加密粒度
  
  随着计算机在社会各个领域的广泛应用,人们对信息系统的依赖程度越来越高,数据库在计算机和软件开发领域的作用是至关重要。数据库系统负担着客户端对数据信息的访问控制和存储管理的任务,数据库中的数据(包括一些机密数据)一般以明文的形式保存。关键数据以明文的形式在数据库中存储使数据库的安全性降低,通过对数据库中关键字段的加密可以提高其安全性。
  一、加密层次的选择
  可以考虑在3个不同层次实现对数据库数据的加密,这3个层次分别是OS、DBMS内核层和DBMS外层。
  第一,从操作系统的角度来看OS层位于DBMS层之下,所以无法辨认数据库文件中的数据关系,也就无法合理地产生、管理和使用密钥。因此,在OS层对数据库文件进行加密,对于大型数据库来说,目前还难以实现。
  第二,DBMS内核层加密是指数据在物理存取之前完成加解密工作。这种方式的优点是加密功能强,并且加密功能几乎不会影响DBMS的功能;缺点是在服务器端进行加解密运算,加重了数据库服务器的负载,并且因为加解密是在DBMS内核中完成,就势必需要数据库供应商对其进行技术支持,这一点不容易实现。
  第三,DBMS外层实现加密的优点是可扩充性强,数据库的加解密系统可以做成一个独立于DBMS的平台,不需要数据库供应商进行技术支持,并且可以将加密密文直接在网上传输;缺点是数据库的功能和查询效率会受一些限制。
  根据以上理论得出,应用程序的数据通过数据库加密接口转换成相应的密文保存在数据源中;当应用程序需要调用数据源时,通过数据解密模块将相应的密文转换成原本的数据。这样,即使其他非法用户窃取数据库文件他们也只能得到密文无法得到有意义的明文,从而提高数据库的安全性。
  数据库加密系统分成两个功能独立的主要部件:一个是加密字典管理程序,另一个是数据库加解密引擎。按以上方式实现的数据库加密系统具有很多优点:首先,系统对数据库的最终用户是完全透明的,管理员可以根据需要进行明文和密文的转换工作;其次,加密系统完全独立于数据库应用系统,无须改动数据库应用系统就能实现数据加密功能;再次,加解密处理在客户端进行,不会影响数据库服务器的效率。
  二、加密算法
  数据库加密技术的安全很大程度上取决于加密算法的强度,加密算法直接影响到数据库加密的安全和性能。因此,加密算法的选择在数据库加密方案中也显得举足轻重。选择算法主要指标是安全和便于使用。
  安全的算法是可靠的算法。一个算法要可靠应该至少满足这样一些条件:首先,核心加密必须公认可靠,如DES和RSA算法,他们经过二十多年的考验、鉴定,数人攻击而无人承认攻破;加密算法复杂度,主要是解密算法的复杂性要强,事实证明,仅靠对算法保密是不安全的,因为软件加密可以通过反汇编可执行程序来发现;另外加密算法必须支持足够长的密钥,加密算法的实现必须可靠,这样才能具有较强的抗分析破译能力。
  三、数据库加密与操作系统的关系
  数据库管理系统是建立在操作系统的平台上,数据库管理系统的安全离不开操作系统的安全,没有操作系统的安全,就不能真正解决数据库的安全。作为加强数据库安全技术之一,数据库加密,必须依赖操作系统自身的安全。如数据以加密形式存储于数据库中,一旦访问这些加密数据,往往需要把它们调入内存并解密。这时,如果内存的安全得不到保障,那么这些数据就可能被攻击者窃取,即使再好的加密方法也是无效的。而内存的安全问题通常由操作系统解决。典型的,操作系统提供的安全机制有:
  第一,访问控制机制。操作系统提供了访问控制机制,用来标识、鉴别、审核用户,只有通过认证的用户才能根据授权访问特定的数据。但是,操作系统中的对象一般是文件系统,粒度较粗。而数据库需要处理更为精细粒度的数据,如记录、字段值,所以,数据库管理系统也提供了访问控制机制,以便更好控制数据库中数据的访问。数据库加密和数据库访问控制室两种不同的安全措施,二者不可互相替换。
  数据库加密以牺牲性能为代价,并且不能提供灵活的访问控制。因此,数据库中的数据加密后,一方面应该对特权用户(DBA,SA)的访问进行限制,使只有经过授权的用户才能访问密文数据,为数据增加进一步的保护;另一方面也不能单纯为了安全性而通过分配密钥控制数据库的访问,因为这样极大地牺牲了系统性能,破坏了安全性和可用性的平衡,并且失去了灵活的控制策略。
  加密技术和访问控制技术是两种不同的安全措施,可以这么说,如果访问控制是保护数据库的第一道防线,那么加密技术就是进一步保护数据库的第二道防线,有了加密技术的保护,数据库更加安全。二者的结合,可以对数据库数据进行深度的保护。
  第二,内存保护。在多道程序运行的系统中,需要对缓冲区中的各用户(私人)空间采取隔离措施,使之不要互相干扰。用户进程一旦退出,应当及时清空用户数据。
  第三,提供最小特权管理。操作系统提供了最小特权管理,不给用户超过执行任务所需要特权以外的特权,使特权用户(如系统管理员)只具有完成其任务所需要的特权,尽量减少误操作、恶意操作、特权用户口令丢失所引起的损失。
  第四,监控机制。提供审计、隐蔽通道分析、病毒防护等措施。当然,仅仅依靠目前操作系统的安全措施,还不能够完全保证数据库的安全。对于数据库,操作系统的安全措施是防御攻击者攻击数据库的一道基本屏障,而加密措施则是加固数据库安全的又一道防线,两者结合起来,能够更加有效地增强数据库的安全。
  总之,数据库加密技术是提高数据库安全的一个重要手段,但加密数据并提高安全性的同时也带来了其他问题,频繁的加密和解密使得数据库的性能降低用户体验降低,故此还需进一步做研究,进一步提高数据库加密技术的各项性能。
  (作者单位:浙江省气象信息网络中心)


转载注明来源:https://www.xzbu.com/2/view-432985.htm