Хеш-сумма
Хеш-суммой (хешем, хеш-образом, хеш-кодом) называется значение хеш-функции на тех или иных данных.
В криптографии хеш-сумму иногда также называют дайджестом сообщения.
Применения
Значение хеш-суммы может использоваться для проверки целостности данных, их идентификации и поиска (например в p2p сетях), а также заменять собой данные, которые небезопасно хранить в явном виде (например, пароли, ответы на вопросы тестов и т. д.)
Запись
Явное значение хеш-суммы, как правило, записывается в шестнадцатеричном виде. Так, утилита md5sum, вычисляющая значение хеш-функции MD5 от заданного файла, выдаёт результат в виде строки из 32-х шестнадцатеричных цифр — например, 026f8e459c8f89ef75fa7a78265a0025.
См. также
- Хеш-функции
- Хеширование
- Криптография
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое «Хеш-сумма» в других словарях:
Хеш — Хеш: Хеш сумма значение хеш функции. Хеш символ «#», также называемый «решёткой», «диезом», «шарпом», «знаком номера», «октоторпом» или «знаком фунта». Хеш структура данных «хеш таблица», вариант реализации ассоциативного… … Википедия
Хеш-кодирование — Хеширование (иногда хэширование, англ. hashing) преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш функциями или функциями свёртки, а их результаты… … Википедия
Хеш-функция — Хеширование (иногда хэширование, англ. hashing) преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш функциями или функциями свёртки, а их результаты… … Википедия
Коллизия хеш-функции — Коллизией хеш функции называется два различных входных блока данных и таких, что Коллизии существуют для большинства хеш функций, но для «хороших» хеш функций частота их возникновения близка к теоретическому минимуму. В некоторых частных случаях … Википедия
Криптографические хеш-функции — Хеширование (иногда хэширование, англ. hashing) преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш функциями или функциями свёртки, а их результаты… … Википедия
Контрольная сумма — Контрольная сумма некоторое значение, рассчитанное по набору данных путём применения определённого алгоритма и используемое для проверки целостности данных при их передаче или хранении. Также контрольные суммы могут использоваться для… … Википедия
Хэш — Хеш сумма значение хеш функции Хеш символ #, также называемый «решёткой», «диезом», «знаком номера», «октоторпом» или «знаком фунта». Хеш так называют ассоциативный массив; Хеш жаргонное название гашиша … Википедия
EDonkey2000 (сеть) — Эта статья о файлообменной сети. Для статьи о клиенте, см. EDonkey2000 (программа). eDonkey2000, eDonkey, eD2k, мул файлообменная сеть, построенная по принципу P2P на основе сетевого протокола прикладного уровня MFTP. Распространённые в… … Википедия
eDonkey2000 (сеть) — У этого термина существуют и другие значения, см. EDonkey2000. Эта статья о файлообменной сети. Для статьи о клиенте, см. EDonkey2000 (программа). eDonkey2000, eDonkey, eD2k файлообменная сеть, построенная по принципу P2P на основе сетевого … Википедия
SHA-1 — Криптографическая хеш функция Название SHA 1 Создан 1995 Опубликован 1995 Размер хеша 160 бит Число раундов 80 Тип хеш функция Secure Hash Algorithm 1 алгори … Википедия
Хэширование в Blockchain.Что такое хэш сумма.
Криптографическая хеш-функция, хеш, хеширование,об этом вы сегодня много чего узнаете, а это важно для целостного понимания устройства работы блокчейна!
Слово хеш происходит от английского «hash», одно из значений которого трактуется как путаница или мешанина. Собственно, это довольно полно описывает реальное значение этого термина. Часто еще про такой процесс говорят «хеширование», что опять же является производным от английского hashing (рубить, крошить, спутывать и т.п.). Появился этот термин в середине прошлого века среди людей занимающихся обработках массивов данных и Хеш-функция позволяла привести любой массив данных к числу заданной длины. Проще всего хеширование представить как шифр. Берется какой-нибудь текст, шифруется по определенной системе, где на выходе получается билиберда. Эту билиберду можно превратить обратно в текст, если вы знаете, как именно билиберду шифровали. Например, берем цифру 5, шифруем ее, например умножаем на 4, и получаем 20. Если разделить 20 на 4, получим исходную информацию — 5.В данном случае ключем к расшифровке является цифра 4 Буквенные шифры работают сложнее. И чтобы зашифровать текст Можно каждой букве присвоить свой номер, и таким образом зашифровать текст в виде набора чисел. Также можно сдвинуть алфавит на два символа влево и получить трудночитаемый набор букв. Или же записать текст азбукой Морзе и получить последовательность точек и тире. Кстати, азбука Морзе вам ничего не напоминает? Если Морзе кодировал буквы и цифры последовательностью точек и тире, то наши компьютеры кодируют все единицами и нулями. Одно значение (единица или ноль) называется битом. Если присвоить каждой букве латинского алфавита порядковый номер, то для передачи одной буквы понадобиться всего 4 бита. Учитывая пробелы, прописные и заглавные буквы и разные символы, получается 7 бит или один байт с нулем в начале. Так Почему же для передачи и хранения цифровых данных выбрали аналог морзянки, а не что-то вычурное? Потому что компьютеры работают на электричестве. Если по кабелю не течет ток — компьютер регистрирует ноль. Если течет — единицу. Все просто. А при мощности современного интернета, по кабелям можно надежно передавать 100 миллионов бит в секунду и даже больше Но, что будет, если компьютер на мгновение подвиснет и пропустит несколько единичек и нулей? Информация, которую он примет после подвисания, может оказаться нечитаемой. Для расшифровки битов в понятные нам буквы нужен полный и последовательный набор битов, иначе вместо оригинального текста компьютер получит нечитаемый массив из битов.
Что такое хэш сумма.
Вот тут как раз и необходимо хеширование, а точнее нужна хеш-сумма Например: У нас есть проблема — мы получили зашифрованный текст и у нас на руках есть ключ к дешифровке, то мы никак не можем узнать, правильно ли зашифрован текст и ничего ли не потеряли при передаче шифра. Ведь если потеряли — то при дешифровке получится билиберда, не имеющая ничего общего с оригинальным текстом. Самый простой способ проверить шифр на «потеряшек» — перед шифрованием посчитать количество символов в шифруемом тексте. Возьмем знаменитое «Lorem ipsum». В фразе 11 символов, включая пробел. Как помним, одна буква латинского алфавита кодируется семью битами. Значит двоичный код Lorem ipsum состоит из 77 бит. Передаем зашифрованный текст на другой компьютер, добавляем послание с размером исходного файла. Само Послание обрамляется специальной комбинацией битов (так называемым флагом), которую компьютер воспринимает как установку «Должно прийти 77 бит информации, пересчитайте». Получатель проверяет принятый текст, считает биты. Если их 77 — начинает декодировать текст. Если меньше, тогда понимает, что файл был получен не полностью и просит переслать текст еще раз. Информация о количестве бит — самый простой пример хеширования, а точнее — хеш-суммы. Хеширование позволяет установить, соответствует ли полученный файл оригиналу.То есть простые хэш-функции (не надежные, но быстро рассчитываемые) применяются при проверке целостности передачи пакетов по протоколу TCP/IP (и ряду других протоколов и алгоритмов, для выявления аппаратных ошибок и сбоев — это так называемое избыточное кодирование). Если рассчитанное значение хеша файла совпадает с хешем отправленным вместе с пакетом информации, а этот хеш еще называют контрольной суммой, то значит потерь по пути не было значит можно переходить к следующему пакету ифнормации. А это, ведь на минутку, основной протокол передачи данных в сети интернет. И Без него никуда.Хеширование так-же часто используют для доступа к сайтам и серверам по логину и паролю . Согласитесь, что хранить пароли в открытом виде для их сверки с теми что вводят пользователи, довольно ненадежно, ведь их могут похитить. Поэтому сайты хранят не пароли, а хеши всех паролей. Пользователь вводит символы своего пароля, мгновенно рассчитывается хеш-сумма введенного пароли и сверяется с тем хешем, что есть в базе. Это Надежно и очень просто. Поэтому даже администраторы нормальных ресурсов и сами не знают ваших паролей, и Обычно для такого типа хеширования используют сложные функции с очень высокой криптостойкостью, чтобы по хэшу нельзя было бы восстановить пароль.
Давайте еще рассмотрим пример хеширования посложнее.Для этого сначала разберем один вопрос, а именно В чем проблема способа с подсчетом количества бит как мы с вами рассмотрели выше? А проблема в том, что под 77 бит можно подогнать и «Lorem ipsum», и «Здравствуй!» и любые другие одинадцать символов. Простой подсчет количества бит информации не позволяет проверить полученный текст на полное соответствие оригиналу. Совпадение хеш-суммы разных файлов называется коллизией и Плохой алгоритм хеширования дает большое количество коллизий. Наш алгоритм подсчета количества бит — плохой. Значит, хеш-сумму надо считать иначе. Хороший алгоритм в практическом применении не дает коллизий вообще. Это значит, что любому тексту, картинке или файлу можно присвоить уникальный идентификатор (то есть, хеш-сумму), который рассчитывается исходя из самого файла. И желательно, чтобы хеш-сумма была небольшой, и одинакового размера для всех файлов, чтобы уменьшить риск потерять биты самой хеш-суммы во время ее передачи. Алгоритмов много, но нас пока интересует лишь один — SHA-256, который используется в Биткоине и сотнях других криптовалют. Теперь рассмотрим алгоритм SHA-1, ведь так будет проще понять алгоритм SHA-256 SHA-1 придумали в Агенстве Национальной Безопасности США, небезызвестном NSA. Алгоритм предназначался для цифровой подписи документов и проверки их подлинности. Получатель принимал документ и подпись в виде хеш-суммы оригинала. Затем самостоятельно считал хеш-сумму принятого документа и сравнивал ее с полученной подписью. Если хеш-суммы совпадают — значит полученный документ полностью идентичен оригинальному. SHA-1 работает так. Исходный файл разбивается на блоки по 512 бит в каждом. Затем алгоритм определяет четыре ключа, которые не меняются в процессе хеширования, и каждый из ключей весит по 32 бита и необходим для проведения хеширования. Определяются пять случайных переменных, по длине равных ключам. Первый блок преобразуется в 80 32-х битных слов, которые состоят из цифр и первых 6 букв латинского алфавита — A, B, C, D, E и F. 80 слов разбивают на 4 части по 20 слов и каждую часть прогоняют по хитрой формуле с использованием четверых постоянных ключей и пяти переменных. В итоге получают пять слов, каждое состоит из 32 бит. Эти же слова используются как переменные для хеширования следующего блока из 512 бит. Таким образом, хеш-сумма каждого блока напрямую завязана на хеш-сумму предыдущего блока, кроме первого и При хешировании каждого блока используются одинаковые ключи и хеш-сумма предыдущего блока. Таким образом Хеш-сумма любого файла это 5 слов по 32 бита или 160 бит в целом. Теперь об интересном. Зная постоянные ключи, которые использовались для хеширования файла, можно из тех 160 бит восстановить весь документ, просто решая задачу с конца. Это называется «обратным преобразованием». И вообще-то алгоритмы хеширования стараются придумать так, чтобы это самое обратное преобразование было как можно более сложным процессом. В упрощенном виде обратное преобразование выглядит так: Например У нас есть файл (скажем число 4) и ключ (напрмиер число 5). Мы хешируем файл, используя ключ (то есть, умножаем 4 на 5), получаем хеш-сумму — число 20. Если мы знаем хеш-сумму, ключ, по которому хешировали файл, и алгоритм хеширования, то можем просто посчитать формулу в обратном порядке — поделить 20 на 5 и получим наше исходное значение файла А теперь, вопрос?. Действительно ли хеш-сумма по SHA-1 полностью соответствует оригинальному файлу или кажется случайным набором букв и цифр? Что будет, если чуть-чуть изменить исходный файл? Вот, сравните. Отличия — во второй фразе букву P я написал заглавной. Такая вот кардинальная перемена результата при малейшем изменении исходного файла получила название «эффекта лавины» или лавинный эффект. Алгоритм SHA-1 оказался неплохим, но все же уязвимым к коллизиям и обратному преобразованию, хотя восстановление файла по его хешу без знания ключей займет в лучшем случае несколько миллиардов лет. Но Когда на горизонте замаячили квантовые компьютеры, от алгоритма SHA-1 отказались все крупные IT компании, включая Гугл и Яндекс. Да и создатель алгоритма, нацбезопасность США, начала думать над чем-то понадежней. На смену SHA-1 пришел SHA-2. SHA-2 работает по схожему принципу, но использует только один ключ и более хитрые формулы для хеширования. Базовый принцип остался тем же — файл разбивается на блоки, хеш-сумма каждого блока основана на хеш-сумме предыдущего.
Хэширование Bitcoin SHA-256
Криптовалюты Биткоин же работает на алгоритме SHA-256, некой модификации сырого SHA-2. Только на выходе получается не 5 слов, как в первой версии, а целых 8. Восемь 32-х битных слов образуют хеш-сумму размером 256 бит — отсюда и название алгоритма. SHA—256 это классический алгоритм для криптовалют: на нем построена не только основная криптовалюта — Bitcoin, Но и Соответственно в форках bitcoin таких как Bitcoin Cash, Bitcoin Gold, Bitcoin Diamond. используется этот же алгоритм Помимо этих монет, SHA—256 используется также в: * Steemit; * DigiByte; * PeerCoin; * NameCoin; * TeckCoin; * Ocoin; * Zetacoin; * EmerCoin.И многих других Также алгоритм SHA-256 используется как подпрограмма в криптовалюте Litecoin, а основным алгоритмом для майнинга там является Scrypt.Но эти все монеты темы совсем другой рубрики, поэтому просто продолжим говорить о хешировании. Давайте систематизируем кое-что из уже сказанного.В общем процесс хеширования — это череда математических воздействий которым подвергаются данные произвольной длины для преобразования на выходе в битовую строку фиксированной длины. И Каждый из алгоритмов работает по своему, но хорошая хеш-функция должна обладать следующими свойствами
- Как уже было сказано, функция эта должна уметь приводить любой объем цифровых двоичных данных к числу заданной длины (по сути это сжатие до битовой последовательности заданной длины хитрым способом).
- При этом малейшее изменение (хоть на один бит) входных данных должно приводить к полному изменению хеша., то есть к лавинному эффекту
- Также Хеш функция должна быть стойкой к обратной операции, т.е. вероятность восстановления исходных данных по хешу должна быть весьма низкой, хотя это сильно зависит от задействованных над задачей обратного преобразования вычислительных мощностей
- Еще В идеале хеш функция должна иметь как можно более низкую вероятность возникновения коллизий. Согласитесь, что не круто будет, если из разных массивов данных будут часто получаться одни и те же значения хэша
- Также Хорошая хеш-функция не должна сильно нагружать железо при своем исполнении. От этого сильно зависит скорость работы системы на ней построенной. И хеш функций много и всегда имеется компромисс между скоростью работы и качеством получаемого результата.
- И еще очень желательно, чтобы Алгоритм работы функции должен быть открытым, чтобы любой желающий мог бы оценить ее криптостойкость, т.е. вероятность восстановления начальных данных по выдаваемому хешу.
Все это обязательные условия хорошей хеш функции и Хеширование очень важно для работы блокчейна. Как вы возможно знаете, все, что записано в блокчейне, уже никак нельзя изменить или удалить. А все потому, что данные в блокчейн записываются в виде хеш-суммы всего блока. А хеш-сумма блока рассчитывается с использованием хеш-суммы предыдущего блока, то есть исходная информация блока состоит не только от его содержания, но и в том числе и из хеш суммы предыдущего блока и поэтому Малейшее изменение данных в старом блоке вызовет эффект лавины, и блокчейн просто отбросит блок со странной хеш-суммой. Именно поэтому никто и никогда не смог взломать Биткоин. И именно поэтому советуют подождать шесть подтверждений в сети, чтобы сформировалось шесть и больше блоков, ведь вероятность, что один майнер посчитает шесть и больше блоков ничтожно мала, поэтому чем больше прошло времени и подтверждений после транзакции в сети биткоин, тем надежнее можно считать эту транзакцию. И это все связано с майнингом, который так-же основан на хешировании.
Хэш-функция в повседневной жизни
Известно, что хэш-функция создает уникальный цифровой отпечаток из исходной информации. Итоговое хэширования информации называют хэш-суммой или просто хэшем.
Как же это работает? Хэш-функция берет определенную информацию, например, часть текста или пароль от вашего аккаунта, это может быть даже отдельный файл и преобразует эту информацию в строку определенной длины. Эта строка всегда будет иметь одинаковую длину вне зависимости от того, какого размера была входная информация. Существует достаточно много различных хеш- алгоритмов. Например, слово bitcoin, пропущенное через хэш алгоритм sha-256 будет выглядеть вот так.
Хэш-функции очень сильно отличаются от обычного шифрования.
Зашифровав какую-либо информацию через алгоритм AES вы всегда с помощью парольной фразы сможете ее расшифровать. Хэш-функции работают только в одну сторону. Пропустив какую-либо информацию через хэш-функцию, например, свой пароль, вы не сможете получить исходное значение информации, зная значение хэша. Это одно из требований к хэш-функциям. Хэш-функция должна быть однонаправленная. Позже мы разберем пример, для чего это нужно.
Второе основное требование для хэш-функций — фиксированный размер получаемого хэша, вне зависимости от введенной информации. Сейчас перед вами таблица с несколькими исходными данными и хэшами.
Как видите исходная информация разной длины, однако хэш имеет одинаковую длину. В любом из случаев следующее требование к хэш-функции — уникальность получаемого кэша и практически полное отсутствие коллизии. Что это значит? Это значит, что два разных набора информации не могут выдать одинаковое значение хэша.
Коллизии существуют для большинства хеш-функций, но в надежных хеш- функциях частота возникновения коллизии близка к теоретическому минимуму. Например, хэш-функция md5 сейчас стала абсолютно не устойчива к коллизии.
Компьютеры стали настолько мощные, что найти коллизию за приемлемое время не составит труда. Прямо сейчас в интернете можно найти генератор к коллизии для хэш-функции md5. Чуть позже мы объясним, как коллизии могут быть использованы злоумышленникам. Хэш-функция также должна быть быстрой и быстро хэшировать исходную информацию. Но, это так же является и уязвимостью для «брутфорса», так чем быстрее работает хэш-функция, тем больше она уязвима для полного перебора. Для хорошей криптографической хэш-функции также важно наличие лавинного эффекта. Что это значит? Это значит, что при изменении даже одного байта в исходной информации, полученный хеш поменяется кардинально.
Как же будет выглядеть идеальная криптографическая хэш-функция? Идеалом криптографической хэш-функции можно считать ту функцию, которой присущи следующие пять свойств:
- Детерминированность — одинаковые входные данные всегда дают одинаковое значение хэша.
- Высокая скорость вычисления хэш-функций из любого сообщения.
- Однонаправленность — невозможно получить исходное сообщение, зная его хэш, за исключением попыток полного перебора.
- Наличие лавинного эффекта – минимальное изменение в исходном сообщении приводит к кардинальному изменению хэша.
- Невозможность найти одинаковое значение хэша для двух разных сообщений.
Давайте рассмотрим простой пример, как используются хэш-функции, когда вы
регистрируетесь, например, в Вконтакте или другой социальной сети. Ваш логин и пароль пропускается через определенную хэш-функцию и значения хэша записываются в базу данных. После регистрации, когда вы используете логин и пароль для входа они опять пропускаются через хэш-функцию, и значение хэша сравнивается с тем значением хэша, которое было записано в базу данных.
Изначально, после вашей регистрации, если значения совпадают, система вас авторизует. Если значение хэша не совпадают, то выскакивает уведомление о том, что логин или пароль неверный. Здесь мы возвращаемся к основному требованию хэш-функции — однонаправленности. Потенциальные злоумышленники, взломав базу данных какой-то социальной сети получат значений хэшей, но не чистые логины и пароли. Именно из-за того, что хэш-функция однонаправленная, из нее нельзя получить исходные данные, такие как пароль и логин пользователя.
Тем не менее злоумышленник, получив хэши все-таки сможет узнать пароль некоторых пользователей. Для этого используется атака по «радужным» таблицам.
Злоумышленники используют заранее вычисленные хэши для простых и часто используемых паролей и сравнивают хэши в таблице с полученными хэшами из базы данных социальной сети. Но тут появляется одна такая проблема: если некоторые пользователи устанавливают одинаковый пароль, итоговый хэш паролей получается тоже одинаковый. Вы можете сказать, что маловероятно что кто-то будет использовать одинаковый пароль. Однако, вот таблицы самых популярных паролей за 2020 год которые используют пользователи в социальных сетях и других сервисах.
Чтобы не было проблем с одинаковым хешем, когда несколько пользователей используют одинаковый пароль, используется «соль».
Что такое «соль»? «Соль»- это строка данных которая пропускается через хэш-функции вместе с паролем.
Использование «соли» при хэшировании гарантирует то, что даже при одинаковых паролях значение хэша будет разное. Допустим, если Алиса и Боб используют одинаковый пароль qwerty. Хэш этих паролей будут кардинально отличаться из-за того, что была использована «соль».
В интернете есть огромное количество уже прочитанных заранее хэшей. Для самых популярных паролей, например, на сайте «crackstation» можно проверить, как это работает. Для начала давайте пропустим самый часто используемый пароль qwerty через хэш-функцию sha-256.
Получаем значение хэша. Это значение хэша вставляем на сайт «crackstation» и получаем результат qwerty. Это не значит, что хэш-функцию обратили и вычислили исходное значение. Это значит, что у этого сайта есть база данных с уже прочитанными хэшами для каждого простого и часто используемого пароля.
Но использование «соли» не гарантирует полную защиту от атак злоумышленников. Злоумышленники все еще могут перебирать значение хэша через «брутфорс» или же полный перебор. Злоумышленникам понадобится больше времени, так как надо будет перебирать еще и все возможные значения «соли». Но теоретически это возможно, так как основное требование хэш-функции — скорость хэширования. А как мы упоминали ранее, скорость хеширования не всегда является преимуществом, особенно когда это касается хранения паролей, чтобы защититься от «брутфорса».
Так используются специально замедленные хэш-функции, на вычисление которых уходит больше времени, чем на вычисление стандартных функций. Это функции: decrypt, sckrypt или argon2. Их использование для хранения паролей полностью нейтрализует возможный «брутфорс» (Brute-force Attack). Такие функции используются для создания секретного ключа, который состоит из пароля пользователя, «соли», и дополнительного параметра cost. Параметр cost необходим для защиты от «радужных таблиц».
Параметр cost определяет количество циклов, через который будет пропущена исходная информация и это замедляет процесс хэширования. Таким образом, атака полного перебора становится невозможной, так как процесс хэширования сильно замедлен и за приемлемое время не получится перебрать достаточное количество паролей и всевозможных комбинаций «соли».
Со временем компьютеры станут мощнее и атаки полного перебора на этот алгоритм смогут быстрее достигать своей цели. Для защиты от этого необходимо просто увеличить параметр cost, который определяет количество циклов.
Чем больше циклов, тем больше времени потребуется для хеширования исходной информации.
Давайте рассмотрим метод защиты данных, который используют сервис dropbox. Изначально dropbox берёт пароль пользователя и пропускают его через определенную простую хэш-функцию без использования «соли». И затем полученный хэш пропускается через функцию BCrypt с использованием «соли» и параметр cost величиной в 10 циклов. Это защищает от брутфорса (Brute-force Attack). Так в конечном итоге вся эта информация шифруется алгоритмом шифрования aes. Злоумышленнику придется вскрывать все эти слои защиты, чтобы добраться до нужной ему информации.
Однако, стоит отметить что слабые пароли все равно уязвимы. Длинный и надежный
Пароль, пропущенный через простую хэш-функция md5 будет сложнее подобрать
чем пароль из 6 символов, но пропущенный через функцию BCrypt с параметром cost в 25 циклов.
Хранение и защита паролей не единственная сфера где применяются хэш-функции. Они также применяются для проверки целостности файлов, как было сказано ранее. При малейшем изменении исходного файла его хэш-сумма кардинально изменяется. Как это может быть использовано? Самый простой пример: проверка программного обеспечения, скаченного с сайта разработчика. Большинство разработчиков программного обеспечения рядом со ссылкой на скачивание программы размещают хэш-сумму каждого из файлов. После загрузки ПО на свой компьютер, пользователь может сравнить хэши и убедиться в том, что файлы подлинные и не подвергались изменению. Это может быть также использовано для передачи файлов между двумя людьми, когда необходимо убедиться в том, что в процессе передачи файлов он не был изменен. Но здесь при использовании надежных или устаревших хэш-функций имеет место быть коллизионная атака, когда два разных документа имеют одинаковый хеш.
Как происходит коллизионная атака. Приведём пример. Ева создает два разных документа «а» и «б» имеющих одинаковое значение хэш суммы. Предположим, что Ева хочет обмануть Боба, выдав свой документ за документ Алисы. Ева отсылает документ Алисе, которая доверяет содержанию данного документа, подписывает его хэш и отсылает подпись Еве. Ева прикрепляет подпись документа «а» к документу «б» затем отправляет подпись и документ Бобу утверждая, что Алиса подписала этот документ. Поскольку электронная подпись сверяет лишь значение хэша документа «б», Боб не узнает о подмене.
С надежным криптографическими хэш-функциями такое провернуть невозможно, но с устаревший md5 это реально осуществить.
Хэш-функции также используются и в блокчейне, каждая транзакция в блокчейне биткоина содержит информацию о получателе и отправителе. О сумме транзакций, времени её отправки и так далее. Вся эта информация хэшируется и образуется «транзакшин ID». «Транзакшин ID» это хэш-сумма, которая используется для ее идентификации и проверки того, что эта транзакция произошла. Хэши также используются и в блоках в блокчейне. Каждый блок блокчейна, биткоина, содержит свой хэш и хэш предыдущего блока, что образует связанную цепочку.
Пример применения хэширования паролей в Python с помощью модуля BCrypt.
Модуль bcrypt в PyPi предлагает удобную реализацию BCrypt, которую мы можем установить через pip:
После того, как установили BCrypt с помощью pip, вы можете импортировать его в свой проект:
Возьмем «Passwordnew» в качестве примера пароля, чтобы показать его в использование BCrypt:
Хешируем зашифрованный пароль с помощью BCrypt:
Проверим, будет ли текстовый пароль допустимым паролем для нового хэша, который создали в примере:
Таким образом, для наглядности был проиллюстрирован процесс хеширования пароля на примере BCrypt.
Надеюсь, что у вас сложилось представление о том, что такое хэш-функция, как работает алгоритм хэширования и как это можно использовать.
Что такое хеш-сумма файла и как её замерять
Наверное не поверите, но до сих пор не знал, что такое хеш-сумма файла, зачем и как её замерять .
Нет, примерно конечно имел представление, но полностью в вопрос не вникал просто. Пришло время разобраться подробно самому в этом деле и рассказать все нюансы, как всегда — простым и понятным языком, с картинками.
Что такое хеш-сумма файла
Всё очень и очень просто с этим самым хешем — давайте возьмём два файла, с первого взгляда, совершенно одинаковых…
Допустим, что их скачал с разных сайтов. Как видите, совершенно одинаковое название и расширение, но кроме этого сходства, у этих инсталляторов может быть схожий до последнего байта размер.
Обычные рядовые пользователи даже не догадываются, что подобные «экзешники» являются практически простыми архивами.
Так вот, в этот файл (архив) очень легко подсунуть зловреда какого-нибудь (вирус) — они почти всегда маскируются под «правильный» файл, копируют не только название с расширением, но и размер даже.
Такой изменённый файл можно распространять в сети Интернет под видом официального, белого и пушистого.
Кстати, идеального антивируса не существует и ваш Защитник может подвести в любой момент, если не знали.
Ещё одна ситуация — выбрали и начали скачивание какой-либо программы, файла или архива через торрент? В таком случае, подсунуть маленький бездомный вирус ещё проще, ведь файл закачивается в компьютер крохотными частями, от огромного количества человек и собирается в кучу только у конечного пользователя.
Читайте также на сайте:
Как же проверить подлинность любого файла, как его идентифицировать со 100% гарантии? Сравнить его хеш-сумму (контрольную сумму)!
Хеш-сумма файла — это уникальный идентификатор, который задаётся (автором программы или первым владельцем файла) с помощью «перемешивания» и шифрования содержимого файла по специальному алгоритму с последующей конвертацией результата (этой адской смеси) в обычную строчку символов.
На официальных сайтах программ или на торрент-трекерах обычно авторы выкладывают рядом со своими файлами оригинальную (правильную) хеш-сумму, чтоб пользователи могли сравнивать с ней свою после скачивания…
Файлы с одинаковым хешем являются абсолютно идентичными, даже если у них разное название или расширение.
Алгоритмы (стандарты) расчёта хеш-суммы файла
Их довольно много существует на данный момент времени…
- Adler-32
- BTIH (BitTorrent Info Hash)
- CRC32
- eDonkey2000
- GOST (ГОСТ Р 34.11-94)
- MD5, MD4, MD2
- RIPEMD-128, RIPEMD-256, RIPEMD-320
- SHA-1
- SHA-2 (SHA-256, SHA-384, SHA-512)
- SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512)
- TTH (Tiger Tree Hash)
- Tiger
- Whirlpool
- …
…но самыми распространёнными и популярными являются…
- SHA-1
- MD5
- CRC
Хеш-суммы одного файла созданные по разным стандартам будут отличаться друг от друга очень заметно (не совместимы для сверки)…
Как создавать (задавать) хеш-сумму файла мы сегодня обсуждать и учиться не будем — это тема следующей статьи будет.
Как проверить хеш-сумму файла — HashTab
Очень и очень просто. Сейчас вмонтируем в Проводник Windows специальный инструмент для вычисления и проверки этой контрольной суммы файла.
Нам поможет абсолютно бесплатная, для личного использования, компьютерная программа под названием HashTab.
Устанавливаем её в свою операционную систему (ссылка на скачивание инсталлятора чуть ниже)…
…и получаем в свойствах любого файла дополнительную вкладку…
Решил проверить хеш-сумму большого по размеру файла и поэтому, как видите выше, даже успел снять скриншот. С файлами обычного, среднего размера эта процедура происходит практически мгновенно…
Зелёная галка в появившемся разделе «Сравнение хеша» означает, что всё хорошо и файл телепортировался в целости и сохранности (никто его по пути не перехватывал и не внедрял в него вирус).
Можно просто узнать сумму файла или сравнить её с первоисточником (например, с сайта производителя какой-либо скачанной программы). Для этого просто вставляете его в строку и жмёте кнопочку «Сравнить файл…».
Настройки HashTab очень просты и сводятся к активации (отображению) дополнительных стандартов в окошке свойств файла…
Скачать HashTab
Предназначение: | Бесплатная программа для проверки целостности и подлинности файлов посредством вычисления контрольной хеш-суммы |
Название программы: | HashTab |
Производитель (автор): | Implbits® |
Статус: | Бесплатно |
Категория: | Безопасность |
Размер инсталлятора (архива): | 1.1 Мб |
Поддержка ОС: | Windows XP,7,8,10 |
Язык интерфейса: | Английский, Русский… |
Безопасность: | Вирусов нет |
Похожие программы: | — |
Ссылка на инсталлятор/сайт: | Скачать/Перейти |
Вот такое простое средство для дополнительной защиты от вирусов. Теперь знаете, что такое хеш-сумма файла, зачем и как её замерять. До новых полезных компьютерных программ и интересных приложений на Андроид.