Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
hsm — Biblioteca Zig de Módulo de Segurança de Hardware para tokens PIV, CAC e YubiKey via PC/SC. Suporta certificados, gerenciamento de PIN, assinatura e descriptografia. | Kitploit
Ferramentas/GitLabGitLab/devnw/zig/hsm
Ferramentas de Criptografia/DescriptografiaCriptografiaSegurança de HardwareAutenticação
GitLabdevnw/zig/hsm

hsm

Biblioteca Zig de Módulo de Segurança de Hardware para tokens PIV, CAC e YubiKey via PC/SC. Suporta certificados, gerenciamento de PIN, assinatura e descriptografia.

Ver Repositório
16há 19 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

zhsm

Uma biblioteca Hardware Security Module (HSM) para Zig que fornece acesso PC/SC a tokens PIV, CAC e YubiKey.

Status

AspectoInformação
Estabilidade da APIDesenvolvimento
Versão Zig0.16.0
PlataformasLinux, macOS, Windows
LicençaMIT

Funcionalidades

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

    • Recuperação de certificados (slots 9A, 9C, 9D, 9E)
    • Verificação, alteração e desbloqueio de PIN
    • Assinatura ECDSA P-256/P-384
    • Assinatura RSA 2048/3072/4096
    • Descriptografia RSA
  • Suporte CAC (Common Access Card)

    • CACs modernos compatíveis com PIV (operações completas)
    • Deteção de applet PKI CAC legado (apenas seleção de applet)
  • Suporte YubiKey

    • Operações do applet PIV
    • Deteção baseada em ATR
    • Comandos de gestão opcionais
  • Segurança

    • Nenhum segredo em logs (modo de depuração censurado)
    • Zeragem de buffers sensíveis
    • Análise TLV rigorosa com limites de profundidade/comprimento
    • Tipos de erro restritos (nenhum anyerror)
    • Verificação de PIN vinculada à sessão (deteção de troca de cartão baseada em ATR)
  • Operações Paralelas (via thread_pool)

    • Assinatura em lote em vários slots
    • Descriptografia em lote em várias chaves
    • Descoberta paralela de tokens em vários leitores
    • Recuperação paralela de certificados em vários slots
    • Recurso sequencial automático abaixo do limiar (< 2 itens)
    • Ativado por padrão (-Denable_tp=true); desative com -Denable_tp=false

Requisitos

  • Zig 0.16.0 ou compatível
  • Biblioteca PC/SC:
    • Linux: libpcsclite-dev (Debian/Ubuntu) ou pcsc-lite-devel (Fedora)
    • macOS: PCSC.framework integrado
    • Windows: Winscard.dll integrado

Instalação do PC/SC no Linux

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

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

# Iniciar o daemon PC/SC
sudo systemctl start pcscd
sudo systemctl enable pcscd

Compilação

# Compilar e executar testes unitários
make

# Ou usando zig diretamente
zig build test

# Executar testes de integração do simulador
zig build test -Dintegration_sim=true

# Compilar exemplos (requer biblioteca PC/SC instalada)
zig build examples -Dlink_pcsc=true

Opções de Compilação

OpçãoPadrãoDescriçãoImpacto na Segurança
integration_simfalseExecutar testes de integração do simuladorNenhum
hsm_hilfalseExecutar testes com hardware real (requer token real)Nenhum
link_pcscfalseVincular biblioteca PC/SC para exemplosNenhum
include_simulatorDebug: true
Release: false
Incluir simulador PIV com chaves de testeCWE-321: Chaves de teste em produção
allow_pcsc_env_overridefalseRISCO DE SEGURANÇA: Permitir variável de ambiente HSM_PCSC_LIB_PATHCWE-427: Carregamento de biblioteca não confiável
fipsfalseRoteamento de criptografia de segurança através do provedor FIPS-140-3 vinculado (sobrecarga zero quando desativado)Nenhum quando desativado
openssl_path(não definido)Prefixo de instalação do OpenSSL para instalações não padrão (ex.: /usr/local/ssl)Nenhum

Modo FIPS-140-3 / PQC

Com -Dfips=true, toda primitiva criptográfica relevante para segurança é roteada através de um provedor FIPS OpenSSL 3.x vinculado e validado, via a costura crypto_backend, e o simulador ganha operações de token PIV pós-quânticas (assinatura ML-DSA-65, encapsulamento/desencapsulamento ML-KEM-768) que estão disponíveis apenas no modo FIPS. A flag está desativada por padrão, com sobrecarga zero; a dependência fips é resolvida apenas sob -Dfips=true.

# Compilação padrão — backend std.crypto, sem vínculo OpenSSL
zig build test

# Compilação FIPS — provedor FIPS OpenSSL (execute `make deps` a partir de fips primeiro)
OPENSSL_CONF=/usr/local/ssl/ssl/openssl.cnf \
  zig build test -Dfips=true -Dopenssl_path=/usr/local/ssl

# Ambos os modos de uma vez
make test-dual

Consulte docs/FIPS.md para o design da costura, a política de isenção de FIPS e as operações de token PQC.

Nota de Segurança: A opção allow_pcsc_env_override está desativada por padrão para evitar ataques de injeção de bibliotecas maliciosas (CWE-427). Ative-a apenas para desenvolvimento/teste:

# Compilação de produção (segura, variável de ambiente ignorada)
zig build

# Compilação de desenvolvimento (permite HSM_PCSC_LIB_PATH)
zig build -Dallow_pcsc_env_override=true

Quando ativada, as bibliotecas são validadas antes do carregamento:

  • Devem ser caminhos absolutos
  • Não podem ser graváveis por qualquer usuário
  • Avisa sobre arquivos graváveis pelo grupo

Início Rápido

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

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

    // Listar tokens disponíveis
    const tokens = try hsm.listTokens(allocator, false);
    defer {
        for (tokens) |*t| t.deinit();
        allocator.free(tokens);
    }

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

    // Abrir o primeiro token
    var token = try hsm.openToken(allocator, tokens[0].id, .{});
    defer token.close();

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

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

    // Assinar um 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("Assinatura: {} bytes\n", .{signature.len});
}

Visão Geral da API

Tipos

TipoDescrição
TokenKindTipo de token: .piv, .cac, .yubikey, .unknown
TokenInfoMetadados de token descoberto
TokenHandle de token aberto para operações
SlotSlot de chave: .authentication (9A), .signature (9C), .key_management (9D), .card_auth (9E)
AlgorithmAlgoritmo criptográfico: .ecdsa_p256, .ecdsa_p384, .rsa2048_pkcs1v15, etc.
CapabilitiesFlags de capacidade do token
PcscScopeEscopo do contexto PC/SC: .user (padrão), .system

Funções

FunçãoDescrição
listTokens(allocator, use_sim)Listar tokens disponíveis
openToken(allocator, id, opts)Abrir um token por ID
token.reconnect()Reconectar ao token e redefinir estado de autenticação
token.verifyPin(pin)Verificar PIN
token.changePin(old, new)Alterar PIN
token.unblockPin(puk, new_pin)Desbloquear PIN com PUK
token.getCertificate(slot)Obter certificado codificado em DER
token.sign(slot, alg, digest)Assinar um digest
token.decrypt(slot, alg, ciphertext)Descriptografar dados
token.capabilities()Obter capacidades do token
token.close()Fechar conexão do token

Erros

Todas as operações retornam erros de HsmError:

  • PC/SC: PcscUnavailable, ReaderGone, CardRemoved, Timeout
  • PIN: PinIncorrect, PinLocked, PinLengthInvalid
  • Capacidade: NotSupported, SlotNotFound, AlgorithmNotSupported
  • Dados: InvalidTlv, CertificateNotFound, InvalidDigestLength
  • Segurança: SecurityConditionNotSatisfied, AuthenticationFailed

Módulo de Operações Paralelas

Baixar ferramenta