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

消息摘要算法

鎖定
消息摘要算法的主要特徵是加密過程不需要密鑰,並且經過加密的數據無法被解密,可以被解密逆向的只有CRC32算法,只有輸入相同的明文數據經過相同的消息摘要算法才能得到相同的密文
中文名
消息摘要算法
外文名
Message-Digest Algorithm
別    名
摘要算法
應用學科
信息技術,計算機科學

消息摘要算法簡介

消息摘要算法不存在密鑰的管理與分發問題,適合於分佈式網絡上使用。由於其加密計算的工作量相當可觀,所以以前的這種算法通常只用於數據量有限的情況下的加密,例如計算機的口令就是用不可逆加密算法加密的。近年來,隨着計算機性能的飛速改善,加密速度不再成為限制這種加密技術發展的桎梏,因而消息摘要算法應用的領域不斷增加。
消息摘要算法主要應用在“數字簽名”領域,作為對明文的摘要算法。著名的摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的變體。

消息摘要算法特點介紹

消息摘要算法的特點:
消息摘要是把任意長度的輸入揉和而產生長度固定的偽隨機輸出的算法。消息摘要的主要特點有:
①無論輸入的消息有多長,計算出來的消息摘要的長度總是固定的。例如應用MD5算法摘要的消息有128個比特位,用SHA-1算法摘要的消息最終有160比特位的輸出,SHA-1的變體可以產生192比特位和256比特位的消息摘要。一般認為,摘要的最終輸出越長,該摘要算法就越安全。
②消息摘要看起來是“隨機的”。這些比特看上去是胡亂的雜湊在一起的。可以用大量的輸入來檢驗其輸出是否相同,一般,不同的輸入會有不同的輸出,而且輸出的摘要消息可以通過隨機性檢驗。但是,一個摘要並不是真正隨機的,因為用相同的算法對相同的消息求兩次摘要,其結果必然相同;而若是真正隨機的,則無論如何都是無法重現的。因此消息摘要是“偽隨機的”。
③一般地,只要輸入的消息不同,對其進行摘要以後產生的摘要消息也必不相同;但相同的輸入必會產生相同的輸出。這正是好的消息摘要算法所具有的性質:輸入改變了,輸出也就改變了;兩條相似的消息的摘要確不相近,甚至會大相徑庭。
④消息摘要函數是無陷門單向函數,即只能進行正向的信息摘要,而無法從摘要中恢復出任何的消息,甚至根本就找不到任何與原信息相關的信息。當然,可以採用強力攻擊的方法,即嘗試每一個可能的信息,計算其摘要,看看是否與已有的摘要相同,如果這樣做,最終肯定會恢復出摘要的消息。但實際上,要得到的信息可能是無窮個消息之一,所以這種強力攻擊幾乎是無效的。
⑤好的摘要算法,沒有人能從中找到“碰撞”,雖然“碰撞”是肯定存在的。即對於給定的一個摘要,不可能找到一條信息使其摘要正好是給定的。或者説,無法找到兩條消息,使它們的摘要相同。

消息摘要算法應用

一般地,把對一個信息的摘要稱為該消息的指紋或數字簽名。數字簽名是保證信息的完整性不可否認性的方法。數據的完整性是指信宿接收到的消息一定是信源發送的信息,而中間絕無任何更改;信息的不可否認性是指信源不能否認曾經發送過的信息。其實,通過數字簽名還能實現對信源的身份識別(認證),即確定“信源”是否是信宿意定的通信夥伴。 數字簽名應該具有唯一性,即不同的消息的簽名是不一樣的;同時還應具有不可偽造性,即不可能找到另一個消息,使其簽名與已有的消息的簽名一樣;還應具有不可逆性,即無法根據簽名還原被簽名的消息的任何信息。這些特徵恰恰都是消息摘要算法的特徵,所以消息摘要算法適合作為數字簽名算法。

消息摘要算法數字簽名

數字簽名方案是一種以電子形式存儲消息簽名的方法。一個完整的數字簽名方案應該由兩部分組成:簽名算法和驗證算法。一般地説,任何一個公鑰密碼體制都可以單獨地作為一種數字簽名方案使用。如RSA作為數字簽名方案使用時,可以定義如下:
消息摘要算法 消息摘要算法
這種簽名實際上就是用信源的私鑰加密消息,加密後的消息即成了籤體;而用對應的公鑰進行驗證,若公鑰解密後的消息與原來的消息相同,則消息是完整的,否則消息不完整。它正好和公鑰密碼用於消息保密是相反的過程。因為只有信源才擁有自己地私鑰,別人無法重新加密源消息,所以即使有人截獲且更改了源消息,也無法重新生成籤體,因為只有用信源的私鑰才能形成正確地籤體。同樣信宿只要驗證用信源的公鑰解密的消息是否與明文消息相同,就可以知道消息是否被更改過,而且可以認證消息是否是確實來自意定的信源,還可以使信源不能否認曾將發送的消息。所以這樣可以完成數字簽名的功能
但這種方案過於單純,它僅可以保證消息的完整性,而無法確保消息的保密性。而且這種方案要對所有的消息進行加密操作,這在消息的長度比較大時,效率使非常低的,主要原因在於公鑰體制的加解密過程的低效性。所以這種方案一般不可取。

消息摘要算法摘要算法

幾乎所有的數字簽名方案都要和快速高效的摘要算法(Hash函數)一起使用,當公鑰算法與摘要算法結合起來使用時,便構成了一種有效地數字簽名方案。
這個過程是:首先用摘要算法對消息進行摘要,然後在把摘要值用信源的私鑰加密;接收方先把接收的明文用同樣的摘要算法摘要,形成“準籤體”,然後再把準籤體與用信源的公鑰解密出的“籤體”進行比較,如果相同就認為消息是完整的,否則消息不完整。
這種方法使公鑰加密只對消息摘要進行操作,因為一種摘要算法的摘要消息長度是固定的,而且都比較“短”(相對於消息而言),正好符合公鑰加密的要求。這樣效率得到了提高,而其安全性也並未因為使用摘要算法而減弱。