複製鏈接
請複製以下鏈接發送給好友

數字簽名

鎖定
數字簽名(又稱公鑰數字簽名)是隻有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是在使用了公鑰加密領域的技術來實現的,用於鑑別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用於簽名,另一個用於驗證。數字簽名是非對稱密鑰加密技術數字摘要技術的應用。 [1] 
中文名
數字簽名
外文名
digital signature;digitally signed
別    名
公鑰數字簽名
用    途
鑑別數字信息
包含運算
兩種互補的運算,一個用於簽名,另一個用於驗證
技    術
非對稱密鑰加密技術與數字摘要技術

數字簽名原理

數字簽名的文件的完整性是很容易驗證的(不需要騎縫章,騎縫簽名,也不需要筆跡專家),而且數字簽名具有不可抵賴性(不可否認性)。 [1] 
簡單地説,所謂數字簽名就是附加在數據單元上的一些數據,或是對數據單元所作的密碼變換。這種數據或變換允許數據單元的接收者用以確認數據單元的來源和數據單元的完整性並保護數據,防止被人(例如接收者)進行偽造。它是對電子形式的消息進行簽名的一種方法,一個簽名消息能在一個通信網絡中傳輸。基於公鑰密碼體制私鑰密碼體制都可以獲得數字簽名,主要是基於公鑰密碼體制的數字簽名。包括普通數字簽名和特殊數字簽名。普通數字簽名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir數字簽名算法、Des/DSA,橢圓曲線數字簽名算法和有限自動機數字簽名算法等。特殊數字簽名有盲簽名、代理簽名、羣簽名、不可否認簽名、公平盲簽名、門限簽名、具有消息恢復功能的簽名等,它與具體應用環境密切相關。顯然,數字簽名的應用涉及到法律問題,美國聯邦政府基於有限域上的離散對數問題制定了自己的數字簽名標準(DSS)。 [1] 

數字簽名特點

每個人都有一對“鑰匙”(數字身份),其中一個只有她/他本人知道(私鑰),另一個公開的(公鑰)。簽名的時候用私鑰,驗證簽名的時候用公鑰。又因為任何人都可以落款聲稱她/他就是你,因此公鑰必須向接受者信任的人(身份認證機構)來註冊。註冊後身份認證機構給你發一數字證書。對文件簽名後,你把此數字證書連同文件及簽名一起發給接受者,接受者向身份認證機構求證是否真地是用你的密鑰簽發的文件。 [2] 
在通訊中使用數字簽名一般具有以下特點: [2] 

數字簽名鑑權

公鑰加密系統允許任何人在發送信息時使用公鑰進行加密,接收信息時使用私鑰解密。當然,接收者不可能百分之百確信發送者的真實身份,而只能在密碼系統未被破譯的情況下才有理由確信。 [2] 
鑑權的重要性在財務數據上表現得尤為突出。舉個例子,假設一家銀行將指令由它的分行傳輸到它的中央管理系統,指令的格式是(a,b),其中a是賬户的賬號,而b是賬户的現有金額。這時一位遠程客户可以先存入100元,觀察傳輸的結果,然後接二連三的發送格式為(a,b)的指令。這種方法被稱作重放攻擊 [2] 

數字簽名完整性

傳輸數據的雙方都總希望確認消息未在傳輸的過程中被修改。加密使得第三方想要讀取數據十分困難,然而第三方仍然能採取可行的方法在傳輸的過程中修改數據。一個通俗的例子就是同形攻擊:回想一下,還是上面的那家銀行從它的分行向它的中央管理系統發送格式為(a,b)的指令,其中a是賬號,而b是賬户中的金額。一個遠程客户可以先存100元,然後攔截傳輸結果,再傳輸(a,b),這樣他就立刻變成百萬富翁了。 [2] 

數字簽名不可抵賴

密文背景下,抵賴這個詞指的是不承認與消息有關的舉動(即聲稱消息來自第三方)。消息的接收方可以通過數字簽名來防止所有後續的抵賴行為,因為接收方可以出示簽名給別人看來證明信息的來源。 [2] 

數字簽名主要功能

網絡的安全,主要是網絡信息安全,需要取相應的安全技術措施,提供適合的安全服務。數字簽名機制作為保障網絡信息安全的手段之一,可以解決偽造、抵賴、冒充和篡改問題。數字簽名的目的之一就是在網絡環境中代替傳統的手工簽字與印章,有着重要作用: [3] 
(1)防冒充(偽造)。私有密鑰只有簽名者自己知道,所以其他人不可能構造出正確的。 [3] 
(2)可鑑別身份。由於傳統的手工簽名一般是雙方直接見面的,身份自可一清二楚。在網絡環境中,接收方必須能夠鑑別發送方所宣稱的身份。 [3] 
(3)防篡改(防破壞信息的完整性)。對於傳統的手工簽字,假如要簽署一份200頁的合同,是僅僅在合同末尾簽名呢?還是對每一頁都簽名?如果僅在合同末尾簽名,對方會不會偷換其中的幾頁? 而對於數字簽名,簽名與原有文件已經形成了一個混合的整體數據,不可能被篡改,從而保證了數據的完整性 [3] 
(4)防重放。如在日常生活中,A向B借了錢,同時寫了一張借條給B,當A還錢的候,肯定要向B索回他寫的借條撕毀,不然,恐怕他會再次用借條要求A還錢。在數字簽名中,如果採用了對簽名報文添加流水號時間戳等技術,可以防止重放攻擊。 [3] 
(5)防抵賴。如前所述,數字簽名可以鑑別身份,不可能冒充偽造,那麼,只要保好籤名的報文,就好似保存好了手工簽署的合同文本,也就是保留了證據,簽名者就無法抵賴。那如果接收者確已收到對方的簽名報文,卻抵賴沒有收到呢? 要預防接收者的抵賴。在數字簽名體制中,要求接收者返回一個自己的簽名表示收到的報文,給對方或者第三方或者引入第三方機制。如此操作,雙方均不可抵賴。 [3] 
(6)機密性(保密性)。手工簽字的文件(如同文本)是不具備保密性的,文件一旦丟失,其中的信息就極可能泄露。數字簽名可以加密要簽名消息的雜湊值,不具備對消息本身進行加密,當然,如果簽名的報名不要求機密性,也可以不用加密。 [3] 
保證信息傳輸的完整性、發送者的身份認證、防止交易中的抵賴發生。 [4] 
數字簽名技術是將摘要信息用發送者的私鑰加密,與原文一起傳送給接收者。接收者用發送者的公鑰解密被加密的摘要信息,然後用HASH函數對收到的原文產生一個摘要信息 [8]  ,與解密的摘要信息對比。如果相同,則説明收到的信息是完整的,在傳輸過程中沒有被修改,否則説明信息被修改過,因此數字簽名能夠驗證信息的完整性。 [4] 
數字簽名是個加密的過程,數字簽名驗證是個解密的過程。 [4] 

數字簽名簽名過程

發送報文時,發送方用一個哈希函數從報文文本中生成報文摘要,然後用發送方的私鑰對這個摘要進行加密,這個加密後的摘要將作為報文的數字簽名和報文一起發送給接收方,接收方首先用與發送方一樣的哈希函數從接收到的原始報文中計算出報文摘要,接着再公鑰來對報文附加的數字簽名進行解密,如果這兩個摘要相同、那麼接收方就能確認該報文是發送方的。 [5] 
數字簽名有兩種功效:一是能確定消息確實是由發送方簽名併發出來的,因為別人假冒不了發送方的簽名。二是數字簽名能確定消息的完整性。因為數字簽名的特點是它代表了文件的特徵,文件如果發生改變,數字摘要的值也將發生變化。不同的文件將得到不同的數字摘要。 一次數字簽名涉及到一個哈希函數、接收者的公鑰、發送方的私鑰 [5] 

數字簽名使用方法

你可以對你發出的每一封電子郵件進行數字簽名。這不是指落款,普遍把落款訛誤成簽名。
在我國大陸,數字簽名是具法律效力的,正在被普遍使用。2000年,中華人民共和國的新《合同法》首次確認了電子合同電子簽名法律效力。2005年4月1日起,中華人民共和國首部《電子簽名法》正式實施。

數字簽名郵件證書

具有數字簽名功能的個人安全郵件證書是用户證書的一種,是指單位用户收發電子郵件時採用證書機制保證安全所必須具備的證書。個人安全電子郵件證書是符合x.509標準的數字安全證書,結合數字證書S/MIME技術對普通電子郵件做加密和數字簽名處理,確保電子郵件內容的安全性、機密性、發件人身份確認性和不可抵賴性。 具有數字簽名功能的 個人安全郵件證書中包含證書持有人的電子郵件地址、證書持有人的公鑰、頒發者(CA)以及頒發者對該證書的簽名。個人安全郵件證書功能的實現決定於用户使用的郵件系統是否支持相應功能。 MS Outlook 、Outlook Express、Foxmail及CA安全電子郵件系統均支持相應功能。使用個人安全郵件證書可以收發加密和數字簽名郵件,保證電子郵件傳輸中的機密性、完整性和不可否認性,確保電子郵件通信各方身份的真實性。 [6] 

數字簽名實現方法

數字簽名算法依靠公鑰加密技術來實現的。在公鑰加密技術裏,每一個使用者有一對密鑰:一把公鑰和一把私鑰公鑰可以自由發佈,但私鑰則秘密保存;還有一個要求就是要讓通過公鑰推算出私鑰的做法不可能實現。 [7] 
普通的數字簽名算法包括三種算法: [7] 
1.密碼生成算法
2.標記算法
3.驗證算法
數字簽名技術大多基於哈希摘要和非對稱密鑰加密體制來實現。如果簽名者想要對某個文件進行數字簽名,他必須首先從可信的第三方機構(數字證書認證中心CA)取得私鑰和公鑰,這需要用到PKI技術 [7] 
1.有哈希算法的數字簽名與驗證
圖1 數字簽名及其驗證 圖1 數字簽名及其驗證
哈希函數是一種“壓縮函數”,利用哈希函數可以把任意長度的輸入經由散列函數算法變換成固定長度的輸出,該輸出的哈希值就是消息摘要,也稱數字摘要。在正式的數字簽名中,發送方首先對發送文件採用哈希算法,得到一個固定長度的消息摘要( Message Digest);再用自己的私鑰( Secret key,SK)對消息摘要進行簽名,形成發送方的數字簽名。數字簽名將作為隊件和原文一起發送給接收方;接收方首先用發送方的公鑰對數字簽名進行解密得到發送方的數字摘要,然後用相同的哈希函數對原文進行哈希計算,得到一個新的消息摘要,最後將消息摘要與收到的消息摘要做比較。具體過程如圖1所示。 [7] 
2.基於非對稱密鑰加密體制的數字簽名與驗證
圖2 基於非對稱密鑰的數字簽名與驗證 圖2 基於非對稱密鑰的數字簽名與驗證
發送方首先將原文用自己的私鑰加密得到數字簽名,然後將原文和數字簽名一起發送給接收方。接收方用發送方的公鑰對數字簽名進行解密,最後與原文進行比較,如圖2所示數字簽名是電子商務電子政務中應用普遍、技術成熟、可操作性強的一種電子簽名方法。它採用了規範化的程序和科學化的方法,用於鑑定簽名人的身份以及對一項電子數據內容的認可。使用數字簽名技術能夠驗證文件的原文在傳輸過程中有無變動,確保傳輸電子文件的完整性、真實性和不可抵賴性 [7] 

數字簽名簽名步驟

數字簽名Java簽名步驟

1、將applet的class文件打包成*.jar(可以在命令行中輸入jar查看幫助) [7] 
2、首先我們要生成一個keystore 否則在簽名的時候報如下錯誤 [7] 
jarsigner 錯誤: java.lang.RuntimeException: 密鑰庫裝入: C:\Documents and Settings\ij2ee\.keystore (系統找不到指定的文件。). (這邊的ij2ee 是當前系統用户名) [7] 
生成keystore的語句:keytool -genkey -alias 別名你可以自己寫 -keyalg RSA -keystore .keystore [7] 
下面是會出現的數字簽名的一些步驟操作: [7] 
  • 輸入keystore密碼
  • 再次輸入新密碼:
  • 您的名字與姓氏是什麼?
  • [Unknown]: ij2ee
  • 您的組織單位名稱是什麼?
  • [Unknown]: mtk
  • 您的組織名稱是什麼?
  • [Unknown]: mtk
  • 您所在的城市或區域名稱是什麼?
  • [Unknown]: suzhou
  • 您所在的州或省份名稱是什麼?
  • [Unknown]: jiangsu
  • 該單位的兩字母國家代碼是什麼
  • [Unknown]: cn
  • CN=ij2ee, OU=mtk, O=mtk, L=suzhou, ST=jiangsu, C=cn 正確嗎?
  • [否]: y
  • 輸入的主密碼
  • (如果和 keystore密碼相同,按回車):
  • 這時候會在jdk的bin目錄下生成 .keystore 。把這個.keystore文件移動到 C:\Documents and Settings\當前系統用户的目錄下面。
3、創建一個數字證書 [7] 
在命令行中輸入如下指令,peakCA和peakCALib自己起名字好了,3650是有效天數,就是10年左右,在創建證書的的時候,需要填寫證書的一些信息和證書對應的私鑰密碼 [7] 
keytool -genkey -alias peakCA -keyalg RSA -keysize 1024 -keystore peakCALib -validity 3650
4、將證書導出到證書文件中 [7] 
在命令行中輸入如下指令,peakCA和peakCALib任意起名字,******是輸入的密碼 [7] 
keytool -export -alias peakCA -file peakCA.cer -keystore peakCALib -storepass ****** -rfc
5、授權jar文件,在命令行中輸入如下指令 [7] 
jarsigner -keystore peakCALib myapplet.jar peakCA

數字簽名office簽名步驟

1、要保護文檔內容的真實性,可以添加不可見的數字簽名。 已簽名文檔的底部有“簽名”按鈕。 [7] 
2、單擊“文件”選項卡。 [7] 
3、單擊“信息”。 [7] 
4、在“權限”下,單擊“保護文檔”、“保護工作簿”或“保護演示文稿”。 [7] 
5、單擊“添加數字簽名”。 [7] 
6、閲讀 WordExcel 或 PowerPoint中顯示的消息,然後單擊“確定”。 [7] 
7、在“簽名”對話框中的“簽署此文檔的目的”框中,鍵入目的。 [7] 
8、單擊“簽名”。 [7] 
9、在對文件進行數字簽名後,將出現“簽名”按鈕,並且文件會變為只讀以防止修改。 [7] 

數字簽名應用例子

假如 Alice 向 Bob 傳送數字信息,為了保證信息傳送的保密性真實性完整性不可否認性,需要對傳送的信息進行數字加密和簽名,其傳送過程為: [3] 
  1. Alice 準備好要傳送的數字信息(明文); [3] 
  2. Alice 對數字信息進行哈希運算,得到一個信息摘要; [3] 
  3. Alice 用自己的私鑰對信息摘要進行加密得到 Alice 的數字簽名,並將其附在數字信息上; [3] 
  4. Alice 隨機產生一個加密密鑰,並用此密碼對要發送的信息進行加密,形成密文 [3] 
  5. Alice 用 Bob 的公鑰對剛才隨機產生的加密密鑰進行加密,將加密後的 DES密鑰連同密文一起傳送給Bob; [3] 
  6. Bob 收到 Alice 傳送來的密文和加密過的 DES 密鑰,先用自己的私鑰對加密的 DES 密鑰進行解密,得到 Alice隨機產生的加密密鑰; [3] 
  7. Bob 然後用隨機密鑰對收到的密文進行解密,得到明文的數字信息,然後將隨機密鑰拋棄; [3] 
  8. Bob 用 Alice 的公鑰對 Alice 的數字簽名進行解密,得到信息摘要; [3] 
  9. Bob 用相同的哈希算法對收到的明文再進行一次哈希運算,得到一個新的信息摘要; [3] 
  10. Bob 將收到的信息摘要和新產生的信息摘要進行比較,如果一致,説明收到的信息沒有被修改過。 [3] 

數字簽名區分攻擊

如何區分數字簽名攻擊呢?有兩個方法: [7] 
1. 查看數字簽名的詳細信息,我們應該查看該數字簽名的詳細信息,點擊“詳細信息”按鈕即可。 [7] 
我們會發現正常EXE和感染(或捆綁木馬)後的EXE數字簽名的區別。
正常EXE的數字簽名詳細信息。
被篡改後的EXE數字簽名信息無效。 [7] 
2.使用數字簽名驗證程序sigcheck.exe (可以百度一下找這個工具,著名系統工具包Sysinternals Suite的組件之一。) [7] 

數字簽名異常結果

數字簽名異常的結果為: [7] 
C:\Documents and Settings\litiejun\??\modify.exe:
Verified: Unsigned
File date: 15:46 2008-5-23
Publisher: n/a
Description: n/a
Product: n/a
Version: n/a
File version: n/a

數字簽名正常結果

數字簽名正常的結果為: [7] 
C:\Documents and Settings\litiejun\??\che.exe:
Verified: Signed
Signing date: 16:28 2008-4-29
Publisher: n/a
Description: n/a
Product: n/a
Version: n/a
File version: n/a

數字簽名網絡安全

2023年11月27日報道,國家安全部表示網絡空間看似無形隱匿,實則諜影重重,充滿硝煙暗戰,數字簽名等網絡資產及服務,都有可能被境外間諜情報機關利用實施網絡攻擊竊密活動。 [9] 
2024年1月2日,印度“News9Live”新聞網報道稱,相機制造巨頭尼康、索尼和佳能計劃推出新技術,對抗深度偽造。 [10] 
參考資料
  • 1.    劉建華主編;孫韓林副主編.物聯網安全:中國鐵道出版社,2013.09:第68頁
  • 2.    洪傑文,歸偉夏.新媒體技術:西南師範大學出版社,2016.06:第240頁
  • 3.    於旭,梅文.物聯網信息安全:西安電子科技大學出版社,2014.01:第94頁
  • 4.    王法能,劉虎峯主編;趙建東,李麗,齊文彬,丁玉龍,甘卉,楊慧敏副主編.計算機公共基礎(WINDOWS 7+OFFICE 2010):北京理工大學出版社,2014.08:第222頁
  • 5.    何明,湯偉,賴俊,張婷婷等.大學計算機基礎:東南大學出版社,2015.08:第180頁
  • 6.    劉冬梅,遲學芝.網絡信息安全:中國石油大學出版社,2013.07:第128頁
  • 7.    張向暉.司法機關錄音錄像工作指南:中國檢察出版社,2016.05:第231頁
  • 8.    陳剛. 淺談電子商務網絡信息安全問題[J]. 雲南農業,2011(6). DOI:10.3969/j.issn.1005-1627.2011.06.036.
  • 9.    國家安全部:這種“特殊”網絡技術服務涉嫌違法  .界面新聞.2023-11-27[引用日期2023-11-27]
  • 10.    印媒:防AI造假,尼康、索尼等相機巨頭擬推“數字簽名”新技術  .環球時報.2024-01-04[引用日期2024-01-04]