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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
tls — Implémentation en Zig de TLS 1.3 pour QUIC, conforme aux RFC 8446/9001 avec zéro dépendance externe, offrant une protection AEAD, une validation X.509 et plus de 1000 tests. | Kitploit
Outils/GitLabGitLab/devnw/zig/tls
Sécurité RéseauCryptographie
GitLabdevnw/zig/tls

tls

Implémentation en Zig de TLS 1.3 pour QUIC, conforme aux RFC 8446/9001 avec zéro dépendance externe, offrant une protection AEAD, une validation X.509 et plus de 1000 tests.

Voir le dépôt
22il y a 18 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

ztls

Une implémentation TLS 1.3 pour QUIC écrite en Zig, strictement conforme aux RFC 8446 (TLS 1.3) et RFC 9001 (QUIC-TLS).

Statut

AspectInfo
Stabilité de l'APIProduction
Version Zig0.16.0
PlateformesLinux, macOS, Windows

Note de performance

L'objectif de handshake <2 ms est validé sur les configurations de certificats Ed25519 et RSA-2048. Les charges de travail secp256r1 (P-256) nécessitent actuellement 2–3 ms par handshake en raison d'une limitation en amont de la bibliothèque standard Zig (PERF-229). Voir ADR-0002 pour le dossier de décision complet.

Fonctionnalités

✅ Conforme aux RFC - Implémente TLS 1.3 (RFC 8446) et QUIC-TLS (RFC 9001) ✅ Zéro Dépendances - Utilise uniquement la bibliothèque standard Zig ✅ Interopérabilité Testée - Tests de conformité contre BoringSSL et OpenSSL ✅ Natif QUIC - Conçu pour l'intégration QUIC, pas de couche d'enregistrement traditionnelle ✅ Bien Testé - 551 tests unitaires + vecteurs de test RFC + 449 tests de conformité

Démarrage Rapide

# Build and test everything
make

# Or manually
zig build
zig build test

Prérequis

  • Zig 0.16.0 ou compatible
  • Bibliothèques de développement OpenSSL (optionnelles, pour les tests de conformité)

Construction

Le projet utilise à la fois un Makefile et build.zig pour plus de flexibilité :

Utilisation de Make (Recommandé)

# Construire et exécuter tous les tests (par défaut)
make

# Construction uniquement
make build

# Exécuter des suites de test spécifiques
make test-unit           # Tests unitaires
make test-vectors        # Vecteurs de test RFC 8446/9001
make test-conformance    # Conformité BoringSSL/OpenSSL (nécessite libssl-dev)

# Workflow de développement
make dev                 # Formatage + vérification + tests unitaires
make clean               # Nettoyer les artefacts de construction
make help                # Afficher toutes les cibles disponibles

Utilisation de zig build

# Construire la bibliothèque
zig build

# Exécuter tous les tests
zig build test

# Exécuter des suites de test spécifiques
zig build test-vectors
zig build test-conformance  # Nécessite les bibliothèques de développement OpenSSL

# Avec optimisations
zig build -Doptimize=ReleaseFast

Résultats des Tests

Build Summary: All steps succeeded; 1000 tests passed ✅

Couverture de Test Complète :

  • 551 tests unitaires - Tests par module avec références aux sous-sections RFC (553 total, 2 ignorés)
  • 449 tests de conformité - Tests de parité BoringSSL et OpenSSL
    • Opérations cryptographiques (HKDF, AEAD, signatures)
    • Validation de certificat X.509 et construction de chaîne
    • Extensions X.509 avancées (OCSP, CRL, AIA, contraintes de nom, politiques)
    • Conformité au protocole TLS 1.3 (extensions, flux de handshake)
    • Benchmarks de performance (latence <2ms, mémoire <100KB)
    • Tests de sécurité (fuzzing, validation d'entrée)
    • Préparation aux algorithmes post-quantiques (analyse uniquement)

Total : 1000 tests garantissant la conformité RFC, la parité cryptographique et la préparation à la production

Structure du Projet

src/
├── lib.zig               # Point d'entrée principal de la bibliothèque
├── tls13/                # Machine d'état du handshake TLS 1.3 (modularisé)
├── tls13_full.zig        # Analyse complète des messages TLS 1.3
├── key_schedule.zig      # Dérivation de clé basée sur HKDF
├── record.zig            # Couche d'enregistrement et opérations AEAD
├── x509.zig              # Analyse et validation de certificats
├── sig.zig               # Vérification de signatures
├── asn1.zig              # Décodeur ASN.1 DER
├── alert.zig             # Protocole d'alerte TLS
├── entropy.zig           # Générateur de nombres aléatoires à sécurité maximale (SEC-074)
├── zero_rtt.zig          # Support 0-RTT
└── quic_*.zig            # Interfaces d'intégration QUIC

tests/
├── rfc8446_vectors.zig        # Vecteurs de test RFC
├── boringssl_conformance.zig  # Tests de parité BoringSSL
└── openssl_conformance.zig    # Tests de conformité OpenSSL

Exemple d'Utilisation

const std = @import("std");
const tls = @import("ztls");

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

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

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

    // Initialiser le contexte TLS
    var ctx = try tls.Context.init(config, callbacks);
    defer ctx.deinit();

    // Traiter les trames CRYPTO entrantes depuis QUIC
    try ctx.processCrypto(crypto_data);
}

Architecture

Principes de Conception

  1. INTEROP FIRST - Détecte et supporte automatiquement les formats TLS 1.3 standards pour une compatibilité avec les implémentations QUIC réelles (quic-go, quinn, msquic)
  2. Développement piloté par les RFC - Chaque bloc d'implémentation cite la section RFC correspondante
  3. Zéro Dépendances Externes - Utilise uniquement les primitives de la bibliothèque standard Zig

Composants Clés

  • Key Schedule - Dérivation de clé basée sur HKDF utilisant std.crypto.kdf.hkdf
  • Protection AEAD - AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305
  • Validation de Certificat - Analyse X.509 avec correspondance SNI et vérifications de validité
  • Vérification de Signature - ECDSA (P-256, P-384), RSA-PSS, Ed25519

Tests de Conformité

Le projet inclut des tests de conformité complets pour garantir la compatibilité avec les implémentations TLS standards de l'industrie :

Conformité BoringSSL

  • Parité HKDF-Extract et HKDF-Expand
  • Dérivation du secret initial QUIC (RFC 9001)
  • Compatibilité des chiffrements AEAD
  • Mappage des codes d'alerte

Conformité OpenSSL 3.x

  • Compatibilité des API EVP
  • Disponibilité des suites de chiffrement
  • Parité des fonctions de hachage
  • Procédures de mise à jour des clés

Pour exécuter les tests de conformité :

# Installer d'abord les bibliothèques de développement OpenSSL
make install-deps  # Détecte automatiquement votre OS

# Exécuter les tests de conformité
make test-conformance

Observabilité

ztls est livré avec un point d'intégration OpenTelemetry optionnel. Lorsque le flag de construction -Dwith_otel=true est activé, la bibliothèque émet exactement une span par handshake TLS (nom de la span : "TLS handshake") avec les attributs de convention sémantique suivants attachés à la fin :

  • tls.role -- "client" ou "server"
  • tls.protocol.version -- "1.3" (toujours pour ztls)
  • tls.cipher_suite -- le chiffrement négocié (par ex. TLS_AES_128_GCM_SHA256)
  • network.protocol.name -- "tls"
# Construction par défaut : aucun symbole otel, zéro surcoût.
zig build test

# Construction activée : une span par handshake, exportée via les
# valeurs par défaut OTLP (http://localhost:4318) ou selon les
# variables d'environnement OTEL_* spécifiées.
zig build test -Dwith_otel=true

Le point d'intégration est protégé par une dépendance paresseuse, donc le paquet otel n'est récupéré que lorsque le flag est activé. Le code du point d'entrée de l'application qui souhaite installer un TracerProvider doit appeler ztls.observability_init.Otel.init puis installGlobals() ; consultez la recette d'intégration otel en amont (otel/docs/integration/RECIPE.md) pour le bootstrap complet de l'application hôte.

Documentation

Télécharger l’outil