主页 > imtoken钱包苹果版手机下载 > 基础课第8课私钥、公钥和地址

基础课第8课私钥、公钥和地址

在上一节课中,我们介绍了区块链中使用的现代密码学的相关知识。在本节中,我将以比特币为例,介绍区块链中安全性的使用。

正如我们之前所说,比特币的所有价值都存储在区块链网络中的数百万个 UTXO(未使用的交易输出)中。那么如何证明 UTXO 是你的,而不是我的呢?我可以随意使用未使用的 UTXO 吗?我怎么能确定我付给别人的比特币到达了我想给它的人手中?在去中心化的区块链世界中,使用非对称加密算法来保证这一系列问题。主要涉及三个部分:私钥、公钥和地址。

一、概述

比特币的所有权是通过数字签名、数字密钥和比特币地址确定的。每笔比特币交易都需要有效的签名存储在区块链中,只有有效的数字密钥才能生成有效的数字签名。密钥始终与私钥和公钥配对。公钥就像银行账号,私钥是控制账户的签名。

在支付比特币时,比特币的当前所有者提交其公钥和签名(由私钥生成),可以被网络中的每个人验证,确认该交易是有效交易,并且是确认付款人在交易中是否拥有UTXO的所有权。

每个密钥对都包含一个私钥和一个公钥。私钥是一系列随机数,通常是随机生成的。有了私钥,就可以利用椭圆曲线乘法的单向加密功能在比特币中生成公钥。使用公钥,可以通过单向加密哈希函数生成比特币地址。公钥、私钥和比特币地址的关系如下:

基础课程第八课 私钥、公钥和地址

二、私钥

比特币 私钥是一串 256 位随机数。事实上,最随机的方法是找到一枚硬币并将其倒置256次。如果是正面,记为数字 1,如果是反面,记为数字 0。256 位的二进制数可以作为比特币的私钥。可能这种方法比较笨拙,但是不要使用自己写的或者编程语言中的随机函数来生成随机数,这些随机函数有据可查,生成的随机数很容易被追溯。比特币私钥空间的大小是 2 的 256 次方。如果换算成十进制,大约是 10 的 77 次方,而可见宇宙中估计只有 10 到 80 次方的原子。所以,如果比特币的私钥能保证随机性,基本是不可能破解的。

三、公钥

在比特币系统中,公钥可以通过椭圆曲线乘法从私钥计算出来,这是一个不可逆的过程:K=k *G。其中k(小写)为私钥,G为椭圆曲线上的生成点,生成的K为公钥。它的逆运算,基本上不可能从已知的公钥中推断出私钥。就是使用蛮力破解的方法,反复尝试计算结果。如果把全球的电脑组织起来计算,估计要上万年才能破解,这显然是不现实的。

那么什么是蛮力破解,这里举个例子简单说明一下。比如ofo,我们最常骑的那辆小黄车,除了蓝牙解锁比特币私钥在哪里,输入密码也能解锁。一般来说,小黄车的密码是四位数字,每个数字从1到4,也就是如果我们可以手动输入256(对小黄车4*4*4*4)次)组合密码(从1111开始,到4444结束),那我们一定可以试一下小黄车的密码,这样我们就可以免费乘坐小黄车了。如果我们在 5 秒内输入一次密码,那么理论上我们有 21 分钟的时间可以打开密码锁。以上假设是基于小黄车ofo没有其他锁定方式。其实,在多次输入错误密码后,一般都有锁定密码的方法。例如,银行避免暴力破解。只需锁定帐户即可。

这种经过大量尝试和错误的破解方法是蛮力破解。没有技巧,只要你够快,有足够的时间。在计算机世界中,最简单的方法就是暴力破解,因为计算机的计算能力绝不是人类可比的。比如小黄车ofo的组合密码,手动21分钟就可以打开,而对于电脑来说,甚至不需要1微秒。 .而上面提到的椭圆曲线算法,就算全世界的计算机加起来用了几万年的时间来破解,也基本上是不可能实现的。

上图是如何通过椭圆曲线从私钥得到公钥的计算方法,只是为了给大家一个初步的感官印象。具体技术细节涉及现代密码学知识。有兴趣的可以留言,我会详细告诉你的。

四、地址

地址是一串数字和字母,可以在区块链中广播并为所有人所知。 String) 生成的比特币地址以数字“1”开头。比特币地址可以通过单向加密哈希算法从公钥中获得。其中使用了 SHA256 和 RIPEMD160。以公钥K为输入,计算其SHA256哈希值,利用这个计算结果计算RIPEMD160哈希值得到一个长度为160位(20字节)的地址,然后使用“Base58Check”编码得到我们的普通比特币地址。

什么是“Base58Check”?它以二进制开头。众所周知,我们的key都是0/1的计算机编码规则,但是在现实中存在一个问题,就是在实际使用中不容易记住。如果你不相信我,我给你的 512 长度的 0/1 字符串,如果你复制它 10 次,你至少会错一次。也就是说,如果你以这种方式记录你的私钥,在使用它 10 次之后,你至少会出错一次。然后,您将无法支付至少一次。为了方便记忆,用十六进制代替二进制,是用0-9的十个数字加上A到F的六个字母表示的计数方式。 4位二进制 1位十六进制的形式。一个 512 长度的 0/1 字符串变成了 128 位比特币私钥在哪里,并且容易记忆。接下来为了方便记忆和存储,出现了Base64编码方式,压缩了4倍。不过BASE64也容易认错,变成了Base58。 Base58是26个大写字母+26个小写字母+10个数字,然后去掉这四个元素:数字“0”、大写字母“O”、大写字母“I”和小写字母“l”。 Base58Check 为 base58 增加了教学和研究功能。

公钥通过hash函数生成比特币地址,当然也正好是两个hash(SHA256+RIPEMD160)+一个编码(Base58Check),所以很多情况下,比特币地址,其实就是,可以理解为公钥。当然,并不是所有的地址都是公钥,也可能是可编程的脚本(这其实是我以后重点讲的智能合约的前身,但是比特币有通用的支持,而以太坊增强了对智能合约的支持)。

基础课程第八课 私钥、公钥和地址

在本课中,我们介绍了私钥、公钥和地址。可以说,私钥在区块链中非常重要。因为它的匿名性,如果你想证明“你就是你”,币是属于你的,唯一的办法就是用私钥来证明数字前沿。私钥 私钥的丢失或复制意味着财产的转移。因此,在区块链中,如何保护私钥的安全是重中之重。一般情况下,每个人都将密钥对保存在“钱包”中。下节课,我们将给大家具体介绍什么是“钱包”。