LIVE: New phishing campaigns targeting mobile users —View latest threats →

Back to Tutorials
Просунутий 16 хв читання

Криптографія з відкритим ключем: RSA, ECDSA та PGP

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

25 січня 2026 р.

Проблема, яку не може вирішити симетричне шифрування

До появи асиметричної криптографії все шифрування використовувало спільний секретний ключ — обидві сторони мали знати один і той самий пароль або ключ, щоб спілкуватися безпечно. Це створювало очевидну проблему курки та яйця: як безпечно обмінятися ключем у першу чергу? Ключ не можна зашифрувати самим собою, а особиста зустріч не масштабується на мільйони HTTPS-з'єднань.

Криптографія з відкритим ключем, розроблена в 1970-х роках Діффі, Хеллманом, Рівестом, Шаміром та Адлеманом, вирішує цю проблему за допомогою визначного математичного трюку: пара ключів, де те, що зашифрує один ключ, може розшифрувати лише інший. Один ключ розголошується публічно, інший залишається приватним. Ви можете розповсюджувати свій публічний ключ по всьому інтернету — зловмисник, який його перехопить, нічого не отримає.

Як працює RSA

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

Процес генерації ключа на високому рівні:

  1. Оберіть два великих випадкових простих числа p та q (кожне по 1024+ бітів)
  2. Обчисліть n = p × q (модуль, що робиться публічним)
  3. Обчисліть φ(n) = (p−1)(q−1)
  4. Оберіть публічну експоненту e (зазвичай 65537)
  5. Обчисліть приватну експоненту d таку, що e × d ≡ 1 (mod φ(n))

Публічний ключ — це (e, n). Приватний ключ — це (d, n). Шифрування: шифротекст = повідомлення^e mod n. Дешифрування: повідомлення = шифротекст^d mod n.

RSA використовується для обміну ключами та цифрових підписів, а не для масового шифрування даних — він на кілька порядків повільніший за AES. У TLS RSA (або ECDH) узгоджує сесійний ключ, а потім AES обробляє фактичний потік даних.

Мінімально рекомендований розмір ключа: 2048 бітів сьогодні; 3072 або 4096 бітів для довгострокової безпеки.

Криптографія на еліптичних кривих (ECC)

ECC забезпечує еквівалентну безпеку до RSA при значно менших розмірах ключів, що робить її кращим вибором для сучасних систем. 256-бітний ключ ECC забезпечує приблизно таку саму безпеку, що й 3072-бітний ключ RSA.

Замість факторизації простих чисел ECC спирається на задачу дискретного логарифму на еліптичній кривій: маючи початкову точку G на кривій та результат Q = k×G, знайти k є обчислювально неможливим. Приватний ключ — це скаляр k; публічний ключ — точка Q.

ECDSA (алгоритм цифрового підпису на еліптичній кривій) використовується для підпису — саме він захищає транзакції Bitcoin, рукостискання TLS 1.3 та сертифікати підпису коду. ECDH (обмін ключами Діффі-Хеллмана на еліптичній кривій) використовується для обміну ключами. Найпоширеніші криві: P-256 (NIST), P-384 та Curve25519 (яка відрізняється стійкістю до помилок реалізації та потенційних бекдорів у кривих NIST).

Цифрові підписи: підтвердження автентичності

Асиметрична криптографія не лише шифрує — вона дозволяє створювати цифрові підписи:

  1. Відправник обчислює хеш повідомлення (наприклад, SHA-256)
  2. Відправник шифрує хеш своїм приватним ключем — це і є підпис
  3. Одержувач розшифровує підпис публічним ключем відправника, щоб отримати хеш
  4. Одержувач самостійно хешує повідомлення та порівнює — якщо вони збігаються, повідомлення є автентичним і незміненим

Цифрові підписи забезпечують автентифікацію (лише власник приватного ключа міг підписати) та цілісність (будь-яка зміна повідомлення змінює хеш). Вони лежать в основі сертифікатів TLS, підпису коду та автентифікації електронної пошти (S/MIME, DKIM).

PGP та мережа довіри

PGP (Pretty Good Privacy) та його реалізація з відкритим кодом GPG застосовують криптографію з відкритим ключем до електронної пошти та шифрування файлів. Робочий процес:

  • Генерація пари ключів: gpg --full-generate-key
  • Експорт та поширення публічного ключа: gpg --export --armor you@example.com
  • Імпорт ключа контакту: gpg --import their_key.asc
  • Шифрування файлу: gpg --encrypt --recipient them@example.com secret.txt
  • Підпис повідомлення: gpg --sign --armor message.txt

PGP використовує модель мережі довіри: замість того, щоб покладатися на центральні центри сертифікації (ЦС), користувачі підписують ключі один одного, підтверджуючи їхню автентичність. Якщо Аліса довіряє Бобу, а Боб підписав ключ Керол, Аліса може поширити певний рівень довіри на Керол. Ця децентралізована модель контрастує з ієрархічною моделлю ЦС, що використовується в TLS.

Центри сертифікації та модель довіри TLS

Коли Ваш браузер підключається до https://bank.com, він перевіряє ідентичність сервера за допомогою сертифіката TLS — документа, що містить публічний ключ сервера, підписаний довіреним центром сертифікації. Ваша ОС та браузер попередньо завантажені з ~100–150 довіреними кореневими ЦС. Ланцюжок довіри: Кореневий ЦС → Проміжний ЦС → Сертифікат сервера.

Ця централізована модель має відомий недолік: будь-який довірений ЦС може підписати сертифікат для будь-якого домену. Засоби захисту включають Прозорість сертифікатів (усі видані сертифікати повинні бути публічно зареєстровані), записи CAA DNS (обмеження того, які ЦС можуть видавати сертифікати для Вашого домену) та HPKP (тепер застарілий на користь CT).

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

Традиційний обмін ключами RSA має критичний недолік: якщо зловмисник записує зашифрований трафік сьогодні і пізніше отримує приватний ключ сервера, він може розшифрувати всі раніше записані сесії. Досконала пряма секретність (PFS) вирішує цю проблему, використовуючи ефемерні ключі Діффі-Хеллмана або ECDH для кожної сесії — сесійний ключ ніколи не торкається диска і відкидається після використання. TLS 1.3 вимагає PFS. При аудиті конфігурації TLS сервера переконайтеся, що увімкнено лише набори шифрів ECDHE або DHE, а не статичний обмін ключами RSA.

#cryptography#RSA#public key#PGP#encryption