Jaka jest wartość sum kontrolnych MD5, jeśli sam skrót MD5 mógłby potencjalnie zostać zmanipulowany?


39

Pliki do pobrania na stronach internetowych czasami zawierają sumę kontrolną MD5, co pozwala użytkownikom potwierdzić integralność pliku. Słyszałem, że ma to na celu umożliwienie nie tylko natychmiastowej identyfikacji uszkodzonych plików, zanim spowodują one problem, ale także łatwego wykrycia złośliwych zmian.

Postępuję zgodnie z logiką, jeśli chodzi o uszkodzenie pliku, ale jeśli ktoś celowo chce przesłać złośliwy plik , może wygenerować odpowiednią sumę kontrolną MD5 i opublikować ją na stronie pobierania wraz ze zmienionym plikiem. Oszuka to każdego, kto pobierze plik, aby pomyślał, że nie został zmieniony.

W jaki sposób sumy kontrolne MD5 mogą zapewnić ochronę przed celowo zmienionymi plikami, jeśli nie ma możliwości sprawdzenia, czy sama suma kontrolna została naruszona?


3
Jeśli polegamy na tym, że prowadzący witrynę zauważył subtelne rozbieżności znaczników czasu zamiast skrótu MD5 działającego jako pieczęć autentyczności ... to ochrona zapewniona przez sumę kontrolną prawie całkowicie wyparowała.
Austin '' Danger '' Powers

4
@BigChris Nie jestem pewien, co masz na myśli, ale to brzmi źle. Algorytmy kryptograficzne, takie jak MD5, całkowicie dotyczą danych wiadomości. Dwie losowe wiadomości o tej samej długości prawie na pewno będą miały różne skróty.
Matt Nordhoff,

3
@MattNordhoff dokładnie. Jeśli suma kontrolna MD5 nie jest generowana na podstawie danych pliku, to na czym ona polega ?
Austin „Niebezpieczeństwo” Powers

2
Owszem, dane hashujące MD5 byłyby zbudowane na danych, tak, ale utworzenie złośliwego pliku z tym samym hasłem nie wymagałoby zbyt wiele wysiłku. Jak powiedziano, nie będzie sposobu sprawdzenia, czy plik jest złośliwy, czy nie. Przeczytaj: mscs.dal.ca/~selinger/md5collision
Kinnectus

2
Czasami skróty są publikowane na własnym serwerze, podczas gdy rzeczywiste pliki do pobrania są hostowane na zewnętrznych serwerach lustrzanych i / lub CDN.
el.pescado,

Odpowiedzi:


89

Słyszałem, że pozwala to na wykrycie [...] również złośliwych zmian.

Więc źle słyszałeś. Sumy kontrolne MD5 (lub SHA lub cokolwiek innego) są dostarczane ( w szczególności łącza do plików do pobrania ) tylko w celu weryfikacji poprawności pobierania. Jedyne, co chcą zagwarantować, to to, że masz ten sam plik co serwer. Nic dodać nic ująć. Jeśli serwer jest zagrożony, jesteś SOL. To naprawdę tak proste.


31
+1. Służą one przede wszystkim do ochrony przed przypadkowym uszkodzeniem (błędy transferu sieci, uszkodzone sektory na dysku itd.). Aby chronić się przed złośliwym uszkodzeniem, suma kontrolna musi pochodzić z zaufanej, niepołączonej lokalizacji. To samo z PGP / GPG / podobnymi podpisanymi wiadomościami: zapewniają one pełną treść tylko wtedy, gdy ufasz skąd otrzymałeś klucz publiczny.
David Spillett,

1
Możesz również dodać do swojej odpowiedzi, że podpisy różnicowe dotyczą tego ograniczenia (zakładając, że ufasz certyfikatowi / instytucji certyfikującej)
atk

2
Jest nawet gorzej - jeśli ktoś może manipulować ruchem do / z serwera, to nawet jeśli serwer nie zostanie naruszony, może zmodyfikować zarówno otrzymany plik, jak i sumę kontrolną.
cpast

3
Aby rozwinąć: Jeśli to nie gwarantuje, że miał ten sam plik jako serwer miał, byłoby uzasadnione środki bezpieczeństwa, ponieważ oznaczałoby to, że nie mają zaufania do sieci. Właśnie to robią MAC w TLS - udowodnij, że otrzymałeś to, co serwer wysłał, ale TLS również nie może nic poradzić na zainfekowany serwer. Jeśli dobry skrót jest przesyłany przez zaufane połączenie, może zapewnić bezpieczeństwo (pochodzące z zaufanego połączenia); jeśli jest przesyłane przez to samo połączenie, co plik, wtedy nie ma sensu, ponieważ ma bardziej odporny na manipulacje niż plik był sam.
cpast

2
To jest źle. Czasami sumy kontrolne są dostarczane bezpiecznie, ale pobieranie nie jest. Ponieważ MD5 jest uszkodzony, sumy kontrolne MD5 zabezpieczeń są słabsze niż bezpieczniejsze sumy kontrolne, ale przed uszkodzeniem MD5 bezpiecznie dostarczona MD5 (np. Podpisana lub wysłana z HTTP), która pasowała do MD5 pobierania, była mocnym dowodem na to, że odebrano pobieranie z serwera. Dodam teraz odpowiedź ze szczegółami poniżej.
Matthew Elvey,

15

Rozwiązaniem stosowanym w niektórych systemach zarządzania pakietami, takich jak dpkg, jest podpisanie skrótu : użyj skrótu jako danych wejściowych do jednego z algorytmów podpisywania klucza publicznego. Zobacz http://www.pgpi.org/doc/pgpintro/#p12

Jeśli masz klucz publiczny sygnatariusza, możesz zweryfikować podpis, co dowodzi, że skrót jest niezmodyfikowany. To po prostu sprawia, że ​​masz problem z uzyskaniem odpowiedniego klucza publicznego z góry, chociaż jeśli ktoś raz sfałszuje dystrybucję klucza, musi również manipulować wszystkim, co możesz z nim zweryfikować, w przeciwnym razie zauważysz, że dzieje się coś dziwnego.


9

Twoje założenie jest prawidłowe. Jest jednak wyjątek. Jeśli serwer udostępniający plik i strona, na której skrót jest zarządzany, nie są zarządzane przez ten sam podmiot. W takim przypadku twórca oprogramowania może powiedzieć „hej, ludzie pobierają to z tego miejsca, ale wierzą tylko, jeśli hash = xxxx”. (Może to być przydatne dla CDN jako przykład). To chyba był powód, dla którego ktoś to zrobił. Potem inni po prostu myśleli, jak fajnie byłoby pokazać hash. Nawet nie myśląc o tym, jak użyteczne jest to, że zarówno plik, jak i skrót znajdują się w tej samej lokalizacji.

Powiedziawszy to, jest tego warte. Nie zakładaj zbyt wiele na temat bezpieczeństwa, jak inni już stwierdzili. Jeśli i tylko jeśli możesz całkowicie zaufać oryginalnemu skrótowi, plik jest dobry. W przeciwnym razie osoba atakująca z wystarczającą motywacją i wiedzą może manipulować zarówno plikiem, jak i hashem, nawet jeśli znajdują się one na różnych serwerach i są zarządzane przez różne podmioty.


8

Czasami sumy kontrolne są dostarczane bezpiecznie, ale pobieranie nie jest. Ponieważ MD5 jest zepsuty , sumy kontrolne MD5 zabezpieczeń są słabsze niż bezpieczniejsze sumy kontrolne, ale przed złamaniem MD5 bezpiecznie dostarczona MD5 (np. Podpisana za pomocą PGP lub GPG lub Gatekeeper lub pobrana przez HTTPS), która pasowała do MD5 pobieranie było mocnym dowodem na to, że otrzymano to, które serwer udostępnił.

Pisałem o opłakanym brakiem bezpiecznych sum kontrolnych przez lata, tutaj .

Użytkownicy nie powinni pobierać niezaufanych plików wykonywalnych w niezaufanych sieciach i uruchamiać ich ze względu na ryzyko ataków MITM. Patrz np. „Zabezpieczenia w systemach automatycznej aktualizacji” P. Ruissen, R. Vloothuis.

Dodatek 2014: Nie, to NIE jest złe „sumy kontrolne opublikowane na stronach internetowych służą do wykrywania złośliwych modyfikacji”, ponieważ JEST to rola, którą mogą pełnić. Pomagają chronić przed przypadkowym uszkodzeniem, a jeśli są doręczane przez HTTPS lub ze zweryfikowanym podpisem (lub jeszcze lepiej, oba), pomagają chronić przed złośliwym uszkodzeniem! Otrzymałem sumy kontrolne za pośrednictwem HTTPS i zweryfikowałem, że wielokrotnie pasowały do ​​pobierania HTTP.

W dzisiejszych czasach pliki binarne są często dystrybuowane z podpisanymi, automatycznie weryfikowanymi skrótami, ale nawet to nie jest całkowicie bezpieczne .

Fragment powyższego linku: „Aplikacja KeRanger została podpisana ważnym certyfikatem programistycznym dla komputerów Mac, dlatego mogła ominąć ochronę strażnika Apple'a”. ... ”Apple od tego czasu unieważnił nadużywany certyfikat i zaktualizował podpis antywirusowy XProtect, a Transmission Project usunął złośliwe instalatory ze swojej witryny. Palo Alto Networks zaktualizował również filtrowanie adresów URL i zapobieganie zagrożeniom, aby powstrzymać KeRanger przed wpływami na systemy. Analiza techniczna

Dwa instalatory transmisji zainfekowane KeRanger zostały podpisane przy użyciu legalnego certyfikatu wydanego przez Apple. Deweloper podał ten certyfikat jako turecką firmę o identyfikatorze Z7276PX673, który był inny niż identyfikator programisty użyty do podpisania poprzednich wersji instalatora Transmission. W informacjach o podpisywaniu kodu stwierdziliśmy, że te instalatory zostały wygenerowane i podpisane 4 marca rano ”.

Dodatki 2016:

@Cornstalks: Re. twój komentarz poniżej: Źle. Jak obecnie zauważono w artykule Wikipedii o ataku kolizji, do którego link znajduje się: „W 2007 r. Znaleziono atak kolizyjny o wybranym prefiksie przeciwko MD5” i „atakujący może wybrać dwa dowolnie różne dokumenty, a następnie dołączyć różne obliczone wartości, które dają w wyniku całość dokumenty o równej wartości skrótu. ” Tak więc, nawet jeśli MD5 jest dostarczany bezpiecznie, a atakujący nie może go zmodyfikować, atakujący nadal MOŻE zastosować atak kolizyjny z wybranym prefiksem z wybranym prefiksem zawierającym złośliwe oprogramowanie, co oznacza, że ​​MD5 NIE jest bezpieczny do celów szyfrowania. To w dużej mierze dlatego US-CERT powiedział, że MD5 „należy uznać za uszkodzony kryptograficznie i nienadający się do dalszego użycia”.

Jeszcze kilka rzeczy: CRC32 to suma kontrolna. MD5, SHA itp. To więcej niż sumy kontrolne; mają być bezpiecznymi skrótami. Oznacza to, że powinny być bardzo odporne na ataki zderzeniowe. W przeciwieństwie do sumy kontrolnej, bezpiecznie przekazywany bezpieczny skrót hash chroni przed atakiem man-in-the-middle (MITM), gdzie MITM znajduje się między serwerem a użytkownikiem. Nie chroni przed atakiem, na który narażony jest sam serwer. Aby się przed tym zabezpieczyć, ludzie zwykle polegają na czymś takim jak PGP, GPG, Gatekeeper itp.


Podoba mi się ta odpowiedź, ponieważ podkreśla podstawową część sumy kontrolnej - jest to po prostu jedna z wielu miar, aby sprawdzić poprawność zawartości pliku. Jeśli sama sieć nie jest niezaufana, nie jest niewyobrażalne wyobrażenie sobie, że zastępuje ona skróty MD5 i łatanie plików binarnych w locie (jak widzieliśmy już na niektórych węzłach wyjściowych Tora) ... Oczywiście MD5 nie zapewnia ochrony przed celowo zmodyfikowano pliki, ponieważ na początku ufasz dostawcy tych plików.
Przełom

2
MD5 nie jest całkowicie zepsuty: atak na niego jest atakiem kolizyjnym , a nie przywiązaniem do preimage (co byłoby znacznie, znacznie gorsze). Jeśli MD5 jest dostarczany bezpiecznie, a atakujący nie może go zmodyfikować, wówczas atakujący nie może użyć ataku kolizyjnego (i musi użyć ataku preimage), co oznacza, że ​​MD5 jest nadal dość bezpieczny w tym celu. MD5 warto wycofać ze względu na podatność na kolizję, ale nie ma (znanej) luki w zabezpieczeniach przedobrazowych, więc nie jest całkowicie zepsuta. Połowa złamana.
Cornstalks,

+1! Ale ... Czy podpisany skrót jest tak samo bezpieczny ( wiarygodny ) jak niepodpisany skrót pobierany przez https (ssl / tls)? Myślę, że nadal lepiej jest, aby sam hash i tak był podpisany ...
matpop

4

Jest to dokładny powód, dla którego opublikowane sumy kontrolne często zawierają wyłączenie odpowiedzialności z informacją „Nie można chronić przed złośliwą modyfikacją pliku”. Krótka odpowiedź brzmi zatem: „nie mogą zapewnić żadnej ochrony przed celowo zmienionym plikiem” (chociaż jeśli strona jest dostarczana przez HTTPS, sama HTTPS chroni przed modyfikacją; jeśli plik nie jest dostarczany przez HTTPS, ale suma kontrolna to może to pomóc niektórym, ale nie jest to częsty przypadek). Ktokolwiek powiedział ci, że sumy kontrolne zamieszczone na stronach internetowych służą do wykrywania złośliwych modyfikacji, mylił się, ponieważ nie jest to rola, którą mogą pełnić; wszystko, co robią, to pomaga chronić przed przypadkowym uszkodzeniem i leniwym złośliwym uszkodzeniem (jeśli ktoś nie zadaje sobie trudu, aby przechwycić stronę, dając ci sumę kontrolną).

Jeśli chcesz zabezpieczyć się przed celową modyfikacją, musisz albo powstrzymać ludzi od bałaganu z sumą kontrolną, albo uniemożliwić innym osobom wygenerowanie prawidłowej sumy kontrolnej. Pierwszy z nich może polegać na rozdawaniu go osobiście lub w podobny sposób (więc sama suma kontrolna jest zaufana); ten drugi dotyczy algorytmów podpisu cyfrowego (gdzie musisz bezpiecznie dostać swój klucz publiczny do downloadera; w TLS odbywa się to poprzez bezpośrednie zaufanie do urzędów certyfikacji i zlecenie ich weryfikacji wszystkim innym; można to również zrobić za pośrednictwem sieci zaufania , ale chodzi o to, że w pewnym momencie coś musi zostać bezpiecznie przesłane, a samo opublikowanie czegoś w witrynie nie wystarczy).


2
Hashe mogą chronić przed złośliwymi zmianami, jeśli ktoś wie przez niezależne źródło, jaki powinien być oczekiwany skrót wiarygodnej wersji pliku. Wartość wyświetlania wartości skrótu jej plików na stronie internetowej nie polega na tym, że osoby pobierające pliki z witryny mogą sprawdzić skrót pobranego pliku na tej samej stronie, ale raczej na informowaniu osób, które wiedzą z innego źródła hash pliku, który chcą , przed pobraniem dowiedz się , czy dany plik będzie go pasował. BTW, jedno chciałbym zobaczyć ...
supercat

... byłby formą adresu URL / URI, który zawierałby oczekiwaną wartość skrótu (prawdopodobnie SHA zamiast MD5) i określałby, że przeglądarka powinna akceptować plik tylko wtedy, gdy skrót odpowiada podanemu. W przypadkach, gdy wiele osób będzie musiało uzyskać dostęp do tego samego dużego pliku, podanie wszystkim tym osobom adresu URL za pośrednictwem https: //, ale pobranie ich z serwera proxy może być bardziej wydajne niż korzystanie z https: // bezpośrednio ze źródła.
supercat,

@ superupat To właśnie rozumiałem przez „powstrzymywanie ludzi od bałaganu z sumą kontrolną” - coś musi być bezpiecznie przesłane, a jeśli to jest suma kontrolna, wówczas suma kontrolna może pomóc chronić przed złośliwym manipulowaniem plikiem.
cpast

Suma kontrolna MD5 przesłana jakąś ścieżką inną niż sam plik zapewnia ochronę przed manipulacją, chyba że plik został celowo utworzony w celu ułatwienia takiej manipulacji. Z kolei coś takiego jak CRC32 nie zapewnia prawie żadnej ochrony przed manipulacją, nawet jeśli oryginalne źródło pliku jest godne zaufania, a CRC32 jest bezpiecznie dostarczany.
supercat

4

To naprawdę problem. Wyświetlanie sum kontrolnych w tej samej witrynie co plik do pobrania jest niepewne. Osoba, która może zmienić plik, może również zmienić sumę kontrolną. Suma kontrolna powinna być wyświetlana przez całkowicie oddzielny system, ale jest to praktycznie niewykonalne, ponieważ w jaki sposób powiedzieć użytkownikowi w bezpieczny sposób, gdzie można znaleźć sumę kontrolną.

Możliwym rozwiązaniem jest użycie podpisanych plików.

(BTW: MD5 jest wszędzie niebezpieczny i nie należy go więcej używać).


2

W jaki sposób sumy kontrolne MD5 mogą zapewnić ochronę przed celowo zmienionymi plikami, jeśli nie ma możliwości sprawdzenia, czy sama suma kontrolna została naruszona?

Masz całkowitą rację. Zatem celem byłoby sprawienie, by twoje „jeśli” było złe - jeśli wiemy, że bezpieczny hash kryptograficzny pliku nie jest zagrożony, to wiemy, że plik też nie jest zagrożony.

Na przykład, jeśli opublikujesz skrót pliku na swojej stronie, a następnie umieścisz link do kopii pliku na serwerze lustrzanym innej firmy - powszechna praktyka w staromodnej dystrybucji bezpłatnego oprogramowania - użytkownicy mogą być chronieni przed niektórymi typami ataków. Jeśli serwer kopii lustrzanych jest złośliwy lub przejęty, ale witryna jest w porządku, kopia lustrzana nie będzie w stanie obrócić pliku.

Jeśli twoja strona korzysta z HTTPS lub podpisujesz skrót gpg, twój plik może być (głównie) chroniony przed atakami sieciowymi, takimi jak złośliwe hotspoty Wi-Fi, nieuczciwe węzły wyjściowe Tora lub NSA.


1
Jeśli chodzi o gpg: pamiętaj, że ma to podobne problemy, jeśli nie do końca ufasz, że klucz publiczny nie został zastąpiony przez skompromitowany, a treść podpisana za pomocą klucza prywatnego odpowiada temu.
David Spillett,

1

Nie można zmodyfikować sumy kontrolnej MD5 bez modyfikacji pliku. Jeśli pobierzesz plik, a następnie pobierzesz skrót, a następnie twoje obliczenie pliku nie zgadza się z podanym, skrót lub plik jest nieprawidłowy lub niekompletny.

Jeśli chcesz „powiązać” plik z czymś zewnętrznym, takim jak autor, komputer itp., Musisz go podpisać przy użyciu procesu typu PKI z certyfikatami. Autor pliku itp. Może podpisać plik za pomocą swojego klucza prywatnego, a także możesz zweryfikować podpisy za pomocą klucza publicznego, który powinien być publicznie dostępny, sam podpisany przez urząd certyfikacji, zarówno ty, jak i autor, i do pobrania, najlepiej z wiele lokalizacji.

Modyfikacja pliku sprawiłaby, że podpis byłby nieważny, więc można go również użyć do weryfikacji integralności pliku.


1

Skróty wskazują, czy Twoja wersja pliku („pobieranie”) różni się od wersji serwera. Nie dają one gwarancji autentyczności pliku.

Podpisów cyfrowych (szyfrowanie asymetryczne + funkcja skrótu) można sprawdzić, czy plik nie został zmodyfikowany przez nikogo, kto nie ma odpowiedniego klucza prywatnego.

Twórca pliku szyfruje plik i szyfruje skrót za pomocą (tajnego) klucza prywatnego. W ten sposób każdy, kto ma odpowiedni (nie tajny) klucz publiczny, może sprawdzić, czy skrót jest zgodny z plikiem, ale chociaż zawartość pliku można zmodyfikować, nikt nie może zastąpić odpowiedniego skrótu takim, który pasuje do pliku (po odszyfrowaniu skrótu za pomocą klucz publiczny) - chyba że uda im się sforsować klucz prywatny lub uzyskać do niego dostęp.

Co powstrzyma pana „A.Hackera” przed modyfikacją pliku, a następnie podpisaniem go własnym kluczem prywatnym?

Aby sprawdzić poprawność pliku, musisz porównać jego skrót z tym, który uzyskałeś przez odszyfrowanie powiązanego podpisu cyfrowego. Jeśli uważasz, że plik pochodzi z „IMAwesome”, to odszyfrowujesz skrót za pomocą jego klucza, a skrót nie pasuje do pliku, ponieważ skrót został zaszyfrowany przy użyciu klucza A.Hackera.

Podpisy cyfrowe pozwalają zatem wykryć zarówno przypadkowe, jak i złośliwe zmiany.

Ale w jaki sposób zdobywamy klucz publiczny IMAwesome? Jak możemy zapewnić, że kiedy uzyskaliśmy jego / jej klucz, tak naprawdę klucz A.Hackera nie był obsługiwany przez zainfekowany serwer lub atak man-in-the-middle? W tym miejscu pojawiają się łańcuchy certyfikatów i zaufane certyfikaty główne, z których żadne nie jest całkowicie bezpiecznym [1] rozwiązaniem problemu, i które oba powinny być prawdopodobnie dobrze wyjaśnione na Wikipedii i innych pytaniach na temat SO.

[1] Po inspekcji certyfikaty główne dostarczone z systemem operacyjnym Microsoft na moim komputerze osobistym zawierają certyfikat rządu USA. Każdy z dostępem do odpowiedniego klucza prywatnego kaszel NSA kaszel może zatem służyć zawartości do mojej przeglądarce, która przebiega przez „jest tam kłódki w pasku adresu” czeku. Ile osób rzeczywiście będzie kłopotać się kliknięciem kłódki i zobaczeniem, której pary kluczy używa się do „zabezpieczenia” połączenia?


Tylko jedna osoba, która sprawdza łańcuch certyfikatów, powoduje skandal. Jeśli sądzisz, że NSA użyje rządowego klucza CA do MITM zamiast klucza skradzionego prywatnemu lub - a nawet lepiej - zagranicznemu urzędowi certyfikacji (zapewniając w ten sposób wiarygodną zaprzeczenie), mam pomost, aby cię sprzedać.
Charles Duffy,

Sugerowałem możliwość wykorzystania go do ukierunkowania MITM na konkretnego użytkownika. To, czy rzeczywiście jest prawdopodobne, należy do debaty o folii cynowej
Mark K Cowan

Nie wątpię, czy prawdopodobny jest docelowy MITM. Zastanawiam się, czy prawdopodobne jest bycie wystarczająco nieostrożnym, aby użyć łatwo wyśledzonego i przypisanego klucza urzędu certyfikacji. W szczególności w przypadku celu o wystarczająco wysokiej wartości wychodzący „ruch sieciowy” może być rejestrowany wystarczająco szczegółowo, aby uwzględnić metadane aż do publicznej części uzgadniania SSL włącznie, więc nawet jeśli użytkownik nie patrzy, jego pracownicy ochrony lub zautomatyzowana infrastruktura może to zrobić w analizie retrospektywnej.
Charles Duffy,

1

W jaki sposób sumy kontrolne MD5 mogą zapewnić ochronę przed celowo zmienionymi plikami, jeśli nie ma sposobu na sprawdzenie, czy suma kontrolna nie została naruszona?

To jest naprawdę dobre pytanie. Ogólnie rzecz biorąc, twoja ocena manipulacji MD5 jest natychmiastowa. Uważam jednak, że wartość sum kontrolnych MD5 przy pobieraniu jest w najlepszym razie powierzchowna. Być może po pobraniu pliku możesz sprawdzić posiadany MD5 na stronie internetowej, ale zwykle postrzegam pamięć MD5 obok siebie jako „pokwitowanie” lub coś, co jest miłe, ale nie jest niezawodne. W związku z tym generalnie nigdy nie dbałem o sumy kontrolne MD5 z pobranych plików, ale z własnego doświadczenia mogę mówić o tworzeniu procesów MD5 opartych na serwerze ad-hoc.

Zasadniczo to, co zrobiłem, gdy klient chce zmieść system plików dla sum kontrolnych MD5, polega na wygenerowaniu ich w plikach CSV, które odwzorowują nazwę pliku, ścieżkę, MD5 i inne informacje o różnych plikach na ustrukturyzowany format danych, który następnie połknąłem do bazy danych w celu porównania i przechowywania.

Tak więc, korzystając z Twojego przykładu, podczas gdy suma kontrolna MD5 może znajdować się obok pliku we własnym pliku tekstowym, suma kontrolna MD5 rekordu uprawnień byłaby przechowywana w niepołączonym systemie bazy danych. Więc jeśli ktoś w jakiś sposób włamał się do współdzielenia plików w celu manipulowania danymi, intruz nie miałby żadnego dostępu do rekordów uprawnień MD5 ani powiązanej historii.

Niedawno odkryłem fajne oprogramowanie do archiwizacji bibliotek o nazwie ACE Audit manager, które w zasadzie jest aplikacją Java zaprojektowaną do siedzenia i oglądania zmian w systemie plików. Rejestruje zmiany za pomocą zmian MD5. I działa na podobnej filozofii, co mój proces ad-hoc - przechowuj sumy kontrolne w bazie danych - ale idzie o krok dalej, ale tworzy sumę kontrolną MD5 sum kontrolnych MD5, która jest znana jako drzewo mieszania lub drzewo Merkle .

Powiedzmy, że masz 5 plików w kolekcji. Te 5 plików w menedżerze kontroli ACE uzyskałoby kolejny - nazwijmy to „nadrzędny” - sumę kontrolną, która jest skrótem wygenerowanym z 5 sum kontrolnych MD5 każdego pliku. Więc jeśli ktoś miałby manipulować tylko jednym plikiem, skrót dla pliku zmieniłby się, podobnie jak skrót dla całej kolekcji „nadrzędnej”.

Ogólnie rzecz biorąc, sposób, w jaki należy patrzeć na sumy kontrolne MD5 i powiązane skróty integralności, jest taki, chyba że nie są one połączone z jakimś pośrednim magazynowaniem dla samych skrótów MD5, mogą być uszkodzone. Ich wartość jako długoterminowego narzędzia do integralności danych jest równoważna tanim zamkowi, który jest „bezpłatny” na nowy bagaż; jeśli poważnie myślisz o zamknięciu bagażu, otrzymasz zamek, którego nie można otworzyć w 5 sekund za pomocą spinacza do papieru.


„Suma kontrolna MD5 sum kontrolnych MD5” jest znana jako drzewo Merkle .
pjc50,

@ pjc50 Dzięki! Edytowałem odpowiedź, aby się do tego odwołać.
JakeGould,

0

prędkość

Często ludzie stwierdzają, że znacznie szybciej jest (a) pobrać duży plik z niezaufanej „pobliskiej” sieci dostarczania treści (CDN), witryny lustrzanej, partnerów torrentowych itp., A także pobrać odpowiedni krótki plik sumy kontrolnej (często SHA256; starsze oprogramowanie często używane MD5) z kilku zaufanych źródeł. Uważają, że nieznośnie wolno (b) pobiera cały duży plik bezpośrednio z zaufanego źródła.

uprawomocnienie

Często osoba ta stwierdza, że ​​wszystko się sprawdza - źródła (zaufane i niezaufane) zgadzają się na tę samą sumę kontrolną i uruchamianie shasum (lub md5sum) z dowolnym z tych krótkich plików sumy kontrolnej (nie ma znaczenia, który z nich, gdy wszystkie są identyczne ) wskazuje, że duży plik ma pasującą sumę kontrolną.

modyfikacja

Masz rację, że gdy Mallory złośliwie zmienia duży plik umieszczony na stronie pobierania, Mallory łatwo również złośliwie sumuje sumę kontrolną dla tego pliku w tej samej witrynie pobierania, dzięki czemu shasum (lub md5sum) uruchomi się na tym złośliwym pliku sumy kontrolnej wydają się sprawdzać poprawność dużego pliku. Ale ten plik sumy kontrolnej nie jest (jedynym) tym, którego downloader powinien użyć do weryfikacji.

Gdy program pobierający porówna ten złośliwy plik sumy kontrolnej z plikami sumy kontrolnej pobranymi z zaufanych źródeł, jeśli oryginalna suma kontrolna prześlizgnie się choćby raz, wówczas program pobierający zobaczy, że wszystko nie jest sprawdzane, i dowie się, że coś poszło nie tak.

Jak powiedział wcześniej cpast, jeśli dobra kryptograficzna suma kontrolna zostanie przesłana przez zaufane połączenie, może zapewnić bezpieczeństwo (pochodzące z zaufanego połączenia).

Jak powiedział wcześniej supercat, pliki sum kontrolnych w jednej witrynie nie pomagają osobom, które pobierają duże pliki z tej samej witryny i w ten sam sposób, w jaki pobierają pliki sum kontrolnych - pomagają osobom, które chcą pobierać pliki z innej witryny.

„Jeśli chodzi o bezpieczeństwo, skróty kryptograficzne, takie jak MD5, umożliwiają uwierzytelnianie danych uzyskanych z niezabezpieczonych kopii lustrzanych. Skrót MD5 musi zostać podpisany lub pochodzić z bezpiecznego źródła (strony HTTPS) organizacji, której ufasz.” - https://help.ubuntu.com/community/HowToMD5SUM

Kryptograficzne sumy kontrolne są ważną częścią praktycznych podpisów klucza publicznego (zaimplementowanych w GnuPG i innym oprogramowaniu zgodnym z OpenPGP). Podpisy klucza publicznego mają pewne zalety w stosunku do samych sum kontrolnych.


0

Słyszałem, że [suma kontrolna MD5] pozwala [...] również na łatwe wykrycie złośliwych zmian.

Cóż, nie słyszałeś całkowicie źle . Podpis cyfrowy jest w rzeczywistości używany do wykrywania złośliwych zmian. Z kilku ważnych powodów hashowanie jest podstawową częścią podpisu cyfrowego, ponieważ w rzeczywistości podpisywany jest tylko skrót , a nie cały oryginalny plik.

Biorąc to pod uwagę, jeśli źródło nie zapewnia podpisu skrótu i ​​zaufanego sposobu jego weryfikacji , masz rację, nie ma ochrony przed celowo zmienionymi plikami , ale skrót jest nadal przydatny jako suma kontrolna przed przypadkowym korupcja .

Oto przykład ze świata rzeczywistego, który może wyjaśnić całą sprawę. Poniższy fragment ma szczególne znaczenie na ten temat:

W przypadku starszych zarchiwizowanych wersji płyt CD wygenerowano tylko sumy kontrolne MD5 [...] W przypadku nowszych wersji stosowane są nowsze i silniejsze kryptograficznie algorytmy sum kontrolnych (SHA1, SHA256 i SHA512)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.