【区块链安全 | 第一篇】密码学原理

文章目录

    • 1.哈希函数
      • 1.1 哈希函数的性质
      • 1.2 常见哈希算法
      • 1.3 Merkle Tree(默克尔树)
      • 1.4 HMAC(哈希消息认证码)
    • 2. 公钥密码学
      • 2.1 对称加密 vs 非对称加密
      • 2.2 RSA 算法
      • 2.3 ECC(椭圆曲线密码学)
      • 2.4 Diffie-Hellman 密钥交换
    • 3. 常见的加密算法与协议
      • 3.1 AES(高级加密标准)
      • 3.2 TLS(传输层安全协议)
    • 4. 区块链特有的密码学技术
      • 4.1 Merkle Patricia Tree(MPT)
      • 4.2 多重签名(Multisig)
      • 4.3 环签名(Ring Signature)
      • 4.4 zk-SNARKs(零知识简洁非交互式论证)
    • 5. 加密中的智能合约安全
      • 5.1 Commit-Reveal 机制
      • 5.2 可验证延迟函数(VDF)

1.哈希函数

哈希函数是一种输入长度不定、输出长度固定的函数,广泛用于数据完整性校验、密码存储、区块链中的区块链接等。

1.1 哈希函数的性质

在这里插入图片描述

1.2 常见哈希算法

算法输出长度安全性现状
MD5128 位已被破解,不安全
SHA-1160 位已被破解,不安全
SHA-256256 位仍然安全
SHA-3224/256/384/512 位目前安全
BLAKE2256/512 位速度快,安全性高

MD5算法已被破解,例图:

在这里插入图片描述

1.3 Merkle Tree(默克尔树)

Merkle 树是一种基于哈希函数的树结构,常用于数据完整性验证,区块链中的交易数据存储采用 Merkle 树。

Merkle 树的构造如下:
1.将交易数据分别进行哈希运算。
2.以配对方式对哈希值再次进行哈希,直到生成一个根哈希值(Merkle Root)。
3.只需存储根哈希,即可验证某个交易是否在区块中,无需存储完整数据。

示例

       Root/  \H12    H34/  \    /  \H1   H2  H3  H4

在比特币区块中,Merkle 根用于证明一笔交易是否包含在某个区块里。

假设一个区块有 4 笔交易,Merkle 树结构如下:

       Root = H12_34/            \H12               H34/   \             /   \
H1     H2       H3     H4

假设你要验证 H3 是否在树中,只需要知道:
1.交易的哈希值 H3。
2.同层的兄弟哈希 H4(用于计算 H34)。
3.上层的兄弟哈希 H12(用于计算 Root)。

通过如下计算:
1.计算 H34 = Hash(H3 || H4)
2.计算 Root = Hash(H12 || H34)
3.比对 Root 是否等于区块头中的 Merkle Root,即可判断 H3 是否在树中。

这样做的好处是:
1.节省存储空间,区块链上的轻客户端(如 SPV 客户端)不需要存储完整交易,只存 Merkle Root。
2.只需要下载根哈希,比直接下载整个区块更快,特别适用于移动设备或存储受限的节点。
3.如果交易数据被篡改,Merkle Root 也会变,保证了数据的不可篡改性。

1.4 HMAC(哈希消息认证码)

HMAC(Hashed Message Authentication Code)是一种基于哈希函数的消息认证机制,用于数据完整性和认证。例如,TLS 1.2 使用 HMAC-SHA256 进行消息完整性验证。

公式:

在这里插入图片描述

其中:

  • ( K ) 是密钥
  • ( M ) 是消息
  • ( opad ) 和 ( ipad ) 是填充常数

认证流程:
1.发送方选择一个密钥K(双方预先共享)。
2.发送方通过公式,带入消息M来计算HMAC值
3.发送方发送消息M与HMAC值,如图:
在这里插入图片描述

4.接收方收到消息M后,带入消息M,使用相同的密钥K计算HMAC值
5.比较接收到的HMAC值和计算出的HMAC值
6.如果匹配,说明消息未被篡改,验证通过。
7.如果不匹配,说明消息可能被修改或密钥错误,验证失败。

这样做的好处是
1.攻击者即使拦截消息并修改内容,也无法伪造正确的 HMAC(除非他知道密钥)。
2.即使攻击者知道HMAC值,也无法反推出密钥K。

2. 公钥密码学

公钥密码学(非对称加密)使用一对密钥(公钥和私钥),广泛用于加密、数字签名和身份验证。

2.1 对称加密 vs 非对称加密

类别加密方式密钥速度应用
对称加密加密和解密使用相同密钥需要共享密钥速度快AES、DES
非对称加密公钥加密,私钥解密公私钥对速度慢RSA、ECC

看一个对称加密的场景:

1.假设 Alice 想给 Bob 发送加密消息,她使用 AES 对称加密。
2.Alice 和 Bob 事先共享一个密钥 K(密钥必须保密)。
3.Alice 使用 AES 加密明文 M,得到密文 C
4.Alice 发送密文 C 给 Bob。
5.Bob 收到密文 C 后,使用相同的密钥 K 进行解密:
6.Bob 得到原始消息 M。

可以看到,对称加密的缺点是:如果密钥泄露,攻击者可以解密所有通信内容;不适用于身份认证,无法确认是谁发送的消息。

非对称加密使用一对密钥(公钥 + 私钥),虽然数据加密速度慢,但适用于安全通信和身份认证。流程如下:

1.假设 Alice 需要向 Bob 发送一条加密消息。
2.Bob 生成 RSA 公私钥对:

  • 公钥 PK_B(公开给所有人)。
  • 私钥 SK_B(只有 Bob 自己知道)。

3.Alice 获取 Bob 的公钥 PK_B。
4.Alice 使用 PK_B 加密消息 M,得到密文 C:
5.Bob 使用私钥 SK_B 解密 C,恢复明文 M
6.Bob 得到原始消息 M。

此时密钥泄露的可能降低,同时可以看出,非对称加密可用于身份认证(如数字签名)。

在实际应用中,可以使用非对称加密传输对称密钥,再用对称加密进行数据加密,典型的案例是HTTPS:
1.客户端(浏览器)使用服务器公钥加密 AES 密钥,并发送给服务器。
2.服务器用私钥解密,得到 AES 密钥。
3.后续通信使用 AES 进行对称加密,提高速度。

2.2 RSA 算法

RSA 是最早的公钥加密算法之一,基于大数因子分解问题。

RSA 加密流程

在这里插入图片描述

2.3 ECC(椭圆曲线密码学)

ECC(Elliptic Curve Cryptography)是一种基于椭圆曲线数学的公钥加密算法,相比 RSA,提供相同安全性时,所需密钥更短,计算速度更快,因此广泛应用于区块链和现代密码系统。

基于 ECC 的数字签名算法:

  • ECDSA(椭圆曲线数字签名算法):比特币和以太坊使用的签名算法。
  • EdDSA:更快、更安全的数字签名算法。

2.4 Diffie-Hellman 密钥交换

用于在不安全信道上安全地共享密钥,区块链中的 P2P 加密通信常用该协议。

交换流程:

在这里插入图片描述

在这里插入图片描述

3. 常见的加密算法与协议

3.1 AES(高级加密标准)

AES 是最常用的对称加密算法,支持 128、192、256 位密钥。

其模式有:

  • ECB(电子密码本)- 不安全
  • CBC(密码块链接)- 需要 IV
  • GCM(Galois/Counter Mode)- 高效且支持认证

3.2 TLS(传输层安全协议)

TLS 1.3 采用 ECDHE(椭圆曲线 Diffie-Hellman 交换)进行密钥交换,使用 AES-GCM 进行加密。

4. 区块链特有的密码学技术

4.1 Merkle Patricia Tree(MPT)

以太坊采用 MPT 存储账户状态,每次状态更新都会更新 Merkle 根,保证数据完整性。

4.2 多重签名(Multisig)

多重签名(Multisig,Multi-Signature) 允许一个交易需要多个私钥签名才能生效,提升安全性,常用于共享钱包、智能合约等场景。

N-of-M 签名模式:

  • M:总共有 M 个授权方(持有私钥的人)。
  • N:需要至少 N 个私钥签名才能执行交易。

例如,2-of-3 多重签名表示:3 个人持有私钥,但至少需要 2 人签名,交易才能生效。

比特币支持多重签名,交易流程如下(以 2-of-3 为例):

在这里插入图片描述

这样做的好处是:
1.共享钱包,实现公司账户或DAO组织的安全性,防止单点风险。
2.买卖双方将资金托管(Escrow)在第三方,确保公正交易。
3.即使一个私钥泄露,攻击者仍无法盗取资金。

4.3 环签名(Ring Signature)

环签名是一种群体签名技术,在一组公钥(混合了其他人的公钥)中,只有一个是真正的签名者,但无法区分是谁。

签名流程如下:

在这里插入图片描述

这样做的好处是:
1.外部观察者无法确定资金的真正来源。
2.去中心化匿名性,不依赖第三方。
3.即使攻击者分析链上数据,也无法还原真实交易路径。

4.4 zk-SNARKs(零知识简洁非交互式论证)

zk-SNARKs 是一种 零知识证明(Zero-Knowledge Proof)技术,在 Zcash 等隐私币中被用来保护交易隐私,确保交易有效性同时隐藏交易细节(如交易金额和发送方、接收方信息)。

特点:只有参与交易的双方知道具体的交易细节,第三方无法从区块链上获得任何信息。

工作原理:

在这里插入图片描述

5. 加密中的智能合约安全

5.1 Commit-Reveal 机制

前瞻攻击指的是在某些交易或竞拍环境中,恶意用户通过提前得知即将提交的交易或出价信息,在其之前进行自己的交易或操作,从而获得不公平的优势。例如,在一个去中心化交易所(DEX)中,攻击者可能会提前看到用户的交易订单,然后在交易执行之前先行交易,从而操控市场价格,获取额外利润。

Commit-Reveal 机制通过以下两步实现防止前瞻攻击:

1.提交(Commit)阶段
在提交阶段,用户在提交他们的实际交易数据或出价之前,会先提交一个加密哈希值(commitment),这个哈希值是通过哈希函数对交易数据进行加密处理得到的。例如,用户想要竞拍某项物品,先通过某个算法(如哈希)生成该竞拍信息的哈希值,然后将该哈希值提交到区块链上。哈希值本身并不暴露用户的真实意图或交易数据,因此即使其他用户看到这个哈希值,他们也无法知道具体的交易内容。这样就避免了恶意用户根据即将发生的交易进行前瞻攻击。

2.揭示(Reveal)阶段
用户在合适的时间(通常是经过一定的延迟)后,将其实际交易内容或出价公开。系统会将提交的哈希值与用户揭示的实际数据进行匹配。如果两者匹配,则证明该用户在提交阶段的承诺是合法且真实的。如果不匹配,则交易将被认为是无效的。

5.2 可验证延迟函数(VDF)

可验证延迟函数(Verifiable Delay Function, VDF) 是一种加密技术,旨在生成一个需要一定时间来计算的值,但一旦计算完成,任何人都可以快速验证其正确性。其主要特点是,它不仅要求计算时间延迟,而且这个延迟是不可并行化的,意味着必须按顺序逐步计算,无法通过并行处理来加速。

Sybil 攻击(女巫攻击)的成功通常依赖于节点能够快速而低成本地生成大量虚假身份,从而影响网络的共识过程。VDF 通过引入计算延迟,使得攻击者无法快速生成大量有效的身份或签名。攻击者必须消耗一定的时间来进行计算,这个过程对他们来说是昂贵且缓慢的,从而有效减少了攻击的可能性。

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

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

相关文章

vim的一般操作(分屏操作) 和 Makefile 和 gdb

目录 一. vim的基本概念 二. vim基础操作 2.1 插入模式 aio 2.2 [插入模式]切换至[正常模式] Esc 2.3[正常模式]切换至[末行模式] shift ; 2.4 替换模式 Shift R 2.5 视图(可视)模式 (可以快速 删除//注释 或者 增加//注释) ctrl v 三&…

NFC 智能门锁全栈解决方案:移动端、服务器、Web 管理平台

目录 一、系统整体架构 二、移动端 APP 开发 2.1 开发环境与基础准备 2.2 主要功能模块 2.3 示例代码(Android/Kotlin 简化示例) 三、后台服务开发 3.1 环境准备 3.2 主要功能 3.3 示例代码(Node.js Express 简化示例) …

系统与网络安全------网络应用基础(5)

资料整理于网络资料、书本资料、AI,仅供个人学习参考。 虚拟化 虚拟化技术原理概述虚拟化虚拟化实现条件常见的虚拟化软件产品 VMware应用实战安装VMware Workstation创建新虚拟机虚拟机的硬件配置调整 虚拟化高级应用虚拟机备份虚拟机快照 虚拟化技术 原理概述 虚…

Postman 下载文件指南:如何请求 Excel/PDF 文件?

在 Postman 中进行 Excel/PDF 文件的请求下载和导出,以下是简明的步骤,帮助你轻松完成任务。首先,我们将从新建接口开始,逐步引导你完成整个过程。 Postman 请求下载/导出 excel/pdf 文件教程

华为HCIE学习指南,如何更好的学习HCIE?

新盟教育 专注华为认证培训十余年 为你提供认证一线资讯! 在竞争激烈的ICT行业,华为HCIE认证犹如一颗璀璨的明珠,散发着耀眼的光芒。它不仅是对个人技术能力的高度认可,更是开启高薪职业大门的钥匙。然而,华为HCIE学习…

贪心算法——c#

贪心算法通俗解释 贪心算法是一种"每一步都选择当前最优解"的算法策略。它不关心全局是否最优,而是通过局部最优的累积来逼近最终解。优点是简单高效,缺点是可能无法得到全局最优解。 一句话秒懂 自动售货机找零钱:用最少数量的…

架构思维:如何设计一个支持海量数据存储的高扩展性架构_数据分片、存储、复制与一致性的原理性问题

文章目录 PRE引言1. 数据分片策略Hash取模分片一致性Hash分片Range分片分片设计原理核心设计模块分片规则定义动态分片调整路由与负载均衡 应对热点的关键技术多级分片(Hierarchical Sharding)副本分散策略缓存层配合 典型应用场景优缺点分析 2. 应对热点…

Jenkins最新版,配置Gitee私人令牌和Gitee凭证

jenkins 配置Gitee私人令牌和凭证 jenkins 版本:Jenkins 2.492.2 Gitee配置 Jenkins配置gitee插件,需要先申请gitee私钥。 安装gitee插件 申请Gitee私人令牌,后面还需要添加凭证。 测试链接,并保存 配置凭证

ORACLE RAC ASM双存储架构下存储部分LUN异常的处理

早上接到用户电话,出现有表空间不足的告警,事实上此环境经常巡检并且有告警系统,一开始就带着有所疑惑的心理,结果同事在扩大表空间时,遇到报错 ORA-15401/ORA-17505,提示ASM空间满了: ALERT日志&#xff1…

Windows下docker使用教程

docker安装 镜像制作镜像加载容器创建更新镜像导出镜像 Windows10安装dockerdocker image制作docker 镜像加载docker 容器创建更新imageimage 导出为.tar文件 #以Windows10 、11为例 linux和Windows区别在于docker安装的程序是哪个操作系统的,后面的内容其实不变 …

9.4分漏洞!Next.js Middleware鉴权绕过漏洞安全风险通告

今日,亚信安全CERT监控到安全社区研究人员发布安全通告,Next.js 存在一个授权绕过漏洞,编号为 CVE-2025-29927。攻击者可能通过发送精心构造的 x-middleware-subrequest 请求头绕过中间件安全控制,从而在未授权的情况下访问受保护…

代码随想录算法训练营Day12 | Leetcode 226翻转二叉树、101对称二叉树、104二叉树的最大深度、111二叉树的最小深度

代码随想录算法训练营Day12 | Leetcode 226翻转二叉树、101对称二叉树、104二叉树的最大深度、111二叉树的最小深度 一、翻转二叉树 相关题目:Leetcode226 文档讲解:Leetcode226 视频讲解:Leetcode226 1. Leetcode226.翻转二叉树 给你一棵二…

3.26学习总结 做题

先初始化n1时,输出的图案。 观察可以得到,n每加1,则在原先图案的左下方和右下方重新打印一遍原先的图案,可以分为两步。 1.复制原先图案打印在其正下方和右下方,并将原先图案清空。 2.在现在图案的上方中间打印原先…

Linux学习笔记(应用篇二)

基于I.MX6ULL.MINI开发板 开发板与电脑相互通信电脑与开发板互传文件 开发板与电脑相互通信 用网线将电脑与开发板连接 本人使用的是Ubuntu系统,不是虚拟机 一般来说刚开始电脑和开发板是ping不通的 首先查看电脑的 IP WinR,cmd调出终端 我使用的是…

【gradio】从零搭建知识库问答系统-Gradio+Ollama+Qwen2.5实现全流程

从零搭建大模型问答系统-GradioOllamaQwen2.5实现全流程(一) 前言一、界面设计(计划)二、模块设计1.登录模块2.注册模块3. 主界面模块4. 历史记录模块 三、相应的接口(前后端交互)四、实现前端界面的设计co…

中间件漏洞-Tomcat篇

一:CVE-2017-12615 1.搭建服务 cd /www/wwwroot/vulhub-master/tomcat/CVE-2017-12615 docker-compose up -d 2.打开网页 3.在哥斯拉中生成jsp木马并保存为2.jpg 对当前页面进行抓包,修改提交方式为PUT并复制木马 4.在网页中访问我们生成的木马&#…

PHP eval 长度限制绕过与 Webshell 获取

在 PHP 代码中&#xff0c;如果 eval($param); 存在且长度受限&#xff0c;并且过滤了 eval 和 assert&#xff0c;仍然可以通过多种方法绕过限制&#xff0c;获取 Webshell。 源码 <?php $param $_REQUEST[param]; if(strlen($param)<17 && stripos($param,…

31天Python入门——第15天:日志记录

你好&#xff0c;我是安然无虞。 文章目录 日志记录python的日志记录模块创建日志处理程序并配置输出格式将日志内容输出到控制台将日志写入到文件 logging更简单的一种使用方式 日志记录 日志记录是一种重要的应用程序开发和维护技术, 它用于记录应用程序运行时的关键信息和…

特殊行车记录仪DAT视频丢失的恢复方法

行车记录仪是一种常见的车载记录仪&#xff0c;和常见的“小巧玲珑”的行车记录仪不同&#xff0c;一些特种车辆使用的记录仪的外观可以用“笨重”来形容。下边我们来看看特种车载行车记录仪删除文件后的恢复方法。 故障存储: 120GB存储设备/文件系统:exFAT /簇大小:128KB 故…

机器学习——KNN数据均一化

在KNN&#xff08;K-近邻&#xff09;算法中&#xff0c;数据均一化&#xff08;归一化&#xff09;是预处理的关键步骤&#xff0c;用于消除不同特征量纲差异对距离计算的影响。以下是两种常用的归一化操作及其核心要点&#xff1a; 质押 一 、主要思想 1. 最值归一化&#…