Aktualny czas:0:00Całkowity czas trwania:10:14
0 punktów energii
Uczysz się do testu? Skorzystaj z tych 8 lekcji na temat Pieniądze, bankowość i banki centralne.
Zobacz 8 lekcji
Transkrypcja filmu video (w języku angielskim)
Kryptograficzne funkcje skrótu są używane do tworzenia kryptograficznych algorytmów i protokołów. Znajdujš wiele zastosowań w dziedzinie zabezpieczania danych. Do popularnych kryptograficznych funkcji skrótu należy np. algorytm MD5, jego poprzednicy, jak m. in. MD4, oraz algorytmy takie jak SHA-256. Ten z kolei algorytm był poprzedzony przez SHA-1 itd. Mogliście też słyszeć o innych algorytmach, nieco mniej znanych, jak np. RIPEMD, BLAKE, Skein. Funkcje skrótu są elementami składowymi wielu aplikacji. Pierwsza aplikacja, w której zastosowano ten typ funkcji skrótu, dotyczyła tzw. podpisu cyfrowego. Jest on używany w wielu aplikacjach kryptograficznych, stanowi podstawę licznych protokołów w e-handlu, uczestniczy w generowaniu bitcoinów itd. Funkcje skrótu stosuje się też w protokołach uwierzytelniania wiadomości, w generowaniu liczb pseudolosowych, w zabezpieczaniu haseł, a nawet w szyfrowaniu. Prócz faktu, że sš komponentami podpisu cyfrowego, używa się ich także w innych obszarach protokołu Bitcoina. Najpierw wyjaśnię, czym jest kryptograficzna funkcja skrótu. Jak wskazuje nazwa, jest to funkcja skrótu, czyli haszująca. A to oznacza, że przyjmuje dane wejściowe i... Ta matematyczna funkcja, przekształcenie, przyjmuje specyficzne dane wejściowe, zwane wiadomościami. Długość wiadomości jest dowolna. Funkcja skrótu poddaje dane wejściowe przekształceniom matematycznym i zwraca jedną wartość wyjściową. Najczęściej nazywamy ją skrótem, choć spotkacie się też z nazwami "tag", "hasz", czy "odcisk palca". Określenie "skrót" jest najpopularniejsze. MD5, nazwa jednej z pierwszych funkcji skrótu, to "Message Digest 5" (skrót wiadomości). MD4 to "Message Digest 4" itd. Jak wspomniałem, wiadomość ma dowolny rozmiar: może być długa lub krótka - jak chcecie. Ale już dane wyjściowe (czyli skrót lub tag) długość majš okre lonš. Np. dla funkcji skrótu takiej jak... powiedzmy, SHA-256, skrót ma dokładnie 256 bitów długości. Zatem długość skrótu jest określona, a danych wejściowych - dowolna. W związku z tymi funkcjami chciałbym dodać, że są deterministyczne. Oznacza to, że dla danej wiadomości skrót zawsze będzie taki sam. Niemożliwe, by jedna wiadomość dała dwa skróty. Tradycyjne funkcje skrótu sš już długo używane w informatyce, np. w wielu aplikacjach obliczeniowych. Może wiecie, że tych funkcji używa się do tworzenia tablic mieszających. Ale podkreślam, że funkcje skrótu stosowane w tablicach mieszających nie muszą być takie same jak kryptograficzne funkcje skrótu. Kwalifikator "kryptograficzne" jest tu bardzo ważny. Zazwyczaj oznacza, że funkcja skrótu musi realizować określone cele. Chodzi o szczególne własności istotne w aplikacjach kryptograficznych, gdzie przywiązuje się wagę do bezpieczeństwa, prywatności, poufności i uwierzytelniania. Jedna z najważniejszych właściwości może wydać się wam oczywista. Arcyważną właściwością kryptograficznej funkcji skrótu jest duża wydajność obliczeniowa. To znaczy, że nie trzeba wiele czasu, by obliczyć skrót dla danej wiadomości. Jeśli chcecie otrzymaną wiadomość poddać przekształceniom, by uzyskać skrót, to przekształcenia nie powinny długo trwać. Komputer powinien załatwić to dość szybko. Wspomnę o problemie, który widziałem nie raz: ludzie piszą niewydajne funkcje skrótu, niemające nic wspólnego z kryptograficznymi funkcjami skrótu używanymi w aplikacjach kryptograficznych. Druga potrzebna właściwość, zwłaszcza przy podpisach cyfrowych, wiąże się z tym, że trudno znaleźć dwie wiadomości dające ten sam skrót. Dwie różne wiadomości, którym odpowiada jeden skrót. Właściwość tę nazywa się odpornością na kolizje. Trudno jest znaleźć parę kolidujących wiadomości. Innymi słowy, jeśli mamy dwie wiadomości, np. M1 i M2, to dane wyjściowe po zastosowaniu funkcji skrótu nigdy nie powinny być takie same. Nie powinno się zdarzyć, że skróty M1 i M2 uzyskane z tej funkcji będą identyczne. Zawsze powinny być różne. Zwróćcie uwagę na pewien fakt: w praktyce, oczywiście, ponieważ wiadomości mają dowolną wielkość, a wielkość skrótu jest określona, nie da się matematycznie zagwarantować, że dla dwu wiadomości skróty zawsze będą różne. Ale nie jest najważniejsze, jakie te skróty są. Byle było trudno o dwie różne wiadomości dające jeden skrót. Wiemy, że istnieją, bo przecież wiadomości dajš skończoną liczbš możliwych skrótów względnie małą w porównaniu z liczbą możliwych wiadomości. Ale przy tym zastrzeżeniu, powinno upłynąć bardzo dużo, astronomicznie dużo czasu, zanim uda się znaleźć dwie różne wiadomości dające ten sam skrót po zastosowaniu kryptograficznej funkcji skrótu. I trzecia sprawa: w wielu przypadkach może będziecie chcieli, żeby funkcja skrótu ukrywała informacje o danych wejściowych. Innymi słowy, gdy znany jest skrót, lepiej, żeby trudno było z niego wycisnąć coś przydatnego. Żadnych istotnych szczegółów! Nie chodzi mi nawet o samą wiadomość, ale np. o to, czy jest ona liczbą parzystą. Już takie rzeczy powinny być trudne do wywnioskowania ze skrótu. Coą tak prostego jak parzystość czy nieparzystość. Czwarta cecha, którą omówię, dotyczy odpowiedniej dystrybucji danych wyjściowych. Dane te powinny wyglądać jak wygenerowane losowo. Jakby były wynikami serii rzutów monetš; zostały wygenerowane w sposób nieprzewidywalny. Chodzi więc o to (spójrzmy na sprawę koncepcyjnie), by wydawało się, że rzucaliśmy monetami. Wynik powinien wyglądać na losowy. Kryptograficznš funkcję skrótu można by nazwać matematycznym odpowiednikiem maszynki do mięsa. Przyjmuje dane wejściowe i poddaje przekształceniom matematycznym tak, by skrót, rozpatrywany pod każdym względem, wyglądał na losowy i niezwiązany z danymi wejściowymi. Chciałbym pokrótce skomentować te własności. Łączą je wzajemne relacje. Np. w sytuacji, gdy skróty naprawdę wydają się niezwiązane z danymi wejściowymi, i naprawdę wyglądają na wygenerowane losowo, wskazuje to na dużš odporność na kolizje. Bo skoro skrótu nie da się przewidzieć i ukrywa on wszystkie informacje, to trudno będzie znaleźć dwie różne wiadomości dajšce ten sam tag. Czasami więc jedna własność wynika z innych. Muszę coś dodać: te własności, zarówno w praktyce, jak też pod względem mechanizmów matematycznych, spełniałyby nasze oczekiwania, ale nie ma gwarancji, że zawsze będą funkcjonować. Nie można wykluczyć sytuacji, że stworzycie funkcję skrótu, waszym zdaniem odporną na kolizje, a za rok ktoś to podważy, bo wymyśli lepszš metodę wykrywania kolizji. Może opracuje szybki sposób, żeby nie trzeba było szukać na piechotę. Okazuje się, że kryptografowie nie mają jeszcze metod matematycznych, które pozwoliłyby obejść niektóre z ograniczeń. Często więc przyjmujemy, że te schematy są bezpieczne, bo funkcjonują od dawna. I ostatnia sprawa. Celowo nie mówiłem do was językiem czystej matematyki. Własności funkcji można by opisać znacznie precyzyjniej. Mam jednak nadzieję, że dzięki temu filmikowi poczuliście, jaka ma być kryptograficzna funkcja skrótu, i nie blokuje was matematyczny formalizm.