Введение

Процесс генерации ключей в криптографии. Генерация ключей — это процесс создания ключей, используемых в криптографии. Ключ применяется для шифрования и расшифровки данных. Устройство или программа для генерации ключей называется генератором ключей или keygen.

Генерирование в криптографии

Современные криптографические системы включают алгоритмы симметричного шифрования (такие как DES и AES) и алгоритмы с открытым ключом (такие как RSA). В алгоритмах симметричного шифрования используется один общий ключ; для сохранения секретности данных необходимо сохранять этот ключ в тайне. Алгоритмы с открытым ключом используют открытый и закрытый ключи. Открытый ключ находится в открытом доступе (часто посредством цифрового сертификата). Отправитель шифрует данные открытым ключом получателя; расшифровать эти данные может только владелец закрытого ключа. Поскольку алгоритмы с открытым ключом, как правило, значительно медленнее алгоритмов симметричного шифрования, современные системы, такие как TLS и SSH, используют их комбинацию: одна сторона получает открытый ключ другой и шифрует небольшой объем данных (либо симметричный ключ, либо данные, используемые для его генерации). Остальная часть обмена данными использует (обычно более быстрый) алгоритм симметричного шифрования. Компьютерная криптография использует целые числа для ключей. В некоторых случаях ключи генерируются случайным образом с помощью генератора случайных чисел (ГСЧ) или генератора псевдослучайных чисел (ГПСЧ). ГПСЧ — это компьютерный алгоритм, который генерирует данные, кажущиеся случайными при анализе. ГПСЧ, использующие системную энтропию для инициализации данных, обычно дают лучшие результаты, поскольку это затрудняет злоумышленнику угадывание начальных условий ГПСЧ. Другой способ генерации случайности — использование информации извне системы. Veracrypt (программное обеспечение для шифрования дисков) использует движения мыши пользователя для создания уникальных начальных значений, и пользователям рекомендуется перемещать мышь хаотично. В других случаях ключ выводится детерминированно с использованием парольной фразы и функции вывода ключа. Многие современные протоколы разработаны с учетом прямой секретности (forward secrecy), что требует генерации нового общего ключа для каждой сессии. Классические криптосистемы неизменно генерируют два идентичных ключа на одном конце канала связи и каким-то образом передают один из ключей на другой конец. Однако использование обмена ключами Диффи — Хеллмана упрощает управление ключами. Самый простой способ прочитать зашифрованные данные без их фактического расшифрования — это атака полным перебором, заключающаяся в последовательной попытке всех возможных значений до максимальной длины ключа. Поэтому важно использовать достаточно большую длину ключа; увеличение длины ключа экспоненциально увеличивает время, необходимое для атаки, делая атаку полным перебором непрактичной. В настоящее время распространены длины ключей 128 бит (для алгоритмов симметричного шифрования) и 2048 бит (для алгоритмов с открытым ключом).

Беспроводные каналы

Беспроводный канал характеризуется двумя конечными пользователями. Передавая пилотные сигналы, эти пользователи могут оценить канал связи между собой и использовать полученную информацию о канале для генерации ключа, известного только им. Общий секретный ключ для группы пользователей может быть сгенерирован на основе каналов связи между каждой парой пользователей.

Оптические волокна

Ключ также может быть сгенерирован за счет использования флуктуаций фазы в волоконно-оптической линии связи.