1.閱讀下列說明,回答問題1至問題4,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
Hash 函數(shù)將任意長的報文 映射為定長的 hash 其形為:h = H(M)
hash 碼也稱報文摘要,它是所有報文位的函數(shù)。它具有錯誤檢測能力,即改變報文的任何一位或多位,都會導(dǎo)致 hash 碼的改變。在實現(xiàn)認(rèn)證過程中發(fā)送方將 hash 碼附于要發(fā)送的報文之后發(fā)送給接收方,接收方通過重新計算 hash 碼來認(rèn)證報文。 Hash 函數(shù)可提供保密'性、報文認(rèn)證以及數(shù)字簽名功能。
Hash 函數(shù)的目的就是要產(chǎn)生文件、報文或其他數(shù)據(jù)塊的“指紋”。Hash 函數(shù)要能夠用于報文認(rèn)證,它必須可應(yīng)用于任意大小的數(shù)據(jù)塊并產(chǎn)生定長的輸出;對任何給定的用硬件和軟件均比較容易實現(xiàn)。
安全 Hash 算法 (SHA) 是由美國標(biāo)準(zhǔn)與技術(shù)研究所(NIST)設(shè)計并于1993年公布 (FIPS PUB 180),1995年又公布了 FIPS PUB 180-1 ,通常稱之為 SHA-1 。其輸入為長度小于264 位的報文,輸出為 160 位的報文摘要,該算法對輸入按 512 位進行分組,并以分組為單位進行處理。其算法結(jié)構(gòu)如下圖所示。
【問題1】(3分)
Hash函數(shù)除了上述的要求之外,還要滿足以下的性質(zhì),根據(jù)描述將其性質(zhì)填寫到括號內(nèi)。
1、對任何給定的 hash 函數(shù)值h找到滿足H(x)=h的x在計算上是不可行的。( )
2、對任何給定的分組x,找到滿足y ≠x 且H(x)= H(y)在計算上是不可行的。( )
3、找到任何滿足H(x)= H(y)的偶對(x,y)在計算上是不可行的。( )
【問題2】(3分)
SHA-1算法中,若初始報文長度為448位,則在進行填充時要填充多少位?(1分)具體如何填充?(2分)
【問題3】(6分)
(1)SHA-1算法中,在進行初始化緩沖區(qū)時,hash 函數(shù)的中間結(jié)果和最終結(jié)果保存在該緩沖區(qū)中,這個緩沖區(qū)的是多少位?(1分)由幾個多少位的寄存器組成?(2分)
(2)SHA-1算法中壓縮函數(shù)由幾輪運算組成?(1分)每輪運算要迭代多少步?(1分)在哪幾步迭代中壓縮函數(shù)的輸入是原報文分組的內(nèi)容?(1分)
【問題4】(3分)
Hash算法的核心是什么?(1分)設(shè)計一個安全的Hash函數(shù)該考慮哪些因素?(2分)