Aller au contenu principal
Page non répertoriée
Cette page n'est pas répertoriée. Les moteurs de recherche ne l'indexeront pas, et seuls les utilisateurs ayant un lien direct peuvent y accéder.

Détails de la pile technique

S'applique à :
PQC ScannerRustCargoCross-Platform

Technologie de base​

Version : Stable (dernière version recommandée)

Pourquoi Rust ?

Sécurité mémoire

Aucun ramasse-miettes, garanties de sécurité mémoire à la compilation

Performance

Abstractions à coût nul, comparables à C/C++

Concurrence

Concurrence sans crainte grâce au système de propriété

Multiplateforme

Prise en charge de premier ordre pour Linux, macOS, Windows

  • Outillage moderne : gestionnaire de paquets Cargo, rustfmt, clippy
  • Système de types robuste : évite de nombreuses classes de bogues à la compilation

Dépendances​

rustls (v0.23+)

Implémentation TLS 1.2/1.3 en Rust pur, utilisée conjointement avec rustls-pemfile pour le chargement PEM.

Fonctionnalités :

  • Aucune dépendance OpenSSL
  • TLS sûr en mémoire
  • Suites de chiffrement modernes
  • Prise en charge de TLS 1.3

x509-parser (v0.16+)

Analyse de certificats X.509

Capacités :

  • Analyser les certificats DER/PEM
  • Extraire les clés publiques
  • Valider les chaînes de certificats
  • Analyse des OID

der & pem (v0.7+ / v3.0+)

Encodage/décodage de bas niveau des données DER et PEM.

tokio (v1.35+)

Runtime asynchrone (activé avec son jeu complet de fonctionnalités).

Fonctionnalités utilisées :

  • fs : opérations de système de fichiers asynchrones
  • net : réseau TCP/TLS
  • sync : canaux, mutex
  • time : minuteurs, délais d'expiration
  • macros : #[tokio::main]
  • rt-multi-thread : runtime multithreadé

clap (v4.5+)

Analyse des arguments de la ligne de commande (en utilisant les fonctionnalités derive, env et cargo).

Fonctionnalités :

  • Macros derive pour une définition CLI simple
  • Sous-commandes
  • Prise en charge des variables d'environnement
  • Complétions shell
  • Génération de l'aide

serde (v1.0+)

Framework de sérialisation, associé à serde_json et serde_yaml pour les formats de sortie JSON et YAML.

Formats pris en charge :

  • JSON (sortie par défaut)
  • YAML (lisible par l'humain)
  • Format SARIF personnalisé

tracing (v0.1+)

Journalisation structurée, avec tracing-subscriber (fonctionnalité env-filter) gérant la sortie et le filtrage des journaux.

Fonctionnalités :

  • Journalisation structurée et contextuelle
  • Plusieurs niveaux de journalisation
  • Filtrage par module
  • Prise en charge de la sortie JSON

anyhow & thiserror (v1.0+)

Utilisation :

  • anyhow : erreurs au niveau applicatif
  • thiserror : erreurs personnalisées au niveau bibliothèque

walkdir (v2.4+)

Parcours récursif de répertoires

Fonctionnalités :

  • Analyse récursive efficace
  • Gestion des liens symboliques
  • Filtrage
  • Accès aux métadonnées

rayon (v1.8+)

Parallélisme de données

Cas d'usage :

  • Traitement parallèle de fichiers
  • Analyse concurrente de certificats
  • Analyse multithreadée

pcap (v2.0+)

Capture de paquets (wrapper libpcap)

Dépendances de plateforme :

  • Linux : libpcap-dev
  • macOS : libpcap intégré
  • Windows : WinPcap ou Npcap

pnet (v0.35+)

Analyse de paquets

Fonctionnalités :

  • Analyse de paquets TCP/IP
  • Prise en charge des protocoles de couches 2 à 4
  • Aides au réassemblage de flux

indicatif (v0.17+)

Barres de progression

ratatui (v0.26+)

Framework d'interface terminal, utilisé avec crossterm pour le contrôle du terminal.

Utilisé pour :

  • Affichage en temps réel du mode réseau
  • Statistiques interactives
  • Surveillance de l'état

Système de build​

Le projet est construit avec Cargo. Le paquet est publié sous le nom dke-scanner-agent en version 1.0.0, cible l'édition 2021 et est sous double licence MIT ou Apache-2.0. Il produit un binaire nommé dke-scanner-agent et une bibliothèque réutilisable nommée pqc_scanner.

Les dépendances d'exécution sont regroupées par objectif :

GroupeCrates
Coretokio, anyhow, thiserror
Cryptorustls, x509-parser, der, pem
CLIclap
Sérialisationserde, serde_json, serde_yaml
Journalisationtracing, tracing-subscriber
Système de fichierswalkdir
Parallélismerayon
Réseaupcap, pnet
UIindicatif, ratatui, crossterm

Les dépendances de développement incluent criterion pour l'évaluation des performances et tempfile pour les tests. Le profil de release est optimisé pour la taille et la vitesse : niveau d'optimisation maximal, optimisation au moment de l'édition de liens, une seule unité de génération de code et symboles de débogage supprimés.

Dépendances spécifiques à la plateforme​

Paquets système :

# Ubuntu/Debian
sudo apt-get install libpcap-dev pkg-config build-essential

# RHEL/CentOS
sudo yum install libpcap-devel

# Arch
sudo pacman -S libpcap

Paquets système :

# libpcap is included with macOS
# Optional: Homebrew for development tools
brew install pkg-config

Prérequis :

# Install Npcap
choco install npcap

Compilation​

cargo build --release

Sortie : target/release/dke-scanner-agent

Caractéristiques de performance​

Taille du binaire

Type de buildTailleDescription
Debug~50 MoNon optimisé avec symboles de débogage
Release~8 MoOptimisé, symboles supprimés
Release + UPX~3 MoCompressé avec UPX

Utilisation de la mémoire

ModeTypiquePic
Agent30 Mo50 Mo
Système de fichiers50 Mo100 Mo
Domaine40 Mo80 Mo
Réseau60 Mo150 Mo

Utilisation du CPU

  • Analyse monothread : 1 cœur
  • Analyse parallèle du système de fichiers : tous les cœurs
  • Capture réseau : 1-2 cœurs

Dépendances de test​

Les tests reposent sur un petit ensemble de crates réservées au développement :

CrateObjectif
criterionÉvaluation des performances
tempfileFichiers temporaires pour les tests
mockallFramework de mocking
proptestTests basés sur les propriétés

Intégration CI/CD​

name: CI
on: [push, pull_request]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- run: cargo test --all-features
- run: cargo clippy -- -D warnings

Exigences de version​

DépendanceVersion minimaleRecommandée
Rust1.70Dernière stable
Cargo1.70Dernière
libpcap1.9.01.10.0+