[摘 要] 本文提出了一種基于位運算乘法、加法運算的Hash函數(shù)構(gòu)造,Hash函數(shù)通過更短的哈希值比用原始值進(jìn)行數(shù)據(jù)庫搜索更快,這種方法一般用來在數(shù)據(jù)庫中建立索引并進(jìn)行搜索,同時還用在各種加、解密算法中。Hash函數(shù)執(zhí)行速度較快,可抗生日攻擊,具有較好的雪崩效應(yīng)。可用于信息安全完整性檢驗,檢驗信息是否被非法更改。
[關(guān)鍵詞] Hash函數(shù) 位運算 文本摘要 抗攻擊性
一、問題的提出
隨著Internet的普及和發(fā)展,電子商務(wù)也越來越被更多的人接受和使用,網(wǎng)絡(luò)中成千上萬種商品,如何對商品進(jìn)行分類,如何保證商品的安全性和有效性,以及在最短的時間內(nèi)檢索出有用信息,已成為人們關(guān)注的焦點。網(wǎng)絡(luò)信息出于安全性考慮,常需要對網(wǎng)絡(luò)中產(chǎn)品的有效性和合法性進(jìn)行鑒別,以防止對產(chǎn)品信息的攻擊(偽造、篡改、刪除等),以公鑰密碼術(shù)、數(shù)字簽名等為代表的加密安全技術(shù)已成為研究的熱點。
Hash函數(shù)是將產(chǎn)品信息轉(zhuǎn)化為較短的、固定長度的文字摘要的常用技術(shù),傳統(tǒng)的哈希方法有MD2、MD5、SHA等標(biāo)準(zhǔn),它們多是采用基于異或等邏輯運算的方法或是用DES等分組加密方法多次迭代得到Hash結(jié)果,前者由于主要使用異或運算,雖然每步運算簡單,但計算輪數(shù)即使在被處理的文本很短的情況下也很大;后種方法運算量很大,難以快速得到可靠的加密結(jié)果。
針對以上問題,本文提出了一種基于位運算乘法、加法運算的Hash函數(shù)構(gòu)造,其表達(dá)簡單,并能很好地達(dá)到Hash函數(shù)的各項性能,且很容易用軟硬件實現(xiàn)。該算法執(zhí)行速度較快,可抗生日攻擊,具有較好的雪崩效應(yīng)。可用于信息安全完整性檢驗,檢驗信息是否被非法更改。
二、Hash函數(shù)構(gòu)造
因特網(wǎng)中信息的保密、完整以及身份的驗證成為數(shù)據(jù)安全的三大問題。其中信息完整檢驗的核心技術(shù)是Hash函數(shù),Hash函數(shù)是一種把任意長度的輸入變換成固定輸出的一種壓縮映射算法。
位運算是指對數(shù)據(jù)進(jìn)行二進(jìn)制位的運算。為了保證構(gòu)造的Hash函數(shù)的安全性,對Hash函數(shù)的二進(jìn)制位數(shù)要求越來越高。
設(shè)Hash函數(shù)的二進(jìn)制位數(shù)為M,設(shè)介紹商品信息的文本(下簡稱文本)對應(yīng)的二進(jìn)制串?dāng)?shù)為N,將其平分為t組,每組有k位二進(jìn)制數(shù),最后一個不足k位時用前置0補齊,k值的大小由構(gòu)造的Hash函數(shù)二進(jìn)制位數(shù)決定。得到的分組記為n1,n2,…,nt,按順序s個相乘,再相加,s值的大小由構(gòu)造的Hash函數(shù)二進(jìn)制位數(shù)決定,但在具體設(shè)置k、s值時最好不要相差太大,例k=13,s=14。
令:A=n1·n2·…·ns+ n2·n3·…·ns+1+ nt·nt+1·…·ns-1,若A超過需要的位數(shù)M,則截取,若不足需要的位數(shù),則用前置0補齊,記為n,已知N,求n時容易的,可定義Hash函數(shù)為:
Hash(N)=n。
三、構(gòu)造的Hash函數(shù)的性質(zhì)
設(shè)文本為N,長度為L,基于實際問題的考慮并不失一般性,設(shè)文本長度L不小于1kb。
實現(xiàn)性:實際應(yīng)用中對Hash函數(shù)的一個非常重要的要求是簡單易實現(xiàn),該方法構(gòu)造的Hash函數(shù)只用到二進(jìn)制乘法和加法運算,利用一般的程序設(shè)計語言即可簡單實現(xiàn),并適用于軟件和硬件實現(xiàn)。
應(yīng)用的廣泛性:從上面構(gòu)造Hash函數(shù)的過程看,這樣的Hash函數(shù)能應(yīng)用于任何大小的文本。
定長輸出:將文本集合中的任意長度的文本N映射為長度為n的文本摘要,不論N是多少位的文本,由構(gòu)造的算法可知,一定可以取得需要的位數(shù)為M位的文本摘要,所以可以產(chǎn)生定長輸出。
敏感性:敏感性要求對輸入信息某一位的變化,應(yīng)引起文本摘要平均一半的變化,經(jīng)過大量的實驗證明,該方法構(gòu)造的Hash函數(shù),文本中一位的改變能引起平均一半的輸出位的變化。
安全性:在很廣泛的條件下,本方法產(chǎn)生的Hash地址分布是均勻的,算法保證了帶密鑰的Hash函數(shù)的安全性完全由密鑰的安全性決定,滿足對帶密鑰的Hash函數(shù)的安全性要求。敏感性決定了帶密鑰的Hash函數(shù)的安全性要求。
單向性:單向性是指給定一個散列值,通過計算找到某個文本,使該文本的摘要等于給定的摘要在計算上是不可行的。因為構(gòu)造的摘要涉及到整個文本,與形成摘要的文本相同位數(shù)的文本有2L個,由構(gòu)造方法可知,已知n,求得n1,n2,…,nt,在計算上是不可行的,即已知n求N在計算上是不可行的。
弱對抗性:弱對抗性是指給定x和Hash(x),確定y使得Hash(x)= Hash(y)在計算上不可行,由摘要的構(gòu)造方法,給定x和Hash(x),確定使得Hash(x)= Hash(y)的y,最簡單的是尋找與x相同位數(shù)的y,但由敏感性可知這是不可行的。
強對抗性:強對抗性是指找不到任何兩個文本x和y,使得Hash(x)= Hash(y)。首先尋找具有相同位數(shù)的x和y,滿足Hash(x)= Hash(y),由敏感性可知這是不可行的。尋找不同位數(shù)的x和y,滿足Hash(x)= Hash(y),因為檢驗時文本與文本摘要一起使用,沒有實際意義。
抗沖突性:由構(gòu)造的Hash函數(shù)滿足獨立性可知,也就是說文本鑒別碼的值n對文本N高度敏感,所以找到兩個相同位數(shù)文本x和y,使得Hash(x)= Hash(y)間的差很小,在計算上是不可能的。而兩個不同位數(shù)的文本x和y,使得Hash(x)= Hash(y) 間的差很小,沒有實際意義。
四、抗攻擊性分析
抵抗生日攻擊的能力:生日問題的標(biāo)準(zhǔn)近似值是,給定x個可能中的k個截然不同的隨機數(shù),發(fā)生沖突的可能性是,一個x位的散列函數(shù)有x/2位的安全性,所以構(gòu)造的Hash函數(shù)的抗生日攻擊的能力取決于Hash函數(shù)的二進(jìn)制位數(shù)M,但M值可以由實際決定,取較大的值。
抵抗字典攻擊的能力:字典攻擊的原理是對每一個可能的輸入,預(yù)先求出它們對應(yīng)的文本鑒別碼,即n,當(dāng)攻擊者看到某個文本鑒別碼時,只要查看所編輯的散列字典,便可知輸入值N。由構(gòu)造的Hash函數(shù)可知,與N相同位數(shù)的不同文本有2L個,而由假設(shè)L>1kb,即2L>21024,如果再考慮與N不同位數(shù)的不同文本,則需要編輯的散列字典在計算上不可能,所以能很好抵御字典攻擊。
抵抗統(tǒng)計攻擊:對任意的二元序列的文本N,不失一般性可以認(rèn)為0與1的分布是均勻的,故對全體文本集合,Hash地址Hash(N)具有均勻分布,這可以有效地抵抗統(tǒng)計攻擊。
五、結(jié)論
由Hash函數(shù)的構(gòu)造、性質(zhì)、抗攻擊性分析,可以看出,本文構(gòu)造的Hash函數(shù)具有較好的性質(zhì)。由于通過更短的哈希值比用原始值進(jìn)行數(shù)據(jù)庫搜索更快,這種方法一般用來在數(shù)據(jù)庫中建立索引并進(jìn)行搜索,同時還用在各種加解密算法中。
參考文獻(xiàn):
[1]葛 輝:一種256位hash函數(shù)算法.《大眾科技》,2005年05期
[2]陳華等:密碼算法的安全性檢測及關(guān)鍵組件的設(shè)計 中國科學(xué)院研究生院,2005年
[3]徐吉斌等:一種基于HASH函數(shù)的密鑰管理方案.安徽師范大學(xué)學(xué)報(自然科學(xué)版) ,2006年04期
[4]黎耀等 基于Hash函數(shù)改進(jìn)遺傳算法的IPv6下模糊異常檢測模型.武漢大學(xué)學(xué)報(理學(xué)版) ,2006年05期
[5]石少儉等:一種基于二進(jìn)制運算的HASH函數(shù)構(gòu)造.山東省計算機學(xué)會2005年信息技術(shù)與信息化研討會論文集(二),2005年
[6]陳軍:基于RBF神經(jīng)網(wǎng)絡(luò)和混沌映射的Hash函數(shù)構(gòu)造.計算機科學(xué),2006.8