BTC密码学原理
编辑
背景
比特币中主要用到了密码学中两个功能:
1.哈希 2.签名。密码学中的哈希函数(cryptographtic hash function)
比特币使用的是SHA-256,secure hash algorithm
一、哈希函数
哈希函数主要有三个特性:
1、碰撞特性(collision resistance);2、隐秘性(Hiding);3、谜题友好(puzzle friendly)。
1、collision resistance
collision resistance 即为输入两个输入值X,Y,经过哈希函数之后得到H(X)=H(Y),即为哈希碰撞。
利用哈希碰撞,可以检测对信息的篡改。假设输入x1,哈希值为H(x1),此时很难找到一个x2,使得H(x1)=H(x2)。
2、Hiding
hiding 意思是哈希函数的计算过程是单向的,不可逆的。
但前提要满足输入控件足够大,且分布均匀。
通常我们在实际操作中会后接拼接一个随机数(x||nonce)的方法。
假设给定一个输入值X,可以算出哈希值H(x),但是不能从H(x)推出X。
1和2可以结合在一起实现digital commitment,即数字签名。
digital equivalent of a sealed envelope。
3、puzzle friendly
通常我们限定输出的哈希值在一定范围内,即H(block header) < target (block header是区块链的链头).
block header中存在一个nonce。计算nonce的过程即为挖矿。
计算量也记为pow,proof of work。
difficult to solve, but easy to verify.
二、签名
btc上开户,公钥和私钥的(public key, private key)就是一个账户
使用的是非对称加密。asymmetric encryption algorithm
去掉a就是对称加密,最早使用过,encryption key既用于加密,又用于解密。
安全渠道分发密钥给通讯双方。
对称加密的弱点:密钥分发不方便。
非对称加密则提出一对密钥,加密用公钥,解密用私钥。
本地产生公钥和私钥,公钥,相当于开户账号,私钥,相当于账号的密码。
例如:私钥用来对我的转账交易进行签名,验证这个交易是否是我发起的,则使用公钥验证。
两个人公私钥对生成后一致的概率微乎其微,比地球爆炸的概率还小。
产生公私钥对时有一个好的随机源。a good source of randomness
后记
btc中的签名算法,生成公私钥对,要有好的随机源,后续交易的签名也需要有好的随机源。
- 1
- 0
-
赞助
支付宝
微信
-
分享