1. 哈希算法
哈希就是将任意长度的输入(也称为预映射、原像)通过哈希算法转换为固定长度的输出,输出就是哈希值。这种变换是一种压缩映射,其中哈希值的空间通常远小于输入的空间。不同的输入可能会散列到相同的输出,但输入值不能反向推导。简单来说,就是将任意长度的消息压缩成固定长度的消息摘要的函数。
哈希算法是一种单向密码系统,即从明文到密文的不可逆映射,只有加密过程,没有解密过程。同时,哈希函数可以改变任意长度的输入,得到固定长度的输出。哈希函数的单向特性和输出数据的固定长度使其能够生成消息或数据。
以比特币区块链为例,在工作量证明和密钥编码过程中多次使用二次哈希,例如 SHA ((k)) 或 ((K))。这种方法的好处是增加了工作量或者在不了解协议的情况下增加了破解的难度。
以比特币区块链为代表,主要使用的两个哈希函数是:
1.SHA-256,主要用于完成PoW(工作量证明)计算;
2.、主要用于生成比特币地址。如下图1所示,比特币的公钥生成地址的过程。
图 1:从公钥生成比特币地址
2、对称加密和非对称加密
对称加密:使用单密钥密码系统的加密方法。同一密钥可用于信息的加密和解密,也称为单密钥加密。优点:加解密速度快;缺点:1.密钥管理量大2.对密钥传输通道的安全性要求较高3.数字签名问题。
非对称加密使用两个密钥进行加密和解密。这两个密钥就是公钥(简称公钥)和私钥(简称私钥)。优点: 1、加密和解密能力分离,无法从公钥推导出私钥。 2、多个用户加密的消息只能由一个用户解读(用于实现公共网络中的保密通信)。 3. 只能由一位用户加密。该消息可由多个用户解释(数字签名) 4. 无需提前分发密钥 5. 密钥持有数量大大减少。缺点:加解密速度慢。在比特币区块链系统中,采用的是非对称加密算法中的椭圆曲线加密算法。
比特币使用特殊的椭圆曲线和标准定义的一系列数学常数。该曲线由以下函数定义,通过该函数可以生成椭圆曲线,如图2所示:
或者
图 2:椭圆曲线
通过这条椭圆曲线就可以生成公钥。以随机生成的私钥 k 为起点,与曲线上定义的生成点 G 相乘,得到曲线上的另一个点,然后得到对应的公钥 K 。生成点是标准的一部分。比特币密钥的生成点是相同的:{K = k * G},其中k是私钥,G是生成点,得到的曲线上的点K是公钥。
因为所有比特币用户的生成点都是相同的,所以私钥k乘以G会得到相同的公钥K。k和K之间的关系是固定的,但只能朝一个方向操作,即由k可以得到K。这就是为什么比特币地址(K 的衍生物)可以与任何人共享而无需泄露私钥(k)。
3. 数字签名
数字签名基于非对称加密,可以用来验证某种数字内容的完整性,同时确认来源。
一个典型的场景是Alice通过通道向Bob发送一个文件(一条信息)。 Alice可以先摘要文件内容,然后用她的私钥对摘要进行加密(签名),然后将文件和签名同时发送给Bob。 Bob收到文件和签名后,使用Alice的公钥解密签名,获得数字摘要,并将其与接收到的文件的摘要结果进行比较。如果一致,则说明该文件确实是Alice发送的(其他人无法拥有Alice的私钥),并且文件内容没有被修改(汇总结果一致)。
著名的数字签名算法包括DSA()和更安全的ECSDA(Curve)。除了普通的数字签名应用场景外,针对一些特定的安全需求,还开发了一些特殊的数字签名技术,包括盲签名、多重签名、群签名、环签名等。
4. 总结
总而言之,区块链技术是一项新兴技术,广泛利用了现代密码学的现有成果,包括哈希、加解密、数字签名等。另一方面,区块链系统和很多新的场景也提出了很多对密码学和安全技术提出新的需求,进而推动相关学科的进一步发展。