memoryboxes blog

Been here so long got to calling it home.

加密技术发展

| Comments

比特币是建立在区块链基础上的,区块链的基本技术支撑有三个:

  • 非对称加密

  • 点对点网络技术

  • HASH现金

其中非对称加密和HASH现金技术的历史发展颇有渊源,最近仔细学习了一下密码学科普知识,总结一下。

历史回溯

虽然加密和解秘是人类诞生以来一直上演的剧目,方法也是形形色色,但到现在为止,可以简单归纳为两个历史阶段:

1976年之前

1976年以前,所有的加密算法,模式是一样的:

  • 甲方选择某一种加密规则,对信息进行加密

  • 乙方使用同一种规则,对信息进行解密

这时候所有的加解密都是在规则上下文章,主要有两大流派,隐写术和密码术。

隐写术就是利用隐形墨水之类的秘密传递手段,缺点显而易见,比如在很多小说里描述的火烤显形的段子。

密码术相对比较主流,最基本的是”替换”和”移位”两种方法,

替换法

即用一个字母表来替换明码字母的方法,举例:

明码表: a b c d e f g h i j k l m n o p q r s t u v w x y z

密码表: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

明文: v e n i, v i d i, v i c i

密文: Y H Q L, Y L G L, Y L F L

上面这个简单的加密就来自于鼎鼎大名的凯撒加密。当然实际没这么简单,但原理就是这么回事。

移位法

即制定一系列规则,对明文进行移位交换获得密文, 举例:

相邻两个字符互换形成密文:

明文: v e n i, v i d i, v i c i

密文: e v i n, i v i d, i v i c

在1976年之前,大家用的最多的就是这两种方法交替多次加密,比如有多个密码表多次映射,多个移位变换规则进行多次变换等等

大家熟知的DES加密算法就是此类古典加密算法的顶峰,当然,现在已经由于安全问题不被推荐了。

上千年间,大家围绕这些基础手段斗智斗力,但始终有个缺陷无法解决:

如何把加密规则和密码表安全的通知对方?

用现代密码学里面的一个经典譬喻来描述一下:

  • Alice和Bob是朋友,他们的住处离得比较远,Alice想要发送一则隐私消息给Bob

  • Eve想要窃听Alice和Bob的通信,Alice和Bob无法防止Eve的偷看

  • Alice把信放在一个盒子里,她上了锁,让邮差发给Bob,Eve没有钥匙,无法打开盒子,但是Bob也无法打开

那么问题来了,Alice如何把钥匙发给Bob呢?

古典密码术的所有问题,在于密钥分发的问题,而且看起来这个问题和“先有蛋还是先有鸡”的问题一样,是无解的:

Alice要安全的给Bob钥匙,就得放在加锁的盒子里,但是要打开盒子,就需要钥匙。

1976年之后

当然,世上的无奈,除了马云不能灌篮这类事情外,大部分都是能解决的。

在我们想出解决办法之前,先放一张拽拽的图片镇楼:

非对称加密发明人

左边的Whtfield Diffie是早期的Geek典范,看看他迷离的眼神,拽拽的发型,不羁的络腮胡….等等等等,最让人生气的是他还有个善解人意的爱人~ ~

好,让我们再回到Alice和bob的情书问题上来,咳咳,不知道为什么变成Alice给Bob情书了~ ~ ~

现在设想这样一种解决手段:

  • Alice把情书放到铁盒子里,上锁,发给Bob

  • Bob收到盒子,没有去想办法打开它,而是又加上了自己的一把锁,发回给Alice

  • Alice打开自己加的锁,发回给Bob

  • Bob打开自己的锁

  • 可恶的Eve只能干生气了,好可怜啊

哈,这证明了在我们的小譬喻里,分发密钥这个事情是可以安全解决的。1976年之前的人好笨啊,为什么不能这么搞呢?

少年,图样图僧破,在密码世界里,有一个重要的屏障:先进先出原则,就是先上锁的那个人,必须先打开锁。

???

你问我为什么会有这个屏障呢,我也说不明白啊,这是数学家们呕心沥血好多年也没解决的问题,嗯,少年,我看好你哦。

Comments