HTTPS原理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lzghxjt/article/details/79604602

如果对对称加密和非对称加密还不太了解,请先了解《通信加密原理》:https://blog.csdn.net/lzghxjt/article/details/98444934

一、数字签名与数字证书:

1、鲍勃有两把钥匙,一把是公钥,另一把是私钥。

2、鲍勃把公钥送给他的朋友们:帕蒂、道格、苏珊,每人一把。

3、苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。

4、鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

5、鲍勃给苏珊回信,决定采用数字签名。他写完后先用Hash函数对信件内容进行处理后生成信件的摘要(digest)。

6、然后鲍勃使用私钥,对这个摘要加密,生成“数字签名”(signature)

7、鲍勃将这个签名,附在信件下面,一起发给苏珊。

8、苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。

9、苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。

10、复杂的情况出现了:道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥(不是鲍勃给道格的公钥)换走了鲍勃给苏珊的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成数字签名,写信给苏珊,让苏珊用假的鲍勃公钥(实际是道格的公钥)进行解密。

11、后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找证书中心certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成数字证书”Digital Certificate)。

12、鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

13、苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明数字签名是否真的是鲍勃签的。

数字签名:

        用私钥对发送的信息的hash值进行加密,得到的加密数据就是数字签名。我们最常见到的是CA对数字证书进行签名。数字签名的作用是可以检查数据在传输过程中是否被人篡改,因为如果篡改了,那hash值必定会变化,就与数字签名解密后的值不一样了,而由于篡改者没有CA私钥,所以没法重新生成数字签名。你可能会问,当信息量很大时,直接对信息加密(以及客户端收到信息后解密)太耗时,所以用信息的hash值。

数字证书:

        里面包含服务器公钥信息、公钥信息和证书信息的数字签名以及颁发者、有效期、使用者common name-简称CN。一般来说,我们会使用权威CA认证颁发的数字证书,该证书中附加的数字签名就是CA用自己的私钥对“证书中的公钥和证书信息”的hash值加密后得到的。我们可以看到,数字证书本身是没有加密的,只是附加了一个数字签名而已,因此,在传输过程中别人是可以窃取的,不过没有关系,我们在传输数字证书时,主要是防止别人的篡改和冒充,保证公钥就是客户端所访问的服务器发来的公钥,而没有被人篡改,也没有被冒充。我们可以通过检查数字签名来保证没有被篡改,通过该证书的颁发者是否为权威CA以及common name是否为http request header中的host(不包括端口)来保证没有被别人冒充。

二、HTTPS原理:

       https协议:(http+ssl)顾名思义,https是在http的基础上加上SSL保护壳,信息的加密过程就是在SSL中完成的。这个协议主要用于网页加密,默认端口是443。

1、首先客户端向服务器发出加密请求。

2、服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。

3、客户端(浏览器)的证书管理器”,有受信任的根证书颁发机构列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。

4、如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

 

5、如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

 

6、如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行解密加密,然后与服务器交换加密信息。

三、SSL与SSL证书

        SSL(全称:Secure Sockets Layer,安全套接层)及其继任者TLS(全称:Transport Layer Security,传输层安全),是为网络通信提供安全及数据完整性的一种安全协议。SSL和TLS在传输层对网络连接进行加密。

        SSL证书:就是遵守SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。SSL证书等级分以下几级:

                1、DV域名验证型SSL证书:该证书仅审核证书申请人对域名的所有权,电子证书认证机构 (CA) 仅审核证书申请人对域名的所有权,不会对企业相关信息进行审核,除了网站的加密信息外, 不会显示其他信息。

                2、OV组织验证型SSL证书:CA会审核证书申请人对域名的所有权,并且会对组织部分信息进行审核。当点击网站认证标章时会显示附加审核公司的信息给客户,可以明显地告诉客户网站背后的公司,增强了用户之间的信任。

                3、EV扩展延伸型SSL证书:CA会审核证书申请人对域名的所有权,以及详细的企业/组织相关信息。EVSSL证书是普通SSL证书升级版,部署了普通SSL证书后,浏览器将会出现安全锁型标记,提示消费者网站采用了加密链接技术。而EVSSL证书区别普通证书的最大特点是客户登陆网站时将更加清晰识别网站真实身份。部署过EVSSL证书之后,在地址栏还会动态显示企业名称。

 

转自:http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

           http://www.youdzone.com/signature.html

展开阅读全文

没有更多推荐了,返回首页