手机版
扫描查看手机站
首页 > 文章 > 加密世界 > 正文

区块链钱包原理科普:关于钱包的基础密码学

时间:2025-11-09 00:08:09来源:525游

通过区块链,人类历史上首次通过技术彻底、纯粹地保障「私有财产神圣不可侵犯」。

让人沉思,让人兴奋的一段话。

可在这背后的基础技术「密码学」是如何工作,以及保障数字资产的安全呢?无论你是爱好者亦或投资客,应该需要多少了解背后的原理,免得误解,轻则闹笑话,重则损失资产。因为我们总会听到一些鬼扯的故事(帮我找回密码吧!私钥发到群里了诶!),皆是由于对钱包本质的不了解。

本文仅谈论钱包原型涉及的相关密码学,不包含 keystore,助记词,转账交易等。

钱包如何生成

区块链钱包原理科普:关于钱包的基础密码学

这是以太坊黄皮书关于钱包(私钥、公钥、地址)的描述,仅仅 2 行文字。主要讲解私钥通过 ECDSA(椭圆曲线签名算法)推导出公钥,继而经过 Keccak 单向散列函数推导出地址。

分解为 3 个步骤:

1. 创建随机私钥 (64 位 16 进制字符 / 256 比特 / 32 字节)

2. 从私钥推导出公钥 (128 位 16 进制字符 / 512 比特 / 64 字节)

3. 从公钥推导出地址 (40 位 16 进制字符 / 160 比特 / 20 字节)

区块链钱包原理科普:关于钱包的基础密码学

这是我从 ethereumjs/keythereum 中剥离出来的 JavaScript 代码,关于黄皮书上的公式的具体实现,仅仅 6 行代码。

这是一件很奇妙的事情,2 行文字,6 行代码承载着亿万级别的资产,但往往越简单,越奥妙。以上的 6 行代码,就已经囊括密码学中大多数技术,比如随机数生成器、非对称加密,单向散列函数等。以下我会为大家解剖这 6 行代码,逐一介绍背后相关的密码学知识。

随机数

随机数用于生成私钥,若随机数可以被预测或重现,则私钥就会立刻形同虚设。所以保证随机数拥有下列三项特征,至关重要:

随机性:不存在统计学偏差,完全杂乱的数列

不可预测性:不能从过去的数列推测下一个出现的数

不可重现性:除非将数列保存下来,否则不能重现相同的数列

软件本身是无法生成具有不可重现性的随机数,因为运行软件的计算机本身仅具备有限的内部状态。所以通过确定性的代码,在周期足够长的情况下,必然会出现相同的随机数。因此要生成具备不可重现性的随机数,需要从不确定的物理现象中获取信息,比如周围温度、环境噪音、鼠标移动,键盘输入间隔等。

在 Linux 内核中维护了一个熵池用来收集来自设备驱动程序和其它来源的环境噪音。熵(entropy)是描述系统混乱无序程度的物理量,一个系统的熵越大则说明该系统的有序性越差,即不确定性越大。

所以在选择生成私钥的随机数方法时,需要选择满足密码学强度的随机数方法,比如 Node 中的 crypto.randomBytes。当你调用 crypto.randomBytes(32) 方法时,它会等待熵池搜集足够的信息后,返回 64 位的随机数,即私钥。

const privateKey = crypto.randomBytes(32)

// privateKey.toString('hex'): ea4692a11d962b249f8f0439d642a9013a1a08807649311d3672886d72d1fe51

另外,在以太坊中想要获得随机数是一件不容易的事情,因为矿工需要得到同样的结果,并经过验证提交到区块链上。但如果 EVM 存在 random opcode,矿工会生成不一致随机数,无法达成共识。

目前社区也提出相应的方案,Mist 的作者 Alex van de Sande 提出使用 blockhashes 生成随机数,但由于矿工拥有操纵区块数据的能力,如果有能力且愿意放弃 5 个区块的奖励,理论上可以间接影响随机数,所以不是完全足够安全可靠。

为了解决矿工有可能作恶的问题,国内社区提出 RANDAO: A DAO working as RNG of Ethereum 项目,构建一个人人可以参与的 DAO,通过经济激励,由所有参与者共同决定一个随机数。在 RANDAO 的基础上,Vitalik Buterin 也提出 RANDAO++ 方案,感兴趣可以看看。

非对称加密

在对称密码中,由于加密和解密的密钥相同,所以必须向接收者配送密钥用于解密。但发送密钥过程中,窃听者可以窃取密钥解密,不发送密钥吧,接收者无法解密,密钥必须发送,但又不能发送,这问题称为密钥配送问题。一般采取事先共享密钥、密钥分配中心、Diffie-Hellman 密钥交换等方案来解决,但直到非对称加密方案的出现,无需向接收者配送解密密钥,密钥配送问题才完美解决。

在非对称加密中,将密钥分为加密密钥和解密密钥,也就是我们常说的公钥和私钥。公钥和私钥一一对应,由公钥加密的密文,必须使用公钥配对的私钥才可以解密。

看似有点复杂,我们祭出密码学的男女主角 Alice 和 Bob,来通俗地梳理一下:

发送者: Bob,接收者:Alice,窃听者:Eve

1. Alice 生成密钥对(私钥和公钥),私钥由 Alice 自身妥善保管

2. Alice 将自己的公钥发送给 Bob,即使被 Eve 窃取也没关系

3. Bob 使用 Alice 的公钥对消息加密,发送给 Alice

4. 密文可能被 Eve 窃取,但他无法使用公钥解密

5. Alice 使用自己的私钥解密密文

区块链钱包原理科普:关于钱包的基础密码学

当我们调用 secp256k1.publicKeyCreate 获得公钥时,实际使用的是非对称加密中的椭圆曲线算法。通过该算法可以从私钥推导出公钥,这是一个不可逆的过程:K = k * G。给出常数点 G 时,使用已知私钥 k 求公钥 K 的问题并不困难,但反过来,已知公钥 K 求私钥 k,则非常困难。这就是椭圆曲线算法上的离散对数问题,也是为什么你可以分享地址(或公钥)给别人,但不能暴露自己的私钥。

const publicKey = secp256k1.publicKeyCreate(privateKey, false).slice(1)

// publicKey.toString('hex'): 1e3f1532e3285b02...45d91a36a8d78cb6bef8

为了形象的表现椭圆曲线算法如何将私钥推导出公钥,我们将使用简单的整数作为私钥 k,找到公钥 K = k * G,也就是 G 相加 k 次(数学原理一致)。在椭圆曲线中, 点的相加等同于从该点画切线找到与曲线相交的另⼀点, 然后映射到 x 轴。下图展示了从曲线上获得 G、2G、4G、8G 的几何操作。

区块链钱包原理科普:关于钱包的基础密码学

单向散列函数

单向散列函数 (one-way hash function) 有一个输入和一个输出,其中输入称为消息 (message) ,输出称为散列值 (hash value) 。散列值也称为消息摘要 (message digest) 或者指纹 (fingerprint) 。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以用来检查消息的完整性。

单向散列函数拥有下列四项特征:

1. 根据任意长度的消息计算出固定长度的散列值

2. 能够快速计算出散列值

3. 具备单向性

4. 消息不同散列值也不同

当我们调用 createKeccakHash("keccak256") 方法时,Keccak 使用海绵函数,对公钥与初始的内部状态做 XOR 运算得到 32 字节散列值,取其后 20 字节,转成 40 位的 16 进制字符,即为地址。

const address = createKeccakHash("keccak256").update(publicKey).digest().slice(-20)
// address.toString("hex"): 7a48ac1bf3943b2ca7a4ca4999cbcbb0e999950c

在以太坊中还有许多地方应用了单向散列函数,例如:

1. 矿工需要不断计算特定数据的散列值,当散列值满足难度要求时,矿工便可以广播该区块,获得奖励。

2. 根据默克尔树根哈希的值前后是否一致来判断区块中的交易是否被篡改

题外话,有一阵子我很好奇单向散列函数或哈希函数中的”Hash“ 代表什么意思呢?后来经过查询得知,”Hash“ 在古法语中的原意时「斧头」,后来被引申为「剁碎」,正好形象的比喻单向散列函数,将消息剁碎,混合成固定长度的散列值。后来通过 Herbert Hellerman 的《Digital Computer System Principles》成为广为流传的术语。

以上就是区块链钱包原理科普:关于钱包的基础密码学的详细内容,更多关于关于钱包的基础密码学的资料请关其它相关文章!


梦幻新诛仙南市在哪(梦幻新诛仙支线) 宝可梦阿尔宙斯满月怎么刷(阿尔宙斯专属道具) BitForex提现不了?币夫交易所提现人民币教程 帝国战纪赵云碎片哪里有(帝国战纪手游英雄) mxc交易所中国认可度高吗?抹茶mexc交易所中国官网入口 有没有三国养成手游公益服(好玩的三国养成游戏) 方舟生存进化快捷栏隐藏了怎么显示(方舟生存进化怎么显示快捷工具栏) TP钱包是什么钱包?一文玩转TokenPocket钱包 自媒体能赚钱吗?新手做自媒体最快挣钱的攻略 比特币大跌我们该怎么办 如何应对数字货币暴涨暴跌 MASK币最新价格行情,MASK币最新消息实时汇率历史走势图 诛仙手游青云加点方法(诛仙手游青云最强加点攻略2020) 合约交易怎么玩?合约交易步骤详解 江南百景图春笋怎么获得(江南百景图 春笋如何获得) RVN币在哪交易购买?RVN币上线交易所大盘点 梦幻西游手游召唤灵积分怎么获得(梦幻手游召唤灵满了) 王者荣耀司空震怎么玩 司空震玩法攻略(王者荣耀司空震怎么玩才厉害) NFT艺术品交易平台有哪些?国内NFT艺术品交易平台官网入口 未来十年赚钱的生意有哪些(未来十年最赚钱的十大行业) 欧易okx官网网址注册登录 欧易交易所平台币是什么? WING是什么币种?WING币未来前景如何? PancakeSwap滑点是什么意思?薄饼交易所滑点设置教程 王者荣耀星期一几点发标(王者是星期一发标吗) 狗狗币在哪里买卖交易?正规的狗狗币官方交易平台排行 cf怎么邀请指定好友回归(cf怎么邀请指定好友回归最新) 蜀门手游红花洞怎么打(蜀门手游红手指怎么挂机) 豆瓣评价人数TOP10电影大盘点(豆瓣 电影评分排行) 欧易充值为什么要看银行流水明细?欧易充值未到账怎么回事? 宝可梦传说阿尔宙斯伊布在哪(宝可梦传说阿尔宙斯伊布哪个好) 泰拉瑞亚七彩草蛉怎么获得(泰拉瑞亚七彩草蛉是什么) 翻译app排行 十大翻译软件排名 消逝的光芒2帧数怎么调(消逝的光芒2怎么全屏) 科普PhoenixDAO Events: 基于区块链的事件管理和票务DApp 苹果手机微信分身在哪里设置?iPhone使用两个微信教程详解 电脑系统重装有几种方法,电脑系统重装步骤教程 BITGET是什么交易所?BitGet官方网站地址入口 比特币是什么?比特币13年发展历史及历年价格走势(2009~2022) 欧易OKX怎么注册?电脑端欧易OKX注册教程流程详解 一文读懂数字资产如何转账和交易 EGT是什么币种?EGT币前景和未来价值分析 超好用的7款视频剪辑软件,你用过几个软件 Mask币会成为百倍币吗?Mask币2025年能涨到多少价格预测 TP钱包怎么买币?TP钱包买币操作教程 英雄联盟中单英雄有哪些(英雄联盟中单英雄有哪些英雄) 短视频app排行 短视频自媒体十大平台 无线路由器怎么连接安装和设置(无线路由器怎么连接安装和设置网络) 重返帝国虞夫人怎么加点(重返帝国手游玩法) 王者荣耀米莱狄出装推荐(王者米莱狄出什么装备) 炒币平台app哪个最好最安全?十大数字货币在交易所上的排名 PSG币发行价多少?PSG币发行价格及价值分析 三国志战略版怎么升级快(三国志战略版快速50级) Chia官方解答:参与Chia挖矿前,你需要知道的20个问题 什么游戏不充钱也能玩(什么游戏不充钱也能玩的游戏) 英雄联盟一键符文不出来怎么办(英雄联盟一键符文怎么弄) bone币怎么获得?bone币什么时候上线? 手机即时网游排行榜前十名游戏有哪些(手机网游最新排行榜) 有哪些福利多的卡牌游戏(福利游戏哪个好) 有什么是耐玩的养成手游(比较耐玩的养成类手游) 莱特币国际交易平台排名 星露谷物语哈维住在哪里(星露谷物语哈维的家在哪) GDR概念是什么意思?GDR概念股票有哪些? 火币交易所还可靠吗?三个头部数字货币交易所比较下,哪家更靠谱? TP钱包如何在PancakeSwap薄饼购买ZK代币 第五人格红蝶怎么玩(第五人格红蝶怎么玩 红蝶玩法) 冰原守卫者多余的龙装备怎么处理(冰原守卫者冰龙怎么获得) SPND币是什么币?SPND币总量和上架交易所介绍 显卡挖矿原理究竟是什么?为什么要用显卡挖矿? 我的世界怎么隐藏玩家头上的名字(我的世界怎么隐藏玩家头上的名字呢) 三国志幻想大陆貂蝉战魂推荐(三国志幻想大陆貂蝉潜能加点战魂搭配) OKFLY怎么买?OKFLY币买入和交易教程图解 美联储加息虚拟币会跌吗?美联储加息对虚拟货币影响解析 创造与魔法交易的货币怎么得到(创造与魔法交易所货币换算) 钱包助记词是什么意思?钱包助记词的作用 国庆杭州旅游攻略怎么做?旅游常用app及路线建议出行规划 win10怎么清除ie缓存 ie浏览器如何清除缓存 瑞波币如何获得?XRP瑞波币获取方式介绍 和平精英怎么升级枪械皮肤(和平精英升级枪械皮肤多少钱) 抖音设置购物隐私的方法步骤-抖音如何设置购物隐私 q版rpg手游哪个好玩(q版rpg网游) 精灵宝可梦奋斗沙在哪(宝可梦努力性格是什么) 第五人格最新监管者记录员技能公布(第五人格监管者时间顺序) 穿越火线河南一区属于哪个战区(穿越火线河南一区和哪个区合区了) okxweb3.0钱包会不会被交易所拿走?okxweb3.0钱包安全评测 羊了个羊在哪玩(羊了个羊在哪玩儿) ARG是什么币种以及ARG币怎么样?ARG币最新介绍 消逝的光芒2医院保险箱密码是多少(消逝的光芒2彩蛋) 10个完全免费的游戏站!又有一大波免费游戏的平台了 Bithumb交易所详细的注册图文教程 比特币钱包app有哪些?2022年比特币交易软件app排行榜 明日之后房子设计图纸双人地基四合院 ,成本最低的双人别墅设计图解 BCH最新价格今日行情,BCH兑美元价格今日行情历史走势图 修仙玄幻类游戏有bt手游吗(bt版修仙游戏) 我的世界狼怎么繁殖(我的世界狼怎么繁殖生物) 航海王启航突破60要多少碎片(航海王启航突破vv) 王者荣耀点券流水的记录可以删吗(王者点券流水删除) 电脑上使用Metamask小狐狸钱包问题汇总一览 虚拟币交易app有哪些平台?比特币交易平台排名 英雄联盟s12琴女符文天赋怎么选(2021琴女最新符文天赋) BSC钱包是哪个链 如何使用BSC钱包 SUMO是什么币种?SUMO币前景和未来价值分析

热门文章

推荐专题

更多>>

游戏推荐

更多>>