主页 > imtoken钱包2.0版本下载 > # 7 比特币私钥是怎么产生的,能破解吗?

# 7 比特币私钥是怎么产生的,能破解吗?

imtoken钱包2.0版本下载 2023-06-17 06:58:22

题图

如果你拥有比特币,你可能最关心的是余额,而决定余额的是私钥,所以你最应该关心的是私钥。当我们谈论与比特币安全相关的问题时,我们也会提到私钥。上一篇《什么是比特币的助记词》中提到的助记词,其实可以理解为私钥的一部分。一种表达形式,但究竟什么是私钥?也许很少有人知道。

什么是私钥

私钥是一个 256 位的随机数

私钥的定义很简单,但是有2个专业术语可能会让不懂电脑的同学感到困惑。一个是 256 位,另一个是随机数。以下是对该定义的白话解释。懂的同学可以跳过:

256 bits——字面意思很容易理解为256个十进制数字,其实不是,因为计算机是用二进制来存储和计算的,所以256 bits是指256个二进制数字,下图是一个例子

随机数 - 表示数字是不规则生成的

所以

私钥是一个数字,可以取 0 到 2²⁵⁶-1 之间的任何值

可以破解私钥吗?

看到这里,你可能和我有同样的疑惑——私钥太简单了,我可以写一个随机数,只要不超过最大值比特币被破解,就可以作为私钥使用,对吧?没错,没错。

然后根据私钥计算出公钥,公钥生成地址逻辑。是不是我随机选择一个数字作为私钥,然后计算它的地址。如果这个地址恰好有未使用的比特币,是否意味着我黑了别人的账户?

小伙子,你说得对,一开始我其实也是这么想的,虽然现在觉得有点幼稚……

私钥虽然只是一个简单的数字,但还是很难破解,因为这组数字足够大,我们很难穷尽所有的数字,一一验证。2 的 256 次方近似于 10 的 77 次方。10 的 77 次方有多大?让我再举一个例子来说明清楚

到目前为止,人类可观测宇宙中的原子数量约为10的80次方

此外,由于这个数字的范围非常大,我们能够猜到正确私钥的概率变得非常低。假设地球上使用比特币的人数达到 100 亿比特币被破解,也就是 10 的 10 次方,那么你猜一个比特币私钥进入的概率是

这个概率有多小?让我再举两个例子:

“双色球”中奖概率为8×10ˉ⁸。——摘自《中国中奖福利彩票的概率》 从全球来看(假设世界人口为70亿),每个人一年中被雷击的概率为175万分之一(5×10ˉ⁷) . ——摘自中国气象局——《被雷击的概率有多高》

这是什么意思?阐明

被闪电击中概率>中奖概率>500万>猜中比特币私钥概率

在上面的不等式中,我用>>符号表示它远大于

从概率上看,我们破解私钥确实很难,但是这个时候你可能会问,中奖和被雷击是很难发生的,因为很少发生,但是电脑不一样,电脑的计算速度很快,我们可以很方便的利用电脑的处理速度来增加猜到私钥的可能性,也就是快速计算出10的67次方的私钥,而且总会有一个猜测。

是的,通过这种暴力破解方法可以破解比特币的私钥,但也极其昂贵。让我们做一个实验。

我在我的 Macbook Pro 2015 上运行了一个命令

$ begin=`date +%s`;  for ((i=0;i<10;i++));do bx seed | bx ec-new | bx ec-to-public | bx ec-to-address | xargs -I@ ./btc_balance -addr @ > /dev/null; done; end=`date +%s` ; echo `echo "scale=2;$end-$begin" | bc`
15

看不懂这个命令也没关系,我来介绍一下它的作用:

该命令会随机生成 10 个比特币的私钥和地址,并获取其余额,这是暴力破解的基本步骤(其实还有一步判断余额是否大于 0。如果大于0,说明猜对了,但是我们这里只估算成本,可以跳过这一步),生成10个私钥的目的是利用计算机的并行性,因为我的CPU有4核;该命令还会输出程序运行所需的时间,可以看到最后一行的15表示已经运行了15秒

使用这个程序的输出,我们可以计算猜出一个私钥需要多长时间。猜10个私钥需要15秒,所以10⁶⁷猜,需要

注意,换算后,等式右边的单位已经是年了。通过简单的实验和计算,我们可以估计,暴力破解比特币私钥几乎是不可能的。

使用安全算法生成私钥

即使私钥被设计得足够安全,但如果使用不当仍然会产生严重的后果,因为统计数据显示,许多人仍然使用 1234567 作为他们的帐户密码——一个典型的例子。

我们不想自己生成私钥。最好借用比特币软件,比如钱包或者bitaddress.org之类的网站,为你生成私钥。这里简单介绍一下这些软件生成私钥的原理,大致分为3个步骤:

生成一个长随机字符串(随机源)——例如 bitaddress.org 网站通过捕获人们滑动鼠标的随机行为来生成随机源。将步骤1的数据输入SHA256哈希算法,输出一个256位的数字,保证生成的数字在私钥指定的范围内,否则返回步骤1

通过这篇文章,相信你对私钥有了更深入的了解,同时对比特币的安全性也有了足够的信心。如果这篇文章对你有帮助,作为反馈,你可以在文末留言,或者给我小费 :)

0xf7eA2c5C7cF4E3f384de97109685a02a8ED92BC6