# 1. 遗失私钥的数字资产财富能找回吗?

声明

《区块链财富指北》系列文章由NOCY.COM策划,肖南飞主笔撰写。 技术选型基于BOScore公链,旨在以有趣易懂的方式传播普及区块链技术,不构成任何投资建议!

# 0x01 寻找阿托卡,那些遗失私钥的数字资产财富能找回吗?

中世纪大航海时代,有无数的财宝遗失在茫茫海域。

沉船

1622年8月,满载掠夺财富的西班牙阿托卡夫人号护卫船在飓风中沉没,船上有40吨财宝,其中黄金就有将近8吨,宝石也有500公斤,所有财宝的价值约为4亿美元。这是世界上最大的海底沉船宝藏

有一个叫梅尔.费雪的人,历时30余年,找遍世界每一个角落,终于在美国佛州基韦斯特海岸附近找到阿托卡沉船宝藏。

寻宝

此后,寻找阿托卡成为了常用短语,意思是坚持梦想,必会成功。

丢币统计

《财富》杂志曾经做了统计,大约有300万个比特币因为种种原因,让持有者对自己的地址失去了控制权,地址中的比特币永久丢失了。

据区块链数据分析服务提供商Coin Metrics发布的报告,通过重复交易,奖励无人认领或盗窃等方式丢失的比特币近170万个。 若按比特币价格约9000美元计算,170万个比特币价值约153亿美元。

是的,你没看错,在区块链世界里,即使按照保守估计,光是比特币里因为遗忘私钥而遗失的财富就比阿托卡夫人号上的40吨财宝多30多倍。

看一个隔着屏幕都替他肉疼的案例:

2013年夏天,英国工程师豪威尔在家大扫除时,一时疏忽将存有7500枚比特币钱包密码的硬盘丢到了垃圾桶里。 是的,就是下面这位哥们:

英国工程师

这些比特币现在价值6750万美元,约等于4.7亿人民币。
美剧《Silicon Valley》吸收了这一灵感,拍到了剧集里:

电视剧

真是无法想象,这哥们看到这段剧情时的心里阴影面积。

人生最大的痛苦不是得不到,而是得到之后又失去。
每当区块链牛市来临,踏空的人固然伤心懊恼,但论心情之复杂沉重却远不及遗失私钥的人。

前车之覆,后车之鉴。
那么,这些遗失私钥的数字资产财富能找回吗?我们又该如何保管好自己的私钥?
带着这些问题,首先我们来了解私钥是怎么生成的,学习私钥、公钥和地址的基本概念, 这是每一个步入区块链世界的朋友都应该掌握和时常温习的第一课。

# 0x02 私钥的安全生成方式

比特币、ETH、EOS等主流公链加密货币,私钥都是一串256位的二进制数字。通过进制换算成十六进制,4个数变1个数,256除以4也就是64个十六进制数。

进制转换

二进制的私钥类似这样: 110110011000011001110010111011100000001111101011000101100101101010001101101110100000101111
000000111000111010000110010111001001101110000010100111101010110110000110110001010011000100
1011001000011111111111000000000000010000000100101110001011011001011000110101

转换成十六进制后类似这样: d98672ee03eb165a8dba0bc0e3a19726e0a7ab61b14c4b21ffc001012e2d9635

可能有些朋友看到BTC私钥是“K”或“L”开头,EOS是“5”开头,那是种子私钥转换后的钱包适配格式,并不是最初的种子私钥。私钥的多种适配格式后面会讲到,此处暂不展开。

所以,对于目前主流公链来说,私钥本质上就是一个256位二进制随机数。
我们踏入区块链的第一步,就是要生成一个256位二进制数字(即64位十六进制数)作为种子私钥。

要做到真正安全,有两个要点:一、私钥不要让人看到;二、私钥不要让人猜到。
不要让人看到,就是要在断网环境下生成私钥,要用开源的工具,最好是公链的官方工具。
不要让人猜到,就是不要在私钥里无意识的含有规律。比如错误的使用一些简易的随机数生成器。

书本

《精通区块链编程》一书对私钥的生成安全性有一段总结归纳:

不要自己写代码或使用编程语言提供的简易随机数生成器来获得一个随机数。使用密码学安全的伪随机数生成器(CSPRNG),并且需要有一个来自具有足够熵值源的种子。使用随机数生成器的函数库时,必须仔细研读其文档,以确保它是密码学安全的。正确实施CSPRNG是密钥安全性的关键所在。

有一种 “上帝之手” 的私钥生成方法:

自己扔上256次硬币,正面为0,反面为1,用一张白纸记下来。

绝对安全、绿色,只是有点累手,这个方法我没试过:) 感兴趣的朋友可以试试。

不太建议直接随机手写数字来生成私钥,因为人脑还是会无意识的把一些生活中有规律的数字带入到私钥中,比如生日,某个喜欢的数字、单词等等。

在电脑系统上取得随机数,一定要使用密码学安全的伪随机数生成器。

简单的伪随机数生成器,通常都是由确定的算法,通过一个“种子”(比如“时间”),来产生“看起来随机”的结果。任何人只要知道算法和种子,或者获得之前已经产生的随机数,都可能逆推出接下来随机数序列的信息。因为它们的可预测性,在密码学上并不安全。

密码学安全的伪随机数生成器,是深入到当前操作系统内核级别获取随机数。操作系统内核通过一个熵池(搜集硬件噪声,如:键盘、鼠标操作、网络信号强度变化等)来混合获取到最大可能的随机数据熵。

在后续文章里,我们会讲到如何在python中、使用官方工具、使用开源第三方工具等方法来生成私钥。
这一篇文章主要是以理解概念为主。

# 0x03 私钥、公钥、地址的基本概念

在数字货币交易的过程中,只要知道对方的地址,就可以给对方转账了。这个地址其实就是公钥哈希值,或者简单理解地址就是公钥的简化版。
公钥是对私钥进行椭圆曲线加密算法得来。

顾名思义,地址和公钥都是可以公开的,而私钥则要进行安全保管。
在区块链世界里,数字资产财富都是由一把把私钥掌控的。
区块链世界的铁律就是:只认私钥不认人!

私钥、公钥和地址的相互关系如下图所示:

关系

私钥和公钥间是单向不可逆的关系,通过椭圆曲线加密算法实现只能从私钥计算出对应公钥,但是绝对不可能从公钥计算出对应私钥。
可以毫不夸张的说,椭圆曲线加密算法是区块链赖以发展的基石所在。
那么,椭圆曲线加密算法是什么来头?

# 0x04 核心算法:椭圆曲线加密算法

椭圆曲线是由一系列满足特定数学方程的点组成。一个椭圆曲线的方程看起来像这样:

Y² = X³ + ax + b

大部分椭圆曲线的图像看起来像这样:

曲线

由椭圆曲线衍生而来的椭圆曲线密码学(ECC)是下一代的公钥密码学,也是目前被广泛使用的最强大的,同时也是最难懂的一个密码学。相比前一代公钥密码学系统(如RSA),他加密强度更高、计算速度更快、存储空间更小。

公钥加密算法都是依赖于某个正向计算很简单,而逆向计算很难的数学难题。
对于RSA,这个问题是大整数因子分解问题;
对于离散对数加密,是离散对数问题;
对于椭圆曲线加密,则为椭圆曲线上的离散对数问题。

椭圆曲线密码学之所以如此强大,主要是因为椭圆曲线离散对数是非常难非常难的问题。
到目前为止,世界上的数学家都没有找到一个能在多项式时间内解出来的算法。

通过密码学碳量排放评估,破解一个228字节的RSA秘钥需要的能量少于煮沸一茶勺水的能量,而破解一个228字节的椭圆曲线秘钥则需要把全世界的水都煮沸的能量!

椭圆曲线密码学被广泛应用。不只是区块链,还有中国的二代身份证,都使用了256 比特的椭圆曲线密码算法。

# 0x05 遗失私钥在理论上无法找回

絮絮叨叨了这么多,再回到开始的话题:遗失私钥能不能找回?

找回1

第一条路径,能不能从公钥推导找回私钥?
从刚才介绍的区块链采用椭圆曲线加密设计来看,公钥是无法推导出私钥的。
从公钥这条路来找回是不可能的。

第二条路径,能不能对256位二进制随机数挨个挨个试,暴力破解私钥?
256位二进制随机数就有2的256次方种排列组合的可能。
这是一个大到无法言喻的数字。
这个数字在十进制中约等于10的77次方。
我们对比一下,在可见的宇宙中,人们估计一共有10的80次方个原子.
因此我们几乎有足够的私钥给宇宙中的每个原子了。
当你随机地选择了一个私钥后,几乎不可能会有另一个人猜到,或者选中同一个。
当然,暴力破解也是不可能的事情。

综上所述,遗失私钥从理论上是无法找回的。

找回2

但是在实践中,还是有一线生机可以试试。 有两种情况:
一是虽然遗失了私钥,但是对私钥还是有些记忆印象。
比如有些钱包找回服务公司,就是根据原持有人对私钥的碎片记忆对剩下的部分进行暴力破解,难度就大大降低了。
还有帮助原持有人进行催眠回忆私钥的等等。

二是私钥没有遗失,只是忘记了保管私钥的钱包密码,当然还要恰好该钱包还有漏洞:)。
加州当地区块链未来实验室研究室主任Mark Frauenfelder在经过多次回忆失败之后,通过利用钱包漏洞找回了PIN值。
PIN值对应钱包私钥,因此,丢失的比特币就被找回来了。

总而言之,私钥无小事,小心谨慎总没错。
宁可事前多麻烦,也不要事后找烦恼。
何况私钥遗失了,就是事后再烦恼也找回希望渺茫了。

# 0x06 下篇内容预告

本篇内容主要是从理论上对私钥进行了讲解。
光说不练假把式。
从下篇开始,我们开始从代码实现层面来实际体验生成私钥、公钥和地址的整个流程。

私钥(2):百行Python代码演示一私钥生成多公链公钥原理。

阮一峰老师曾在一篇博文中写道:“只有技术,才有可能让你翻身。比特币就是一个例子,过去几年中,价格上涨了几百万倍。我知道的许多技术人都通过比特币发了财,而这只是技术带来的财富浪潮之中的一个突出案例。如果你了解技术,你就会看到有这样的机会。现在看上去,只有技术才能提供这样的从底层快速上升的机会。我有一种悲观的预感。未来只有两种途径可以改变人生,一种是学习技术,另一种是购买彩票。”

下一篇将开始涉及一些编程基础知识。
对于新接触编程的朋友来说,不要担心自己没基础。
区块链领域,没有谁是科班出身。
种一棵树最好的时间是十年前,其次是现在。

# 0x07 联系及投票支持

《区块链财富指北》系列文章github存档地址:https://nocycom.github.ioNOCY.com团队致力于区块链基础知识传播,欢迎读者朋友留言共同交流。 由于发文时间仓促及区块链领域技术迭代频繁,在教程中可能有这样或那样的错漏之处,还请读者与我们一起查漏补缺、将系列教程优化的更好。

如果觉得这系列教程有点意思,请投票支持我们的节点:BOS公链NOCYCOM节点EOS公链NOCYCOM节点。您的投票是本教程持续更新的动力源泉,谢谢。