22/04/2014

Cuda szyfrowania

Porady

Kryptograficzna funkcja skrótu – często określana po prostu jako skrót lub z angielskiego hashowanie – to algorytm matematyczny przemieniający dowolny blok danych w ciąg nowych znaków o stałej długości. Bez względu na długość danych wejściowych, ten sam rodzaj skrótu zawsze da wartość skrótu o tej samej długości.

hash

Zatem, według internetowego generatora skrótów SHA-1 (poza MD 5 i SHA-2 jest to jedna z najczęściej stosowanych funkcji skrótu w obliczaniu) skrót mojego imienia Brian wygląda tak: 75c450c3f963befb912ee79f0b63e563652780f0. Jak pewnie potwierdzi każdy inny Brian, słowo ‚brain’ to niewiarygodnie częsta pomyłka w przeliterowywaniu tego imienia. Naprawdę zdarza się ona bardzo często – pewnego razu otrzymałem swoje prawo jazy z przekręconym imieniem: „Brain Donohue”, ale to już inna bajka. Skrót SHA-1 dla wyrazu brain, znowu według internetowego generatora SHA-1, to: 8b9248a4e0b64bbccf82e7723a3734279bf9bbc4.

Jak widać, te dwa wyniki są całkiem inne, pomimo tego, że różnica między imieniem Brian i słowem określającym w języku angielskim organ centralnego systemu nerwowego polega na zamianie jedynie dwóch kolejnych samogłosek (‚ia’ zamiast ‚ai’). Idąc za ciosem: jeśli podam moje imię bez pierwszej dużej litery, generator SHA-1 znów zwróci całkiem inny wynik: 760e7dab2836853c63805033e514668301fa9c47.

Pewnie zauważyłeś, że wszystkie te skróty mają długość 40 znaków, co nie jest zaskoczeniem, bo w każdym przypadku dane wejściowe mają pięć znaków. Jednak bardziej zadziwiające jest to, że wprowadzając każde słowo z tej historii do generatora skrótów, zwrócił on następujący wynik: db8471259c92193d6072c51ce61dacfdda0ac3d7. Ten tekst to jakieś 1 637 znaków (ze spacjami) i został skondensowany – tak jak powyższe pięcioliterowe słowo – w 40-znakowy wynik. Mógłbyś skrócić przy pomocy SHA-1 zebrane prace Williama Shakespeare’a i wciąż miałbyś 40 znaków. Co więcej, nie istnieją dwa różne teksty, które dadzą ten sam wynik skrótu.

Oto zdjęcie – dzięki uprzejmości Wikimedia Commons – ilustrujące tę samą koncepcję dla tych, którzy wolą uczyć się wizualnie:

Cryptographic Hashing Explained

Do czego używane są skróty?

Dobre pytanie. Jednak odpowiedź nie jest bardzo konkretna: skróty kryptograficzne są wykorzystywane do bardzo wielu rzeczy.

Dla mnie i dla Ciebie najczęstszym przypadkiem, gdy wykorzystuje się tworzenie skrótów, jest generowanie haseł. Na przykład, jeśli zapomnisz swoje hasło do jakiegoś serwisu internetowego, prawdopodobnie będziesz musiał je zresetować. Wtedy zazwyczaj nie otrzymujesz hasła zwrotnego w postaci czystego tekstu. Dzieje się tak, ponieważ serwisy internetowe nie przechowują haseł jako czysty tekst, ale jego zaszyfrowaną wartość. W rzeczywistości serwis ten nie ma pojęcia, jakie jest Twoje prawdziwe hasło. No chyba że korzystasz z niewiarygodnie prostego hasła, dla którego wartość skrócona jest szeroko rozpoznawana.

Aby było jasne: jeśli otrzymasz swoje hasło w czystym tekście, oznacza to, że serwis online nie szyfruje Twojego hasła i jego administratorzy powinni się tego wstydzić.

Możesz sprawdzić to sam przy pomocy programu deszyfrującego hasła. Jeśli wygenerujesz skrót dla słabego hasła (typu „haslo” czy „123456”) i wprowadzisz go do wspomnianego programu, są szanse, że rozpozna on szyfr. W moim przypadku generator rozpoznał skróty dla ‚brain’ i ‚Brian’, ale nie skrót dla tego tekstu. Zatem integralność danych wyjściowych całkowicie zależy od danych wejściowych, które mogą być dosłownie wszystkim.

Według raportu TechCrunch opublikowanego w ostatnim miesiącu, Dropbox – popularna usługa przechowywania w chmurze – uniemożliwił jednemu ze swoich użytkowników podzielenie się zawartością chronioną przez Digital Millennium Copyright Act (DMCA). Użytkownik ten umieścił informację na Twitterze, że zablokowano mu udostępnienie pewnej zawartości, a Twitter dodatkowo podsycił atmosferę wywołaną przez ludzi denerwujących się, że Dropbox z pewnością szpera w zawartości użytkowników, nie spełniając stosownych zapisków w swojej polityce prywatności.

Oczywiście Dropbox nie przegląda zawartości użytkownika. Jak zauważono w artykule TechCrunch, w omawianym przypadku prawdopodobnie właściciel praw autorskich przepuścił skopiowane pliki (być może cyfrową przeróbkę piosenki lub filmu) przez funkcję skrótu. Wówczas wartość wyjściowa skrótu (czterdzieści znaków) została dodana do czegoś w rodzaju czarnej listy skrótów materiałów chronionych prawami autorskimi. Gdy użytkownik próbował podzielić się tym materiałem chronionym prawami autorskimi, automatyczny skaner Dropboxa porównał ją z czarną listą skrótów i uniemożliwił jej udostępnienie.

Zatem, możesz śmiało skracać hasła i pliki multimedialne, ale jakie inne możliwości oferują kryptograficzne funkcje skrótu? I znów odpowiedź jest taka, że funkcje skrótu oferują więcej, niż wiem, rozumiem lub umiałbym wytłumaczyć. Jednak istnieje jeszcze jedno zastosowanie hashowania, które jest nam bliskie tu, na Kaspersky Daily. Jest ono szeroko stosowane w praktyce wykrywania szkodliwego oprogramowania przez firmy antywirusowe, np. Kaspersky Lab.

W ten sam sposób studia i wytwórnie filmowe tworzą czarne listy skrótów służące do ochrony kopiowania danych. Istnieje również wiele czarnych list hashy związanych ze szkodliwym oprogramowaniem, z którego większość jest dostępna publicznie. Czarna lista skrótów tych szkodliwych programów – lub ich podpisów – składa się ze skróconych wartości szkodliwego oprogramowania lub skróconych wartości jego mniejszych i rozpoznawalnych komponentów. Z jednej strony, jeśli użytkownik znajdzie podejrzany plik, może on wprowadzić jego wartość skrótu do wielu publicznie dostępnych rejestrów lub baz danych szkodliwego oprogramowania, które poinformują go, czy plik jest szkodliwy. Z drugiej strony, jednym ze sposobów wykorzystywanych przez silniki antywirusowe do rozpoznawania i ostatecznie blokowania szkodników jest porównywanie skrótów plików ze swoimi własnymi (a także publicznymi) repozytoriami podpisów niebezpiecznego oprogramowania.

Kryptograficzne funkcje skrótu są także wykorzystywane do zapewnienia tak zwanej integralności wiadomości. Innymi słowy, możesz sprawdzić, czy jakaś wiadomość lub plik nie został zmieniony poprzez zbadanie danych sprzed oraz po transmisji danych. Jeśli są one identyczne, transmisja jest wiarygodna.