HTTPS理解
作用:
1. 证书:证明要访问的域名是真实的域名,不是被黑客冒充的假网站。
2. 加密:避免中间人攻击,避免内容被中间人获取。
证书中包含的信息:
1. RSA公钥
2. 证书签发机构,对证书的签名(指纹)
3. 签名算法,带RSA加密的SHA256
使用过程:
1. 密钥协商:客户端(浏览器)随机生成AES密钥,使用RSA公钥加密,发送给服务端,服务端使用私钥解密。得到AES密钥。
2. 数据加密:使用AES对数据加密。
3. 生成摘要:对数据进行SHA256算法,生成数据的摘要。并使用RSA私钥对摘要进行签名。
Q:为什么不直接是用RSA进行非对称加密?
A:为了性能,RSA跟AES相比运行效率存在十几倍的差距。
Q:为什么要对摘要进行SHA256生成摘要,直接对内容进行签名不行吗?
A:也是为了性能,RSA非对称加密算法性能跟SHA相比差存在十倍的差距。先生成摘要,可以让RSA签名的数据变小。
Q:为什么要生成摘要和签名?数据不是已经加密了吗?
A:防止中间人攻击,中间人可以获得AES密钥,篡改数据。但中间人密钥RSA私钥,无法对摘要进行签名。