Криптография с открытым ключом, или асимметричная криптография, использует пару математически связанных ключей: открытый, которым можно делиться с кем угодно, и закрытый, который владелец хранит в секрете.
Как работает асимметричная криптография
Данные, зашифрованные открытым ключом, расшифровываются только соответствующим закрытым ключом, а подпись, созданную закрытым ключом, может проверить любой обладатель открытого. Вычислить закрытый ключ по открытому практически невозможно, поскольку это требует решения трудных математических задач:
- Факторизация целых чисел — основа RSA, опубликованного в 1977 году.
- Дискретное логарифмирование — на нём построены протокол Диффи — Хеллмана (1976) и DSA.
- Эллиптические кривые — ECDSA, Ed25519 и X25519 обеспечивают ту же стойкость при гораздо более коротких ключах.
Концепцию опубликовали Уитфилд Диффи и Мартин Хеллман в 1976 году; исследователи британского GCHQ пришли к похожим идеям раньше, но их работа оставалась секретной до 1997 года.
Как применяется
Асимметричные алгоритмы медленные, поэтому их используют в основном для согласования или защиты симметричных сеансовых ключей и для создания цифровых подписей. На них держатся TLS и HTTPS, вход по SSH, подпись кода, PGP и S/MIME, криптовалютные кошельки и passkeys. Чтобы доказать, что открытый ключ действительно принадлежит сайту или компании, центры сертификации выпускают цифровые сертификаты, образуя инфраструктуру открытых ключей (PKI).
Риски безопасности
Слабым местом обычно оказывается не математика, а обращение с ключами. Украденные закрытые ключи позволяют подписывать вредоносное ПО: драйверы Stuxnet (2010) были подписаны сертификатами, похищенными у Realtek и JMicron. Плохой генератор случайных чисел, как в ошибке OpenSSL в Debian 2008 года, давал предсказуемые ключи. В долгосрочной перспективе алгоритм Шора на большом квантовом компьютере взломает RSA и схемы на эллиптических кривых, поэтому уже внедряются постквантовые алгоритмы.
- Хранить закрытые ключи в HSM, TPM или смарт-картах.
- Использовать RSA длиной не менее 2048 бит или современные эллиптические кривые.
- Оперативно менять и отзывать ключи при любом подозрении на компрометацию.