Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
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
il y a 1 moisPas 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

root@kitploit:~
# 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é)

root@kitploit:~
# 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

root@kitploit:~
# 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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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é :

root@kitploit:~
# 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"
root@kitploit:~
# 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

  • BUILD_SYSTEM.md - Documentation détaillée du système de construction
  • CONFORMANCE_TESTS.md - Documentation des tests de compatibilité BoringSSL/OpenSSL
  • CLAUDE.md - Aperçu du projet et contexte d'assistance IA
  • Références RFC - Tout le code inclut des citations de sections RFC

Développement

root@kitploit:~
# Itération de développement rapide
make dev

# Formater le code
make fmt
# ou
zig fmt src/ tests/

# Vérifier la syntaxe
make check

# Nettoyer et construire
make clean build

Statut d'Implémentation

✅ Terminé

  • Machine d'état du handshake TLS 1.3
  • Calendrier de clés HKDF (RFC 8446 §7, RFC 9001 §5.1)
  • Protection d'enregistrement AEAD (AES-GCM, ChaCha20-Poly1305)
  • Analyse et validation de certificats X.509
  • Vérification de signatures (ECDSA, RSA-PSS, Ed25519)
  • Protocole d'alerte
  • Anti-rejeu 0-RTT
  • Interfaces d'intégration QUIC

🚧 Travaux Futurs

  • Wrapper HKDF-Expand-Label (suivi dans les vecteurs de test)
  • Support d'OCSP stapling et SCT
  • Validation complète de la chaîne de certificats
  • Suites de chiffrement supplémentaires (AES-256-GCM-SHA384, AES-CCM)
  • Authentification post-handshake
  • Migration vers X.509 de la bibliothèque standard quand stable

Contribution

Lors de l'ajout de fonctionnalités :

  1. Inclure des tests unitaires dans les fichiers sources
  2. Ajouter des citations de sections RFC à toute la logique de protocole
  3. Mettre à jour les tests d'intégration si la conformité RFC est affectée
  4. Ajouter des tests de conformité pour les opérations cryptographiques
  5. Mettre à jour la documentation

Licence

Licence Apache-2.0 - voir LICENSE pour les détails.

Références

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

Construit avec Zig 0.16.0 | TLS 1.3 | Natif QUIC | Conforme RFC

Télécharger l’outil