計算機進行比較時不是像我們想象中的那樣一個一個的比較,而是使用hashcode方法,具體就是透過一個演算法把一個字串,或者其他東西變成一個整數。舉個例子:我們比較“我愛我的祖國”與“我是個女生”是否相同。計算機並不是先比較第一個字“我”是否相同,再比較“愛”和“是”是否相同。而且透過一個演算法,把它們都轉換成一個32位整數(就是hash值),直接去比較這個整數是否相同。
這個演算法滿足:同樣的字串,得到的結果一定相同,而結果相同時,字串不一定相同。
只有hash值相同時,計算機才會去一個一個的進行比較。
之所以採用這樣的比較策略,是因為如果字串很長,比如可能有十萬個,或者百萬個時,逐個比較的效率簡直令人髮指。
這就是碰撞攻擊的原理。
攻擊者刻意的去製造攻擊資料,讓所有資料的hash值都相等,這種情況就是hash碰撞。發生hash碰撞時,計算機只能逐個比較,只需要幾kb的檔案,就能讓一臺計算機沉迷比較,無法自拔。攻擊者甚至可以進行Ddos式的攻擊,有時攻擊資料能達到1GB/s,天河二號也頂不住啊。很快計算機的所有cpu資源都被這種無意義的比較佔滿,伺服器很快就當機了。這就是hash對撞攻擊。
1,碰撞根本不是針對密碼的攻擊,發生hash碰撞時,計算機會逐個比較的。
計算機進行比較時不是像我們想象中的那樣一個一個的比較,而是使用hashcode方法,具體就是透過一個演算法把一個字串,或者其他東西變成一個整數。舉個例子:我們比較“我愛我的祖國”與“我是個女生”是否相同。計算機並不是先比較第一個字“我”是否相同,再比較“愛”和“是”是否相同。而且透過一個演算法,把它們都轉換成一個32位整數(就是hash值),直接去比較這個整數是否相同。
這個演算法滿足:同樣的字串,得到的結果一定相同,而結果相同時,字串不一定相同。
只有hash值相同時,計算機才會去一個一個的進行比較。
之所以採用這樣的比較策略,是因為如果字串很長,比如可能有十萬個,或者百萬個時,逐個比較的效率簡直令人髮指。
這就是碰撞攻擊的原理。
攻擊者刻意的去製造攻擊資料,讓所有資料的hash值都相等,這種情況就是hash碰撞。發生hash碰撞時,計算機只能逐個比較,只需要幾kb的檔案,就能讓一臺計算機沉迷比較,無法自拔。攻擊者甚至可以進行Ddos式的攻擊,有時攻擊資料能達到1GB/s,天河二號也頂不住啊。很快計算機的所有cpu資源都被這種無意義的比較佔滿,伺服器很快就當機了。這就是hash對撞攻擊。
1,碰撞根本不是針對密碼的攻擊,發生hash碰撞時,計算機會逐個比較的。