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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
hsm — Libreria Zig per modulo di sicurezza hardware per token PIV, CAC e YubiKey tramite PC/SC. Supporta certificati, gestione PIN, firma e decifratura. | Kitploit
Strumenti/GitLabGitLab/devnw/zig/hsm
Strumenti di Crittografia/DecrittografiaCrittografiaSicurezza HardwareAutenticazione
GitLabdevnw/zig/hsm

hsm

Libreria Zig per modulo di sicurezza hardware per token PIV, CAC e YubiKey tramite PC/SC. Supporta certificati, gestione PIN, firma e decifratura.

Vedi Repository
1619 giorni 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

zhsm

Una libreria Hardware Security Module (HSM) per Zig che fornisce accesso PC/SC a token PIV, CAC e YubiKey.

Stato

AspettoInformazioni
Stabilità APISviluppo
Versione Zig0.16.0
PiattaformeLinux, macOS, Windows
LicenzaMIT

Caratteristiche

  • Supporto PIV (NIST SP 800-73-4)

    • Recupero certificati (slot 9A, 9C, 9D, 9E)
    • Verifica, cambio e sblocco PIN
    • Firma ECDSA P-256/P-384
    • Firma RSA 2048/3072/4096
    • Decifratura RSA
  • Supporto CAC (Common Access Card)

    • CAC moderni compatibili con PIV (operazioni complete)
    • Rilevamento applet PKI CAC legacy (solo selezione applet)
  • Supporto YubiKey

    • Operazioni applet PIV
    • Rilevamento basato su ATR
    • Comandi di gestione opzionali
  • Sicurezza

    • Nessun segreto nei log (modalità debug oscurata)
    • Azzeramento buffer sensibili
    • Parsing TLV rigoroso con limiti di profondità/lunghezza
    • Tipi di errore ristretti (nessun anyerror)
    • Verifica PIN legata alla sessione (rilevamento scambio scheda basato su ATR)
  • Operazioni parallele (tramite thread_pool)

    • Firma batch su più slot
    • Decifratura batch su più chiavi
    • Scoperta parallela token tra lettori
    • Recupero parallelo certificati tra slot
    • Fallback automatico sequenziale sotto soglia (< 2 elementi)
    • Abilitato per impostazione predefinita (-Denable_tp=true); disabilitare con -Denable_tp=false

Requisiti

  • Zig 0.16.0 o compatibile
  • Libreria PC/SC:
    • Linux: libpcsclite-dev (Debian/Ubuntu) o pcsc-lite-devel (Fedora)
    • macOS: PCSC.framework integrato
    • Windows: Winscard.dll integrato

Installazione di PC/SC su Linux

# Debian/Ubuntu
sudo apt-get install libpcsclite-dev pcscd

# Fedora/RHEL
sudo dnf install pcsc-lite-devel pcsc-lite

# Start the PC/SC daemon
sudo systemctl start pcscd
sudo systemctl enable pcscd

Compilazione

# Build and run unit tests
make

# Or using zig directly
zig build test

# Run simulator integration tests
zig build test -Dintegration_sim=true

# Build examples (requires PC/SC library installed)
zig build examples -Dlink_pcsc=true

Opzioni di compilazione

OpzionePredefinitoDescrizioneImpatto sulla sicurezza
integration_simfalseEsegui test di integrazione con simulatoreNessuno
hsm_hilfalseEsegui test hardware-in-loop (richiede token reale)Nessuno
link_pcscfalseCollega libreria PC/SC per esempiNessuno
include_simulatorDebug: true
Release: false
Includi simulatore PIV con chiavi di testCWE-321: Chiavi di test in produzione
allow_pcsc_env_overridefalseRISCHIO PER LA SICUREZZA: consenti variabile d'ambiente HSM_PCSC_LIB_PATHCWE-427: Caricamento libreria non fidato
fipsfalseInstrada crittografia di sicurezza attraverso il provider FIPS-140-3 collegato (zero overhead quando disattivato)Nessuno quando disattivato
openssl_path(non impostato)Prefisso di installazione OpenSSL per installazioni non standard (es. /usr/local/ssl)Nessuno

Modalità FIPS-140-3 / PQC

Con -Dfips=true, ogni primitiva crittografica rilevante per la sicurezza viene instradata attraverso un provider FIPS OpenSSL 3.x collegato e validato, tramite il punto di inserimento crypto_backend, e il simulatore acquisisce operazioni token PIV post-quantum (firma ML-DSA-65, incapsulamento/disincapsulamento ML-KEM-768) disponibili solo in modalità FIPS. Il flag è disattivato per impostazione predefinita con overhead zero; la dipendenza fips viene risolta solo con -Dfips=true.

# Build predefinita — backend std.crypto, nessun collegamento OpenSSL
zig build test

# Build FIPS — provider FIPS OpenSSL (esegui prima `make deps` da fips)
OPENSSL_CONF=/usr/local/ssl/ssl/openssl.cnf \
  zig build test -Dfips=true -Dopenssl_path=/usr/local/ssl

# Entrambe le modalità in un colpo solo
make test-dual

Vedi docs/FIPS.md per la progettazione del punto di inserimento, la politica di esenzione FIPS e le operazioni token PQC.

Nota sulla sicurezza: L'opzione allow_pcsc_env_override è disabilitata per impostazione predefinita per prevenire attacchi di iniezione di librerie dannose (CWE-427). Abilitala solo per sviluppo/test:

# Build di produzione (sicura, variabile d'ambiente ignorata)
zig build

# Build di sviluppo (consente HSM_PCSC_LIB_PATH)
zig build -Dallow_pcsc_env_override=true

Quando abilitate, le librerie vengono validate prima del caricamento:

  • Devono essere percorsi assoluti
  • Non possono essere scrivibili da tutti
  • Avvisa su file scrivibili dal gruppo

Avvio rapido

const std = @import("std");
const hsm = @import("hsm");

pub fn main() !void {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();
    const allocator = gpa.allocator();

    // Elenca i token disponibili
    const tokens = try hsm.listTokens(allocator, false);
    defer {
        for (tokens) |*t| t.deinit();
        allocator.free(tokens);
    }

    if (tokens.len == 0) {
        std.debug.print("Nessun token trovato\n", .{});
        return;
    }

    // Apre il primo token
    var token = try hsm.openToken(allocator, tokens[0].id, .{});
    defer token.close();

    // Verifica il PIN
    try token.verifyPin("123456");

    // Legge il certificato
    const cert = try token.getCertificate(.authentication);
    defer allocator.free(cert);
    std.debug.print("Certificato: {} byte\n", .{cert.len});

    // Firma un digest
    var digest: [32]u8 = undefined;
    std.crypto.hash.sha2.Sha256.hash("Hello, PIV!", &digest, .{});

    const signature = try token.sign(.authentication, .ecdsa_p256, &digest);
    defer allocator.free(signature);
    std.debug.print("Firma: {} byte\n", .{signature.len});
}

Panoramica API

Tipi

TipoDescrizione
TokenKindTipo di token: .piv, .cac, .yubikey, .unknown
TokenInfoMetadati del token scoperto
TokenHandle token aperto per operazioni
SlotSlot chiave: .authentication (9A), .signature (9C), .key_management (9D), .card_auth (9E)
AlgorithmAlgoritmo crittografico: .ecdsa_p256, .ecdsa_p384, .rsa2048_pkcs1v15, ecc.
CapabilitiesFlag delle capacità del token
PcscScopeAmbito del contesto PC/SC: .user (predefinito), .system

Funzioni

FunzioneDescrizione
listTokens(allocator, use_sim)Elenca i token disponibili
openToken(allocator, id, opts)Apre un token tramite ID
token.reconnect()Riconnette al token e resetta lo stato di autenticazione
token.verifyPin(pin)Verifica il PIN
token.changePin(old, new)Cambia il PIN
token.unblockPin(puk, new_pin)Sblocca il PIN con PUK
token.getCertificate(slot)Ottiene il certificato in formato DER
token.sign(slot, alg, digest)Firma un digest
token.decrypt(slot, alg, ciphertext)Decifra dati
token.capabilities()Ottiene le capacità del token
token.close()Chiude la connessione al token

Errori

Tutte le operazioni restituiscono errori da HsmError:

  • PC/SC: PcscUnavailable, ReaderGone, CardRemoved, Timeout
  • PIN: PinIncorrect, PinLocked, PinLengthInvalid
  • Capacità: NotSupported, SlotNotFound, AlgorithmNotSupported
  • Dati: InvalidTlv, CertificateNotFound, InvalidDigestLength
  • Sicurezza: SecurityConditionNotSatisfied, AuthenticationFailed

Modulo Operazioni Parallele

Scarica lo strumento