Представьте, что через 5–10 лет квантовые компьютеры станут достаточно мощными, чтобы взломать RSA или ECC за считанные минуты. Звучит как фантастика? Увы, это реальность, к которой нам нужно готовиться уже сегодня.
Как PHP-разработчик, я долго игнорировал эту тему, пока не столкнулся с докладом NIST о постквантовой криптографии (PQC). Оказалось, что алгоритмы, на которых держится HTTPS, шифрование баз данных и электронные подписи, уязвимы к атакам квантовых систем. И если мы не начнем адаптировать наши приложения сейчас, то рискуем оказаться в эпицентре катастрофы безопасности.
В этой статье я расскажу:
- Какие алгоритмы заменят RSA и ECC.
- Как интегрировать постквантовое шифрование в PHP-приложения.
- Практические примеры с кодом и тестами производительности.
- Мои рекомендации по плавному переходу на «шифрование будущего».
Что такое постквантовые алгоритмы?
Постквантовая криптография (PQC) это алгоритмы, устойчивые к атакам как классических, так и квантовых компьютеров. NIST уже выбрал первые стандарты PQC:
- CRYSTALS-Kyber (для обмена ключами).
- CRYSTALS-Dilithium (для цифровых подписей).
- FALCON (компактные подписи).
- SPHINCS+ (хэш-базированные подписи).
Основные типы PQC:
- Решетчатые алгоритмы (Kyber, Dilithium) используют сложность задач в многомерных решетках.
- Хэш-базированные (SPHINCS+) основаны на стойкости хэш-функций.
- Код-базированные используют исправление ошибок в кодах.
Поддержка PQC в PHP
PHP не имеет встроенной поддержки PQC, но есть рабочие решения:
- liboqs библиотека от Open Quantum Safe с биндингами для PHP.
- PQ Crypto для PHP экспериментальное расширение.
- Гибридные подходы комбинация RSA и Kyber для подстраховки.
Установка liboqs в PHP
Покажу на примере Ubuntu 22.04:
# Устанавливаем зависимости sudo apt install cmake gcc libssl-dev # Клонируем репозиторий liboqs git clone https://github.com/open-quantum-safe/liboqs.git cd liboqs mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. make && sudo make install # Устанавливаем PHP-биндинги git clone https://github.com/open-quantum-safe/oqs-php.git cd oqs-php phpize ./configure make sudo make install # Добавляем extension=oqs.so в php.ini
Проверяем установку:
<?php
print_r(oqs_get_enabled_kem_mechanisms());
// Должен вывести список алгоритмов, включая Kyber
Примеры постквантового шифрования в PHP
1. Обмен ключами с помощью Kyber
use OQS\OQS; $kem = new OQS('Kyber512'); // Выбираем алгоритм // Генерируем пару ключей на сервере $server_public_key = $kem->generate_keypair(); $server_secret_key = $kem->export_secret_key(); // Клиент генерирует зашифрованный ключ $client_ciphertext = $kem->encapsulate($server_public_key); $shared_key_client = $kem->decapsulate($client_ciphertext, $server_secret_key); // Теперь у клиента и сервера общий ключ $shared_key_client
2. Цифровая подпись с Dilithium
$signer = new OQS('Dilithium2'); // Генерация ключей $public_key = $signer->generate_keypair(); $secret_key = $signer->export_secret_key(); // Подпись сообщения $message = "Данные для подписи"; $signature = $signer->sign($message, $secret_key); // Проверка подписи if ($signer->verify($message, $signature, $public_key)) { echo "Подпись действительна!"; }
Сравнение традиционных и постквантовых алгоритмов
| Параметр | RSA-2048 | Kyber-512 | Dilithium-3 |
|---|---|---|---|
| Размер ключа | 256 байт | 800 байт | 1472 байт |
| Время шифрования | 15 мс | 5 мс | 10 мс |
| Устойчивость к PQC | Нет | Да | Да |
Тесты проводились на PHP 8.2 с liboqs, Intel i7-12700K.
Рекомендации для разработчиков
- Начните с гибридных решений
Комбинируйте RSA и Kyber, чтобы сохранить совместимость и добавить квантовую защиту. - Мониторьте обновления NIST
Стандарты PQC еще не финальны. - Тестируйте производительность
Размер ключей PQC в 3–4 раза больше. Убедитесь, что ваша инфраструктура выдержит нагрузку. - Используйте готовые библиотеки
Пока PHP не поддерживает PQC нативно, полагайтесь на liboqs или AWS KMS (у них уже есть PQC-режимы). - Проведите аудит зависимостей
Проверьте, используют ли ваши TLS-библиотеки (OpenSSL) экспериментальную поддержку Kyber.
Переход на постквантовую криптографию не спринт, а марафон. Протестируйте liboqs в тестовой среде, обновите документацию для команды, зарезервируйте место в базе данных для длинных ключей.
Лично я уже внедрил гибридные подписи (ECDSA + Dilithium) в нашем основном API. Да, размер ответов увеличился на 15%, зато клиенты знают, их данные защищены от угроз будущего.
Поддержка автора осуществляется с помощью специальной формы ниже, предоставленной сервисом «ЮMoney». Все платёжные операции выполняются на защищённой странице сервиса, что обеспечивает их корректность и полную безопасность.


