前言:加密学是区块链得以安全运行的关键之一。如何来理解加密学?本文适合普通读者,可以了解密码学的基础原理。本文作者是George Moraetes ,资深信息安全专家,文章来源于medium.com,由蓝狐笔记社群“Leo”翻译。
密码学是数学和物理学,它是信息安全的核心,用于保护数据和确保隐私。
要想理解信息安全中的常用方法是不是必须成为数学天才?对于加密学家来说,也许是的,因为他们的工作是提供极难解密的加密算法。从保护用户的信用卡信息,到保护远程用户与网络的连接或保护知识产权免受数字盗版,加密在我们生活和工作中有很广泛的应用。
本文的重点是让大家都能理解令人生畏的密码学,让大家明白它是如何来加密数据的。本文阐述的主要内容包括密码学历史、基础知识以及常用算法。
密码学简史
在现代文献中,密码学有两个词“cryptology”和“cryptography”来表示,它们经常交换使用,这在语义学上带来了混淆。这两个词含义不同,解释如下:
Cryptology——是关于加密的研究和/或加密系统的科学。
Cryptography——为达成秘密或隐藏目的,应用密码系统方法的实践。
Cryptoanalysis——它的目的是发现一些漏洞,可以在不必知道密钥或算法的情况下,允许从密文中检索明文。
(译者注:从以上作者的解释来看,Cryptology更多是加密学理论研究,Cryptography 更多是加密学的应用研究和实践)
本文中所提及的大部分内容都是“Cryptography”。密码学作为一门科学已经存在很多年,第一个使用密码学的已知证据是在公元前1900左右雕刻的铭文中发现的,在一个古埃及贵族Khnumhotep II的墓室里首次出现。抄写员用了一些奇怪的象形文字符号来代替更普通的符号。它的目的不是为了隐藏信息,也许是为了通过改变形式来彰显尊贵。
公元前100年,在罗马帝国巅峰时期,凯撒曾使用加密方式向前线军队传达秘密信息。“凯撒密码”可能是在文献中被提及次数最多的历史上的密码。在替换密码中,明文中的每个字符都被另外的字符替换,以形成密文。凯撒使用的变体是隔3个位置的密码转换。每个字母隔三个位置进行转换,这样,字母A被字母D代替,字母B被E代替,如此类推。字母在末尾回绕,这样X会被A代替。
第二次世界大战期间,美国海军陆战队招募和训练了那瓦霍印第安部落的人,他们熟练使用那瓦霍语。对于密码使用来说,这是一个很有吸引力的选择。因为那瓦霍族之外很少有人能讲那瓦霍语,也没有出版过任何那瓦霍语的书籍。在加密学标准来看,那瓦霍族语言密码并不复杂。如果一位那瓦霍族人加上一位受过训练的加密学者就能在一起富有成效地工作,就有机会攻破那瓦霍族语密码。1942年,在巴丹死亡行军(Bataan Death March)中,日本军队本来有机会做到这一点,他们在菲律宾抓住了Joe Kieyoomia。
Kieyoomia是美国陆军的中士,那瓦霍族人,但不是密码学者,虽然他被命令对无线电信息进行解读,但因为他没有参加过密码学训练,这些密码对他来说,毫无头绪。当他报告自己无法理解无线电信息时,他遭受了折磨。最终,这些日本军队没能解密这些口头密码。
上世纪70年代早期,IBM意识到他们的客户要求采用某种形式的加密,随之IBM成立了“加密组”,由Horst-Feistel领导。他们设计了名为“Lucifer”的密码。1973年,NBS(美国国家标准局,现改名为美国国家标准与技术研究院,NIST)提出一项关于分组密码的提案,该分组密码成为了国家标准。他们显然意识到,在没有良好的加密支持下,他们购买了大量的商业产品。Lucifer被最终采用,称为DES(数据加密标准)。
1997年,DES在穷举搜索攻击下被攻破。DES的主要问题是加密密钥尺寸过小。随着算力增长,通过暴力计算密钥的所有不同组合,获得可能的明文信息。20世纪80年代,只有一个选择,那就是DES。但时代变了。今天,我们有更多的选择,算法更强,更快,设计更良好。现在,问题在于如何选择。
1997年,NIST再次提出一个提案,这是新的分组密码方案。它收到50份建议书。2000年,它接受了Rijndael,并命名为AES(高级加密标准)。
基础知识
加密是改变数据的过程,由此,对于非授权人员来说,它是无法识别和无用的;与此同时,所谓的解密就是要把数据转变为原来的形式。最安全的技术是使用数学算法和称为“密钥”的变量值。所选择的密钥,一般来说,都是随机字符串,它们通过加密输入,并被整合到数据转变中。要解密数据,必须输入完全相同的密钥。
这是密码保护的基础,如果只有被授权方才能知晓密钥,其他人是无法获知数据的。只有知道密钥的人才能解密。这称之为“私钥”密码学,也是当今最广为人知的形式。
现在,为什么加密是必须的?它的根本理由是:
机密性——在传输数据时,人们不希望窃听者理解广播信息的内容。存储数据也不应该被非授权者访问,比如黑客。
身份验证——相当于签名。信息的接收者想要证据,证明这是来自特定方的信息,而不是来自其他人的信息。(即使最初的信息发送方后来想否认)
完整性——这是说,个体数据的接收者有证据表明,没有第三方对信息进行更改。
不可否认——防止信息发送方否认曾创建和发送过信息
密码
密码学是隐藏敏感数据的艺术和科学。它包括加密和解密,加密是把密码应用到原始的“明文”中,而解密则是用密码把数据转变为可读形式。
为说明密码,最好的方法是,向你展示简化的例子:
Polybius 密码
Polybius密码是一种替代密码。它涉及到使用6×6 二维矩阵,存有全部大写字母和0-9的数字。
我们得到如下的矩阵:
在6×6 二维矩阵,它有36个字母-数字字符,我们可以开始替代过程。比如,字母A由1×1 代替,或者X=1,y=1,可以简化为11;我们拿字母“N”来说,这个位置是2×3或x=2,y=3,可以简化为23。
我们可以加密一条简单的信息:
信息:ENCRYPT ME 2 DAY
加密后: 51–23–31–63–15–43–24 13–51 55 41–11–15
密码可以变得更多更复杂,可以包括小字母和特别字符。而且,字符位置可以周期性或随机变化,这让暴力计算攻击来说,几乎是不可预测的。这个机制类似于当今的多态性,在高级计算加密方法中被采用。
凯撒密码
史上最早的密码之一就是Julius Caeser创造的凯撒密码。他用它来安全加密给将军们的信息,这样罗马帝国的敌人就无法弄懂信息的含义。凯撒密码是加密的基本形式,破解很容易。因此,它很少在重要场景下被采用。
基本上,凯撒密码是字母表的重新排列。不同的移位值可以用来创建不同的信息编码。移位的数量,跟字面意思一样,它为了创建加密的信息,让字母数向左或向右移位。下面是实际案例,它向左移3位。
英文:ENCRYPT ME
加密后:HQFUBSW PH
以上的信息很容易被解密,只要通过暴力计算尝试每个字母组合,最终可以发现一个能看得懂的解释。在这个原则上已经创建了更复杂的密码,例如The Vigenere 或 The Gronsfeld Ciphers,但它们利用替代方法。解密它也可能会混淆,每个字母作为值改变移位模式。
Vigenere密码表
理解密码是如何工作的很重要,尤其是想要了解加密学,密码是所有加密的基础。速记是编写隐藏信息的过程,实际上它更像是经典加密学,现在加密学已经成为“计算机安全”的同义词。
多态性
多态性是加密学相对高级的部分,在计算机加密技术中很常见。多态性是一种密码,它在每次使用后会自行改变,每次使用它都会产生不同的结果。这在加密算法中最常见,它常用于计算机中。这意味着,如果我们加密相同的数据两次,每次它都会产生不同的加密结果。
想想我们的汽车钥匙。如今,我们都有远程电子小设备,轻轻一按即可解锁汽车。你可能没有想到,每次你打开汽车,一定量的数据会被传送到你的车辆,这个数据专用于你的汽车,一旦匹配,车辆解锁。实现这一目标的简单方法,只是将每个远程设备放在不同的频率上。但是,这很难规范。所有,实际上,所有的波长都相同,并且它们使用不同的算法(滚动代码)来把数据发送到汽车上。这些算法是多态的。
这意味着算法更难进行逆向工程,因为它们每次都在改变。即使黑客发现了算法(首先使用多态算法更难),黑客也必须将其与汽车(钥匙)所在的组相匹配,而这是一项复杂的任务。
来源:蓝狐笔记(https://mp.weixin.qq.com/s/602sMhAkEluPNMhW3_CfZw)
本文作者:George Moraetes ,资深信息安全专家,文章来源于medium.com,由蓝狐笔记社群“Leo”翻译。