起源

整体说来,密码学旨在通过加密协议,让世界进行安全的通信,或在两方或多方之间安全地进行信息分享,并能阻止恶意第三方读取或截获私有信息。密码学涵盖很多加密模式,用不同方法保护存储的数据不会因第三方「窃取」而曝光。

比特币的本质逻辑(比特币的密码学)(1)

历史

密码学历史可以被分成两个时间段:经典现代

在经典密码学世界中,信息是通过密钥组合或者说是一组字母或数字来加密,然后由同一组密钥解密。一个简单的例子是「凯撒密码」,字母只是按字母表的顺序进行位移,就可以加密或解密。值得注意的是,一旦搞清楚私密密钥,此前所有的加密信息就都被解开了。整体而言,到第二次世界大战期间,虽然加密技术不断进步,但加密手段仍然未有超越,无非是一连串的字母位移和配置,最终都被手工或借助计算机而破解。

在贝尔实验室从事密码学研究的美国数学家克劳德·香农(Claude Elwood Shannon)于 1948 年创立了信息论,他在信息论中声称,最好的加密方法应该不显示关于被加密的明文的任何信息。要知道信息论正是要量化信息,使其能被分享。

信息现在被定义为「熵」,或者叫一个变量所涉及的不确定性的度量。譬如,想象一下你在记录抛硬币的结果,硬币头像朝上的可能是 50%,记为数字 1, 硬币头像朝下的可能是 50%,记为数字 0。你把一连串 1 和 0 的结果记录下来,这个序列不能被压缩成一个更短的字符串——因为 1 和 0 出现的几率均等,那么我们怎么可能缩短这个字符串呢?办不到的。但想象一下,如果头像朝上的概率为 80%,朝下的概率为 20%,你所得到的字符串中, 1 的数量会远多于 0,这样我们就可以压缩字符串来代表一个真实的、更大数量的 1 和 0。这种关于某种可能性的表达就是「信息」,也是关于压缩如何工作的原理。

香农知道,要隐藏信息,一个好的加密方法应该制造随机性,这样一来原始信息就无法溯源出来。譬如,我们对 COLOR 和 COLOUR 两个英文单词进行加密,我们知道这两个词很相似。不过,如果我们用一种加密机制来加密,结果却完全不同,那就堪称完美的加密。

这意味着,即便要被加密的原初消息只有极小的变化,也应翻译成迥然不同的加密消息,和原始消息的加密消息之间没有丝毫相像。有趣的是,目前还没有任何一种加密技术可以做到一丁点的变化就能影响到加密信息的全部。密码学还在追求完美的保密性。

接着,伴随计算机的诞生,1970 年代迎来了现代密码学,即利用复杂性理论来发展加密方法,用户可以轻松地加密、解密或验证消息,而在不知道私密密钥的情况下 ,「暴力破解」这一方法所需的算力被证明相当之高,要达到量子计算的难度。

因此,与经典密码学中加密方法必须保密这一条件不同,现代密码学的方法和算法都可以被共享。即便提前知道相应的理论和算法,也几乎不会给你「破解它们」提供什么优势。

以下两个里程碑式的突破把世界带入现代密码学时代:

DES (Data Encryption Standard)规范了电子数据的加密方法,这推动了对密码学更广泛的研究。(题外话,美国政府干预 DES 的开发,助长了人们对政府通过后门干预加密技术的不信任,等等。关于启用后门技术的优缺点的争论一直持续到今天。)言归正传,DES 在 2002 年已被高级加密标准 (AES) 所取代。至于公开密钥密码学,其工作原理如下:

1. 用户 A 生成一个 ⑴ 私密密钥(私钥)和一个 ⑵ 公开密钥(公钥)

一个「密钥」的定义是什么呢?密钥是一段信息,可以决定一个算法的输出。举个非常简化的例子,假设用户 A 有一个算法 F(x,k),其中她想用密钥 k 「掩饰」一个数字 x,然后发送给另一个用户 B,公式如下:

F(x, k) = x * k * 7

x 的值根据用户 A 想要共享的数据或数字而变化。然后用户 A 会用密钥 k 乘以 x,以「隐藏」它。

假设用户 A 的密钥是 10,她想把数字 3 发给用户 B。她会用 3 * 10 * 7 = 210 来「加密」数字 3。用户 A 会把 210 发送给用户 B。如果用户 B 知道密钥 k 和算法 F,他只需要把 210 除以 10 和 7 来「解密」这个秘密数字,结果即为 3。不过,在本例中,加密密钥和解密密钥是相同的,或者称为对称加密,即用于加密和解密的是同一个密钥 3。

而在非对称加密中,公钥「加密」和私钥「解密」是两个不同的数字,其算法也要比上面提到的复杂得多。

一般来说,公钥是从私钥派生出来的;不过,要从公钥出发找到私钥,「在计算上是不可行的」。在正规术语中,这被称为陷门函数(trapdoor function)——在一个方向上很容易处理、但在反方向上执行起来极具挑战性。

因此,从私钥生成公钥很容易,但是从公钥计算出私钥非常有挑战性。这种差异性越大,这种方法就被认为越安全。从根本上说,它依赖于计算中的一个事实:乘法计算起来非常快,而除法要慢得多。

比特币的本质逻辑(比特币的密码学)(2)

继续……

2. 用户 A 把她的公钥发送给用户 B。

3. 用户 B 用用户 A 的公钥加密一条要发给 A 的信息 。

4. 用户 B 给用户 A 发送一条加密的信息。

5. 用户 A 利用她的私钥解密这条信息,然后读到用户 B 发给她的信息。

在 RSA 算法中,简单说来,私钥和公钥是基于两个大素数相乘形成的半素数而生成的。前面讲过,因式分解(除法)在计算上比乘法困难得多。不过,RSA 作为一种密码学完整性的方法正在衰落。

Global Security 指数是一种量化加密系统的安全性的标准,它将破解一个加密系统所需的算力翻译成「烧开水」所需的能量。基于这个指数, 288 位的 RSA 加密,可用烧开不到一茶匙水所用的算力破解。目前,大多数 RSA 密码术使用 2048 位的密钥。

我们可以对比来看一种新型的私 / 公钥密码术——椭圆曲线密码术(Elliptic Curve Cryptography,ECC)。破解一个 288 位的 ECC 系统,所需的能量可以煮沸地球上所有的水。因此,后者正在快速取代 RSA,成为区块链和零知识证明中使用的密码学系统的基础。这是关于 ECC 与 RSA 对比的一个相当综合的概括。

在继续讲下去之前,我想提醒一下密码学的使用在历史上有多么重要。

从恺撒大帝到现在,一个国家或一个民族能够安全交流的价值,以人类生命和经济价值计算都是不可估量的。早在巴比伦人占领以色列时期的 《耶利米书》中,巴比伦人被以色列人掳到巴比伦时,巴比伦就被称为代表暗码式翻译的「示沙克」(耶利米书 25 章 26 小节),有可能是指保护先知不受惩罚。甚至托马斯·杰斐逊也参与过密码学,他制作了美国军队使用的杰斐逊圆盘,这个发明一直延用到 20 世纪。后来,英国科学家艾伦·图灵破解德军 Enigma 密码学的工作,被认为缩短了二战的时间。毫无疑问,密码学改变了历史。

,