Сертификаты, списки доверия, файлы обмена личной информацией предназначены для установки открытых и закрытых ключей шифрования и электронной цифровой подписи
модуль представляет собой профессионально разработанный компонент на языке программирования Delphi, предназначенный для работы с аппаратными генераторами случайных чисел (HWRNG) на основе инструкций процессора RDRAND и RDSEED. Давайте подробно рассмотрим структуру, функциональность и особенности данного компонента.
Общая характеристика модуля
Назначение: Компонент предназначен для получения высококачественной энтропии (случайных данных) непосредственно с аппаратуры компьютера, используя специализированные инструкции процессоров Intel и AMD — RDRAND и RDSEED. Эти инструкции обеспечивают генерацию высококачественных случайных чисел, используемых преимущественно в криптографических целях.
Авторские права и лицензия: Автором является Рудой Андрей Игоревич, указанный временный промежуток разработки — с 2005 по 2025 гг., что подразумевает долгосрочную разработку и сопровождение проекта.
Основные классы и исключения
Класс THardwareEntropy
Данный класс реализует основной функционал взаимодействия с аппаратурой и управления процессом генерации случайных данных.
Методы класса:
Проверка поддержки инструкций процессора
CheckRDRANDSupport: проверяет наличие поддержки инструкции RDRAND.
CheckRDSEEDSupport: проверяет наличие поддержки инструкции RDSEED.
Получение случайных значений
TryRDRAND32: попытка получить одно 32-разрядное случайное число через инструкцию RDRAND.
TryRDSEED32: попытка получить одно 32-разрядное случайное число через инструкцию RDSEED.
Сбор энтропии
CollectRDRAND: собирает заданное количество байтов энтропии с использованием RDRAND.
CollectRDSEED: собирает заданное количество байтов энтропии с использованием RDSEED.
CollectEntropy: универсальный метод, использующий предпочтительно RDSEED, если доступно, иначе RDRAND.
Вспомогательные методы:
AddToPool: добавляет собранные данные в пул энтропии.
GetHardwareSupport: возвращает информацию о доступности инструкций RDRAND и RDSEED.
Исключения:
EHardwareEntropyError: специальное исключение, которое выбрасывается при ошибках аппаратного генератора энтропии (например, отсутствие поддержки инструкций процессором).
Особенности реализации
Использование низкоуровневых инструкций процессора:Для максимальной производительности и минимизации задержек используется прямой вызов инструкций RDRAND и RDSEED посредством встроенного ассемблерного кода.
Поддержка стандартов безопасности:Компонент соответствует стандартам NIST SP 800-90A/B/C, FIPS 140-2 и ANSI X9.82, что гарантирует соответствие современным требованиям к качеству и безопасности случайных чисел.
Исключительная надежность:Реализована система обработки ошибок и многократных попыток получения случайных данных, что обеспечивает высокую устойчивость к сбоям оборудования.
Универсальность и гибкость:Возможность выбора метода генерации случайных чисел позволяет адаптироваться к различным конфигурациям оборудования и потребностям приложений.
Возможные сценарии использования
Данный модуль идеально подходит для следующих областей:
Генерация криптографических ключей и сессионных секретов.
Создание уникальных идентификаторов и маркеров аутентификации.
Обеспечение безопасности транзакционных систем и финансовых операций.
Использование в системах шифрования и цифровой подписи.
имеют идентичный базовый класс THardwareEntropy с аналогичной логикой проверки поддержки инструкций и получения случайных значений;
выбрасывают исключение EHardwareEntropyError при ошибках;
используют низкоуровневые ассемблерные вставки для вызова инструкций RDRAND/RDSEED (до 10 попыток на значение).
Ключевые отличия
Назначение и область применения
HardwareEntropy — чистая библиотека для получения энтропии. Ориентирована на программную интеграцию без визуального интерфейса.
HardwareEntropyUI — версия с поддержкой UI, предназначена для приложений с графическим интерфейсом (VCL), позволяет визуализировать процесс сбора энтропии.
HardwareEntropyUI: дополнительно Vcl.ComCtrls (для TProgressBar).
Функциональные различия
В HardwareEntropyUI добавлен метод UpdateProgress(Current, Total: Integer) для обновления индикатора прогресса.
Методы сбора энтропии (CollectRDRAND, CollectRDSEED, CollectEntropy) в HardwareEntropyUI принимают дополнительный параметр ProgressBar: TProgressBar и отображают ход выполнения.
В HardwareEntropyUI есть метод IsHardwareEntropyAvailable: Boolean для быстрой проверки доступности генераторов.
В HardwareEntropy есть метод AddToPool для добавления данных в пул энтропии (в UI‑версии отсутствует).
Поведение при сборе энтропии
HardwareEntropy: работает «в фоне», не информирует пользователя о прогрессе.
HardwareEntropyUI:
настраивает TProgressBar (min=0, max=100);
обновляет позицию и подсказку (Hint) прогресс‑бара;
использует TThread.Synchronize для безопасного обновления UI из потока;
добавляет задержку Sleep(1) для визуальной плавности при малых объёмах данных.
Обработка ресурсов
HardwareEntropyUI явно управляет ссылкой на ProgressBar (сохраняет в FProgressBar, сбрасывает после завершения).
HardwareEntropy не имеет UI‑связанных полей.
Преимущества каждого модуля
HardwareEntropy:
минималистичность и отсутствие зависимостей от VCL;
подходит для серверных/фоновых задач, где не нужен UI;
имеет метод AddToPool для расширения пула энтропии;
ниже накладные расходы (нет синхронизации с UI).
HardwareEntropyUI:
визуальная обратная связь для пользователя (прогресс‑бар);
удобство интеграции в десктопные приложения с интерфейсом;
метод IsHardwareEntropyAvailable для быстрой проверки доступности генераторов;
безопасная работа с UI через TThread.Synchronize.
Эффективность
Производительность:
HardwareEntropy чуть быстрее за счёт отсутствия UI‑синхронизации.
HardwareEntropyUI имеет накладные расходы на обновление прогресс‑бара (особенно заметно при малых объёмах данных).
Надёжность: одинаковая, так как базовая логика получения энтропии идентична.
Потребление памяти: практически идентично (разница только в поле FProgressBar в UI‑версии).
Масштабируемость:
HardwareEntropy лучше подходит для высоконагруженных сервисов.
HardwareEntropyUI оптимален для интерактивных приложений, где важна наглядность.
Вывод
Выбирайте HardwareEntropy, если нужно:
интегрировать генерацию энтропии в серверный код;
минимизировать зависимости;
работать с пулом энтропии через AddToPool.
Выбирайте HardwareEntropyUI, если:
разрабатываете десктопное приложение с визуальным интерфейсом;
Включает удобный инструмент для отслеживания процесса сбора энтропии.
Лучше интегрирован в Windows-приложения с графическим интерфейсом.
Повышенная наглядность благодаря отображению прогресса.
Подходит для клиентских приложений с пользовательским интерфейсом.
Эффективность
Обе библиотеки одинаково эффективны в плане производительности. Разница заключается лишь в предоставлении дополнительной функциональности, связанной с отображением прогресса.
Однако использование HardwareEntropyUI рекомендуется, если вам необходим визуальный контроль над процессом сбора энтропии, особенно в приложениях с графическим интерфейсом. В противном случае HardwareEntropy является оптимальным выбором для большинства ситуаций.