Hashtab

Содержание:

Hashtab что это за программа?

Целью Hashtab является поиск и выявление некорректно работающих системных файлов
, также, по пути, утилита запускает цикл проверки правильности установленных файлов. В частности, это нужно для проверки скачанных образов и больших файлов. Программа запускает проверку контрольной суммы для того, чтобы пользователь был уверен, что скачал файл полностью, не потеряв ни одного байта. Такая проверка позволяет устранить появление ошибок из-за того, что файл в итоге оказался битый. Hashtab поддерживает множество алгоритмов суммы:

  • CRC (проверяет целостность данных);
  • MD5 (создает «отпечатки» для последующей их проверки);
  • SHA1 (генерирует 160-битное хеш-значение, которое также называется дайджестом сообщения);
  • SHA2 (создает «отпечатки» различной длины и генерирует хеш-код);
  • Whirlpool (код хеширования, который явно имеет более красочное название — «воронка», нежели чем, остальные языки написания кода. Whirlpool осуществляет хеширование входного сообщения).

Использование этих и других алгоритмов позволяет Hashtab выделяться из ряда схожих программ и быть одной из лучших в своем роде.

Особенности работы с утилитой

Hashtab работает с разными видами файлов
, даже с теми, которые вы скачали с торрент-источника. Пользователь имеет возможность выбрать любой алгоритм для того, чтобы проверить файл. Это можно с легкостью сделать в панели настроек. Hаshtab способен сравнить несколько файлов с одинаковым названием для сравнения их хеш-сумм. Однако утилита не может вычислять значения одновременно для нескольких файлов. К сожалению, Hashtab пока что не имеет сервисной информации, но разработчики находятся в процессе решения этой проблемы. Можно отслеживать всю информацию по этой программе на ее официальном сайте.

На каких платформах работает Hashtab?

Утилита поддерживается несколькими операционными системами, такими как Mac и Windows
. На платформе Linuex Hashtab работать пока не может. В систему Windows утилита интегрируется и устанавливается в проводнике, а в яблочной системе она действует как отдельный плагин. Язык по умолчанию для Hashtab будет языком системы, но его всегда легко заменить в панели языковой панели самой программы.

Как пользоваться программой?

Скачать утилиту лучше всего с официального сайта разработчика, чтобы избежать вирусов. На компьютере она появится как отдельный установочный контейнер с расширением «.exe». В комплекте при скачивании присутствует программа русификации, что очень удобно, для тех, кто не владеет английским языком.

Как только, утилита установлена можно сразу же начать проверку всего диска. Если вы используете Windows, то достаточно будет просто щелчком правой кнопки мыши
вызывать панель «Свойства». В этой панели сразу будет указан параметр контрольных сумм.

Пользователь увидит сразу множество показателей. В том случае, если они не похожи то,легко понять, что файл либо заражен вредоносным программным обеспечением, либо поврежден. В таком случае в меню утилиты необходимо вызвать специальную панель, в которой будут указаны все значения выбранного пользователем файла. Показатели можно сортировать для упрощения выбора. В Hashtab существует библиотека расширений DLL
. В поле этой библиотеки можно поместить текст хеш-значений для их сравнения и проверки.Программа сама укажет на несовпадения и несоответствия.

Почему Hashtab не устанавливается?

Существует несколько способов установки программы Hashtab:

  1. Возможно, программа не работает из-за того, что ваша операционная система не поддерживается этой утилитой. В таком случае можно скачать Virtual Box и установить туда ту платформу, на которой Hashtab будет работать.
  2. Еще, возможно, что установочный файл просто некорректно скачался и проблему можно решить просто скачав его еще раз. Также стоит попробовать просто перезагрузить компьютер и запустить установочный файл еще раз.

Теперь вопрос о том, что такое Hashtab должен отпасть сам собой. Ведь теперь вы знаете, что это очень полезная утилита
, позволяющая пользователю обезопасить себя от вирусов и вредоносного программного обеспечения, но также эта утилита позволяет осуществлять проверку целостности файлов, что существенно облегчит жизнь каждого геймера, да и простого человека, которому приходится скачивать большие образы.

Семейство хеш-функций MD и SHA

На сегодняшний день подавляющую долю применений хеш-функций «берут на себя» алгоритмы MD5, SHA-1, SHA-256, а в России еще и  ГОСТ Р 34.11-2012 (Стрибог). Конечно, существует и множество других менее известных, или распространенных только в узких сообществах алгоритмов (например, RIPEMD, TIGER, Panama и др.), однако эти алгоритмы не так распространены. Ниже представлен анализ хэш-функций MD4, которая была предшественником MD5, а также хеш-функции SHA. 

Тип Описание
MD4 Самая быстрая, оптимизирована для 32-битных машин среди семейства MD-функций.

Хэш-функция, разработанная профессором Массачусетского университета Рональдом Ривестом в 1990 году и впервые описанная в RFC 1186. Содержит три цикла по 16 шагов каждый. В 1993 году был описан алгоритм взлома MD4, поэтому на сегодняшний день данная функция не рекомендована для использования с реальными приложениями.

MD5 Наиболее распространенная из семейства MD-функций. Похожа на MD4, но средства повышения безопасности делают ее на 33% медленнее, чем MD4. Содержит четыре цикла по 16 шагов каждый. Обеспечивает контроль целостности данных.

Первые успешные попытки взлома данной хеш-функции датируются 1993: исследователи Берт ден Боер и Антон Боссиларис показали, что в алгоритме возможны псевдоколлизии. В 1996 году Ганс Доббертин показал наличие возможности коллизий и теоретически описал алгоритм взлома. 24 августа 2004 года четыре независимых исследователя — Ван Сяоюнь, Фэн Дэнгуо, Лай Сюэцзя и Юй Хунбо — обнаружили уязвимость алгоритма, позволяющую найти коллизии аналитическим методом за более-менее приемлемое время. В 2005 году Властимил Клима опубликовал алгоритм, позволяющий обнаруживать коллизии за несколько часов. Восемнадцатого марта 2006 года исследователь обнародовал алгоритм, находящий коллизии за одну минуту, который позднее получил название «туннелирование». На сегодняшний день MD5 не рекомендована для использования в реальных приложениях. 

SHA-1 

(Secure 

Hash 

Algorithm 1)

В 1993 году NSA совместно с NIST разработали алгоритм безопасного хеширования (сейчас известный как SHA-0) (опубликован в документе FIPS PUB 180) для стандарта безопасного хеширования. Однако вскоре NSA отозвало данную версию, сославшись на обнаруженную ими ошибку, которая так и не была раскрыта. И заменило его исправленной версией, опубликованной в 1995 году в документе FIPS PUB 180-1. Эта версия и считается тем, что называют SHA-1.

Позже, на конференции CRYPTO в 1998 году два французских исследователя представили атаку на алгоритм SHA-0, которая не работала на алгоритме SHA-1. Возможно, это и была ошибка, открытая NSA.

SHA-1 создает 160-битное значение, называемое также дайджестом сообщения. Содержит четыре этапа. И MD5, и SHA-1 являются, по сути, улучшенными продолжениями MD4. Различия:

  1. В SHA-1 на четвертом этапе используется та же функция, что и на втором этапе.
  2. В MD5 в каждом действии используется уникальная прибавляемая константа. В SHA-1 константы используются повторно для каждой из четырех групп.
  3. В SHA-1 добавлена пятая переменная.
  4. SHA-1 использует циклический код исправления ошибок.
  5. В MD5 четыре различных элементарных логических функции, в SHA-1 — три.
  6. В MD5 длина дайджеста составляет 128 бит, в SHA-1 — 160 бит.
  7. SHA-1 содержит больше раундов (80 вместо 64) и выполняется на 160-битном буфере по сравнению со 128-битным буфером MD5. Таким образом, SHA-1 должен выполняться приблизительно на 25 % медленнее, чем MD5 на той же аппаратуре.
SHA-2 Семейство криптографических алгоритмов — хеш-функций, включающее в себя алгоритмы SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/256 и SHA-512/224.

В 2003 году Гилберт и Хандшух провели исследование SHA-2, но не нашли каких-либо уязвимостей.  Однако в марте 2008 года индийские исследователи Сомитра Кумар Санадия и Палаш Саркар опубликовали найденные ими коллизии для 22 итераций SHA-256 и SHA-512. В сентябре того же года они представили метод конструирования коллизий для усечённых вариантов SHA-2 (21 итерация). Как показали исследования, алгоритмы SHA-2 работают в 2—3 раза медленнее хеш-алгоритмов MD5, SHA-1.

SHA-3 (Keccak) Хеш-функция SHA-3 (также называемая Keccak) является функцией переменной разрядности, разработанная группой авторов во главе с Йоаном Дайменом. 2 октября 2012 года Keccak стала победителем конкурса криптографических алгоритмов, проводимым Национальным институтом стандартов и технологий США. 5 августа 2015 года алгоритм функции был утверждён и опубликован в качестве стандарта FIPS 202. Алгоритм функции SHA-3 построен по принципу криптографической губки.

Практическое использование хэша

Работа с большими объемами информации

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

Например, в массив из нескольких миллионов разных строк длиной 1 млн символов нужно добавить еще одну, при условии, что там ее еще нет. Чтобы не заниматься посимвольным сравнением каждой строки, можно предварительно вычислить хэш каждой из них, и уже сделать сравнение по нему. Вся работа упрощается и ускоряется в разы.

Проверка целостности данных при передаче

Для таких проверок часто используются простые хэш-функции.

Например, один пользователь передает другому определенный массив данных, а затем хэш от него. Получатель информации, захэшировав информацию у себя и сравнив хэши, может удостовериться, что он получил именно те данные, которые были отправлены.

В технологии блокчейн хэш также используется для проверки целостности данных. Хэш выступает гарантией целостности цепочки транзакций (платежей) и защищает ее от несанкционированных изменений. Благодаря ему и распределенным вычислениям взломать блокчен очень сложно.

Шифрование

На практике некоторые хэш-функции также используются для шифрования. Благодаря практически полностью хаотичному соответствию хэшей исходным данным, практически невозможно вычислить начальный массив данных. Такие хэш-функции должны быть очень стойкими к коллизиям, т.е. должна обладать минимальной вероятностью получения двух одинаковых хэшей для двух разных массивов данных. Расчеты по таким алгоритмам более сложные и требует больше времени, но зато отличаются надежностью.

Электронные цифровые подписи

Использование хэша в данной технологии позволяет пользователю, который подписывает документ, быть уверенным, что он подписывает именно тот документ, который требуется. Также хэш используется при формировании электронной цифровой подписи и аутентификации пользователей.

Хранение паролей

Для доступа к сайтам и серверам по логину и паролю тоже часто используют хэширование.

Пользователь регистрируется на сайте:

  • Заполняет форму регистрации, включая поле Пароль,
  • Пароль обрабатывается хэш-функцией и помещается в базу данных,
  • Оригинальное значение пароля нигде не используется.

Пользователь входит на сайт:

  • Вводит свой логин и пароль,
  • Пароль хэшируется и сравнивается с данными базы,
  • Если хэши совпадают, пользователя заходит на сайт.

История возникновения

В основе алгоритма N-Hash лежит блочный алгоритм шифрования FEAL. Крупнейшая телекоммуникационная компания Nippon Telegraph and Telephone создала FEAL на основе DES. Но хотя этот алгоритм и выигрывает в быстродействии у DES, он является очень ненадежным и легко уязвимым: криптоаналитику требовалось очень мало информации, чтобы взломать алгоритм. Именно взлом алгоритма FEAL повлек за собой появление хеш-функции N-Hash в 1990 году. N-Hash также выигрывает в скорости у DES: по сравнению с 9 Кбит/сек у DES, N-Hash работает со скоростью 24 Кбит/сек для 15-раундовой схемы и со скоростью 29 Кбит/сек для 12-раундовой. При этом Nippon Telegraph and Telephone добилась повышения надёжности по сравнению с FEAL.

В течение некоторого времени алгоритм N-Hash использовался фирмой Nippon Telegraph and Telephone в соответствии с целями данной функции, но через некоторое время был разработан метод дней рождения, который с лёгкостью взламывал этот алгоритм. В связи со взломом отказались не только от N-Hash, но и почти от всех функций, основанных на блочных шифрах, так как для всех них характерна одна и та же проблема: они легко уязвимы методом дней рождения. Вместо них теперь используют более надежные функции, основанные на MD — технологиях: MD5, SHA-1 и другие, приведенные в списке функций, которые на данный момент считаются надежными (согласно стандарту ISO/IEC 10118).

Типы хеширования

Webpack предоставляет три типа хеширования:

Давайте попробуем понять, что это за хэши различного типа и в какой ситуации мы должны их использовать.

Примеры использования: В качестве использования всех трех типов хешей будет использовать один конфиг в котором будет менять только тип хеша.

entry: {
  index: ["./src/index.js", "./src/index.css"],
  vendors: ["./src/vendors.js"]
},
output: {
  filename: "..js"
}
plugins: ..css"
  })
]

Hash

Hash один на все текущую сборку. Каждый файл получит одинаковый хеш в сборке. И при каждой генерации сборки, хеш будет обновляться.

Результат

index.155567618f4367cd1cb8.css 1.43 kB 0  index
index.155567618f4367cd1cb8.js 1.43 kB 0  index
vendor.155567618f4367cd1cb8.js 1.43 kB 1  vendor

Chunkhash

Chunkhash основан на точке входа webpack. Каждый определенный файл (или запись в конфиги) будет иметь свой собственный хеш. Если что-то изменится для этой конкретной точки входа, изменится только соответствующий хеш.

Результат:

index.155567618f4367cd1cb8.css 1.43 kB 0  index
index.155567618f4367cd1cb8.js 1.43 kB 0  index
vendor.c2330c22cd2decb5da5a.js 1.43 kB 1  vendor

Но как видите, 1-й и 2-й файлы были взяты из одного и того же index, поэтому они имеют одинаковый хэш в своем имени. Это потому, что генерируется на основе всего содержимого чанка. Поэтому, если я отредактирую, скажем, index.css и пересоберу сбоку, все файлы index из чанка, будет иметь новый хеш, но из чанка vendor останется таким же, как и прежде.

Contenthash

Contenthash — это особый тип хэша, рассчитываемый на основе контента файла.

Результат:

У каждого файла будет свой уникальный хеш.

index.155567618f4367cd1cb8.css 1.43 kB 0  index
index.72342734682734fcd1b6.js 1.43 kB 0  index
vendor.c2330c22cd2decb5da5a.js 1.43 kB 1  vendor

Каждый сгенерированный файл имеет уникальный хэш в своем имени, рассчитанный на основе содержимого этого файла. Если я изменю, скажем, поменяю только index.css то при повторной сборке, только сгенерированный index.css будет иметь новый хеш.

Совет: Не используйте в среде разработке, так как он увеличит время компиляции. Разделяйте конфиги разработки и производства и используйте .js для разработки и ..js в производстве.

Цели N-Hash

Для того, чтобы понять как работает функция N-Hash, необходимо перейти на более научную речь. Ниже приведены цели данной функции не на примерах, а в соответствии с тем, как они осуществляются и с соответствующей терминологией.

Обеспечение целостности информации:

Данное свойство необходимо для того, чтобы исключить возможность злоумышленника внедрить некоторую ложную информацию в исходное сообщение. Для обеспечения целостности должна быть возможность обнаружить любые изменения в тексте сообщения (замена, вставка, удаление). Целостность обеспечивается путём внедрения в исходное сообщение избыточной информации, которая будет являться проверочной комбинацией. Такая комбинация называется контрольной суммой и её можно вычислить с помощью специального алгоритма. Так как этот алгоритм зависит от секретного ключа, то внедрение ложной информации в сообщение маловероятно.

Mnew=M+″salt″{\displaystyle M_{new}=M+»salt»}, где salt — избыточная информация, M — сообщение H(salt)=S{\displaystyle H(salt)=S}- контрольная сумма;

Из формулы следует, что если меняется salt, то меняется и S (контрольная сумма), а значит изменялось и Mnew{\displaystyle M_{new}} и M{\displaystyle M}.

То есть можно сделать вывод, что была добавлена ложная информация.

Сжатие документа:

Функция N-Hash работает с сообщениями M произвольной длины. При этом на выходе получается хеш-код фиксированной длины в 128 бит. Это получается за счет того, что сообщение делится на блоки Mi{\displaystyle M_{i}}, размером 128 бит, и алгоритм работает последовательно с каждым из блоков.

Обеспечение достоверности электронных данных:

Данное свойство выполняется для однонаправленных функций, какой и является N-Hash. Достоверность сообщения M проверяется путём нахождения конечного хеш-кода (дайджеста сообщения) дважды (отсылающая и принимающая стороны). Результаты сравниваются и, если они совпадают, то информация достоверна. Целостность не гарантирует достоверность.

Обеспечение конфиденциальности:

на сайтах, где нужно вводить логин и пароль, пароль после ввода переводится в хеш-код. То есть изначально пользователь вводит пароль M, но для входа в защищённую область используется хеш-код h=H(M){\displaystyle h=H(M)}. По известному хеш-коду h и функции H вычислить M очень трудно, чем и обеспечивается конфиденциальность пароля.

Аутентификация пользователей:

Аутентификация — это процедура проверки подлинности пользователя или данных при помощи некоторого критерия.

Возникает вопрос, как хеш-функция обеспечивает правдивость аутентификации. Это легко показать на примере.

Когда пользователь вводит логин и пароль на каком-либо сайте, его пароль преобразуется в хеш-код и передается по сети для аутентификации. Очевидно, что для того чтобы войти под чужую учётную запись достаточно выяснить хеш-код пароля, а затем по формуле h=H(M){\displaystyle h=H(M)} (h-хеш-код, M — пароль) найти пароль. Но N-Hash, являющаяся однонаправленной функцией, обеспечивает сохранность пароля, так как это уравнение для однонаправленных функций решается очень трудоёмко (не с помощью персонального компьютера).

Специфика криптографических хэш-функций

Рассмотрим более подробно, каким образом исследуемые нами типы алгоритмов могут задействоваться в сфере криптографии. Ключевое требование к соответствующим функциям — стойкость к коллизиям, о которых мы сказали выше. То есть не должны формироваться повторяющиеся значения хеш-функции, если значения эти уже присутствуют в структуре соседствующего алгоритма. Прочим отмеченным выше критериям криптографические функции также должны соответствовать. Понятно, что всегда есть некая теоретическая возможность восстановления исходного файла на основе хэша, особенно если в доступе есть мощный вычислительный инструмент. Однако подобный сценарий предполагается свести к минимуму, благодаря надежным алгоритмам шифрования. Так, вычислить хэш-функцию будет очень сложно, если ее вычислительная стойкость соответствует формуле 2^{n/2}.

Другой важнейший критерий криптографического алгоритма — изменение хэша в случае корректировки изначального массива данных. Выше мы отметили, что стандарты шифрования должны обладать чувствительностью на уровне 1 бита. Так, данное свойство — ключевой фактор обеспечения надежной парольной защиты доступа к файлам.

Методы борьбы с коллизиями

Основная статья: Коллизия хеш-функции

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

Методы борьбы с коллизиями в хеш-таблицах

Основная статья: Хеш-таблица

Большинство первых работ, описывающих хеширование, посвящено методам борьбы с коллизиями в хеш-таблицах. Тогда хеш-функции применялись при поиске текста в файлах большого размера. Существует два основных метода борьбы с коллизиями в хеш-таблицах:

  1. метод цепочек (метод прямого связывания);
  2. метод открытой адресации.

При использовании метода цепочек в хеш-таблице хранятся пары «связный список ключей» — «хеш-код». Для каждого ключа хеш-функцией вычисляется хеш-код; если хеш-код был получен ранее (для другого ключа), ключ добавляется в существующий список ключей, парный хеш-коду; иначе создаётся новая пара «список ключей» — «хеш-код», и ключ добавляется в созданный список. В общем случае, если имеется N{\displaystyle N} ключей и M{\displaystyle M} списков, средний размер хеш-таблицы составит NM{\displaystyle {\frac {N}{M}}}. В этом случае при поиске по таблице по сравнению со случаем, в котором поиск выполняется последовательно, средний объём работ уменьшится примерно в M{\displaystyle M} раз.

При использовании метода открытой адресации в хеш-таблице хранятся пары «ключ» — «хеш-код». Для каждого ключа хеш-функцией вычисляется хеш-код; пара «ключ» — «хеш-код» сохраняется в таблице. В этом случае при поиске по таблице по сравнению со случаем, в котором используются связные списки, ссылки не используются, выполняется последовательный перебор пар «ключ» — «хеш-код», перебор прекращается после обнаружения нужного ключа. Последовательность, в которой просматриваются ячейки таблицы, называется последовательностью проб.

Криптографическая соль

Основная статья: Соль (криптография)

Для защиты паролей и цифровых подписей от подделки создано несколько методов, работающих даже в том случае, если криптоаналитику известны способы построения коллизий для используемой хеш-функции. Одним из таких методов является добавление к входным данным так называемой криптографической «соли» — строки случайных данных; иногда «соль» добавляется и к хеш-коду. Добавление случайных данных значительно затрудняет анализ итоговых хеш-таблиц. Данный метод, к примеру, используется при сохранении паролей в UNIX-подобных операционных системах.

История

Шифровка сообщений без возможности однозначной расшифровки, а только с целью подтверждения авторского приоритета, применялась издавна.

Галилео Галилей наблюдал кольца Сатурна, которые принял за «ушки». Не будучи уверен, но желая утвердить свой приоритет, он опубликовал сообщение с перестановленными буквами: smaismrmilmepoetaleumibunenugttauiras. В 1610 году он раскрыл исходную фразу: Altissimum planetam tergeminum obseruaui, что в переводе с латинского языка означает «высочайшую планету тройною наблюдал». Таким образом, на момент публикации первого сообщения исходная фраза не была раскрыта, но была создана возможность подтвердить её позже.

В середине 1650-х Христиан Гюйгенс разглядел кольца и опубликовал сообщение с буквами, расставленными по алфавиту: ааааааа, ссссс, d, еееее, g, h, iiiiiii, lllll, mm, nnnnnnnnn, oooo, pp, q, rr, s, ttttt, uuuuu. Через некоторое время была опубликована и исходная фраза: Annulo cingitur, tenui plano, nusquam cohaerente, ad eclipticam inclinato — «Окружен кольцом тонким, плоским, нигде не подвешенным, наклоненным к эклиптике». От применения хеш-функции, включая и цель позднее подтвердить некоторое нераскрытое сообщение, данный случай отличается только тем, что выходное сообщение не имеет фиксированной длины, а определяется длиной входного. Фактически, расстановка букв исходного сообщения по алфавиту является некоторой хеш-функцией, но только с результатом нефиксированной длины.

В январе 1953 года Ханс Петер Лун (нем. Hans Peter Luhn) (сотрудник фирмы IBM) предложил «хеш-кодирование». Дональд Кнут считает, что Ханс первым выдвинул систематическую идею «хеширования».

В 1956 году Арнольд Думи (англ. Arnold Dumey) в своей работе «Computers and automation» первым описал идею «хеширования» такой, какой её знает большинство программистов сейчас. Думи рассматривал «хеширование» как решение «проблемы словаря», предложил использовать в качестве «хеш-адреса» остаток от деления на простое число.

В 1957 году в журнале «IBM Journal of Research and Development» была опубликована статья Уэсли Питерсона (англ. W. Wesley Peterson) о поиске текста в больших файлах. Эта работа считается первой «серьёзной» работой по «хешированию». В статье Уэсли определил «открытую адресацию», указал на уменьшение производительности при удалении. Спустя шесть лет была опубликована работа Вернера Бухгольца (нем. Werner Buchholz), в которой было проведено обширное исследование «хеш-функций». В течение нескольких последующих лет «хеширование» широко использовалось, однако никаких значимых работ не публиковалось.

В 1967 году «хеширование» в современном значении упомянуто в книге Херберта Хеллермана «Принципы цифровых вычислительных систем». В 1968 году Роберт Моррис (англ. Robert Morris) опубликовал в журнале «Communications of the ACM» большой обзор по «хешированию». Эта работа считается «ключевой» публикацией, вводящей понятие о «хешировании» в научный оборот, и закрепившей термин «хеш», ранее применявшийся только специалистами (жаргон).

До начала 1990-х годов в русскоязычной литературе в качестве эквивалента термину «хеширование» благодаря работам Андрея Петровича Ершова использовалось слово «расстановка», а для «коллизий» использовался термин «конфликт» (А. П. Ершов использовал «расстановку» с 1956 года). В русскоязычном издании книги Никлауса Вирта «Алгоритмы и структуры данных» 1989 года также используется термин «расстановка». Предлагалось также назвать метод другим русским словом: «окрошка». Однако ни один из этих вариантов не прижился, и в русской литературе используется преимущественно термин «хеширование».

Что такое хеши и как они используются

Хеш-сумма (хеш, хеш-код) — результат обработки неких данных хеш-функцией (хеширования).

Хеширование, реже хэширование (англ. hashing) — преобразование массива входных данных произвольной длины в (выходную) битовую строку фиксированной длины, выполняемое определённым алгоритмом. Функция, реализующая алгоритм и выполняющая преобразование, называется «хеш-функцией» или «функцией свёртки». Исходные данные называются входным массивом, «ключом» или «сообщением». Результат преобразования (выходные данные) называется «хешем», «хеш-кодом», «хеш-суммой», «сводкой сообщения».

Это свойство хеш-функций позволяет применять их в следующих случаях:

  • при построении ассоциативных массивов;
  • при поиске дубликатов в сериях наборов данных;
  • при построении уникальных идентификаторов для наборов данных;
  • при вычислении контрольных сумм от данных (сигнала) для последующего обнаружения в них ошибок (возникших случайно или внесённых намеренно), возникающих при хранении и/или передаче данных;
  • при сохранении паролей в системах защиты в виде хеш-кода (для восстановления пароля по хеш-коду требуется функция, являющаяся обратной по отношению к использованной хеш-функции);
  • при выработке электронной подписи (на практике часто подписывается не само сообщение, а его «хеш-образ»);
  • и др.

Одним из применений хешов является хранение паролей. Идея в следующем: когда вы придумываете пароль (для веб-сайта или операционной системы) сохраняется не сам пароль, а его хеш (результат обработки пароля хеш-функцией). Этим достигается то, что если система хранения паролей будет скомпрометирована (будет взломан веб-сайт и злоумышленник получит доступ к базе данных паролей), то он не сможет узнать пароли пользователей, поскольку они сохранены в виде хешей. Т.е. даже взломав базу данных паролей он не сможет зайти на сайт под учётными данными пользователей. Когда нужно проверить пароль пользователя, то для введённого значения также рассчитывается хеш и система сравнивает два хеша, а не сами пароли.

По этой причине пентестер может столкнуться с необходимостью работы с хешами. Одной из типичных задач является взлом хеша для получения пароля (ещё говорят «пароля в виде простого текста» — поскольку пароль в виде хеша у нас и так уже есть). Фактически, взлом заключается в подборе такой строки (пароля), которая будет при хешировании давать одинаковое значение со взламываемым хешем.

Для взлома хешей используется, в частности, Hashcat. Независимо от выбранного инструмента, необходимо знать, хеш какого типа перед нами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *