发送方和接收方都必须知道n和e的数值,而只有接收方才知道d的数值。这就是使用公钥ke={ d,n} 和私钥kd={d,n}的一种公钥加密算法。要使此算法满足公钥加密,必须符合以下要求:
(1) 能够发现e、d、n 的值,其中对所有的M
(2) 对于所有的M
(3) 给定e和n,不能求出d。
前两个要求很容易实现,第三个要求对于较大的e和n才能实现。
RSA算法运用了数论中的Euler定理,即a、r 是两个互素的正整数,则az≡1 mod r,其中z为与r互素的正整数的个数(即Euler函数)。
该算法取用一个合数( 该合数为两个大素数的乘积 ),而不是取用一个大素数作为其模数r,使其具备剩余函数的单向陷门特性功能[4]。
总而言之 ,DES算法具有密码使用简便及处理速度快等优点,但在密钥的分配和保密管理方面存在问题;RSA是被研究得最广泛的公钥算法,从提出到现在,经历了各种攻击考验,被人们普遍认为是目前最优秀的公钥方案之一,并且RSA算法不需要秘密分配密钥,密钥的安全管理也很容易,但缺点是处理速度慢。
3 文件型数据库加密技术的实现
根据现有资料分析,目前还没有公认的专门针对数据库加密的加密算法,因此一般根据数据库特点选择现有的加密算法来进行数据库加密。一方面,对称密钥算法的运算速度比非对称密钥算法快很多,二者相差大约2~3个数量级;另一方面,在公开密钥算法中,每个用户有自己的密钥对。而作为数据库加密的密钥如果因人而异,将产生异常庞大的数据存储量。因此,在数据库加密中一般采取对称密钥DES的分组加密算法。在此前提下,再使用库内加密和库外加密等方式来实现文件型数据库的加密。具体而言,就是使用数据库安全保密中间件对数据库进行加密,这是最简便直接的方法,主要是在DBMS内核层(服务器端)加密、在DBMS外层(客户端)加密以及在系统中加密。
在DBMS内核层实现加密,需要对数据库管理系统本身进行操作,数据在物理存取之前就完成加解密工作。其优点是加密功能强,并且加密功能几乎不会影响DBMS的功能,可以实现加密功能与数据库管理系统之间的无缝耦合;缺点是加密运算在服务器端进行,加重了服务器的负载,并且DBMS和加密器之间的接口需要DBMS开发商的支持。
在DBMS外层实现加密的好处是不会加重数据库服务器的负载,并且可实现网上的传输,加密比较实际的做法是将数据库加密系统做成DBMS的一个外层工具,根据加密要求自动完成对数据库数据的加解密处理。采用这种加密方式进行加密,加解密运算可在客户端进行,它的优点是不会加重数据库服务器的负载并且可以实现网上传输的加密,缺点是加密功能会受到一些限制,与数据库管理系统之间的耦合性稍差。
在系统中加密,因在系统中无法辨认数据库文件中的数据关系,需将数据先在内存中进行加密,然后文件系统把每次加密后的内存数据写入到数据库文件中去,读入时再逆方向进行解密,这种加密方法相对简单,只要妥善管理密钥就可以了。缺点是对数据库的读写都比较麻烦,每次都要进行加解密的工作,对程序的编写和读写数据库的速度都会有影响。
综上所述,具体到实际运用上,由于每种加密技术都有自己的优缺点,所以采用哪种加密方式需要综合考虑各种因素,选择最适合的加密方式,以保证数据的安全。