- Регистрация
- 26.12.19
- Сообщения
- 152
- Онлайн
- 7д 10ч 45м
- Сделки
- 0
- Нарушения
- 0 / 1
Если вы когда-нибудь читали что-нибудь о биткойнах, паролях или проверяющем программном обеспечении, то встречали слово «хэш». Хэш - это, по сути, просто отпечаток пальца заданных данных (вводные данные), независимо от того, является ли этот ввод файлом или строкой текста. Самая важная вещь, которую нужно понимать при хэшировании, это то, что если вы сделаете какие-либо изменения в вводе, независимо от того, насколько они незначительны, хэш (отпечаток) изменится полностью. И наоборот, если вы хэшируете один и тот же вход несколько раз, вы всегда получите один и тот же хэш (выход). Это чрезвычайно полезно. Например, если вы хотите отправить кому-то файл и убедиться, что он получил его в точности таким как вы отправили, можно создать хэш этого файла, отправить ему хэш через другой канал, а затем получатель хэширует полученный файл и сравнит его с хэшем, который он получил от вас отправили. Если хэш отличается, то файл был кем-то изменен, а значит сам канал связи скомпрометирован.
Другим важным свойством хэшей является то, что получив хэш вам остается лишь догадываться чем являлись входные данные, на самом деле, вы не сможете определить, является ли данный хэш результатом хэширования фильма или пароля. Вот почему хэши считаются формой одностороннего шифрования, что означает, что зная результат не ясно чем это являлось изначально.
Это вторая полезная функция для хэшей, которая заключается в защите паролей (первая полезная функция - проверка файлов). Например, добросовестные разработчики программного обеспечения никогда не хранят ваш пароль в открытом виде, ведь существует риск взлома, а этот пароль может использоваться на других сервисах (сайтах). Поэтому веб-сайт, - применит функцию хэширования к вашему паролю и сохранит ее результат (хэш) у себя в таблице. Веб-сайт может по-прежнему проверять, что у вас правильный пароль (неправильный пароль создаст другой хэш), даже не зная его.
Однако для этого хэши также должны быть фиксированной длины. Другими словами, хэш строки из десяти слов должен иметь ту же длину, что и хэш строки из шестидесяти слов или файла фильма размером 45 ГБ. Например, хэширование слов «теневой форум» с использованием алгоритма хэширования MD5 приводит к хэшу fa3b66a90e779aa991c25570fbcdff49, в то время как хэширование одного из моих zip-файлов размером 12 ГБ приводит к хэшу fe1cefe33df394fc565214cb96e6228f. Конечно, некоторые алгоритмы хэширования длиннее других. MD5 является довольно коротким хэш-алгоритмом по сравнению с SHA512.
Преимущество использования более длинного хэша состоит в том, что он производит больший отпечаток для проверки, поскольку иногда два разных входа могут создавать одинаковые выходные данные. Это известно как столкновение, и более длинный хэш с меньшей вероятностью вызовет столкновение, чем более короткий хэш. С учетом вышесказанного практически нет необходимости беспокоиться о коллизиях для большинства современных алгоритмов хэширования, однако при использовании MD5 это возможно (в теории), но на практике вас скорее ударит молния во время хэширования, чем полученный хэш вызовет столкновение.
Тем не менее, все хэши могут быть взломаны, по крайней мере теоретически. Но если предположить, что алгоритм хэширования, который вы используете, спроектирован правильно, скорость, с которой вы можете взломать хэш (то есть выяснить, каким был исходный ввод), ограничена скоростью, с которой ваш компьютер может делать случайные предположения. Из-за способа, которым работает хэширование, невозможно сделать это для больших файлов. С другой стороны, для небольших вводов, таких как пароли, современный компьютер может делать миллиарды догадок каждую секунду. Именно поэтому невероятно важно использовать длинный и надежный пароль.
Тезисно:
Другим важным свойством хэшей является то, что получив хэш вам остается лишь догадываться чем являлись входные данные, на самом деле, вы не сможете определить, является ли данный хэш результатом хэширования фильма или пароля. Вот почему хэши считаются формой одностороннего шифрования, что означает, что зная результат не ясно чем это являлось изначально.
Это вторая полезная функция для хэшей, которая заключается в защите паролей (первая полезная функция - проверка файлов). Например, добросовестные разработчики программного обеспечения никогда не хранят ваш пароль в открытом виде, ведь существует риск взлома, а этот пароль может использоваться на других сервисах (сайтах). Поэтому веб-сайт, - применит функцию хэширования к вашему паролю и сохранит ее результат (хэш) у себя в таблице. Веб-сайт может по-прежнему проверять, что у вас правильный пароль (неправильный пароль создаст другой хэш), даже не зная его.
Однако для этого хэши также должны быть фиксированной длины. Другими словами, хэш строки из десяти слов должен иметь ту же длину, что и хэш строки из шестидесяти слов или файла фильма размером 45 ГБ. Например, хэширование слов «теневой форум» с использованием алгоритма хэширования MD5 приводит к хэшу fa3b66a90e779aa991c25570fbcdff49, в то время как хэширование одного из моих zip-файлов размером 12 ГБ приводит к хэшу fe1cefe33df394fc565214cb96e6228f. Конечно, некоторые алгоритмы хэширования длиннее других. MD5 является довольно коротким хэш-алгоритмом по сравнению с SHA512.
Преимущество использования более длинного хэша состоит в том, что он производит больший отпечаток для проверки, поскольку иногда два разных входа могут создавать одинаковые выходные данные. Это известно как столкновение, и более длинный хэш с меньшей вероятностью вызовет столкновение, чем более короткий хэш. С учетом вышесказанного практически нет необходимости беспокоиться о коллизиях для большинства современных алгоритмов хэширования, однако при использовании MD5 это возможно (в теории), но на практике вас скорее ударит молния во время хэширования, чем полученный хэш вызовет столкновение.
Тем не менее, все хэши могут быть взломаны, по крайней мере теоретически. Но если предположить, что алгоритм хэширования, который вы используете, спроектирован правильно, скорость, с которой вы можете взломать хэш (то есть выяснить, каким был исходный ввод), ограничена скоростью, с которой ваш компьютер может делать случайные предположения. Из-за способа, которым работает хэширование, невозможно сделать это для больших файлов. С другой стороны, для небольших вводов, таких как пароли, современный компьютер может делать миллиарды догадок каждую секунду. Именно поэтому невероятно важно использовать длинный и надежный пароль.
Тезисно:
- Хэши принимают входные данные и обеспечивают выход фиксированной длины.
- Легко узнать выходные данные, если у вас есть только входные, но невероятно сложно определить входные, имея только выходные.
- Если вы можете определить входные данные из выходных быстрее, чем просто сделать несколько случайных предположений, алгоритм хэширования считается слабым.
- Хэши могут быть полезны как для проверки того, что файлы не изменились, так и для защиты паролей. Но это всего лишь два распространенных способа использования хэшей из множества других.