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

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

时间:2025-01-12 阅读:
特战英豪官网版

特战英豪官网版

  • 类型:射击空战
  • 大小: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》成为广为流传的术语。

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


带兵攻城的手机游戏有哪些(有没有带兵攻城的游戏) 宝可梦阿尔宙斯柔韧的尾巴任务怎么做(阿尔宙斯弱点) 双平台都可以玩的手游有哪些(双平台互通手游有哪些) 诛仙手游鬼王pk技能加点推荐(诛仙手游鬼王技能加点推荐2020) 妄想山海神罚巨兽在哪(妄想山海神兽遗迹是什么) 冰原守卫者最后的俄勒兰地图掉落有什么(冰原守卫者游戏视频) Exmo交易所怎么用?Exmo交易所使用教程 战国明日香武将战力提升之资源篇详解 资源篇介绍 MANA币发行总量多少?MNAN币的市场风险分析 宝可梦阿尔宙斯传说利一在哪里(精灵宝可梦啊尔宙斯) 王者荣耀诸葛亮S26怎么出装(王者诸葛亮如何出装) 王者荣耀聊天记录为什么会不见(王者的聊天记录有时候怎么看不见) imToken钱包2.0ETH钱包备份详细图片教程 宝可梦传说阿尔宙斯坐骑怎么获得(阿尔宙斯在哪捉) bt版放置挂机类手游有哪些(好玩的放置挂机类游戏) 纯白和弦树脂有什么用(纯白和弦wiki) 侠客风云传六脉神剑怎么学(侠客风云传六脉神剑学不会) Jaxx(钱包)Wallet新手注册及使用教程 cf老是闪退怎么解决(cf不停闪退) 可以抽卡的游戏有哪些有内置菜单(可以抽卡的手机游戏) okex和火币币安保证金是多少?okex和火币币安使用对比 比特币交易所app有哪些?常用比特币交易app盘点 有哪些良心卡牌放置类游戏(卡牌放置类游戏推荐) 和平精英3周年工卡怎么获得(和平精英三周年什么时候上线) 比特币钱包私钥在哪查看?比特派钱包查看私钥方法 消逝的光芒2怎么设置中文(消逝的光芒2怎么设置中文模式) 2023热门的角色扮演游戏有哪些(好玩的角色扮演回合制类手游) AT币是什么币种?Artfinity/AT币全面介绍 Chia奇亚币优势有哪些?Chia奇亚网络策略是什么? 英雄联盟电竞经理uzi怎么获得(lol电竞经理手游) 穿越火线哪个角色好用2022(穿越火线哪个角色最好) 创造与魔法甘蔗食谱一览(创造与魔法甘蔗食谱可以做什么) 抹茶交易所怎么充值?抹茶交易所是哪个国家的 cf荣耀枪王如何升到枪王之王(cf枪王怎么到荣耀枪王) 时空猎人琥珀星芒怎么获得(时空猎人星月怎么免费获得) 魔兽世界锻造有什么用2023(魔兽世界锻造有什么好处) 怎么投资数字货币赚钱?币安交易所买币卖币教程 消逝的光芒2人物对话没声音怎么办(消逝的光芒2中文配音) 冰原守卫者军团有啥用(冰原守卫者好玩吗) MySQL数据库安装(mysql数据库安装教程) 王者荣耀典韦怎么出装最厉害(《王者荣耀》典韦出装教学) 消逝的光芒2幸存者感知怎么按不出来(消逝的光芒幸存者技能怎么刷) CoinBase中国人怎么实名认证?coinbase能在中国用吗详解 消逝的光芒信徒无线电男孩在哪里(消逝的光芒无线电小孩) 诛仙手游诛仙剑怎么使用(诛仙手游中的剑玉在哪里弄) 什么手游网页游戏上线送vip(网页游戏会员app) 王者荣耀戈娅被动效果是什么(王者荣耀咲戈戈) 消逝的光芒动态模糊怎么关闭(消逝的光芒 动态图) 小狐狸钱包安装及OKExchain配置教程 王者荣耀怎么查以前的消费记录(王者荣耀怎么查历史消费) 我的世界一键挖矿怎么设置(我的世界一键挖矿怎么设置石头) 角色扮演手游合集哪个好(角色扮演手游排行榜十大角色手游排行榜) 宝可梦传说阿尔宙斯黏美儿怎么进化(黏美伊尔在第几级进化) 苹果手机怎么清理内存垃圾清理?八招教你清理出10G垃圾 暴走英雄坛上吊后保留什么(暴走英雄坛上吊保留什么物品) 火币网提现手续费多少钱?火币网提现详细教程 深入解读什么是数字货币及比特币阴跌 最全的国外翻译兼职网站大汇总(国外翻译兼职平台) 和平精英3周年安全区探测器怎么用(和平精英安全检测怎么通过) 魔兽世界怀旧服沙塔尔声望怎么刷(tbc怀旧服沙塔尔声望怎么刷) 放开那三国3哪一些武将好(放开那三国3什么英雄搭配最厉害啊?) 如何做自媒体才能赚钱?自媒体赚钱月入8000方法大揭秘 宝可梦传说阿尔宙斯花岩怪只有一只吗(神奇宝贝阿尔宙斯有几块石板) BCH是什么币?BCH币价值及未来前景分析 数字货币流通量和总量哪个更能影响价格? Sunbit交易所充值与提现新手操作教程 什么是合成资产?合成资产在区块链行业中的应用 和平精英手册寻宝需要多少积分(和平精英手册寻宝多少积分能到终点) 荒野大镖客2可以联机吗(荒野大镖客2可以联机吗怎么玩) 诛仙手游文曲试炼攻略大全(文曲试炼答题诛仙手游官方攻略站) dnf史诗之路如何获得史诗套装(dnf史诗之路怎么刷划算) OKFLY合约地址是什么?OKFLY合约地址有什么用? 比特币合约平台有哪些?最好的比特币合约平台是哪个 诛仙手游暴击和爆伤加成怎么算法(诛仙手游暴击暴伤暴减法宝) 魔兽世界荣耀印记有什么用(魔兽世界9.0荣耀印记怎么快速获得) 矿池算力是什么意思?本地算力与矿池算力的关系 魔兽世界瑞文戴尔之剑怎么获取(瑞文戴尔之剑nga) 宝可梦阿尔宙斯可达鸭怎么进化(宝可梦阿尔宙斯视频) 什么游戏盒子能够免费玩罪恶都市(哪个游戏盒子有罪恶都市) 蜀门手游无双怎么刷(蜀门手游双人坐骑怎么获得) 百闻牌秘闻第四章第一节攻略 秘闻第四章第一节如何打 币圈投资数字货币必备APP有哪些?_币圈交易平台app排名 DeFi面临的最大挑战,该如何解决? 什么是Chia(奇亚)?chia挖矿详细教程Windows版 2023热门bt不氪金手游有哪些(2020不氪金手游排行榜) 比特派钱包收发EOS币使用教程 外媒评10款最佳动漫RPG(动漫风格的rpg游戏推荐) 中国允许发行虚拟币吗?_中国十大虚拟货币排名 艾尔登法环哪里交易(艾尔登法环17分钟演示) 浅谈各大职业利弊与推荐(热血江湖手游职业推荐2021) Newdex交易所怎么样?Newdex交易所正规安全吗? 区块链百科:密码朋克是什么意思? cf安全分怎么快速恢复(cf安全分查询官网) 原神重岩之意怎么触发(原神重岩之意在哪) 如何将交易所的币提到钱包 英雄联盟手游蒙多出装符文是什么 蒙多出装符文攻略 BNB/币安币发行日期是哪天?2021年币安币前景分析 王者荣耀芈月怎么出装2022(王者荣耀芈月怎么出装备) 有哪一款不氪金页游好玩(不氪金的网页游戏) 狗狗币一天挖十万个是真的吗?挖矿多久挖一个狗狗币

热门文章

推荐专题

更多>>

游戏推荐

更多>>