-
HTTP与HTTPS的区别:
- HTTPS在TCP和HTTP网络层之间加入了SSL/TLS安全协议层。这个安全协议层可以对数据进行加密,确保数据在传输过程中的安全。
- HTTPS在TCP三次握手之后,还需进行SSL/TLS的握手过程。这个握手过程主要是为了在客户端和服务器之间建立一个安全的连接,并且交换用于加密数据的密钥。
- HTTP默认端口号是80,HTTPS默认端口号是443。这两个端口号是由互联网标准组织分配的,用于区分不同的服务。
-
HTTPS解决的风险:
- 窃听风险:HTTPS通过加密数据来防止数据在传输过程中被窃听。
- 篡改风险:HTTPS通过数字签名来确保数据在传输过程中不会被篡改。
- 冒充风险:HTTPS通过使用数字证书来防止服务器被冒充。
-
密码学前提:
- 对称加密:对称加密是一种加密方法,它使用同一个密钥进行加密和解密。这种方法的优点是速度快,但缺点是密钥需要在网络上安全地传输到接收方。常见的对称加密算法有AES。
- 非对称加密:非对称加密是一种加密方法,它使用一对密钥进行加密和解密。公钥可以公开,私钥不可泄漏。公钥加密,私钥解密。只有私钥才能解密,保证安全。私钥加密,公钥解密。保证消息是私钥持有者发出。常见的非对称加密算法有RSA、DH、ECC。
- 摘要算法(哈希函数):摘要算法是一种将任意长度的数据映射到固定长度的数据的方法。哈希值可以作为内容的标识,通过哈希值无法推出原文。
-
HTTPS的机制:
- 混合加密:HTTPS首先使用非对称加密的方式交换会话秘钥,然后使用这个会话密钥(对称密钥)对数据进行加密。这样既利用了非对称加密解决密钥交换问题的优点,又利用了对称加密速度快的优点。
- 摘要算法 + 数字签名:HTTPS会对数据进行哈希,得到一个哈希值,然后使用私钥对这个哈希值进行加密,得到数字签名。这样就可以保证数据在传输过程中不会被篡改,因为即使数据被篡改,哈希值也会改变,数字签名就无法验证通过。
- 数字证书:数字证书是由数字证书认证机构(CA)颁发的,用于证明公钥的所有者的身份。数字证书中包含了公钥、所有者的信息、颁发者的信息、有效时间等内容,以及CA使用自己的私钥对这些信息加密得到的数字签名。客户端在建立HTTPS连接时,会验证服务器的数字证书:首先,哈希打包信息得到哈希值。然后,使用CA公钥解密Certificate Signature。如果两个哈希值相同,则证书可信。