SSL

web安全传输协议

Posted by Lan on June 24, 2019

SSL是用于web的安全传输协议

SSL

SSL(Secure Socket Layer)安全套接字协议是web浏览器与web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密,在web上有广泛的应用。

Https就是基于HTTP,利用SSL/TLS进行加密处理的 参考:https://blog.csdn.net/xiaoming100001/article/details/81109617

特性:

  1. 保密:在握手协议中定义了会话秘钥后,所有的消息都被加密
  2. 鉴别:可选的客户端认证和强制的服务端认证
  3. 完整性:传送的消息包括完整性检查,避免消息被修改

SSL的位置:

SSL处于应用层和传输层之间,应用层数据不再直接传输给传输层,而是给了SSL层,SSL层对应用层数据进行加密

貌似SSL放在会话层

几个基本概念:

密钥:

只有接收方和发送方理解的消息

对称密钥加密:

加密与解密使用相同的密钥

如用户名和密码

非对称秘钥加密:

加密与解密使用不同的密钥

这是目前主流的加密方式,也是最安全的,主要是采样公钥和私钥配合的方式

一般而言,在大规模数据的安全通信中,普遍采用非对称加密交换对称加密密钥,之后的通信都采用对称加密技术加密

密钥

密钥,一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法

RSA

一套公钥密码体制,公钥公开,私钥保密,它的加密解密算法是公开的。RSA的一对公钥和私钥都可以用来加密和解密,并且一方加密的内容可以且只能由另一方解密

公钥

可以公开的

公钥是由私钥计算而成的,所以私钥可以解密公钥

一般如果用公钥加密,就要用私钥进行解密

私钥

私有的,保密的,

私钥是系统随机生成的

一般如果用私钥进行加密(只有我知道私钥,所以只有我可以进行私钥加密),则就要用公钥来解密,这种方式是为了确定我的身份,这个过程叫数字签名

数字签名

就是在信息的后面再加一段内容(利用私钥加密生成的一段内容,加密的hash值),证明信息没有被修改过。

这个加上的一段内容一般就是把信息进行一个hash计算得到一个hash值,收到信息的一方再对信息进行一个hash计算,并与附加的hash值进行对比,以检查信息是否被修改过。

但有可能不怀好意的修改者会修改信息,同时修改hash值,所以一般会对hans值再进行加密,而接收方利用数字证书再对这个加密后的hash值进行解密

数字证书

简单而言,数字证书可以确认对方的信息,数字证书中有对方(主要是服务器)的公钥。

数字证书一般要用公钥解密,这个公钥来自早已安装在本地的,来自权威机构的权威证书。(这里两个公钥,一个是来自服务器的,另一个是来自权威机构的)

例如:服务端把数字证书发给客户端,以令客户端确认服务端的身份,客户端利用数字证书中的公钥去解密服务端发送的私钥加密的内容,以确认服务端身份,排除是别人冒充服务端的情况

SSH

SSH可以让某个主机用户以用户身份登录主机,并对主机进行操作,而ssl与主机登录没有什么关系,只是一种加密协议,也可以简单理解为: SSH=SSL+主机用户登录功能等应用层协议

总之:

公钥,私钥成对的,互相解密

公钥加密,私钥解密

私钥数字签名,公钥验证

参考:https://blog.csdn.net/baidu_36327010/article/details/78659665

Https的真实通信过程:

基本过程:确定身份>商量对称加密算法>加密传输保密数据

step1: “客户”向服务端发送一个通信请求

“客户”->“服务器”:你好

  

step2: “服务器”向客户发送自己的数字证书。证书中有一个公钥用来加密信息,私钥由“服务器”持有

“服务器”->“客户”:你好,我是服务器,这里是我的数字证书 

 

step3: “客户”收到“服务器”的证书后,它会去验证这个数字证书到底是不是“服务器”的,数字证书有没有什么问题,数字证书如果检查没有问题,就说明数字证书中的公钥确实是“服务器”的。检查数字证书后,“客户”会发送一个随机的字符串给“服务器”用私钥去加密,服务器把加密的结果返回给“客户”,“客户”用公钥解密这个返回结果,如果解密结果与之前生成的随机字符串一致,那说明对方确实是私钥的持有者,或者说对方确实是“服务器”。

“客户”->“服务器”:向我证明你就是服务器,这是一个随机字符串     //前面的例子中为了方便解释,用的是“你好”等内容,实际情况下一般是随机生成的一个字符串。

“服务器”->“客户”:{一个随机字符串}[私钥 RSA]

 

step4: 验证“服务器”的身份后,“客户”生成一个对称加密算法和密钥,用于后面的通信的加密和解密。这个对称加密算法和密钥,“客户”会用公钥加密后发送给“服务器”,别人截获了也没用,因为只有“服务器”手中有可以解密的私钥。这样,后面“服务器”和“客户”就都可以用对称加密算法来加密和解密通信内容了。

“服务器”->“客户”:{OK,已经收到你发来的对称加密算法和密钥!有什么可以帮到你的?}[密钥 对称加密算法]
“客户”->“服务器”:{我的帐号是aaa,密码是123,把我的余额的信息发给我看看}[密钥 对称加密算法]
“服务器”->“客户”:{你好,你的余额是100元}[密钥 对称加密算法]

…… //继续其它的通信

SSL的工作原理:

  • SSL握手 证书主要作用是在SSL握手中,我们来看一下SSL的握手过程

    1. 客户端提交https请求

    2. 服务器响应客户,并把证书公钥发给客户端

    3. 客户端验证证书公钥的有效性

    4. 有效后,会生成一个会话密钥

    5. 用证书公钥加密这个会话密钥后,发送给服务器

    6. 服务器收到公钥加密的会话密钥后,用私钥解密,回去会话密钥

    7. 客户端与服务器双方利用这个会话密钥加密要传输的数据进行通信

SSL握手过程

握手协议:

我就不抄了 参考:https://blog.csdn.net/shipfsh_sh/article/details/80419994