趣谈HTTPS对称加密与非对称加密——如何在微信群里进行私密会话

2020/01/11 HTTP 本文共1495字,阅读全文约需4分钟 本文总阅读量

  HTTPS中存在对称加密和非对称加密的概念,笔者以前在学习的时候,网上看到很多文章和例子,看完总觉得自己还是不得对称加密和非对称加密的要领。最近想到一个方案——如何在微信群里进行私密会话。本文将围绕这一主题进行对称加密与非对称加密的讲诉,不当之处,请多批评指正!

概念

  对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。

  公开密钥加密(英语:Public-key cryptography),也称为非对称加密(英语:asymmetric cryptography),是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密的时候,另一个则用作解密。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;由于加密和解密需要两个不同的密钥,故被称为非对称加密。

场景描述

  • 背景:愉快的高中生活结束了,大学录取结果隆重出炉,互不相识的小明和小丽被拉入了一个大学新生群。这个微信群,和普通群的区别是:无法加群里的小伙伴为好友,也就是说无法发起私聊,任何信息都得发在群里,大家都会看见。
  • 任务:小明和小丽在群里实现私密会话。

实施方案

  进群后,小伙伴们就可以愉快的聊天了。因为他们都使用中文,都通过中文的语法获取信息,所以所有人可以愉快的、无障碍的聊天。

其实这时候的交流方式可以理解成对称加密——加密和解密时使用相同的密钥,也就是中文语法。

【未完待续,待充实】
基本思路:

  1. 小明告诉所有人:大家以后给我发信息,要用我的“规则A”转换后再发;看我的消息,也要用“规则A”揭秘;“规则A”只能用来加密和解密由“规则B”加密的内容;
  2. 小明拿到群友发的信息后,用私密规则“规则B”解密;发的信息用“规则B”加密;
  3. 小丽可以自由自在的在群里给小明发任何信息,不怕泄密了,因为除了小明,没有人有“规则B”;
  4. 但是,小明约小丽出来看电影,大家用小明的“规则A”解析,就都知道了,在群里起哄;并且两套规则,效率太低,太麻烦;
  5. 于是,小丽面子挂不住,不干了:小明,我们得新生成一个加密通信方式,让大家都理解不了。这样吧,以后我们用“规则C”加密和揭秘,“规则C”是这样的,你balabal,我balabal…
  6. 于是,小明和小丽就在群里用“规则C”通信了,并且双方加密解密都是“规则C”;
  7. 其他群友:小明,这是什么啊,怎么解密不了。小丽心中窃喜,获得成就感和满足感…

具体规则C的生成,会涉及到小明和小丽的协商过程,比如说,小丽发一个“520”,小明发一个“1314”,合并起来就是“1314520”,总之,这个过程中,总有一个数据是其他群友没法获取到的(小丽发的)。

  非对称加密+对称加密:HTTPS真正采用的是这种加密方式(TLS 中使用了两种加密技术,分别为:对称加密和非对称加密)。大致的过程就是使用非对称加密的方式传送密钥,那么该密钥就是双方就安全的得到了,也就是说使用非对称加密来使得双方安全拿到密钥。

中间人攻击:
  在非对称加密的过程中,服务器向浏览器发送公钥的过程是明文的,这个通道上的公钥是可以被中间人获取到的,假设这个公钥被获取到了,然后中间人自己伪造一个公钥和私钥。将自己伪造的公钥传给浏览器,而浏览器用伪造的公钥加密后传回服务器的途中被中间人获取,然后用伪造的私钥解密,这样数据就被获取到了,而中间人同样有服务器的公钥,同时也可以和服务器进行交互。上面暴露的问题是浏览器根本不知道公钥是不是服务器的。

Search

    欢迎与我交流

    江南逰子

    Table of Contents