Криптографската хеш функция е алгоритъм, който може да се изпълнява от данни като отделен файл или парола, за да се получи стойност, наречена контролна сума.
Основното използване на криптографска хеш функция е да се провери автентичността на част от данните. Два файла могат да се приемат за идентични само ако контролните суми, генерирани от всеки файл, използващи същата криптографска хеш функция, са идентични.
Някои често използвани криптографски хеш функции включват MD5 и SHA-1, въпреки че съществуват и много други.
Криптографските хеш функции често се наричат "хеш функции", но това не е технически коректно. Функцията хеш е генерично понятие, което обхваща криптографски хеш функции заедно с други видове алгоритми, като проверки на циклични съкращения.
Функции на криптографските хешове: случай на използване
Кажете, че изтегляте най-новата версия на браузъра Firefox. По някаква причина е необходимо да го изтеглите от сайт, различен от Mozilla. Тъй като не се хоства на сайт, на който сте се научили да се доверявате, бихте искали да сте сигурни, че инсталираният файл, който току-що сте изтеглили, е точно същият като този, който Mozilla предлага.
Използвайки калкулатор за контролна сума, изчислявате контролна сума, използвайки специфична криптографска хеш функция, като например SHA-2, и след това я сравнявате с тази, публикувана на сайта на Mozilla. Ако те са еднакви, можете да сте сигурни, че изтеглянето, което имате, е тази, която Mozilla ви е предназначила.
Могат ли криптографските хеш функции да бъдат обърнати?
Криптографските хеш функции са предназначени да предотвратят възможността за обръщане на контролните суми, които създават обратно, към оригиналните текстове. Въпреки това, въпреки че те са практически невъзможни да се обърнат, те не са 100% гарантирани за защита на данните.
Хакерите могат да използват таблица с дъга, за да разберат обикновения текст на контролна сума.
Таблиците с дъга са речници, които съдържат хиляди, милиони или дори милиарди контролни суми заедно със съответната стойност на обикновен текст.
Макар че това не е технически обръщане на криптографския хеш алгоритъм, това може да бъде, тъй като е толкова лесно да се направи. В действителност, тъй като няма дъга таблица може да изброява всички възможни checksum съществуват, те обикновено са полезни само за прости фрази като слаби пароли.
Ето една опростена версия на таблица с дъга, за да покажете как би могло да се работи при използване на SHA-1 криптографска хеш функция:
Обикновен текст | SHA-1 Checksum |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
password1 | e38ad214943daad1d64c102faec29de4afe9da3d |
обичам кучето си | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Хакерът трябва да знае кой криптографски алгоритъм за хеш бе използван за генериране на контролните суми, за да се разберат стойностите.
За допълнителна защита някои уеб сайтове, които съхраняват потребителски пароли, изпълняват допълнителни функции по алгоритъма за криптографски хеш след генерирането на стойността, но преди да бъдат съхранени. Този процес създава нова стойност, която само уеб сървърът разбира и не съответства на оригиналната контролна сума.
Например, след въвеждане на парола и генериране на контролна сума, тя може да бъде разделена на няколко части и пренаредена, преди да бъде съхранена в базата данни с пароли, или някои символи могат да бъдат заменени с други. При опит за удостоверяване на следващия път, когато потребителят се включи, уеб сървърът обръща тази допълнителна функция и оригиналната контролна сума се генерира отново, за да се потвърди, че паролата на потребителя е валидна.
Приемането на тези стъпки ограничава полезността на хакване, при който всички контролни суми са откраднати. Идеята е да се изпълни функция, която е неизвестна, така че ако хакерът знае криптографския хеш алгоритъм, но не и обичайния, тогава познаването на контролните суми на паролата е безполезно.
Пароли и криптографски хеш функции
Базата данни записва потребителски пароли по начин, подобен на таблица с дъга. Когато въведете паролата си, контролната сума се генерира и сравнява с тази, която се записва с вашето потребителско име. След това получавате достъп, ако двамата са идентични.
Като се има предвид, че криптографската хеш функция създава нереверсивна контролна сума, е безопасно да направите паролата си толкова проста 12345, вместо 12@34$5, просто защото самите контролни суми не могат да бъдат разбрани? Не, и ето защо.
Тези две пароли са невъзможни за дешифриране просто като се погледнат само контролните суми:
MD5 за 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 за 12 @ 34 $ 5: a4d3cc004f487b18b2ccd4853053818b
На пръв поглед може да мислите, че е добре да използвате някоя от тези пароли. Това е вярно, ако нападателят се опита да разбере паролата ви, като познае контролната сума MD5, която никой не прави, но не е вярно, ако се извърши груба сила или речник на атака, което е обща тактика.
Една атака на груба сила се случва, когато се вземат множество произволни израстъци при познаването на паролата. В този случай би било лесно да се досетите 12345, но доста трудно е да се разбере случайно другото. Атака на речника е подобна в това, че нападателят може да опита всяка дума, число или фраза от списък с често срещани (и не толкова общи) пароли и12345 е една от тези общи пароли.
Въпреки че криптографските хеш функции генерират контролни суми от трудно до невъзможно, трябва да използвате сложна парола за всичките си онлайн и местни потребителски акаунти.
Повече информация за функциите на криптографската хеш
Може да изглежда, че криптографските хеш функции са свързани с криптиране, но двете работят по различни начини.
Шифроването е двупосочен процес, при който нещо е криптирано, за да стане нечетирано и след това декриптирано по-късно, за да бъде използвано нормално отново. Можете да шифровате файловете, които сте съхранили, така че всеки, който има достъп до тях, да не може да ги използва, или да използвате криптиране на файлово прехвърляне, за да шифровате файлове, които се движат по мрежа, като тези, които качвате или изтегляте онлайн.
Криптографските хеш функции работят по различен начин, тъй като контролните суми не са предназначени да бъдат обръщани със специална парола за разчистване. Единствената цел на криптографските хеш функции е да се сравнят две части от данните, като например при изтегляне на файлове, съхраняване на пароли и извличане на данни от база данни.
Възможно е криптографската хеш функция да генерира една и съща контролна сума за различни данни. Когато това се случи, това се нарича сблъсък, което е огромен проблем, като се има предвид, че цялата точка на криптографската хеш функция е да се правят уникални контролни суми за всеки вход в нея.
Сблъсъците могат да възникнат, защото всяка криптографска хеш функция произвежда стойност с фиксирана дължина, независимо от входните данни. Например, криптографската хеш функция MD5 генерира 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 и e10adc3949ba59abbe56e057f20f883e за три напълно различни блока от данни.
Първата контролна сума е от 12345, Втората е генерирана от над 700 букви и цифри, а третата е от 123456.
И трите входа са с различна дължина, но резултатите винаги са само 32 знака, откакто се използва контролната сума MD5.
Няма ограничение за броя контролни суми, които биха могли да бъдат създадени, защото всяка малка промяна във входа се очаква да доведе до напълно различна контролна сума. Тъй като има ограничение за броя контролни суми, които една криптографска хеш функция може да произведе, винаги има вероятност да срещнете сблъсък.
Ето защо са създадени други криптографски хеш функции. Докато MD5 генерира стойност от 32 знака, SHA-1 генерира 40 знака, а SHA-2 (512) генерира 128. Колкото по-голям е броят на знаците, които има контролната сума, толкова по-малко вероятно е да има сблъсък.