区块链对于大家来说,应该都不陌生。这门从上世纪七十年代就已经被提出的技术,在最近这短短的十多年里迅速而又深刻的影响着我们的生活。大家在聊区块链的时候,经常都会提到密码学,其实纵观区块链的成长史,密码学一直扮演着不可或缺的角色,本期我们就来聊聊密码学以及密码学和区块链的那些事儿!
密码学的发展阶段
密码学的发展大概可以分为三个阶段:古典密码学、现代密码学、公钥密码学。
古典密码学:这阶段的核心密码学思想主要为代替和置换。代替就是将明文每个字符替换成另外一种字符产生密文,接收者根据对应的字符替换密文就得到明文了。置换就是将明文的字符顺序按照某种规则打乱。中国古代兵书《龙韬阴符》篇和《龙韬阴书》篇就讲述了君主如何在战争中与在外的将领进行保密通信,而古希腊在大约在公元前700年,军队已经用上了一种叫做Scytale的圆木棍来进行保密通信。
现代密码学:这阶段的发展主要是对称加密算法。对称加密是发送方使用某种公开的算法使用密钥对明文进行加密,接收方使用之前发送方给予的密钥对密文进行解密得到明文。大家在电视上经常看到多大的摩斯密码就是现代密码学的一个典型。摩斯密码是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号,属于一种早期的数字化通信形式。
公匙密码学:这个阶段的发展主要是非对称加密算法。非对称加密的原理是公钥加密,私钥解密。它的实现过程是A通过某种算法产生一对密钥,分别是公钥和私钥,然后将公钥公开。B想发送信息给A,就使用A的公钥对明文进行加密产生密文并发送给A。A接收到密文后,用自己的私钥对密文进行解密,得到明文。
密码学在区块链技术上的应用
密码学在区块链技术上的应用主要体现在现代密码学和公钥密码学上。密码学在区块链的应用非常广泛,可分为3类:对称加密算法、非对称加密算法和哈希散列算法。常见的方法有:Merkle tree 哈希树算法,椭圆曲线算法,SHA-256算法,Base58编码。主要作用是通过hash算法快速查找、对明文进行加解密、对信息进行签名以及验证、产生数字证书、生成账户地址等。
对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。基于“对称密钥”的加密算法主要有DES、TripleDES、RC2、RC4、RC5和Blowfish等
对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高,最大的优点在于加解密的高速度和使用长密钥时的难破解性。
不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。
非对称加密需要两个密钥:公钥 (publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。非对称加密的主要算法有RSA、Elgamal、背包算法、Rabin、D-H、ECC (椭圆曲线加密算法)等。其中使用最广泛的是 RSA 算法和Elgamal 。我们常见的数字证书、加密狗即是采用非对称加密来完成安全验证的。
非对称加密的优点是安全性更高,公钥是公开的,秘钥是自己保存的,不需要将私钥给别人。缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
Hash算法可以将一个数据转换为一个标志,这个标志和源数据的每一个字节都有十分紧密的关系。Hash算法还具有一个特点,就是很难找到逆向规律。Hash算法是一个广义的算法,也可以认为是一种思想,使用Hash算法可以提高存储空间的利用率,可以提高数据的查询效率,也可以做数字签名来保障数据传递的安全性。所以Hash算法被广泛地应用在互联网应用中。Hash算法也被称为散列算法,Hash算法虽然被称为算法,但实际上它更像是一种思想。Hash算法没有一个固定的公式,只要符合散列思想的算法都可以被称为是Hash算法。常见的Hash算法是MD5和SHA-1。
哈希算法的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。对我们来说,这是一瞬间的事。哈希表运算得非常快,在计算机程序中,如果需要快速查询数据的话,哈希表的速度明显比树快,树的操作通常需要O(N)的时间级。哈希表不仅速度快,编程实现也相对容易。
哈希表的缺点是它是基于数组的,数组创建后难于扩展某些哈希表被基本填满时,当数组被填满后,性能会受到很大的影响。并且也没有一种简便的方法可以遍历表中数据项。如果需要遍历,就只能选择其他数据结构。
区块链的发展与密码学紧密相连
如果我们打开区块链的历史,会发现区块链的历史和密码学的进展是紧密相连的。
比特币的pow算法的实现就是利用了hash函数,而pow算法是1993年提出的。
IPFS的整个算法的核心是时空证明算法(PoST),这是2014年提出的。
chia(奇亚)的核心算法同样也是时空证明算法。
drand区块链的核心算法是来自于多方随机数协议,这也是最近几年提出的。
每一个新的区块链核心都往往需要一个核心算法,这个算法来支撑着整个系统的架构。
人物简介
韩冬,1981年生,现任变量数字化研究院院长。韩院长04年毕业于郑州大学计算机专业,从事科技行业17载,指导项目超过70个,服务用户超过1000万。自2016年起,韩院长专注于前沿科技产业,致力于服务企业进行数字化转型,为多家企业提供数字化能力服务。