Що таке хешування, шифрування та кодування

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

З точки зору безпеки, коли ви надсилаєте дані/повідомлення в інтернеті:

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

що таке хешування, шифрування, кодування Ці три пункти можна назвати інакше:

  • Перевірка особи
  • Цілісність повідомлення
  • Конфіденційність

Щоб це було можливим, використовують хешування та шифрування. Почнемо з хешування.

Хешування

Давайте уявимо життя без хешування. Наприклад, сьогодні день народження друга, і ви хочете надіслати йому вітання. Ваш веселий товариш-ботан вирішує з вас посміятися, перехоплює повідомлення і перетворює «З Днем народження» в «Спочивай з миром». Це цілком можливо, і ви, вірогідно, навіть про це не дізнаєтесь.

Щоб такого не траплялося, на допомогу приходить хешування — воно захищає цілісність даних.

Хеш — це число, яке генерується з тексту за допомогою хеш-алгоритму. Це число менше оригінального тексту.

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

Алгоритм працює так, що для кожного тексту генерується унікальний хеш. І відновити текст із хешу, перехопивши повідомлення, практично неможливо.

Одна з незамінних властивостей хешування — його унікальність. Те саме значення хеша не може використовуватися для різного тексту. Найменша зміна тексту повністю змінить значення хеша. Це називається ефектом лавини.

У наведеному нижче прикладі ми використовували алгоритм SHA-1.

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

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

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

Як ви бачите, змінилася одна буква, а хеш змінився до невпізнання.

Хешування потрібно:

  • Щоб інформація у базах даних не дублювалася;
  • Для цифрових підписів та SSL-сертифікатів;
  • Щоб знайти конкретну інформацію у великих базах даних;
  • У комп’ютерній графіці.

Шифрування

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

Що таке шифрування Шифрування та дешифрування

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

Залежно від природи ключів шифрування може ділитися на 2 категорії: симетричне та асиметричне.

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

Асиметричне шифрування: Це досить новий метод. У ньому використовуються два різні ключі — один для шифрування, другий для розшифрування. Один ключ називається публічним, другий таємним.

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

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

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

Кодування

На відміну від шифрування та хешування, кодування використовується не з метою безпеки. При кодуванні дані перетворюються на інші формати, щоб безліч систем могли їх використовувати.

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

Резюмуємо

Хешування: ряд цифр, що генерується, щоб підтвердити цілісність даних за допомогою алгоритмів хешування.

Шифрування: Метод, який використовується для зашифрування даних, перетворивши їх на формат, який не піддається розшифровці.

Кодування: Перетворення даних з одного формату на інший.

Джерело: стаття в блозі Cheap SSL Security