Криптографска хаш функција

Криптографска хаш дефиниција на функција

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

Главната употреба на криптографската хаш-функција е да ја потврди автентичноста на едно парче податоци. Двата датотеки може да бидат сигурни дека се идентични само ако контролните сумми генерирани од секоја датотека, користејќи ја истата криптографска хаш функција, се идентични.

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

Забелешка: криптографските хаш-функции често се нарекуваат кратки, но тоа не е технички исправно. Хаш-функцијата е повеќе генерички термин кој обично се користи за да ги опфати криптографските хаш-функции заедно со други видови на алгоритми како циклични проверки на вишок.

Криптографски хаш-функции: употреба

Да речеме да ја преземете најновата верзија на прелистувачот Firefox . Од која било причина, требаше да ја преземете од некоја друга локација освен Mozilla. Не е хостиран на страница што сте научиле да му верувате, би сакале да бидете сигурни дека инсталационата датотека која штотуку ја преземате е иста работа што Mozilla нуди.

Користејќи го калкулаторот за проверка на сума , ја пресметувате контролната сума со одредена криптографска хеш функција (велат SHA-2), а потоа споредете ја со онаа објавена на страницата на Mozilla.

Ако тие се еднакви, тогаш може да биде разумно сигурни дека преземањето што го имате е оној што Мозила сакаше да го имате.

Види Што е проверка? за повеќе за овие специјални калкулатори, плус повеќе примери за користење на контролни сумми за да бидете сигурни дека датотеките што ги преземате навистина се она што го очекувате.

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

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

Сепак, иако тие се практично невозможно да се смени, тоа не значи дека 100% се загарантирани за заштита на податоците.

Нешто што се нарекува табла со виножито може да се искористи за брзо да се открие чист текст на контролна сума. Табелите на Виножито се во основа речници кои наведуваат илјадници, милиони, па дури и милијарди од нив, заедно со нивната соодветна вредност на чист текст.

Иако ова не е технички обратен криптографски хаш алгоритам, тоа би можело да биде, бидејќи тоа е толку едноставно да се направи. Во реалноста, бидејќи ниедна табла за виножито не може да ја наброи секоја можна проверка на постоење, тие се обично само "корисни" за едноставни фрази ... како слаби лозинки.

Еве една поедноставена верзија на виножито за да се покаже како би се работело кога се користи SHA-1 криптографската хеш функција:

Обичен текст SHA-1 Проверка
12345 8cb2237d0679ca88db6464eac60da96345513964
лозинка1 e38ad214943daad1d64c102faec29de4afe9da3d
ilovemydog 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. Колку е поголем бројот на знаци што ги има контролната сума, толку е помала веројатноста дека ќе дојде до судир, бидејќи обезбедува повеќе простор за уникатни вредности.