• 简体版 | 繁體版
  • 联系我们
  • 加入我们
  • 关于我们
  •  
  • 首页
  • 快讯
  • 价值号
  • 视频
  • 专题
  • 入驻价值号
  • 碳链APP
    微信公众号

    扫码下载App

  • 登录
  • 微信公众号

    微信公众号

导航
  • 首页
  • 快讯
  • 区块链+
  • 价值号
  • 视频
  • 专题
  • DeFi优选
碳链价值APP
专注服务于金融科技和区块链
立即打开

揭秘以太坊 Vanity 生成器 Profanity 私钥破解漏洞

慢雾科技慢雾科技  •  2022-09-21
本文总结了 Profanity 的漏洞成因,同时也分析了对这类随机性问题的破解可能性。

By: Johan

近日,Wintermute 钱包遭攻击损失约 1.6 亿美元,被盗原因是 Wintermute 为了节省 Gas 费使用了 Profanity 来创建 Vanity 钱包(开头 0x0000000),此前去中心化交易所聚合器 1inch 发布了一份安全披露报告,声称通过名为 Profanity 的工具创建的某些以太坊地址存在严重漏洞。慢雾安全团队对此事件进行了深入分析,并分享给大家。

椭圆曲线加密(ECC)是区块链领域最常用的加密算法,ECC 是一个加密算法大类,它包含了多种不同的曲线和加密算法,例如 secp256k1/secp256r1/ed25519/schnorr 等,比特币和以太坊都是使用 secp256k1 加密。

在使用以太坊时,我们首先会生成一个私人账号(以 0x 开头 + 40 字母),具体过程如下:

(1)生成一个不可预测的随机数种子,通常基于系统的 /dev/urandom 随机发生器;

(2)利用随机种子生成一个私钥(256 位,32 字节)

(3)通过私钥生成公钥(64 字节)

(4)公钥使用 keccak-256 哈希算法,取哈希值十六进制字符串后 40 个字母,开头加上 0x 生成最终的以太坊地址。

特别记一下这些公私钥的大小,因为它关乎我们后面要做的计算量。

这里需要提的一个关键公式:

Q = kG

这是私钥推导出公钥的核心算法,私钥推出公钥计算很简单,但反向推导几乎不可能。

Q 是公钥,k 是私钥,k 由有限域内的大整数构成,相当相当大,以致于几乎不可能去猜测,G 是椭圆曲线上的一个点,默认是一个固定的值,kG 就是 k 个 G 点相加(椭圆曲线的点相加不是简单的实数相加,计算方法这里不展开讨论)。

如果我们想要穷举以太坊账号,找到 Vitalik 的私钥,那么在知道他的公钥后,最多需要进行 2^256 (2 的 256 次方)次的 Q = kG 计算,对大数字我们天然不敏感,所以我把它换算成工作量,就是目前一台苹果 M1 电脑大概 40M/s 的速率,那么大概需要的年份是 8 后面跟上 62 个零。一万年太久,只争朝夕。

有一些错误的私钥生成方法,会导致私钥的取值范围变成更小范围内的数值,变得可猜解。常见的原因有:

(1)随机数种子不够随机,例如使用了时间戳做为随机数种子,那么我们只要穷举过去一段时间所有的时间戳就能找到生成公钥所用的种子和私钥;

(2)软件算法存在缺陷,导致随机强度不够(Profanity 正是存在这样的缺陷);

Profanity 的设计目的,是帮助人们生成一个具有特殊视觉效果的账号,比如以特殊字符开头或者结尾的账号,另一方面,一些开发者使用它来生成开头为很多个 0 的账号,如 0x00000000ae347930bd1e7b0f35588b92280f9e75,它可以在调用智能合约时达到节省 Gas 的效果。

Profanity 为了更快地爆破出 Vanity Address,只在程序的开头获取了一次随机数,后续所有的私钥都是基于这个随机数迭代扩展而来,我们来看一下它的随机数生成算法:

Dispatcher.cppcl_ulong4 Dispatcher::Device::createSeed() {#ifdef PROFANITY_DEBUG cl_ulong4 r; r.s[0] = 1; r.s[1] = 1; r.s[2] = 1; r.s[3] = 1; return r;#else // Randomize private keysstd::random_device rd; std::mt19937_64 eng(rd()); std::uniform_int_distribution<cl_ulong> distr; cl_ulong4 r; r.s[0] = distr(eng); r.s[1] = distr(eng); r.s[2] = distr(eng); r.s[3] = distr(eng); return r;#endif}

这里使用了 random_device 来获取系统提供的随机数,这个随机数源是满足加密所需要的强度的。但是当我们注意到变量类型时,我们发现 rd() 返回的是一个 32 位长度的随机值,上文我们提到一个私钥是 256 位长度,那么一次获取随机数的过程并不能填充整个私钥,于是 Profanity 使用 mt19937_64 产生随机数来填充整个私钥。mt19937_64 和 random_device 的随机算法有着本质的区别,mt19937_64 是确定性的,它的随机性依赖于输入的随机数,并不产出新的随机性。

也就是说,如果 rd() 传递给 mt19937_64 的值在某个范围,那么 distr(eng) 的值也在对应的某个范围,createSeed 函数返回的 r 值自然也是在某一个范围。

关键点来了: rd() 的所有可能性是 2^32,离私钥的安全性(2^256)相差了 224 个数量级,但是 2^32 这个数量级也挺大的,那么它需要多少计算量才能破解出私钥?

Profanity 在获取到第一个私钥 SeedPrivateKey 以后,为了碰撞出需要的账号地址,会通过一个固定的算法不断跌代这个私钥,最多 200 万次(数值来源于 1inch 披露的文章),这个公钥的计算方式可表示为:

PublicKey = kG = (SeedPrivateKey + Iterator)*G

Iterator 是一个递增的数字,当 PublicKey 已知时,我们可以通过穷举 SeedPrivateKey 和 Iterator 来得到 SeedPrivateKey,计算量大概为 2^32 乘以 200 万次,在 1 台 M1 电脑上需要 60 多年时间,看上去这辈子有希望 :D。如果我用大量算力更大的显卡进行并行计算,那么在几天甚至几个小时碰撞出想要的结果也完全可以。

刚好最近以太坊转 PoS 共识,存在大量的闲置的显卡算力,如果矿工拿显卡来破解这个私钥,那不是分分钟就能成功?当然这个阴谋论没有意义,我们只想研究破解的可能性。我们更希望能用不那么暴力的方法来解开私钥。

我们稍微移动一下等式两边,对上面的公式进行变换,可得:

SeedPrivateKey*G = PublicKey - Iterator*G

我们可以思考另一种攻击方法,如果首先预计算 SeedPrivateKey*G,需要最多 256 G 左右的内存空间去存储计算结果,在一台普通的服务器上完全可以做到,所需要的计算是 2^32 次,大概几十分钟就可以完成。然后我们再把需要破解的 PublicKey 代入等式右边,然后对 Iterator 跌代碰撞,所需要的计算量大概是 200 万次,还有 200 万次的查表,所需要的时间是秒级。这,就有意思了,原来 32 位的随机数是这么的微不足道,任何人都有可能在几十分钟内还原出私钥。

至此,我们总结出了 Profanity 的漏洞成因,是由于未对 256 位私钥进行足够随机播种,导致私钥取值范围严重降低。同时也分析了对这类随机性问题的破解可能性,希望能给大家一些启发。

展开全文
打开碳链价值APP  查看更多精彩资讯
声明:本文内容为作者独立观点,不代表碳链价值立场,且不构成任何投资理财建议。
0 0
以太坊私钥

扫一扫,分享到微信

相关推荐

Abelian 上市前夜,创始人 Duncan 博士详解项目愿景、技术、产品和生态 价值号

Abelian 上市前夜,创始人 Duncan 博士详解项目愿景、技术、产品和生态

Metatrend元潮 2023-02-03 价值号
公链L1 链隐私赛道量子计算抗量子计算以太坊
如果说 Aptos 的爆发更多是来自资本的力量,那么作为全网首个抗量子隐私 L1 公链的 Abelian,最有可能凭借其独一无二的技术基因,成为新一轮公链争霸赛有力的角逐者之一,毕竟量子计算留给区块链的时间已经不多了。
详解2023年以太坊和Layer 1的主要趋势 价值号

详解2023年以太坊和Layer 1的主要趋势

达瓴智库 2023-01-30 价值号
以太坊区块链ETH
以太坊合并升级后进入了更高的阶段,优化了生态的底层,带来正效应。
Foresight Ventures:以太坊迈向 full sharding 的第一步,EIP-4844 全面解析 深度

Foresight Ventures:以太坊迈向 full sharding 的第一步,EIP-4844 全面解析

Foresight News 2023-01-29 深度
以太坊
Sharding 是以太坊扩容的长久之计,也是一个价值巨大、意义深远的长期方案。

碳链快讯更多 ›

2023-02-07

OKX宣布将向土耳其地震灾区捐款100万里拉

2023-02-07

SPACE ID 完成 1000 万美元战略轮融资,Polychain Capital 和 dao5 领投

2023-02-07

国际清算银行正开发稳定币监控系统,以确保发行方保持足够储备资产

2023-02-07

ENS DAO 社区已通过“出售 1 万枚 ETH 来支付运营成本”的链上提案

2023-02-07

OpenAI跻身全球TOP50网站,1月访问量突破6.72亿

2023-02-07

北京市监局提醒警惕元宇宙、NFT 炒作

2023-02-07

360计划推出类ChatGPT产品

2023-02-07

蓝色光标:公司正在积极试用ChatGPT技术

2023-02-07

加密矿企Layer1 CEO指控两名董事会成员利用多数股权攫取公司收益

2023-02-07

软银愿景基金第三财季亏损约 49.92 亿美元,投资亏损约 55.26 亿美元

2023-02-07

韩国国民议会将加快制定《数字资产基本法》,最早本月举行公开听证会

2023-02-07

联合国报告:朝鲜黑客2022年盗取的加密货币为历年最多

2023-02-07

DCG 已半价出售约四分之一的灰度以太坊信托基金股份,筹款达 2200 万美元

2023-02-07

Aave创始人:V3升级完全是为了管理风险

2023-02-07

欧易Web3钱包与Avalanche生态借贷协议Benqi达成官方合作

2023-02-07

a16z:已将约 4000 万枚 UNI 投票权无条件委托给外部团体

2023-02-07

加密储蓄公司 Donut:Genesis 的重组计划债权回收率或达 80% 以上

2023-02-07

香港监管机构正扩招负责虚拟资产的职位

2023-02-07

Yuga Labs 在 Bored Ape NFT 商标诉讼中达成和解

2023-02-07

区块链数据分析公司 Elementus 获 1000 万美元 A-2 轮融资,ParaFi Capital 领投

2023-02-07

SBF 获电子通信保释,将被允许使用 FaceTime、Zoom、电子邮件等消息应用程序

2023-02-07

英国央行和财政部邀请公众参与制定数字英镑计划

2023-02-07

Genesis 已就重组计划和母公司 DCG 、债权人 Gemini 达成初步协议

2023-02-07

FTX 已敦促南希·佩洛西等政客在 2 月 28 日前归还此前的政治捐款

2023-02-06

OpenSea 推出内测计划,现已开放申请

2023-02-06

彭博社:区块链金融公司 Figure 放弃 SPAC 上市,并寻求 1 亿美元融资

2023-02-06

Louis Vuitton将与草间弥生发行1万枚联名款NFT并上架OpenSea

2023-02-06

欧易Web3钱包与去中心化交易所BabyDogeSwap达成官方合作

2023-02-06

ARK Invest:未来十年加密货币和智能合约可分别创造 20 万亿和 5 万亿美元的市场价值

2023-02-06

区块链初创公司 Super Block 完成约 722 万美元 A 轮融资,SK、Netmarble 等参投

2023-02-06

徐明星:OKX 暂无推出稳定币的计划

2023-02-06

加密 KOL:Debt DAO 发行的 FTX 债券代币 FUD 可能违反证券法

2023-02-06

普华永道:全球共有 11 个支持加密货币合法的国家/地区

2023-02-06

Visa 正在测试以太坊上的 USDC 大额支付结算系统

2023-02-05

a16z 投票反对在 BNB Chain 上部署 Uniswap V3,希望部署采用 LayerZero 桥接

2023-02-05

集成ChatGPT-4的微软Bing于今日短暂上线

2023-02-05

多名投资人退出前 Moonbirds 首席运营官 Ryan Carson 创立的新项目「Flux」

2023-02-05

数据:1 月份 NFT 交易量达 9.46 亿美元,创 2022 年 6 月以来最高记录

2023-02-05

Yuga Labs 联创:Dookey Dash 得分审核与实时作弊检测分开,玩家得分在审核后或被减为零

2023-02-04

Pioneer宣布获香证监会虚拟资产管理牌照,可管理100%虚拟资产

2023-02-04

去中心化数据系统 Inery 完成新一轮融资,Truth Ventures 参投

2023-02-04

美国司法部机构 U.S. Trustee 代表任命成立 Genesis 破产案中代表无担保债权人的七人委员会

2023-02-04

Arthur Hayes:Zhu Su 新 CEX 项目“GTX”已完成融资

2023-02-04

Microstrategy 创始人:查理·芒格若处于第三世界,会比我更加看好比特币

2023-02-03

慢雾:Orion Protocol 被黑分析

2023-02-03

韩国金融服务委员会定于2月6日公布「证券型代币发行」相关制度指南

2023-02-03

MicroStrategy首席财务官:公司考虑利用比特币波动,进行更多加密货币交易

2023-02-03

以太坊核心开发者:计划2月7日在Zhejiang测试网上激活上海升级

2023-02-03

欧易 Web3 钱包上线币种行情功能

2023-02-03

Damus:正通过比特币闪电网络随机向用户发放小额比特币

推荐文章

  • PandaDAO 解散提案背后:高效和民主只能二选一吗?

    2022-09-21

  • 社交代币设计的 10 个要点:如何解决「社交代币悖论」问题 ?

    2022-09-19

  • 以太坊的8位创始人,如今都怎么样了?

    2022-09-19

  • 8个理论证明PoW是未来货币的根基

    2022-09-18

  • Vitalik:什么样的 Layer3 才有意义

    2022-09-18

价值号更多 ›

吉时通信
吉时通信
文章: 138
  • 从DNS到ENS:域名的Web3时代
  • Web3开发者的盛宴:斯坦福区块链周见闻
  • 以太坊生态之Layer2:技术融合,应用为王
链集市ChainMarket
链集市ChainMarket
文章: 201
  • 为什么区块链技术对智慧城市至关重要?
  • 区块链产业周刊|白宫科技政策办公室发布针对18个CBDC系统的设计分析报告;央视网上线数字藏品平台央数藏;微博推出数藏头像功能
  • 区块链技术将如何影响新能源汽车市场的发展?
Unitimes
Unitimes
文章: 401
  • 为什么以太坊是最好的选择?
  • 合并完成:以太坊开启新时代
  • 时代杂志:以太坊合并为何如此重要?
换一批

热门标签

新基建 比特币 以太坊 矿业 DeFi 共识对话 区块链+ 研报 美联储 央行数字货币 无限QE 加密衍生品 AI 云计算 大数据 5G 政策 交易所 稳定币 电子支付 Libra 算力产业 联盟链 公链 区块链 加密货币 Nervos Cosmos EOS STO

邮件订阅

及时、全面、专业、准确的资讯与数据,致力于为区块链爱好者以及数字货币投资者提供最好的服务。

App内打开

邮件订阅

及时、全面、专业、准确的资讯与数据,致力于为区块链爱好者以及数字货币投资者提供最好的服务。

Moshou

碳链价值是集资讯、行情、数据于一身的区块链信息服务平台,我们追求及时、全面、专业、精确的资讯与数据,致力于为区块链创新者和数字货币投资者提供优质的服务。

关于我们 加入我们 联系我们 隐私条款
微信公众号

扫一扫关注微信公众号

Copyright © 2018-2020 碳链价值 京ICP备18046423号
下载碳链App

下载碳链App

微信公众号

微信公众号

微信公众号

微信公众号

打赏文章作者

支付宝打赏二维码 支付宝扫一扫打赏
微信打赏二维码 微信扫一扫打赏

# 热门搜索 #

CBDC 比特币 DeFi 以太坊 区块链