HTTPS学习笔记
1.HTTPS意义
2.HTTPS原理
TLS的安全可以从两个维度去考察:
1.Identical:确保连接的服务器就是你想要连接的服务器。
2.encryption:保证数据被加密以及防篡改。
那么上面的3个phase和这两个考察维度是什么关系呢?
1.phase1是准备阶段(个人对1和2的顺序不是特别理解,为什么不是先2后1呢?)
2.phase2对应【Identical】
Identical的保证方法:
当收到来自服务器的证书之后,会判断这个证书的可信任性,如何判断可信任性:
1.证书来自信任机构;
2.由上述机构授权。
方法如下:
首先每一个证书都包含相关信息,如:公司信息,public key等,这个信息会被hash,然后被信任机构对这个hash生成一个数字签名。当从服务器获取到证书之后,会根据这个签名和证书信息做对比,如果一致,说明证书是可信任的。(如果这个签名被伪造,那么必须满足条件CA_PUK_decrypt(signature) = hash(original),但是想要知道什么样的original才能生存这样的hash值几乎是不可能的,这也说明了为什么需要先hash,如果没有hash,那么CA_PUK_decrypt(signature) = original,那么伪造签名之后,可以直接得出original)。
3.phase3对应【encryption】
在这个阶段,client会生成premaster secret,然后使用证书中的Public key加密并签名,传输给服务器端,服务器端使用证书的private key解密并验证签名,获得这个premaster secret。然后client和server根据这个premaster secret就会生成master secret,这个secret会被用于后续数据传输的对称加密。(个人观点:证书的作用是为了传输这个premaster secret,使用对称加密,因为对称加密更快一些。至于为什么不使用premaster secret,而要进一步生成一个master secret,不得而知。)
cipher suite:
包括encryption,and MAC algorithms
加密(encryption):数据即使被拦截也不会知道具体内容;
防篡改(MAC):虽然加密可以隐藏具体消息,但是如果直接把加密后的消息改了也是不正确,所以需要数字签名保证消息没有被修改。
参考文献:
1.http://robertheaton.com/2014/03/27/how-does-https-actually-work/
2.RFC_5246
3.https://en.wikipedia.org/wiki/Cipher_suite