对称加密(Symmetric Cryptography),又称私钥加密
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法。
对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。对称加密通常使用的是相对较小的密钥,一般小于256 bit。
因为密钥越大,加密越强,但加密与解密的过程越慢。
如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;
但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。
密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。
非对称加密(Asymmetric Cryptography),又称公钥加密
1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,
允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。
相对于“对称加密算法”这种方法也叫做“非对称加密算法”。
非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。
私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。
非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。
与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。
混合加密机制
即先用计算复杂度高的非对称加密协商一个临时的对称加密密钥(会话密钥,一般相对内容 来说要短的多),
然后双方再通过对称加密对传递的大量数据进行加解密处理。
典型的场景是现在大家常用的 HTTPS 机制。HTTPS 实际上是利用了 Transport Layer Security/Secure Socket Layer(TLS/SSL)来实现可靠的传输。
TLS 为 SSL 的升级版本,目 前广泛应用的为 TLS 1.0,对应到 SSL 3.1 版本。
建立安全连接的具体步骤如下:
客户端浏览器发送信息到服务器,包括随机数 R1,支持的加密算法类型、协议版本、压 缩算法等。注意该过程为明文。
服务端返回信息,包括随机数 R2、选定加密算法类型、协议版本,以及服务器证书。注 意该过程为明文。
浏览器检查带有该网站公钥的证书。该证书需要由第三方 CA 来签发,浏览器和操作系统 会预置权威 CA 的根证书。如果证书被篡改作假(中间人攻击),很容易通过 CA 的证书 验证出来。
如果证书没问题,则用证书中公钥加密随机数 R3,发送给服务器。此时,只有客户端和 服务器都拥有 R1、R2 和 R3 信息,基于 R1、R2 和 R3,生成对称的会话密钥(如 AES 算法)。后续通信都通过对称加密进行保护。
AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。
在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。
密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同。
详细参见:https://blog.csdn.net/qq_28205153/article/details/55798628
RSA非对称加密算法
RSA加密算法是现在世界上运用最广泛的非对称加密算法,比如常用的https协议、银行交易等等。详细参见:
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
非对称加密:传递公钥,用公钥加密,用私钥解密。
非对称密钥加密的使用过程:
1. A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。
2. A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
3. A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
4. A将这个消息发给B(已经用B的公钥加密消息)。
5. B收到这个消息后,B用自己的私钥解密A的消息,其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
6. 反过来,B向A发送消息也是一样。
混合加密机制:先用非对称加密传递对称加密的密钥,然后再用对称加密传递信息。
解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。