【區塊鏈安全 | 第一篇】密碼學原理

文章目錄

    • 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.pswp.cn/web/73440.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73440.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73440.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于websocketpp實現的五子棋項目

該博客對于學完C和linux操作系統,但不知道如何用C開發項目,已經不知道C如何使用第三方庫的人來說一定很有幫助,請耐心看完! 先看一下游戲會顯示的前端界面,對理解這個游戲的前后端交互過程會有幫助 1. 開發環境 1.1 …

基于Redis分布鎖+事務補償解決數據不一致性問題

基于Redis的分布式設備庫存服務設計與實現 概述 本文介紹一個基于Redis實現的分布式設備庫存服務方案,通過分布式鎖、重試機制和事務補償等關鍵技術,保證在并發場景下庫存操作的原子性和一致性。該方案適用于物聯網設備管理、分布式資源調度等場景。 …

RK3568筆記八十: Linux 小智AI環境搭建

若該文為原創文章,轉載請注明原文出處。 最近小智AI火了,韋老師出了 Linux 小智 AI 聊天機器人 版本,想移植到 RK3568上, 由于和韋老師硬件不同,所以需要交叉編譯一些庫,為后續移植做準備。 一、環境 1、…

C# SerialPort 使用詳解

總目錄 前言 在工業控制、物聯網、嵌入式開發等領域,串口通信(Serial Port Communication)是連接串行設備(如條碼掃描器、GPS接收器等)與計算機的重要手段。C# 提供了內置的 SerialPort 類,簡化了串口開發…

3D點云的深度學習網絡分類(按照作用分類)

1. 3D目標檢測(Object Detection) 用于在點云中識別和定位目標,輸出3D邊界框(Bounding Box)。 🔹 方法類別: 單階段(Single-stage):直接預測3D目標位置&am…

LabVIEW 與 PLC 通訊的常見方式

在工業自動化和數據采集系統中,PLC(可編程邏輯控制器) 廣泛用于控制和監測各種設備,而 LabVIEW 作為強大的圖形化編程工具,常用于上位機數據處理和可視化。為了實現 LabVIEW 與 PLC 的高效通訊,常見的方法包…

2025 polarctf春季個人挑戰賽web方向wp

來個彈窗 先用最基礎的xss彈窗試一下 <script>alert("xss")</script>沒有內容&#xff0c;猜測過濾了script&#xff0c;雙寫繞過一下 <scrscriptipt>alert("xss")</scscriptript>background 查看網頁源代碼 查看一下js文件 類…

【Ai】--- 可視化 DeepSeek-r1 接入 Open WebUI(超詳細)

在編程的藝術世界里,代碼和靈感需要尋找到最佳的交融點,才能打造出令人為之驚嘆的作品。而在這座秋知葉i博客的殿堂里,我們將共同追尋這種完美結合,為未來的世界留下屬于我們的獨特印記。【Ai】--- 可視化 DeepSeek-r1 接入 Open WebUI(超詳細) 開發環境一、前情提要:你…

7.1-7.2考研408數據結構查找算法核心知識點深度解析

考研408數據結構查找算法核心知識點深度解析 一、查找基本概念 1.1 核心定義與易錯點 查找表與關鍵字 易錯點:混淆靜態查找表(僅查詢)與動態查找表(含插入/刪除操作)的應用場景。例如哈希表屬于動態查找結構,而分塊查找適用于靜態數據。難點:理解平均查找長度(ASL)的…

Redis--redis客戶端

目錄 一、引言 二、數據庫管理命令 三、redis客戶端 四、Java客戶端使用Redis 五、相關命令使用 1.get&#xff0c;set 2.exists&#xff0c;del 3.keys 4.expire&#xff0c;ttl 六、總結 一、引言 在之前學了redis相關類型命令之后&#xff0c;本篇文章&#xff0c;…

SpringBoot3.0不建議使用spring.factories,使用AutoConfiguration.imports新的自動配置方案

文章目錄 一、寫在前面二、使用imports文件1、使用2、示例比對3、完整示例 參考資料 一、寫在前面 spring.factories是一個位于META-INF/目錄下的配置文件&#xff0c;它基于Java的SPI(Service Provider Interface)機制的變種實現。 這個文件的主要功能是允許開發者聲明接口的…

鴻蒙特效教程10-卡片展開/收起效果

鴻蒙特效教程10-卡片展開/收起效果 在移動應用開發中&#xff0c;卡片是一種常見且實用的UI元素&#xff0c;能夠將信息以緊湊且易于理解的方式呈現給用戶。 本教程將詳細講解如何在HarmonyOS中實現卡片的展開/收起效果&#xff0c;通過這個實例&#xff0c;你將掌握ArkUI中狀…

hn航空app hnairSign unidbg 整合Springboot

聲明: 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01; 逆向分析 學習unidbg補環境。先弄一個…

奇怪的異形選項卡樣式、弧形邊框選項卡

<template><div :class"$options.name"><div class"tab">默認選項卡</div><div class"tab" active>選中選項卡</div><el-divider /><el-tabs v-model"tabActiveName" tab-click"(t…

特殊行車記錄儀DAT視頻丟失的恢復方法

行車記錄儀是一種常見的車載記錄儀&#xff0c;和常見的“小巧玲瓏”的行車記錄儀不同&#xff0c;一些特種車輛使用的記錄儀的外觀可以用“笨重”來形容。下邊我們來看看特種車載行車記錄儀刪除文件后的恢復方法。 故障存儲: 120GB存儲設備/文件系統:exFAT /簇大小:128KB 故…

UE5小石子陰影在非常近距離才顯示的問題

Unreal中采用LandscapeGrass生成的地形&#xff0c;在MovieRenderQueue中渲染時陰影顯示距離有問題&#xff0c;在很近的時候才會有影子&#xff0c;怎么解決&#xff1f; 地面上通過grass生成的小石子的陰影只能在很近的時候才能顯示出來&#xff0c;需要如下調整 r.Shadow.R…

零基礎上手Python數據分析 (9):DataFrame 數據讀取與寫入 - 讓數據自由穿梭

回顧一下,上篇博客我們學習了 Pandas 的核心數據結構 Series 和 DataFrame。 DataFrame 作為 Pandas 的 “王牌” 數據結構,是進行數據分析的基石。 但 DataFrame 的強大功能,還需要建立在 數據輸入 (Input) 和 數據輸出 (Output) 的基礎上。 數據從哪里來? 分析結果又如何…

【商城實戰(65)】退換貨流程全解析:從前端到后端的技術實現

【商城實戰】專欄重磅來襲!這是一份專為開發者與電商從業者打造的超詳細指南。從項目基礎搭建,運用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用戶、商品、訂單等核心模塊開發,再到性能優化、安全加固、多端適配,乃至運營推廣策略,102 章內容層層遞進。無論是想…

SQL Server 2022 安裝問題

一、安裝與配置問題 1. SQL Server 2022 安裝失敗怎么辦&#xff1f; 常見原因&#xff1a; 硬件或操作系統不滿足最低要求&#xff08;如內存、磁盤空間不足&#xff09;。未關閉防火墻或殺毒軟件。之前版本的 SQL Server 殘留文件未清理。 解決方案&#xff1a; 確保硬件配…

解鎖 AWX+Ansible 自動化運維新體驗:快速部署實戰

Ansible 和 AWX 是自動化運維領域的強大工具組合。Ansible 是一個簡單高效的 IT 自動化工具&#xff0c;而 AWX 則是 Ansible 的開源 Web 管理平臺&#xff0c;提供圖形化界面來管理 Ansible 任務。本指南將帶你一步步在 Ubuntu 22.04 上安裝 Ansible 和 AWX&#xff0c;使用 M…