加密算法

对称密钥密码体制

对称密钥密码体制,即加密密钥和解密密钥是使用相同的密码体制。对称密钥加密技术的缺点之一就是发送者和接收者在对话之前,一定要有一个共享的密钥,所以不太安全。

公钥密码体制

公钥密码体制使用不同的加密密钥与解密密钥。公钥密码体制的产生主要是因为两个方面的原因,一是由于对称密钥密码体制的密钥分配问题,二是由于对数字签名的需求。

在公钥密码体制中,加密密钥是公开的,解密密钥是需要保密的,加密算法和解密算法也是公开的。

公钥密码体制的加密和解密有如下特点:

  1. 密钥对产生器产生出接收者 B 的一对密钥,即加密密钥 PK 和解密密钥 SK。
  2. 发送者 A 用 B 的公钥 PK 作为加密密钥来加密信息,B 接收后用解密密钥 SK 解密。

摘要算法

摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,目前可以被解密逆向的只有CRC32算法,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。

数字签名

用加密系统对报文进行签名,以说明是谁编写的报文,同时证明报文未被篡改过,这种技术称为数字签名

数字签名必须保证能够实现以下三点功能:

(1) 接收者能够核实发送者对报文的签名。也就是说,接收者能够确信该报文的确是发送者发送的。其他人无法伪造对报文的签名。这就叫做报文鉴别。

(2) 接收者确信所收到的数据和发送者发送的完全一样而没有被篡改过。这就叫做报文的完整性。

(3) 发送者事后不能抵赖对报文的签名。这就叫做不可否认。

为了进行签名,A用其私钥SKA对报文X进行D运算。D运算本来叫做解密运算。还没有加密怎么就进行解密呢?这并没有关系。因为 D 运算只是得到了某种不可读的密文。A把经过D运算得到的密文传送给B。B为了核实签名,用A的公钥进行E运算,还原出明文X。请注意,任何人用A的公钥PKA进行E运算后都可以得出A发送的明文。

数字签名通常是用非对称公开密钥技术产生的。

数字签名为什么具有上述的三点功能。因为除A外没有别人持有A的私钥SKA,所以除A外没有别人能产生密文[插图]。这样,B就相信报文X是A签名发送的。这就是报文鉴别的功能。同理,其他人如果篡改过报文,但并无法得到A的私钥 SKA来对X进行加密。B对篡改过的报文进行解密后,将会得出不可读的明文,就知道收到的报文被篡改过。这样就保证报文完整性的功能。若A要抵赖曾发送报文给B,B可把X 及[插图]出示给进行公证的第三者。第三者很容易用PKA去证实A确实发送X给B。这就是不可否认的功能。这里的关键都是没有其他人能够持有A的私钥SKA

数字证书

假如你想访问一个网站,怎么确保对方给你的公钥是你想访问的网站的公钥,而不是被中间人篡改过的?

数字证书的出现就是为了解决这个问题,它是由数字证书认证机构颁发的,用来证明公钥拥有者的身份。换句话说,数字证书的作用就相当于人的身份证,身份证证明了张三就是张三,而不是别人。

SSL/TLS

● 安全套接字层SSL (Secure Socket Layer)

● 运输层安全TLS (Transport Layer Security)

SSL提供的安全服务可归纳为以下三种:

(1) SSL服务器鉴别,允许用户证实服务器的身份。支持SSL的客户端通过验证来自服务器的证书,来鉴别服务器的真实身份并获得服务器的公钥。

(2) SSL客户鉴别,SSL的可选安全服务,允许服务器证实客户的身份。

(3) 加密的SSL会话,对客户和服务器间发送的所有报文进行加密,并检测报文是否被篡改。

SSL的工作过程

(1) 协商加密算法。浏览器A向服务器B发送浏览器的SSL版本号和一些可选的加密算法,B从中选定自己所支持的算法,并告知A。

(2) 服务器鉴别。服务器B向浏览器A发送一个包含其RSA公钥的数字证书,A使用该证书的认证机构CA的公开发布的RSA公钥对该证书进行验证。

(3) 会话密钥计算。由浏览器A随机产生一个秘密数,用服务器B的RSA公钥进行加密后发送给B。双方根据协商的算法产生一个共享的对称会话密钥。

(4) 安全数据传输。双方用会话密钥加密和解密它们之间传送的数据并验证其完整性。