我们从密码学角度来聊聊助记词。
随着区块链钱包的发展和分层确定性(HD)钱包技术的普及,越来越多的用户开始熟悉了一个叫“助记词”的概念,很多人都已经习惯了从一开始使用一个钱包的时候,就先抄好单词认真保管,并且他们对于助记词的重要性也有了很深刻的理解。

说到助记词,有人可能会问了,为什么有些钱包是12个单词,另一些则是24个单词的助记词呢?是不是单词越多就越安全呢?

其实,与大部分人的直觉相反,从密码学的角度上讲,12单词的安全强度和24个单词是一样的,12个单词已经足够安全,增加单词数并不能提高安全级别。

虽然按照比特币BIP32/44/39规范,从 2048个单词词库中选择24个助记词的概率空间>2^256,而选择 12 个助记词的概率空间>2^128,从概率空间上看起来24个助记词的安全强度好像是要高很多,但本文将从密码学的角度给你澄清这一事实,即“12个助记词和24个助记词的密码学安全强度是一样的”。

首先我们需要理解一个很著名的数学理论,叫“生日悖论”(Birthday Paradox)。

问大家一个问题,假设一个班级里有 23 个人,问这个班里有两个生日相同的人的概率有多大?直觉上,大家可能会觉得概率很低,几乎不可能,一年有 365 天呢,两个人同一天生的概率得是多小啊。但数学往往就是反直觉的,其真实概率要大于 50%,如果是 30 个人的班级,概率则会大于 70%, 60 个人则大于 99% ,也就是几乎肯定有两个人生日相同,你敢信不?

这就是著名的“生日悖论”

生日悖论这一简单的概率理论对于密码学的影响是巨大的,因为基于这一理论产生了一种名为“生日攻击”的密码学攻击手段,基于这一攻击手段,所有的哈希函数(Hash)的密码学安全强度都会降低到其概率空间位数的1/2,即 2^n 概率空间的密码学安全强度为 2^(n/2),如果是 2^256,则其安全强度为 2^128。

好了,在进一步讲述生日攻击之前,我们还要做点科普,学习几个密码学基本概念:

  1. 原像攻击:我们都知道哈希函数是不可逆的,y=hash(x),知道y,我们是无法得到x的。如果有一种攻击方式能使得您得到x,那这种攻击方式就叫做原像攻击;

  2. 次原像攻击:如果有一种攻击方式能让你找到另一个x’,使得 hash(x’) 也等于 y,即y=hash(x)=hash(x’),这种找到了另一个x’的攻击方式叫做次原像攻击;

  3. 碰撞攻击:碰撞攻击的意思是,虽然我们找不到原像,也找不到次原像,但通过一定范围内的计算,能够找到一对儿碰撞hash(z)=hash(z’),就像虽然一年有365天,但每23个人就有50%的概率出现一次生日的碰撞,这使得我们不需要遍历365次,而只需随机抽取23个数就有50%的可能性找到一对儿碰撞,这就是碰撞攻击;

对原像攻击、次原像攻击和碰撞攻击有了基本的理解了之后,您就应该能明白,原像或次原像攻击都很难,因为几乎要遍历整个概率空间,如果算法没有漏洞的话,对于 2^256 的概率空间,您就需要遍历几乎 2^256 次才有希望找到一个原像或者次原像。而对于碰撞攻击来说,您只需要遍历 2^128 次,就能找到一对儿碰撞。

那对于密码学签名的碰撞攻击又该如何进行呢?

我们假设你要对一个消息m做密码学签名,攻击者知道m是正确的消息,并且准备了一份伪造的消息m’,毫无疑问,hash(m)<>hash(m’),拿着m’是骗不了你的。

现在,攻击者准备了大量的稍做修改的m,又准备了大量的稍做修改的m’,这里所提到的“稍作修改”并不影响m的正确性和m’的伪造性。

然后,攻击者再从大量的m和大量的m’中找到一对儿hash(m)=hash(m’),其难度是2(n/2),也就是说,对于2256的概率空间,攻击者需要准备2128份正确消息m和2128份伪造消息m’,从中就能找到一对儿碰撞hash(m)=hash(m’)。

最后,攻击者拿碰撞到的m让你做密码学签名,并将m替换为m’,攻击成功。

好了,现在大家应该基本上理解了生日悖论和生日攻击的基本原理了,对于密码学货币来说,2256的概率空间其密码学安全强度为2128,12个单词的助记词的概率空间也是2^128,增加助记词的概率空间并不能提高密码学安全强度,对于钱包助记词来说,12个单词和24个单词一样安全的。

比特币/以太坊/加密货币/网络/区块链/钱包助记词:密码学的角度上,24个单词比12个单词更安全吗相关推荐

  1. 开源项目event-stream被注入恶意代码,盗取区块链钱包助记词

    我是今天上午朋友说的时候才发现的这个问题, 这篇推文及其附带的 GitHub 链接大体是说每周 npm 下载量超过 200 万的 package 被注入了恶意代码,黑客利用该恶意代码访问热门 Java ...

  2. 关于区块链的助记词以及BTC地址,私钥,公钥,ETH地址获取的方法

    VUE项目中的获取助记词的方式 安装需要的依赖环境 如果你安装了国内的淘宝镜像了 ,建议你用cnpm bip39:npm install bip39 bip32:npm install bip32 e ...

  3. 从2018年以太坊统计数据看区块链发展趋势

    今年6月,我们发布了"以太坊网络状态",重点介绍了整个网络的一些关键数据和统计数据.六个月后,即将在2018年结束时,我们处于长期"加密货币冬天"的尾声,201 ...

  4. 哈佛梅森学者邹传伟:泡沫与机遇——数字加密货币和区块链金融九问

    哈佛梅森学者邹传伟:泡沫与机遇--数字加密货币和区块链金融九问 原创 2018-01-23 邹传伟 南湖互联网金融评论 点击上方南湖互联网金融评论 关注我们 作者简介:邹传伟,统计学学士.经济学硕士和 ...

  5. 加密货币、区块链不断贴近生活,阿里、腾讯、脸书等大厂们在做什么?

    北京时间5月12日凌晨3点23分,高度为63万的比特币区块被蚂蚁矿池(AntPool)挖出,四年一度的减半盛事落下帷幕.减半后,虽然比特币的价格有所起伏,但并没有出现所谓的"减半行情&quo ...

  6. 以太坊(Ethereum) - Ganache本地区块链

    章节 以太坊(Ethereum) – 是什么 以太坊(Ethereum) – 什么是智能合约 以太坊(Ethereum) – 以太币 以太坊(Ethereum) – 虚拟机(E.V.M.) 以太坊(E ...

  7. Herev Falciani推出新的加密货币和区块链项目

    据外媒报道,Herev Falciani正在与西班牙的金融科技专家和学者合作,以开发一种易于规范化的加密货币,并使用加密货币和区块链技术来打击欺诈和洗钱. Herev Falciani其人 提到Her ...

  8. android web3j 代币查询_wallet-eth 以太坊代币钱包 助记词 私钥 keystore 转账

    wallet-eth-android wallet-eth 以太坊代币钱包 助记词 私钥 keystore 转账(bip39.bip32.bip44.web3j) 生成钱包地址 // 生成钱包地址 W ...

  9. coldwallet java eth_wallet-eth 以太坊代币钱包 助记词 私钥 keystore 转账

    wallet-eth-android wallet-eth 以太坊代币钱包 助记词 私钥 keystore 转账(bip39.bip32.bip44.web3j) 生成钱包地址 // 生成钱包地址 W ...

最新文章

  1. 101所被《人民日报》点名的大学:低调却颇有实力!
  2. Linux驱动修炼之道-SPI驱动框架源码分析(上)
  3. android java服务器文件传输_java – 使用FTPS将文件从android传输到服务器
  4. 在Silverlight中读取指定URL图片包数据
  5. 12.01 晚 心情 阴雨 既然能力支撑不起自己的野心就先沉下心来努力学习好让有一天重新出现在江湖大放光芒...
  6. 帆软函数TOIMAGE应用
  7. hadoop 如何连beeline_Hadoop家族新成员Hbase重磅来袭
  8. mysql数据词典生成markdown_老板让我把数据库字典导出到Markdown格式的文件
  9. mysql 的时间函数
  10. 恒强制版系统980_华为mate40将首批升级鸿蒙2.0系统?
  11. 通俗易懂谈强化学习之Q-Learning算法实战
  12. 【Java基础】Java网络编程基础
  13. Microsoft Teams安排 Teams 实时事件
  14. 移动端超高品质的Axure UI设计/交互设计组件库,几乎涵盖了所有的组件
  15. REMOTE HOST IDENTIFICATION HAS CHANGED问题解决
  16. grad-cam用于SSD目标检测
  17. gridview的ButtonField
  18. MySQL 02 初体验
  19. Bitbucket使用说明与SourceTree的使用
  20. 华为钱包扫码云闪付_支持华为钱包云闪付的有几个机型

热门文章

  1. 国家食品药品监督管理局 前有27家网站有资格向个人销售非处方药
  2. ESP8266-AP模式作服务器
  3. pd.concat()
  4. android仿摩拜贴纸碰撞|气泡碰撞
  5. [SWPU2019]Web6
  6. spring boot 外部配置文件1-spring.config.location与spring.config.additional-location的区别
  7. PAT-A-1062 Talent and Virtue 【排序】
  8. 【Proteus仿真】步进电机转速数码管显示
  9. The trip on Taiwan
  10. 今夜喜雨 | 直线线性三角化理论