Найти тему
1,7K подписчиков

Хеширование информации

154 прочитали
Привет, дорогой читатель! Зарегистрируйтесь и получите доступ к бесплатному контенту. А также будьте в курсе нового учебного контента. Ссылка на учебную платформу: Академия ИНФОКОММ infocomm.

Привет, дорогой читатель!

Зарегистрируйтесь и получите доступ к бесплатному контенту. А также будьте в курсе нового учебного контента. Ссылка на учебную платформу:

Академия ИНФОКОММ

infocomm.space

Благодарность автору
Благодарность автору

Если материал полезен, то есть способ отблагодарить меня. Любая сумма будет отличной наградой и стимулом писать полезный контент для Вас.

Купить кофе автору

Прежде чем коснуться того, что такое ЭЦП, а также лежащего в основе ассиметричного шифрования необходимо рассмотреть, что такое хеширование.

Область применения хеширования без прикрас огромна. Самой известной для сетевых инженеров (связистов) является контроль целостности передаваемой информации в каналах связи (цифровых сетях). Для реализации контроля используется так называемая контрольная сумма. Для Ethernet сетей такая контрольная сумма вычисляется с использованием алгоритма циклической избыточности кода CRC (англ. Cyclic redundancy check). Результат работы алгоритма заносится отправителем в 4-х байтовое поле FCS (англ. frame check sequence). Получатель кадра вычисляет CRC для полезной нагрузки (payload) полученного кадра и сверяет с значением, указанным в поле FCS. Таким образом проверяется целостность кадра. Если кадр был подвержен изменениям в процессе передачи, то такой кадр будет отброшен и запрошена повторная передача.

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

Сид, иногда сидер (англ. seeder — сеятель) — пир, имеющий все сегменты распространяемого файла, то есть либо начальный распространитель файла, либо уже скачавший весь файл.

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

Пир (англ. peer — соучастник) — клиент, участвующий в раздаче. Иногда пирами называют только скачивающих участников

Хеширование также активно используется для построения хеш-таблиц, позволяющих ускорять процесс поиска в базах данных. Слышали про такое понятие как «слой кэша» в контексте дизайна информационных систем? Если нет - не беда. В ближайшем будущем у меня будет подробная статья про это на примере работы связки Python + Memcached (Radis)+ SQLite.

Нельзя также не упомянуть и про такую сферу применения хеширования как безопасное хранение паролей в БД, в памяти сетевого и серверного оборудования. Дело в том, что хранить пароли в открытом виде абсолютно не безопасно. Хеш – результат работы односторонней функции, т.е. восстановить исходный пароль можно лишь методом брутфорса (англ. brute force). При достаточной длине пароля сделать это практически невозможно. Стоимость такого вида атаки в большинстве случаев не оправдывается. Большинство облачных сервисов хранят пароли пользователей в хешированном состоянии. Однако стоит помнить, что если вы используете один и тот же пароль в разных местах и в одном из этих мест ваш пароль был скомпрометирован, то для злоумышленника не станет проблемой сопоставить имеющийся пароль с хэшем утекшей в сеть учетки и прийти к заключению в каких сервисах вы использовали аналогичный пароль.

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

Если коротко, то хеширование – это метод преобразования некоторого набора данных произвольного размера в строку фиксированной длины. Хеширование по-другому еще называют цифровым отпечатком. Т.е. любой цифровой набор данных может быть подан на вход некоторого алгоритма хеширования и на выходе мы получим его цифровое отображение в виде строки символов фиксированного размера. Основной задачей алгоритмов хеширования является недопущение «коллизий». Т.е. разные наборы данных, отличающиеся хотя-бы одним битом, не должны давать одинаковый цифровой отпечаток. При этом даже самое незначительное изменение в наборе передаваемых данных должно менять цифровой отпечаток до неузнаваемости. Вот пример работы одного из самых простых алгоритмов хеширования (SHA-1):

Входные данные - инфокомм

Результат работы - f7ccbaae04f2c7653c0caf405e0d2f3349960c04

-----

Входные данные - инфоком

Результат работы - 74bc8295bea554808f0e2f53b07f3db10a47e3c3

На данном примере хорошо видно, что даже незначительное отличие входных данных приводит к абсолютно разному результату!

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