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
aimp — Un protocole de réseau sans serveur conçu pour la synchronisation résiliente d'état entre agents autonomes dans des réseaux fragmentés à faible bande passante | Kitploit
Outils/GitHubGitHub/fabriziosalmi/aimp
Sécurité des Systèmes EmbarquésSécurité IoTSécurité RéseauCryptographieSécurité MatérielleRenseignement sur les MenacesApprentissage AutomatiqueArticles et RechercheApprentissage et Éducation
GitHubfabriziosalmi/aimp

aimp

Un protocole de réseau sans serveur conçu pour la synchronisation résiliente d'état entre agents autonomes dans des réseaux fragmentés à faible bande passante

514il y a 28 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
Voir le dépôtSite web

AIMP — Protocole de maillage IA

CI License: MIT Rust ResearchGate ResearchHub

Un protocole réseau expérimental et sans serveur pour la synchronisation d'état résiliente entre agents autonomes dans des réseaux fragmentés et à faible bande passante. Construit sur Merkle-CRDTs et identité cryptographique — aucune autorité centrale, pas de DNS global, toujours accessible en écriture.


Articles

#VersionTitreLien
1v0.1.0Merkle-CRDT Protocol (L1/L2)ResearchGate
2v0.2.0Epistemic Layer (L3)ResearchGate
3v0.3.0Correlation-Aware Aggregation (L3)ResearchGate
4v0.4.0Deterministic Semantic Topologies (L3)ResearchGate

Profils des auteurs : ResearchGate · ResearchHub


Pile de protocoles


Nouveautés

v0.4.0 — Topologies sémantiques déterministes

L3 v0.3.0 exigeait que les applications construisent manuellement le graphe de connaissances (arêtes Supports/Contradicts). v0.4.0 supprime ce goulot d'étranglement avec une génération autonome d'arêtes :

  • Les affirmations portent un QuantizedEmbedding([u64; 4]) optionnel — un SimHash 256 bits calculé côté application à partir d'un modèle d'embedding canonique.
  • À chaque limite d'époque, le protocole calcule les distances de Hamming par paires (XOR + popcount, ~1 ns par paire) et émet des arêtes Supports pour les paires proches (d <= 30 bits) et des arêtes Contradicts pour les paires éloignées (d >= 200 bits).
  • La force de l'arête évolue linéairement avec la distance en points de base (d=0 → 10000 pdb, d=30 → 1000 pdb).
  • Un plafond max_k_nearest limite la densité d'arêtes à O(N), empêchant l'explosion de la propagation de confiance.
  • embedding_version: u32 isole les espaces latents disjoints pour les mises à niveau de modèle au niveau du protocole.
  • Les auto-arêtes sont matérialisées via le gossip L2, survivent au GC grâce au routage holographique.
  • La zone morte (31-199 bits) isole les affirmations ambiguës — un isolement épistémologiquement correct.
root@kitploit:~
// Autonomous truth discovery: 10,000 claims → 50 ms scan, O(N) edges
// No floats. No coordination. No central authority.
let edges = auto_edge_generator.generate_edges(&epoch_claims);

v0.3.0 — Agrégation des croyances tenant compte des corrélations

L3 v0.2.0 suppose que toutes les sources de preuves sont statistiquement indépendantes (Naive Bayes). Cela produit une hyperconfiance pathologique lorsque des capteurs physiquement corrélés (ex. 100 appareils IoT sur le même toit) ou des agents sémantiquement corrélés (ex. LLMs affinés sur le même jeu de données) rapportent des observations concordantes.

v0.3.0 introduit l'escompte de corrélation par cellule de grille :

  • Chaque affirmation porte un CorrelationCell(u64) optionnel — une coordonnée discrète pour la proximité spatiale, sémantique ou temporelle.
  • Dans chaque cellule, les preuves sont classées par force et escomptées géométriquement : la source la plus forte conserve 100 % du poids ; chaque source suivante reçoit discount_bps^rank / 10000^rank (par défaut 30 %).
  • Avec un escompte de 30 %, N capteurs corrélés convergent vers ~1,42x la preuve d'un seul capteur — quel que soit N. L'approche naïve produirait une amplification de Nx.
  • Le défi d'associativité des CRDT (la décroissance géométrique n'est pas associative lors des fusions partielles) est résolu architecturalement : la réduction par époque regroupe par (temporal_grid, fingerprint, correlation_cell), garantissant un calcul atomique sur l'ensemble complet.
  • Les affirmations avec correlation_cell: None se comportent à l'identique de v0.2.0 (régression zéro).
  • Tout l'arithmétique est en entiers uniquement (i32/i64, points de base). Pas de flottants. Prêt pour ZK.
root@kitploit:~
// 100 co-located sensors, 70% confidence each:
// v0.2.0 (naive):  100 × 847 = 84,700 milli-log-odds → ~100% (hyper-confident)
// v0.3.0 (30%):    847 × Σ(0.3^i) ≈ 1,207 milli-log-odds → ~77% (realistic)

Architecture

root@kitploit:~
aimp_node/          Implémentation de référence en Rust (membre de l'espace de travail Cargo)
  src/
    crdt/           Moteur Merkle-DAG, modèle d'acteur, allocateur arène, consensus quorum
    crypto/         Identité Ed25519, hachage BLAKE3, pare-feu zéro confiance
    network/        Gossip UDP, sessions Noise Protocol XX, limitation de débit par pair
    protocol/       Format filaire (MessagePack), énumération de payload typée
    epistemic.rs    Couche épistémique L3 (v0.3.0) : log-odds, propagation de confiance, escompte de corrélation
    semantic_topology.rs  Topologie sémantique L3 (v0.4.0) : embeddings SimHash, génération automatique d'arêtes
    decision_engine.rs  Moteur de décision déterministe enfichable (trait + moteur de règles + rechargement à chaud)
    error.rs        Hiérarchie de types d'erreurs unifiée AimpError
    dashboard/      Interface TUI Ratatui
    config.rs       Configuration dynamique avec validation
    event/          Journalisation structurée + métriques Prometheus (compteurs + histogrammes)
  tests/            Tests d'intégration
  benches/          Bancs d'essai Criterion
aimp_testbed/       SDK Python (aimp-client) + outil CLI + tests de chaos
deploy/             Service systemd, microVM Firecracker, script d'installation
formal/             Spécification TLA+ de convergence, sécurité du quorum et convergence des croyances
docs/               Article 1 (source Typst + PDF)
v0.2.0/             Article 2 : Couche épistémique (source Typst + PDF)
v0.3.0/             Article 3 : Agrégation tenant compte des corrélations (source Typst + PDF)

Avantages stratégiques


Fonctionnalités clés

Moteur principal (v0.1.0)

  • Modèle d'acteur avec CRDT sans état partagé via tokio::mpsc
  • Allocation Slab/Arena avec insertion O(1) et disposition SoA
  • Persistance durable via redb avec chiffrement ChaCha20Poly1305 au repos
  • Dérivation de clé HKDF-SHA256 avec séparation de domaine
  • Racine Merkle mise en cache avec invalidation à l'écriture
  • GC réel de type mark-and-sweep avec récupération de mémoire des slabs
  • Suivi du GC basé sur les époques intégré à l'acteur CRDT

Couche épistémique (v0.2.0 — v0.4.0)

  • Arithmétique de log-odds entiers (i32, milli-log-odds) — pas de flottants, 100% déterministe
  • Propagation de confiance markovienne en deux passes (Supports → Contradictions, sans oscillation)
  • Réputation résistante aux Sybil : les nouveaux nœuds commencent à 0, délégation requise, dépense de réputation
  • Réduction par époque alignée sur la grille avec compaction matérialisée (les résumés survivent au GC)
  • Détection de cycles (DFS trié) empêche les boucles d'inflation de confiance
  • v0.3.0 : Agrégation tenant compte des corrélations — escompte géométrique pour capteurs/LLM colocalisés
  • v0.3.0 : Réduction atomique par cellule — regroupement par (epoch, fingerprint, cell) pour la sécurité CRDT
  • v0.4.0 : Topologies sémantiques déterministes — embeddings SimHash, génération autonome d'arêtes
  • 98 à 142 fois plus rapide que la logique subjective / Dempster-Shafer (identique au bit près entre architectures)

Réseau et sécurité

  • Sessions chiffrées Noise Protocol XX (activées par défaut)
  • Limitation de débit par pair avec seau à jetons (arithmétique entière)
  • Déduplication du gossip en O(1) via HashSet + VecDeque
  • Détection de rejeu TTL avec disjoncteur
  • Éviction LRU des sessions (TTL + nombre max)
  • Négociation de plage de versions de protocole pour mises à niveau progressives

Moteur de décision et consensus

  • Trait DecisionEngine enfichable avec implémentation RuleEngine
  • Règles rechargeables à chaud depuis aimp_rules.json (pas de redémarrage nécessaire)
  • Vote par quorum BFT avec décisions vérifiées persistantes
  • Énumération Payload typée par opcode (sécurité à la compilation)

Observabilité

  • Compteurs, jauges et histogrammes de latence Prometheus
  • Point de terminaison /health composite avec sous-vérifications et codes d'état HTTP
  • Journalisation structurée SystemEvent avec tableau de bord TUI

Opérations

  • Hiérarchie de types d'erreurs unifiée AimpError (fini les Box<dyn Error>)
  • Validation de la configuration (rejette les combinaisons de paramètres invalides)
  • Arrêt gracieux avec délai d'attente de 5 secondes
  • Fichier de service systemd durci
  • CI/CD : lint, tests, audit de sécurité, documentation, versions compilées croisées

Bancs d'essai

Mesurés avec Criterion sur Apple Silicon (série M), monothread, mode fast-crypto :

Niveau système

Cluster simulé de 5 nœuds avec synchronisation anti-entropie (en processus, Apple Silicon) :

Perturbation réseau (simulation netem)

Convergence sous perte de paquets, latence et partitions simulées (5 nœuds, 50 mutations/nœud) :

AIMP converge jusqu'à ~80 % de perte de paquets en quelques cycles d'anti-entropie, avec une dégradation gracieuse.

Multi-plateforme (ARM64 ressources limitées)

Docker ARM64 Linux avec limites de ressources de classe Raspberry Pi :

Même sur du matériel de classe RPi Zero, le débit est de 3 ordres de grandeur au-dessus de la limite de débit.

Comparaison avec Automerge v0.7

Même matériel, mêmes opérations, monothread, target-cpu=native :

AIMP avec ring surpasse Automerge d'un facteur 1,37x sur les mutations (avec Ed25519 par écriture) et de 2,4x sur la fusion. Yrs est le plus rapide sur les mutations (pas de crypto) mais la fusion d'AIMP est à 26 % de celle de Yrs.

root@kitploit:~
# Activer le backend ring pour un débit maximal
RUSTFLAGS="-C target-cpu=native" cargo run --release --features fast-crypto,fast-alloc

Exécuter les bancs d'essai localement :

root@kitploit:~
cargo bench --manifest-path aimp_node/Cargo.toml             # Micro-bancs d'essai
cargo run --release -p aimp_node --example bench_convergence  # Bancs d'essai système
cargo run --release -p aimp_node --example bench_netem        # Perturbation réseau
docker build -f Dockerfile.bench -t aimp-bench . && \
  docker run --rm --memory=1g --cpus=1 aimp-bench             # ARM64 contraint

Vérification formelle (TLA+)

L2 — Convergence CRDT

PropriétéDescription

TLC a exploré 46 063 états (9 558 distincts) jusqu'à une profondeur de 16 en moins d'une seconde avec 10 travailleurs parallèles et zéro violation. Bogues trouvés : 2 bogues de correction (têtes désordonnées, double vote du quorum). Les deux ont été corrigés.

L3 — Convergence des croyances

PropriétéDescription

Vérification exhaustive bornée : 199 902 configurations (5 propriétés, jusqu'à N=6 nœuds). Bogue trouvé : 1 bogue de formule de propagation de confiance (t_{k+1} = t_k + At_k au lieu de t_{k+1} = t_0 + At_k). Corrigé.


Démarrage rapide

1. Lancer le nœud

root@kitploit:~
cargo run -- --port 1337 --name node1

2. Interface en ligne de commande Python

root@kitploit:~
cd aimp_testbed
pip install -e .
aimp-cli health --target 127.0.0.1 --metrics-port 9090
aimp-cli infer "Check valve pressure in sector north"

3. Exécuter les tests et les bancs d'essai

root@kitploit:~
make test                     # Tests basés sur les propriétés + intégration
make bench                    # Bancs d'essai Criterion
make lint                     # Formatage + clippy
make docs                     # Générer rustdoc

Déploiement en périphérie

AIMP est conçu pour fonctionner comme un binaire statique unique sans aucune dépendance d'exécution. Pas de Docker, pas d'environnement d'exécution de conteneur, pas de JVM.

Déploiement rapide (métal nu)

root@kitploit:~
# Télécharger le binaire pour votre architecture
curl -LO https://github.com/fabriziosalmi/aimp/releases/latest/download/aimp_node-aarch64-linux
chmod +x aimp_node-aarch64-linux

# Installer comme service systemd
sudo deploy/install.sh ./aimp_node-aarch64-linux

# Démarrer
sudo systemctl start aimp-node
curl localhost:9090/health

Compilation croisée à partir des sources

root@kitploit:~
make install-cross-targets   # Une fois : installer les cibles musl
make edge-arm64              # ARM64 (RPi 4/5, Jetson, Graviton)
make edge-armv7              # ARMv7 (RPi 2/3, automates industriels)
make edge-x86                # x86_64 (passerelles périphériques)
make edge-all                # Les trois

MicroVM Firecracker (isolation multi-locataire)

Pour les passerelles périphériques exécutant plusieurs charges de travail non fiables :

root@kitploit:~
sudo make microvm-rootfs     # Construit une racine Alpine ~15 Mo avec AIMP
firecracker --no-api --config-file deploy/firecracker/vm-config.json

Temps de démarrage : ~125 ms. Mémoire : 64 Mo. vCPU : 1.

Service systemd

Le fichier de service inclus (deploy/systemd/aimp-node.service) fournit :


Configuration

La configuration est chargée depuis (priorité la plus haute d'abord) :

  1. Arguments CLI (--port, --name)
  2. Variables d'environnement (AIMP_PORT, AIMP_NOISE_REQUIRED, AIMP_PEER_RATE_LIMIT, ...)
  3. Fichier aimp.toml (optionnel)
  4. Valeurs par défaut codées en dur

Flux de données

root@kitploit:~
graph TD
    UDP[Socket UDP] -->|Enveloppe| RL[Limiteur de débit]
    RL -->|Autorisé| NP[Noise Protocol]
    NP -->|Déchiffrer| FW[Pare-feu de sécurité]
    FW -->|Valide| BP[Sémaphore de contre-pression]
    BP -->|Permis| Parser[Analyseur de protocole]
    Parser -->|AimpData| CRDT[Acteur CRDT]
    CRDT -->|Mutation| DAG[Merkle-DAG + redb]
    DAG -->|Élaguer| GC[GC d'époque]
    CRDT -->|Demande d'évaluation| DE[Moteur de décision]
    DE -->|Décision + Preuve| CRDT
    CRDT -->|Vote du quorum| QM[Gestionnaire de quorum]

Travaux connexes

AIMP s'appuie sur des concepts issus des domaines suivants de la recherche en systèmes distribués :

  • CRDTs — Shapiro et al., "A Comprehensive Study of Convergent and Commutative Replicated Data Types" (INRIA, 2011)
  • Merkle-CRDTs — Kleppmann & Howard, "Byzantine Eventual Consistency and the Fundamental Limits of Peer-to-Peer Databases" (2022)
  • BFT Consensus — Castro & Liskov, "Practical Byzantine Fault Tolerance" (OSDI, 1999)
  • Bayesian Aggregation — Jaynes, "Probability Theory: The Logic of Science" (2003); log-odds arithmetic for belief fusion
  • Trust Networks — Kamvar et al., "The EigenTrust Algorithm for Reputation Management in P2P Networks" (WWW, 2003)
  • Subjective Logic — Jøsang, "Subjective Logic: A Formalism for Reasoning Under Uncertainty" (Springer, 2016)
  • Copulas — Nelsen, "An Introduction to Copulas" (Springer, 2006); correlation modeling for dependent evidence
  • Noise Protocol — Perrin, "The Noise Protocol Framework" (2018); used via the snow crate for XX handshake pattern
  • Gossip Protocols — Demers et al., "Epidemic Algorithms for Replicated Database Maintenance" (1987)
  • Merkle Trees — Merkle, "A Digital Signature Based on a Conventional Encryption Function" (CRYPTO, 1987)
  • Vector Clocks — Mattern, "Virtual Time and Global States of Distributed Systems" (1988)

Licence

MIT — Fabrizio Salmi, 2026.

Télécharger l’outil
CoucheVersionObjectif
L1/L2v0.1.0CRDT Merkle-DAG, signature Ed25519, transport Noise Protocol, quorum BFT
L3v0.2.0Couche épistémique : log-odds entiers, propagation de confiance en deux passes, réputation résistante aux Sybil
L3v0.3.0Agrégation tenant compte des corrélations : escompte géométrique pour capteurs/LLM corrélés
L3v0.4.0Topologies sémantiques déterministes : génération autonome d'arêtes via SimHash 256 bits
FonctionnalitéAIMP (Merkle-CRDT)Traditionnel (Raft/Paxos)
TopologieMaillage P2P / DécentraliséLeader / Quorum
DisponibilitéAP (Toujours accessible en écriture)CP (Nécessite une majorité)
OrdonnancementCausal (Horloges vectorielles)Total (Séquentiel)
IntégritéCryptographique (Merkle-DAG)Basé sur un journal
MatérielOptimisé pour l'Edge/IoTAdapté aux centres de données
OpérationTempsDébit
append_mutation (100 opérations)41,8 µs~2,4 M de mutations/s
get_merkle_root (en cache)4,8 nsO(1)
Hachage BLAKE3 (1 Ko)925 ns~1,08 Go/s
Sérialisation/Désérialisation MessagePack204 / 210 ns—
Signature Ed25519 (ring)9,3 µs~108 K opérations/s
Vérification Ed2551925,0 µs~40 K opérations/s
ScénarioRésultat
Débit (5 nœuds x 1000 mutations, avec signature Ed25519)96 289 mutations/s
Convergence (5 nœuds divergents, 250 DAG chacun)0,68 ms (1 cycle de synchronisation)
Partition/Fusion (2 groupes, 30 mutations/groupe, fusion complète)0,21 ms
Chemin chaud cryptographique (signature + vérification par message)45,0 µs → 22 K msg/s max
Budget crypto à rate_limit=50/s0,23 % d'utilisation
ConditionConvergéCycles
Référence (0% de perte)OUI1
10% de perte de paquetsOUI2
30% de perte de paquetsOUI2
50% de perte de paquetsOUI2
20% de perte + 100 ms de latence + 30 ms de gigueOUI2
Partition (10 cycles) puis fusionOUI1
Partition (50 cycles) puis fusion avec 20% de perteOUI1
80% de perte de paquets (stress)OUI4
MétriquemacOS ARM64Linux 1C/1 Go (RPi 4)Linux 1C/256 Mo (RPi Zero)
Débit96 289 mut/s24 802 mut/s29 709 mut/s
Convergence0,68 ms3,06 ms1,30 ms
Signature Ed255198,7 µs16,2 µs15,1 µs
Vérification Ed2551920,5 µs34,6 µs45,2 µs
Max msg/s34 32919 69516 573
Budget crypto @50/s0,15 %0,25 %0,30 %
Banc d'essaiAIMP (ring)AutomergeYrs (Yjs)
Mutation (1000 opérations)129 K ops/s94 K ops/s632 K ops/s
Fusion à 2 répliques0,48 ms1,17 ms0,38 ms
Fusion à 5 répliques2,16 ms3,89 ms—
Taille d'état (1000 opérations)~18 Ko4 Ko—
Statut
ConvergenceSi deux nœuds possèdent le même store, ils calculent les mêmes têtes MerkleVérifié
Sécurité du quorumSi le quorum est atteint pour une invite, la décision est unique (aucune décision conflictuelle)Vérifié
Vivacité du quorumSi tous les nœuds votent pour la même décision, le seuil de quorum est finalement atteintVérifié
Statut
Déterminisme des croyancesMêmes affirmations + graphe → BeliefState identique sur tous les nœudsVérifié
Pas d'oscillationLes valeurs de confiance convergent de manière monotone (pas de rétroaction Passe 2 → Passe 1)Vérifié
Sécurité des contradictionsUne seule contradiction ne peut pas faire passer Accepté → Rejeté en une étapeVérifié
DurcissementValeur
Isolation utilisateurUtilisateur dédié aimp, pas de shell de connexion
Système de fichiersProtectSystem=strict, ProtectHome=yes
Limite mémoireMemoryMax=128M
Limite CPUCPUQuota=80%
PrivilègesNoNewPrivileges=yes, MemoryDenyWriteExecute=yes
Filtre d'appels systèmeListe blanche @system-service
RedémarrageEn cas d'échec avec backoff exponentiel
ArrêtSIGTERM → 10 s de grâce → SIGKILL
ParamètrePar défautDescription
port1337Port d'écoute UDP
metrics_port9090Port HTTP Prometheus
noise_requiredtrueImposer le chiffrement Noise Protocol
peer_rate_limit50Max de messages/s par pair
peer_rate_burst100Capacité de rafale du seau à jetons
gc_mutation_threshold1000Mutations avant balayage GC
quorum_threshold2Nœuds requis pour le consensus BFT
dag_history_depth100Profondeur maximale du DAG conservée après GC