區塊鏈密碼法
⑴ 區塊鏈中現代密碼學
1983年 - David Chaum描述的盲簽
1997年 - Adam Back發明的HashCash(工作證明制度的一個例子)
2001年 - Ron Rivest,Adi Shamir和Yael Tauman向加密社區提出了環簽名
2004年 - Patrick P. Tsang和Victor K.提出使用環簽名系統進行投票和電子現金;
2008年 - 由Satoshi Nakamoto出版的Bitcoin白皮書
2011年 - 比特幣系統中的匿名分析,Fergal Reid和Martin Harrigan
2012 - 目的地址比特幣匿名(CryptoNote中的一次性地址)。
安全多方計算起源於1982年姚期智的百萬富翁問題。後來Oded Goldreich有比較細致系統的論述。
姚氏百萬富翁問題是由華裔計算機科學家、圖靈獎獲得者姚啟智教授首先提出的。該問題表述為:兩個百萬富翁Alice和Bob想知道他們兩個誰更富有,但他們都不想讓對方知道自己財富的任何信息。該問題有一些實際應用:假設Alice希望向Bob購買一些商品,但她願意支付的最高金額為x元;Bob希望的最低賣出價為y元。Alice和Bob都非常希望知道x與y哪個大。如果x>y,他們都可以開始討價還價;如果z<y,他們就不用浪費口舌。但他們都不想告訴對方自己的出價,以免自己在討價還價中處於不利地位。
該方案用於對兩個數進行比較,以確定哪一個較大。Alice知道一個整數i;Bob知道一個整數j, Alice與B0b希望知道究竟i>=j還是j>i,但都不想讓對方知道自己的數。為簡單起見,假設j與i的范圍為[1,100】。Bob有一個公開密鑰Eb和私有密鑰Db。
安全多方計算(Secure Multi-Party Computation)的研究主要是針對無可信第三方的情況下, 如何安全地計算一個約定函數的問題. 安全多方計算在電子選舉、電子投票、電子拍賣、秘密共享、門限簽名等場景中有著重要的作用。
同態加密(Homomorphic Encryption)是很久以前密碼學界就提出來的一個Open Problem。早在1978年,Ron Rivest, Leonard Adleman, 以及Michael L. Dertouzos就以銀行為應用背景提出了這個概念[RAD78]。對,你沒有看錯,Ron Rivest和Leonard Adleman分別就是著名的RSA演算法中的R和A。
什麼是同態加密?提出第一個構造出全同態加密(Fully Homomorphic Encryption)[Gen09]的Craig Gentry給出的直觀定義最好:A way to delegate processing of your data, without giving away access to it.
這是什麼意思呢?一般的加密方案關注的都是數據存儲安全。即,我要給其他人發個加密的東西,或者要在計算機或者其他伺服器上存一個東西,我要對數據進行加密後在發送或者存儲。沒有密鑰的用戶,不可能從加密結果中得到有關原始數據的任何信息。只有擁有密鑰的用戶才能夠正確解密,得到原始的內容。我們注意到,這個過程中用戶是不能對加密結果做任何操作的,只能進行存儲、傳輸。對加密結果做任何操作,都將會導致錯誤的解密,甚至解密失敗。
同態加密方案最有趣的地方在於,其關注的是數據處理安全。同態加密提供了一種對加密數據進行處理的功能。也就是說,其他人可以對加密數據進行處理,但是處理過程不會泄露任何原始內容。同時,擁有密鑰的用戶對處理過的數據進行解密後,得到的正好是處理後的結果。
有點抽象?我們舉個實際生活中的例子。有個叫Alice的用戶買到了一大塊金子,她想讓工人把這塊金子打造成一個項鏈。但是工人在打造的過程中有可能會偷金子啊,畢竟就是一克金子也值很多錢的說… 因此能不能有一種方法,讓工人可以對金塊進行加工(delegate processing of your data),但是不能得到任何金子(without giving away access to it)?當然有辦法啦,Alice可以這么做:Alice將金子鎖在一個密閉的盒子裡面,這個盒子安裝了一個手套。工人可以帶著這個手套,對盒子內部的金子進行處理。但是盒子是鎖著的,所以工人不僅拿不到金塊,連處理過程中掉下的任何金子都拿不到。加工完成後。Alice拿回這個盒子,把鎖打開,就得到了金子。
這裡面的對應關系是:盒子:加密演算法盒子上的鎖:用戶密鑰將金塊放在盒子裡面並且用鎖鎖上:將數據用同態加密方案進行加密加工:應用同態特性,在無法取得數據的條件下直接對加密結果進行處理開鎖:對結果進行解密,直接得到處理後的結果同態加密哪裡能用?這幾年不是提了個雲計算的概念嘛。同態加密幾乎就是為雲計算而量身打造的!我們考慮下面的情景:一個用戶想要處理一個數據,但是他的計算機計算能力較弱。這個用戶可以使用雲計算的概念,讓雲來幫助他進行處理而得到結果。但是如果直接將數據交給雲,無法保證安全性啊!於是,他可以使用同態加密,然後讓雲來對加密數據進行直接處理,並將處理結果返回給他。這樣一來:用戶向雲服務商付款,得到了處理的結果;雲服務商掙到了費用,並在不知道用戶數據的前提下正確處理了數據;
聚合簽名由Boneh等人提出,主要是通過聚合多個簽名為一個簽名,來提高簽名與驗證的效率。要對多個用戶的數據進行簽名,聚合簽名能夠極大地降低簽名計算復雜度。CL就是聚合簽名。
零知識證明過程有兩個參與方,一方叫證明者,一方叫驗證者。證明者掌握著某個秘密,他想讓驗證者相信他掌握著秘密,但是又不想泄漏這個秘密給驗證者。
雙方按照一個協議,通過一系列交互,最終驗證者會得出一個明確的結論,證明者是或不掌握這個秘密。
對於比特幣的例子,一筆轉帳交易合法與否,其實只要證明三件事:
發送的錢屬於發送交易的人
發送者發送的金額等於接收者收到金額
發送者的錢確實被銷毀了
整個證明過程中,礦工其實並不關心具體花掉了多少錢,發送者具體是誰,接受者具體是誰。礦工只關心系統的錢是不是守恆的。
zcash 就是用這個思路實現了隱私交易。
零知識證明的三條性質對應:
(1)完備性。如果證明方和驗證方都是誠實的,並遵循證明過程的每一步,進行正確的計算,那麼這個證明一定是成功的,驗證方一定能夠接受證明方。
(2)合理性。沒有人能夠假冒證明方,使這個證明成功。
(3)零知識性。證明過程執行完之後,驗證方只獲得了「證明方擁有這個知識」這條信息,而沒有獲得關於這個知識本身的任何一點信息。
只有環成員,沒有管理者,不需要環成員之間的合作,簽名者利用自己的私鑰和集合中其他成員的公鑰就能獨立的進行簽名,不需要其他人的幫助,集合中的其他成員可能不知道自己被包含在了其中。
環簽名可以被用作成一種泄露秘密的方式,例如,可以使用環形簽名來提供來自「白宮高級官員」的匿名簽名,而不會透露哪個官員簽署了該消息。 環簽名適用於此應用程序,因為環簽名的匿名性不能被撤銷,並且因為用於環簽名的組可以被即興創建。
1)密鑰生成。為環中每個成員產生一個密鑰對(公鑰PKi,私鑰SKi)
2)簽名。簽名者用自己的私鑰和任意n個環成員的公鑰為消息m生成簽名a
3)簽名驗證。簽名者根據環簽名和消息m,驗證簽名是否是環中成員所簽。如果有效就接收,如果無效就丟棄。
群簽名的一般流程
盲數字簽名(Blind Signature)簡稱盲簽名——是一種數字簽名的方式,在消息內容被簽名之前,對於簽名者來說消息內容是不可見的。1982年大衛·喬姆首先提出了盲簽名的概念。盲簽名因為具有盲性這一特點,可以有效保護所簽署消息的具體內容,所以在電子商務和電子選舉等領域有著廣泛的應用。
類比例子:對文件簽名就是通過在信封里放一張復寫紙,簽名者在信封上簽名時,他的簽名便透過復寫紙簽到文件上。
所謂盲簽名,就是先將隱蔽的文件放進信封里,而除去盲因子的過程就是打開這個信封,當文件在一個信封中時,任何人不能讀它。對文件簽名就是通過在信封里放一張復寫紙,簽名者在信封上簽名時,他的簽名便透過復寫紙簽到文件上。
一般來說,一個好的盲簽名應該具有以下的性質:
不可偽造性。除了簽名者本人外,任何人都不能以他的名義生成有效的盲簽名。這是一條最基本的性質。
不可抵賴性。簽名者一旦簽署了某個消息,他無法否認自己對消息的簽名。
盲性。簽名者雖然對某個消息進行了簽名,但他不可能得到消息的具體內容。
不可跟蹤性。一旦消息的簽名公開後,簽名者不能確定自己何時簽署的這條消息。
滿足上面幾條性質的盲簽名,被認為是安全的。這四條性質既是我們設計盲簽名所應遵循的標准,又是我們判斷盲簽名性能優劣的根據。
另外,方案的可操作性和實現的效率也是我們設計盲簽名時必須考慮的重要
因素。一個盲簽名的可操作性和實現速度取決於以下幾個方面:
1,密鑰的長度;
2,盲簽名的長度;
3,盲簽名的演算法和驗證演算法。
盲簽名具體步驟
1,接收者首先將待簽數據進行盲變換,把變換後的盲數據發給簽名者。
2,經簽名者簽名後再發給接收者。
3,接收者對簽名再作去盲變換,得出的便是簽名者對原數據的盲簽名。
4,這樣便滿足了條件①。要滿足條件②,必須使簽名者事後看到盲簽名時不能與盲數據聯系起來,這通常是依靠某種協議來實現的。
⑵ 【區塊鏈與密碼學】第5-2講:哈希函數的構造
本節課程我們將詳細講解哈希函數的構造。
MASH-1 (Molar Arithmetic Secure Hash)是一個基於RSA演算法的哈希演算法,在1995年提出,入選國際標准ISO/IEC 10118-4;MASH-2是MASH-1的改進,把第四步中的2換成了28+1;由於涉及模乘/平方運算,計算速度慢,非常不實用。
分組密碼的工作模式是: 根據不同的數據格式和安全性要求, 以一個具體的分組密碼演算法為基礎構造一個分組密碼系統的方法。
基於分組的對稱密碼演算法比如DES/AES演算法只是描述如何根據秘鑰對一段固定長度(分組塊)的數據進行加密,對於比較長的數據,分組密碼工作模式描述了如何重復應用某種演算法安全地轉換大於塊的數據量。
簡單的說就是,DES/AES演算法描述怎麼加密一個數據塊,分組密碼工作模式模式了如果重復加密比較長的多個數據塊。常見的分組密碼工作模式有五種:
電碼本( Electronic Code Book,ECB)模式
密文分組鏈接(Cipher Block Chaining,CBC)模式
密文反饋(Cipher Feed Back ,CFB)模式
輸出反饋(Output Feed Back ,OFB)模式
計數器(Counter, CTR)模式
ECB工作模式
加密:輸入是當前明文分組。
解密:每一個密文分組分別解密。
具體公式為:
CBC工作模式
加密:輸入是當前明文分組和前一次密文分組的異或。
解密:每一個密文分組被解密後,再與前一個密文分組異或得明文。
具體公式為:
CFB工作模式
加密演算法的輸入是64比特移位寄存器,其初值為某個初始向量IV。
加密演算法輸出的最左(最高有效位)j比特與明文的第一個單元P1進行異或,產生出密文的第1個單元C1,並傳送該單元。
然後將移位寄存器的內容左移j位並將C1送入移位寄存器最右邊(最低有效位)j位。
這一過程繼續到明文的所有單元都被加密為止。
OFB工作模式
OFB模式的結構類似於CFB
不同之處:
OFB模式是將加密演算法的輸出反饋到移位寄存器
CFB模式中是將密文單元反饋到移位寄存器
CTR工作模式
加密:輸入是當前明文分組和計數器密文分組的異或。
解密:每一個密文分組被解密後,再與計數器密文分組異或得明文。
具體公式為:
工作模式比較
ECB模式,簡單、高速,但最弱、易受重發攻擊,一般不推薦。
CBC模式適用於文件加密,比ECB模式慢,安全性加強。當有少量錯誤時,不會造成同步錯誤。
OFB模式和CFB模式較CBC模式慢許多。每次迭代只有少數比特完成加密。若可以容忍少量錯誤擴展,則可換來恢復同步能力,此時用CFB或OFB模式。在字元為單元的流密碼中多選CFB模式。
CTR模式用於高速同步系統,不容忍差錯傳播。
直接設計哈希函數
Merkle在1989年提出迭代型哈希函數的一般結構;(另外一個工作是默克爾哈希樹),Ron Rivest在1990年利用這種結構提出MD4。(另外一個工作是RSA演算法),這種結構在幾乎所有的哈希函數中使用,具體做法為:
把所有消息M分成一些固定長度的塊Yi
最後一塊padding並使其包含消息M的長度
設定初始值CV0
循環執行壓縮函數f,CVi=f(CVi -1||Yi -1)
最後一個CVi為哈希值
演算法中重復使用一個壓縮函數f
f的輸入有兩項,一項是上一輪輸出的n比特值CVi-1,稱為鏈接變數,另一項是演算法在本輪的b比特輸入分組Yi-1
f的輸出為n比特值CVi,CVi又作為下一輪的輸入
演算法開始時還需對鏈接變數指定一個初值IV,最後一輪輸出的鏈接變數CVL即為最終產生的雜湊值
通常有b>n,因此稱函數f為壓縮函數
演算法可表達如下:CV0=IV= n比特長的初值
CVi=f(CVi-1,Yi-1);1≤i≤L
H(M)=CVL
演算法的核心技術是設計難以找到碰撞的壓縮函數f,而敵手對演算法的攻擊重點是f的內部結構
f和分組密碼一樣是由若干輪處理過程組成
對f的分析需要找出f的碰撞。由於f是壓縮函數,其碰撞是不可避免的,因此在設計f時就應保證找出其碰撞在計算上是困難的
哈希函數的構造就講到這里啦,以上三種方式都可以構造哈希函數。下節課我們將學習常用哈希函數,敬請期待!
⑶ 區塊鏈是不是U盤+密碼
不是。下面摘抄內容希望對你有所幫助。
區塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。
區塊鏈(Blockchain),是比特幣的一個重要概念,它本質上是一個去中心化的資料庫,同時作為比特幣的底層技術,是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一批次比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊。
一般說來,區塊鏈系統由數據層、網路層、共識層、激勵層、合約層和應用層組成。
⑷ 區塊鏈技術原理與應用 介紹一下
1、區塊鏈是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了過去十分鍾內所有比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊。是比特幣的底層技術,像一個資料庫賬本,記載所有的交易記錄。
2、廣義定義:利用加密鏈式結構來驗證與存儲數據、利用分布式節點共識演算法來生成和更新數據、利用自動化腳本代碼(智能合約)來變成和操作數據的一種全新的去中心化基礎架構與分布式計算範式。
3、狹義定義:按照時間順序將數據區塊以鏈條的方式組合成特定數據結構,並以密碼學方式保證的不可篡改和不可偽造的去中心化共享賬戶。
4、區塊鏈的特點:去中心化:區塊鏈數據的驗證、記賬、存儲、維護和傳輸等過程均是基於分布式系統機構,採用純數學方法而不是中心結構來建立分布式節點間的信任關系,從而形成去中心化的可信任的分布式系統。
5、時序數據:區塊鏈採用帶有時間戳的鏈式區塊結構存儲數據,從而為數據增加了時間維度,具有極強的可驗證性和可追溯性。
6、集體維護:區塊鏈系統採用特定的經濟激勵機制來保證分布式系統中所以節點均可參與數據區塊的驗證過程,並通過共識演算法來選擇特定的節點將新區快添加到區塊鏈。
7、可編程:區塊鏈技術提供靈活的腳本代碼系統,支持用戶創建高級的智能合約、貨幣或其他去中心化應用。
8、安全可信:區塊鏈技術採用非對稱密碼原理對數據進行加密,同時藉助分布式系統各節點的工作量證明等共識演算法形成的強大算力來抵禦外部攻擊、保證區塊鏈數據不可篡改和不可偽造,因而具有較高的安全性。
9、區塊鏈應用場景:數字貨幣:以比特幣為代表,本質上是由分布式網路系統生成的數字貨幣,其發行過程不依賴特定的中心化機構。
⑸ 【區塊鏈與密碼學】第6-4講:橢圓曲線的數字簽名演算法
1985年,Koblitz和Miller獨立地提出了橢圓曲線公鑰密碼體制(ECC),安全性基於橢圓曲線群上的離散對數問題的難解性,該問題目前最好的解法是指數級時間的演算法。
一般認為,RSA和DH密鑰交換協議需用1024比特以上的模數才安全,但對ECC,只要160比特的模數就可達到同樣級別的安全性。
橢圓曲線指的是由Weierstrass方程
所確定的曲線
有限域Fp上的橢圓曲線是由滿足Fp上的方程
的所有點和無窮遠點 O 構成的集合
有時也記作 E。
設 P , Q 是E上的任意兩點,連接 P , Q 交 E 於 R』 ,則稱 R』 關於x軸的對稱點 R 為 P 與 Q 的和,記為:
P + Q = R
當 P 與 Q 重合時
R = P+Q = P+P = 2P
此時稱之為 點倍運算
當 P 與 Q 關於x軸對稱時,
定義 P 與 Q 的和為 O ,即:
P + Q = O
並稱 O 為無窮遠點
可以證明,有限域上的橢圓曲線在我們定義的加法運算下構成群。
既然構成群,就必然有零元和負元,這里的零元就為無窮遠點 O , P 的負元就是它關於x軸的對稱點,記為 –P 。
顯然有
P+O =O+P=P
若P=(x, y),則 –P=(x, –y) 且 P+(–P)=O
已知 E(F) 上兩點 P=(x1, y1), Q=(x2, y2) , 求 P+Q 。
解:設 P+Q=R =(x3, y3) ,
解得
當 P≠Q 時,
當 P=Q 時,
k(k>2) 個相同的點 P 相加為
此時稱之為點乘運算
設
稱n為點 P 的階,記為 n=ord(P) 。
由階為n的點 P 在上述加法定義下生成的循環群 <P> 是橢圓曲線群 (E(F), +) 的一個n階子群。
設E是有限域 F 上的橢圓曲線, G 是 E 的一個循環子群,點 P 是 G 的一個生成元,即 G={kP: k≥1}, 在已知 P , Q 的條件下,求解整數n,使得 nP=Q 的問題,稱為橢圓曲線 E 上的離散對數問題。
今天的課程就到這里啦,下一堂課我們將學習基於橢圓曲線的數字簽名演算法中的SM2演算法,帶大家繼續了解數字簽名,敬請期待!
-- 完 --
關注點寬學園,每周持續更新區塊鏈系列課程,小寬頻你進入區塊鏈世界。我們下節課見啦。
【區塊鏈與密碼學】課堂回顧:
區塊鏈與密碼學系列文章合集
⑹ 什麼是區塊鏈加密演算法
這個是比特幣的一個重要概念,比特幣的底層技術區塊鏈運用了很多優秀的加密演算法來保證系統可靠性。具體的理解和操作可以去下載鏈派社區app,聽一下裡面講師的課程,你就清楚了。
⑺ 區塊鏈的密碼技術有
密碼學技術是區塊鏈技術的核心。區塊鏈的密碼技術有數字簽名演算法和哈希演算法。
數字簽名演算法
數字簽名演算法是數字簽名標準的一個子集,表示了只用作數字簽名的一個特定的公鑰演算法。密鑰運行在由SHA-1產生的消息哈希:為了驗證一個簽名,要重新計算消息的哈希,使用公鑰解密簽名然後比較結果。縮寫為DSA。
數字簽名是電子簽名的特殊形式。到目前為止,至少已經有 20 多個國家通過法律 認可電子簽名,其中包括歐盟和美國,我國的電子簽名法於 2004 年 8 月 28 日第十屆全 國人民代表大會常務委員會第十一次會議通過。數字簽名在 ISO 7498-2 標准中定義為: 「附加在數據單元上的一些數據,或是對數據單元所作的密碼變換,這種數據和變換允許數據單元的接收者用以確認數據單元來源和數據單元的完整性,並保護數據,防止被人(例如接收者)進行偽造」。數字簽名機制提供了一種鑒別方法,以解決偽造、抵賴、冒充和篡改等問題,利用數據加密技術、數據變換技術,使收發數據雙方能夠滿足兩個條件:接收方能夠鑒別發送方所宣稱的身份;發送方以後不能否認其發送過該數據這一 事實。
數字簽名是密碼學理論中的一個重要分支。它的提出是為了對電子文檔進行簽名,以 替代傳統紙質文檔上的手寫簽名,因此它必須具備 5 個特性。
(1)簽名是可信的。
(2)簽名是不可偽造的。
(3)簽名是不可重用的。
(4)簽名的文件是不可改變的。
(5)簽名是不可抵賴的。
哈希(hash)演算法
Hash,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,其中散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,但是不可逆向推導出輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
哈希(Hash)演算法,它是一種單向密碼體制,即它是一個從明文到密文的不可逆的映射,只有加密過程,沒有解密過程。同時,哈希函數可以將任意長度的輸入經過變化以後得到固定長度的輸出。哈希函數的這種單向特徵和輸出數據長度固定的特徵使得它可以生成消息或者數據。
以比特幣區塊鏈為代表,其中工作量證明和密鑰編碼過程中多次使用了二次哈希,如SHA(SHA256(k))或者RIPEMD160(SHA256(K)),這種方式帶來的好處是增加了工作量或者在不清楚協議的情況下增加破解難度。
以比特幣區塊鏈為代表,主要使用的兩個哈希函數分別是:
1.SHA-256,主要用於完成PoW(工作量證明)計算;
2.RIPEMD160,主要用於生成比特幣地址。如下圖1所示,為比特幣從公鑰生成地址的流程。
⑻ 什麼是區塊鏈加密演算法
區塊鏈加密演算法(EncryptionAlgorithm)
非對稱加密演算法是一個函數,通過使用一個加密鑰匙,將原來的明文文件或數據轉化成一串不可讀的密文代碼。加密流程是不可逆的,只有持有對應的解密鑰匙才能將該加密信息解密成可閱讀的明文。加密使得私密數據可以在低風險的情況下,通過公共網路進行傳輸,並保護數據不被第三方竊取、閱讀。
區塊鏈技術的核心優勢是去中心化,能夠通過運用數據加密、時間戳、分布式共識和經濟激勵等手段,在節點無需互相信任的分布式系統中實現基於去中心化信用的點對點交易、協調與協作,從而為解決中心化機構普遍存在的高成本、低效率和數據存儲不安全等問題提供了解決方案。
區塊鏈的應用領域有數字貨幣、通證、金融、防偽溯源、隱私保護、供應鏈、娛樂等等,區塊鏈、比特幣的火爆,不少相關的top域名都被注冊,對域名行業產生了比較大的影響。
⑼ 區塊鏈技術的機密性是如何實現的
因為區塊鏈技術對實現智能合約存在天然的優勢。
比特幣、瑞泰幣、萊特幣、以太坊等數字加密貨幣都使用了區塊鏈技術。
區塊鏈(Blockchain)是比特幣的一個重要概念,本質上是一個去中心化的資料庫,同時作為比特幣的底層技術。區塊鏈是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一次比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊。