mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
交易所 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

计算机时代的对称密码学:从100美元富兰克林到二进制XOR到AES

收藏
分享

计算机没有出现的时代是古典密码学,计算机出现后是现代密码学。有什么区别呢?

大家回忆下之前所讲的隐藏法、移位替换、维吉尼亚加密、包括二战时期的恩尼格码机,都是英文字母,比如恩尼格码机的26个齿轮槽对应26个英文字母。

计算机读的是0和1,这根芯片基本结构单元二极管相关。那么,计算机出现后,语言学家就退居二线,现在不太需要英文字母了,加密解密的过程全部由计算机完成,而0和1的二进制世界来了。

比特序列开始统治之后,需要找个方法把语言文字变成二进制比特序列,将现实世界的东西映射为比特序列的操作叫做编码(encoding),这个编码有个规范叫做ASCII。

以上就是一部分二进制的对照表,网上很容易可以搜到。

这背后有有趣的东西。ASCII是IEEE的里程碑作品之一。IEEE就很有意思了,全称是:美国电气和电子工程师协会。总部在美国纽约,“拥有来自175个国家42万会员”,1963年就开始发展了。所以现在很多区块链项目动不动说是十万百万粉丝,这个很难的,你看看IEEE的发展就好了,当然啦,你说区块链行业的分布式,以及高明的传播,会加快一切进程,也对,十万会员的技术组织是很难的,十万关注的人是可行的。

IEEE最早的里程碑作品是本杰明·富兰克林的成名著作《电力的实验与发现》在1751年的时候发表,富兰克林就是美国一百元钞票上面的头像人物。

电子电气工程、通讯、计算机科学和工程这些学科的先驱之一是富兰克林,不是二战时候的美国总统富兰克林·罗斯福,是美国的开国时期的大佬。密码学和这些学科是交叉在一起的,所以,有趣的事情就是, 密码学从一开始就和钱有关系 。100美元的钞票上面印着的这个大佬,更多不是因为他在学术上的贡献,是因为他是财政部长、外交部长、印刷厂长、起草《独立宣言》、“第一个真正意义上的美国人”、代表了美国精神等等成就。

大家可以看下IEEE发展史,链接如下:

https://zh.wikipedia.org/wiki/IEEE里程碑列表

回到我们的二进制编码,ASCII,这时候语言文字变成了0和1, 也就是我们不需要对着字母去捣鼓折腾了,只需要改变0和1就可以对内容进行加密

下面以非常直白简单的语言讲一下怎么加密的?

什么是XOR

XOR叫exclusive or,也就是异或,本身是一种极为简单的运算。你把它当成小学时候学过的加减乘除的一种,当然,这么说高估了运算的简单,这么说吧, 一个小学生看XOR运算,绝对比加减乘除容易非常多

1 XOR 0结果就是1;

0 XOR 1结果就是1;

1 XOR 1结果就是0;

0 XOR 0结果就是0;

前后一样就是1,前后不一样就是0. 从上文表格里找一个字母比如说是a,a就是01100001. 随便找一个秘钥(钥匙),比如01010101. 当然可以是任意选择的,下面会讲的。

这就是用秘钥,XOR之后的结果,00110100就是密文。对照表格,这个二进制表达的信息就是:4

于是,原文的a就变成了密文的4,当然,有时候看起来没有这么规则更像是乱码。

记住口诀:同就是0,异就是1. 这比背乘法口诀容易太多了,小朋友很快可以掌握。

给个图形化表达,更加容易理解:

用钥匙去XOR原文运算之后的结果可以通过钥匙反向推回来。这就是计算机时代的对称加密法。

普及下知识:

什么是比特Bit? 什么是字节Byte?

上文中看到八位二进制就可以表达一个英文字母,那么,一个英文字母也就是一个字节,英文叫Byte,也就是1byte=8bit=8个二进制位。因为一个比特就是代表二进制里面的一位。再比如,一个汉字就是两个字节。标点符号另算。

下面讲一下分类:一次性密码本和分组密码

对称密码学中,一次性密码本属于流密码。流密码的定义更宽一些,本章不展开。

简单来理解就是,你有一段信息需要加密了,比如你的信息由1万个英文字母构成,转成二进制后有8万比特。

我现在生成一个二进制随机数,长度是多少呢?8万位,也即是说这个原文每个比特我都XOR了一下,而且没有什么规律,因为钥匙本身是个随机数(或者叫伪随机数)。

但是这样的加密比较麻烦,安全性不错,效率不高,钥匙和原文一样长。你有个1GB的文件,加密一下后还是1GB,但是钥匙也有1GB,配送和保存都是问题,记住: 密码学中也有物流问题,主要是传输秘钥。

这时候用一个固定长度的加密秘钥,去对原文循环加密,简化模型后,可以这么说,8万比特长度的原文,我拿着80比特长度的钥匙去加密,需要1000个循环。记住,这是简化的模型,实际操作的时候,比这个复杂。

分组秘钥是被广泛运用在通讯、电子商务、金融系统等领域的加密法。

注意,不是以后有了非对称加密,对称加密就没有用了, 对称加密有对称的安全,非对称有非对称的麻烦 ,不是一棍子直接打死的。

DES和AES是什么?

“数据加密标准(英语:Data Encryption Standard,缩写为 DES)是一种对称密码的分组密码,由美国国家标准局于1976年选择作为美国的官方联邦信息处理标准(FIPS),随后广泛被国际使用。”

后来又有了AES(2001年),A就是advanced就是更先进更高级不是American,AES的加密方法选拔是全球公开的,AES既是美国的,又是全球的。选拔由美国一个标准化机构NIST举行,评审不是他们,是全球企业和密码学家以及参赛者共同完成。如果全世界密码学家都找不到加密方法的弱点,兼顾效率和安全性之后,就会被选上。

被选上的算法,要求免费公开给全球使用。有点像打擂台,看看谁的功夫好,就选谁,并且选好了之后把这套内功心法交给全球人民。比如我们现在广泛使用的AES实际就是Rijndael算法,是在2000年从候选算法中被选出来的。

这个图片中的五家就是候选的算法了。出现了RSA公司,RSA算法就是非对称密码中最广泛使用的密码算法。RSA公司在20世纪末举行过好几场比赛,干什么呢?去组织人破译DES的对称算法,确实破解成功了,本来对称密码学中的分组密码就是可以被破解的,RSA找人破解了DES算法,又在后来提交了AES算法,并成功“提名奥斯卡”,只是最后时刻落选了,最佳算法颁给了Rijndael。

不过,在非对称密码领域,RSA那是封神的存在,也正是有了非对称密码,区块链的诞生才有可能。

免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。