區塊鏈數字簽名如何生成
Ⅰ 數字簽名的原理
數字簽名是附加在數據單元上的一些數據,或是對數據單元所作的密碼變換。這種數據或變換允許數據單元的接收者用以確認數據單元的來源和數據單元的完整性並保護數據,防止被人(例如接收者)進行偽造。
它是對電子形式的消息進行簽名的一種方法,一個簽名消息能在一個通信網路中傳輸。基於公鑰密碼體制和私鑰密碼體制都可以獲得數字簽名,主要是基於公鑰密碼體制的數字簽名。包括普通數字簽名和特殊數字簽名。
(1)區塊鏈數字簽名如何生成擴展閱讀:
實現方法
數字簽名演算法依靠公鑰加密技術來實現的。在公鑰加密技術里,每一個使用者有一對密鑰:一把公鑰和一把私鑰。公鑰可以自由發布,但私鑰則秘密保存;還有一個要求就是要讓通過公鑰推算出私鑰的做法不可能實現。
普通的數字簽名演算法包括三種演算法:
1.密碼生成演算法;
2.標記演算法;
3.驗證演算法。
Ⅱ 什麼是數字簽名
簡單地說,所謂數字簽名就是附加在數據單元上的一些數據,或是對數據單元所作的密碼變換。這種數據或變換允許數據單元的接收者用以確認數據單元的來源和數據單元的完整性並保護數據,防止被人(例如接收者)進行偽造。它是對電子形式的消息進行簽名的一種方法,一個簽名消息能在一個通信網路中傳輸。基於公鑰密碼體制和私鑰密碼體制都可以獲得數字簽名,目前主要是基於公鑰密碼體制的數字簽名。包括普通數字簽名和特殊數字簽名。普通數字簽名演算法有RSA、ElGamal、Fiat-Shamir、Guillou-
Quisquarter、Schnorr、Ong-Schnorr-Shamir數字簽名演算法、Des/DSA,橢圓曲線數字簽名演算法和有限自動機數字簽名演算法等。特殊數字簽名有盲簽名、代理簽名、群簽名、不可否認簽名、公平盲簽名、門限簽名、具有消息恢復功能的簽名等,它與具體應用環境密切相關。顯然,數字簽名的應用涉及到法律問題,美國聯邦政府基於有限域上的離散對數問題制定了自己的數字簽名標准(DSS)。一些國家如法國和德國已經制定了數字簽名法。
您可到GlobalSign
的官方網站進行詳細了解!
Ⅲ 什麼是數字簽名
數字簽名科技名詞定義
中文名稱:數字簽名 英文名稱: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
Ⅳ 區塊鏈數字簽名加密的私玥可以用原加密的私玥解嗎
首先,你要了解一下什麼是「私鑰」和「公鑰」以及它們是如何發揮作用的。
區塊鏈系統為了保證用戶的數據安全,通過一種密碼演算法來實現的,具體來說的話是通過一種公開的密碼演算法機制來實現的,我們都知道如何一種密碼演算法,有會有一個秘鑰,而公開的秘鑰演算法是一對(也就是兩個)秘鑰,就跟虎符是一樣的是彼此配合來使用的。一個叫作公鑰,就是可以公開給別人,私鑰自己要保管好的,在區塊鏈系統中,公鑰就是用來識別身份的,而私鑰就是來相當於 鑰匙來解密,但是不同的是,一個公鑰僅對唯一的一個私鑰,也是就說私鑰如果忘記都是不會幫你找回的,在區塊鏈系統中不會幫你找回私鑰,所以要妥善保管好私鑰。
在區塊鏈系統結構中,用公鑰加密的數據必需要用對應的私鑰來解密,而用私鑰加密的數據
就要用對應的公鑰來解密,那麼這里的私鑰加密(通常稱之為「簽名」)的數據必需要對應的公鑰來解密,這個特點可以發揮很大的一個作用。
舉個簡單的例子吧,如果張三要發送給李四一張支票,那麼怎麼傳送呢?就這么發送過去,會被記賬的人拿到,風險可就大了,於是張三想了一個辦法,他在支票上用李四的公鑰加了個密,然後再簽上了自己的名字(用自己的私鑰簽名)這個時候其他的人就算那拿到支票也沒有用,因為,只有李四才有自己的私鑰,也就是只有李四才能解開這張支票來使用。這種功能設計在區塊鏈系統稱之為「腳本系統」
所以,區塊鏈數字簽名加密的私玥不可以用原加密的私玥解,必需要與之相對應的公鑰來解密。
Ⅳ 數字簽名是什麼
什麼是數字簽名?數字簽名與電子簽名是不是一回事?
電子簽名和數字簽名的內涵並不一樣,數字簽名是電子簽名技術中的一種,不過兩者的關系也很密切,目前電子簽名法中提到的簽名,一般指的就是"數字簽名"。
電子簽名
要理解什麼是電子簽名,需要從傳統手工簽名或蓋印章談起。在傳統商務活動中,為了保證交易的安全與真實,一份書面合同或公文要由當事人或其負責人簽字、蓋章,以便讓交易雙方識別是誰簽的合同,保證簽字或蓋章的人認可合同的內容,在法律上才能承認這份合同是有效的。而在電子商務的虛擬世界中,合同或文件是以電子文件的形式表現和傳遞的。在電子文件上,傳統的手寫簽名和蓋章是無法進行的,這就必須依*技術手段來替代。能夠在電子文件中識別雙方交易人的真實身份,保證交易的安全性和真實性以及不可抵懶性,起到與手寫簽名或者蓋章同等作用的簽名的電子技術手段,稱之為電子簽名。
從法律上講,簽名有兩個功能:即標識簽名人和表示簽名人對文件內容的認可。聯合國貿發會的《電子簽名示範法》中對電子簽名作如下定義:"指在數據電文中以電子形式所含、所附或在邏輯上與數據電文有聯系的數據它可用於鑒別與數據電文相關的簽名人和表明簽名人認可數據電文所含信息";在歐盟的《電子簽名共同框架指令》中就規定?quot;以電子形式所附或在邏輯上與其他電子數據相關的數據,作為一種判別的方法"稱電子簽名。
實現電子簽名的技術手段有很多種,但目前比較成熟的,世界先進國家普遍使用的電子簽名技術還是"數字簽名"技術。由於保持技術中立性是制訂法律的一個基本原則,目前還沒有任何理由說明公鑰密碼理論是製作簽名的唯一技術,因此有必要規定一個更一般化的概念以適應今後技術的發展。但是,目前電子簽名法中提到的簽名,一般指的就是"數字簽名"。
數字簽名
所謂"數字簽名"就是通過某種密碼運算生成一系列符號及代碼組成電子密碼進行簽名,來代替書寫簽名或印章,對於這種電子式的簽名還可進行技術驗證,其驗證的准確度是一般手工簽名和圖章的驗證而無法比擬的。"數字簽名"是目前電子商務、電子政務中應用最普遍、技術最成熟的、可操作性最強的一種電子簽名方法。它採用了規范化的程序和科學化的方法,用於鑒定簽名人的身份以及對一項電子數據內容的認可。它還能驗證出文件的原文在傳輸過程中有無變動,確保傳輸電子文件的完整性、真實性和不可抵賴性。
數字簽名在ISO7498-2標准中定義為:"附加在數據單元上的一些數據,或是對數據單元所作的密碼變換,這種數據和變換允許數據單元的接收者用以確認數據單元來源和數據單元的完整性,並保護數據,防止被人(例如接收者)進行偽造"。美國電子簽名標准(DSS,FIPS186-2)對數字簽名作了如下解釋:"利用一套規則和一個參數對數據計算所得的結果,用此結果能夠確認簽名者的身份和數據的完整性"。按上述定義PKI(Public Key Infrastructino 公鑰基礎設施)提供可以提供數據單元的密碼變換,並能使接收者判斷數據來源及對數據進行驗證。
PKI的核心執行機構是電子認證服務提供者,即通稱為認證機構CA(Certificate Authority),PKI簽名的核心元素是由CA簽發的數字證書。它所提供的PKI服務就是認證、數據完整性、數據保密性和不可否認性。它的作法就是利用證書公鑰和與之對應的私鑰進行加/解密,並產生對數字電文的簽名及驗證簽名。數字簽名是利用公鑰密碼技術和其他密碼演算法生成一系列符號及代碼組成電子密碼進行簽名,來代替書寫簽名和印章;這種電子式的簽名還可進行技術驗證,其驗證的准確度是在物理世界中對手工簽名和圖章的驗證是無法比擬的。這種簽名方法可在很大的可信PKI域人群中進行認證,或在多個可信的PKI域中進行交*認證,它特別適用於互聯網和廣域網上的安全認證和傳輸。
「數字簽名」與普通文本簽名的最大區別在於,它可以使用個性鮮明的圖形文件,你只要利用掃描儀或作圖工具將你的個性簽名、印章甚至相片等,製作成BMP文件,就可以當做「數字簽名」的素材。
目前可以提供「數字簽名」功能的軟體很多,用法和原理都大同小異,其中比較常用的有「 OnSign」。安裝「OnSign」後,在Word、Outlook等程序的工具欄上,就會出現,「OnSign」的快捷按鈕,每次使用時,需輸入自己的密碼,以確保他人無法盜用。
對於使用了「OnSign」寄出的文件,收件人也需要安裝「OnSign」或「OnSign Viewer」,這樣才具備了識別「數字簽名」的功能。根據「OnSign」的設計,任何文件內容的竄改與攔截,都會讓簽名失效。因此當對方識別出你的「數字簽名」,就能確定這份文件是由你本人所發出的,並且中途沒有被竄改或攔截過。當然如果收件人還不放心,也可以單擊「數字簽名」上的藍色問號,「OnSign」就會再次自動檢查,如果文件有問題,「數字簽名」上就會出現紅色的警告標志。
在電子郵件使用頻繁的網路時代,使用好「數字簽名」,就像傳統信件中的「掛號信」,無疑為網路傳輸文件的安全又增加了一道保護屏障。
回答者:gufanyy - 魔法師 四級 12-4 15:00
--------------------------------------------------------------------------------
數字簽名可以用來驗證文檔的真實性和完整性,數字簽名使用強大的加密技術和公鑰基礎結構,以更好地保證文檔的真實性、完整性和受認可性。 該流程非常安全,一些政府已經立法賦予數字簽名法律效力。
在與包括 Entrust 和 VeriSign 在內的一流安全供應商的合作中,Adobe 使所有行業都可以將數字簽名嵌入到 Adobe® 攜帶型文檔格式 (PDF) 文件中。 使用 Adobe 解決方案,您可以:
將數字簽名結合到往返工作流程中
在防火牆內外安全地發送已簽名的文檔
驗證簽名人的數字身份
通過在發送之前進行數字簽名來認證電子文檔
核實文檔沒有被欺騙性地更改
降低成本並加速批准流程
Ⅵ 區塊鏈如何保證使用安全
區塊鏈項目(尤其是公有鏈)的一個特點是開源。通過開放源代碼,來提高項目的可信性,也使更多的人可以參與進來。但源代碼的開放也使得攻擊者對於區塊鏈系統的攻擊變得更加容易。近兩年就發生多起黑客攻擊事件,近日就有匿名幣Verge(XVG)再次遭到攻擊,攻擊者鎖定了XVG代碼中的某個漏洞,該漏洞允許惡意礦工在區塊上添加虛假的時間戳,隨後快速挖出新塊,短短的幾個小時內謀取了近價值175萬美元的數字貨幣。雖然隨後攻擊就被成功制止,然而沒人能夠保證未來攻擊者是否會再次出擊。
當然,區塊鏈開發者們也可以採取一些措施
一是使用專業的代碼審計服務,
二是了解安全編碼規范,防患於未然。
密碼演算法的安全性
隨著量子計算機的發展將會給現在使用的密碼體系帶來重大的安全威脅。區塊鏈主要依賴橢圓曲線公鑰加密演算法生成數字簽名來安全地交易,目前最常用的ECDSA、RSA、DSA 等在理論上都不能承受量子攻擊,將會存在較大的風險,越來越多的研究人員開始關注能夠抵抗量子攻擊的密碼演算法。
當然,除了改變演算法,還有一個方法可以提升一定的安全性:
參考比特幣對於公鑰地址的處理方式,降低公鑰泄露所帶來的潛在的風險。作為用戶,尤其是比特幣用戶,每次交易後的余額都採用新的地址進行存儲,確保有比特幣資金存儲的地址的公鑰不外泄。
共識機制的安全性
當前的共識機制有工作量證明(Proof of Work,PoW)、權益證明(Proof of Stake,PoS)、授權權益證明(Delegated Proof of Stake,DPoS)、實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)等。
PoW 面臨51%攻擊問題。由於PoW 依賴於算力,當攻擊者具備算力優勢時,找到新的區塊的概率將會大於其他節點,這時其具備了撤銷已經發生的交易的能力。需要說明的是,即便在這種情況下,攻擊者也只能修改自己的交易而不能修改其他用戶的交易(攻擊者沒有其他用戶的私鑰)。
在PoS 中,攻擊者在持有超過51%的Token 量時才能夠攻擊成功,這相對於PoW 中的51%算力來說,更加困難。
在PBFT 中,惡意節點小於總節點的1/3 時系統是安全的。總的來說,任何共識機制都有其成立的條件,作為攻擊者,還需要考慮的是,一旦攻擊成功,將會造成該系統的價值歸零,這時攻擊者除了破壞之外,並沒有得到其他有價值的回報。
對於區塊鏈項目的設計者而言,應該了解清楚各個共識機制的優劣,從而選擇出合適的共識機制或者根據場景需要,設計新的共識機制。
智能合約的安全性
智能合約具備運行成本低、人為干預風險小等優勢,但如果智能合約的設計存在問題,將有可能帶來較大的損失。2016 年6 月,以太坊最大眾籌項目The DAO 被攻擊,黑客獲得超過350 萬個以太幣,後來導致以太坊分叉為ETH 和ETC。
對此提出的措施有兩個方面:
一是對智能合約進行安全審計,
二是遵循智能合約安全開發原則。
智能合約的安全開發原則有:對可能的錯誤有所准備,確保代碼能夠正確的處理出現的bug 和漏洞;謹慎發布智能合約,做好功能測試與安全測試,充分考慮邊界;保持智能合約的簡潔;關注區塊鏈威脅情報,並及時檢查更新;清楚區塊鏈的特性,如謹慎調用外部合約等。
數字錢包的安全性
數字錢包主要存在三方面的安全隱患:第一,設計缺陷。2014 年底,某簽報因一個嚴重的隨機數問題(R 值重復)造成用戶丟失數百枚數字資產。第二,數字錢包中包含惡意代碼。第三,電腦、手機丟失或損壞導致的丟失資產。
應對措施主要有四個方面:
一是確保私鑰的隨機性;
二是在軟體安裝前進行散列值校驗,確保數字錢包軟體沒有被篡改過;
三是使用冷錢包;
四是對私鑰進行備份。
Ⅶ 怎麼解讀區塊鏈的數字簽名
在區塊鏈的分布式網路里,節點之間進行通訊並達成信任,需要依賴數字簽名技術,它主要實現了身份確認以及信息真實性、完整性驗證。
數字簽名
數字簽名(又稱公鑰數字簽名、電子簽章)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現,用於鑒別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用於簽名,另一個用於驗證。就是只有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。簡單證明 「我就是我」。
Ⅷ 數字簽名是什麼數字簽名方案
數字簽名也稱之為電子簽名,是通過電腦外接一種帶電磁的簽名設備,當你在簽名設備里原筆跡簽名時,就會立馬呈現到電腦上,你簽的名叫做數字簽名。
全球做簽名設備的公司有很多,但做的好,技術和服務排前三,並且還在國內的公司有一家,叫繪王科技。你把需求給到他們,他們給你發數字簽名方案的可行性解決方案
Ⅸ 區塊鏈密碼演算法是怎樣的
區塊鏈作為新興技術受到越來越廣泛的關注,是一種傳統技術在互聯網時代下的新的應用,這其中包括分布式數據存儲技術、共識機制和密碼學等。隨著各種區塊鏈研究聯盟的創建,相關研究得到了越來越多的資金和人員支持。區塊鏈使用的Hash演算法、零知識證明、環簽名等密碼演算法:
Hash演算法
哈希演算法作為區塊鏈基礎技術,Hash函數的本質是將任意長度(有限)的一組數據映射到一組已定義長度的數據流中。若此函數同時滿足:
(1)對任意輸入的一組數據Hash值的計算都特別簡單;
(2)想要找到2個不同的擁有相同Hash值的數據是計算困難的。
滿足上述兩條性質的Hash函數也被稱為加密Hash函數,不引起矛盾的情況下,Hash函數通常指的是加密Hash函數。對於Hash函數,找到使得被稱為一次碰撞。當前流行的Hash函數有MD5,SHA1,SHA2,SHA3。
比特幣使用的是SHA256,大多區塊鏈系統使用的都是SHA256演算法。所以這里先介紹一下SHA256。
1、 SHA256演算法步驟
STEP1:附加填充比特。對報文進行填充使報文長度與448模512同餘(長度=448mod512),填充的比特數范圍是1到512,填充比特串的最高位為1,其餘位為0。
STEP2:附加長度值。將用64-bit表示的初始報文(填充前)的位長度附加在步驟1的結果後(低位位元組優先)。
STEP3:初始化緩存。使用一個256-bit的緩存來存放該散列函數的中間及最終結果。
STEP4:處理512-bit(16個字)報文分組序列。該演算法使用了六種基本邏輯函數,由64 步迭代運算組成。每步都以256-bit緩存值為輸入,然後更新緩存內容。每步使用一個32-bit 常數值Kt和一個32-bit Wt。其中Wt是分組之後的報文,t=1,2,...,16 。
STEP5:所有的512-bit分組處理完畢後,對於SHA256演算法最後一個分組產生的輸出便是256-bit的報文。
2、環簽名
2001年,Rivest, shamir和Tauman三位密碼學家首次提出了環簽名。是一種簡化的群簽名,只有環成員沒有管理者,不需要環成員間的合作。環簽名方案中簽名者首先選定一個臨時的簽名者集合,集合中包括簽名者。然後簽名者利用自己的私鑰和簽名集合中其他人的公鑰就可以獨立的產生簽名,而無需他人的幫助。簽名者集合中的成員可能並不知道自己被包含在其中。
環簽名方案由以下幾部分構成:
(1)密鑰生成。為環中每個成員產生一個密鑰對(公鑰PKi,私鑰SKi)。
(2)簽名。簽名者用自己的私鑰和任意n個環成員(包括自己)的公鑰為消息m生成簽名a。
(3)簽名驗證。驗證者根據環簽名和消息m,驗證簽名是否為環中成員所簽,如果有效就接收,否則丟棄。
環簽名滿足的性質:
(1)無條件匿名性:攻擊者無法確定簽名是由環中哪個成員生成,即使在獲得環成員私鑰的情況下,概率也不超過1/n。
(2)正確性:簽名必需能被所有其他人驗證。
(3)不可偽造性:環中其他成員不能偽造真實簽名者簽名,外部攻擊者即使在獲得某個有效環簽名的基礎上,也不能為消息m偽造一個簽名。
3、環簽名和群簽名的比較
(1)匿名性。都是一種個體代表群體簽名的體制,驗證者能驗證簽名為群體中某個成員所簽,但並不能知道為哪個成員,以達到簽名者匿名的作用。
(2)可追蹤性。群簽名中,群管理員的存在保證了簽名的可追蹤性。群管理員可以撤銷簽名,揭露真正的簽名者。環簽名本身無法揭示簽名者,除非簽名者本身想暴露或者在簽名中添加額外的信息。提出了一個可驗證的環簽名方案,方案中真實簽名者希望驗證者知道自己的身份,此時真實簽名者可以通過透露自己掌握的秘密信息來證實自己的身份。
(3)管理系統。群簽名由群管理員管理,環簽名不需要管理,簽名者只有選擇一個可能的簽名者集合,獲得其公鑰,然後公布這個集合即可,所有成員平等。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。