【区块链】区块链密码学基础


鑫宝Code

🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"


文章目录

  • 区块链密码学基础
    • 引言
    • 一、哈希函数
      • 1.1 基本概念
      • 1.2 数学表达
    • 二、非对称加密
      • 2.1 基本原理
      • 2.2 数学基础
      • 2.3 应用场景
    • 三、数字签名
      • 3.1 工作原理
      • 3.2 数学表达
    • 四、默克尔树
      • 4.1 结构特点
      • 4.2 数学表达
    • 五、零知识证明
      • 5.1 基本概念
      • 5.2 性质
      • 5.3 数学表达
    • 六、同态加密
      • 6.1 原理
    • 结论
    • 参考资料

区块链密码学基础

引言

密码学是区块链技术的核心基石,没有现代密码学的支撑,区块链的去中心化、不可篡改等特性将无从谈起。本文将深入浅出地介绍区块链中的密码学基础知识。
在这里插入图片描述

一、哈希函数

1.1 基本概念

哈希函数(Hash Function)是区块链中最基础的密码学工具,它可以将任意长度的输入数据映射为固定长度的输出。在区块链中最常用的是 SHA-256 算法。

哈希函数具有以下特性:

  • 单向性:由输入计算输出容易,但由输出推算输入几乎不可能
  • 抗碰撞性:找到两个不同的输入产生相同的输出是极其困难的
  • 确定性:相同的输入必然产生相同的输出
  • 雪崩效应:输入的微小变化会导致输出的巨大变化

1.2 数学表达

对于输入消息 m m m,哈希函数 H H H 将生成固定长度的哈希值:

H ( m ) = h H(m) = h H(m)=h,其中 h h h 的长度固定
在这里插入图片描述

二、非对称加密

2.1 基本原理

非对称加密使用一对密钥:公钥(Public Key)和私钥(Private Key)。公钥可以公开分享,私钥需要安全保管。在区块链中,最常用的是椭圆曲线加密算法(ECDSA)。

2.2 数学基础

椭圆曲线加密基于如下方程:

y 2 = x 3 + a x + b ( m o d p ) y^2 = x^3 + ax + b \pmod{p} y2=x3+ax+b(modp)

其中 a a a b b b 是系数, p p p 是一个大素数。

私钥是一个随机数 k k k,公钥 K K K 通过以下方式生成:

K = k ⋅ G K = k \cdot G K=kG

其中 G G G 是椭圆曲线上的基点。

2.3 应用场景

  • 数字签名
  • 地址生成
  • 身份认证

三、数字签名

在这里插入图片描述

3.1 工作原理

数字签名用于证明消息的真实性和完整性。签名过程如下:

  1. 计算消息哈希: h = H ( m ) h = H(m) h=H(m)
  2. 使用私钥 k k k 对哈希值进行签名: s = S i g n ( h , k ) s = Sign(h, k) s=Sign(h,k)
  3. 生成签名对 ( r , s ) (r,s) (r,s)

验证过程:
V e r i f y ( h , ( r , s ) , K ) = t r u e / f a l s e Verify(h, (r,s), K) = true/false Verify(h,(r,s),K)=true/false

3.2 数学表达

ECDSA 签名算法的核心计算:

  1. 选择随机数 d d d
  2. 计算点 R = d ⋅ G = ( x r , y r ) R = d \cdot G = (x_r, y_r) R=dG=(xr,yr) r = x r ( m o d n ) r = x_r \pmod{n} r=xr(modn)
  3. 计算 s = d − 1 ( h + k r ) ( m o d n ) s = d^{-1}(h + kr) \pmod{n} s=d1(h+kr)(modn)

其中 n n n 是椭圆曲线的阶。

四、默克尔树

4.1 结构特点

默克尔树(Merkle Tree)是一种哈希树,用于高效地验证大量数据的完整性。

            Root Hash/          \Hash(1,2)     Hash(3,4)/      \      /      \Hash1   Hash2  Hash3   Hash4|        |      |       |TX1      TX2    TX3     TX4

4.2 数学表达

对于交易集合 T X = { t x 1 , t x 2 , . . . , t x n } TX = \{tx_1, tx_2, ..., tx_n\} TX={tx1,tx2,...,txn},默克尔根的计算:

M e r k l e R o o t = H ( H ( H ( t x 1 ) ∣ ∣ H ( t x 2 ) ) ∣ ∣ H ( H ( t x 3 ) ∣ ∣ H ( t x 4 ) ) ) MerkleRoot = H(H(H(tx_1) || H(tx_2)) || H(H(tx_3) || H(tx_4))) MerkleRoot=H(H(H(tx1)∣∣H(tx2))∣∣H(H(tx3)∣∣H(tx4)))

其中 ∣ ∣ || ∣∣ 表示字符串拼接。

五、零知识证明

5.1 基本概念

零知识证明允许证明者向验证者证明某个命题的正确性,而无需透露任何其他信息。

5.2 性质

  • 完整性:如果命题为真,诚实的证明者可以说服验证者
  • 可靠性:如果命题为假,任何证明者都无法说服验证者
  • 零知识性:验证者除了命题的正确性外,无法获得任何其他信息

5.3 数学表达

以 Schnorr 协议为例:

  1. 证明者选择随机数 r r r,计算 R = r ⋅ G R = r \cdot G R=rG
  2. 验证者发送随机挑战 c c c
  3. 证明者计算响应 s = r + c ⋅ x s = r + c \cdot x s=r+cx
  4. 验证者检查 s ⋅ G = R + c ⋅ P s \cdot G = R + c \cdot P sG=R+cP

六、同态加密

6.1 原理

同态加密允许在加密数据上直接进行计算,而无需解密。

对于明文 m 1 , m 2 m_1, m_2 m1,m2,加密函数 E E E,存在运算 ⊕ \oplus ,使得:

E ( m 1 ) ⊗ E ( m 2 ) = E ( m 1 ⊕ m 2 ) E(m_1) \otimes E(m_2) = E(m_1 \oplus m_2) E(m1)E(m2)=E(m1m2)

结论

密码学为区块链提供了坚实的安全基础。通过哈希函数、非对称加密、数字签名等技术的组合,实现了去中心化、不可篡改、匿名性等核心特性。随着零知识证明、同态加密等新技术的发展,区块链的应用场景将更加广泛。

参考资料

  1. Nakamoto, S. (2008). Bitcoin: A Peer-to-Peer Electronic Cash System
  2. Goldwasser, S., Micali, S., & Rackoff, C. (1989). The Knowledge Complexity of Interactive Proof Systems
  3. Merkle, R. C. (1987). A Digital Signature Based on a Conventional Encryption Function

End

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72416.shtml

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

相关文章

Spring Boot配置类原理、Spring Boot核心机制理解,以及实现自动装置的底层原理

目的:从底层源码角度分析 Spring Boot 配置类以及自动装载的底层原理 文章目录 1. Spring Boot 配置类实现自动装载1.1 @Configuration注解1.2 @Configuration 注解完成 bean 注入流程图1.3 @ConfigurationProperties注解赋值2. Spring Boot的核心机制:自动装配2.1 @SpringBo…

docker桌面版启动redis,解决无法连接

docker run -d --name redis -p 6379:6379 -v E:\2\redis\redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf 在本地创建一个目录,里面有个redis.conf文件,内容如下,启动时绑定这个配置文件目…

[网络][tcp协议]:tcp报头

tcp(传输控制协议)是一种面向字节流的传输层协议,相较于udp协议,tcp能保证传输数据的可靠性与准确性,tcp也是目前最常见的传输层协议 本文主要介绍tcp报头各个字段的含义与用途 注:保留6位和6位标记位是目前最普遍的写法,在我查资料时,发现有一些拓展情况,会在后文细说 最简单的…

【虚幻C++笔记】引擎源码下载及编译步骤

目录 1.在GitHub上访问虚幻引擎源代码2.安装Visual Studio 20223.解压完成以后,打开源码的根目录,选择Setup.bat运行4.选择GenerateProjectFiles.bat运行,生成uE5.sln文件,点击这个文件打开项目5.设置编译的选项,选择DevelopmentE…

【数学建模】层次分析法(AHP)详解及其应用

层次分析法(AHP)详解及其应用 引言 在现实生活和工作中,我们经常面临复杂的决策问题,这些问题通常涉及多个评价准则,且各准则之间可能存在相互影响。如何在这些复杂因素中做出合理的决策?层次分析法(Analytic Hierarchy Process…

科普:为何要对特征进行分箱?

一、为何要对特征进行分箱? 分箱(Binning)是将连续型或离散型特征转化为区间型变量的过程,其核心目标是提升模型效果和解释性,具体原因如下: 1. 业务需求 可解释性:将特征转化为业务可理解的…

理解langgraph工作流的驱动逻辑,以适应langgraph工作流模式的编程。

langgraph的工作流模式虽然方便直观,但习惯了普通函数式编程的数据流处理。刚开始接触时,确实容易试图用函数式编程的思维去适配它,特别是langgraph数据传递由状态字典管理,而非函数返回值,导致代码不够自然&#xff0…

线性dp(数字三角形,LIS,LCS,LCIS)

文章目录 线性dp数字三角形题目思路 LIS(最长上升子序列)代码(n^2)二分优化(nlogn) LCS(最长公共子序列)代码 LCS——>>LIS思路代码 最长公共子串最长公共上升子序列(LCIS) 线…

Spring Validation参数校验

Spring Validation是Spring框架中用于数据校验的核心模块&#xff0c;通过注解简化数据校验逻辑。 1. 依赖引入&#xff08;SpringBoot项目&#xff09; Spring Boot项目&#xff1a;自动包含spring-boot-starter-validation <dependency><groupId>org.springfra…

《AI大模型趣味实战》No2 : 快速搭建一个漂亮的AI家庭网站-相册/时间线/日历/多用户/个性化配色(中)

快速搭建一个漂亮的AI家庭网站-相册/时间线/日历/多用户/个性化配色(中) 摘要 在上一篇文章中&#xff0c;我们介绍了如何搭建一个基础的家庭网站&#xff08;V1.0版本&#xff09;&#xff0c;包含了用户管理、相册管理、时间线和日历等功能。本文将继续深入&#xff0c;详细…

pythonSTL---sys

sys 是 Python 标准库中的一个内置模块&#xff0c;它提供了许多与 Python 解释器和系统环境进行交互的功能。 sys方法 1. 导入 sys 模块 在使用 sys 库的功能之前&#xff0c;需要先导入它&#xff1a; import sys2. 命令行参数 (sys.argv) sys.argv 是一个包含命令行参数…

软件需求分类、需求获取(高软46)

系列文章目录 软件需求分类&#xff0c;需求获取 文章目录 系列文章目录前言一、软件需求二、获取需求三、真题总结 前言 本节讲明软件需求分类、需求获取的相关知识。 一、软件需求 二、获取需求 三、真题 总结 就是高软笔记&#xff0c;大佬请略过&#xff01;

Zabbix7.0+DeepSeek大模型实现人工智能告警分析

一、方案概述 本方案基于Zabbix7.0监控系统,通过底层webhook脚本机制集成Deepseek做故障分析提供解决方案,构建智能化运维体系。 其核心架构包括: Zabbix监控平台:负责实时监控和告警触发 Webhook接口:实现告警信息的传递 Deepseek AI平台:提供故障智能分析能力 二、…

CPU相关:实时cpu信息接口

[rootxxx ~]# cat /proc/cpuinfo #通过实时cpu信息接口查看cpu信息

Certbot实现SSL免费证书自动续签(CentOS 7版 + Docker部署的nginx)

前置安装&#xff0c;可参考Certbot实现SSL免费证书自动续签&#xff08;CentOS 7 nginx/apache&#xff09; 如果是通过 Docker 运行 Nginx&#xff0c; certbot 无法直接检测到本地的 Nginx 配置。解决方案是 使用 standalone 模式 或 挂载 Webroot 方式获取 SSL 证书&…

A SURVEY ON POST-TRAINING OF LARGE LANGUAGE MODELS——大型语言模型的训练后优化综述——第2部分

3、微调&#xff08;上一部分内容&#xff09; 4、LLMs的对齐 大型语言模型&#xff08;LLMs&#xff09;中的对齐涉及引导模型输出以符合人类预期和偏好&#xff0c;特别是在安全关键或用户面对的应用程序中。本章讨论了实现对齐的三个主要范式&#xff1a; 带有反馈的人工…

热key探测技术架构设计与实践

参考&#xff1a; 得物热点探测技术架构设计与实践 Redis数据倾斜与JD开源hotkey源码分析揭秘 京东热点检测 HotKey 学习笔记 hotkey: 京东App后台中间件&#xff0c;毫秒级探测热点数据&#xff0c;毫秒级推送至服务器集群内存&#xff0c;大幅降低热key对数据层查询压力 …

Windows 环境图形化安装 Oracle 23ai

文章目录 Windows 环境安装23ai下载Oracle 23ai安装包安装安装详细图形界面连接Oracle 23ai 安装过程中遇到的错误安装过其他版本数据库&#xff0c;设置了ORACLE_HOME或 TNS_ADMIN解决方法 无法访问Windows Installer Serviece (error 1719)解决方法 其他注意 参考&#xff1a…

RabbitMQ支持的复杂的消息交换模式

RabbitMQ支持多种复杂的消息交换模式&#xff0c;这些模式通过不同的交换机类型和队列特性实现&#xff0c;能够满足多样化的业务需求。以下是RabbitMQ支持的主要复杂消息交换模式&#xff1a; 1. Direct Exchange&#xff08;直连交换机&#xff09; 直连交换机根据消息的路由…

基于SpringBoot3+Druid数据库连接池与外部PostgreSQL的Kubernetes Pod YAML全解析

说明 一个基于Spring Boot 3 Druid 外部PostgreSQL的Kubernetes Pod YAML详细解析&#xff0c;包含最佳实践和关键配置说明&#xff1a; YAML apiVersion: apps/v1 kind: Deployment metadata:name: springboot-applabels:app: springboot-app spec:replicas: 2selector:ma…