https的过程以及为什么安全

文章详细描述了HTTPS连接中的客户端与服务器之间的认证流程,包括随机数交换、证书验证、会话密钥生成与加密,以及CA在确保安全中的关键作用。强调了证书的权威性及公钥私钥体系在防止冒充和窃听中的作用。
摘要由CSDN通过智能技术生成

一、客户端发送以下信息给服务器:随机数R1,自己支持哪些加密算法。

二、服务器收到客户端的信息后,发送以下信息给客户端:随机数R2。选择的加密算法。证书(证书中包含了服务器的公钥,证书属性(如颁发日期等),CA的数字签名(首先对证书的其他部分做摘要,然后用CA的私钥对摘要进行加密,数字签名就是这个加密后的摘要)。这里发的所有内容都是明文。

三、客户端收到服务器的信息后:

2.1 首先,验证CA是否颁发过此证书给某个合法服务器。

他首先从CA处获得公钥,然后用公钥解密数字签名。然后用与CA同样的摘要算法对证书其他部分做摘要。如果一样,就可以证明证书确实是由CA颁发的。因为如果一个数字签名不是由CA的私钥加密的,CA的公钥解密出来的摘要就和客户自己对证书其他部门的摘要不同。然而,其他人几乎不可能有CA的私钥,所以他就无法冒充CA颁发证书。但这里的前提是,客户手上的CA的公钥,是真真正正的CA的公钥,而不是冒充的CA的公钥。要做到这点,只需要操作系统出厂时,由可信的操作系统厂商把真正的CA公钥提前注入到系统中即可。
为什么我把2.1 表述成验证CA是否颁发过此证书,而不是此证书是否由CA颁发?因为后者曾经让我认为,冒充合法服务器持有的合法服务器证书的副本,客户端能够识别他是冒充的(这句话的意思是,如果证书是从合法服务器发来的,那么”此证书是否由CA颁发?"的回答是肯定的,如果从非法服务器发过来的,则回答是否定的)。实际上,无论是从合法服务器还是冒充服务器发过来的合法服务器证书,他们在二进制上都是一模一样的,客户端根本无法区分他们是从哪里来的。客户端能知道的只是,CA有没有颁发过这个证书给某个合法服务器。如果颁发过,客户端可以确信不是某个冒充的CA颁发的。证书的作用是用权威机构的信誉担保一个服务器标识是值得信任的,因为CA会对申请证书的人严格审核。但他不能证明,能出示这份证书的服务器,就是真正的服务器。这就像,你通过严格考试拿到了驾照,这个驾照能证明你会开车。但是,这个驾照不能证明能出示他的人就是这个驾照真正的主人,因为一个和你长得一模一样的人(假设有),复印了你的驾照(假设复印得一模一样),他也能出示驾照。虽然这个副本驾照不是权威机构颁发的,但你区分不出来。只能说权威机构颁发过此驾照给某个合法的人。其实,这个和你拿着证书其他部分去CA网站问他有没有颁发过这个证书,效果是一样的。但为什么不选择直接去网站问这个简单的方案呢?首先,去问这个方案是在线的,CA必须有能力承受如此大的访问量,如果所有的https请求都要问一次CA。那CA可受不了。其次,你无法保证,你问的CA是真的CA。你总是需要时再去问,而且每天可能都问好多次(每次问都是不同的内容),只要有一次你问到了假的CA,假的CA给你做假证说你访问网站是合法的网站,但实际上那个网站是钓鱼网站。那就出事了。那既然客户端无法识别这个证书到底是合法服务器出示的,还是冒充服务器出示的,他怎么建立安全的通信呢?别急,下面的步骤能够保证客户端能够让客户端确信对方是真的服务器而不是冒充服务器。

2.2 如果2.1回答是肯定的,那么客户端会继续检查证书的属性,比如证书是否过期,是否被吊销(通过向CA官网接口查询,虽然这一步可能查到假信息,但不影响,因为后面还会有更有利的保护措施(见四),这一步的目的是,如果这一步都通不过,就不需要更有利的措施了),域名是否匹配。

2.3 如果2.2检查通过,利用之前的随机数生成会话密钥,并用服务器证书中的公钥以及对应的加密算法(我想证书里应该会有这个信息吧)加密会话密钥,最终把加密后的内容发回给服务器。

四、服务器收到加密的会话密钥后,用自己的私钥解密得到会话密钥。这个会话密钥是对称的。

如果是冒充服务器给客户端发送证书的副本,到这一步,冒充服务器就没办法了,因为他不知道服务器的私钥,无法解密得到会话密钥,后面就无法理解客户端发来的消息,也无法回复客户端的消息。这样客户端就知道对方不是真正的服务器了。

五、客户端与服务器使用会话密钥加密通信。

CA的作用补充

步骤2.1 和步骤四是闭环。如果没有CA,那么任何人都可以自己做一个证书出来,客户端无法辨别这个证书是否是合法的。就算有CA,如果CA不给力,那么冒充服务器还是可以偷听。具体步骤如下:他可以替换掉证书中的服务器公钥,改成自己的公钥,这样他就能在步骤四中解密会话密钥。但替换公钥就是换了一本证书,如果CA不给他重新签名,客户端在步骤2.1中就能查出来证书与签名不匹配。如果CA给他重新签名了,他就能偷听客户端与服务器的对话了。如果CA非常不给力,直接给了冒充服务器一本证书,那么这个冒充服务器理论上就可以偷听任何https的内容了。具体偷听原理如下:假设这个冒充服务器是客户端与服务器通信的必经节点。客户端向服务器发起https请求经过冒充服务器时,冒充服务器把自己的证书给客户端,同时他自己又向正在服务器发起https请求。客户端看到回来的是CA颁发的证书,就把会话密钥用证书上的公钥加密,发送回去。这时候冒充服务器可以解密得到会话密钥,于是,客户端说的话,冒充服务器就听得懂了。冒充服务器把客户的话转述给真正的服务器,正在的服务器把内容返回给冒充服务器,冒充服务器把消息转述给客户端。这个过程中,由于冒充服务器知道他们在说什么,所以可以把信息存下来,甚至在转述时篡改信息了。在这套安全体系下,CA必须完全可靠。CA一旦给攻击者颁发了证书,整个体系就不安全了。

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值