Aegis ist auf diesem Gerät noch nicht installiert. Kopiere den Einladungslink, installiere die App und füge den Link darin ein – dann bist du direkt mit der Person verbunden, die dich eingeladen hat.
Aegis ist ein Ende-zu-Ende-verschlüsselter 1:1-Messenger für Android mit einem selbst betriebenen Zero-Knowledge-Relay: Der Server bewegt ausschließlich Chiffretext und kann Nachrichten technisch nicht lesen. Keine Telefonnummer, kein Konzern, keine Föderation – und dahinter Aegis Controller, die Steuerzentrale für die Infrastruktur, auf der das Ganze läuft.
Die Kryptographie liegt vollständig in der App. Der Server ist bewusst dumm gehalten – selbst wer ihn vollständig übernimmt, bekommt keinen Klartext.
Umgesetzt mit libsignal, der offiziellen, auditierten Signal-Bibliothek – keine selbstgebaute Krypto. Sessionaufbau per X3DH (optional PQXDH mit Kyber-Prekeys als Post-Quantum-Schutz), laufender Betrieb über den Double Ratchet.
Damit gilt Forward Secrecy (gestohlene Schlüssel öffnen keine alten Nachrichten) und Post-Compromise Security (die Session heilt sich nach einem Leak selbst).
Das Relay speichert und routet nur opake Ciphertext-Envelopes, dazu öffentliche Schlüssel und Prekey-Bundles. Es besitzt keinen einzigen privaten Schlüssel. Root-Zugriff plus vollständiger Datenbank-Dump ergeben keinen Klartext.
Zugestellte Nachrichten werden nach der Bestätigung sofort gelöscht; unzugestellte laufen nach 30 Tagen ab. Kein Archiv.
Schicht 1 (Double Ratchet) lässt sich im Hintergrund entschlüsseln – daraus entsteht die Benachrichtigung „Neue Nachricht von X“ mit sichtbarem Absender.
Schicht 2 trägt den eigentlichen Inhalt und ist an einen biometrie-gebundenen Content-Key im Android-Keystore gebunden (StrongBox/TEE, nicht exportierbar, pro Nachricht ein eigener ECIES-Schlüssel). Der Text erscheint erst nach dem Fingerabdruck – im gesperrten Zustand bewusst ohne Vorschau.
Ein Konto besteht aus Benutzername + Identitäts-Schlüsselpaar. Keine Rufnummer, keine E-Mail, kein Adressbuch-Upload. Kontakte kommen per QR-Code oder Einladungslink dazu.
Ein Server, eine App. Es gibt keine Server-zu-Server-Schnittstelle, kein
Matrix, kein .well-known-Discovery – ein fremder Server hat schlicht nichts,
womit er sprechen könnte.
Registrierung nur mit einmaligem Invite-Token; jeder Aufruf wird per Challenge-Response mit dem Geräteschlüssel signiert – keine Passwörter.
Die App pinnt das Server-Zertifikat (SPKI-Pinning), womit sich auch ein Angreifer mit gültigem Fremdzertifikat nicht dazwischenschieben kann.
Zwischen Nutzern schützt TOFU-Pinning plus Sicherheitsnummer: eine 60-stellige, aus beiden Identitätsschlüsseln berechnete Zahl, die sich direkt im Chat vergleichen lässt. Ändert sie sich, wird gewarnt.
Envelopes werden auf feste Bucket-Größen gepolstert, der Absender steckt im verschlüsselten Payload (Sealed Sender), serverseitige Kontaktlisten existieren nicht.
Der Wake-up-Push ist inhaltslos und läuft über self-hosted UnifiedPush/ntfy – kein Firebase.
Nachrichten-Datenbank und die libsignal-Schlüsselspeicher liegen in
SQLCipher (AES-256, Schlüssel im Android-Keystore). Der private
Identitätsschlüssel verlässt das Gerät nie. allowBackup=false hält die
Geheimnisse aus Cloud-Backups heraus.
Relay (Python/FastAPI + PostgreSQL) und der öffentliche TLS-Edge (Caddy mit
automatischem Let's Encrypt) sind zwei docker compose-Stacks. Wer will,
betreibt das Ganze auf einem eigenen kleinen Server.
Ehrlich aufgeschlüsselt: Ein Relay muss wissen, wohin es zustellt. Alles andere bleibt draußen.
| Datum | Server sieht | Server sieht nicht |
|---|---|---|
| Nachrichtentext | nur opaken Ciphertext | den Klartext; die Länge nur grob (gepolstert) |
| Identitäts- und Prekey-Schlüssel | die öffentlichen Anteile (das ist ihr Zweck) | die zugehörigen privaten Schlüssel |
| Konten | welcher Benutzername existiert | Klarnamen, Telefonnummer, E-Mail – gibt es nicht |
| Zustell-Metadaten | Empfänger-ID + Zeitstempel fürs Routing | den Absender im Sealed-Sender-Modus |
| Push | den Push-Endpunkt zum Aufwecken | Inhalt – der Push ist leer |
| Identitäts-Backup | einen opaken, passphrase-verschlüsselten Blob | Passphrase und Inhalt |
Details, Schlüsselverwaltung und Grenzen des Modells: Sicherheitsmodell in den Docs.
Aegis ist mehr als der Messenger. Der Controller ist ein mobil-first Control Interface für die eigene Infrastruktur: überwachen und kontrolliert steuern, ohne dass jemand versehentlich Schaden anrichten kann. Er läuft strikt getrennt vom öffentlichen Chat-Pfad – ausschließlich über WireGuard-VPN erreichbar.
Aus Schwellwerten je Host und Dienst wird ein Ampel-Status abgeleitet (OK / WARN / CRITICAL) – CPU und Load, RAM, Disk-Belegung je Mount, I/O, Temperaturen (sauber als „n/a“, wenn der VPS keine Sensoren meldet), Netz, Container-Health. Ein Rollup ergibt den Gesamtstatus.
node_exporter (Host) und cAdvisor (Container) liefern Metriken an
VictoriaMetrics (12 Monate Aufbewahrung). Der Controller fragt sie ab und
rendert eigene, aufgeräumte Charts fürs Handy – statt einem Laien ein Grafana vorzusetzen.
Alle internen Dienste binden an die WireGuard-Adresse 10.10.2.1. Die Firewall
lässt eingehend nur SSH und den WireGuard-Port zu. Nur Messenger-Relay und Edge sind
bewusst öffentlich – und die bewegen ausschließlich Chiffretext.
Hierarchische Rechte-Strings wie module.plex.stream.stop mit Wildcards
(server.*.status.read), gebündelt in Rollen, ausgewertet von
Casbin; deny gewinnt immer. Die UI blendet Elemente nur aus –
entschieden wird bei jeder Aktion erneut im Backend, und jede
rechtepflichtige Aktion landet im Audit-Log.
Rechtemodell und Audit-Log stehen; Login und 2FA über Authentik folgen.
Auf den Zielservern läuft kein Root-SSH, sondern ein schlanker Agent mit einer festen Whitelist an Aktionen (Container neu starten, Update, Reboot …). Es gibt keinen generischen „führe Befehl aus“-Endpunkt; Docker-Aktionen laufen über das offizielle SDK statt über eine Shell. Gefährliche Operationen existieren an der Schnittstelle gar nicht erst.
Agent ist implementiert, der Rollout auf die Zielserver läuft.
Zustandsautomat je Dienst: Probes, geordneter Neustart mit Abhängigkeiten und Delays, Backoff-Grenze gegen Crash-Loops, Wartungsmodus – und ein externer Dead-man's-switch, damit auch ein Totalausfall des Controllers gemeldet wird. Was nicht heilbar ist, kommt als Push aufs Handy.
Debian-Updates und Container-Updates mit Pre-Update-Snapshot und Rollback, Konfigurationen git-versioniert, Volumes per restic, dazu Module für UniFi-Gateway und Plex. Restore über die UI – rechtepflichtig und auditierbar.
Leitprinzipien: Least Privilege · das Backend ist die Wahrheit · alles ist auditierbar · alles ist ein Modul · selbstheilend, aber ehrlich · nie nackt im Internet. Mehr dazu im Architektur-Überblick.
Aegis wird als APK direkt hier ausgeliefert – kein App-Store, kein Konto bei Dritten. Für die Registrierung brauchst du einen Einladungslink.
App noch nicht installiert?
APK herunterladenVersion 1.2 · 64 MB · Stand 20.07.2026
Android 8 oder neuer. Die App bringt Chat und – sofern freigeschaltet – den VPN-geschützten Dashboard-Tab mit.