浅谈区块链的密码学原理:hash与签名

Doria ·
更新时间:2024-11-11
· 540 次阅读

比特币与区块链这个概念一直很火,我也一直不是很明白,最近才懂了一些些

比特币用到了密码学中的2个功能:①HASH ②签名(非对称加密)
qukuailian

Hash

简单的来说:假设你有一个x,通过某个函数f(x),映射算出某个值的过程就是hash,这个f(x)就是HASH函数。

Hash的特点 Collision resistance

​ x可以有若干个,这若干个x就组成了输入空间,通常这个输入空间是足够大的,例如256位,这意味这你有2256种输入,而这2256种输入,通过hash函数,可以输出很多很多的结果。这个特点就是Collision resistance

​ 他的意思就是,对于某个HASH函数,你很难在足够大的输入空间中找到两个不同的输入,使他们的输出相同。这种难以人为制造的HASH碰撞的特性就是Collision resistance。

​ 当然,也存在已经找到了人为制造HASH碰撞的函数,那就是大名鼎鼎的MD5。

Hiding

​ 对于足够大的输入空间,存在某个HASH映射H,你可以通过某个X算出H(X),但你很难通过H(X)算出X。除非你使用暴力破解。这个暴力破解的过程就是”挖矿“,所以你需要大量的算力来进行计算,这样一个挖矿需要消耗大量算力的原则就是POW(proof of work,工作量证明)。你挖到矿了,同时你也必须付出大量的算力。

​ 这里需要注意的是,挖矿过程中,假设你是第一个算出的,你算出了这个X,其他人可以很容易地在第一时间验证你这x是否正确。这就是“difficult to solve,easy to verify”,即挖矿很难,验证简单。

实现Hiding有两个条件,①输入空间足够大。②分布尽可能均匀(随机性强)

Puzzle frendly

HASH值是不可预测的,即如果你想要H(X)落在某个范围之内,没有啥好办法,只能一个个去尝试。

比特币中使用的HASH函数是SHA-256,SHA就是secure hash algorithm。

签名

​ 在说签名前,先了解两对概念:公钥和私钥,对称加密与非对称加密。

非对称加密与公私钥

​ 公私钥的这个概念来自密码学中的非对称加密(asymmetric encryption algorithm)。如果你加密和解密用的是同一个密钥,这个就是对称加密,如果加密和解密用的不是一个密钥,这就是非对称加密。

​ 对于对称密钥,他的一个前提条件就是你有一个安全的渠道分发你的密钥,即你的密钥不会被窃取,所以对称密钥的使用条件比较严格,这也是对称密钥的缺点,难以分发你的密钥。

​ 非对称密钥就解决了这个问题,其密钥的成对的不同的。假设A和B两个人通信,并且网络环境是不安全的,A要和B传输信息,A就需要利用B的公钥把信息加密,传到B那后,B在利用他自己的私钥对加密信息进行解密得到明文信息。如果此时B要回复,就需要用A的公钥进行加密,信息传输到A本地时再用A的私钥进行解密。

​ 加密的公钥是不需要保密的,你可以传输给网络上任何一个人,私钥是需要保密的,私钥是保存在本地的,只有在解密是用到。

​ 比特币系统系统中,你的账户由公钥和私钥组成,这个公钥就相当于你的“银行账号”,别人要给你转账,只需要你的公钥即可,这个私钥就相当于你的账户密码。你在收到这笔转账之后,你就可以通过私钥来验证这笔转账是不是你的。

签名的概念

​ 在比特币区块链中,私钥代表的对比特币的的控制权。交易发起方用私钥对交易进行签名,并将签名后的交易和公钥进行广播,网络中的其他人收到交易后可以用公钥验证交易是否合法。在这个过程中无需发起方暴露自己的私钥,从而实现保密。

比特币的交易过程

​ 假设在比特币市场中,我要向你转一个比特币,我就需要用我的私钥对这笔交易进行“签名”,然后将签名后的交易和我的公钥在网络上广播,其他人收到之后进行验证,如果验证成功,就都在自己的“账本”上记上一笔,即我向你转了1比特币。这样就保证了整个网络的账本的统一性和去中心化。

​ 另外,这个验证过程就是每个人回溯自己的账本,检查我到底有没有1比特币。如果没有,转账无效,如果有,则在账本上记上一笔。这样就带来了新问题,每个人的账本都不一样,要找到一个让所有人接受的账本,这个就是共识机制,如何保证账本一致?这就需要网络上的每个人争夺记账的权力,中本聪的方案就是做题,谁先把题目算出来谁就拥有记账权力。计算一个题目需要大量的工作量,就是前面所说的工作量证明原则。这个题目就是暴力反算HASH的过程,这个过程就是挖矿,就是看谁的算力强。第一个算出来的人,大家也很容易在第一时间验证他是否算的正确,如果正确,然后大家就把这个人的所记的写到自己的账本上,并且系统会给他相应的比特币作为奖励,这样网络上的每一个人都拥有相同且实时更新的账本。


作者:小钟233



hash 密码学 区块链

需要 登录 后方可回复, 如果你还没有账号请 注册新账号