区块链中的密码学

在比特币区块链的整个体系中,大量使用了公开的加密算法,比如Merkle Tree哈希树算法、椭圆曲线算法、SHA-256哈希算法、对称加密算法以及一些编码算法,如Base58编码、VarInt编码、DER编码等。下面我们来了解其中的几个核心算法。
1.椭圆曲线算法
椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。它的主要优势是:在某些情况下,它比其他的算法(比如RSA)使用更小的密钥,但提供相当的或更高等级的安全性。
比特币使用了基于secp256k1椭圆曲线数学的公钥密码学算法。它包含私钥与公钥,交易发出方用私钥进行签名,并将签名与原始数据发送给整个比特币网络,网络中的所有节点则用公钥对交易有效性进行验证。签名算法保证了交易是由拥有对应私钥的人所发出的。
数据签名算法的核心在于证明数据是签名者发出的、不可抵赖的,而不是待签名数据本身的保密性。
2.SHA-256哈希算法
SHA是安全散列算法(Secure Hash Algorithm)的缩写,是一个密码散列函数家族。这一组函数是由美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的,包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512五种变体,主要适用于数字签名标准。后4个哈希函数又并称为SHA-2。
SHA-1在许多安全协议中广为使用,包括TLS、SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的哈希函数)的后继者。但随着计算机技术的发展,SHA-1的安全性被密码学家严重质疑,且在2005年被王小云等密码学家成功破译。SHA-2的算法跟SHA-1基本相似,但至今尚未出现对SHA-2的有效攻击,安全性较高。SHA-256就是SHA-2函数中的一个,是输出值为256位的哈希算法。
3.对称加密算法
AES(Advanced Encryption Standard)是一个对称分组密码算法,旨在取代DES成为广泛使用的标准,最终成为美国新的数据加密标准而被广泛应用在各个领域。其大致运作原理和前文的对称加密算法的流程相同。
比特币官方客户端[3]使用AES算法中的AES-256-CBC来加密钱包文件,用户设置密码后,采用用户设置的密码通过AES算法对钱包私钥进行加密,确保客户端私钥的安全,从而保证资产的安全。
4.Base58编码
可读性编码算法在理论上并非密码学理论的核心内容,它类似于古典密码学里的置换算法机制。编码算法的目的不是为了保护数据的安全性,而是为了可读性。
信息以二进制的形式传输,不具备可读性,而数字与字母组成的字符串才更容易被识别。可读性编码不改变信息内容,只改变信息内容的表现形式,部分编码算法还加入了容错校验功能,以保证传输过程中数据的准确性和完整性。
Base58是比特币使用的一种独特的编码方式,主要用于产生比特币的钱包地址。相比Base64,Base58不使用数字“0”、大写字母“O”、大写字母“I”和小写字母“l”,以及“+”和“/”符号[4]。
设计Base58的主要目的是:
1)避免混淆。在某些字体下,数字0和大写字母O,以及大写字母I和小写字母l非常相似。
2)不使用“+”和“/”的原因是,非字母或数字的字符串作为账号的一部分被接受。
3)没有标点符号,通常不会被从中间分行。
4)大部分的软件支持双击选择整个字符串。

猜你喜欢

转载自blog.csdn.net/qukuailian666/article/details/80492373