原文地址: http://blog.sina.com.cn/s/blog_17f730cad0102zw88.html
【史前纪事(一)——1976】
1976年,Bailey W. Diffie、Martin E. Hellman两位密码学的大师发表了论文《密码学的新方向》,论文覆盖了未来几十年密码学所有的新的进展领域,包括非对称加密、椭圆曲线算法、哈希等一些手段,奠定了迄今为止整个密码学的发展方向,也对区块链的技术和比特币的诞生起到决定性作用。
同年,发生了另外一件看似完全不相关的事情——哈耶克出版了他人生中最后一本经济学方面的专著:《货币的非国家化》。对比特币有一定了解的人都知道,货币的非国家所提出的非主权货币、竞争发行货币等理念,或者说是去中心化货币的精神指南。
因此,多位学者把1976年当做区块链史前时代的元年,正式开启了整个密码学,包括密码学货币的时代。
【史前纪事(二)——1977】
1977年,著名的RSA算法诞生,这应该说是1976年《密码学的新方向》的自然延续,一点不令人惊讶,三位发明人也因此在2002年获得了图灵奖。不过,他们为RSA申请的专利,在世界上普遍认同算法不能申请专利的环境下,确实没什么人承认,在2000年也提前失效了。
三位发明人是:罗纳德•李维斯特(Ron Rivest)、阿迪•萨莫尔(Adi Shamir)和伦纳德•阿德曼(Leonard Adleman)在麻省理工学院一起提出了RSA算法,RSA就是他们三人姓氏开头字母拼在一起组成的。
新诞生的RSA算法特性比DH算法更为强大,因为DH算法仅用于密钥分配,而RSA算法可以进行信息加密,也可以用于数字签名。另外,RSA算法的密钥越长,破解的难度以指数倍增长。
因为其强大的性能,可以毫不夸张地说,只要有计算机网络的地方,就有RSA算法。
RSA算法名震江湖,那它到底是如何工作的?
第一步,随机选择两个不相等的质数p和q。
第二步,计算p和q的乘积n。n的长度就是密钥长度,一般以二进制表示,一般长度是2048位。位数越长,则越难破解。
第三步,计算n的欧拉函数φ(n)。
第四步,随机选择一个整数e,其中是1< e < φ(n),且e与φ(n) 互质。
第五步,计算e对于φ(n)的模反元素d。所谓“模反元素”就是指有一个整数d,可以使得ed被φ(n)除的余数为1。
第六步,将n和e封装成公钥 (n,e) ,n和d封装成私钥 (n,d) 。
假设用户A要向用户B发送加密信息m,他要用公钥 (n,e) 对m进行加密。加密过程实际上是算一个式子:
用户B收到信息c以后,就用私钥 (n, d) 进行解密。解密过程也是算一个式子:
这样用户B知道了用户A发的信息是m。
用户B只要保管好数字d不公开,别人将无法根据传递的信息c得到加密信息m。
RSA算法以(n, e)作为公钥,那么有无可能在已知n和e的情况下,推导出d?
(1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。
(2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
(3)n=pq。只有将n因数分解,才能算出p和q。
所以,如果n可以被很简单地分解,则很容易算出d,意味着信息被破解。
但是目前大整数的因式分解,是一件非常困难的事情。目前,除了暴力破解,还没有发现别的有效方法。也就是说,只要密钥长度足够长,用RSA加密的信息实际上是不能被解破的。
加密技术的突破,这是区块链技术的根基之一。
【史前纪事(三)——密码学技术的推陈出新】
1980年,Merkle Ralf提出了Merkle-Tree这种数据结构和相应的算法,后来的主要用途之一是分布式网络中数据同步正确性的校验,这也是比特币中引入用来做区块同步校验的重要手段。值得指出的是,在1980年的时候,真正流行的哈希算法、分布式的网络都还没有出现,例如:我们熟知的SHA-1、MD5这样的东西都是90年代诞生的。在那个年代Merkle就发布了这样一个数据结构,后来对密码学和分布式计算领域起到重要作用,多少有些令人惊讶。不过,如果大家了解Merkle的背景,就知道这事决非偶然:他就是《密码学新方向》的两位作者之一Hellman的博士生(另一位作者Diffie是Hellman的研究助理),实际上《密码学的新方向》就是Merkle Ralf的博士生研究方向。据说Merkle实际上是《密码学的新方向》主要作者之一,只是因为当时是博士生,没有收到发表这个论文的学术会议的邀请,才没能在论文上署名,也因此与40年之后的图灵奖失之交臂。
1982年,Lamport提出拜占廷将军问题,标志着分布式计算的可靠性理论和实践进入到了实质性阶段。同年,大卫•乔姆提出了密码学支付系统ECash,可以看出,随着密码学的进展,眼光敏锐的人已经开始尝试将其运用到货币、支付相关的领域了,应该说ECash是密码学货币最早的先驱之一。
1985年,Koblitz和Miller各自独立提出了著名的椭圆曲线加密(ECC)算法。由于此前发明的RSA的算法计算量过大很难实用, ECC的提出才真正使得非对称加密体系产生了实用的可能。因此,可以说到了1985年,也就是《密码学的新方向》发表10年左右的时候,现代密码学的理论和技术基础已经完全确立了。
1985-1997年这段时期,密码学、分布式网络以及与支付/货币等领域的关系方面,没有什么特别显著的进展。1985-1997这十年左右的时间,应该是相关领域在实践方面迅速发展的阶段。最终,从1976年开始,经过20左右的时间,密码学、分布式计算领域终于进入了爆发期。
1997年,HashCash方法,也就是第一代POW(Proof of Work)算法出现了,当时发明出来主要用于做反垃圾邮件。在随后发表的各种论文中,具体的算法设计和实现,已经完全覆盖了后来首个区块链数字货币比特币所使用的POW机制(如果有兴趣可百度一下)。
网友评论