欢迎光临散文网 会员登陆 & 注册

密码学

2022-10-11 10:57 作者:学生小寺  | 我要投稿

比特币中使用的密码学主要包括:Hash 和 签名


1. Hash


Cryptographic hash function:密码学中使用的 hash 函数。


SHA-256(Secure Hash Algorithm):BTC 使用的 hash 函数。满足以下几个特性。


1.1 Collision Resistance


Hash Collision:hash 碰撞


由于 hash 函数可以将无限的数据集映射到有限的数据集中,因此必然存在不同的输入会映射到同一个输出结果,称为 hash 碰撞

Collision Resistance:指很难通过人为的方式找出到两个输入,使得它们的 hash 值一样。


目前无法通过数学的方法证明某一个 hash 函数是满足 collision resistance 的特性,只能依靠实践中的不断检验。


花边:md5 hash 函数已经被找到人为制造 hash 碰撞的方法。

1.2 Hiding


Hiding:指 hash 函数的计算过程是单向的、不可逆的。给定一个输入 X 可以计算出它的 hash 值 Y,但是由 Y 是没有办法反推出 X,即 Y 不会泄漏 X 的信息。


前提条件:输入的空间足够大且输入的分布要求比较均匀。否则的话,可以暴力的尝试输入值得出结果。


最佳实践:实际中一般可以给输入值之后拼接一个随机数(nonce),使得输入空间足够大,足够均匀

1.3 Puzzle Friendly


Puzzle Friendly:指 hash 值的计算事先是很难预测的。如果想要使得计算出来的 hash 值落在指定的范围,只能一个个尝试输入,没有捷径可走。


使用场景:「BTC 工作量证明」,比特币要求获得记账权的节点,计算出来的 Hash 值满足一定的条件(比如前面 N 位为 0)。根据这个特性,挖矿的节点只能一遍又一遍地尝试 nonce 值,没有它方。

注:后续内容将介绍「BTC 挖矿的内容」

2. 签名


非对称加密


对称加密:通信双方协定一个密钥,发送方先用密钥加密,接收方收到信息后,再用密钥解密。注意:知道密钥的人,就能解密。


对称加密的痛:密钥的分发是一个最大的痛点,不是很方便,如果密钥在网络上分发,很有可能泄漏。


非对称加密:引入公私钥对。发送方 使用对方的公钥(可以在网上公布)加密,接收方收到信息后,再用自己的私钥解密。注意:同上,只要知道密钥的人,就能解密,但是非对称加密就不存在密钥(私钥)分发的问题。


BTC 账户


BTC 的账户创建:只需要在本地创建一对公私钥对(来源于非对称加密)


疑问:在自己本地产生的公私钥对,会不会和别人产生的一样。这样就可以利用这个私钥把区块链上另一个同名账户的钱转走?

答:实际中不可行,如果是 256 位的 hash 值,产生相同公私钥对的概率是微乎其微的,比地球爆炸的概率还低。前提是,产生公私钥对,需要一个好的随机源。BTC 使用的签名算法,要求生成公私钥对的时候有好的随机源,同时之后每一次签名的时候,也需要有好的随机源。


BTC 账户账号:公钥,相当于银行账号


BTC 账户密码:私钥,相当于银行密码

密码学的评论 (共 条)

分享到微博请遵守国家法律