區塊鏈數據簽名非對稱
① 區塊鏈技術中的哈希演算法是什麼
1.1. 簡介
計算機行業從業者對哈希這個詞應該非常熟悉,哈希能夠實現數據從一個維度向另一個維度的映射,通常使用哈希函數實現這種映射。通常業界使用y = hash(x)的方式進行表示,該哈希函數實現對x進行運算計算出一個哈希值y。
區塊鏈中哈希函數特性:
函數參數為string類型;
固定大小輸出;
計算高效;
collision-free 即沖突概率小:x != y => hash(x) != hash(y)
隱藏原始信息:例如區塊鏈中各個節點之間對交易的驗證只需要驗證交易的信息熵,而不需要對原始信息進行比對,節點間不需要傳輸交易的原始數據只傳輸交易的哈希即可,常見演算法有SHA系列和MD5等演算法
1.2. 哈希的用法
哈希在區塊鏈中用處廣泛,其一我們稱之為哈希指針(Hash Pointer)
哈希指針是指該變數的值是通過實際數據計算出來的且指向實際的數據所在位置,即其既可以表示實際數據內容又可以表示實際數據的存儲位置。下圖為Hash Pointer的示意圖

② 有一個說法是如果黎曼猜想被證明(至於什麼猜想我不知道),非對稱加密,電子簽名,區塊鏈統統就完事(〇
解析:
//我也不懂//
黎曼猜想若被證明,
則哥德巴赫猜想被證明。
③ 區塊鏈使用安全如何來保證呢
區塊鏈本身解決的就是陌生人之間大規模協作問題,即陌生人在不需要彼此信任的情況下就可以相互協作。那麼如何保證陌生人之間的信任來實現彼此的共識機制呢?中心化的系統利用的是可信的第三方背書,比如銀行,銀行在老百姓看來是可靠的值得信任的機構,老百姓可以信賴銀行,由銀行解決現實中的糾紛問題。但是,去中心化的區塊鏈是如何保證信任的呢?
實際上,區塊鏈是利用現代密碼學的基礎原理來確保其安全機制的。密碼學和安全領域所涉及的知識體系十分繁雜,我這里只介紹與區塊鏈相關的密碼學基礎知識,包括Hash演算法、加密演算法、信息摘要和數字簽名、零知識證明、量子密碼學等。您可以通過這節課來了解運用密碼學技術下的區塊鏈如何保證其機密性、完整性、認證性和不可抵賴性。
基礎課程第七課 區塊鏈安全基礎知識
一、哈希演算法(Hash演算法)
哈希函數(Hash),又稱為散列函數。哈希函數:Hash(原始信息) = 摘要信息,哈希函數能將任意長度的二進制明文串映射為較短的(一般是固定長度的)二進制串(Hash值)。
一個好的哈希演算法具備以下4個特點:
1、 一一對應:同樣的明文輸入和哈希演算法,總能得到相同的摘要信息輸出。
2、 輸入敏感:明文輸入哪怕發生任何最微小的變化,新產生的摘要信息都會發生較大變化,與原來的輸出差異巨大。
3、 易於驗證:明文輸入和哈希演算法都是公開的,任何人都可以自行計算,輸出的哈希值是否正確。
4、 不可逆:如果只有輸出的哈希值,由哈希演算法是絕對無法反推出明文的。
5、 沖突避免:很難找到兩段內容不同的明文,而它們的Hash值一致(發生碰撞)。
舉例說明:
Hash(張三借給李四10萬,借期6個月) = 123456789012
賬本上記錄了123456789012這樣一條記錄。
可以看出哈希函數有4個作用:
簡化信息
很好理解,哈希後的信息變短了。
標識信息
可以使用123456789012來標識原始信息,摘要信息也稱為原始信息的id。
隱匿信息
賬本是123456789012這樣一條記錄,原始信息被隱匿。
驗證信息
假如李四在還款時欺騙說,張三隻借給李四5萬,雙方可以用哈希取值後與之前記錄的哈希值123456789012來驗證原始信息
Hash(張三借給李四5萬,借期6個月)=987654321098
987654321098與123456789012完全不同,則證明李四說謊了,則成功的保證了信息的不可篡改性。
常見的Hash演算法包括MD4、MD5、SHA系列演算法,現在主流領域使用的基本都是SHA系列演算法。SHA(Secure Hash Algorithm)並非一個演算法,而是一組hash演算法。最初是SHA-1系列,現在主流應用的是SHA-224、SHA-256、SHA-384、SHA-512演算法(通稱SHA-2),最近也提出了SHA-3相關演算法,如以太坊所使用的KECCAK-256就是屬於這種演算法。
MD5是一個非常經典的Hash演算法,不過可惜的是它和SHA-1演算法都已經被破解,被業內認為其安全性不足以應用於商業場景,一般推薦至少是SHA2-256或者更安全的演算法。
哈希演算法在區塊鏈中得到廣泛使用,例如區塊中,後一個區塊均會包含前一個區塊的哈希值,並且以後一個區塊的內容+前一個區塊的哈希值共同計算後一個區塊的哈希值,保證了鏈的連續性和不可篡改性。
二、加解密演算法
加解密演算法是密碼學的核心技術,從設計理念上可以分為兩大基礎類型:對稱加密演算法與非對稱加密演算法。根據加解密過程中所使用的密鑰是否相同來加以區分,兩種模式適用於不同的需求,恰好形成互補關系,有時也可以組合使用,形成混合加密機制。
對稱加密演算法(symmetric cryptography,又稱公共密鑰加密,common-key cryptography),加解密的密鑰都是相同的,其優勢是計算效率高,加密強度高;其缺點是需要提前共享密鑰,容易泄露丟失密鑰。常見的演算法有DES、3DES、AES等。
非對稱加密演算法(asymmetric cryptography,又稱公鑰加密,public-key cryptography),與加解密的密鑰是不同的,其優勢是無需提前共享密鑰;其缺點在於計算效率低,只能加密篇幅較短的內容。常見的演算法有RSA、SM2、ElGamal和橢圓曲線系列演算法等。 對稱加密演算法,適用於大量數據的加解密過程;不能用於簽名場景:並且往往需要提前分發好密鑰。非對稱加密演算法一般適用於簽名場景或密鑰協商,但是不適於大量數據的加解密。
三、信息摘要和數字簽名
顧名思義,信息摘要是對信息內容進行Hash運算,獲取唯一的摘要值來替代原始完整的信息內容。信息摘要是Hash演算法最重要的一個用途。利用Hash函數的抗碰撞性特點,信息摘要可以解決內容未被篡改過的問題。
數字簽名與在紙質合同上簽名確認合同內容和證明身份類似,數字簽名基於非對稱加密,既可以用於證明某數字內容的完整性,同時又可以確認來源(或不可抵賴)。
我們對數字簽名有兩個特性要求,使其與我們對手寫簽名的預期一致。第一,只有你自己可以製作本人的簽名,但是任何看到它的人都可以驗證其有效性;第二,我們希望簽名只與某一特定文件有關,而不支持其他文件。這些都可以通過我們上面的非對稱加密演算法來實現數字簽名。
在實踐中,我們一般都是對信息的哈希值進行簽名,而不是對信息本身進行簽名,這是由非對稱加密演算法的效率所決定的。相對應於區塊鏈中,則是對哈希指針進行簽名,如果用這種方式,前面的是整個結構,而非僅僅哈希指針本身。
四 、零知識證明(Zero Knowledge proof)
零知識證明是指證明者在不向驗證者提供任何額外信息的前提下,使驗證者相信某個論斷是正確的。
零知識證明一般滿足三個條件:
1、 完整性(Complteness):真實的證明可以讓驗證者成功驗證;
2、 可靠性(Soundness):虛假的證明無法讓驗證者通過驗證;
3、 零知識(Zero-Knowledge):如果得到證明,無法從證明過程中獲知證明信息之外的任何信息。
五、量子密碼學(Quantum cryptography)
隨著量子計算和量子通信的研究受到越來越多的關注,未來量子密碼學將對密碼學信息安全產生巨大沖擊。
量子計算的核心原理就是利用量子比特可以同時處於多個相干疊加態,理論上可以通過少量量子比特來表達大量信息,同時進行處理,大大提高計算速度。
這樣的話,目前的大量加密演算法,從理論上來說都是不可靠的,是可被破解的,那麼使得加密演算法不得不升級換代,否則就會被量子計算所攻破。
眾所周知,量子計算現在還僅停留在理論階段,距離大規模商用還有較遠的距離。不過新一代的加密演算法,都要考慮到這種情況存在的可能性。
④ 誰知道在區塊鏈上認證視頻和圖片的版權原理是什麼
基本上原理都一樣, 用抱品網舉例子, 抱品網視頻區塊鏈認證其實就是DApp, 先把視頻每分鍾關鍵幀的圖片截圖, 然後轉碼成一串唯一的數字 , 然後上傳記錄到以太坊區塊鏈之中。
⑤ 怎麼解讀區塊鏈的數字簽名
在區塊鏈的分布式網路里,節點之間進行通訊並達成信任,需要依賴數字簽名技術,它主要實現了身份確認以及信息真實性、完整性驗證。
數字簽名
數字簽名(又稱公鑰數字簽名、電子簽章)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現,用於鑒別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用於簽名,另一個用於驗證。就是只有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。簡單證明 「我就是我」。
⑥ 什麼是數字簽名
數字簽名科技名詞定義
中文名稱:數字簽名 英文名稱:digital signature 定義:以電子形式存在於數據信息之中的,或作為其附件的或邏輯上與之有聯系的數據,可用於辨別數據簽署人的身份,並表明簽署人對數據信息中包含的信息的認可。 應用學科:通信科技(一級學科);網路安全(二級學科) 以上內容由全國科學技術名詞審定委員會審定公布
求助編輯網路名片
數字簽名的流程數字簽名(又稱公鑰數字簽名、電子簽章)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現,用於鑒別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用於簽名,另一個用於驗證。
目錄
基本介紹
主要功能
簽名過程
個人安全郵件證書
用數字簽名識別病毒
原因分析
使用方法
原理特點鑒權
完整性
不可抵賴
如何實現
Java數字簽名步驟基本介紹
主要功能
簽名過程
個人安全郵件證書
用數字簽名識別病毒
原因分析
使用方法
原理特點 鑒權
完整性
不可抵賴
如何實現Java數字簽名步驟展開 編輯本段基本介紹
數字簽名不是指將你的簽名掃描成數字圖像,或者用觸摸板獲取的簽名,更不是你的落款。 數字簽名,就是只有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。 數字簽名是非對稱密鑰加密技術與數字摘要技術的應用。 數字簽名了的文件的完整性是很容易驗證的(不需要騎縫章,騎縫簽名,也不需要筆跡專家),而且數字簽名具有不可抵賴性(不需要筆跡專家來驗證)。 簡單地說,所謂數字簽名就是附加在數據單元上的一些數據,或是對數據單元所作的密碼變換。這種數據或變換允許數據單元的接收者用以確認數據單元的來源和數據單元的完整性並保護數據,防止被人(例如接收者)進行偽造。它是對電子形式的消息進行簽名的一種方法,一個簽名消息能在一個通信網路中傳輸。基於公鑰密碼體制和私鑰密碼體制都可以獲得數字簽名,目前主要是基於公鑰密碼體制的數字簽名。包括普通數字簽名和特殊數字簽名。普通數字簽名演算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir數字簽名演算法、Des/DSA,橢圓曲線數字簽名演算法和有限自動機數字簽名演算法等。特殊數字簽名有盲簽名、代理簽名、群簽名、不可否認簽名、公平盲簽名、門限簽名、具有消息恢復功能的簽名等,它與具體應用環境密切相關。顯然,數字簽名的應用涉及到法律問題,美國聯邦政府基於有限域上的離散對數問題制定了自己的數字簽名標准(DSS)。 數字簽名(Digital Signature)技術是不對稱加密演算法的典型應用。數字簽名的應用過程是,數據源發送方使用自己的私鑰對數據校驗和或其他與數據內容有關的變數進行加密處理,完成對數據的合法「簽名」,數據接收方則利用對方的公鑰來解讀收到的「數字簽名」,並將解讀結果用於對數據完整性的檢驗,以確認簽名的合法性。數字簽名技術是在網路系統虛擬環境中確認身份的重要技術,完全可以代替現實過程中的「親筆簽字」,在技術和法律上有保證。在數字簽名應用中,發送者的公鑰可以很方便地得到,但他的私鑰則需要嚴格保密。
編輯本段主要功能
保證信息傳輸的完整性、發送者的身份認證、防止交易中的抵賴發生。 數字簽名技術是將摘要信息用發送者的私鑰加密,與原文一起傳送給接收者。接收者只有用發送的公鑰才能解密被加密的摘要信息,然後用HASH函數對收到的原文產生一個摘要信息,與解密的摘要信息對比。如果相同,則說明收到的信息是完整的,在傳輸過程中沒有被修改,否則說明信息被修改過,因此數字簽名能夠驗證信息的完整性。 數字簽名是個加密的過程,數字簽名驗證是個解密的過程。
編輯本段簽名過程
「發送報文時,發送方用一個哈希函數從報文文本中生成報文摘要,然後用自己的私人密鑰對這個摘要進行加密,這個加密後的摘要將作為報文的數字簽名和報文一起發送給接收方,接收方首先用與發送方一樣的哈希函數從接收到的原始報文中計算出報文摘要,接著再用發送方的公用密鑰來對報文附加的數字簽名進行解密,如果這兩個摘要相同、那麼接收方就能確認該數字簽名是發送方的。 數字簽名有兩種功效:一是能確定消息確實是由發送方簽名並發出來的,因為別人假冒不了發送方的簽名。二是數字簽名能確定消息的完整性。因為數字簽名的特點是它代表了文件的特徵,文件如果發生改變,數字簽名的值也將發生變化。不同的文件將得到不同的數字簽名。 一次數字簽名涉及到一個哈希函數、發送者的公鑰、發送者的私鑰。」這報文鑒別的描述!數字簽名沒有那麼復雜。 數字簽名: 發送方用自己的密鑰對報文X進行E運算,生成不可讀取的密文Esk,然後將Esx傳送給接收方,接收方為了核實簽名,用發送方的密鑰進行D運算,還原報文。
編輯本段個人安全郵件證書
具有數字簽名功能的個人安全郵件證書是用戶證書的一種,是指單位用戶收發電子郵件時採用證書機制保證安全所必須具備的證書。個人安全電子郵件證書是符合x.509標準的數字安全證書,結合數字證書和S/MIME技術對普通電子郵件做加密和數字簽名處理,確保電子郵件內容的安全性、機密性、發件人身份確認性和不可抵賴性。 具有數字簽名功能的 個人安全郵件證書中包含證書持有人的電子郵件地址、證書持有人的公鑰、頒發者(CA)以及頒發者對該證書的簽名。個人安全郵件證書功能的實現決定於用戶使用的郵件系統是否支持相應功能。目前, MS Outlook 、Outlook Express、Foxmail及CA安全電子郵件系統均支持相應功能。使用個人安全郵件證書可以收發加密和數字簽名郵件,保證電子郵件傳輸中的機密性、完整性和不可否認性,確保電子郵件通信各方身份的真實性。
編輯本段用數字簽名識別病毒
如何區分數字簽名攻擊呢?有兩個方法: 1.查看數字簽名的詳細信息,我們應該查看該數字簽名的詳細信息,點擊「詳細信息」按鈕即可。 我們會發現正常EXE和感染(或捆綁木馬)後的EXE數字簽名的區別 正常EXE的數字簽名詳細信息 被篡改後的EXE數字簽名信息無效 方法2,使用數字簽名驗證程序sigcheck.exe (可以網路一下找這個工具,著名系統工具包Sysinternals Suite的組件之一。) 數字簽名異常的結果為: C:\Documents and Settings\litiejun\??\modify.exe: Verified: Unsigned File date: 15:46 2008-5-23 Publisher: n/a Description: n/a Proct: n/a Version: n/a File version: n/a 數字簽名正常的結果為: C:\Documents and Settings\litiejun\??\che.exe: Verified: Signed Signing date: 16:28 2008-4-29 Publisher: n/a Description: n/a Proct: n/a Version: n/a File version: n/a
編輯本段原因分析
1,精心設計的感染 當EXE被感染時,是很容易破壞文件的數字簽名信息的,如果攻擊者感染或破壞文件時,有意不去破壞EXE中有關數字簽名的部分,就可能出現感染後,數字簽名看上去正常的情況。但認真查看文件屬性或校驗文件的HASH值,你會發現該EXE程序已經不是最原始的版本了。 2.該軟體發行商的數字簽名文件被盜,攻擊者可以把捆綁木馬或感染病毒後的EXE程序,也打包上數字簽名,這種情況下就更嚴重了。企業如果申請了數字簽名證書,一定要妥善保管,否則後患無窮。
編輯本段使用方法
你可以對你發出的每一封電子郵件進行數字簽名。這不是指落款,普遍把落款訛誤成簽名。 在我國大陸,數字簽名是具法律效力的,正在被普遍使用。2000年,中華人民共和國的新《合同法》首次確認了電子合同、電子簽名的法律效力。2005年4月1日起,中華人民共和國首部《電子簽名法》正式實施。
編輯本段原理特點
每個人都有一對「鑰匙」(數字身份),其中一個只有她/他本人知道(密鑰),另一個公開的(公鑰)。簽名的時候用密鑰,驗證簽名的時候用公鑰。又因為任何人都可以落款聲稱她/他就是你,因此公鑰必須向接受者信任的人(身份認證機構)來注冊。注冊後身份認證機構給你發一數字證書。對文件簽名後,你把此數字證書連同文件及簽名一起發給接受者,接受者向身份認證機構求證是否真地是用你的密鑰簽發的文件。 在通訊中使用數字簽名一般基於以下原因:
鑒權
公鑰加密系統允許任何人在發送信息時使用公鑰進行加密,數字簽名能夠讓信息接收者確認發送者的身份。當然,接收者不可能百分之百確信發送者的真實身份,而只能在密碼系統未被破譯的情況下才有理由確信。 鑒權的重要性在財務數據上表現得尤為突出。舉個例子,假設一家銀行將指令由它的分行傳輸到它的中央管理系統,指令的格式是(a,b),其中a是賬戶的賬號,而b是賬戶的現有金額。這時一位遠程客戶可以先存入100元,觀察傳輸的結果,然後接二連三的發送格式為(a,b)的指令。這種方法被稱作重放攻擊。
完整性
傳輸數據的雙方都總希望確認消息未在傳輸的過程中被修改。加密使得第三方想要讀取數據十分困難,然而第三方仍然能採取可行的方法在傳輸的過程中修改數據。一個通俗的例子就是同形攻擊:回想一下,還是上面的那家銀行從它的分行向它的中央管理系統發送格式為(a,b)的指令,其中a是賬號,而b是賬戶中的金額。一個遠程客戶可以先存100元,然後攔截傳輸結果,再傳輸(a,b3),這樣他就立刻變成百萬富翁了。
不可抵賴
在密文背景下,抵賴這個詞指的是不承認與消息有關的舉動(即聲稱消息來自第三方)。消息的接收方可以通過數字簽名來防止所有後續的抵賴行為,因為接收方可以出示簽名給別人看來證明信息的來源。
編輯本段如何實現
數字簽名演算法依靠公鑰加密技術來實現的。在公鑰加密技術里,每一個使用者有一對密鑰:一把公鑰和一把私鑰。公鑰可以自由發布,但私鑰則秘密保存;還有一個要求就是要讓通過公鑰推算出私鑰的做法不可能實現。 普通的數字簽名演算法包括三種演算法: 1.密碼生成演算法 ; 2.標記演算法 ; 3.驗證演算法 。
編輯本段Java數字簽名步驟
1、將applet的class文件打包成*.jar(不會的可以在命令行中輸入jar查看幫助) 2 首先我們要生成一個keystore 否則在簽名的時候報如下錯誤 jarsigner 錯誤: java.lang.RuntimeException: 密鑰庫裝入: C:\Documents and Settings\ij2ee\.keystore (系統找不到指定的文件。). (這邊的ij2ee 是我當前系統用戶名) 生成keystore的語句:keytool -genkey -alias 別名你可以自己寫 -keyalg RSA -keystore .keystore 比如我的就是 keytool -genkey -alias ij2ee -keyalg RSA -keystore .keystore 下面是會出現的數字簽名的一些步驟操作: 輸入keystore密碼: 再次輸入新密碼: 您的名字與姓氏是什麼? [Unknown]: ij2ee 您的組織單位名稱是什麼? [Unknown]: mtk 您的組織名稱是什麼? [Unknown]: mtk 您所在的城市或區域名稱是什麼? [Unknown]: suzhou 您所在的州或省份名稱是什麼? [Unknown]: jiangsu 該單位的兩字母國家代碼是什麼 [Unknown]: cn CN=jeson, OU=mtk, O=mtk, L=suzhou, ST=jiangsu, C=cn 正確嗎? [否]: y 輸入<sfcs>的主密碼 (如果和 keystore 密碼相同,按回車): 這時候會在jdk的bin目錄下生成 .keystore 。把這個.keystore文件移動到 C:\Documents and Settings\當前系統用戶 的目錄下面。 3、創建一個數字證書 在命令行中輸入如下指令,peakCA和peakCALib自己起名字好了,3650是有效天數,就是10年左右,在創建證書的的時候,需要填寫證書的一些信息和證書對應的私鑰密碼。這些信息包括 CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx,都是中文,一看就懂的 keytool -genkey -alias peakCA -keyalg RSA -keysize 1024 -keystore peakCALib -validity 3650 4、將證書導出到證書文件中 在命令行中輸入如下指令,peakCA和peakCALib自己起名字好了,******是你輸入的密碼 keytool -export -alias peakCA -file peakCA.cer -keystore peakCALib -storepass ****** -rfc 5、授權jar文件,在命令行中輸入如下指令 jarsigner -keystore peakCALib myapplet.jar peakCA
⑦ 區塊鏈one 如何簽名驗證
【驗證簽名】
跳出驗證界面的,點擊左上角的返回按鍵,然後升級到最新版本,刷新一下節點就可以了。 或者重新卸載,用助記詞恢復賬號。【刷新節點】在自由溝通,右上角+號,「節點檢測"