简单清晰,搞懂非对称加密

2020-04-10  本文已影响0人  赛博剑仙_李玄器

最近在写网站,到了发布部署阶段,想把http升级成https,于是就从网上看有关SSL的技术贴,踩了些坑之后,就对SSL很感兴趣。但这篇先不对具体技术细节过分追究,SSL究其根本,就是对数据传输进行加密。

加密的本质又无非是用特定规则将信息转换成另一种格式,转换后,如果不用特定规则解密就会导致算力成本剧增。世界上没有绝对的安全加密算法,但只要通过算法将解密的(算力或时间成本)增大到「现世不可解」就足够了。

「现世不可解」:我编的词,举个例子。我给你发我爱你,但我用某加密算法把这句话转换成其他内容,如果我不告诉你解密算法,你想通过纯暴力破解从00 01 10 11开始尝试,得需要用太湖之光算135年,得算到我坟头草1米的时候。这就叫现世不可解,这辈子够呛了,下辈子吧。

那么逻辑上有没有绝对安全的加密算法呢?

有,只要你加密的内容其本身价值远低于解密成本,那么在所有人都是理性人的前提下,你这个加密就是绝对安全的。


说完了本质,我们再来看表象。加密又分为对称加密非对称加密

对称加密

就一个固定的规则,加密用它,解密也用它,这个规则一般叫做密钥。通信双方要提前沟通好,知道密钥是什么。

但这时候就产生问题了,只看发送加密的信息,这没问题。但是我密钥咋也不能一起发吧。如果发送的密钥被人截获监听了,那不就又跟裸奔一样吗。因此对称加密的密钥,通信双方需要线下沟通好,如果不方便见面,那就弄个软盘把密钥放进去,靠硬件进行解密。

由于产生年代较早,当时对称加密的密钥一般也就56bit,随着计技术的发展,计算机越来越快。出现了暴力破解的可能,56bit,可能几天就试出来了。那咋办?

最简单的办法,增常密钥位数,例如triple-DES(最长168bit的密钥),AES(最高256bit的密钥)。最起码ASE达到了「现世不可解」的程度。但通信双方总是线下约定或者用硬件介质当密钥也不太方便,1对1还好,但我要是给1万个人,10万个人发消息。我难道还要每个人都线下约定好,或者每人给张软盘嘛?这显然太蠢了。于是解决方案出来了:非对称加密!

非对称加密

其实也好理解,对称加密不是一个密钥吗?非对称有两个:
一个叫公钥,用来加密。一个叫私钥,用来解密。

其中核心观念就是加密和解密使用不同的规则,并且这两种规则之间存在某种对应的数学关系。感兴趣,自己去搜一下RSA算法,涉及数学的部分我觉得很无趣就不写了。你只需要理解,公钥和私钥有数学关联,但是不能互推,并且承担了不同工作就够了。

PS:RSA算法非常可靠,密钥越长,越难破解。
根据已经披露的文献,目前被破解的最长RSA密钥是768个二进制位。
也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。


通信双方如何使用非对称加密通信:
  1. 双方交换公钥;
  2. 发送方用接收方的公钥加密文件;
  3. 接收方收到加密文件;
  4. 接收方用自己的私钥解密;
  5. 反方向同理;
总结一下双方的优缺点:

对称加密:加密解密速度很快,高效,但密钥传递不安全,并且面临大量的密钥管理问题。常见的算法有DES、AES。

非对称加密:安全,但费时,慢。只适合对少量数据进行加密。常用到的领域有SSL、Bitcoin。

最后,得出如何进行高效加密的方法:二者混用。步骤如图:


高效加密方式:混用
上一篇 下一篇

猜你喜欢

热点阅读