HTTPS学习笔记

1.HTTPS意义

HTTPS=HTTP+TLS,是为了解决HTTP不安全传输而出现的解决方案,协议层次为:HTTP -> TLS -> TCP -> IP。HTTPS是普通的HTTP和TLS的结合。如:
当请求https://en.wikipedia.org/wiki/Cipher_suite这个网址时,HTTP和HTTPS的区别对比


2.HTTPS原理


上图引用RFC 5246,仅仅是TLS handshake部分。

提取几个常用的message : ClientHello,ServerHello,Certificate(from server),ClientKeyExchange。(其他message不熟悉,略。)
以上几个message对应了大家常看到的几个阶段:
1.hello phase:ClientHello,ServerHello;
2.certificate:Certificate(from server);
3.key exchange:ClientKeyExchange。

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






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值