Що таке шифрування?
Шифрування перетворює читабельні дані на форму, яку можна відновити лише за наявності відповідного ключа. Воно захищає конфіденційність під час передавання та зберігання даних. Хешування й контрольна сума мають інші завдання: їхній результат не розшифровують назад у вихідний текст.
Як працює шифрування
Алгоритм отримує відкритий текст і ключ та створює шифротекст. Одержувач застосовує відповідний ключ для розшифрування. За симетричного шифрування сторони мають один спільний секрет; за асиметричного використовують пару відкритого й закритого ключів. Безпека залежить від алгоритму, режиму роботи, якості ключів і способу їх зберігання. Сам факт «текст зашифровано» не свідчить, наскільки добре його захищено.
Хеш, контрольна сума і шифр — різні речі
Криптографічна хеш-функція видає короткий відбиток даних; вихідне повідомлення з нього штатним способом не відновлюють. Хеші застосовують, наприклад, для перевірки цілісності, але для зберігання паролів потрібні спеціальні алгоритми із сіллю та налаштовуваною вартістю обчислень. CRC32 виявляє випадкові помилки передавання і не захищає від навмисної підміни. MD5 і SHA-1 не варто рекомендувати для нових завдань, що потребують стійкості до колізій: NIST оголосив про перехід від SHA-1 до стійкіших алгоритмів. Позиція NIST щодо SHA-1.
Що враховувати на практиці
Для захисту з’єднання використовують TLS, а для файлів — перевірені програми й режими шифрування з автентифікацією. Не надсилайте ключ разом із зашифрованим файлом тим самим незахищеним каналом. У генераторі хешів можна обчислити хеш або контрольну суму тексту.
Приклад: захист файлу й перевірка завантаженого архіву
Якщо потрібно передати конфіденційний файл колезі, використовуйте перевірену програму, що шифрує дані з автентифікацією; пароль або ключ передайте окремим захищеним способом. Одержувач зможе відновити вміст лише з відповідним ключем. Якщо ж завдання — переконатися, що завантажений архів збігається з оприлюдненим розробником, порівняйте його хеш SHA-256 із хешем із надійного джерела. Хеш не приховує вміст архіву. CRC32 годиться для виявлення випадкового пошкодження, але не підтвердить справжність файлу за навмисної підміни.
Навіть добрий алгоритм не компенсує слабкий пароль, розкритий ключ або заражений пристрій. Для нових систем вибирайте алгоритми й протоколи із сучасною перевіркою безпеки, а не власну схему з кількох перетворень тексту. Кодування Base64 теж не є шифруванням: будь-хто може відновити вихідні байти без ключа.
TLS 1.3 і захист з’єднання
В HTTPS шифрування — частина ширшого протоколу: TLS узгоджує параметри, виконує обмін ключами та перевіряє сертифікат сервера. Сучасний TLS 1.3 прибрав низку застарілих варіантів і скоротив звичайне рукостискання. Докладніше — у статті про рукостискання TLS 1.3. Наявність TLS захищає дані в дорозі до вказаного вузла, але сама по собі не доводить доброчесність сайту.
