加密

RSA算法在数据机密性和完整性上的实现

数据机密性的实施就是对数据进行加密,以实现数据传输的安全性。数据完整性的实施就是对数据进行数字签名,以实现发送者身份和文档的认证。数字签名的实施过程中用到的一种函数叫哈希函数(Hach函数,单向散列函数)。假设有甲和乙进行通信,乙要确认信是甲发出的。数字签名的基本协议很简单:

(1)甲用他的私人密钥对文件加密,从而对文件签名;

(2)甲将签名的文件传给乙;

(3)乙用甲的公开密钥解密文件,从而验证签名。

在实际的实现过程中,明文m都是长文件,则第(1)步效率太低。为了节约时间,可以引入单向散列函数进行使用。甲并不对整个文件签名,而是对文件的散列值进行签名。下面介绍一种将DES算法和RSA算法结合起来的数据加密和数字签字协议:

(1)客户端和服务器建立一个链接;

(2)顾客进入个人信息加密网页;

(3)顾客申请服务器生成服务器的一个公钥和一个私钥;

(4)顾客生成顾客的一个公钥和一个私钥;

(5)顾客得到服务器的公钥后用它对一个会话密钥加密并传送给服务器;

(6)服务器用自己的私钥对加密了的会话密钥进行解密,得到会话密钥;

(7)顾客产生要传送文件m的单向散列值h;

(8)顾客用他的私人密钥对单向散列值h进行加密得到数字签名a;

(9)顾客用与服务器共享的会话密钥加密m和a并将结果传送给服务器;

(10)服务器用会话密钥解密这传送过来的信息,得到明文文件m和数字签名a;

(11)服务器用明文文件m产生文件m的单向散列值m,同时用顾客的公钥对传过来的散列签名a进行解密,得到恢复的散列值。如果恢复的散列值与从m产生的散列值m相同,则证明是顾客的签名。