Симетричне й асиметричне шифрування: у чому різниця
Симетричне шифрування використовує один спільний ключ, асиметричне — пару ключів. Як працює кожне, чому 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 може зашифрувати лише повідомлення, коротше за свій ключ. Тому самі дані асиметричним шифруванням майже ніколи не шифрують.
Гібридне шифрування: як реальні системи поєднують обидва
Справжні протоколи за допомогою асиметричної криптографії домовляються про симетричний ключ і далі користуються ним для всього іншого:
- Сторони виконують обмін ключами, зазвичай Діффі–Геллмана на еліптичних кривих (ECDHE). Кожна поєднує своє закрите значення з відкритим значенням іншої й отримує однаковий спільний секрет. Сам секрет мережею не передається.
- Сервер підтверджує, хто він, цифровим підписом свого закритого ключа. Сертифікат прив’язує цей ключ до доменного імені.
- Обидві сторони виводять зі спільного секрету симетричні сеансові ключі.
- Усі дані — сторінки, паролі, файли — шифруються швидким симетричним алгоритмом, наприклад 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). Відкриті ключі потрібні, коли дані треба передати людям або системам, з якими ви не можете заздалегідь зустрітися.
Підсумок
Симетричне шифрування швидке, але потребує спільного секрету. Асиметричне знімає потребу передавати секрет і дає підписи, але повільне. Захищені системи відкритими ключами домовляються про симетричний ключ і підтверджують особу, а дані потім шифрують симетрично.