主页 > 知乎imtoken苹果 > 比特币的基本概念——公钥密码学

比特币的基本概念——公钥密码学

知乎imtoken苹果 2023-02-07 06:17:14

公钥密码系统被称为公钥系统。使用非对称加密。在信息传输过程中,发送方通过私钥对信息进行加密,接收方收到信息后通过另一对配对的私钥对信息进行解密,保证了隐私和安全。私钥不过是一组数字。通过将原始信息和这组数字放在一起,进行特定的运算,可以将信息转换成另一种格式,从而实现加密。解密过程正好相反。在大多数情况下,一组密钥由一个公钥和一个私钥组成。私钥是自己保管的,公钥需要公开给别人。在信息传递过程中,公钥和私钥相互配合,既可以对持有私钥的发送者进行身份验证,又可以保证发送者不能否认自己发送的信息,还可以保证发送信息的完整性和已收到。防止中间环节被拦截和篡改。如果公钥丢失,也可以通过私钥找回。但是,试图通过公钥推导出私钥在理论上基本上是不可行的,这样保证了私钥的私密性。防止中间环节被拦截和篡改。如果公钥丢失,也可以通过私钥找回。但是,试图通过公钥推导出私钥在理论上基本上是不可行的,这样保证了私钥的私密性。防止中间环节被拦截和篡改。如果公钥丢失,也可以通过私钥找回。但是,试图通过公钥推导出私钥在理论上基本上是不可行的,这样保证了私钥的私密性。

私钥

非公开,业主需要妥善保管。它通常由随机算法生成。说白了就是一个巨大的随机整数,256位32字节。1 到 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141 之间的数字可以被认为是有效的私钥。因此,除了随机方法之外,使用特定算法从固定输入获得32字节输出的算法都可以作为获取私钥的方法。因此,就有了迷你私钥(Mini Privkey),原理很简单,比如SHA256的一个实现:

私钥 = SHA256()

比特币保管私钥

迷你私钥存在安全问题。由于输入集太小,很容易被构建常见组合的彩虹表暴力破解,所以通常使用系统随机生成比较好,不存在安全隐患。

公钥

一个公钥对应一个私钥。私钥可以推导出唯一的公钥,但公钥不能推导出私钥。公钥有两种形式:压缩和未压缩。

在比特币的早期,使用的是未压缩的公钥,现在大多数客户端默认使用压缩的公钥。这似乎是比特币系统中的一个类似功能的错误。早期代码写得不够仔细,openssl库的文档也不够好,导致中本聪认为必须使用未压缩的全公钥。公钥的左右32个字节是相关的,左边(X)可以推导出右边(Y)的平方值比特币保管私钥,左边(X)就够了。

比特币保管私钥

现在这两种方法在系统中并存,而且应该一直并存。两个公钥的第一个字节是标识位比特币保管私钥,压缩后的 33 字节,未压缩的 65 字节。0x04 开头是未压缩的,0x02/0x03 开头是压缩的公钥,0x02/0x03 的选择由右 Y 平方的奇偶性决定。

压缩后的形式可以减小 Tx/Block 的大小,每个 Tx Input 减少 32 个字节。

地址

比特币地址是人们容易交换的方案,因为公钥太长(130 串或 66 串)。地址长度为25字节,转换为base58编码后为34或35个字符。base58是一种类似于base64的编码,但是去掉了可能造成视觉混淆的字符,并在地址末尾添加了4字节校验位,以保证当人们交换个别字符不正确时,也可以因地址验证失败而停止. 错误的操作。

比特币保管私钥

由于公钥有两种形式,一个公钥对应两个地址。两个地址都可以使用相同的私钥签署交易。

从公钥生成地址的算法:

版本 = 0 的 1 个字节(零);在测试网络上,这是 111 的 1 个字节

密钥哈希 = 与 RIPEMD-160 连接的版本(SHA-256(公钥))

比特币保管私钥

校验和 = SHA-256 的第一个 4 个字节(SHA-256(密钥哈希))

比特币地址 = Base58Encode(与校验和连接的密钥哈希)

下图显示了从未压缩的公钥生成地址的过程:

image

比特币保管私钥

压缩公钥生成地址时,只能取公钥的X部分。

导出关系

三者的推导关系:私钥>>公钥>>两个地址。这个过程是不可逆的。如果你有私钥,你就拥有了一切,但通常为了方便,相应的公钥和地址也会被存储。

免责声明:本文由(btcer)原创整理,转载请保留链接:比特币基本概念-公钥密码系统