`Md5sum` ne kadar doğru?


27

Bir md5sumdosyanın bütünlüğünü doğrulamak için kullanırken , işlem ne kadar doğru?

Doğrulanmış bir MD5, HER bit'in tamamen aynı olduğu anlamına mı geliyor, yoksa ikili değişiklik MD5'te yansıtılmadan önce kırılması gereken bir eşik var mı?

Bir md5'in nasıl üretildiğine dair belgeler de takdir edilecektir.



@choroba bunların hepsini doğru okuduğumda, tespit edilmemiş değişiklik olasılığı, doğrulanan dosyanın boyutu ile artar. Ancak yine de bir olasılık ve% 100 kesinlikte yalnızca 16 baytlık bir dosya olabilir. Doğrumuyum?
Konner Rasmussen

@Konner Dosya transferi ile ilgili sorunuzu okudum. Bu amaç için güvenlidir. Bir aktarımda biraz bitme olasılığı düşük ve daha önceki durumunuzu anladığımı varsayarak aktarımdaki kopyalanan dosyanın bir bölümünü kaybetme olasılığınız daha yüksek . MD5, her iki dosyayı da aynı anda kullanmak zorunda olmamanız gerçeğiyle birlikte, her iki dosyayı karşılaştırmaya da eşdeğerdir.
Doktoro Reichard

15
"Doğrulanmış bir MD5, HER bit'in tamamen aynı olduğu anlamına gelir mi?" Güvercin Deliği Prensibi sayesinde bunun imkansız olduğuna dikkat edin. en.wikipedia.org/wiki/Pigeonhole_principle
Plutor

3
Ben de 16 byte dosyaları için bir garanti aldığını sanmıyorum.
Mooing Duck

Yanıtlar:


65

MD5 bu amaç için akıllı bir düşmana karşı bozuldu. Aynı MD5 karma değerini üreten iki farklı veri bloğunu kötü amaçlı oluşturmak mümkündür.

Bununla birlikte, transit veya depolamada yanlışlıkla veri bozulmasına karşı koruma sağlamak için MD5'i kullanmak tamamen uygundur (neredeyse kesin olarak daha iyi yollar olsa da). Böyle bir olayın MD5 karma değerinin aynı olmasına neden olabileceği düşünülebilir olsa da, olasılık o kadar düşüktür ki, endişelenmeye değer bir olasılık olacağı neredeyse düşünülemez. Arka plan ışınımı, tünelleme, statik ve düzinelerce diğer kaynaklardan kaynaklanan arızalar, büyüklük dereceleri daha muhtemel olacaktır.

Bir katrilyon birim veriye sahip olsanız bile, uyuşmayan bir MD5'in bu katrilyon birimlerinden birine ait bir MD5 karma değeri üretme olasılığı bir katrilyondaki değerden çok daha azdır.


Aynı hash ile iki dosya oluşturmak teorik olarak mümkün olsa da, pratik olarak olanaksız olabilir. Özellikle yedek dosya da mantıklı olması durumunda. Eğer orijinal dosya İngilizce metinse, örneğin İngilizce de başka bir eşleşme olmayabilir. Veya bir Excel elektronik tablosu ise, aynı karma değere sahip diğer dosyaların hiçbiri geçerli elektronik sayfalar olmaz.
Barmar

1
@Barmar: win.tue.nl/hashclash/Nostradamus bu adamlar, pratik olarak uygulanabilir olduğunu kanıtlamak için aynı MD5 karma ile bir dizi pdf dosyası oluşturdular.
philfr

26

MD5 bir karmadır. Temel olarak bir dosyanın içeriğini 16 bayt uzunluğunda IIRC olan küçük bir dizgiye eşler.

Açıkça aynı MD5 toplamına sahip birden fazla dosya olacaktır. Bu nedenle, eşleşen bir MD5 toplamı, dosyalar arasında tam bir eşleşme garantisi değildir.

Bu şekilde bir eşik yoktur, çünkü karma çalışma şekli çalışır. Böylece bir MD5 toplamı tek bir bit değişimini bile algılayabilir. Bununla birlikte, birçok tek bit değişikliği birlikte MD5 karma değerinin aynı olmasına neden olabilir. Bu nedenle, MD5'i rastgele bozulmaya karşı dosya bütünlüğünü doğrulamak için kullanmak oldukça mantıklıdır, ancak MD5 karma değerinin aynı olduğundan emin olarak birisinin bir dosyayı değiştirebileceği için kötü niyetli bir niyet söz konusu olduğunda mümkün değildir.


1
çok uzun lafın kısası, md5'in dosya bütünlüğünü doğrulamanın hızlı ve kirli bir yolundan başka bir şey olmadığı ve yalnızca tespit edilemeyen bir hata felaket sonuçlara yol açmayacağı zaman kullanılması gerektiğidir ... doğru mu?
Konner Rasmussen

3
Bunun en iyi kullanımı, aktarma veya kopyalama sırasında oluşan bozulmayı tespit etmektir. gerçekten bir güvenlik meselesi değil.
Michael Martinez,

12
@KonnerRasmussen - Bu bir yan etki derecesi değil, tehdidin niteliğidir. İki belgenin yanlışlıkla aynı MD5'e sahip olabileceğinden endişeleniyorsanız endişelenmeyi bırakın: olasılık, bilgisayarların kendiliğinden aleve dönüşeceği ihtimalini oldukça artırıyor; Akıllı bir saldırganın zaten sahip olduğunuza uygun bir belge üretebileceğinden endişe ediyorsanız, bu ciddi bir endişe ve daha iyi bir karmaşa almanız gerekir; Akıllı bir saldırganın birbiriyle eşleşen iki belge üretebileceğinden endişeleniyorsanız, "endişelenmeyin": kesinlikle olacak .
Malvolio

5
Tabii ki, bir MD5 karma çarpışma oluşturmak teorik olarak mümkün olsa da, yararlı bir çarpışma oluşturmak (çarpışan dosyada olduğu gibi aynı dosya tipi ve içeriği en azından makul derecede orijinaldir) çok daha zor ...
Shadur

6
@Shadur: Durum buydu, ancak devam eden güvenlik araştırması, bunu kolaylaştıran MD5 çarpışmalarını üretmenin yeni yollarını keşfetti. Özellikle, dosya biçiminiz serbest biçimli "yorum" verilerinin boyutlarına izin veriyorsa, uygun bir yorum ekleyerek herhangi bir MD5 karma eşleşmesi mümkündür.
MSalters

17

Bir MD5-Hash 128bitten oluşur. Kaynaktaki tek çevrilmiş bir bit, karma değerde 64 bit (ortalama) döndürür.

Kazara çarpışan iki karmaşanın olasılığı 1/2 ^ 128 olup, bu rakam 340 undecillion 282 decillion 366 nonilyon 920 octillion 938 septillion 463 sextillion 463 quindillion 374 katrilyon 607 trilyon 431 milyar 768 milyon 211 bin 456'dır.

Ancak tüm karmaları tutarsanız doğum günü paradoksları sayesinde olasılık biraz daha yüksek olur. Herhangi bir karmaşanın% 50 şansına sahip olmak için 2 ^ 64 hash gerekir. Bu, bir çarpışma için ortalama olarak 100 yıl boyunca saniyede 6 milyar dosya harcaması gerektiği anlamına gelir.

Kaynak: porneL, https://stackoverflow.com/questions/201705/how-many-random-elements-before-md5-produces-collisions


8
Yani hala bir şansın olduğunu mu söylüyorsun? : p
Holloway

1
Sorun şu ki, bir çarpışma bulduğunuzdan emin olmak için 100 yıl boyunca saniyede 6 milyar dosya saklamanız GEREKİR; İlk saniye içinde iyi olabilirdi.
deroby

Doğru, ilk saniye olabilirdi. Fakat her zaman olduğu gibi, dengeleme sebepleri hakkında Bu riskin kabul edilemez olduğu askeri uygulamalar olabilir, ancak hava yastığı sensörlerinin md5 kullandığı bir yer düşünmeden ikinci bir araba kiralarım. Unutmayın, bir md5 çarpışması beklerken şansınız birden çok kez yıldırım çarpmasıdır.
Zsolt Szilagy

Üzgünüm, ama 2 ^ 128'in yarısı 2 ^ 127, 2 ^ 64 değil.
fischi

2
@fischi, doğum günü paradoksunun bağlantısını ve ayrıca en.wikipedia.org/wiki/Birthday_attack bağlantısını okuyun - toplam hash sayısını yarıya indirmek meselesi değildir. Arama alanı H göz önüne alındığında,% 50 çarpışma şansı elde etmeden önce oluşturmanız gereken karma sayısı yaklaşık sqrt ((pi / 2) * H) olur. Eğer bu hesabı 2 ^ 128 ile yaparsanız, yaklaşık 2 ^ 64
Paul Dixon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.