Безопасность данных. Шифрование и хеширование.

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

Сегодня хотелось бы уделить внимание двум понятиям, которые в умах среднестатистических (и даже более продвинутых) пользователей зачастую тождественны:

  • шифрование
  • хеширование.

Шифрование

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

1. Берётся исходный текст.

2. Каждый символ заменяется на символ, стоящий на 3 позиции далее (или ранее) в алфавите. Например, Б->Д, Я->В.

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

Существует два типа шифрования:

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

Хеширование

Хеширование намного моложе понятия шифрования и получило своё распространение благодаря развитию ЭВМ.

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

Самые популярные алгоритмы хэширования: MD5 (устаревший, имеющий определённые недостатки), SHA-алгоритмы (SHA-256 можно назвать эталонным).

Используется в блокчейн-технологиях, цифровой подписи.

Ключевые отличия между хешированием и шифрованием

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


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

Также советую к прочтению статью про блокчейн-технологии и биткоин.