【区块链】密码学原理

哈希函数

在密码学中常用的哈希函数 Cryptographic Hash Function

性质

Collision Resistance 哈希碰撞

指不同的输入被映射到同一个输出。

没有一种高效的方法能够找到与当前取值的哈希值相等的其他取值。(只能暴力)

应用:为某条信息求摘要digest。当消息被篡改后,其哈希值也会发生变化

此条性质无法在数学上进行证明

MD5:不再安全,已经能够人为地制造哈希碰撞

Hiding 单向计算

成立条件:输入空间大,输出取值分布均匀

计算过程不可逆(除非暴力)

应用

前两个性质结合,实现Digital CommitmentDigital Equivalent of A Sealed Envelope

此处老师举了预测股票的例子。

如果输入空间不够大或分布不均匀,可以在原取值的基础上加一个随机值再去哈希。

比特币中的哈希函数:SHA-256

Secure Hash Algorithm

除了哈希碰撞和单向计算外,还具有一种性质。

Puzzle Friendly

比特币应用中必要的一种性质,指的是无法将输入和输出的数值相对应

挖矿过程:首先有

block header (区块的块头)中有很多域,其中有一个域是我们可以设置的随机数 nonce 。挖矿的过程就是找到一个合适的 nonce 取值,使得整个block header取哈希后落在目标域中。

挖矿的过程没有捷径,只有通过暴力尝试才能找出对应的解

因此能够挖到矿,就是对工作量的证明(proof of work)

挖矿很难,但是验证 nonce 的正确性很容易,此性质叫做 difficult to solve, but easy to verify

签名

账户管理和签名

非对称加密 Asymmetric Encryption Algorithm

最早的加密体系是对称的,加密和解密使用的是同一个密钥(单钥密码系统),这种情况下不能够明文发送密钥,不能够方便地互相传递,密钥管理比较麻烦(加密速度快,适合数据多时使用)

如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。
如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。

本地保存的公私钥对即为一个账户。公钥相当于帐号,私钥相当于账号密码。

在进行交易时,发起方使用自己的私钥进行签名,接收方可以使用公钥对签名的正确性进行验证

一种攻击方法

产生相同的公私钥对,偷取比特币(可能性极小)

要求:使用好的随机源

MUITISIG多重签名

一个公司账户有4个合伙人,如果把私钥分成四份,每个人保留一份,这样的做法容易丢失私钥,也大大降低了私钥的安全性(已知其中的64位,破解的难度就大大降低)

可以使用多重签名的方法

哈希与签名结合后应用

首先对一个message取哈希,然后对这个哈希值进行签名

发送消息时发送的是message和签名

Author: iwannaeat
Link: https://iwannaeat.github.io/2021/11/12/【区块链】密码学原理/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.