Bir dosyayı indirirken sağlama toplamlarını karşılaştırmak neden iyi bir uygulamadır?


16

İndirmek için ISO dosyaları sağlayan web siteleri, bu dosyaların md5 sağlama toplamlarını verir; bu, dosyanın doğru indirildiğini ve bozulmadığını doğrulamak için kullanabiliriz.

Bu neden gerekli? Elbette TCP'nin hata düzeltme özellikleri yeterlidir. Bir paket doğru şekilde alınmazsa, yeniden iletilecektir. TCP / IP bağlantısının doğası veri bütünlüğünü garanti etmez mi?


10
Ayrıca, veri aktarımı yapan yazılım ve donanımdaki uç noktalarda da olduğu gibi olası hataları da unutmayın.
sebix

İndirme işlemi birkaç baytı erken bitirmiş olabilir. Dikkat etmediğiniz sürece dosya boyutuna göre fark etmeyeceksiniz ve TCP hata düzeltmesi yalnızca gerçekte gelen verilerin bir kısmını doğrulardı.
Kevin Keane

Sağlama toplamları kullanışlı olabilir, ancak 20 yıl içinde bilgisayarlarla çalışırken bir kez kullandığımı hatırlamıyorum.
Pedro Lobito

2
MD5 sağlama toplamı değil sağlama değeridir. Bir sağlama toplamı hataları, özellikle iletim sırasında bit hatalarını kontrol etmek için kullanılır. Kriptografik bir karma, verilerin tamamen aynı olmasını sağlamak içindir. Bu anlamda bir karma, sağlama toplamının bir üst kümesi olacaktır, ancak bunlar aynı değildir. Bunun dışında MD5 10 yıldır kırıldı ( Wikipedia makalesi, Güvenlik bölümüne bakın ).
0xC0000022L

Yanıtlar:


20

Başkaları tarafından belirtildiği gibi, taşıma katmanındaki herhangi bir sağlama toplamının yardımcı olamadığı birçok veri bozulması olasılığı vardır, örneğin sağlama tarafında sağlama toplamı hesaplanmadan önce gerçekleşen yolsuzluk, akışı bir MITM durdurma ve değiştirme (veriler de) checksum olarak), alıcı sonunda sağlama toplamını doğruladıktan sonra meydana gelen bozulma vb.

Diğer tüm olasılıkları göz ardı edersek ve TCP sağlama toplamının kendisinin özelliklerine ve veri bütünlüğünü doğrulama açısından gerçekte ne yaptığına odaklanırsak, bu sağlama toplamının özelliklerinin, hataları algılama açısından hiç de kapsamlı olmadığı ortaya çıkar. Bu sağlama toplamı algoritmasının seçilme şekli, zaman aralığıyla (1970'lerin sonu) birlikte hız gereksinimini yansıtır.

Bu nasıl TCP sağlama hesaplanır:

Sağlama Toplamı: 16 bit

Sağlama toplamı alanı, başlığın ve metnin 16 bitlik kelimelerinin tamamlayıcı toplamının 16 bitlik bir tamamlayıcısıdır. Bir segment, sağlama toplamı için tek bir başlık ve metin sekizli içeriyorsa, son sekizlik sağ sağlama amacıyla, sağlama toplamı amaçları için 16 bitlik bir kelime oluşturmak üzere sıfırlarla doldurulur. Ped, segmentin bir parçası olarak iletilmez. Sağlama toplamı hesaplanırken, sağlama toplamı alanının yerine sıfırlar gelir.

Bu, verileri bu şekilde toplarken dengelenen herhangi bir bozulmanın tespit edilmeyeceği anlamına gelir. Verilere, bunun izin vereceği bir dizi yolsuzluk kategorisi vardır, ancak önemsiz bir örnek olarak: 16 bitlik kelimelerin sırasını değiştirmek her zaman algılanmayacaktır.


Uygulamada, birçok tipik hatayı yakalar, ancak bütünlüğü garanti etmez . Ayrıca, L2 katmanının da yalnızca yerel bağlantıdaki iletim için olsa da bütünlük denetimlerini (örneğin, Ethernet çerçevelerinin CRC32'si) nasıl gerçekleştirdiğine yardımcı olur ve birçok bozuk veri vakası TCP yığınına bile iletilmez.

Güçlü bir karma veya tercihen bir kriptografik imza kullanarak verilerin doğrulanması, veri bütünlüğünü sağlamak açısından tamamen farklı bir seviyededir. İkisi bile kıyaslanamaz.


En iyi cevap! Diğer cevapların kriptografik karma ve sağlama toplamı kavramlarını nasıl karıştırdığından nefret ediyorum.
0xC0000022L

20

Muhtemelen bir kişinin md5sum'u kontrol etmesi için milyonlarca neden var, ancak birkaç tanesi aklıma geliyor:

  • Kötü amaçlı etkinlik - ISO'nuz sunucu yolunda değiştirilmiş olabilir
  • Sayfanın kendisi sahte (md5sums da imzalanmış olması en iyisidir :))
  • (TCP hata düzeltme rağmen) Broken indir (kontrol bu out)
  • ISO yanlış yanmış

Ve yine de sadece birkaç saniye sürüyor.


21
Ayrıca, sağlama toplamlarını güvenilir bir yerden almanız koşuluyla, rastgele bir ayna sitesinden ISO indirmenin oldukça güvenli olduğu anlamına gelir; örneğin, foo-duyuru posta listesine bir PGP imzalı gönderi.
richardb

2
Aslında kötü niyetli aktivitelere karşı korumakla hiçbir ilgisi yok. ISO kötü niyetli bir ile değiştirilebiliyorsa, MD5 sağlama toplamı değeri de değişebilir. Onları imzalamak farklı bir konudur, ancak OP'nin istediği şey değildir. Bunun yerine Listenizdeki (emin sesler iyi) ilk olmanın "kötü niyetli etkinliği" nin, aslında bile olmamalıdır olmak listenizde. İnsanlara sahte bir güvenlik duygusu veriyorsunuz, bu tehlikeli. superuser.com/questions/849845/…
Austin '' Tehlike '' Yetkileri

1
@ Austin''Danger''Powers Umm, hayır, Konrad haklı. İlk olarak, indirme ayna genellikle olduğu sağlama toplamı gösteren sitesinden farklı, ve ikinci, orada trafik manipüle dünyada ISS'ler oldukça çok var - TCP sağlama iyi olacak, ancak farklı bir dosya indiriyorsunuz. Ve elbette, başka bir noktayı da kaçırıyor - sağlama toplamı oluşturulduktan sonra dosya sunucuda bozulmuş olabilir. Her zaman olur, özellikle daha "hobi" sunucular için (uygun RAID kurulumları olmadan).
Luaan

2
2015'ten gelen bir yanıt MD5 karmalarına karşı tavsiyede bulunmalıdır . Bu algoritma son on yıldır kırıldı (abartı yok!). Ayrıca, sağlama toplamı ve karma karıştırıyorsunuz. Arkalarında farklı niyetleri olan iki farklı şeydir.
0xC0000022L

1
@ 0xC0000022L tarafından yoruma eklemek için, güvenlik zaten büyük bir endişe ise SHA1'den kaçınılmalıdır, ancak hem MD5 hem de yanlışlıkla bozulmaya karşı savunmak için mükemmeldir.
David Spillett

6

TCP / IP veri bütünlüğünü garanti etmez *. Ancak bir dosyanın% 100'ünün indirildiğini garanti etmez. Bunun olmasının birçok nedeni olabilir. Örneğin: Ortada bir yerde bir veya iki bayt kaçıran bir ISO monte edebilirsiniz. Bozuk bir veya iki belirli dosyaya ihtiyacınız olana kadar bu sorunla karşılaşmazsınız. Sağlama toplamlarını karşılaştırmak, tüm dosyayı gerçekten indirdiğinizden emin olmanızı sağlar.

* yoruma bakın


8
Ben "garanti veri bütünlüğü yok" düşünüyorum gerçekten aslında ne yaptığını üzerinde satan. Veri bütünlüğünü çok zayıf olmayan bir yaklaşımla kontrol etmeye çalışır , ki bu özellikle güçlü değildir.
Håkan Lindqvist

6

TCP sağlama toplamı yalnızca 16 bittir. Bu, diğer sağlama toplamlarının yokluğunda, her 65536 bozuk paketten birinin bozulmamış olarak kabul edileceği anlamına gelir. Örneğin,% 1 yolsuzluk oranına sahip gürültülü bir bağlantı üzerinden 8 GB'lık bir DVD görüntüsü indiriyor olsaydınız, 81 tespit edilemeyen şekilde bozuk paket beklersiniz.

MD5, 128 bit'te çok daha büyük bir sağlama toplamıdır. Orijinalle aynı sağlama toplamı ile bir şey üreten bu 81 paketin olasılığı 1.000.000.000.000.000.000.000.000.000.000.000'da yaklaşık 1'dir.


6

HTTP ile indirilen bir dosyanın sağlama toplamını doğrulamanın birkaç nedeni vardır:

  • Tüm dosyayı aldığınızdan emin olun
    • Firefox gibi bazı istemciler, kesintiye uğramış bir bağlantıyı başarılı bir indirme olarak değerlendirerek kesilmiş bir dosyaya sahip olduğunu ancak indirildiğini iddia edebilir.
  • Doğru dosyayı aldığınızdan emin olun
    • örneğin, hatalı, güvenliği ihlal edilmiş veya kötü amaçlı bir sunucu size başka bir şey gönderebilir
    • Birisi aktarımı kurcalayabilir (ortadaki adam saldırısı) - sisteminiz örneğin Superfish tarafından ele geçirilmişse veya kullanılan şifreleme yöntemi zayıfsa HTTPS bile bundan güvenli değildir
    • Ayrıca size yanlış bir indirme sayfası sunabilirler, bu yüzden gerçek sunucuya bile bağlı değilsiniz (ancak bu durumda, aynı sahte sunucudan alırsanız sağlama toplamları çok yardımcı olmaz)
    • Çeşitli ISP'ler, çeşitli nedenlerden dolayı iletimdeki sayfalara Javascript enjekte edildiğinde 1 ; ne kadar iyi uygulandığına bağlı olarak, bazı dosya yüklemelerini de değiştirebilir
    • Bir ayna dosyanın güncel olmayan bir sürümünü barındırıyor olabilir veya yönetici yanlış dosyayı yüklemiş olabilir
  • Dosyanın TCP'nin algılayamadığı bir şey tarafından bozulmamasını sağlama
    • örneğin dosya sunucuda bozulmuş olabilir, bu nedenle TCP yalnızca zaten bozulmuş dosyanın iletimde daha fazla karışmamasını sağlar
    • veya arızalı bellek / disk, buggy dosya sistemi sürücüsü vb.
    • TCP sağlama toplamları yalnızca 16 bittir, bu nedenle bozuk bir paketin algılanmayacağı astronomik değildir (65536'da 1)
  • Bir ISO ile diskin doğru şekilde yazıldığından emin olun

Yorumlar 1 kaynak çünkü lol rep


2
Kaynaklar: * security.stackexchange.com/questions/70970/… * adblockplus.org/forum/viewtopic.php?t=8156 "Agresif ISS enjekte / gömülü komut dosyaları / reklamlar engellenebilir " * iamsrijit.wordpress.com/2012/09/ 14 /… * daha fazla Google'da kolayca bulunabilir, ancak burada gerçekten konu değil
Rena

2

Daniel, söz konusu ISO İndirme için kullandığınız araca bağlı olarak. Say Firefox ise .. Dosya indirmeyi gösterebilir. Ancak tam ISO bozulmamış olabilir. Eğer yakarsanız, kullanmayı deneyin, bilgi eksik olabilir. Bu, zaman zaman dosya barındıran farklı web sunucularında olur.

Dosya boyutunun (toplam bayt veya bit) en azından eşleştiğinden emin olmak iyi bir uygulamadır. Windows dosya bayt sayısını farklı gösterecek sonra Linux diyelim. MD5 toplam kontrolü, hangi işletim sistemi kullanıldıysa aynı değerleri gösterecektir. Umarım bu biraz yardımcı olur. Şerefe ...


2
Windows bayt sayısını Linux'un gösterdiği işlemden farklı mı gösteriyor? Gerçekten mi? CP / M'nin blok sayısı olarak dosya boyutu ile abdominasyonun gittiğini düşündüm. (Şimdi, bayt sayısından başka bir şeye bakıyorsanız - örneğin, Explorer'daki dosya boyutu ekranı - çok farklı olabilir. Ancak hiçbir aklı başında sistem indirilen dosya bütünlüğünü bu şekilde kontrol etmemelidir, bu nedenle ) Bayt bayttır. Yine de bit cinsinden bakmak mantıklı değil; en son ne zaman yarım bayt indirip sakladınız?
CVn

2

Çok ilginç cevaplar fark ettim ama dikkate alınması gereken son bir şey var: İki General Sorunu

İki general sorunu ve Bizans Generalleri sorunu özellikle güvenilir olmayan kanallardan bilgiyi güvenilir bir şekilde aktarmanın sonuçlarını ele almaktadır.

Sağlama toplamları sadece "artan güvenilirlik" katmanıdır ve çok ince bir başarısızlık şansına sahiptir. Bu kadar popüler olmasının nedeni budur.

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.