码迷,mamicode.com
首页 > Web开发 > 详细

Https个人总结

时间:2018-08-02 20:46:03      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:voc   怎么办   浏览器   开始   查询   执行   需要   数字签名   不能   

花了一个星期终于搞懂了..

 

HTTPS个人总结:

一、RSA算法

技术分享图片

 

公钥:可以分发给任意的钥匙

私钥:自己保留起来,不分发给别人的钥匙

 

RSA算法:

  1. 找出质数p、q
  2. n = p*q
  3. Φ(n)=(p-1)*(q-1)
  4. 公钥e 要求 1<e<Φ(n) 并且e和Φ(n)互质
  5. 私钥d 要求e*d除以Φ(n)余数为1
  6. 密文C:m^e 除以 n 求余数C
  7. 明文m:c^d 除以n 求余数m

 

举例:

  1. p、q: 3 17
  2. p*q: 51
  3. Φ(n):32
  4. 公钥e取11
  5. 私钥: 11*d/32 … 1

d取3

明文m取5

  1. 密文c:5^11/51 … 11
  2. 明文m:11^3/51 … 5

 

二、加密过程: (公钥e加密 私钥d解密)

A---->B  假设A要把消息m传给B

 

1.首先B要生成n、Φ(n)、e、d、C,

 

2.B把e(公钥) n(大数)传播给A,

 

3.消息m用e和n加密 就可以得到c,所以两个人之间通信传播的是: n e c

 

B有私钥d 所以只有B可以解密。

 

 

三、数字签名:

A<----B  假设B要把消息m传给A,他想附上签名

 

  1. 对消息进行哈希计算(一般不直接对消息进行签名,而是对消息哈希值进行签名)
  2. 用私钥对哈希值进行加密,生成签名
  3. 将签名附加再消息后面,一起发送过去

 

这个过程也涉及了RSA

 

B首先生成了 n Φ(n) 公钥e 私钥d

B将消息m用 d 加密生成签名s

然后将公钥传播给网络间任意的人。

 

根据RSA算法原理… e和d其实是对称的,知道哪一个都可以求出另一个,

 

现在所有人都可以解密,

假设B把 明文m  公钥e和签名s 给了A

 

A可以用公钥e来解密S ,得到m的哈希值

然后自己再给m进行哈希,发现两个哈希值一样,因为只有B有私钥,只有B才能进行签名(用私钥加密) 所以证明了消息m是B签名的

 

四、证书:

证书实际上是对公钥进行数字签名,对公钥合法性提供证明的技术。

 

窝们对签名进行验证时,需要用到公钥,如果公钥是伪造的,那怎么办?

这时候证书就派上用场了

 

证书一般包含:

*公钥(证书中是带有公钥的)

*公钥的数字签名

*公钥拥有者的信息

 

若证书验证成功,这表示公钥是合法,可信的。

 

认证机构(Certification Authority,CA)

CA就是能够认定”公钥确实属于此人,并能生成公钥数字签名的组织或机构

 

生成证书:

服务器将公钥A给CA(公钥是服务器的)”

CA用自己的私钥B给公钥A加密,生成数字签名A

CA把公钥A,数字签名A,附加一些服务器信息整合在一起,生成证书,发回给服务器。

 

然后服务器将公钥,签名和证书发给客户端,

 

验证证书:

客户端得到证书

客户端得到证书的公钥B(通过向CA请求)

客户端用公钥对数字签名解密得到哈希值

客户端对公钥进行哈希值计算

两个哈希值对比,如果相同,证明证书合法,服务器的公钥也是可信的。

 

证书作废,当服务器私钥丢失,被盗时,认证机构需要对证书进行作废(revoke)

要作废证书,认证机构需要制作一张证书作废清单(Certificate Revocation List) 简称CRL

 

假设有Bob的证书,证书有合法的认证机构签名,而且再有效期内,但仅凭这些还不能说明证书一定有效,还需要查询认证机构最新CRL,并确认该证书是否有效。

 

五、HTTPS:

 

SSL 协议既用到了公钥加密技术又用到了对称加密技术。

 

资料1:

①    客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。

②    服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。

③    客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。

④    用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。

⑤    如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。

⑥    如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥能否正确解开客户证书的发行CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。

⑦    服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于SSL 协议的安全数据通讯的加解密通讯。同时在SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。

⑧    客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。

⑨    服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。

⑩    SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。

 

资料2:

技术分享图片

 

 

资料1和资料2的区别是资料2中使用了不同的对称密钥, 资料1使用了相同的对称密钥,可能这个差别是在协商的过程中产生的。

Https个人总结

标签:voc   怎么办   浏览器   开始   查询   执行   需要   数字签名   不能   

原文地址:https://www.cnblogs.com/eret9616/p/9409198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!