【主会场】 比特币与区块链密码技术与思考 王小云

blockchain

2019/08/04 发布于 技术 分类

文字内容
1. 比特币与区块链密码技术与思考 报 告 人: 王小云 报告日期 : 2017年07月06日 1
2. CONTENTS PAGE 报 告 提 纲 目录页 第一部分 Hash函数简介 第二部分 比特币 第三部分 区块链 第四部分 Zerocash 2
3. CONTENTS PAGE 目录页 第一部分 Hash函数简介 第二部分 比特币 第三部分 区块链 第四部分 Zerocash 3
4. (一)哈希函数碰撞攻击理论 哈希函数是一类密码算法,保障多类密码系统的安全性, 如电子签名、计算机认证系统、数字证书、电子货币、比 特币、区块链、可证明安全密码系统等关键部件 智能卡 一个哈希函数的破解可导致众多基于该哈希函数 的密码系统被破解:密码学的基本工具 4
5. Hash函数简介 Hash函数:又称杂凑函数、散列函数、数字指纹等,将任 意长的消息压缩为一个固定长度的摘要,称为数字指纹 1010111 0010100 11011101 00010101 Hash函数 128、160、192、256、 384或512 位比特串 数学表示:Y=H(M) , {0,1}* {0,1}n 计算机中的Hash表:用于存储和查找,源于1953年IBM 的历史性讨论 密码学中的Hash函数:称为密码Hash函数,具有特定的 安全属性 5
6. Hash函数安全属性(1989年) H 密码Hash函数H:Y=H(M) M Y Y为k比特 抗原像攻击:给定任意Hash值Y,恢复消息M 是困难的 2k次计算 Y H-1 搜索攻击 M 保护口令M的安全 抗第二原像攻击:给定消息M1 ,计算另一消息M2 使 H(M1)=H(M2)是困难的2k次计算 防止伪造电子签名 抗碰撞性:找到不同消息(M1, M2) 有相同指纹,即 H(M1)=H(M2)是困难的: 2k/2次计算 防止伪造电子签名 M1 M2 H Y 生日攻击复杂度 6
7. 专门设计的重要Hash函数算法 MD5 1992年由Rivest设计 输出长度128比特 SHA-1(ISO/IEC密码算 法标准) 1995年由NIST提出 输出长度160比特 SHA-2(ISO/IEC标准) 2002年由NIST提出 输出长度256,384,512比特 Whirlpool(ISO/IEC标准) 2000年由Rijmen等设计 输出长度512比特 SHA-3(ISO/IEC标准草案) 2007年由Daemen等设计 输出长度256,384,512比特 SM3(中国密码算法标准, ISO/IEC标准草案) 2010年由王小云等设计 输出长度256比特 7
8. 简单应用:数字(电子)签名 电子签名 RSA算法 Hash 数字签名 椭圆曲线 应用实例:金融安全 银行加密 数字签名算法 交易验 证信息 交易信息 银行生成签名 比对是否 确认支付 银行接收 8
9. 简单应用:Hash在登陆认证中的应用 用户提供用户名和密码,服务器在 数据库中查找用户名,获取salt值, 计算Hash(salt+password)与数据库 中比对,相同则通过认证 避免黑客/管理员通过据库获取用户密码 user account salt Hash(salt + password) john@hotmail.com 2dc7fcc... 1a74404cb136dd60041dbf6 94e5c2ec0e7d15b42 betty@gmail.com afadb2f... e33ab75f29a9cf3f70d3fd14 a7f47cd752e9c550 ... ... ... 9
10. 简单应用:Hash在密钥衍生中应用 Hash函数可以作为密钥衍生函数 同步计算下一结果 New pwd = Hash(pwd) 广泛应用于RFID、卫星通讯等密码系统中 10
11. CONTENTS PAGE 目录页 第一部分 第二部分 Hash函数简介 比特币 第三部分 区块链 第五部分 Zerocash 11
12. 比特币 由“中本聪”于2009年提出的一种去中心化的电子 货币系统 去中心化:没有权威的发行及维护机构,每个人可 以自愿加入或退出 电子货币:由一组01串组成 基于Hash的计算原像、第二原 像以及碰撞难, 灵活安全的绑定技术,比特币安全可靠的根本
13. Hash函数应用实例---比特币(弱化的原像解) 通过搜索满足特定输出条件的SHA-256的原像分组解生成 比特币和绑定交易 比特币的生成:求解SHA-256的一个原像,使得Hash值的 前60比特为0,计算原像的复杂度为260次运算 CPU, GPU, FPGA, ASIC和cloud mining等方式计算 目前比特币区块链技术(带全球交易信息的原像解)成为 全球关注的去中心化技术
14. 比特币 比特币整体构架
15. 比特币 比特币是一套独立的、去中心的货币系统,不像网 银、支付宝等电子货币运转依赖于银行 比特币的产生及支付均根据一套既定规则,该规则 的运作依赖于密码学及其背后的数学问题 由产生、交易、验证交易(挖矿)三个部分组成 产生 挖矿 交易
16. 比特币 产生:所有的比特币最初均来源于“系统”,系统奖励 成功“挖矿”的参与者一定数额的比特币 “挖矿”的奖励随着已有比特币数量降低,保证产生 比特币的总量固定 交易:每个交易包含(发送方、发送金额、接收方、金 额来源)几个关键信息,交易者需要将交易信息广播 验证交易(挖矿):检查数个交易的合法性、将其打包 且使其满足上述的特定要求的过程 三个过程构成了一个循环,推动比特币在没有中心运营 的情况下仍然能够不断运转
17. 比特币 合法交易 交易:发送方、发送金额、接收方、金额来源 用户生成公钥、私钥对,公钥代表交易双方身份 验证发送方金额来源是否合法,交易金额是否满足等 发送方对交易进行签名 数字签名要求: 抗密钥恢复攻击、 抗伪造、抗抵赖, 确定身份的唯一保障 17
18. 比特币 “挖矿”规则(创建区块) 每个区块由以下几个要素构成:区块Hash值、 前一个区块Hash值、Nonce、时间、多个交易 组成的树 工作量证明机制(POW):随机选Nonce 值,使得该 区块的Hash值中前面有x个0,x确定挖矿难度,保证区 块生成时间约为 10 min,可动态调整 如:x=60 ,则大概需要 260 次运算 由于Hash 的抗原像攻击的特性,挖矿是困难的; 因Hash输出是均匀的,能估计每次挖矿的难度从而进行 动态调整 18
19. 比特币 从区块到区块链 比特币中只承认最长的链 当有用户试图重复花费同一笔比特币时,则会导致“ 分叉”(同一个区块链到多个后续区块上) 只承认最长的链,因此重复花费时仅有其中一个交易能够得到 承认,而另一个由于剩余金额不足会被判断为非法交易 记录在区块链上的交易也可能因被更长的链取代而失 效,一般确认交易需要等待 6 个区块生成(约60 min) 19
20. 针对比特币的攻击与防范 私钥攻击与防范 1 比特币账户的唯一拥有权在于私钥,私钥遭到破坏或 被窃取都将导致账户无法使用,且没有恢复办法 防范要求保护私钥 使用离线的硬件设备存储、纸钱包(将私钥记录记 录在纸上并保存在保险箱里)、脑钱包(通过函数 构造私钥与一组词句的映射,记忆该词句) 多重签名及阈值签名技术(利用秘密共享技术,将 私钥分成 n 块,须持有其中 k 块方可恢复私钥, Goldfeder et al.,2014. Bamert et al., 2014) 20
21. 针对比特币的攻击与防范 私钥攻击与防范 2 比特币签名使用 ECDSA (椭圆曲线签名)技术,其特 点要求每次签名需要选择一个随机数,如果随机数选 择不够随机,如:在两次签名中使用了相似甚至相同 的随机数,会导致秘钥泄露(Howgrave-Graham et al., 2001. Bos et al., 2014) 防范要求选取合适的随机数生成器,并规范代码实现 ,防止因为人为因素导致的随机数质量降低 21
22. 针对比特币的攻击与防范 51%攻击与防范 区块链分叉时选择最长的链,而链的生成速度与计算 能力直接相关,当攻击者掌握51%的计算能力,就能够 任意选择他希望的交易加入区块链而拒绝他不希望的 交易(Miller et al. 2014) 这种攻击无法防范,但攻击的难度与全网计算能力相 关,随着比特币规模的扩大难度也越来越高 22
23. 针对比特币的攻击与防范 重复花费攻击与防范 在等待足够多的区块后,重复花费攻击会失效,但由 于需要的时间比较长(约 60 min),一种 0 证明交易 机制被广泛研究以满足实际需求,即将交易广播后就 认为交易成功,对这种 0 证明交易机制存在重复花费 攻击 (Finney, 2011) 这种攻击由比特币的特点决定,对每一笔交易的确认 都是一次等待时间与交易风险的权衡,最有效的办法 是等待足够长的时间 23
24. 针对比特币的攻击与防范 自私挖矿攻击与防范 比特币的运转由矿工的“挖矿”工作所驱动,同时给 矿工大量的比特币作为回报,为了追逐最大利益,矿 工可以采取一些特殊的策略,如:在较短时间成功“ 挖矿”后,自私的矿工并不公开这一区块,而是在此 基础之上继续“挖矿”,这样能够浪费其他矿工的运 算资源使得自己在此后“挖矿”中取得更大的优势 (Eyal et al., 2014) 为应对这一攻击,一些研究建议制定新的规则,优先 在最新的块之后继续挖矿,但由于对网络的要求比较 高,实现难度很大,因此在现有比特币框架下尚未提 出有效的防范方法 24
25. 针对比特币的攻击与防范 基于网络的攻击 由于比特币的网络结构,交易的发起、验证、确认等 都需要网络传输,攻击者可以利用网络延迟,影响其 他矿工的“挖矿”工作,增加其“挖矿”难度(Cohen, 2014., Heilman et al., 2015. Decker, 2013) 利用网络爬虫、地址查询等手段,获取用户的 ip 地址 ,从而使得其身份暴露;另外,通过分析某一笔比特 币在多个账号之间的流动,可以高概率地判断其所有 者是否为同一个用户 25
26. CONTENTS PAGE 目录页 第一部分 Hash函数简介 第二部分 比特币 第三部分 第四部分 区块链 Zerocash 26
27. 区块链简介 区块链(Blockchain)技术起源于比特币 区块链本质上是以去中心化和公开方式,来集体维护 一个可靠数据库的技术方案,也称为分布式账本技术 使用密码学方法(特别是Hash函数与电子签名技术) 产生一系列相关联的数据块,每一个数据块中包含了 一段时间内全网交易的信息,用于验证其信息的有效 性(防伪)和生成下一个区块 27
28. 区块链的发展 区块链1.0 区块链2.0 以比特币为代 表的可编程数 字货币 基于区块链的 可编程金融 比特币 点点币 天元币 …… 智能合约 支付清算 证券交易 公正防伪 …… 区块链3.0 区块链在其他 行业的应用 法律 零售 物联 医疗 …… 28
29. 区块链平台 名称 比特币1.0 以太坊ETH 1.0 公识算法 适合场景 POW 公链 POW 公链/联盟链 TPS 智能合约 7 否 25 是 IBM HyperLedger PBFT为主 联盟链 fabric 是 100K 比特股BitShare DPos 否 500 公证通Factom 否 27 瑞波Ripple Factom自有 公链/联盟链 共识机制, 类Pos RPCA 公链/联盟链 否 1000 未来币NXT Pos 公链/联盟链 否 1000 联盟链
30. 以太坊 2013年年末,以太坊创始人Vitalik Buterin发布了以 太坊初版白皮书,启动了项目 2014年7月24日起,以太坊进行了为期42天的以太币 预售 2016年初,以太坊的技术得到市场认可,价格开始暴 涨,吸引了大量开发者以外的人进入以太坊的世界。 30
31. 以太坊组成 增加记录 共享传播 所有参与人都 同意的达成一 致的交易方法 共享账 本 密码学 共识算 法 智能合 约 保证安全性、 完整性、可认 证性等 以数字形式定 义的承诺,执 行协议
32. 以太坊 去中心化智能合约平台 图灵完备 图灵完备意味着你的语言可以做到能够用图灵机能做 到的所有事情,可以解决所有的可计算问题 以太坊虚拟机是图灵完备的,这意味着智能合约代码 可以实现任何可以想象的计算,包括无限循环 智能合约 账户信息 1.外部账户(EOA),由私钥控制 2.合约账户,由它们的合约编码控制,只能由外 部账户“激活” 模块化 POW共识算法 32
33. CONTENTS PAGE 目录页 第一部分 Hash函数简介 第二部分 比特币 第三部分 区块链 第四部分 Zerocash 33
34. Zerocash Ecash(中心化) David Chaum在1982年美密会上提出 Blind Signatures for Untraceable Payments Zerocash: 去中心化的匿名支付方案 Ben-Sasson, Chiesa, Garman等人于2013年提出 [BCGGMTV14] 特点:提供匿名性保护 隐藏交易双方身份及交易金额 效率 交易数据<1 kB 验证时间<6 ms 生成证明时间较长(87s~178s) 34
35. Zerocash 主要技术 提供匿名性:利用承诺方案及zk-SNARK隐藏交易者 身份及交易金额 防止双重消费:使用唯一序列号标记电子现金 主要算法 Setup、CreateAddress、Mint、VerifyTransaction、 Pour以及Receive五个部分 35
36. Zerocash Mint 用户铸币过程:用户生成关于序列号、面额、地址等 信息的承诺,相关承诺信息记录在树形结构列表 36
37. Zerocash Pour 用户消费过程 将旧币(旧承诺)浇铸为新币(新承诺) 为新币指定地址(新币接收者地址) 销毁旧币(公开旧币序列号) 用户需证明自己拥有的旧币合法 利用zk-SNARK证明 旧币承诺为树上的某个叶子 并且知道该承诺的秘密信息 37
38. Zerocash 方案实现一 主要密码技术 Hash函数 承诺方案(Comm)及伪随机函数(PRF)均使 用SHA-256实现 例如 cm = COMMs (v k = H(k 0192 v) 𝑃𝑅𝐹𝑥𝑎𝑑𝑑𝑟 𝑧 = 𝐻 𝑥 00 𝑧 , 其中𝑥 ∈ 0,1 256 , 𝑧 ∈ 0,1 数字签名:强不可伪造一次签名 公钥加密:密钥不可区分的公钥加密 38 254
39. Zerocash 方案实现二 主要证明技术 zk-SNARK:证明知道Hash函数原像信息 Hash函数转化为算术电路 计算算术电路的二次算术规划(quadratic arithmetic program) 使用基于双线性配对的非交互零知识证明 39
40. 区块链引发的思考 比特币的安全性 钱包保护、并不是匿名的、及时交易不一定安全 特别是全球计算能力与资源的监控问题 区块链 共识算法研究 基于更多的密码技术,匿名性研究,比特承诺、零知 识证明……;针对区块链的新型密码协议架构研究 基于国产密码算法的区块链产业 区块链人才培养 40
41. CONTENTS PAGE 谢 目录页 谢 41