Симетричне й асиметричне шифрування: у чому різниця

Симетричне шифрування використовує один спільний ключ, асиметричне — пару ключів. Як працює кожне, чому HTTPS поєднує обидва, пряма секретність і постквантові зміни.

Ілюстрація до статті: Симетричне й асиметричне шифрування: у чому різниця

Шифрування буває двох видів, і майже кожне захищене з’єднання використовує обидва. Симетричне шифрування працює з одним спільним секретним ключем. Асиметричне, або шифрування з відкритим ключем, — з парою ключів: відкритим і закритим. У статті пояснюємо, як працює кожен вид, де застосовується і чому HTTPS, месенджери та зашифрована пошта поєднують обидва. Простіший вступ — у статті Як працює шифрування з відкритим ключем?.

Коротко

Симетричне Асиметричне (з відкритим ключем)
Ключі Один секретний ключ, спільний для обох сторін Пара ключів: відкритий для всіх і закритий, який тримають у секреті
Швидкість Дуже швидке, підходить для великих обсягів даних Значно повільніше, застосовується до невеликих даних
Головна проблема Як безпечно передати ключ Як упевнитися, що відкритий ключ справді належить потрібній людині
Типові алгоритми AES, ChaCha20 RSA, еліптичні криві (ECDH, ECDSA, Ed25519)
Типовий розмір ключа 128 або 256 біт RSA — 2048–4096 біт; еліптичні криві — 256 біт
Для чого Шифрування файлів, дисків, даних у з’єднанні Обмін ключами, цифрові підписи, підтвердження особи

Як працює симетричне шифрування

У симетричному шифруванні той самий ключ і замикає, і відмикає дані. Аліса шифрує файл ключем, а Борис, у якого такий самий ключ, розшифровує. Сучасні алгоритми, як-от AES (Advanced Encryption Standard) і ChaCha20, роблять це надзвичайно швидко. Багато процесорів мають вбудовані інструкції для AES, тож шифрування цілого диска чи відеопотоку майже не впливає на продуктивність.

256-бітний ключ має 2256 можливих значень — забагато, щоб перебрати їх на будь-якому комп’ютері, який можна уявити найближчими десятиліттями. На практиці атакують не математику, а те, як ключ зберігають чи передають.

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

Як працює асиметричне шифрування

Криптографію з відкритим ключем опублікували в 1970-х: спершу Діффі та Геллман, потім Рівест, Шамір і Адлеман (RSA). Вона розв’язала проблему передачі ключа. Кожен створює пару ключів. Ключі математично пов’язані, але з відкритого неможливо обчислити закритий.

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

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

Гібридне шифрування: як реальні системи поєднують обидва

Справжні протоколи за допомогою асиметричної криптографії домовляються про симетричний ключ і далі користуються ним для всього іншого:

  1. Сторони виконують обмін ключами, зазвичай Діффі–Геллмана на еліптичних кривих (ECDHE). Кожна поєднує своє закрите значення з відкритим значенням іншої й отримує однаковий спільний секрет. Сам секрет мережею не передається.
  2. Сервер підтверджує, хто він, цифровим підписом свого закритого ключа. Сертифікат прив’язує цей ключ до доменного імені.
  3. Обидві сторони виводять зі спільного секрету симетричні сеансові ключі.
  4. Усі дані — сторінки, паролі, файли — шифруються швидким симетричним алгоритмом, наприклад AES-GCM або ChaCha20-Poly1305.

Приблизно це відбувається в TLS 1.3 щоразу, коли ви відкриваєте сайт через HTTPS. Той самий підхід працює в Signal і WhatsApp, у SSH і VPN, а також у пошті з PGP: лист шифрується випадковим симетричним ключем, а сам ключ — відкритим ключем одержувача.

Пряма секретність

Сучасні протоколи обміну ключами створюють для кожного сеансу нові тимчасові («ефемерні») ключі й потім їх знищують. Припустімо, довгостроковий закритий ключ сервера вкрали через кілька років. Старі записані сеанси зловмисник однаково не розшифрує: сеансових ключів уже ніде немає. Ця властивість називається прямою секретністю (forward secrecy), і TLS 1.3 її вимагає.

Проблема довіри

Відкриті ключі розв’язують питання секретності, але ставлять нове: це справді ключ Бориса чи зловмисника? Найпоширеніші відповіді:

  • Центри сертифікації (вебсайти). Довірена організація підписує сертифікат, що пов’язує ключ із доменом.
  • Довіра при першому підключенні (SSH). Комп’ютер запам’ятовує ключ сервера першого разу й попереджає, якщо ключ колись зміниться.
  • Ручна перевірка (месенджери). Ви звіряєте «код безпеки» чи QR-код зі співрозмовником особисто або телефоном.

А квантові комп’ютери?

Досить потужний квантовий комп’ютер зміг би зламати сучасні RSA та алгоритми на еліптичних кривих. Симетричні алгоритми він лише послабив би: 256-бітний ключ AES лишається надійним. Тому організації зі стандартизації вже затвердили постквантові алгоритми з відкритим ключем. У 2024 році NIST стандартизував ML-KEM для обміну ключами та ML-DSA для підписів. Браузери й месенджери вже використовують гібридний обмін ключами, що поєднує класичний алгоритм із постквантовим.

Що обрати?

Як користувач ви зазвичай нічого не обираєте: це роблять браузер, операційна система й застосунки. Як розробник не пишіть жодне з них самотужки. Використовуйте перевірені бібліотеки та протоколи: TLS для з’єднань, libsodium або криптографічний API платформи для даних, age чи GPG для файлів. Збережені дані зазвичай шифрують симетричним ключем (наприклад, AES-256-GCM). Відкриті ключі потрібні, коли дані треба передати людям або системам, з якими ви не можете заздалегідь зустрітися.

Підсумок

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