北京大學肖臻老師《區塊鏈技術與應用》公開課: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
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84711.shtml
英文地址,請注明出處:http://en.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;數據分離…