FIPS — Das Mesh-Netzwerk-Protokoll für zensurresistente Kommunikation

FIPS (Free Internetworking Peering System — kein Akronym, nur ein Name) ist ein selbstorganisierendes, verschlüsseltes Mesh-Netzwerk für zensurresistente, dezentrale Kommunikation. Entwickelt von jmcorgan in Rust. Aktuell: Version v0.2.0 (März 2026), v0.3 in Entwicklung.

🌐 Was macht FIPS besonders?

FIPS nutzt Nostr-Identitäten (secp256k1/Schnorr) als native Netzwerkadressen. Dein Node hat eine npub-Adresse — dieselbe kryptografische Identität die auch als Basis für Ende-zu-Ende-verschlüsselte Sessions dient. Keine Registrierung, keine zentrale Autorität, keine globalen Routing-Tabellen.

Das Mesh funktioniert über jedes Transportmedium: UDP, TCP, Ethernet, Tor, Bluetooth (BLE), serielle Verbindungen, Radio. Selbstorganisation — ein einziger Peer reicht, um das gesamte Mesh zu erreichen.

📦 Version 0.2.0 — Was ist neu?

Die aktuelle Release (v0.2.0, 23. März 2026) bringt:

Logos und Branding — FIPS hat jetzt ein offizielles Logo und Banner.

Post-Rekey Jitter Fix — Rekeying verursachte vorher Jitter-Spikes durch Drain-Window-Frames. Gefixt in PR #12.

Nostr Relay Sidecar — Ein Beispiel-Sidecar der einen Nostr-Relay neben dem FIPS-Node betreibt (PR #20). Nostr + Mesh = perfekt.

Reproducible Builds — Die Binaries sind jetzt reproduzierbar. Jeder kann nachbauen und verifizieren dass der Code dem Binary entspricht (PR #25).

OpenWrt Publishing via Nostr — Die OpenWrt-Pakete werden jetzt über Nostr veröffentlicht (PR #28).

🚀 Download und Installation

FIPS ist in Rust geschrieben (Edition 2024, Rust 1.85+). Verfügbar für Linux, macOS, Windows und OpenWrt.

GitHub: github.com/jmcorgan/fips

Quellcode bauen:

git clone https://github.com/jmcorgan/fips.git
cd fips
cargo build –release

OpenWrt (.ipk):

x86_64: fips_v0.2.0-rel_x86_64.ipk (5 MB)
aarch64: fips_v0.2.0-rel_aarch64_cortex-a53.ipk (4,8 MB)

Debian/Ubuntu (.deb):

cargo install cargo-deb
cargo deb
sudo dpkg -i target/debian/fips_*.deb

Interaktiver Protokoll-Guide: learn.fips.network — 14 Lektionen mit Simulationen, von Grundlagen bis Installation.

⚙️ Konfiguration

FIPS braucht minimal Konfiguration. Nach der Installation:

sudo nano /etc/fips/fips.yaml
sudo systemctl start fips

Die Config enthält: Node-Identity (ephemeral oder persistent mit nsec), TUN-Interface (fips0, MTU 1280), DNS-Resolver (.fips-Domain auf Port 5354), Transport-Bindings (UDP :2121, TCP :8443), und statische Peers zum Bootstrapping.

Zero Config: Ein Node kann ohne Config-Datei starten. Peer-Adressen werden nur zum Initial-Join ins Mesh benötigt.

🔐 Verschlüsselung

Zwei unabhängige Verschlüsselungsschichten nach dem Noise Protocol Framework:

Hop-by-Hop (FMP Layer): Noise IK — jeder Link zwischen benachbarten Nodes ist authentifiziert und verschlüsselt. Passive Observer (WiFi-Sniffer) sehen nichts.

End-to-End (FSP Layer): Noise XK — zusätzliche Verschlüsselung zwischen den Endpunkten. selbst Nodes die den Traffic weiterleiten können den Inhalt oder die Endpunkte nicht sehen.

Forward Secrecy: Periodisches Rekeying mit kurzen Sitzungsschlüsseln. Kompromittierte Schlüssel gelten nur für den jeweiligen Zeitraum.

🛡️ Threat Model

Passive Observer (WiFi-Sniffer): Geschützt durch Link-Verschlüsselung (FMP). Sieht nur verschlüsselte Frames.

MITM/Paket-Manipulation: Geschützt durch Noise IK Authentication + AEAD. Manipulierte Pakete werden verworfen.

Malicious Mesh Nodes: Geschützt durch End-to-End Session (FSP). Böse Nodes sehen nur den node_addr Hash, nicht den Inhalt.

Sybil Attack: Abgemildert durch Rate-Limiting und diskretionäres Peering. Du entscheidest wem du vertraust.

🗺️ Routing: Spanning Tree + Bloom Filter

FIPS verwendet keinen klassischen Routing-Table. Stattdessen:

Spanning Tree: Das Mesh organisiert sich als Baum. Jeder Node wählt einen Parent. Koordinaten im Baum erlauben effizientes Forwarding.

Bloom Filter: Probabilistische Datenstruktur die jedem Node sagt: „Dieser Peer kennt wahrscheinlich das Ziel.“ Weniger Overhead als globale Tabellen.

Greedy Routing: Pakete werden anhand der Baum-Koordinaten weitergeleitet. Keine Pathfinding-Iterationen nötig.

Self-Healing: Wenn ein Node ausfällt oder Verbindungen brechen, konvergiert der Baum automatisch neu. Drei Error-Signale steuern die Wiederherstellung.

📊 Vergleich mit anderen Netzen

FIPS: Mesh-Routing ✅ | E2E Crypto ✅ | Anonymität ❌ | Nostr-ID ✅ | Multi-Transport ✅ | IPv6 ✅

Tor: Mesh ❌ | E2E ✅ | Anonymität ✅ | Nostr-ID ❌ | Multi-Transport ⚠️ | IPv6 ❌

Yggdrasil: Mesh ✅ | E2E ✅ | Anonymität ⚠️ | Nostr-ID ❌ | Multi-Transport ⚠️ | IPv6 ✅

CJDNS: Mesh ✅ | E2E ✅ | Anonymität ⚠️ | Nostr-ID ❌ | Multi-Transport ⚠️ | IPv6 ✅

FIPS bietet keine Anonymität wie Tor — das ist bewusst. Der Fokus liegt auf Dezentralität, Zensurresistenz und Off-Grid-Fähigkeit, nicht auf Anonymisierung.

💡 IPv6-Adapter und Gateway

FIPS macht normale IP-Anwendungen mesh-fähig ohne Code-Änderung:

TUN-Interface: Mappt npubs zu fd00::/8 IPv6-Adressen. Unmodified SSH, curl, ping funktionieren direkt über das Mesh.

DNS-Resolver: .fips-Domains werden lokal aufgelöst. Optional mit statischer Host-Mapping (/etc/fips/hosts).

fips-gateway: Optionaler Sidecar der unmodified LAN-Hosts über NAT und eine virtuelle IP-Pool an .fips-Ziele weiterleitet. Normale Geräte im LAN können FIPS-Ziele erreichen ohne eigene FIPS-Installation.

📡 Transports

UDP: Linux ✅ | macOS ✅ | Windows ✅ | OpenWrt ✅

TCP: Linux ✅ | macOS ✅ | Windows ✅ | OpenWrt ✅

Ethernet: Linux ✅ | macOS ✅ | Windows ❌ | OpenWrt ✅

Tor: Linux ✅ | macOS ✅ | Windows ✅ | OpenWrt ✅

Bluetooth BLE: Linux ✅ | macOS ❌ | Windows ❌ | OpenWrt ❌

Auf Linux braucht BLE BlueZ und libdbus (sudo apt install bluez libdbus-1-dev, dann cargo build –release –features ble).

🔧 Tools und Monitoring

fipsctl: CLI-Tool für Runtime-Inspektion, Peer-Management und Debugging.

fipstop: TUI-Dashboard für Live-Monitoring des Mesh-Status.

Metrics: Per-Link RTT, Packet Loss, Jitter und Goodput mit Mesh-Size-Estimation.

ECN Congestion Signaling: Hop-by-Hop CE-Flag-Relay mit RFC 3168 IPv6-Marking.

🔗 Links

GitHub: github.com/jmcorgan/fips
Website: fips.network
Interactive Guide: learn.fips.network
Releases: github.com/jmcorgan/fips/releases
Config Reference: github.com/jmcorgan/fips/blob/master/docs/design/fips-configuration.md

0 0 Bewertungen
Beitragsbewertung
Abonnieren
Benachrichtigen bei
guest
0 Kommentare
Älteste
Neueste Meistbewertet
Inline-Feedbacks
Alle Kommentare anzeigen
0
Deine Meinung würde uns sehr interessieren. Bitte kommentiere.x