散列函數(shù),sha1和md5

信息摘要,數(shù)字簽名,一致性對比。

什么是MD5,什么是SHA-1,如何校驗(yàn)這些Hash。還有拿單個ISO文件的MD5,SHA-1訊問是不是原版的問題,在這里,對以上問題做一個終結(jié)解釋!

讓我們先來了解一些基本知識,了解hash。

Hash,一般翻譯做“散列”,也有直接音譯為”哈?!钡模褪前讶我忾L度的輸入(又叫做預(yù)映射,pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。

簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù)。

HASH主要用于信息安全領(lǐng)域中加密算法,他把一些不同長度的信息轉(zhuǎn)化成雜亂的128位的編碼里,叫做HASH值.也可以說,hash就是找到一種數(shù)據(jù)內(nèi)容和數(shù)據(jù)存放地址之間的映射關(guān)系

了解了hash基本定義,就不能不提到一些著名的hash算法,MD5和SHA1可以說是目前應(yīng)用最廣泛的Hash算法,而它們都是以MD4為基礎(chǔ)設(shè)計(jì)的。那么他們都是什么意思呢?

這里簡單說一下:

1)MD4

MD4(RFC1320)是MIT的RonaldL.Rivest在1990年設(shè)計(jì)的,MD是MessageDigest的縮寫。它適用在32位字長的處理器上用高速軟件實(shí)現(xiàn)--它是基于32位操作數(shù)的位操作來實(shí)現(xiàn)的。

2)MD5

MD5(RFC1321)是Rivest于1991年對MD4的改進(jìn)版本。它對輸入仍以512位分組,其輸出是4個32位字的級聯(lián),與MD4相同。MD5比MD4來得復(fù)雜,并且速度較之要慢一點(diǎn),但更安全,在抗分析和抗差分方面表現(xiàn)更好。

MD5是一種不可逆的加密算法,目前是最牢靠的加密算法之一,尚沒有能夠逆運(yùn)算的程序被開發(fā)出來,它對應(yīng)任何字符串都可以加密成一段唯一的固定長度的代碼。

那么它有什么用呢?很簡單,通過它可以判斷原始值是否正確(是否被更改過)。一般用于密碼的加密。而我們所提供的MD5校驗(yàn)碼就是針對安裝程序的唯一對應(yīng)的一段代碼。你可以使用任何MD5運(yùn)算器對下載的文件進(jìn)行運(yùn)算,運(yùn)算出來的結(jié)果如果完全符合我們提供的MD5校驗(yàn)碼,那么說明你下載的這個程序沒有被中途修改過。

這個特征碼有如下特性,首先它不可逆,例如我有一段秘密的文字如:”MySecretWords”,經(jīng)算法變換后得到MD5碼(b9944e9367d2e40dd1f0c4040d4daaf7),把這個碼告訴其他人,他們根據(jù)這個MD5碼是沒有系統(tǒng)的方法可以知道你原來的文字是什么的。

其次,這個碼具有高度的離散性,也就是說,原信息的一點(diǎn)點(diǎn)變化就會導(dǎo)致MD5的巨大變化,例如”ABC”MD5(902fbdd2b1df0c4f70b4a5d23525e932)和”ABC”(多了一空格)MD5(12c774468f981a9487c30773d8093561)差別非常大,而且之間沒有任何關(guān)系,也就是說產(chǎn)生的MD5碼是不可預(yù)測的。

最后由于這個碼有128位那么長,所以任意信息之間具有相同MD5碼的可能性非常之低,通常被認(rèn)為是不可能的。

所以一般認(rèn)為MD5碼可以唯一地代表原信息的特征,通常用于密碼的加密存儲,數(shù)字簽名,文件完整性驗(yàn)證等。

3)SHA1及其他

SHA1是由NISTNSA設(shè)計(jì)為同DSA一起使用的,它對長度小于264的輸入,產(chǎn)生長度為160bit的散列值,因此抗窮舉(brute-force)性更好。SHA-1設(shè)計(jì)時基于和MD4相同原理,并且模仿了該算法。SHA-1是由美國標(biāo)準(zhǔn)技術(shù)局(NIST)頒布的國家標(biāo)準(zhǔn),是一種應(yīng)用最為廣泛的hash函數(shù)算法,也是目前最先進(jìn)的加密技術(shù),被政府部門和私營業(yè)主用來處理敏感的信息。而SHA-1基于MD5,MD5又基于MD4。

論壇里提供的系統(tǒng)鏡像文件的hash也就是微軟官方提供的SHA-1值,下載后和此值對應(yīng),就說明你下載過程中文件沒有被更改,屬于原版。

什么是CRC

CRC的全稱為CyclicRedundancyCheck,中文名稱為循環(huán)冗余校驗(yàn)。它是一類重要的線性分組碼,編碼和解碼方法簡單,檢錯和糾錯能力強(qiáng),在通信領(lǐng)域廣泛地用于實(shí)現(xiàn)差錯控制。實(shí)際上,除數(shù)據(jù)通信外,CRC在其它很多領(lǐng)域也是大有用武之地的。例如我們讀軟盤上的文件,以及解壓一個ZIP文件時,偶爾會碰到“BadCRC”錯誤,由此它在數(shù)據(jù)存儲方面的應(yīng)用可略見一斑。

那么這些Hash算法到底有什么用呢?

Hash算法在信息安全方面的應(yīng)用主要體現(xiàn)在以下的3個方面:

1)文件校驗(yàn)

我們比較熟悉的校驗(yàn)算法有奇偶校驗(yàn)和CRC校驗(yàn),這2種校驗(yàn)并沒有抗數(shù)據(jù)篡改的能力,它們一定程度上能檢測并糾正數(shù)據(jù)傳輸中的信道誤碼,但卻不能防止對數(shù)據(jù)的惡意破壞。

MD5Hash算法的”數(shù)字指紋”特性,使它成為目前應(yīng)用最廣泛的一種文件完整性校驗(yàn)和(Checksum)算法,不少Unix系統(tǒng)有提供計(jì)算md5checksum的命令。

2)數(shù)字簽名

Hash算法也是現(xiàn)代密碼體系中的一個重要組成部分。由于非對稱算法的運(yùn)算速度較慢,所以在數(shù)字簽名協(xié)議中,單向散列函數(shù)扮演了一個重要的角色。對Hash值,又稱”數(shù)字摘要”進(jìn)行數(shù)字簽名,在統(tǒng)計(jì)上可以認(rèn)為與對文件本身進(jìn)行數(shù)字簽名是等效的。而且這樣的協(xié)議還有其他的優(yōu)點(diǎn)。

3)鑒權(quán)協(xié)議

如下的鑒權(quán)協(xié)議又被稱作”挑戰(zhàn)--認(rèn)證模式:在傳輸信道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。

當(dāng)然,hash函數(shù)并不是完全可靠,不同文件產(chǎn)生相同MD5和SHA1的幾率還是有的,只是不高,在我們論壇里提供的系統(tǒng)光盤,你想對這么幾個文件存在相同HASH的不同文件根本是不可能的。

論壇MSDN版塊,提供的就是微軟發(fā)布MSDN提供給程序員研究的Windows系統(tǒng)的鏡像的HASH值——SHA-1,不提供MD5因?yàn)槲④浿惶峁┝薙HA1。而論壇發(fā)布區(qū)發(fā)布的鏡像是和這些值對應(yīng)的鏡像,你校驗(yàn)自己的鏡像的HASH和MSDN信息區(qū)相應(yīng)版本的SHA-1對應(yīng)的上,說明你手中的光盤是微軟通過MSDN發(fā)布的原盤。對不上還存在屬于零售或通過銷售渠道發(fā)布的鏡像的可能。畢竟MSDN只是微軟發(fā)布系統(tǒng)光盤的一個途徑,MSDN只是給程序開發(fā)人員研究用的。

尋求原版的證實(shí),對應(yīng)SHA-1和MD5外,CRC的認(rèn)證也是一個很重要的因素,CRC同樣是校驗(yàn)文件的完整性,還有CDIMGE的封裝版本。

微軟出品的鏡像都能通過CRC驗(yàn)證,當(dāng)然也有人使用CRC自己進(jìn)行制作可以得到通過CRC的鏡像,那么這時候你需要對應(yīng)鏡像的SHA-1等了,所以,驗(yàn)證一個鏡像的原盤可以通過對應(yīng)多個數(shù)值來完成。

隨著信息技術(shù)和Internet 的迅速發(fā)展,信息安全和可靠性問題越來越重要?,F(xiàn)在信息安全面臨兩大基本攻擊:被動式攻擊(獲取消息的內(nèi)容、業(yè)務(wù)流分析)和主動攻擊(假冒、消息的篡改、業(yè)務(wù)拒絕)。前者主要靠加密和解密技術(shù)進(jìn)行有效處理,而后者就要靠消息認(rèn)證來處理。在金融交易、電子商務(wù)、電子信件、手機(jī)用戶信息的確認(rèn)等領(lǐng)域,數(shù)據(jù)完整性確認(rèn)和數(shù)據(jù)來源的真?zhèn)舞b定都是很重要的安全服務(wù)。實(shí)現(xiàn)這些安全服務(wù)的最好方法就是使用加密函數(shù)中的單項(xiàng)散列(Hash)函數(shù)。單項(xiàng)散列(Hash)函數(shù)是一種單項(xiàng)密碼體制,它是一個從明文到密文的不可逆函數(shù),也就是說,是無法解密的。通常應(yīng)用在只需要加密、不需要解密的特殊應(yīng)用場合。單項(xiàng)散列(Hash)函數(shù)H(M)作用于一任意長度的消息M,它返回一固定長度的散列值h:h=H(M)作為初始消息的獨(dú)一無二的“數(shù)字指紋”,從而能保證數(shù)據(jù)的完整性和惟一性。
3.1 MD5 與SHA-1 的比較
由于MD5 與SHA-1均是從MD4 發(fā)展而來,它們的結(jié)構(gòu)和強(qiáng)度等特性有很多相似之處,表(1)是對MD5與SHA-1 的結(jié)構(gòu)比較。SHA-1與MD5 的最大區(qū)別在于其摘要比MD5 摘要長 32 比特。對于強(qiáng)行攻擊,產(chǎn)生任何一個報(bào)文使之摘要等于給定報(bào)文摘要的難度:MD5 是2128 數(shù)量級的操作,SHA-1 是2160 數(shù)量級的操作。產(chǎn)生具有相同摘要的兩個報(bào)文的難度:MD5是 264 是數(shù)量級的操作,SHA-1 是280 數(shù)量級的操作。因而,SHA-1 對強(qiáng)行攻擊的強(qiáng)度更大。但由于SHA-1 的循環(huán)步驟比MD5 多(80:64)且要處理的緩存大(160 比特:128 比特),SHA-1 的運(yùn)行速度比MD5 慢。
5 結(jié)束語
MD5 和SHA-1 是單項(xiàng)散列函數(shù)的典型代表,它們廣泛地應(yīng)用在信息安全和數(shù)字簽名等各個領(lǐng)域。從而有效地抗擊了信息的主動式攻擊,本文基于AVR 單片機(jī)實(shí)現(xiàn)了這兩種算法,并結(jié)合匯編語言盡心了優(yōu)化,取得了較好的效果。根據(jù)信息安全的要求的不同層次可以靈活選擇這兩種算法從而達(dá)到實(shí)際目的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Hash 一般翻譯做"散列"or"哈希",就是把任意長度 的輸入,或者叫做預(yù)映射(pre-image),通過散列算...
    SaveNull閱讀 1,627評論 0 0
  • 散列表,它是基于高速存取的角度設(shè)計(jì)的,也是一種典型的“空間換時間”的做法。顧名思義,該數(shù)據(jù)結(jié)構(gòu)能夠理解為一個線性表...
    江江JJ閱讀 1,992評論 0 6
  • 散列表,它是基于快速存取的角度設(shè)計(jì)的,也是一種典型的“空間換時間”的做法。顧名思義,該數(shù)據(jù)結(jié)構(gòu)可以理解為一個線性表...
    yeying12321閱讀 3,769評論 0 6
  • 上學(xué)期選修了一門信息安全討論,期末的時候是寫一個關(guān)于信息安全方面的報(bào)告,找本科畢設(shè)精簡一下交上去,被老師發(fā)現(xiàn)了,開...
    cutoutsy閱讀 3,592評論 0 1
  • 今天寫這個話題的文章是因?yàn)榭戳吮牒芬恢回埖奈恼?,感覺這句話就是給我給我說的。 當(dāng)你看到大伙都...
    Sunflower語閱讀 231評論 0 0

友情鏈接更多精彩內(nèi)容