理解https
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。这是百度百科上HTTPS的定义。
说起https,首先要说一下两种数据加密方式:对称加密与RSA(非对称加密)
对称加密算法
如上图所示,加密算法与解密算法用的同一个秘钥,这种加密方式是在一定程度上保证了会话的安全,但是秘钥该如何传递呢,我们知道http是明文传递数据的,如果直接通过http传递秘钥,被第三方劫持,那么数据就没有安全性可言。通过线下的方式传递秘钥?如果有成千上万个客户端,不可能都通过线下的方式完成。所以我们并不能直接依靠对称加密的方式来保证会话的安全性。
RSA(非对称加密算法)
1976年以前,所有的加密方法都是同一种模式就是对称加密,这种模式最大的缺点就是甲方必须把加密规则告诉乙方,否则无法解密。保存和传递密钥,就成了最头疼的问题。
1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。这被称为"Diffie-Hellman密钥交换算法"。这个算法启发了其他科学家。人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。这种新的加密模式被称为"非对称加密算法"。
- 乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。
- 甲方获取乙方的公钥,然后用它对信息加密。
- 乙方得到加密后的信息,用私钥解密。
但是由于RSA算法进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。RSA的速度比对应同样安全级别的对称密码算法要慢1000倍左右。