由https引起的对称加密和非对称加密探索(1)

159 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情

前言

最近公司做项目接触了一个新东西,webrtc,大致的需求就是实现实时通信,通过在网上一顿乱找,最后决定使用webrtc来实现,实现的过程也算基本顺利,其中用到一个很关键的api就是MediaDevices.getUserMedia(),这个api是用来获取使用麦克风和摄像头的权限的,项目一步步的开发着,联调,测试都没什么问题,但到线上就出问题了,原来MediaDevices.getUserMedia()只能在本地、局域网、https环境下使用,但我们公司线上是http环境,当然了,解决这个问题也很简单,公司掏钱买个https证书就可以了,事实上也是这么做的,但这件事让我有了要搞懂https到底是什么东西的念头想看webrtc相关内容的请异步这里

http和https

https和http的关系就是http是不经过加密的,在传输的时候是明文传输,https是加密,为什么要加密呢,当然是为了安全了,如果传入的内容都不加密就会被不怀好意的人更改,就像我们登录网站的账号密码,也是经过加密的。说起https加密就要展开来看看对称加密和非对称加密机制了。

对称加密和非对称加密

  • 对称加密

image.png

  • 非对称加密

image.png

总结一句话就是对称加密的加密和解密过程用的是相同的密钥,非对称加密过程加密和解密过程用的是不一样的密钥(也就是公钥和私钥)

https中所用的加密方式是对称加密和非对称加密相结合的方式,之所以用这样的方式是因为两者结合的方式更安全,并且跟高效,下面说一下为什么

对称加密的特点:

  • 对称加密的加解密速度很快(和非对称加密相比)
  • 对称加密在传输信息之前要把密钥传递给对方,这时候密钥是以明文的方式传递的,可能会被中间人更改(比如代理服务器、路由器等),这就是传说中的中间人攻击

非对称加密的特点

  • 假设又A、B两个人,在通信之前A要把公钥以明文的方式先传递给B,这时候B就可以用公钥来加密信息传递给A,这里在B给A传递信息的过程中是安全的,但A给B传递的信息就不是安全的了,因为在第一次传递密钥B的时候是以明文的方式传递的,可能背中间人劫持。
  • 非对称加密和对称加密相比更加耗时

总结

上述内容就是对称加密和非对称加密的区别和一些特点,明天总结一下https最终使用的加密方式。