加密方式 #
- 对称加密:客户端和服务器共用同一个密钥,可以用于加密一段内容,可以用于解密这段内容。
- 优点:加解密效率高。
- 缺点:安全性方面可能存在一些问题,因为密钥存放在客户端有被窃取的风险
- 对称加密的代表算法有:AES、DES等。
- 非对称加密:它将密钥分成了两种(公钥和私钥)。公钥通常存放在客户端,私钥通常存放在服务器。使用公钥加密的数据只有用私钥才能解密,反过来使用私钥加密的数据也只有用公钥才能解密。
- 优点:是安全性更高,因为客户端发送给服务器的加密信息只有用服务器的私钥才能解密,因此不用担心被别人破解。
- 缺点:加解密的效率相比于对称加密要差很多。
- 非对称加密的代表算法有:RSA、ElGamal等。
HTTPS #
HTTPS (全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与TCP之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。
相关概念 #
- key:一般指私钥
- CSR(Certificate Signing Request):即证书签名申请,这不是证书,这是要求CA给证书签名的一种正式申请,该申请包含申请证书的实体的公钥及持有人的国家、邮件、域名等信息。该数据将成为证书的一部分。CSR始终使用它携带的公钥所对应的私钥进行签名。
- CRT、CER(Certificate):证书
- PEM:证书或私钥的Base64文本存储格式,可以单独存放证书或私钥,也可以同时存放证书和私钥
- DER:证书或私钥的二进制存储格式,可以单独存放证书或私钥,也可以同时存放证书和私钥
- JKS:JAVA的keytools证书工具支持的证书和私钥格式,它包含了公钥和私钥,并且可以通过keytool工具来将公钥和私钥导出。
HTTPS的理解思路 #
普通HTTP协议流程如下:
没有任何加密手段,网站发送的消息hello经过中间路由被篡改为world
如果使用对称加密流程如下:
此时有个问题,浏览器和服务器之间在第一次通信的时候,怎么共享密钥A,必定需要明文传递,容易被中间路由捕获
如果引入非对称加密,私钥保存在服务器、公钥发送给浏览器,浏览器再使用公钥对对称加密密钥A进行加密后发送给服务器,服务器使用私钥进行解密,即可获取本次会话的密钥A,流程如下:
但是这样的话,如果浏览器获取服务器首次发送的公钥被掉包,那么就会引起问题
此时就引出了,CA机构,CA机构专门用于给各个网站签发数字证书,保证浏览器可以安全地获得各个网站的公钥。
从CA机构获取数据就安全了吗,不会被掉包吗?
其实,世界上的网站是无限多的,而CA机构总共就那么几家。任何正版操作系统都会将所有主流CA机构的公钥内置到操作系统当中,所以我们不用额外获取,解密时只需遍历系统中所有内置的CA机构的公钥,只要有任何一个公钥能够正常解密出数据,就说明它是合法的。
https流程 #