[請問] 為什麼加密雜湊的輸出長度一定要固定?

作者: freebug (Freebug)   2020-12-03 20:14:06
我知道雜湊函數輸出長度固定有一部分原因是為了檢驗資料是否有被更改過
為了使輸出長度不要因為輸入長度過長而也跟著過長而使雜湊值長度壓縮到一定,並且將
資料格式也固定下來
但是加密雜湊函數(CHF)的主要目的除了避免攻擊者將雜湊結果易於反推回去之外,不
也同時要避免碰撞發生的機率嗎?
那麼如果要完全避免碰撞的發生,為什麼不讓CHF隨著某個原訊息長度的區間去做輸出雜
湊長度的調整?而是特意使不管原訊息長度多長都固定輸出同一個長度的雜湊值呢?
CHF的原訊息(通常為登入密碼之類的)長度應該沒有長到需要把它壓縮到固定長度吧?
例如:
 假設某一密碼雜湊函數在原輸入長度為128位元組或以下,輸出長度則固定在129位元組
輸入長度介於129 ~ 257位元組,輸出長度則固定在258位元組
輸入長度介於n ~ n+128位元組,輸出長度則固定在n+129位元組。(n為0或129的正整數
倍)
另外,CHF有為了檢驗原訊息(登入密碼)是否有被更改過的功用嗎?
作者: Schottky (順風相送)   2020-12-03 20:51:00
Cryptographic hash function 常用在以 MB 計的巨大檔案另外CHF的首要任務是防止從digest逆推plaintext內容
作者: AnzaiChika (安濟知佳)   2020-12-03 20:53:00
因為HASH不會為了抗碰撞性去犧牲它的計算效率 一般情況碰撞機率其實很低正常來說你輸入空間越大 產生碰撞機率越大 但是因為你輸出的空間本身也大 所以要從兩個不同的輸入去找出同一個輸出其實是很困難的
作者: Schottky (順風相送)   2020-12-03 20:55:00
所以設計上和對稱加密類似,長度不能太長,否則無法在
作者: AnzaiChika (安濟知佳)   2020-12-03 20:55:00
不同的算法本來就會有不同的位數 但是你設計成固定長度除了不犧牲效率的另外也有很多好處 例如統計方便操作簡單 便於設計
作者: Schottky (順風相送)   2020-12-03 20:56:00
可容忍的計算速率內隱藏plaintext資訊
作者: AnzaiChika (安濟知佳)   2020-12-03 20:56:00
但其實都看設計者是怎麼設計 而剛好HASH就是這樣 不然你可以想想看 為什麼大家身分證都要同樣位數? 這樣你就懂了 其實不用搞那麼複雜
作者: Schottky (順風相送)   2020-12-03 20:59:00
另外CHF的用法常是要和後續程序結合,所以即使是演算法上允許變動輸出長度(範圍也有限,比如256bits-1024bits)實務上常常會把輸出值固定為下一步驟的block大小普通的 hash function 非常容易破解逆推,但不一定較快大多也很容易人工製造 collision加密等級的是專門設計來抵抗這類故意發動的攻擊我記得哪個學校的密碼學作業其中之一就是破解舊式zip檔的密碼,那用的是一個普通 hash function 的變形
作者: walkxwalk (唉啊!)   2020-12-04 02:03:00
優秀!
作者: cuteSquirrel (松鼠)   2020-12-05 00:34:00
推 專業討論文
作者: weltschmerz (威爾特斯克˙悶死)   2020-12-05 21:51:00
不懂 但看這篇討論很帥

Links booklink

Contact Us: admin [ a t ] ucptt.com