Функция криптографски хеш

Дефиниция на криптографската хеш функция

Криптографската хеш функция е вид алгоритъм, който може да се изпълнява върху част от данните, като отделен файл или парола, за да се получи стойност, наречена контролна сума.

Основното използване на криптографска хеш функция е да се провери автентичността на част от данните. Два файла могат да бъдат сигурни, че са идентични само ако контролните суми, генерирани от всеки файл, използващи същата криптографска хеш функция, са идентични.

Някои често използвани криптографски хеш функции включват MD5 и SHA-1 , въпреки че съществуват и много други.

Забележка: Криптографските хеш функции често се наричат ​​просто кратко, но това не е технически коректно. Функцията за хеш е по-общ термин, който обикновено се използва, за да обхване функциите на криптографски хеш, заедно с други видове алгоритми, като проверки за циклични съкращения.

Функции на криптографските хешове: случай на използване

Да приемем, че изтегляте най- новата версия на браузъра Firefox . По каквато и да е причина, трябва да го изтеглите от сайт, различен от Mozilla. Ако не сте хоствани на сайт, на който сте се научили да се доверявате, бихте искали да сте сигурни, че инсталираният файл, който току-що сте изтеглили, е точно същото, което Mozilla предлага.

Използвайки калкулатор за контролна сума , изчислявате контролна сума, като използвате конкретна криптографска хеш функция (кажете SHA-2) и след това я сравните с тази, публикувана на сайта на Mozilla.

Ако те са равни, тогава можете да сте сигурни, че изтеглянето, което имате, е онази, която Mozilla ви е предназначила.

Вижте какво представлява контролен маркер? за повече от тези специални калкулатори, плюс повече примери за използването на контролни суми, за да сте сигурни, че файловете, които изтегляте, наистина са това, което сте очаквали да бъдат.

Могат ли криптографските хеш функции да бъдат обърнати?

Криптографските хеш функции са предназначени да предотвратят възможността за обръщане на контролните суми, които създават обратно в оригиналните текстове.

Въпреки това, въпреки че са практически невъзможни да се обърнат, това не означава, че те са гарантирани 100% за защита на данните.

Нещо, наречено дъга, може да се използва, за да се разбере бързо текста на контролната сума. Таблиците за дъгата са основно речници, които показват хиляди, милиони или дори милиарди от тях, заедно със съответната им стойност на текста.

Макар че това не е технически обръщане на алгоритъма за криптографски хеш, може и да е, тъй като е толкова лесно да се направи. В действителност, тъй като няма дъга таблица може да изведе всяка възможна контролна сума съществува, те обикновено са само "полезни" за прости фрази ... като слаби пароли.

Ето една опростена версия на таблица с дъга, за да покажете как би могло да се работи при използване на 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. Колкото е по-голям броят на знаците, които има контролната сума, толкова по-малко вероятно е да има сблъсък, уникални стойности.