Стендап Сьогодні
📢 Канал в Telegram @stendap_sogodni
🦣 @stendap_sogodni@shevtsov.me в Федиверсі

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

18.07.2025

Приватний ключ як сервіс

Є такий цікавий сервіс, як AWS Key Management Service або аналогічний від Google, ну і так далі. Зазвичай з ними стикаються, коли треба щось десь зашифрувати — наприклад, відро (хахаха) у S3 чи зміст однієї з баз. Тому з першого погляду може виглядати так, що цей сервіс — внутрішня абстракція, та на цьому його користь закінчується.

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

На що таке потрібно? Ну, як, по-перше, то з KMS легко керувати дозволами на ключі, бо права задаються звичайним IAM. Можна кому завгодно дати можливість підпису, та не перейматися про те, що вони втечуть з приватним ключем. Це насправді величезна перевага.

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

До речі, а як щодо сертифікатів? Тут треба згадати, що сертифікат - це лише публічний ключ із додатковою інформацією. Хоч в KMS не можна зберігати сертифікати, але й потреби не має — достатньо підписати Certificate Signing Request ключем з KMS, та у вас буде сертифікат, яким можна підписувати теж через KMS. (Бо технічно, підписують ключем, а не сертифікатом.)

З недоліків, звісно, те, що зі звичайними інструментами KMS не працює. Тобто публічний ключ отримати легко та весь код, якому потрібний він, можна залишати без змін. А ось код підпису (чи шифрування) доведеться переписати з використанням API. Хоча оце тільки що дізнався, що для сховища ключів є стандартний інтерфейс PCKS 11, та існують реалізації його для KMS - тобто не все так погано.