Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
hqc-x86-simd — Оптимизированные реализации постквантового KEM HQC для AVX2 и AVX-512 с GFNI, а также унифицированный набор для бенчмаркинга и NIST KAT для IoT-шлюзов на x86. | Kitploit
Инструменты/GitHubGitHub/jihoonjang98/hqc-x86-simd
Безопасность встроенных системИнструменты шифрования/дешифрованияБезопасность IoTКриптографияБезопасность оборудования и IoTСтатьи и Исследования
GitHubjihoonjang98/hqc-x86-simd

hqc-x86-simd

Оптимизированные реализации постквантового KEM HQC для AVX2 и AVX-512 с GFNI, а также унифицированный набор для бенчмаркинга и NIST KAT для IoT-шлюзов на x86.

Репозиторий
121 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Оптимизированные реализации HQC для AVX2 и AVX-512

Этот репозиторий содержит оптимизированные реализации HQC и код для бенчмаркинга, сопровождающие статью "Accelerating HQC for Post-Quantum TLS 1.3 on x86 IoT Gateways". Это форк официального репозитория HQC, расширенный реализациями AVX-512 + GFNI и унифицированным набором для измерений, который собирает каждую сравниваемую реализацию из одной и той же кодовой базы, флагов компилятора и протокола бенчмаркинга.

Все реализации проходят тесты на известные ответы (KAT) NIST для HQC-1, HQC-3 и HQC-5 и сохраняют независимый от входных данных поток управления и шаблон доступа к памяти эталонной реализации.

Реализации

Каждый вариант в src/x86_64/ выбирается на этапе конфигурации с помощью -DHQC_X86_IMPL=<variant> и собирается в собственную библиотеку и тестовые бинарники.

ВариантОбозначение в статьеISAОписание
avx256HQC referenceAVX2официальная оптимизированная реализация (базовая)
avx256_TC_JangJang et al.AVX2умножение GFmulOpt Toom-Cook/Karatsuba
avx256_TC_GFNIOurs (AVX2)AVX2+GFNIнаши декодеры GFNI Reed-Solomon / Reed-Muller в сборке AVX2
avx256_FAFFT_GFNI_chenChen et al.AVX2+GFNIумножение FAFFT, оригинальный поток без кэширования
avx256_FAFFT_GFNI_chen_x2Chen et al. (dagger)AVX2+GFNIFAFFT с потоком ring_mul_x2 с общими операндами
avx256_FAFFT_GFNI_oursOurs FAFFT (AVX2)AVX2+GFNIFAFFT + преобразование базиса с нулевым хвостом + наши декодеры
avx512_RobertRobert–VéronAVX-512умножение полиномов Robert–Véron AVX-512
avx512_CabralCabral et al.AVX-512+GFNIисходный код от Cabral et al. (включает их исправление hash_j для HQC-3 от 2026-07-21)
avx512_TC_GFNIOurs TC/Karat (AVX-512)AVX-512+GFNIAVX-512 Toom-Cook/Karatsuba, декодеры GFNI, Keccak AVX-512
avx512_FAFFT_GFNIOurs FAFFT (AVX-512)AVX-512+GFNIпорт реализации AVX2 от Chen et al. на AVX-512

Две сборки Ours для каждой ISA различаются только умножителем полиномов, поэтому их сквозное сравнение изолирует выбор умножителя.

Сборка

Требования: GCC >= 12, CMake >= 3.21, x86-64 CPU. Варианты AVX-512 требуют AVX-512F/BW/DQ/VL/VBMI/VBMI2/IFMA/BITALG/VPOPCNTDQ, VPCLMULQDQ и GFNI (Ice Lake / Tiger Lake / Rocket Lake / Zen 4 или новее).

# один вариант
mkdir build-avx512_TC_GFNI && cd build-avx512_TC_GFNI
cmake -DHQC_ARCH=x86_64 -DHQC_X86_IMPL=avx512_TC_GFNI ..
cmake --build . -j

# или все варианты сразу (создаёт каталоги build-<variant>/)
./build_all.sh

Тесты на известные ответы

# из корня репозитория, после сборки
bash scripts/run_kat.sh                      # все варианты
bash scripts/run_kat.sh avx512_TC_GFNI       # один вариант

Примечание: test_kat_hqc_* ничего не выводит при успехе и выводит строки, содержащие bad, при несовпадении; скрипт выполняет grep вывода соответствующим образом.

Бенчмарки

Протокол из статьи: Turbo Boost и SMT отключены, процесс привязан к одному физическому ядру, и каждое приведённое значение — медиана 1000 выборок по 100 итераций после 10 000 итераций прогрева. Скрипты привязываются к ядру 0 с помощью taskset.

bash scripts/measure_build.sh <variant> [...]  # сквозной бенчмарк KEM для указанных вариантов

Сырые логи записываются в benchmark_results/raw/; бенчмарк выводит min/median/mean, и медиана — это значение, цитируемое в статье.

Структура репозитория

src/common/          независимый от набора параметров код HQC (слой KEM, кодирование)
src/ref/             эталонная реализация
src/x86_64/common/   общий код эпохи AVX2
src/x86_64/<variant> по одному каталогу на каждую сравниваемую реализацию (см. таблицу)
lib/fips202/         Keccak (скалярный PQClean + опциональная перестановка XKCP AVX-512)
tests/               KAT, API, модульные тесты, бенчмарки
kats/                файлы известных ответов, используемые тестами KAT
scripts/             вспомогательные скрипты для KAT и измерений

Лицензия и атрибуция

Базовый репозиторий и наши дополнения выпущены в общественное достояние (см. LICENSE). Этот репозиторий дополнительно включает сторонние реализации для целей измерений; см. THIRD_PARTY_NOTICES.md для их публикаций, происхождения и лицензий.

Скачать инструмент