安全雜湊演算法

2021-10-08 20:25:18 字數 3608 閱讀 9279

1.簡介

美國國家標準與技術學會和nsa開發了安全雜湊演算法(secure hash algorithm,sha)。sha可以處理長度在2

642^

264以內的任何輸入訊息。sha的輸出是訊息摘要,長度為160位(比md5的訊息摘要多32位)。sha中的安全利用了兩個特性,在計算上保證下列情況的不可行:

(1)根據訊息摘要取得初始訊息;

(2)尋找兩個訊息,產生相同訊息摘要。

2.sha工作原理

2.1 填充

和md5一樣,sha的第一步是在初始訊息末尾進行填充,使訊息長度為512的倍數少64位。和md5一樣,填充總是增加,即使訊息長度已經是比512的倍數少64。

2.2 新增長度

計算不包括填充的訊息長度,用64位塊加到填充後面。

2.3 將輸入分為512位塊

將輸入分為512位塊,這些塊稱為訊息摘要處理邏輯的輸入。

2.4 初始化鏈結變數

初始化5個鏈結變數a~ e,記住,md5中為4個32位的鏈結變數,總長度為128位,中間結果和最終結果存放在這些鏈結變數構成的組合暫存器abcd中。sha要產生的訊息摘要為160位,因此要有5個鏈結變數,總長度為160位。sha中變數a到d的值與md5中相同,e初始化的c3 d2 e1 f0(十六進製制)。

2.5 處理塊

第一步:將鏈結變數a~ e複製到變數a~ e中,a~ e組合成暫存器abcde,儲存中間結果和最終結果。

第二步:將當前512位塊分解為16個子塊,每個子塊為32位。

第三步:sha共4輪,每一輪20步。每一輪的3個輸入為當前512位塊、暫存器abcde和常量k,其中t為0~ 79。然後用sha演算法步驟更新暫存器abcde內容。另外,md5中的t定義64個常量,而這裡的k之定義4個常量,每一輪用乙個。k的值如下表所示:

輪次t值範圍

k[t]的十六進製制值

k[t]的十進位制值(只顯示整數部分)

11~19

5a 92 79 99

2 30×

22^\times \sqrt2

230×2​

220~39

6e d9 eb a1

2 30×

32^\times \sqrt3

230×3​

340~59

9f 1b bc dc

2 30×

52^\times \sqrt5

230×5​

460~79

ca 62 c1 d6

2 30×

102^\times \sqrt

230×10

​第四步:sha共4輪,每輪20次迭代,共80次。一次sha迭代的邏輯操作如下圖所示:

一次sha迭代的數學表示如下:

a bc

de=(

e+pr

oces

sp+s

5(a)

+w+k

),a,

s30(b

),c,

dabcde=(e+process p +s^5(a)+w+k),a,s^(b),c,d

abcde=

(e+p

roce

ssp+

s5(a

)+w[

]+k[

]),a

,s30

(b),

c,d其中abcde位5個變數a、b、c、d、e構成的暫存器;process p(處理p)位邏輯操作;sts^

st將32位子塊迴圈左移t位;w從當前32位子塊求出的32位值;k為5個常量之一。

注意,它與md5相似,只是有小改動,使sha比md5更複雜。下面介紹處理p和w的含義,下表顯示了每一輪的sha-1中的處理p:

輪次處理p

1(b and c) or ((not b) and (d))

2b xor c xor d

3(b and c) or (b and d) or (c and d))

4b xor c xor d

w[t]的值計算如下:

對w的前16個字(t=0~15),輸入訊息子塊m[t]的內容變成w[t]內容,即把輸入訊息m的前16塊複製到w。w的其餘值用下列方程求出:

w [t

]=s1

(w[t

−16]x

orw[

t−14]

xorw

[t−8

]xor

t[t−

3])w[t]=s^1(w[t-16]\quad xor\quad w[t-14] \quad xor\quad w[t-8] \quad xor\quad t[t-3])

w[t]=s

1(w[

t−16

]xor

w[t−

14]x

orw[

t−8]

xort

[t−3

])3.比較md5與sha-1

md5與sha-1都基於md4演算法,因此可以進行比較,兩者的差別如下表所示:

特性md5

sha-1

訊息摘要長度(位)

128160

根據訊息摘要尋找初始訊息所需的操作

2

1282^

2128次2

1602^

2160

次尋找產生相同訊息摘要的兩個訊息所需的操作

2

642^

264次

2

802^

280次

目前攻擊情況

一定程度沒有

還沒有速度塊慢

軟體實現

簡單,不需要大程式和複雜**

簡單,不需要大程式和複雜**

4.sha-1的安全性

nist尋找了更安全的sha版本,出現了如下版本:2023年,nist在標準文件fips 1802中提供了另乙個新的sha版本,稱為sha-256、sha-384和sha-512,其後面的數字表示為訊息摘要的長度(以位為單位),下表歸納了不同的sha版本:

引數sha-1

sha-256

sha-384

sha-512

訊息摘要長度

160256

384512

訊息長度

<264

<2^

<26

4<264

<2^

<26

4<

2128

<2^

<21

28<

2128

<2^

<21

28塊大小512

5121024

1024

詞大小32

3264

64演算法所需步驟

8064

8080

密碼雜湊安全

hash,一般翻譯做 雜湊 也有直接音譯為 雜湊 的,就是把任意長度的輸入 又叫做預對映 通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。通過對密碼進行雜湊處理,然後再儲存到資料庫中,這樣就使得攻擊者無法直接獲取原始密碼,同時還可以保證你的應用可以對原始密碼進行相同的雜湊處理,然後比對雜湊結...

查詢演算法 雜湊演算法,雜湊表查詢

那麼問題來了,如果集合s中同時存在值k 16和值k 27,我們該如何將兩個位址一樣的值存入雜湊表呢?常用的雜湊函式 處理衝突的方法 2.連位址法 雜湊表涉及的是一種對映關係,可以根據某個值查詢到關鍵字的位址,這樣的做法省去了比較的時間,優化了演算法。雜湊表是把值 關鍵字 存到跟它具有 唯一 對映的格...

簽名與加密安全技術基礎(一) 雜湊演算法

一 hash 演算法 著名的hash 演算法,md5 和sha1 可以說是目前應用最廣泛的 hash 演算法,而它們都是以 md4為基礎設計的。那麼他們都有什麼用途呢?雜湊演算法 有如下特性 1 不可以從 訊息摘要 中復原資訊 2 兩個不同的訊息不會產生同樣的訊息摘要 1.1 md5 演算法md5 ...