密碼技術(九、一)之數字簽名

數字簽名

???——消息到底是誰寫的

數字簽名

從消息認證碼到數字簽名

  • 消息認證碼的局限性
    ?通過前面介紹的消息認證碼,我們尅識別消息是否被篡改或者發送者身份是否被偽裝,也就是可以校驗消息的完整性,還可以對消息進行認證。然而,消息認證碼是無法防止否認
    ?消息認證碼值之所以無法防止否認,是因為消息認證碼需要在發送者和接收者兩者之間共享同一個密鑰。因為密鑰是共享的,所以能夠使用消息認證碼計算出正確的MAC值并不只有發送者,接收者也可以計算出正確的MAC值。由于雙方都能計算出正確的MAC值,因此對于第三方來說,我們是無法證明這條消息的確是由發送者生成的。
  • 通過數字簽名解決問題
    ?我們假設發送者使用密鑰是一個只有自己才知道的私鑰。當發送者發送消息時,用私鑰生成一個“簽名”。相對地,接收者則使用一個和發送者不同的密鑰對簽名進行驗證。接收者的密鑰無法根據消息生成簽名,卻可以對簽名進行驗證,也就是說可以知道這個簽名是由發送者的密鑰計算出來的。這就是數字簽名

簽名的生成和驗證

?在數字簽名技術中,出現了下面的兩種行為。

  • 生成消息簽名的行為
  • 驗證消息簽名的行為

?生成消息簽名 這一行為是由消息的發送者Alice來完成的,也稱為“對消息簽名”。生成簽名就是根據消息內容計算數字簽名的值,這個行為意味著“我認可該消息的內容”
?驗證數字簽名 這一行為一般是由消息的接收者Bob來完成的,但也可以由驗證消息的第三方來完成,這里的第三方在之前一直被命名為驗證者Victor。驗證簽名就是檢查該消息的簽名是否真的屬于Alice,驗證的結果可以是成功或者失敗,成功就意味著這個簽名是否屬于Alice的,失敗則意味著這個簽名不是屬于Alice的。
?在數字簽名中,生成簽名和驗證簽名者兩個行為需要使用各自專用高德密鑰來完成。這不就是公鑰密碼么,在公鑰密碼中,密鑰分為加密密鑰和解密密鑰,用加密密鑰無法進行解密。此外,解密密鑰只能由需要解密的人持有,而加密密鑰則是任何需要加密的人都可以持有的。實際上,數字簽名就是通過將公鑰密碼“反過來用”而實現的。

公鑰密碼與數字簽名的密鑰使用方式.png

公鑰密碼與數字簽名

?先回顧一下前面說的公鑰密碼


用公鑰進行加密(公鑰密碼)x.png

? 數字簽名中也會使用到公鑰和私鑰,不過,這兩個密鑰多的用法和公鑰密碼是相反的,即用私鑰加密相當于生成簽名,而用公鑰解密則相當于驗證簽名

用私鑰進行加密(數字簽名).png

?用私鑰進行加密這一行為只能由持有私鑰的人完成,正事基于這一事實,我們才可以將用私鑰加密的密文作為簽名來對待。
?由于公鑰是對外公開的,因此任何都能夠用公鑰進行解密,這就產生了一個很大的好處,即任何人都能對簽名進行驗證。
公鑰密碼中,任何人都能進行加密(公鑰密碼).png

數字簽名中,任何人都能夠驗證簽名(數字簽名).png

數字簽名的方法

?下面我們來介紹兩種生成和驗證數字簽名的方法

  • 直接對消息簽名的方法
  • 對消息的散列值簽名的方法
    ?直接對消息簽名的方法比較容易理解,但是在實際過程中,我們并不會使用;對消息散列值簽名的方法,稍微復雜一點,但實際過程中,我們一般都是使用這種方法。

直接對消息簽名的方法

Alice對消息簽名,Bob驗證簽名.png
  1. Alice用自己的私鑰對消息進行加密
  2. Alice將消息和簽名發送給Bob
  3. Bob用Alice的公鑰對收到的簽名進行解密
  4. Bob將簽名解密后得到的消息與Alice直接發送的消息進行對比。

對消息的散列值簽名的方法

Alice對消息的散列值簽名,Bob驗證簽名.png
  1. Alice用單向散列函數計算的消息的散列值。
  2. Alice用自己的私鑰對散列值進行加密。
  3. Alice將消息和簽名發送給Bob。
  4. Bob用Alice的公鑰對收到的簽名進行解密。
  5. Bob將簽名解密后得到的散列值與Alice直接發送的消息的散列值進行對比。


    Alice對消息的散列值簽名,Bob驗證簽名(按時間順序).png

對數字簽名的疑問

疑問:
用私鑰加密消息得到簽名,然后再用公鑰解密消息并驗證簽名,密文為什么能歐具備驗證簽名的意義呢?
解答:
雖然實際進行的處理內容是用私鑰進行加密,但這里的加密并非是為了保證機密性而進行的。
數字簽名時利用了“沒有私鑰的人事實上無法生成使用該私鑰所生成的密文”這一性質來實現的。這里所生成的密文并非被用于保證機密性,而是被用于代表一種只有持有該密鑰的人才能夠生成的信息
這樣的信息一般稱為認證符號(authenticator),消息認證碼也是認證符號的一種,數字簽名也是一樣的。數字簽名時通過使用私鑰進行加密來產生認證符號的。


疑問:
消息沒有經過加密就發送了,這樣不就無法保證消息的機密性了嗎?
解答:
的確如此,數字簽名的作用本來就不是保證機密性。
如果需要保證機密性,則可以不直接發送消息,而是將消息進行加密之后再發發送。


疑問:
數字簽名只不過是計算機上一種數據,貌似很容被復制。但如果可以輕易復制出相同的內容,那還能用作簽名嗎?
解答:
雖然叫作簽名,但它也僅僅是計算上的一種普通的數據而已。數字簽名可以附加在消息的末尾,也可以和消息分離,單獨作為文件來發送,但無論如何,我們都可以像復制普通文件一樣,很容易的復制出任意個內容相同的副本。
但是,簽名可以被復制,并不意味著簽名就沒有意義,因為簽名所表達的意義是特定的簽名者對特定的消息進行了簽名,即便簽名被復制,也不會改變簽名者和消息的內容。
真正重要的是特定簽名者與特定的消息綁定在了一起這一事實。


疑問:
數字簽名只不過是普通的數據,消息和簽名兩者都是可以任意修改的,這樣的簽名還有意義嗎?
解答:
的確,簽名之后也可以對消息和簽名進行修改,但是這樣修改之后,驗證簽名就會失敗,進行驗證的人就能夠發現這一修改行為。數字簽名所要實現的并不是防止修改,而是識別修改。修改沒問題,但驗證簽名會失敗。
追問:
能不能同時修改消息和簽名,是的驗證簽名能夠成功呢?
解答:
事實上是做不到的。
以對散列值簽名為例,只要消息被修改1個比特,重新計算的散列值都會發生很大的變化,要拼湊出合法的簽名,必須在不知道私鑰的前提下對新產生的散列值進行加密,事實上這是無法做到的,因為不知道私鑰就無法生成用該私鑰才能生成的密文。


疑問:
如果得到了某人的數字簽名,應該就可以把簽名的部分提取出來附加在別的消息后面,這樣的還有效嗎?
解答:
的確,可以將簽名部分提取出來并附加到別的消息后面,但是嚴重簽名會失敗。總之,將一份簽名附加在別的消息后面,驗證簽名就會事變。


疑問:
如果是紙質的借據,只要將原件撕毀就可以作廢。但是帶有數字簽名的借據只是計算機文件,將其刪除也無法保證確實已經作廢,因為不知道其他地方是否還有副本。無法作廢的簽名是不是非常不方便呢?
解答:
的確,帶有數字簽名的借據即便刪除掉也無法作廢,要作廢帶有數字簽名的借據,可以重新創建一份相當于收據的文書,并讓對方在這份文書上加上數字簽名。


疑問:
消息認證碼無法防止否認,為什么數字簽名就能夠防止否認呢?
解答:
防止否認與“誰持有密鑰”這一問題密切相關。
在消息認證碼中,發送者和接收者都能夠計算MAC值,相對地,在數字簽名中,能夠生成簽名的密鑰(私鑰)只有發送者才持有,因此發送者沒法說,“這個簽名不是我生成的”,當然了,如果數字簽名的發送者說“我的私鑰被盜了”,也是有可能進行否認的。


疑問:
紙質借據如果不簽名蓋章的話,總是覺得不太放心。數字簽名真的能夠有效代替現實世界中的簽名和蓋章嗎?
解答:
數字簽名技術有很多優點,例如不需要物理交換文書就能夠簽訂合同,以及可以對計算機的任意數據進行簽名等。然后對于實際上能不能代替簽名這個問題還是有一些不安的因素。其中一個很大的原因恐怕是簽訂合同、進行認證這樣的行為是一種社會的行為。
數字簽名技術在未來將發揮重要的作用,但是單詞認為數字簽名筆普通的印章或手印簽名更可信是很危險的。一種新技術只有先被人民廣泛認知,并對各種問題制定相應的解決辦法只好,才能被社會真正接受。


該系列的主要內容來自《圖解密碼技術第三版》
我只是知識的搬運工
文章中的插圖來源于原著

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容