Die Architektur des digitalen Vergessens
Ein Echtzeit-Kommunikationssystem, das physikalisch nicht in der Lage ist, Daten zu speichern.
⚠️ Hinweis: Dieses Projekt dient ausschließlich zu Trainings- und Vorführungszwecken.
Es demonstriert Zero-Persistence Architektur-Konzepte und soll als Lernressource für sichere Kommunikationssysteme verwendet werden.
ZPMS (Zero-Persistence Messaging System) - auch bekannt als Ephemeral Chat - ist eine sichere Chat-Plattform für 1:1-Kommunikation, die auf drei fundamentalen Prinzipien basiert:
- ✅ Zero Logging - Keine Server-Logs mit Nachrichteninhalten
- ✅ No Database - Physikalisch unmöglich, Daten persistent zu speichern
- ✅ Stateless Server - Server kennt nur aktive Verbindungen, keine Historie
- ✅ Client-Side Encryption - WebCrypto API (ECDH + AES-GCM-256)
- 🔌 WebSocket Full-Duplex - Bidirektionale, persistente Verbindungen
- 🚀 Instant Message Relay - Nachrichten werden nur durchgeleitet, nie gespeichert
- 👥 Session-Based Pairing - 1:1 Verbindungen mit temporären Session-IDs
- 📱 Multi-Device Ready - Responsive Design für Desktop & Mobile
- 🛡️ Rate Limiting - 100 Nachrichten pro Minute pro Client
- ⏱️ Session Timeout - Automatischer Disconnect nach 30 Minuten Inaktivität
- 📦 Payload Limit - Maximale Nachrichtengröße: 1MB
- 🚨 Error Isolation - Fehler-Logs ohne sensitiven Kontext
graph LR
A[Client A<br/>Browser] -->|WSS Encrypted| B[Stateless Server<br/>RAM-Only]
B -->|WSS Encrypted| C[Client B<br/>Browser]
A -->|1. Generate Keys| A
C -->|1. Generate Keys| C
A -->|2. Exchange Public Keys| B
B -->|2. Exchange Public Keys| C
A -->|3. Encrypt with Shared Secret| A
C -->|4. Decrypt with Shared Secret| C
B -->|No Storage| D[❌ No Database<br/>❌ No HDD<br/>❌ No Logs]
style B fill:#6366f1,color:#fff
style D fill:#ef4444,color:#fff
- Initialisierung - Client A öffnet WebSocket zum Server
- Token-Generierung - Server generiert temporäre Session-ID (UUID)
- Waiting State - Client A wartet auf Partner
- Join Event - Client B verbindet sich mit Session-ID
- E2EE Handshake - Diffie-Hellman Key Exchange über Server
- Pipe Established - Server verknüpft Socket A ↔ Socket B im RAM
- Message Flow - Verschlüsselte Nachrichten fließen durch den Server
- Termination - Disconnect → Session-Objekt wird aus RAM gelöscht
- Node.js 18+
- npm oder yarn
# Repository klonen
git clone https://github.com/DEVmatrose/ZPMS---Zero-Persistence-Messaging-System.git
cd ZPMS---Zero-Persistence-Messaging-System
# Dependencies installieren
npm install
# Umgebungsvariablen konfigurieren
cp .env.example .env
# Server starten
npm start# Server mit Auto-Reload
npm run dev
# Client öffnen
# Navigiere zu http://localhost:3000/client.html- Tab 1 - Öffne
http://localhost:3000/client.html - Klicke auf "Create Session"
- Kopiere die generierte Session-ID
- Tab 2 - Öffne erneut
http://localhost:3000/client.html - Füge die Session-ID ein und klicke auf "Join Session"
- 🎉 Sichere E2E-verschlüsselte Kommunikation!
- Node.js - JavaScript Runtime
- Express - Minimal Web Framework
- Socket.io 4.6 - WebSocket Implementierung
- UUID 9.0 - Session-ID Generierung
- Vanilla JavaScript - Keine Framework-Abhängigkeiten
- WebCrypto API - Native Browser-Verschlüsselung (ECDH + AES-GCM)
- Tailwind CSS - Utility-First Styling
- Socket.io-client - WebSocket Client
- ECDH (P-256) - Elliptic Curve Diffie-Hellman Key Exchange
- AES-GCM-256 - Authenticated Encryption
- HKDF (SHA-256) - Key Derivation Function
- Random IV (96-bit) - Initialization Vector pro Nachricht
ZPMS/
├── 📄 server.js # Backend (Node.js + Socket.io)
├── 📄 app.js # Frontend Logic (Encryption + WebSocket)
├── 📄 client.html # Chat Interface
├── 📄 index.html # Whitepaper Viewer
├── 📄 package.json # Dependencies
├── 📄 .env.example # Environment Template
├── 📁 images/ # Visual Assets
│ ├── leitbild.png
│ ├── bild1.png (RAM-Only)
│ ├── bild2.png (E2E Flow)
│ └── bild3.png (Lifecycle)
├── 📄 BACKEND-WHITEPAPER.md # Server Architektur
├── 📄 CLIENT-WHITEPAPER.md # Client Architektur
├── 📄 WORKSESSION.md # Entwicklungsdokumentation
└── 📄 QUICKSTART.md # Setup-Guide
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Client A │ │ Server │ │ Client B │
│ │ │ (RAM-Only) │ │ │
├─────────────┤ ├──────────────┤ ├─────────────┤
│ │ │ │ │ │
│ 1. Generate │ │ │ │ 1. Generate │
│ ECDH │─────────────────▶│ │◀─────────────────│ ECDH │
│ Keys │ Public Key A │ │ Public Key B │ Keys │
│ │ │ │ │ │
│ 2. Compute │ │ Forwards │ │ 2. Compute │
│ Shared │ │ Public │ │ Shared │
│ Secret │ │ Keys Only │ │ Secret │
│ │ │ │ │ │
│ 3. Encrypt │ │ ┌────────┐ │ │ 4. Decrypt │
│ Message │─────────────────▶│ │ Can't │ │─────────────────▶│ Message │
│ (AES-GCM) │ Ciphertext │ │ Read │ │ Ciphertext │ (AES-GCM) │
│ │ │ └────────┘ │ │ │
│ Plaintext: │ │ │ │ Plaintext: │
│ "Hello!" │ │ [Encrypted] │ │ "Hello!" │
└─────────────┘ └──────────────┘ └─────────────┘
Der Server nutzt keine persistenten Datenstrukturen:
// ✅ Erlaubt - Flüchtiger RAM
const sessions = new Map(); // Nur im Arbeitsspeicher
// ❌ Verboten - Persistente Speicherung
// const db = new Database();
// fs.writeFileSync('messages.txt', data);
// localStorage.setItem('chat', messages);Bei einem Disconnect-Event wird das Session-Objekt sofort aus dem RAM entfernt:
socket.on('disconnect', () => {
const session = sessions.get(sessionId);
sessions.delete(sessionId); // Sofortige Löschung
// Garbage Collector überschreibt Speicher
});| Feature | Beschreibung |
|---|---|
| 🔒 Absolute Privatsphäre | Keine Daten können später kompromittiert werden |
| 📜 DSGVO-Konform | Datenlöschung ist garantiert durch Design |
| 🎯 Keine Angriffsfläche | Keine Datenbank = Kein Ziel für Hacker |
| 🏗️ Simple Infrastruktur | Kein Backup-System, keine DB-Wartung |
| 🕵️ Whistleblower-Schutz | Perfekt für sensible Kommunikation |
| Limitierung | Beschreibung |
|---|---|
| 📜 Kein Chat-Verlauf | Nachrichten verschwinden bei Browser-Schließung |
| 👥 Beide online | Keine asynchrone Kommunikation möglich |
| 📷 Keine Medienspeicherung | Bilder/Dateien können nicht persistent geteilt werden |
| Server-Absturz = Alle Sessions verloren | |
| 📋 Keine Beweissicherung | Nicht für rechtliche Dokumentation geeignet |
- 📰 Journalisten ↔ Quellen - Whistleblower-Schutz ohne digitale Spuren
- 🏥 Medizinische Erstberatung - Ohne Dokumentationspflicht
- 💼 Unternehmensberatung - Sensible Strategiegespräche
- 🧠 Therapeutische Gespräche - Ad-hoc Beratung ohne Archivierung
- 🔐 Privacy-bewusste Nutzer - Private Konversationen ohne Überwachung
- 📱 Standard-Messaging - Nutzer erwarten Chat-Historie
- 📁 Dateifreigabe - Keine persistente Medienspeicherung
- 👥 Gruppen-Chats - Aktuell nur 1:1 unterstützt
- 📜 Rechtsverbindliche Kommunikation - Keine Nachweismöglichkeit
# Unit Tests
npm test
# Integration Tests
npm run test:integration
# Coverage Report
npm run coverage# ESLint
npm run lint
# Prettier
npm run format
# Type Checking
npm run typecheck- BACKEND-WHITEPAPER.md - Server-Architektur und WebSocket-Events
- CLIENT-WHITEPAPER.md - Frontend-Implementierung und Verschlüsselung
- WORKSESSION.md - Entwicklungsphasen und Implementierungsstatus
- QUICKSTART.md - Schnelle Einrichtung und erste Schritte
- index.html - Interaktive visuelle Dokumentation
Beiträge sind willkommen! Bitte beachte folgende Richtlinien:
- 🍴 Fork das Repository
- 🌿 Erstelle einen Feature-Branch (
git checkout -b feature/AmazingFeature) - 💾 Committe deine Änderungen (
git commit -m 'Add AmazingFeature') - 📤 Push zum Branch (
git push origin feature/AmazingFeature) - 🔀 Öffne einen Pull Request
- ✅ ESLint-konforme Code-Formatierung
- ✅ Aussagekräftige Commit-Messages
- ✅ Tests für neue Features
- ✅ Dokumentation für API-Änderungen
Dieses Projekt wurde zu Trainings- und Vorführungszwecken entwickelt und dient als:
- 📚 Lernressource für Zero-Persistence Architektur-Konzepte
- 🎓 Bildungsmaterial für sichere Kommunikationssysteme
- 🔬 Proof-of-Concept für ephemere Messaging-Technologien
- 🎯 Demonstration von E2E-Verschlüsselung und WebSocket-Kommunikation
- Keine Garantie für absolute Sicherheit in kritischen Anwendungen
- Keine professionelle Sicherheitsaudit durchgeführt
- Dient primär didaktischen und demonstrativen Zwecken
- Der Code wird "AS IS" bereitgestellt
- Keine Haftung für Datenverlust oder Sicherheitsvorfälle
- Für sensible/kritische Kommunikation professionelle Lösungen verwenden
✅ Ideal für:
- Technische Workshops und Präsentationen
- Universitätskurse über sichere Systeme
- Prototyping und Konzept-Validierung
- Persönliche Lernprojekte
Dieses Projekt ist unter der MIT License lizenziert - siehe LICENSE für Details.
- Socket.io Team - Für die exzellente WebSocket-Implementierung
- Web Crypto API - Native Browser-Verschlüsselung ohne externe Abhängigkeiten
- Tailwind CSS - Utility-First CSS Framework für das moderne UI-Design
Organisation: DEVmatrose
Projektlink: ZPMS Repository
Dokumentation: GitHub Pages
Made with ❤️ for Privacy
"In einer Welt der ewigen Daten, ist Vergessen ein Feature, kein Bug."
⭐ Star dieses Repo, wenn es dir gefällt! ⭐



