对称加密与非对称加密
1.对称加密
对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。
具体算法:DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。
优势:加密效率高
劣势:安全性低
2.非对称加密
非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。目前最常用的非对称加密算法是RSA算法。
3.RSA算法
RAS属于非对称加密。基于大数的因式分解数学难题,采用欧拉定理(具体可以查看http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html)
1.RSA加密解密:
(1)获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 (2)加密 (3)解密
2.RSA签名和验证
(1)获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 (2)获取待签名的Hash码 (3)获取签名的字符串 (4)验证
4.SSH
ssh 是是种通用的网络传输加密机制。
ssh 分为两个阶段:授权阶段,通信阶段。
阶段1:授权阶段
只涉及到对称加密,用户在自己的客户端机器上生成一组公钥和私钥对。将公钥拷贝到服务器上。当客户端发起登陆请求时需要选取本地密钥,服务器返回发送一个随机字符串给客户端,客户端对这个随机字符串用私钥加密发给服务器端。
服务器端用公钥解密客户端发过来的加密字符串,让后比对解密后的字符串与原始字符串一致,如果一直表示授权成功。否则表示授权失败。
阶段2:通信阶段
涉及到非对称加密与对称加密。我们知道非对称加密加密效率低下,但安全性高,而对称加密,效率高,而安全性较低,将两个结合是一个不错的主意。过程如下
-
首先服务端会通过非对称加密,产生一个公钥和私钥;
-
在客户端发起请求时,服务端将公钥暴露给客户端,这个公钥可以被任意暴露;
-
客户端在获取公钥后,会先产生一个由256位随机数字组成的会话密钥,这里称为口令;
-
客户端通过公钥将这个口令加密,发送给服务器端;
-
服务器端通过私钥进行解密,获取到通讯口令;
-
之后,客户端和服务端的信息传递,都通过这个口令进行对称的加密。
个人感觉,这样的设计在一定程度上提高了加解密的效率,不过,与客户端服务端各构建一套密钥对的加解密方式相比,在安全性上可能有所下降。在上面所述的通过口令进行加密的过程中,数据也是可以被窃听的,不过由于密钥是256个随机数字,有10的256次方中组合方式,所以破解难度也很大。相对还是比较安全的。服务端和客户端都提前知道了密钥,SSH的这种方式,服务端是通过解密获取到了密钥。
5.Https
https 实际就是 http + ssl (ssl 与ssh 通信阶段原理类似)
设计到对称加密与非对称加密(详细 查看另外一篇博客 Https工作原理)