互联网技术日益普及和应用,计算机中大批量的数据信息存储和传输的安全问题令人担忧。如何保护网络数据信息安,防止信息被窃取和破坏是一个普遍关注的问题,这就需要我们对网络数据库进行加密。

一、数据库加密的必要性

传输中的公共信道和计算机存储系统非常脆弱,网上大部分的资料都是明文传递,只要用一台机上网,就可以通过一定的方式窃取到许多别人的有用信息,甚至包括各种密码,因此很有必要采取措施对数据进行保护。

一方面,用户自身需要对关键数据进行有效保护。许多用户从处获得应用支持和服务,数据安全无法得到有效保障,因为传统的数据库保护方式是通过设定口令字和访问权限等方法实现的。解决这一问题的关键是要对数据本身加密,这样即使数据不幸泄露或丢失也难以被第三者破译。

另一方面,大型数据库管理系统的运行平台一般是Windows NT或Unix系统,这些操作系统的安全级别通常为c1、c2级。它们具有用户注册、识别用户、任意存取控制、审计等安全功能。虽然dbms在OS的基础上增加了不少安全措施,但和对数据库文件本身仍然缺乏有效的保护措施。由此可见,数据加密对于系统外部或者系统内部的安全管理都是必要的。

二、数据库加密算法与密钥管理

对数据库加密,有客户端加密与服务器端加密两种方式。客户端加密不会加重数据库服务器的负载,并且可实现网上的传输加密,这种加密方式通常利用数据库外层工具实现。而服务器端的加密需要对数据库管理系统本身进行操作,属核心层加密,如果没有数据库开发商的配合,实现难度较大。对于希望通过获得服务的用户,只有在客户端实现加解密,才能保证数据安全可靠。

1、数据库加密算法

加密算法是一些公式和法则,它规定了明文和密文之间的变换方法。目前常用的加密算法可分为三类:

(1)序列密码

这种密码以字符为单位进行加密变换。每一字符数据的加密与报文的其他部分无关。例如,直接对明文加上一串同等长度的乱码也可看成是密钥,只要所用的乱码是随机数且不重复使用,就实现了“一次一密”的加密。

从理论上讲,真正实现了“一次一密”的密码是可靠的密码,是不可破译的。缺点是密码破译人员比较容易得到明密对照双码,以便进行密码分析。同时乱码的产生和管理比较困难,难以真正做到“一次一密”。

(2)分组密码

明文按固定长度分组,对各组数据用不同的密钥加密或解密。这类密码按分组进行加密变换,一个字符数据不仅与密钥有关,还与其他字符数据有关,密码分析的穷尽量很大。例如传统的位分组法,它的穷尽量为一,即使用每秒运算万亿次以上的巨型计算机进行攻击,平均穷尽时间也需要数年。

当然这仅仅是理论数据,在攻击密码时还有其他约束条件,如数据、环境、规律等信息,实际所需的攻击时间要短得多。

(3)公钥密码

这类密码的共同缺点是加解密速度较慢。

据报道,这类密码的运算速率仅达到其他密码的千分之一到百分之一。公钥密码目前常用于用户认证、数字签名以及密钥传输等,不能适应数据库加密的速度要求密码就是一个典型的公钥密码。

序列密码和分组密码也称为对称性密码,这类密码加密和解密时用同一个密钥。公钥密码也称非对称密码,它有两个密钥公钥和私钥,加密时用公钥,解密时用私钥。

2、密钥管理方法

由于密码系统反复使用,仅靠加密算法已难以保证信息的安全。

事实上,加密信息的安全可靠依赖于密钥系统,密钥是控制加密算法和解密算法的关键信息。数据库加密需要实行二级密钥管理。一级密钥为主密钥,二级密钥为工作密钥。

主密钥的作用是对二级密钥信息加密生成工作密钥。工作密钥用于对数据库数据的加解密。工作密钥信息的长度为64位,前56位是记录名,需要带校验位存储在数据库表中。后位是数据库表的字段信息该字段在表中的某些特征,它们是临时生成的。为了存储记录名数据,每个数据库表增加了一个记录名字段,在用户录人数据时,系统自动生成记录名数据,使每条记录都有一个记录名并做到各记录名数据互不重复。

上述方法中,主密钥保护了工作密钥,工作密钥保护敏感信息,因此整个系统的安全依赖于主密钥的安全。一般主密钥经加密并存放在安全区域内,使用时由系统自动获取并解密。也可以把主密钥注人加密卡中保存。只是主密钥的更换比较棘手,主密钥更换后,工作密钥要全部更换,为安全起见,密钥更换前,需要对数据库系统全库备份。事实上,数据库生存期内,只要系统管理得当,密钥系统仅需数年更换一次,或者不必更换。

小知识之网络数据库:

网络数据库是跨越电脑在网络上创建、运行的数据库。网络数据库中的数据之间的关系不是一一对应的,可能存在着一对多的关系,这种关系也不是只有一种路径的涵盖关系,而可能会有多种路径或从属的关系。