对称加密:加密和解密使用的是同一个密钥,信息接收双方都需事先知道这个密钥(最常见的对称加密算法是DES、AES)。
温馨提示:阅读下面内容请对照此网站内的图片,有助于理解。 http://www.blogjava.net/yxhxj2006/archive/2012/10/15/389547.html
非对称加密:加密和解密用的是不同的密钥(最常用的非对称加密算法是RSA)。是一对密钥,公钥和私钥,公钥对外公开,私钥由自己保存,公钥可以有很多份拷贝,好比多客户端和单一服务器的网络拓扑结构,每一个客户端上都有一个公钥,服务器有一个私钥,而这个公钥,是服务器发给客户端的。客户端用公钥解密接受来的密文,而这个密文是服务器用私钥加密的。相反,如果客户端向服务器发送请求,客户端是用服务器发来的公钥加密,服务器接收到密文后,用自己的私钥去解密。
1.非对称加密之数字摘要:是采用单向的(不可逆)Hash函数将需要加密的明文加密成一串固定长度(128位)的密文,这一串密文又称为数字指纹,因为不同的明文形成的摘要不同,而相同的明文形成的摘要必定相同。所以叫数字指纹比较贴切。数字摘要是https确保数据完整性和防篡改的根本原因。(Hash函数包括MD5、SHA这些不属于加密算法,因为是不可逆的,只能相当于指纹,而加密算法是可逆的。Base64也是可逆的。)
2.非对称加密之数字签名:做了非对称加密和数字摘要后,用自己的私钥对数字摘要加密后就是“数字签名”,简单的说就是,经过私钥加密的数字摘要就是数字签名。可以把数字签名附到明文上。
这时候发送的密文中就有数字摘要和数字签名,接受者只要用发送者的公钥就能解密签名,得到摘要信息,然后用Hash函数对收到的原文处理产生一个摘要信息,与解密的摘要信息对比。如果相同,说明收到的信息是完整的,在传输的过程中没有被修改。数字签名只能够验证信息的完整性,数据本身是否加密不属于数字签名的控制范围。
3.非对称加密之数字证书:只从“明确发送者身份”和“确保数据完整性”,数字签名就可以完全做到了,但是前提是数字签名所依赖的密钥是真是可靠的才可以。如果接受方所持有的公钥来路有问题或是被替换了,那么,持有对应私钥的人就可以冒充发送方发送明文给接受方,但是接收方并不知道。这里的问题就是:对于接受方来说,它怎么能确定它所得到的公钥一定是从目标主机那里发布的,而且没有被篡改过呢?这时候,我们需要有一个权威的值得信赖的第三方机构(一般是由政府审核并授权的机构)来统一对外发放机构公钥,只要发送方有这种机构的公钥,就避免了上述问题的发生。这种机构被称为证书权威机构(Certificate Authority, CA),它们所发放的包含主机机构名称、公钥在内的文件就是人们所说的“数字证书”。
数字证书的颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布。数字证书各不相同,每种证书可提供不同级别的可信度。可以从证书发行机构获得您自己的数字证书。
SSL:是安全协议,SSL建立通信的过程分为两个阶段:握手阶段和传输阶段。下图为握手阶段。
SSL协议在握手阶段使用的是非对称加密(上面介绍的很清楚),在传输阶段使用的是对称加密(简单不多赘述),也就是说在SSL上传送的数据是使用对称密钥加密的!这并不奇怪,因为非对称加密的速度缓慢,耗费资源。其实当客户端和主机使用非对称加密方式建立连接后,客户端和主机就已经决定好了在传输过程中使用的对称加密算法和对称加密密钥,由于这个过程本身是安全可靠的,所以对称加密密钥是不可能被窃取的,因此,保证了在传输过程中对数据进行对称加密也是安全可靠的,因为除了客户端和主机之外,不可能有第三方窃取并解密出对称加密密钥!
HTTPS:HTTPS是由SSL+HTTP协议构建的可进行加密传输、身份认证(确认客户端连接的主机是否是真实正确的主机)的网络协议。HTTPS所能实现的安全保证,正式SSL的功劳。
HTTPS劣势:
https的主要缺点就是性能问题。造成https性能低于http的原因有两个:
1.对数据进行加解密决定了它比http慢。
2.另外一个重要原因的是https禁用了缓存。
相关测试数据表明使用HTTPS协议传输数据的工作效率只有使用HTTP协议传输的十分之一。因此对于一个网站来说,只有那对那些安全要求极高的的数据才会选择使用https进行传输。
网友评论