程序员口述

遨游密码世界(二)

2018-02-13  本文已影响15人  dkvirus
密码工具箱

上一篇介绍了消息传递存在的问题:机密性完整性认证不可否认性。本篇介绍解决这些问题的方案,我们形象的把它们统称为 密码工具箱,工具箱里的 工具 列举如下:

(接上文:遨游密码世界(一)

二、密码学工具箱

1. 对称加密

1)异或运算

层叠消融

最强大脑有个 层叠消融 的项目,本质上就是属于密码学中的对称加密。

层叠消融 把两个图形重叠在一起,相同的部分会消失,不同的部分会显示。如果这么说不太理解的话,可以看下面的 异或 运算,和 加减 运算一样简单。

0 XOR 0 = 0;
0 XOR 1 = 1;
1 XOR 0 = 1;
1 XOR 1 = 0;

XOR+- 都是数学里面的运算符号,叫做 异或运算符。它的规则是相同的数字做运算之后结果为 0,不同的数字做异或运算之后结果为 1。这里即可看出 层叠消融 的本质即异或运算。

2)对称加密的核心就是异或运算

随机生成两个相同位数的数字 01001100 和 10101010,对第一个数字记做 A,第二个数字记做 B,对它两进行异或运算。

0 1 0 0 1 1 0 0        // A
1 0 1 0 1 0 1 0        // B
1 1 1 0 0 1 1 0        // 结果

将结果 11100110 在与 B 做一次异或运算。

1 1 1 0 0 1 1 0         // 结果
1 0 1 0 1 0 1 0         // B
0 1 0 0 1 1 0 0         // 第二次的结果 === A

第一次对 A 和 B 做 异或运算 可以看成是 加密行为

// 加密过程
0 1 0 0 1 1 0 0        // A:消息
1 0 1 0 1 0 1 0        // B:密钥
1 1 1 0 0 1 1 0        // 结果:密文,加密之后看不懂的东东

第二次对第一次运算的结果再与 B 做 异或运算 可以看成是 解密行为

// 解密行为
1 1 1 0 0 1 1 0         // 结果:密文
1 0 1 0 1 0 1 0         // B:密钥
0 1 0 0 1 1 0 0         // A:密文通过密钥处理之后又得到密文 A

电脑里的视频,图片,文本文件等如果要做加密,都是先转化为计算机识别的二进制数据,也就是 0 和 1 组成的数据,然后再做异或运算。

密钥

这个过程 B(密钥) 及其重要,加密时候使用它进行加密,解密也要使用它进行解密,如果你的密钥泄露了,那么别人就可以轻而易举的破解你的加密信息。

3)当前使用的对称加密算法

异或运算只是对称加密的最底层,实际使用的对称加密算法都是在这基础上发展的,并且要复杂的多,这里介绍这个是为了以后吹逼的时候增加光环属性。

前面介绍了异或运算加/解密消息,那么加密算法如何理解呢。比如有个算法对消息进行 16 次异或操作,这是一种算法,另一个将消息拆分两半,只对其中一半进行加密,这又是一种加密算法。

个人总结:加密算法就是加密的具体行为。比如上面使用异或运算加密中,异或加密这个行为就是个算法。对于消息加密,只有同时知道 加密算法密钥 这两个东东才能正确得到明文。

DES 加密算法是 1977 年美联邦使用的标准,在那个年代被政府和银行广泛使用。

老外整出了加密算法之后,为了验证加密算法的安全性,会定期举办个密码比赛邀请全世界的密码学大师来破译加密算法。在 1999 年举办的 DES challenge 第三次比赛中被人用了 22 个小时就给破译了(在 1997 年举办的 DES challenge 第一次比赛就被人用 96 天给破译了),自此之后安全性存在严重问题,新的加密算法应运而生。

由于 DES 存在安全性问题,不久 三重 DES 加密算法 就诞生了,在 DES 基础上做细微修改,并且重复三次 DES 加密,所以叫 三重

当然,DES 底层做了 16 次异或运算,三重 DES 也就做了 48 次异或运算(不仅仅做异或运算,还有其它行为),运算次数变得更复杂,导致加/解密速度并不高。有了不爽的东西人们就会寻求替代品。

1997 年的时候,米国标准化机构 NIST 对外海选新的加密算法,以求替代 DES 带来的尴尬境遇。并提前指定了新的密码算法的名称就叫做 AES

直到 2000 年,在世界各地的密码学专家竞争中,最终筛选出 15 个最终可能选择的加密算法;这 15 个加密算法经过又一轮的生死搏杀,最终比利时密码学家带来的加密算法 Rijndael 成为 AES 的最终选择。

最在用的最多的对称加密算法还是 AES,当然没有绝对安全的算法,被破解也是时间问题,只不过这个时间来的会比较晚一点。

4)对称密码实际应用中的缺陷

办公室

你将用对称密码加密后的纸条扔给你的同事,他需要知道密钥才能解密出明文,由于你们都在一个办公室里,可以很方便的告诉他密钥是什么(这里举例好傻,都能告诉他密钥是啥了,怎么不直接告诉他明文信息,只是举例而已~~)。

如果你在上海,你的好朋友在北京,你用对称加密给他写了封信,你的好朋友需要密钥,你只好将密钥与信件一起塞进信封寄给好朋友。这样又显得很傻,信件被任何人拿到都可以通过密钥得到明文,加密失去意义。

很不爽,去叫人

最初看到这个场景的时候,我没忍住破口大骂,花了十分钟读到这里原来是个自相矛盾的东东,纯属浪费时间。对称加密的密钥传递是个老大难的问题,但可以通过其它技术弥补

2. 公钥加密(也叫非对称加密)






(未完待续,简书不能设置文章顺序,关于密码工具箱其它工具还需查阅资料完善,这里先发布文章占个位置,避免后续文章切断了遨游密码世界两篇文章的连续性)

上一篇 下一篇

猜你喜欢

热点阅读