生生不息

生生不息

BTC密码学原理

2025-01-05
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中的签名算法,生成公私钥对,要有好的随机源,后续交易的签名也需要有好的随机源。