Что такое хеширование, шифрование и кодировка

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

С точки зрения безопасности, когда вы отправляете данные/сообщение в интернете:

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

что такое хеширование, шифрование, кодировка

Эти три пункта можно назвать по-другому:

  • Проверка личности
  • Целостность сообщения
  • Конфиденциальность

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

Хеширование

Давайте представим жизнь без хеширования. Например, сегодня день рождения друга, и вы хотите отправить ему поздравление. Ваш веселый товарищ-ботан решает над вами посмеяться, перехватывает сообщение и превращает «С Днем рождения» в «Покойся с миром». Это вполне вероятно, и вы, возможно, даже об этом не узнаете.

Чтобы такого не случалось, на помощь приходит хеширование — оно защищает целостность данных.

Хеш — это число, которое генерируется из текста с помощью хеш-алгоритма. Это число меньше оригинального текста.

Что такое хешированиеАлгоритм хеширования

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

Одно из незаменимых свойств хеширования — его уникальность. Одно и то же значение хеша не может использоваться для разного текста. Малейшее изменение в тексте полностью изменит значение хеша. Это называется эффектом лавины.

В примере ниже мы использовали алгоритм SHA-1.

Текст: Все любят пончики.
Значение SHA-1 текста: daebbfdea9a516477d489f32c982a1ba1855bcd

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

Текст: Все любят пончик.
Значение SHA-1 текста: 8f2bd584a1854d37f9e98f9ec4da6d757940f388

Как вы видите, поменялась одна буква, а хеш изменился до неузнаваемости.

Хеширование нужно:

  • Чтобы информация в базах данных не дублировалась;
  • Для цифровых подписей и SSL-сертификатов;
  • Чтобы найти конкретную информацию в больших базах данных;
  • В компьютерной графике.

Шифрование

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

Что такое шифрованиеШифрование и дешифровка

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

В зависимости от природы ключей шифрование может делиться на 2 категории: симметричное и асимметричное.

Симметричное шифрование: Данные шифруются и расшифровываются при помощи одного криптографического ключа. Это значит, что ключ, используемый для шифрования, используется и для расшифровки.

Асимметричное шифрование: Это довольно новый метод. В нем используются два разных ключа — один для шифрования, второй для расшифровки. Один ключ называется публичным, второй секретным.

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

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

Оба эти метода используются в SSL/TLS-сертификатах. Асимметричное шифрование сначала применяется к процессу рукопожатия SSL — валидации сервера. Как только между клиентом и сервером устанавливается соединение, данные шифруются с помощью симметричного шифрования.

Кодировка

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

В кодировке не используются ключи. Алгоритм, который берется для кодировки данных, также используется, чтобы раскодировать их. ASCII и UNICODE — примеры таких алгоритмов кодировки.

Резюмируем

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

Шифрование: Метод, который используется, чтобы зашифровать данные, превратив их в формат, не поддающийся расшифровке.

Кодировка: Превращение данных из одного формата в другой.

Источник: статья в блоге Cheap SSL Security