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

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

时间:2022-12-13 阅读:
特战英豪官网版

特战英豪官网版

  • 类型:射击空战
  • 大小:61.82MB
  • 语言:中文版
  • 版本:v1.0.0

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

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

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

本文仅谈论钱包原型涉及的相关密码学,不包含 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》成为广为流传的术语。

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


虎符交易所怎么样?虎符交易所与火币网对比哪家好? 非小号是什么?非小号有哪些功能? CHI是什么币种?CHI币怎么样详细介绍 bigone云币国际交易平台怎么样?bigone注册流程详细介绍 KSM是什么币种?KSM币未来前景及价值介绍 哪款3d动作手游可以免费玩(3d大型动作手游推荐) 区块链BZRX币是什么币种?BZRX币前景怎么样? 好玩的放置类手游推荐?Rollic放置竞速游戏攻略 pdf编辑工具哪个好用?精选3款PDF编辑工具! 时空猎人宝石怎么获得(时空猎人猎人宝石图片) 区块链的核心概念是什么? 欧易OKEX币怎么转到法币?欧易OKEX币币账户怎么转到法币账户? 币印矿池新手如何配置矿机?币印矿池配置矿机教程 电脑系统如何重装?超简单的电脑重装系统教程 dnf无影剑哪里爆率高(dnf2021无影剑哪里爆) 泰拉瑞亚服务器ip地址在哪看(泰拉瑞亚服务器ip地址怎么看?) 和平精英飞行棋模式怎么玩(和平精英飞行器怎么玩) 什么是代币合约?ERC20代币合约是什么? chatGPT:全球最赚钱的10个行业(世界上最赚钱的行业排行榜前十名) lol手游日女皮肤哪个好(英雄联盟手游日女出装天赋) 黑色沙漠手游驯兽师怎么获得(黑色沙漠驯兽师攻略) 英雄联盟亚索S12怎么出装(s12亚索最新出装) 梦幻西游储备经验怎么获得(梦幻西游储备经验什么意思) 第五人格:调整后宿伞之魂强度如何(第五人格宿伞之魂太强了) okex上怎么买shib币?欧易okex买卖shib柴犬币详解 这4个在线游戏网站(在线游戏网站推荐) 怪物猎人曙光dlc多少钱(怪物猎人 曙光) PUSH币合约地址多少?PUSH币属于什么链? 消逝的光芒科雷克砍刀怎么修复(消逝的光芒科雷克砍刀不能修的吗) JustSwap交易所手续费多少?JustSwap费用详细介绍 YAG是什么币种?YAG币官网总量和发行价介绍 耐玩又不氪金的手游2023(2021耐玩不氪金的良心手游) 宝可梦传说阿尔宙斯木木枭哪里抓(pokemon go 阿尔宙斯) 如何安全的捂住你的imToken钱包? RPL是什么币种?RPL币前景和价值介绍 哪个清理软件最好用?魔方清理垃圾软件 冰原守卫者遗迹建筑作用是什么(冰原守卫者游戏视频) csgo打字按哪个键(csgo怎么打字) 艾尔登法环冰枪用什么武器(法师冰枪不破冰环) SCRT是什么币种?一文读懂SCRT币前景和价值 新手必看:imToken钱包快速入门 三国志幻想大陆主界面人物怎么换(三国志幻想大陆形象怎么换成皮肤) dnf2022称号叫什么(dnf 2021年称号) 区块链TOP币是什么币?TOP币前景怎么样? LOL炫彩皮肤需要先买皮肤吗(lol炫彩皮肤要买原皮肤吗) 去中心化交易所是如何工作的?去中心化交易所有法币交易吗? 三国志幻想大陆张颌平民阵容如何搭配(三国志幻想大陆张角阵容) 王者荣耀小乔2022怎么出装(王者新赛季小乔出装) 欧易okx充值手续费多少?欧易交易所充值手续费明细一览 和平精英云游戏是什么(和平精英云游戏和正常有啥区别) 宝可梦剑盾音波龙进化顺序是什么(剑盾音波龙什么性格最好) HKEx.one手续费是多少?hkex.one交易所怎么样 我的世界电脑版背包是哪个键(我的世界电脑版背包旁边怎么打开) Cobo钱包EOS高级账户竞拍操作指南 DOT是什么币?dot币的投资价值分析 王者荣耀镜S26怎么出装(王者荣耀镜的出装以及铭文) 第五人格魔术师天赋如何加点(第五人格魔术师最强天赋点2020) C98是什么币种?C98币潜力和前景深度分析 魔兽世界小块魔光碎片怎么获得(小块魔光碎片分解什么出) 合约是如何操作的?合约交易操作教程图解 问道手游体木带哪个变异好(问道手游体木做什么套) OKEX欧易交易所合约交易怎么玩?欧易合约交易教程 WAZIRX是正规交易所吗?靠谱吗? RSR是什么币种?RSR币前景怎么样? 绝地求生五周年渔夫帽怎么获得(绝地求生五周年皮肤) 什么游戏不氪金又好玩手游(哪个游戏不氪金又好玩手游) 和平精英吉普车皮肤通用吗(和平精英吉普车皮肤有几种) 英雄联盟哨兵之殇是谁(lol哨兵之殇技能视频介绍) 如何在imToken钱包使用cBridge跨链桥?cBridge资产跨链操作步骤教程 江南百景图文藤怎么获得(江南百景图文腾) 无限元宝挂机手游有哪些(无限元宝手机网游游戏) 热血传奇:1.76与1.80的过渡相连是什么样的(热血传奇1.76和1.80区别) 2023火爆的武侠手游排行榜前5名(好玩的武侠手游排行榜前十) 和平精英活跃礼包怎么返点券(和平精英活跃礼包怎么返点券的) 宝可梦朱紫怎么扔球(宝可梦 紫色) 王者荣耀被认定为未成年怎么办(王者荣耀被认证为未成年会怎么样) mulitibit无法导入blockchain钱包后怎么解决? 阴阳师万年竹值得练吗2022(阴阳师万年竹阵容搭配) 梦幻西游手游稀世藏宝图怎么获得(梦幻西游手游稀世珍品) TP钱包怎么把币转回交易所?一文学会TokenPocket转币 支持HECO火币生态链钱包有哪些?如何设置PC端以太坊钱包? SWAP是什么币种?SWAP币发展前景和价值分析 WNXM是什么币种?WNXM币未来前景及价值如何 HitBTC数字货币交易所注册流程全解析 DeFi聚合器什么意思?DeFi聚合器带来什么好处? ZT交易所怎么样?ZT交易所真的正规吗? 狗狗币价格最高的时候是多少钱?狗狗币背景介绍 暴走英雄坛上吊后保留什么(暴走英雄坛上吊保留什么物品) 区块链LINK币是什么币?Link币有潜力吗? Hitbtc交易所注册充值提现交易详细图文教程 一文读懂什么是蚂蚁链 比特币如何提现人民币?比特币提现教程 手游诛仙技能怎么设置(诛仙手游技能方案切换) 这3个APP都可以轻松赚钱(这3个app都可以轻松赚钱了) 冰原守卫者冰龙怎么获得(冰原守卫者哪个龙好) 2023年安卓手游有什么好玩(2021安卓游戏手机) 和平精英如何标记地点和载具(和平精英怎么标记地点或载具) cf蜀雪角色属性是什么(cf蜀雪角色属性在挑战有用吗) 外媒评M站近十年最佳RPG游戏:《艾尔登法环》登榜第二 宝可梦阿尔宙斯石板有什么用(阿尔宙斯石板的作用)

热门文章

推荐专题

更多>>

游戏推荐

更多>>