我們知道,散列函數解決了消息的完整性防止篡改,消息認證碼解決的是消息發送者是否被偽裝的問題,但是消息的防抵賴性如何保證呢?因為發送接收雙方都共享一個密鑰,因為對于第三方來說,無法防止信息發送者的否認!那怎么辦呢?引出本節主題:數字簽名。
數字簽名用一句話來說,只有用你自己獨一無二的別人不知道的密鑰簽名,代表了一種只有持有該密鑰的人才能夠生成的信息,才能防抵賴。甲發送信息的時候用自己的私鑰進行簽名,乙接收信息的時候用甲的公鑰進行驗證,這就是數字簽名。公鑰密碼和數字簽名的密鑰使用如下:
數字簽名的方法有直接對消息簽名的方法和對消息散列值簽名的方法。因為對整個消息進行簽名效率低下,特別是公鑰密碼算法計算效率不高,實際使用后者,也就是對消息的散列值進行簽名。因為前面說過,單向散列函數能對無論多長的消息生成固定的散列值,因此對其簽名效率很高。
數字簽名不能保證消息機密性!
數字簽名的作用本來就不是信息機密性的保證,有一種攻擊“請對消息簽名”等同于“請解密消息“,我們要記住,絕對不要對意思不清楚的消息進行簽名,從簽名的目的來說,這一點應該是理所當然的,因為誰也不會在自己看不懂的合同上簽字蓋章!
數字簽名可以隨意復制嗎?
數字簽名可以隨意復制。簽名可以復制并不意味著簽名就沒有意義,因為簽名表達的意義是特定的簽名者對特定的消息進行的簽名,即使被復制也并不會改變簽名者和消息的內容。無論將簽名復制了多少份,都不會改變“是誰對這條消息進行了簽名”這一事實!
消息內容會不會被修改?
數字簽名是識別消息被修改并不防止被修改,修改后,驗證簽名失敗。
簽名會不會被重復利用?
不會,數字簽名是消息和簽名相對應,將簽名部分提取出來附加到別的消息后面,驗證簽名會失敗。
刪除簽名也無法“作廢合同”嗎?
的確,刪除了帶有數字簽名的借據也無法保證確實已經作廢,因為你不知道是否還保留有副本,那么要作廢帶有數字簽名的借據,可以重新創建一份相當于收據的文書,并讓對方在這份文書上數字簽名?;蛘咴谙⒅新暶髟撓⒌挠行诓⒓由蠑底趾灻?,證書部分內容就是如此。
數字簽名能夠替代簽名嗎?
當然,我國《中華人民共和國電子簽名法》,美國也有E-SIGN法案,日本有《電子簽名及其認證業務的相關法律》,這些法律為將電子手段實現的簽名與手寫的簽名和蓋章同等處理提供了法律基礎。
數字簽名的應用實例
安全信息公告,比如一些信息安全組織會發布一些漏洞警告,通過數字簽名確認是否是該組織發布的漏洞。
比如軟件下載能夠檢測軟件是否被篡改。
以及在公鑰證書中,我們要獲取合法的公鑰,使用公鑰+數字簽名,后面會介紹。
SSL/TLS服務器認證時也會用到。
對數字簽名的攻擊
除了之前介紹的利用數字簽名攻擊公鑰密碼之外,對單向散列函數的攻擊,以及中間人攻擊。
中間人攻擊,就是對發送者偽裝成接收者,對接收者偽裝成發送者,如何對公鑰進行認證,這就引出即將介紹的“證書”。
潛在偽造:在用RSA來解密的數字簽名算法中,潛在偽造時可能的,用隨機比特序列S用RSA的公鑰進行加密生成密文M,那么S就是M的合法數字簽名,由于攻擊者是可以獲取公鑰的,因此對數字簽名進行潛在偽造就可以實現了。為了應對人們改進成了RSA-PSS簽名算法。
數字簽名可以識別出篡改和偽裝還可以防止否認,然而,這一切是在一個大前提下的,那就是用于驗證簽名的公鑰必須屬于真正的發送者。為了確認自己得到的公鑰是否合法,我們需要使用證書。
所謂證書,就是將公鑰當成一條消息,由一個可信的第三方對其簽名后所得到的公鑰。為了對證書施加的數字簽名進行驗證,我們必定需要另一個公鑰,那么如何才能構筑一個可信的數字簽名鏈條呢?又由誰來頒發可信的證書呢?我們必須用社會學的領域思考,需要讓公鑰及其數字簽名技術成為一種社會性的基礎設施,也就是PKI公鑰基礎設施。
責任編輯:韓希宇
免責聲明:
中國電子銀行網發布的專欄、投稿以及征文相關文章,其文字、圖片、視頻均來源于作者投稿或轉載自相關作品方;如涉及未經許可使用作品的問題,請您優先聯系我們(聯系郵箱:cebnet@cfca.com.cn,電話:400-880-9888),我們會第一時間核實,謝謝配合。