Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
hsm — Bibliothèque Zig pour module de sécurité matérielle pour les jetons PIV, CAC et YubiKey via PC/SC. Prend en charge les certificats, la gestion du code PIN, la signature et le déchiffrement. | Kitploit
Outils/GitLabGitLab/devnw/zig/hsm
Outils de Chiffrement/DéchiffrementCryptographieSécurité MatérielleAuthentification
GitLabdevnw/zig/hsm

hsm

Bibliothèque Zig pour module de sécurité matérielle pour les jetons PIV, CAC et YubiKey via PC/SC. Prend en charge les certificats, la gestion du code PIN, la signature et le déchiffrement.

Voir le dépôt
16il y a 19 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

zhsm

Une bibliothèque de module de sécurité matériel (HSM) pour Zig fournissant un accès PC/SC aux jetons PIV, CAC et YubiKey.

Statut

AspectInfo
Stabilité de l'APIDéveloppement
Version Zig0.16.0
PlateformesLinux, macOS, Windows
LicenceMIT

Fonctionnalités

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

    • Récupération de certificat (slots 9A, 9C, 9D, 9E)
    • Vérification, changement et déblocage du PIN
    • Signature ECDSA P-256/P-384
    • Signature RSA 2048/3072/4096
    • Déchiffrement RSA
  • Support CAC (Common Access Card)

    • CAC modernes compatibles PIV (opérations complètes)
    • Détection de l'applet PKI CAC héritée (sélection d'applet uniquement)
  • Support YubiKey

    • Opérations de l'applet PIV
    • Détection basée sur ATR
    • Commandes de gestion optionnelles
  • Sécurité

    • Aucun secret dans les logs (mode debug expurgé)
    • Mise à zéro des tampons sensibles
    • Analyse TLV stricte avec limites de profondeur/longueur
    • Types d'erreur stricts (pas de anyerror)
    • Vérification PIN liée à la session (détection de changement de carte basée sur ATR)
  • Opérations parallèles (via thread_pool)

    • Signature par lots sur plusieurs slots
    • Déchiffrement par lots sur plusieurs clés
    • Découverte parallèle de jetons sur plusieurs lecteurs
    • Récupération parallèle de certificats sur plusieurs slots
    • Repli séquentiel automatique en dessous du seuil (< 2 éléments)
    • Activé par défaut (-Denable_tp=true) ; désactiver avec -Denable_tp=false

Prérequis

  • Zig 0.16.0 ou compatible
  • Bibliothèque PC/SC :
    • Linux : libpcsclite-dev (Debian/Ubuntu) ou pcsc-lite-devel (Fedora)
    • macOS : PCSC.framework intégré
    • Windows : Winscard.dll intégré

Installation de PC/SC sur 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

Compilation

# 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

Options de compilation

OptionPar défautDescriptionImpact sécurité
integration_simfalseExécuter les tests d'intégration du simulateurAucun
hsm_hilfalseExécuter des tests matériel en boucle (nécessite un jeton réel)Aucun
link_pcscfalseLier la bibliothèque PC/SC pour les exemplesAucun
include_simulatorDebug: true
Release: false
Inclure le simulateur PIV avec des clés de testCWE-321 : Clés de test en production
allow_pcsc_env_overridefalseRISQUE DE SÉCURITÉ : Permettre la variable d'environnement HSM_PCSC_LIB_PATHCWE-427 : Chargement de bibliothèque non fiable
fipsfalseAcheminer la crypto sécurisée via le fournisseur FIPS-140-3 lié (zéro surcharge lorsque désactivé)Aucun
openssl_path(non défini)Préfixe d'installation OpenSSL pour les installations non standard (par ex. /usr/local/ssl)Aucun

Mode FIPS-140-3 / PQC

Avec -Dfips=true, chaque primitive cryptographique sensible à la sécurité transite par un fournisseur FIPS OpenSSL 3.x lié et validé via la couture crypto_backend, et le simulateur obtient des opérations de jeton PIV post-quantique (signature ML-DSA-65, encapsulage/désencapsulage ML-KEM-768) disponibles uniquement en mode FIPS. Le drapeau est désactivé par défaut avec zéro surcharge ; la dépendance fips n'est résolue qu'avec -Dfips=true.

# Default build — std.crypto backend, no OpenSSL link
zig build test

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

# Both modes in one shot
make test-dual

Voir docs/FIPS.md pour la conception de la couture, la politique d'exemption FIPS et les opérations de jeton PQC.

Note de sécurité : L'option allow_pcsc_env_override est désactivée par défaut pour prévenir les attaques par injection de bibliothèque malveillante (CWE-427). Activez-la uniquement pour le développement/les tests :

# Production build (secure, env var ignored)
zig build

# Development build (allows HSM_PCSC_LIB_PATH)
zig build -Dallow_pcsc_env_override=true

Lorsqu'activée, les bibliothèques sont validées avant le chargement :

  • Doivent être des chemins absolus
  • Ne peuvent pas être accessibles en écriture par tous
  • Avertit sur les fichiers accessibles en écriture par le groupe

Démarrage rapide

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

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

    // List available tokens
    const tokens = try hsm.listTokens(allocator, false);
    defer {
        for (tokens) |*t| t.deinit();
        allocator.free(tokens);
    }

    if (tokens.len == 0) {
        std.debug.print("No tokens found\n", .{});
        return;
    }

    // Open the first token
    var token = try hsm.openToken(allocator, tokens[0].id, .{});
    defer token.close();

    // Verify PIN
    try token.verifyPin("123456");

    // Read certificate
    const cert = try token.getCertificate(.authentication);
    defer allocator.free(cert);
    std.debug.print("Certificate: {} bytes\n", .{cert.len});

    // Sign a 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("Signature: {} bytes\n", .{signature.len});
}

Aperçu de l'API

Types

TypeDescription
TokenKindType de jeton : .piv, .cac, .yubikey, .unknown
TokenInfoMétadonnées du jeton découvert
TokenHandle de jeton ouvert pour les opérations
SlotSlot de clé : .authentication (9A), .signature (9C), .key_management (9D), .card_auth (9E)
AlgorithmAlgorithme cryptographique : .ecdsa_p256, .ecdsa_p384, .rsa2048_pkcs1v15, etc.
CapabilitiesDrapeaux de capacités du jeton
PcscScopePortée du contexte PC/SC : .user (par défaut), .system

Fonctions

FonctionDescription
listTokens(allocator, use_sim)Liste les jetons disponibles
openToken(allocator, id, opts)Ouvre un jeton par son ID
token.reconnect()Se reconnecte au jeton et réinitialise l'état d'authentification
token.verifyPin(pin)Vérifie le PIN
token.changePin(old, new)Change le PIN
token.unblockPin(puk, new_pin)Débloque le PIN avec le PUK
token.getCertificate(slot)Obtient le certificat encodé en DER
token.sign(slot, alg, digest)Signe un condensat
token.decrypt(slot, alg, ciphertext)Déchiffre des données
token.capabilities()Obtient les capacités du jeton
token.close()Ferme la connexion au jeton

Erreurs

Toutes les opérations renvoient des erreurs de HsmError :

  • PC/SC : PcscUnavailable, ReaderGone, CardRemoved, Timeout
  • PIN : PinIncorrect, PinLocked, PinLengthInvalid
  • Capacité : NotSupported, SlotNotFound, AlgorithmNotSupported
  • Données : InvalidTlv, CertificateNotFound, InvalidDigestLength
  • Sécurité : SecurityConditionNotSatisfied, AuthenticationFailed

Module d'opérations parallèles

Télécharger l’outil