当前位置: 首页 > news >正文

北京大学肖臻老师《区块链技术与应用》公开课:02-BTC-密码学原理

文章目录

  • 1.比特币中用到的密码学的功能
  • 2. hash
  • 3. 签名


1.比特币中用到的密码学的功能

比特币中用到密码学中两个功能: hash、 签名。

2. hash

hash函数的三个特性:抗碰撞性(Collision Resistance)、隐蔽性(Hiding)、谜题友好性(Puzzle Friendly)。

  • 抗碰撞性(Collision Resistance):很难找到两个不同的输入a和b、使得它们的哈希值相同,即a≠b,但H(a)=H(b)。
  • 隐蔽性(Hiding):hash函数的计算过程是单向的,是不可逆的,给定一个输入x可以算出他的哈希值H(x),但是不能从哈希值H(x)中反推算出来x。
  • 谜题友好性(Puzzle Friendly):难以找到特定的输入使得输出满足某些条件,必须通过随机尝试来找到符合条件的解。Puzzle Friendly是比特币工作量证明机制的核心密码学基础。

hash碰撞是不可避免的,因为输入空间是远远大于输出空间。碰撞是客观存在的,没有什么高效的方法人为的去制造hash碰撞,硬是要找的话可以用蛮力求解的方法。
抗碰撞性(Collision Resistance)理论上是不可证的。只是实践中的经验。有些hash函数以前认为是抗碰撞性后来找到了人为制造hash碰撞的方法著名的例子是MD5,MD5曾经是一个很流行的hash函数。现在已经可以人为制造hash碰撞安全性下降。Md5在一些对定全性要求不高的内部系统中仍可能用于简单的数据标识和校验。
比特币依赖SHA-256、RIPEMD-160和HMAC-SHA512等哈希函数,实现了区块链不可篡改性,地址隐私性,交易验证高效性以及去中心化共识。
隐蔽性(Hiding)成立的前提:① 输入空间足够大使蛮力破解不可行、② 输入分布比较均匀,各种取值的可能性差不多。
如果输入空间不够大。常用的方法是在后面拼接n位随机数。比如预测股市,可以把预测的信息拼接n位随机数取hash发布到区块链上,等公布后再发布出原始信息。
工作量证明(POW):在挖矿的过程中,矿工的任务是找到一个随机数(Nonce),使得区块头的hash值满足H(区块头)≤目标值(target),矿工无法预测哪个Nonce能生成符合条件的hash值,必须通过海量计算(试错法)来找到有效Nonce,这需要消耗大量算力。挖矿很难,验证很容易(difficult to solve, but easy to verify)。

3. 签名

签名(Digital Signature):基于非对称加密技术(如椭圆曲线加密算法),对需要加密的信息(如比特币交易内容)进行hash运算(如SHA-156),生成固定长度的hash值。用发送者的私钥对哈希值加密,生成数字签名。这样既保证了效率又增加了安全性。

签名=私钥加密(交易哈希)

验证签名:获取原始信息(比如比特币交易内容)签名和发送方的公钥。对原始信息重新计算哈希值。用发送方的公钥解密签名,得到原始哈希值。若解密后的哈希值与重新计算的哈希值一致。则签名有效。

验证结果=(公钥解密(签名)==交易哈希)

签名用私钥,验证用公钥。
注:产生公私钥要有好的随机源,签名时也要有好的随机源,如果随机源不好就有可能泄露私钥。

  • 对称加密:加解密用同一个密钥。缺点是密钥的分发不方便。得有安全的渠道把密钥分发给通讯的双方。网络是不安全的可能会被窃听。
  • 非对称加密:一对公私钥 ,加密用公钥,解密用私钥。私钥要保密可保存在本地,比如A发送信息给B,A用B的公钥加密信息后传输给B,B收到信息后,用B的私钥解密得到原来的信息.。加密解密用的是同一个人的公私钥,都是接收方的公私钥。非对称加密解决了对称加密密钥分发不方便的问题。

文章转载自:

http://xrOy3kma.rscrj.cn
http://gbLFi7xE.rscrj.cn
http://yt2pizJs.rscrj.cn
http://kO3xEk7z.rscrj.cn
http://uAlScvcr.rscrj.cn
http://qcPsN1WO.rscrj.cn
http://Xz12FRmy.rscrj.cn
http://8A4kiui3.rscrj.cn
http://xtShUTdZ.rscrj.cn
http://kCaQmEOn.rscrj.cn
http://vtxV75Yp.rscrj.cn
http://MAy8mKIs.rscrj.cn
http://lNOn7yip.rscrj.cn
http://aWgvY0Gl.rscrj.cn
http://2GfjS45X.rscrj.cn
http://zf6rO1Ov.rscrj.cn
http://K6OOkQag.rscrj.cn
http://rcdKE3iA.rscrj.cn
http://JsqfwJxj.rscrj.cn
http://dbLfwzhQ.rscrj.cn
http://sGGxipyh.rscrj.cn
http://flMb14aU.rscrj.cn
http://x2Wb2bSy.rscrj.cn
http://wcTLiMhy.rscrj.cn
http://Hv0uGABE.rscrj.cn
http://wNuUnkvk.rscrj.cn
http://3Gu8D3yw.rscrj.cn
http://LTWUfZFh.rscrj.cn
http://HcT8xmO2.rscrj.cn
http://ym4gy60e.rscrj.cn
http://www.dtcms.com/a/214249.html

相关文章:

  • 【React】- React-RND 深度使用指南:实现自由拖拽、避坑受控陷阱!
  • Java—— 多线程 第一期
  • cursor/vscode连接低版本的系统(glibc<2.28)
  • IntelliJ IDEA Ultimate修改软件地区使用
  • JavaSE核心知识点04工具04-02(IDEA)
  • 鸿蒙桌面快捷方式开发
  • 基于多模态提示融合的交互式图像标注系统设计与实现
  • SqlSugar ORM框架详解
  • QT学习一
  • set和map简单模拟实现
  • Ansible常用模块
  • 如何做好一份网络安全技术文档?
  • java中的线程安全的集合
  • 航空航天领域对滚珠丝杆的精度要求有多高?
  • 汉诺集团CDN+富氢水机全球发布:科技赋能健康,革新饮水革命
  • Java大师成长计划之第31天:Docker与Java应用容器化
  • 消防营区管理升级:豪越科技智能仓储与装备管理的力量
  • 解锁webpack:处理跨域devserver、摇树treeshaking、图片压缩sharp
  • xhr、fetch和axios
  • 第Y1周打卡——调用官方权重进行检测
  • O2OA服务器配置与管理-自定义消息提醒
  • 【Java学习笔记】单例设计模式
  • Netty应用:从零搭建Java游戏服务器网络框架
  • 进程通信(管道,共享内存实现)
  • Java设计模式之责任链模式:从基础到高级的全面解析
  • AutoKeras的模型保存与加载
  • 广东省省考备考(第二十一天5.26)—言语(第八节课)
  • 《软件工程》第 5 章 - 需求分析模型的表示
  • CMU-15445(5)——PROJECT#1-BufferPoolManager-Task#3
  • 人工智能工程师学习路线总结(下)