Це питання часто виникає під час розмов про автентифікацію/авторизацію, різницю між HTTP та HTTPS, а також про TLS. Нижче коротко розберемо, чим відрізняються симетричні та асиметричні ключі, а також їхні переваги та недоліки.
Симетричний ключ
Симетричне шифрування - це коли один і той самий ключ використовується як для шифрування так і для розшифрування даних. Так як ми використовуємо тільки один ключ, такий підхід дуже простий в використанні і процес шифрування/розшифрування даних набагато швидший, ніж при асиметричному шифруванні.
Очевидним недоліком такого підходу є безпека. Обидві сторони(шифрування і розшифрування) мають отримати один і той самий ключ, але якщо передати його небезпечно зловмисник зможе читати всі повідомлення, зашифровані цим ключем. З цим можна боротись і найчастіше використовують 2 підходи:
- Використання асиметрії, щоб отримати спільний симетричний ключ.
- Використання сторонніх сервісів для керування ключами, наприклад AWS KMS, GCP KMS, Azure Key Vault…
Асиметричний ключ
Асиметричне шифрування - це коли ми використовуємо пару ключів для шифрування(публічний) і розшифрування(приватний) даних. Він має рід переваг над симетричним шифруванням, завдяки кращій безпеці та гнучкості.
Те як працює пара public/private ключів - це окреме запитання яке ви точно почуєте на інтервʼю тому ми винесли його в окреме запитання. Ось тут можеш ознайомитись з ним.
Недоліки в такого підходу теж є, наприклад:
- З точки зору CPU, асиметричне шифрування набагато дорожче і це проблема при великих обʼємах даних тому зазвичай асиметрію використовують для обміну секретом. А для самого процесу шифрування/розшифрування використовують симетрію.
- Key management при такому підході доволі складна задача. Тому реалізацію ротації, відкликання ключів, контролю доступу…здебільшого перекидають на third party по типу AWS KMS.