五分钟带你了解比特币加密算法

96
一米时光at简书 9fac7464 ce5a 4b50 81fc a15390361a6e
2018.09.10 23:03 字数 2230

以比特币为代表的各种区块链币,之所以被称之为加密数字货币,是因为密码学是比特币设计的重要安全基石,用以确保货币流通各个环节安全性。比特币使用的加密算法被称之为椭圆曲线算法(ECC),是一种著名的非对称算法。相较于另一种著名的非对称算法RSA,ECC算法的数学理论非常深奥和复杂,在工程应用中比较难于实现,但它的单位安全强度相对较高。由于ECC 算法数学理论深奥,难以被一般民众掌握,为了便于说明,本文将对RSA 算法的原理进行说明,以使大家对比特币加密算法有个深入的了解。

密码学的发展是伴随着信息交流的发展而不断进化的,是为了保障信息在传输过程中,即使被截获也不能被还原,至少不能被轻易的还原。我们日常生活中,最常见的信息传输方式是:A 同学将要传输的信息通过软件(比如WinRAR,WinZip等)进行加密压缩,然后将加密后的文件发送给B 同学,B同学用事先约定好的密码进行解密,从而完成安全的信息交流。如果在密码很复杂的情况下,截获方不知道密码是难以破解的。但这里面存在一个悖论,如果A 和B 是通过网络传输密码的情况下,怎么能保证密码传输过程中的安全呢?

哈希算法

传统的加密方法是不能公开的,因为知道了加密方法也就知道了解密方法,只需要反向计算就能解密。有没有一种加密算法,即使知道了加密方法,也不能恢复出原文呢?这种算法的原理是,在加密过程中加入一些不可逆的运算来实现。

比如说:需要加密的数字 M,采用下面的加密规则进行加密。

1. 将M 加上 123456;

2. 把结果平方,取第 3 - 10 位,组成一个8位数字;

3. 将这个数字除以456789 求余数;

得到的数字就是加密之后的结果。

在密码学上,这种会丢掉一部分信息的加密方式被称为“单向加密”,也叫哈希算法。一个可靠的哈希算法至少需要满足下面几个基本条件:

第一,对于给定的数据M,很容易算错哈希值X = F(M);

第二,根据X 很难算出M;

第三,很难找到M 和 N使得 F(M) = F(N)。

真实世界的哈希算法原理和上面类似,但也更为复杂。目前被广泛使用的哈希算法包括MD5以及SHA-256算法。哈希算法的结果长度都是固定的,比如:MD5 的结果长度是32个字符,而SHA-256 的是64个字符。所以,后者的算法强度比前者的要强,也就更安全。假设我们要对“WoYaoJiaMi”进行加密,MD5 算法的结果是:“3832EE29D065861A9C006BEDA8C63D3C”,而SHA-256 的结果是: “3C56D7479A96942B9D96D4D1AF24F8F8566EBD30B393B40099F43A48F093B7C9”。

单向加密算法一般用来进行防伪,主要用于验证传输结果的准确性验证。比如:下载一个安装程序的时候,为了保证安装程序不被调包,其提供者一般会公开MD5 编码,这样下载的人可以通过工具算出下载到本地的程序的MD5 值,如果两者一致就证明安装程序是正确的,反之则不能使用这个程序了。

非对称加密算法

哈希算法在真实应用的时候,有一个缺陷就是密码传输的保密问题。如果我们对一份资料进行了加密,对方不知道密码是打不开的,从而确保文件不被窃取;但是,怎样让我们发送的对象知道密码是一个难题。通常,我们会采取打电话或者短信、微信的方式“私下”告诉对方。但是你能确保这真的是私下方式吗?

这就要求我们发明一种新的算法,使得:即使有人拿到了密码也没法解密,还需要知道另外一个密码才可以解密。前一个密码称之为公钥,后一个密码称之为私钥,只要私钥不丢,任何人都无法窃取或者篡改数据。这种密码系统,加密和解密使用不同的密码,公钥用来加密并且是可以公开的,解密使用密钥进行加密。这就叫非对称加密算法。

RSA 算法

1977年,罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)共同设计了一种非对称加密算法,被称为RSA 算法。RSA 实际上是三位发明人的名字首字母缩写。RSA 算法的加密流程如下:

第一,乙方生成两把密钥(公钥和私钥),公钥是公开的,私钥是保密的,只有乙方知道。

第二,甲方获取乙方的公钥,然后用它对信息进行加密。

第三,乙方使用私钥对加密信息进行解密。

RAS 算法的安全性依赖于大数分解。大数分解是一个数学上公认的难题,比如说对于数字4, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001=1, 199, 481, 995, 446, 957x3, 334, 772, 856, 269, 093,要找到2个素数来计算得出前面的数字式非常难。对于一些大数的分解,即使借助于计算机的运算,依然要非常长的时间。比如:对于200位的非特殊数字RSA200,2005年计算机花了18个月时间才把它分解成两个素数。可以看出RSA 算法的强度是非常高的,比较难以破解。

ECC 算法

还有一种著名的非对称算法,称之为ECC 算法(椭圆曲线算法),它是比特币钱包安全性的密码学基石,也是比特币被称之为加密数字货币(Cryptocurrency)的原因。 椭圆加密算法(ECC)是一种公钥加密体制,最初由Koblitz和Miller两人于1985年分别独立提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。

ECC的主要优势体现在:

第一,安全性更高。160位的椭圆密钥与1024位的RSA密钥安全性相同。

第二,处理速度更快。在私钥的加密解密速度上,ECC算法比RSA、DSA速度更快。

第三,存储空间占用小、带宽要求低。

美国国家标准与技术局和ANSI X9已经设定了最小密钥长度的要求,RSA和DSA是1024位,ECC是160位,相应的对称分组密码的密钥长度是80位。 在2005年2月16日,NSA宣布决定采用椭圆曲线密码的战略作为美国政府标准的一部分,用来保护敏感但不保密的信息。 ECC 算法已经逐步开始替代RSA 算法。

需要了解更多信息的可以参考百度百科:椭圆加密算法RSA 算法

感谢您的耐心,您的阅读是我前行最大的动力!您的点赞是对我写作最大的激励!


【小白指南】币圈江湖你必须掌握的四大工具之“登高爬地”

【小白指南】币圈江湖你必须掌握的”四大工具” 之 ”1 Password“

【小白指南】币圈江湖你必须掌握的四大工具之“交易所”篇


DBA 是区块链分布式加速器,点击前往注册

区分 是区块链世界的大众点评,点击注册

币乎 是首创的区块链内容平台,点击注册

拥抱区块链
Web note ad 1