Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
hqc-x86-simd — Implementazioni ottimizzate di HQC post-quantum KEM per AVX2 e AVX-512 con GFNI, più una suite unificata di benchmarking e NIST KAT per gateway IoT x86. | Kitploit
Strumenti/GitHubGitHub/jihoonjang98/hqc-x86-simd
Sicurezza Sistemi EmbeddedStrumenti di Crittografia/DecrittografiaSicurezza IoTCrittografiaSicurezza Hardware e IoTPaper e Ricerca
GitHubjihoonjang98/hqc-x86-simd

hqc-x86-simd

Implementazioni ottimizzate di HQC post-quantum KEM per AVX2 e AVX-512 con GFNI, più una suite unificata di benchmarking e NIST KAT per gateway IoT x86.

Vedi Repository
121 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Implementazioni HQC ottimizzate per AVX2 e AVX-512

Questo repository contiene le implementazioni HQC ottimizzate e il codice di benchmarking che accompagnano l'articolo "Accelerating HQC for Post-Quantum TLS 1.3 on x86 IoT Gateways". È un fork del repository ufficiale HQC, esteso con implementazioni AVX-512 + GFNI e una suite di misurazione unificata che compila ogni implementazione confrontata dalla stessa base di codice, dagli stessi flag del compilatore e dallo stesso protocollo di benchmark.

Tutte le implementazioni superano i NIST known-answer test (KAT) per HQC-1, HQC-3, e HQC-5, e mantengono il flusso di controllo e il pattern di accesso alla memoria indipendenti dall'input dell'implementazione di riferimento.

Implementazioni

Ogni variante sotto src/x86_64/ viene selezionata in fase di configurazione con -DHQC_X86_IMPL=<variant> e viene compilata in una propria libreria e in propri binari di test.

VarianteEtichetta nell'articoloISADescrizione
avx256HQC referenceAVX2implementazione ottimizzata ufficiale (baseline)
avx256_TC_JangJang et al.AVX2moltiplicazione GFmulOpt Toom-Cook/Karatsuba
avx256_TC_GFNIOurs (AVX2)AVX2+GFNIi nostri decoder GFNI Reed-Solomon / Reed-Muller sulla build AVX2
avx256_FAFFT_GFNI_chenChen et al.AVX2+GFNImoltiplicazione FAFFT, flusso originale non cached
avx256_FAFFT_GFNI_chen_x2Chen et al. (dagger)AVX2+GFNIFAFFT con il flusso ring_mul_x2 a operandi condivisi
avx256_FAFFT_GFNI_oursOurs FAFFT (AVX2)AVX2+GFNIFAFFT + conversione di base zero-tail + i nostri decoder
avx512_RobertRobert–VéronAVX-512moltiplicazione polinomiale AVX-512 di Robert–Véron
avx512_CabralCabral et al.AVX-512+GFNIcodice sorgente di Cabral et al. (include la loro correzione upstream hash_j di HQC-3 del 2026-07-21)
avx512_TC_GFNIOurs TC/Karat (AVX-512)AVX-512+GFNIToom-Cook/Karatsuba AVX-512, decoder GFNI, Keccak AVX-512
avx512_FAFFT_GFNIOurs FAFFT (AVX-512)AVX-512+GFNIport AVX-512 dell'implementazione AVX2 di Chen et al.

Le due build Ours di ciascuna ISA differiscono solo nel moltiplicatore polinomiale, quindi il loro confronto end-to-end isola la scelta del moltiplicatore.

Compilazione

Requisiti: GCC >= 12, CMake >= 3.21, una CPU x86-64. Le varianti AVX-512 richiedono AVX-512F/BW/DQ/VL/VBMI/VBMI2/IFMA/BITALG/VPOPCNTDQ, VPCLMULQDQ e GFNI (Ice Lake / Tiger Lake / Rocket Lake / Zen 4 o successivi).

# una variante
mkdir build-avx512_TC_GFNI && cd build-avx512_TC_GFNI
cmake -DHQC_ARCH=x86_64 -DHQC_X86_IMPL=avx512_TC_GFNI ..
cmake --build . -j

# oppure tutte le varianti in una volta (crea le directory build-<variant>/)
./build_all.sh

Known-answer test

# dalla radice del repository, dopo la compilazione
bash scripts/run_kat.sh                      # tutte le varianti
bash scripts/run_kat.sh avx512_TC_GFNI       # una variante

Nota: test_kat_hqc_* non stampa nulla in caso di successo e stampa righe contenenti bad in caso di mancata corrispondenza; lo script filtra l'output di conseguenza.

Benchmark

Il protocollo dell'articolo: Turbo Boost e SMT disabilitati, il processo vincolato a un core fisico, e ogni valore riportato è la mediana di 1.000 campioni di 100 iterazioni dopo 10.000 iterazioni di warm-up. Gli script vincolano al core 0 con taskset.

bash scripts/measure_build.sh <variant> [...]  # benchmark KEM end-to-end delle varianti indicate

I log grezzi vengono scritti in benchmark_results/raw/; il report del benchmark riporta min/mediana/media, e la mediana è il valore citato nell'articolo.

Struttura del repository

src/common/          codice HQC indipendente dal set di parametri (livello KEM, coding)
src/ref/             implementazione di riferimento
src/x86_64/common/   codice condiviso dell'era AVX2
src/x86_64/<variant> una directory per ogni implementazione confrontata (vedi tabella)
lib/fips202/         Keccak (PQClean scalare + permutazione XKCP AVX-512 opzionale)
tests/               KAT, API, unit test, benchmark
kats/                file known-answer usati dai test KAT
scripts/             script di supporto per KAT e misurazioni

Licenza e attribuzione

Il repository di base e le nostre aggiunte sono rilasciati nel pubblico dominio (vedi LICENSE). Questo repository include inoltre implementazioni di terze parti per scopi di misurazione; vedi THIRD_PARTY_NOTICES.md per le loro pubblicazioni, origini e licenze.

Scarica lo strumento