Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
tls — Implementación en Zig de TLS 1.3 para QUIC, compatible con RFC 8446/9001 con cero dependencias externas, con protección AEAD, validación X.509 y más de 1000 pruebas. | Kitploit
Herramientas/GitLabGitLab/devnw/zig/tls
Seguridad de RedesCriptografía
GitLabdevnw/zig/tls

tls

Implementación en Zig de TLS 1.3 para QUIC, compatible con RFC 8446/9001 con cero dependencias externas, con protección AEAD, validación X.509 y más de 1000 pruebas.

Ver Repositorio
hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

ztls

Una implementación de TLS 1.3 para QUIC escrita en Zig, cumpliendo estrictamente con RFC 8446 (TLS 1.3) y RFC 9001 (QUIC-TLS).

Estado

AspectoInformación
Estabilidad de la APIProducción
Versión de Zig0.16.0
PlataformasLinux, macOS, Windows

Nota de rendimiento

El objetivo de handshake <2 ms está validado en configuraciones de certificados Ed25519 y RSA-2048. Las cargas de trabajo secp256r1 (P-256) actualmente ejecutan 2–3 ms por handshake debido a una limitación de la stdlib de Zig upstream (PERF-229). Consulte ADR-0002 para el registro de decisión completo.

Características

✅ Cumplimiento con RFC - Implementa TLS 1.3 (RFC 8446) y QUIC-TLS (RFC 9001) ✅ Cero dependencias - Utiliza solo la biblioteca estándar de Zig ✅ Probado en interoperabilidad - Pruebas de conformidad contra BoringSSL y OpenSSL ✅ Nativo para QUIC - Diseñado para integración con QUIC, sin capa de registro tradicional ✅ Bien probado - 551 pruebas unitarias + vectores de prueba RFC + 449 pruebas de conformidad

Inicio rápido

root@kitploit:~
# Construir y probar todo
make

# O manualmente
zig build
zig build test

Requisitos

  • Zig 0.16.0 o compatible
  • Bibliotecas de desarrollo de OpenSSL (opcional, para pruebas de conformidad)

Construcción

El proyecto utiliza tanto un Makefile como build.zig para mayor flexibilidad:

Usando Make (Recomendado)

root@kitploit:~
# Construir y ejecutar todas las pruebas (por defecto)
make

# Construir solo
make build

# Ejecutar suites de pruebas específicas
make test-unit           # Pruebas unitarias
make test-vectors        # Vectores de prueba RFC 8446/9001
make test-conformance    # Conformidad con BoringSSL/OpenSSL (requiere libssl-dev)

# Flujo de trabajo de desarrollo
make dev                 # Formatear + verificar + pruebas unitarias
make clean               # Limpiar artefactos de compilación
make help                # Mostrar todos los objetivos disponibles

Usando zig build

root@kitploit:~
# Construir la biblioteca
zig build

# Ejecutar todas las pruebas
zig build test

# Ejecutar suites de pruebas específicas
zig build test-vectors
zig build test-conformance  # Requiere bibliotecas de desarrollo de OpenSSL

# Con optimizaciones
zig build -Doptimize=ReleaseFast

Resultados de las pruebas

root@kitploit:~
Build Summary: All steps succeeded; 1000 tests passed ✅

Cobertura integral de pruebas:

  • 551 pruebas unitarias - Pruebas por módulo con referencias a subsecciones RFC (553 total, 2 omitidas)
  • 449 pruebas de conformidad - Pruebas de paridad con BoringSSL y OpenSSL
    • Operaciones criptográficas (HKDF, AEAD, firmas)
    • Validación de certificados X.509 y construcción de cadenas
    • Extensiones X.509 avanzadas (OCSP, CRL, AIA, restricciones de nombre, políticas)
    • Cumplimiento del protocolo TLS 1.3 (extensiones, flujos de handshake)
    • Benchmarks de rendimiento (latencia <2ms, memoria <100KB)
    • Pruebas de seguridad (fuzzing, validación de entrada)
    • Preparación para algoritmos post-cuánticos (solo análisis sintáctico)

Total: 1000 pruebas que garantizan cumplimiento con RFC, paridad criptográfica y preparación para producción

Estructura del proyecto

root@kitploit:~
src/
├── lib.zig               # Punto de entrada principal de la biblioteca
├── tls13/                # Máquina de estados del handshake TLS 1.3 (modularizada)
├── tls13_full.zig        # Análisis sintáctico completo de mensajes TLS 1.3
├── key_schedule.zig      # Derivación de claves basada en HKDF
├── record.zig            # Capa de registro y operaciones AEAD
├── x509.zig              # Análisis sintáctico y validación de certificados
├── sig.zig               # Verificación de firmas
├── asn1.zig              # Decodificador ASN.1 DER
├── alert.zig             # Protocolo de alerta TLS
├── entropy.zig           # Ayudante RNG de cierre seguro (SEC-074)
├── zero_rtt.zig          # Soporte 0-RTT
└── quic_*.zig            # Interfaces de integración con QUIC

tests/
├── rfc8446_vectors.zig        # Vectores de prueba RFC
├── boringssl_conformance.zig  # Pruebas de paridad con BoringSSL
└── openssl_conformance.zig    # Pruebas de conformidad con OpenSSL

Ejemplo de uso

root@kitploit:~
const std = @import("std");
const tls = @import("ztls");

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

    // Configurar contexto TLS
    const config = tls.Config{
        .allocator = gpa.allocator(),
        .role = .client,
        .supported_cipher_suites = &.{.TLS_AES_128_GCM_SHA256},
        .supported_groups = &.{.x25519},
        .alpn_protocols = &.{"h3"},
    };

    // Configurar callbacks
    const callbacks = tls.Callbacks{
        .on_secret_available = mySecretCallback,
        .on_handshake_complete = myHandshakeCallback,
    };

    // Inicializar contexto TLS
    var ctx = try tls.Context.init(config, callbacks);
    defer ctx.deinit();

    // Procesar tramas CRYPTO entrantes desde QUIC
    try ctx.processCrypto(crypto_data);
}

Arquitectura

Principios de diseño

  1. INTEROP PRIMERO - Detecta y admite automáticamente formatos TLS 1.3 estándar para compatibilidad con implementaciones QUIC reales (quic-go, quinn, msquic)
  2. Desarrollo orientado por RFC - Cada bloque de implementación cita la sección RFC relevante
  3. Cero dependencias externas - Utiliza solo primitivas de la stdlib de Zig

Componentes clave

  • Programación de claves - Derivación de claves basada en HKDF usando std.crypto.kdf.hkdf
  • Protección AEAD - AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305
  • Validación de certificados - Análisis sintáctico X.509 con coincidencia SNI y comprobaciones de validez
  • Verificación de firmas - ECDSA (P-256, P-384), RSA-PSS, Ed25519

Pruebas de conformidad

El proyecto incluye pruebas de conformidad completas para garantizar la compatibilidad con implementaciones TLS estándar de la industria:

Conformidad con BoringSSL

  • Paridad de HKDF-Extract y HKDF-Expand
  • Derivación de secreto inicial QUIC (RFC 9001)
  • Compatibilidad de cifrados AEAD
  • Mapeo de códigos de alerta

Conformidad con OpenSSL 3.x

  • Compatibilidad con API EVP
  • Disponibilidad de suites de cifrado
  • Paridad de funciones hash
  • Procedimientos de actualización de claves

Para ejecutar pruebas de conformidad:

root@kitploit:~
# Instalar primero las bibliotecas de desarrollo de OpenSSL
make install-deps  # Detecta automáticamente su SO

# Ejecutar pruebas de conformidad
make test-conformance

Observabilidad

ztls incluye una interfaz opt-in para OpenTelemetry. Cuando se usa el flag de compilación -Dwith_otel=true, la biblioteca emite exactamente un span por handshake TLS (nombre del span: "TLS handshake") con los siguientes atributos de convención semántica adjuntos al completarse:

  • tls.role -- "client" o "server"
  • tls.protocol.version -- "1.3" (siempre para ztls)
  • tls.cipher_suite -- el cifrado negociado (p. ej. TLS_AES_128_GCM_SHA256)
  • network.protocol.name -- "tls"
root@kitploit:~
# Compilación por defecto: sin símbolos otel, sin sobrecarga.
zig build test

# Compilación habilitada: un span por handshake, exportado a través de los
# valores predeterminados de OTLP (http://localhost:4318) o cualquier variable
# de entorno OTEL_* que se especifique.
zig build test -Dwith_otel=true

La interfaz está protegida por una dependencia perezosa, por lo que el paquete otel solo se obtiene cuando el flag está activado. El código de punto de entrada de la aplicación que desee instalar un TracerProvider debe llamar a ztls.observability_init.Otel.init y luego installGlobals(); consulte la receta de integración del paquete otel upstream (otel/docs/integration/RECIPE.md) para el arranque completo de la aplicación host.

Documentación

  • BUILD_SYSTEM.md - Documentación detallada del sistema de compilación
  • CONFORMANCE_TESTS.md - Documentación de pruebas de compatibilidad con BoringSSL/OpenSSL
  • CLAUDE.md - Descripción general del proyecto y contexto de asistencia de IA
  • Referencias RFC - Todo el código incluye citas de secciones RFC

Desarrollo

root@kitploit:~
# Iteración rápida de desarrollo
make dev

# Formatear código
make fmt
# o
zig fmt src/ tests/

# Verificar sintaxis
make check

# Compilación limpia
make clean build

Estado de implementación

✅ Completado

  • Máquina de estados del handshake TLS 1.3
  • Programación de claves HKDF (RFC 8446 §7, RFC 9001 §5.1)
  • Protección de registros AEAD (AES-GCM, ChaCha20-Poly1305)
  • Análisis sintáctico y validación de certificados X.509
  • Verificación de firmas (ECDSA, RSA-PSS, Ed25519)
  • Protocolo de alerta
  • Anti-replay 0-RTT
  • Interfaces de integración con QUIC

🚧 Trabajo futuro

  • Envoltorio de HKDF-Expand-Label (seguimiento en vectores de prueba)
  • Soporte de OCSP stapling y SCT
  • Validación completa de cadena de certificados
  • Suites de cifrado adicionales (AES-256-GCM-SHA384, AES-CCM)
  • Autenticación posterior al handshake
  • Migración a X.509 de stdlib cuando esté estable

Contribuir

Al agregar funcionalidades:

  1. Incluya pruebas unitarias en los archivos fuente
  2. Agregue citas de secciones RFC a toda la lógica del protocolo
  3. Actualice las pruebas de integración si se ve afectado el cumplimiento de RFC
  4. Agregue pruebas de conformidad para operaciones criptográficas
  5. Actualice la documentación

Licencia

Licencia Apache-2.0 - consulte LICENSE para más detalles.

Referencias

  • RFC 8446 - TLS 1.3
  • RFC 9001 - QUIC Transport TLS
  • RFC 9369 - QUIC Version 2
  • RFC 5280 - X.509 Certificates
  • RFC 7301 - ALPN

Construido con Zig 0.16.0 | TLS 1.3 | Nativo para QUIC | Cumplimiento RFC

Descargar herramienta