Що таке публічний ключ: різниця між публічним і приватним ключем

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

Ілюстрація до статті: Що таке публічний ключ: різниця між публічним і приватним ключем

Публічний (відкритий) ключ — це половина пари ключів, на якій тримається сучасна криптографія. Його можна опублікувати, надіслати поштою чи розмістити на сайті, і це безпечно за задумом: публічний ключ уміє лише «замикати» дані й перевіряти підписи. Друга половина, приватний ключ, лишається в секреті — тільки ним можна відімкнути замкнене публічним ключем і створити дійсний підпис. У цій статті — як виглядає публічний ключ, для чого він, чим відрізняється від приватного і як правильно поводитися з обома.

Коротка відповідь

Публічний ключ — це довге число, зазвичай показане як блок літер і цифр, математично пов’язане з приватним ключем. Зв’язок працює лише в один бік. Будь-хто, хто має публічний ключ, може:

  • зашифрувати повідомлення так, що прочитати його зможе лише власник відповідного приватного ключа;
  • перевірити цифровий підпис — переконатися, що файл підписано саме цим приватним ключем і що його відтоді не змінювали.

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

Аналогія: відкритий навісний замок

Уявіть, що ви роздаєте всім охочим відкриті навісні замки. Друг кладе лист у скриньку й защіпає ваш замок. Після цього навіть він не може її відкрити — лише ваш ключ. Замок — це публічний ключ: роздавати його нічого не коштує. Ключ на вашій в’язці — приватний: якщо загубити, скриньки не відкриє ніхто, якщо його скопіюють — відкриють усі.

Аналогія описує шифрування. Підписи працюють навпаки: приватним ключем ви ставите позначку, яку могли зробити лише ви, а будь-хто з публічним ключем її перевіряє. Докладніше — у статті як працюють цифрові підписи.

Як виглядає публічний ключ

Ключі — це двійкові дані, тому їх показують у текстових кодуваннях:

  • Публічний ключ SSH — один рядок, що починається з назви алгоритму: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... user@laptop.
  • Формат PEM — блок між -----BEGIN PUBLIC KEY----- і -----END PUBLIC KEY-----, його використовують TLS-бібліотеки та багато API.
  • Ключ PGP — довший блок для шифрованої пошти й підпису програм, зазвичай його називають коротким відбитком.

Оскільки ключі довгі, люди порівнюють відбитки (fingerprint) — короткий хеш ключа, наприклад SHA256:Qa3f.... Збігаються відбитки — збігаються й ключі.

Публічний і приватний ключ

Публічний ключ Приватний ключ
У кого є У будь-кого Лише у власника
Для чого Шифрувати, перевіряти підписи Розшифровувати, створювати підписи
Чи можна ділитися Так Ніколи
Якщо загубили Відновлюється з приватного Зашифровані дані й доступ втрачено
Якщо витік Нічого страшного Зловмисник може діяти від вашого імені й читати повідомлення

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

Де ви щодня користуєтесь публічними ключами

  • HTTPS. Кожен сайт із замочком надсилає сертифікат зі своїм публічним ключем. Браузер встановлює з його допомогою шифроване з’єднання й перевіряє підпис сертифіката. Див. як працюють HTTPS-сертифікати.
  • Вхід через SSH. Розробник кладе свій публічний ключ на сервер, і сервер пускає того, хто доведе володіння приватним ключем, без пароля. Як це налаштувати — у статті SSH-ключі.
  • Месенджери. Чати з наскрізним шифруванням обмінюються публічними ключами між телефонами, тож повідомлення читаються лише на пристроях із приватними ключами.
  • Оновлення програм. Операційні системи й магазини застосунків перевіряють підпис видавця публічним ключем перед встановленням. Див. як працюють оновлення.
  • Ключі доступу (passkeys). Passkey — це пара ключів: сайт зберігає лише ваш публічний ключ, тож викрадена база не містить нічого, чим можна увійти.

Найскладніше: довіра до ключа

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

Різні системи вирішують це по-різному. HTTPS покладається на центри сертифікації, які підписують ключі сайтів. SSH показує відбиток сервера під час першого підключення й попереджає, якщо він зміниться. Месенджери дозволяють звірити «коди безпеки» особисто. Правило одне: публічному ключу можна довіряти рівно настільки, наскільки надійно ви його отримали.

Практичні правила

  • Публічними ключами діліться вільно, а чужі отримуйте з надійного джерела й звіряйте відбитки, коли це важливо.
  • Ніколи не надсилайте приватний ключ поштою, у чаті чи в задачі. Якщо так сталося — створіть нову пару й приберіть старий публічний ключ звідусіль.
  • Захищайте приватні ключі паролем (passphrase) або зберігайте в апаратному ключі чи захищеному чипі телефона.
  • Обирайте сучасні алгоритми: Ed25519 або ECDSA для підписів, RSA — щонайменше 3072 біти.
  • Робіть резервну копію приватних ключів, що захищають важливі дані, наприклад зашифровані архіви.

Часті запитання

Чи можуть мене зламати, знаючи мій публічний ключ?

Ні. Публічний ключ створений для публікації. Ризик — лише витік приватного ключа або довіра до підробленого публічного.

Публічний ключ — це те саме, що пароль?

Ні. Пароль — спільний секрет, який знаєте і ви, і сервер. З парою ключів сервер зберігає лише публічний ключ і ніколи не бачить вашого секрету, тому ключі безпечніші за паролі.

Наскільки довгий публічний ключ?

Залежить від алгоритму. Публічний ключ Ed25519 — 32 байти, близько 68 символів у форматі SSH. Ключ RSA 3072 — приблизно 400 байт.

Чи можна використовувати одну пару скрізь?

Можна, але окремі пари для кожного пристрою обмежують шкоду від втрати й дозволяють відкликати доступ одного ноутбука.

Коротко: публічний ключ — це та половина пари, якою можна ділитися. Він шифрує й перевіряє; приватний розшифровує й підписує. Публікувати публічний ключ безпечно, а безпеку системи забезпечують захист приватного ключа й перевірка того, що публічний ключ справді належить заявленому власнику.