哈希碰撞是什么意思 hash函數(shù)強(qiáng)抗碰撞性和弱碰撞性的區(qū)別?
hash函數(shù)強(qiáng)抗碰撞性和弱碰撞性的區(qū)別?對(duì)于哈希函數(shù),強(qiáng)沖突:如果隨機(jī)找到兩條消息M1和M2,使得值H(M1)=H(M2)被哈希函數(shù)加密,則表示存在沖突。如果這種碰撞無(wú)法實(shí)現(xiàn),則稱為碰撞穩(wěn)定。hash
hash函數(shù)強(qiáng)抗碰撞性和弱碰撞性的區(qū)別?
對(duì)于哈希函數(shù),強(qiáng)沖突:如果隨機(jī)找到兩條消息M1和M2,使得值H(M1)=H(M2)被哈希函數(shù)加密,則表示存在沖突。如果這種碰撞無(wú)法實(shí)現(xiàn),則稱為碰撞穩(wěn)定。hash函數(shù)的另一個(gè)安全問(wèn)題是弱沖突:如果給定一個(gè)消息M1并搜索該消息M2,使得值H(M1)=H(M2)被hash函數(shù)加密,則表示存在沖突。如果不能實(shí)現(xiàn)這樣的碰撞,則稱為第二原語(yǔ)穩(wěn)像。
強(qiáng)碰撞:可以抵抗強(qiáng)碰撞的哈希函數(shù)
弱碰撞:只能抵抗弱碰撞的哈希函數(shù)。
碰撞攻擊是什么意思,通俗一點(diǎn)?
當(dāng)計(jì)算機(jī)進(jìn)行比較時(shí),它不會(huì)像我們想象的那樣逐個(gè)進(jìn)行比較,而是使用hashcode方法。具體地說(shuō),它通過(guò)一個(gè)算法將一個(gè)字符串或其他東西變成一個(gè)整數(shù)。例如,我們比較“我愛(ài)我的國(guó)家”和“我是一個(gè)女孩”。電腦不會(huì)先比較第一個(gè)單詞“I”看是否相同,然后比較“l(fā)ove”和“yes”看是否相同。并通過(guò)一個(gè)算法,將它們轉(zhuǎn)換成一個(gè)32位整數(shù)(即散列值),直接比較整數(shù)是否相同。
此算法滿足:相同的字符串,結(jié)果必須相同,但當(dāng)結(jié)果相同時(shí),字符串不一定相同。
只有當(dāng)哈希值相同時(shí),計(jì)算機(jī)才會(huì)逐個(gè)比較。
我們之所以采用這種比較策略,是因?yàn)槿绻址浅iL(zhǎng),例如,可能有100000或數(shù)百萬(wàn)個(gè)字符串,那么逐個(gè)比較的效率簡(jiǎn)直是驚人的。
這是碰撞攻擊的原理。
攻擊者故意創(chuàng)建攻擊數(shù)據(jù),使所有數(shù)據(jù)的哈希值相等,這稱為哈希沖突。當(dāng)哈希沖突發(fā)生時(shí),計(jì)算機(jī)只能逐個(gè)比較。它只需要幾個(gè)KB的文件就可以讓電腦沉迷于比較,無(wú)法自拔。攻擊者甚至可以進(jìn)行DDoS攻擊。有時(shí)攻擊數(shù)據(jù)能達(dá)到1GB/s,天河二號(hào)受不了。很快,計(jì)算機(jī)的所有CPU資源都被這種毫無(wú)意義的比較所占用,服務(wù)器很快就會(huì)停機(jī)。這是哈希沖突攻擊。
1. 沖突根本不是密碼攻擊。當(dāng)哈希沖突發(fā)生時(shí),計(jì)算機(jī)將逐個(gè)進(jìn)行比較。
2. 通常,哈希值僅在比較期間生成,并在比較之后刪除。計(jì)算機(jī)根本不存儲(chǔ)哈希值(除非程序員的大腦很糟糕)。如果你能得到散列值,你就可以完全控制計(jì)算機(jī)。前面的答案是無(wú)稽之談
哈希函數(shù)相當(dāng)于將一個(gè)原始空間的數(shù)據(jù)集映射到另一個(gè)空間,也可以理解為通過(guò)哈希函數(shù)將另一個(gè)文本編程成密文,這就是哈希加密
例如MD5,任何原始文本都會(huì)被加密成8位或16位密文。8位16位密文是有限的,可以是窮盡的,但原始文本的長(zhǎng)度是無(wú)限的,因此理論上是無(wú)限的。這將導(dǎo)致兩個(gè)或更多不同的原文。MD5加密會(huì)變成同一個(gè)密文的沖突,即在加密后找出一個(gè)或多個(gè)具有相同密文的原始文本
沖突存在且無(wú)法完全解決。我們只能盡可能降低沖突的概率,也就是說(shuō),映射空間或加密密文越長(zhǎng),密文的組合方式越多,沖突的概率就越小
是的,一個(gè)哈希值一般是一個(gè)整數(shù)值,可以代表40多億個(gè)值。很明顯,字符串的數(shù)量是無(wú)限的,所以一定會(huì)有!