对称加密算法与非对称加密算法
博客专区 > 海锋 的博客 > 博客详情
对称加密算法与非对称加密算法
海锋 发表于10个月前
对称加密算法与非对称加密算法
  • 发表于 10个月前
  • 阅读 26
  • 收藏 1
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

开发中常见的加密种类:

对称加密

发送端跟接收端 采用同一种加密算法 并且数据的加密跟解密采用相同的密钥 AES DES

输入图片说明

摘要算法

Hash算法特点它是一种单向算法。用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值。却不能通过这个Hash值重新获得目标信息。因此Hash算法常常在不可还原的密码存储、信息完整性校验等。 常见的Hash算法有MD2、MD4、MD5、HAVAL、SHA 、Hash

非对称加密

非对称加密也叫做公开密钥。

原理:通过算法获取一对密钥对,一个是公钥一个是私钥。用公钥加密可以用私钥解密。常用的算法是RSA。公钥通常发给别人,自己保留私钥。

加密的流程:

  • 场景一 公钥加密

    如果A想B发送消息,使用B的公钥给数据进行加密,然后B接受到A发过来的数据,用自己的私钥进行解密。拿到数据。这里体现的是用B的公钥加密数据

  • 场景二 公钥加密 私钥签名

    由于B的私钥发给很多人,对外公开的。怎么能保证B接受到数据能确定是A发送过开的呢? 这里就体现里使用私钥签名的作用了.

    A要发送数据给B,先用B的公钥给数据加密,然后在用自己A的私钥, 对加密的数据再次加密。当B接受到的数据时候,用A的公钥解密,发现 可以解开,那么可以确定是A发送过来的,因为用A私钥加密的只有用A的 公钥才能解开,然后在用B的私钥再次对数据进行解密,得到真实的数据。

对称加密的优点:

  • 安全,可以保证数据的安全。

对称加密的优点:

  • 但加密和解密花费时间长、速度慢,

HTTPS

先来说下 SSL HTTPS 公钥加密算法(非对称加密法)之间的关系

  • HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密

  • SSL/TLS协议的基本思路是采用的公钥加密算法

在上面讲到我们在http请求中各种加密算法,最终非对称加密方法更为安全。保证数据通信,但是在实际的开发中,由于非对称加密存在性能问题,没有使用很普遍。并且对于上面讲的HTTP结合非对称加密存在的缺点:

  • 当服务端的证书传递给客户端时候,这时候是明文的存在不安全
  • 公钥加密计算量太大

在SSL/TLS协议的对以上两点解决办法

  • 将公钥存放在数字证书中,只要是证书是可信的,公钥就是可信的

  • 每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间

下面来详细了解一下https握手

1.首先,客户端(通常是浏览器)先向服务器发出加密通信的请求

在这一步,客户端主要向服务器提供以下信息。

(1) 支持的协议版本,比如TLS 1.0版。
(2) 一个客户端生成的随机数,稍后用于生成"对话密钥"。
(3) 支持的加密方法,比如RSA公钥加密。
(4) 支持的压缩方法。

2.服务器收到客户端请求后,向客户端发出回应.服务器的回应包含以下内容

(1) 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
(2) 一个服务器生成的随机数,稍后用于生成"对话密钥"。
(3) 确认使用的加密方法,比如RSA公钥加密。
(4) 服务器证书。

3.客户端回应 客户端收到服务器回应以后,首先验证服务器证书。如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。 如果证书没有问题,客户端就会从证书中取出服务器的公钥。然后,向服务器发送下面三项信息。

(1) 一个随机数。该随机数用服务器公钥加密,防止被窃听。
(2) 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
(3) 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。

上面第一项的随机数,是整个握手阶段出现的第三个随机数,又称"pre-master key"。有了它以后,客户端和服务器就同时有了三个随机数,接着双方就用事先商定的加密方法,各自生成本次会话所用的同一把"会话密钥"。

  • 服务器的最后回应

服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的"会话密钥"。然后,向客户端最后发送下面信息

(1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
(2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用"会话密钥"加密内容。

总结

HTTPS和HTTP的区别

1. https协议需要到ca申请证书或自制证书。

2. http的信息是明文传输,https则是具有安全性的ssl加密。

3. http是直接与TCP进行数据传输,而https是经过一层SSL(OSI表示层),用的端口也不一样,前者是80(需要国内备案),后者是443。

4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

补充

HTTP与TCP/IP区别?

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

输入图片说明

[参考文章(http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html)

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 21
码字总数 25279
×
海锋
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: