公钥 公开的密钥
私钥 私有的密钥
加密:保证传输内容不被他人窃取。
1.对称密钥加密 使用同样的密钥进行通信,传输速度快,但是无法保证密钥安全的交给对方。
2.非对称密钥加密 使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密,速度相对稍慢。
可以使用非对称加密把通信密钥传给对方,双方使用这个密钥对称加密通信,既保证安全又保证速度。
签名:用于证明签名的信息是签名方发出的。
签名由私钥加密,公钥解密。
认证:保证接收方或者发送方所持有的对方的公钥是正确的。
当某一方想要发布公钥时,它将自身的身份信息及公钥提交给数字证书认证机构(CA,Certificate Authority),第三方对其身份进行证实,如果没有问题,则对公钥签名并将其和提供公钥方的信息打包成为证书(Certificate)。
进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就使用这个公钥进行加密通信。Web服务器得到密文后,再使用私钥对密文进行解密,最终得到用户的原文信息。由于用于解密的私钥从始至终都为公开,不会被第三者所得到,因此密文信息也不可能被破解,所以使用HTTPS证书的网站我们都认为是安全可靠的(但前提是私钥不会被泄露)。
报文摘要:进行完整性保护
SSL 提供报文摘要功能来进行完整性保护。报文摘要是指单向哈希函数算法将任意长度的输入报文经计算得出固定位的输出称为报文摘要.所谓单向是指该算法是不可逆的找出具有同一报文摘要的两个不同报文是很困难的。
HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改。
HTTPS 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。