日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機站
  • 小程序

    汽車測試網(wǎng)

  • 公眾號
    • 汽車測試網(wǎng)

    • 在線課堂

    • 電車測試

密碼學基礎: Hash函數(shù)SHA1、SHA2、SHA3科普

2024-08-07 08:20:39·  來源:汽車MCU軟件設計  
 

1.消息摘要(Hash)


Hash函數(shù)是一種單向密碼體制,把任意長度的輸入經(jīng)過變換得到一個固定長度的輸出,同時它還具備單向性,只能從明文到密文,不能逆向,正是由于Hash函數(shù)的單向性和輸出長度固定的特性,使得其廣泛應用在數(shù)據(jù)完整性驗證和數(shù)字簽名等領(lǐng)域。常見Hash函數(shù)基本采用迭代結(jié)構(gòu),接收輸入消息M,將其拆分為n個固定長度分組,如果最后一個數(shù)據(jù)塊不滿足要求,則需進行填充;該算法重復使用壓縮函數(shù)f,進行計算得到最終輸出,如下圖所示:

圖片

圖 1 Hash函數(shù)過程


常見的函數(shù)包含SHA-1、SHA-2家族、SHA-3家族、MD5、SM3等。


2. SHA-1


SHA全稱Secure HASH Algorithm,由NIST開發(fā);SHA-1于1995年進行修訂發(fā)布,要求輸入最大長度2^64 -1位數(shù)據(jù),輸出固定160位消息摘要,處理過程按照512位數(shù)據(jù)塊進行分組。SHA1的IV設定方法為十六進制數(shù)(0-F),每兩個數(shù)構(gòu)成一個字節(jié),其中A(32bit數(shù))順時針0-7,B順時針8-F,C逆時針F-8,D逆時針7-0,E取C3\D2\E1\F0,因此固定為:


(0x67452301U), (0xEFCDAB89U), (0x98BADCFEU), (0x10325476U),(0xC3D2E1F0U)

不過,在2017年,研究人員成功實施了對SHA-1算法的碰撞攻擊,找到了兩個不同的消息,但具有相同的SHA-1散列值。這引發(fā)了對SHA-1安全性的擔憂,因為碰撞攻擊可能導致數(shù)字簽名和其他安全機制的破壞,因此在應用中不建議使用該算法。

3. SHA-2


SHA-2是一系列Hash函數(shù)的統(tǒng)稱,其中包括SHA-224\256\384\512等,區(qū)別主要在于函數(shù)內(nèi)部結(jié)果和生成的摘要值長度,SHA-512還有另外變體為SHA512_224、SHA512_256,主要是基于SHA512產(chǎn)生的摘要值進行截斷,與SHA512區(qū)別在于IV和輸出長度不一致。其中,SHA-224\256分組大小為512位,SHA-384, SHA-512, SHA-512/224和SHA-512/256分組大小為1024bit。SHA-224生成224位消息摘要,初始IV為:

(0xC1059ED8U),(0x367CD507U),(0x3070DD17U),(0xF70E5939U),(0xFFC00B31U),(0x68581511U),(0x64F98FA7U),(0xBEFA4FA4U)


SHA-256生成256位消息摘要,初始IV(取自然界前8個素數(shù)平方根小數(shù)部分前32位)為:

(0x6A09E667U),(0xBB67AE85U),(0x3C6EF372U),(0xA54FF53AU),(0x510E527FU),(0x9B05688CU),(0x1F83D9ABU),(0x5BE0CD19U)


SHA384生成384位消息摘要,初始IV為:

(0xCBBB9D5DC1059ED8),(0x629A292A367CD507),(0x9159015A3070DD17),(0x152FECD8F70E5939),(0x67332667FFC00B31),(0x8EB44A8768581511),(0xDB0C2E0D64F98FA7),(0x47B5481DBEFA4FA4)


SHA512生成512位消息摘要,初始IV為:

(0x6A09E667F3BCC908),(0xBB67AE8584CAA73B),(0x3C6EF372FE94F82B),(0xA54FF53A5F1D36F1),(0x510E527FADE682D1),(0x9B05688C2B3E6C1F),(0x1F83D9ABFB41BD6B), (0x5BE0CD19137E2179)


SHA512_224生成224位消息摘要,初始IV為:

(8C3D37C819544DA2),(73E1996689DCD4D6),(1DFAB7AE32FF9C82),(679DD514582F9FCF),(0F6D2B697BD44DA8),(77E36F7304C48942),(3F9D85A86A1D36C8),(1112E6AD91D692A1)


SHA512_256生成256bit消息摘要,初始IV為:

(22312194FC2BF72C),(9F555FA3C84C64C2),(2393B86B6F53B151),(963877195940EABD),(96283EE2A88EFFE3),(BE5E1E2553863992),(2B0199FC2C85B8AA),(0EB72DDC81C52CA2)


以明文0x112233為例,SHA512、SHA512_224、SHA512_256的hash值分別為:



圖片
圖 2 基于SHA512 消息摘要



圖片

圖 3  基于SHA512_224 消息摘要



圖片


圖 4  基于SHA512_256 消息摘要


從上圖可以看到,即使相同的數(shù)據(jù),雖然同樣是基于SHA512,但由于IV的不同,從而影響到了消息摘的生成。


4. SHA-3


SHA-3是NIST在2015年新發(fā)布的Hash函數(shù)標準,目標是為了從設計原理上與SHA2進行區(qū)分,從而提升安全性。該算法是有Keccak團隊提出,具備與MD、SHA-1/2等迭代結(jié)構(gòu)不一樣的海綿結(jié)構(gòu),抵抗傳統(tǒng)的碰撞攻擊和第二原像攻擊,如下:


圖片

圖 5 碰撞攻擊和第二原象攻擊


根據(jù)NIST.FIPS.202中描述,海綿結(jié)構(gòu)如下所示:


圖片

圖 6 SHA-3海綿結(jié)構(gòu)


同樣的,SHA3也是一系列hash函數(shù)的統(tǒng)稱,支持的算法包括:SHA3-224\256\384\512。


5. MD5


MD5全稱MD5 Message-Digest算法,發(fā)布于1992年,作用是將任意長度的消息作為輸入,并產(chǎn)生輸入的128位“指紋”或“消息摘要”作為輸出。與SHA-1類似,它也已經(jīng)被碰撞攻擊攻破,現(xiàn)目前基本已經(jīng)棄用。


6. SM3


SM3全稱ShangMi 3,是我們國家關(guān)于Hash函數(shù)的標準,可以將任意有限長度的數(shù)據(jù),輸出為消息摘要長度為256位的比特串,廣泛用于數(shù)字簽名、MAC生成等等。其初始向量為:

(7380166f),(4914b2b9),(1724422d7),(da8a0600),(a96f30bc),(163138aa),(e38dee4d),(b0fb0e4e)


7. 小結(jié)


選擇哈希算法時,需要根據(jù)應用場景的安全需求、計算資源、兼容性和速度等因素進行綜合考慮。


一般來說,對于大多數(shù)安全性要求較高的場景,SHA-2是一個不錯的選擇,尤其是SHA-256(例如生成比特幣地址、確保交易完整),對于需要最高安全級別,可考慮SHA-3(如以太坊地址生成)。

分享到:
 
反對 0 舉報 0 收藏 0 評論 0
滬ICP備11026917號-25