北京大学肖臻老师《区块链技术与应用》公开课: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://www.pswp.cn/diannao/84711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud Gateway高并发限流——基于Redis实现方案解析

本文是一个基于 Spring Cloud Gateway 的分布式限流方案,使用Redis Lua实现高并发场景下的精准流量控制。该方案支持动态配置、多维度限流(API路径/IP/用户),并包含完整的代码实现和性能优化建议。 一、架构设计 #mermaid-svg-vg…

SpringAI--RAG知识库

SpringAI–RAG知识库 RAG概念 什么是RAG? RAG(Retrieval-Augmented Genreation,检索增强生成)是一种结合信息检索技术和AI内容生成的混合架构,可以解决大模型的知识时效性限制和幻觉问题。 RAG在大语言模型生成回答之前,会先从…

【PhysUnits】14 二进制数的标准化表示(standardization.rs)

一、源码 这段代码主要用于处理二进制数的标准化表示。它定义了两个特质(trait) IfB0 和 IfB1&#xff0c;以及它们的实现&#xff0c;用于处理二进制数的前导零及前导一的简化。 use super::basic::{B0, B1, Z0, N1, Integer, NonZero, NonNegOne};/// 处理 B0<H> 类型…

将 ubutun 的网络模式 从NAT 改到 桥接模式后,无法上网,linux 没有IP地址 的解决方案

首先要将 ubutun 的网络模式设置为桥接模式 这里再从 NAT 模式改动成 桥接模式的时候&#xff0c;还出现了一个问题。改成桥接模式后&#xff0c;linux没有ip地址了。原因是 不知道什么时候 将 虚拟网络编辑器 中的值改动了 要选择这个 自动 选项

多模态大语言模型arxiv论文略读(九十)

Hybrid RAG-empowered Multi-modal LLM for Secure Data Management in Internet of Medical Things: A Diffusion-based Contract Approach ➡️ 论文标题&#xff1a;Hybrid RAG-empowered Multi-modal LLM for Secure Data Management in Internet of Medical Things: A Di…

电脑主板VGA长亮白灯

电脑主板VGA长亮白灯 起因解决方法注意事项&#xff1a; 起因 搬家没有拆机整机在车上晃荡导致显卡松动接触不良&#xff08;一般VGA长亮白灯都和显卡有关&#xff0c;主要排查显卡&#xff09; 解决方法 将显卡拆下重新安装即可 注意事项&#xff1a; 不可直接拔下显卡&a…

【监控】pushgateway中间服务组件

Pushgateway 是 Prometheus 生态中的一个中间服务组件&#xff0c;以独立工具形式存在&#xff0c;主要用于解决 Prometheus 无法直接获取监控指标的场景&#xff0c;弥补其定时拉取&#xff08;pull&#xff09;模式的不足。 其用途如下&#xff1a; 突破网络限制&#xff1…

打造AI智能旅行规划器:基于LLM和Crew AI的Agent实践

引言 今天来学习大佬开发的一个AI驱动的旅行规划应用程序&#xff0c;它能够自动处理旅行规划的复杂性——寻jni找航班、预订酒店以及优化行程。传统上&#xff0c;这个过程需要手动搜索多个平台&#xff0c;常常导致决策效率低下。 通过利用**代理型人工智能&#xff08;Age…

21. 自动化测试框架开发之Excel配置文件的测试用例改造

21. 自动化测试框架开发之Excel配置文件的测试用例改造 一、测试框架核心架构 1.1 组件依赖关系 # 核心库依赖 import unittest # 单元测试框架 import paramunittest # 参数化测试扩展 from chap3.po import * # 页面对象模型 from file_reader import E…

如何在电力系统中配置和管理SNTP时间同步?

在电力系统中配置和管理 SNTP 时间同步需结合行业标准&#xff08;如《DL/T 1100.1-2019》&#xff09;和分层架构特点&#xff0c;确保安全性、可靠性和精度适配。以下是具体操作指南&#xff0c;涵盖架构设计、设备配置、安全管理、运维监控四大核心环节&#xff0c;并附典型…

MTK-关于HW WCN的知识讲解

前言: 最近做项目过程中和硬件打交道比较多,现在关于整理下硬件的HW wcn的知识点 一 MTK常见的MT6631 Wi-Fi 2.4GHz 匹配调谐指南 ‌拓扑结构选择‌ 推荐采用并联电容拓扑(‌shunt cap topology‌)代替并联电感拓扑(‌shunt inductor topology‌),以减少潜在电路设计…

(1)课堂 1--5,这五节主要讲解 mysql 的概念,定义,下载安装与卸载

&#xff08;1&#xff09;谢谢老师&#xff1a; &#xff08;2&#xff09;安装 mysql &#xff1a; &#xff08;3&#xff09;镜像下载 &#xff0c;这个网址很好 &#xff1a; &#xff08;4&#xff09; 另一个虚拟机的是 zhang 123456 &#xff1a; 接着配置…

U-Boot ARMv8 平台异常处理机制解析

入口点&#xff1a;arch/arm/cpu/armv8/start.S 1. 判断是否定义了钩子&#xff0c;如有则执行&#xff0c;否则往下走。执行save_boot_params&#xff0c;本质就是保存一些寄存器的值。 2. 对齐修复位置无关码的偏移 假设U-Boot链接时基址为0x10000&#xff0c;但实际加载到0…

mysql安装教程--笔记

一、Windows 系统安装 方法1&#xff1a;使用 MySQL Installer&#xff08;推荐&#xff09; 1. 下载安装包 访问 MySQL 官网下载页面&#xff0c;选择 MySQL Installer for Windows。 2. 运行安装程序 双击下载的 .msi 文件&#xff0c;选择安装类型&#xff1a; ◦ Developer…

投资策略规划最优决策分析

目录 一、投资策略规划问题详细 二、存在最优投资策略&#xff1a;每年都将所有钱投入到单一投资产品中 &#xff08;一&#xff09;状态转移方程 &#xff08;二&#xff09;初始条件与最优策略 &#xff08;三&#xff09;证明最优策略总是将所有钱投入到单一投资产品中…

NGINX HTTP/3 实验指南安装、配置与调优

一、HTTP/3 简介 基于 QUIC&#xff1a;在 UDP 之上实现的多路复用传输&#xff0c;内置拥塞控制与前向纠错&#xff0c;无需三次握手即可恢复连接。零 RTT 重连&#xff1a;借助 TLS 1.3&#xff0c;实现连接恢复时的 0-RTT 数据发送&#xff08;视底层库支持&#xff09;。多…

编程日志5.28

string赋值操作 算法: #include<iostream> using namespace std; int main() { //1.字符串常量的赋值 string s1; s1 = "英雄哪里出来"; cout << s1 << endl; //2.字符串变量的赋值 string s2; s2 = s1; cout <…

AE的ai图层导到Ai

AE的ai图层导到ai 解决方法: 1、打开ai软件&#xff0c;不用新建&#xff0c;留在那就行。 2、在AE里选中任意一个ai文件图层&#xff0c;只需同时按住ctrl和英文字母键&#xff0c;图层就会自动全部导入到ai中 英文字母键的详情可以参考&#xff1a;http://www.yayihouse.co…

【Springboot+LangChain4j】Springboot项目集成LangChain4j(下)

前置条件&#xff1a;根据上篇文章完成springboot初步集成LangChain4j 【SpringbootLangChain4j】根据LangChain4j官方文档&#xff0c;三分钟完成Springboot项目集成LangChain4j&#xff08;上&#xff09;-CSDN博客 但是接口方法中&#xff0c;关于大模型的配置都是写死的&a…

好坏质检分类实战(异常数据检测、降维、KNN模型分类、混淆矩阵进行模型评估)

任务 好坏质检分类实战 task: 1、基于 data_class_raw.csv 数据&#xff0c;根据高斯分布概率密度函数&#xff0c;寻找异常点并剔除 2、基于 data_class_processed.csv 数据&#xff0c;进行 PCA 处理&#xff0c;确定重要数据维度及成分 3、完成数据分离&#xff0c;数据分离…