主页 > imtoken钱包下载安卓 > 揭秘比特币和区块链(三):比特币的私钥、公钥和地址

揭秘比特币和区块链(三):比特币的私钥、公钥和地址

imtoken钱包下载安卓 2023-01-16 23:08:00

地址、交易、区块和网络是区块链数据中最基本和最重要的概念。地址用于识别交易的发送者和接收者。所有的交易最终都需要记录在一个统一的账本上,即区块链上,而这个账本是通过区块来确认和完成的。每一个新的区块都会被打上时间戳,最终的生成会根据时间进行排列和记录。每个独立节点都通过比特币网络连接起来,从而建立了一个去中心化、分布式的电子交易记录时间戳服务器系统。

很复杂,本节我们先讲地址。

另外,想要快速了解和掌握区块链技术的同学,可以购买极客时代出品的“区块链通俗易懂”专栏。专栏以区块链技术为基础,带你形成完整的区块链知识体系。作者还将教你如何搭建自己的迷你区块链,带你走进区块链的世界。

1、公钥加密

说到地址,我们必须先谈谈密码学。作为保护信息传输安全的技术手段,密码在人类社会中的应用由来已久。凯撒密码是经典密码的典型代表。它的基本思想是通过字符替换来实现加密和解密。因此,经典密码学的安全性主要取决于加密算法本身的安全性。如果算法泄露,被加密的信息就不是秘密了。

如今,密码学相关技术已经渗透到各个领域比特币的账号密码怎么登录,其理论共识遵循 19 世纪 August Kirkhoff 提出的“Kirckhoff 原则”——一个密码系统即使其操作步骤仍然安全,也应该为人所熟知即算法是公开的,唯一需要保护的就是密钥。

1949 年,香农发表了《保密系统的信息论》,为对称密码系统奠定了理论基础,并带来了基于密钥安全而非加密算法安全的加密传输的理论和技术变革。这是密码学发展的里程碑,标志着现代密码学时代的到来。

在公钥密码学兴起之前,对称加密是主流的加密方式。人们根据密钥对信息进行加密和解密。通常,密钥越长,破解密文就越困难。由于加密算法和解密算法都是同一种模式,只有一个密钥可以保证加密数据的安全,所以这种加密算法也称为“对称加密算法”。对称加密有一个最大的弱点:甲方必须告诉乙方密钥,否则乙方无法解密。而保存和传递密钥成了最头疼的问题。

比特币的账号密码怎么登录

公钥密码学是现代密码学中最重要的进步。公钥密码学可以在不直接传递密钥的情况下完成密文的解密。加密和解密可以使用不同的规则,只要两条规则之间存在一定的对应关系,系统的安全性不依赖于算法的保密性,也不需要直接传递密钥。基于这种公钥机制的思想,一系列非对称加密算法已经开始出现。

1976 年,Whitfield Diffie & Martin Hellman 首次提出了一种基于数学问题的公钥密码机制。 1978年,RSA公钥密码机制的出现成为公钥密码学的杰出代表,成为事实上的标准。又一个新的里程碑。 1990年代,随着公钥密码学的进一步发展,基于椭圆曲线乘法、素幂等数学函数的公钥算法诞生,使数字密钥和不可伪造的数字签名成为可能。

数据签名算法的核心是证明数据的发送者是签名者发送的并且是不可否认的,而不是要签名的数据的机密性。

非对称加密需要两个(一对)密钥:一个公钥和一个私钥。用公钥加密数据后,只有对应的私钥才能解密;如果密钥用于加密,只有对应的公钥才能解密。通信双方无需交换密钥即可建立安全通信。

公钥算法使用私钥和公钥。它们与比特币系统中经常提到的地址有什么关系?在比特币系统中,私钥由一个 32 字节的随机数组成,公钥可以从私钥计算出来。公钥通过一系列散列和编码算法获得比特币中的地址。所以地址其实是公钥的另一种表现形式,可以理解为公钥的摘要。

2、相关加密算法

比特币的账号密码怎么登录

基于secp256k1椭圆曲线乘法、SHA-256、RIPEMD-160、Base58编码的签名算法用于私钥、公钥和地址的相关操作。

2.1 椭圆曲线签名算法

在密码学中使用椭圆曲线是由 Neal Koblitz 和 Victor Miller 分别于 1985 年独立提出的。它的主要优点是在某些情况下它使用比其他算法(例如 RSA)更小的密钥,但提供了相当或更高级别的安全性。

比特币使用基于 secp256k1 椭圆曲线数学的公钥加密算法。它包含一个私钥和一个公钥。私钥用于签署交易并将签名和原始数据发送到整个比特币网络。公钥被整个网络中的节点用来验证交易的有效性。签名算法保证交易由拥有对应私钥的人签发。

2.2 哈希函数

SHA-256是一个哈希函数,上一节已经介绍过,这里不再赘述。

比特币的账号密码怎么登录

RIPEMD-160 也是用于地址生成的散列函数,其输出长度为 20 字节(160 位)。比特币使用它来减少识别接收者的字节数。

2.3 Base58 编码

可读性编码算法,类似于经典密码学中的替换算法,理论上不是密码学理论的核心内容。可读性编码算法不是为了数据安全,而是为了可读性。二进制传输的信息不可读,数字和字母串更容易识别。可读性编码不会改变信息内容,而只是改变信息内容的表现形式(有些编码算法还增加了容错检查功能,以保证数据在传输过程中的准确性和完整性)。

Base64 是一种常见的可读性编码算法。所谓Base64就是在编码过程中使用了64个字符:大写A到Z,小写a到z,数字0到9、“+”和“/”。

Base58是比特币中使用的一种编码方式,主要用于生成比特币的钱包地址。与Base64相比,Base58不使用数字“0”、大写“O”、大写“I”、小写“i”以及“+”和“/”符号。

设计Base58的主要目的是:

比特币的账号密码怎么登录

避免混淆。在某些字体中,数字 0 和大写字母 O,以及大写字母 I 和小写字母 l 会非常相似。不使用“+”和“/”的原因是非字母数字字符串很难被接受为帐户的一部分。没有标点符号,一般不会从中间断掉。使大部分软件支持双击选中整个字符串。

比特币使用Base58算法对公钥和私钥的Hash160进行编码,生成以1或3开头的比特币地址和WIF(Wallet import Format)格式的私钥。

3、私钥和公钥

比特币私钥实际上是一个使用 SHA-256 生成的 32 字节(256 位)随机数。有效私钥的范围取决于比特币使用的 secp256k1 椭圆曲线数字签名标准。 0x1 和 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140 之间的数字几乎总是有效的私钥。

在私钥前面加上版本号,后面是压缩标志和附加校验码(所谓附加校验码是指对私钥进行两次SHA-256运算后,取第一部分两个hash结果四个字节),然后用Base58编码得到我们常用的WIF(Wallet import Format)格式的私钥。

公钥可以通过私钥的椭圆曲线相乘得到。公钥是椭圆曲线上的一个点,具有 x 和 y 坐标。公钥有两种形式:压缩和未压缩。在比特币的早期,使用的是未压缩的公钥,现在大多数客户端默认使用压缩的公钥。

比特币的账号密码怎么登录

由于数学原理,可以从私钥推导出公钥,但从公钥推导出私钥是不可能的。

刚接触比特币的人经常会误认为比特币公钥就是地址,这是不正确的。从公钥到地址,需要进行一些操作。

4、地址生成

椭圆曲线算法生成的公钥信息比较长,压缩格式为33字节,未压缩格式为65字节。地址是为了减少接收方需要识别的字节数。生成比特币地址的步骤如下:

生成私钥和公钥 公钥经过SHA256散列算法处理得到32字节散列值后比特币的账号密码怎么登录,得到的散列值再经过RIPEMD-160算法处理得到20字节散列值—— Hash160 对版本号 + Hash160 组成的 21 字节数组进行双重 SHA256 哈希运算,得到的哈希值的前 4 个字节作为校验和,放在 21 字节数组的末尾。地址是通过Base58编码25位数组得到的。

由于椭圆曲线乘法和哈希函数的特点,我们可以从私钥推导出公钥,也可以从公钥推导出地址,这个过程是不可逆的。正因为如此,在整个比特币系统中,私钥是最关键的部分。私钥泄露意味着一切都丢失了。

我们要花费一个地址的资产,我们需要构造一个交易并用这个地址对应的私钥进行签名。而如果我们想将资产转移到某个地址,我们只需要转移到他的公共地址即可。

原始发布日期:2016 年 6 月 24 日