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?
Odpowiedzi:
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.
źródło
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.
źródło
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.
źródło
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.
źródło
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).
źródło
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ć).
źródło
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.źródło
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.
źródło
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?
źródło
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.
źródło
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.
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.
źródło
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:
źródło