Im Vergleich
Wir vergleichen FOLD nur bei Eigenschaften, die sich prüfen lassen, und verlinken je Spalte eine Quelle. Stand der Wettbewerbsspalten: Juni 2026. Ändert ein Anbieter etwas, ändert sich diese Tabelle.
| Eigenschaft | FOLD | Apple Mail | Mimestream | Spark | Thunderbird | Outlook (neu) |
|---|---|---|---|---|---|---|
| Kein zusätzliches Cloud-Backend | Ja | Ja | Ja direkt zu Gmail | Nein Readdle-Cloud | Ja | Nein MS-Cloud |
| App Sandbox aktiv | Ja | Ja | Ja | Ja | Eingeschränkt Standard-Install nicht sandboxed | Ja |
| OpenPGP nativ | Ja Ed25519, Curve25519 + RSA | Nein | Nein | Nein | Ja | Nein |
| S/MIME nativ | Ja | Ja | Nein | Nein | Ja | Ja |
| DKIM im Client selbst geprüft | Ja | Nein | Nein | Nein | Add-on nicht im Kern | Nein |
| Beliebiger IMAP-Anbieter | Ja | Ja | Nein nur Gmail | Ja | Ja | Eingeschränkt über MS-Cloud erzwungen |
| Open Source | Nein | Nein | Nein | Nein | Ja MPL 2.0 | Nein |
Quellen: Apple Platform Security · Mimestream Supported Accounts · Spark Privacy Explained · Thunderbird · New Outlook Cloud-Sync (Cybernews, 2023).
Die DKIM-Zeile meint eigenständige clientseitige Verifikation (Neuberechnung von Body-Hash und Signatur), nicht das bloße Anzeigen des serverseitigen Authentication-Results-Headers. Stand 06/2026.
Abhängigkeiten
Eine Fremdabhängigkeit kommt nur hinein, wenn alle vier Bedingungen erfüllt sind: Sie liefert ein Verfahren, das wir selbst nicht korrekt bauen können · sie stammt aus vertrauenswürdiger Quelle · sie ist prüfbar · sie steht in der Tabelle unten.
Engine und Oberfläche nutzen ausschließlich Apple-System-Frameworks. Die Direktversion ergänzt die App-Hülle um einen Updater.
| Erlaubt | |
|---|---|
Foundation | Apple SDK. Streams mit TLS tragen IMAP und SMTP, auch STARTTLS auf der laufenden Verbindung. |
CryptoKit | Ed25519, X25519, AES-GCM, SHA-2, HKDF. |
Security | Schlüsselbund, SecTrust, RSA, CMS für S/MIME auf macOS. |
CommonCrypto | AES-Blockchiffre für die Modi OCB und CFB. |
AuthenticationServices | ASWebAuthenticationSession für OAuth. |
SQLite3 | System-SQLite über eine dünne Swift-Schicht. Kein GRDB, kein SQLite.swift. |
WebKit | Gehärtete Mail-Darstellung, JavaScript aus, strenge Inhaltsrichtlinie. |
os.Logger | Apple SDK. |
| Sparkle | Nur Direktversion, nur in der App-Hülle: signierte Aktualisierungen. Nicht Teil von Engine oder Oberfläche. |
| Ausgeschlossen | |
|---|---|
swift-crypto | Plattformübergreifendes Gegenstück zu CryptoKit, auf Apple-Plattformen unnötig. |
libetpan, MailCore | C-Wrapper; wir wollen prüfbaren Swift-Code. |
| OpenPGP-Bibliotheken | Eigene Implementierung mit modernem Kern statt großer Altlasten-Fläche. |
SwiftData, CoreData | Nicht für 500.000 Mails pro Postfach gebaut; stattdessen direkt SQLite. |
| Fremde JSON-, Logging- und Netzwerkpakete | Foundation und os reichen. |
Krypto-Strategie
Asymmetrische Verfahren, AES-GCM, HKDF, SHA-2 und Curve25519 kommen aus CryptoKit und Security.framework, Blockchiffren aus CommonCrypto. Wo Apple kein Verfahren anbietet, implementiert FOLD es selbst und prüft es Byte für Byte gegen Referenzimplementierungen: Argon2id und BLAKE2b für den Fortress-Modus, AES-OCB für OpenPGP, PBKDF2 für SCRAM. Authentifizierungs-Tags und SCRAM-Serversignaturen werden in konstanter Zeit verglichen.
OpenPGP: modern erzeugen, Altlasten eingehegt
Zweiteilige Regel. Erzeugen: Schlüssel der Version 4 mit Ed25519-Signaturen und Curve25519-Schlüsselvereinbarung (ECDH), AES-256 mit Integritätsprüfung (SEIPD v1 mit MDC), SHA-256/512. Lesen und an bestehende Empfänger schreiben: zusätzlich RSA in Security.framework, beim Lesen außerdem der OCB-Modus von GnuPG; verschlüsselte Daten gelten nur mit gültiger Integritätsprüfung, sonst wird die Nachricht abgelehnt (EFAIL). Noch nicht unterstützt: Schlüssel der Version 6 und AEAD-Verschlüsselung (SEIPD v2) aus RFC 9580. Dauerhaft abgelehnt: CAST5, IDEA, Blowfish, 3DES, MD5- und SHA-1-Signaturen sowie verschlüsselte Daten ohne Integritätsschutz. Private Schlüssel liegen S2K-geschützt (AES-256) in einem gerätegebundenen Schlüsselbund-Tresor. Geprüft gegen echtes GnuPG.
S/MIME
Auf macOS über die CMS-Schnittstellen von Security.framework, auf iOS über eine plattformneutrale CMS-Implementierung auf SecKey und SecTrust: signieren, prüfen, verschlüsseln, entschlüsseln. Eine .p12-Identität und Empfängerzertifikate (.cer, .pem, .der) lassen sich importieren, Zertifikate aus geprüften signierten Mails werden übernommen, das Vertrauen prüft SecTrust. Passt die Zertifikatsadresse einer gültigen Signatur nicht zum Absender, gilt sie als nicht vertrauenswürdig. Auf iOS werden Empfängerzertifikate aus geprüften signierten Mails übernommen; der Import von Hand folgt. Geprüft gegen mit openssl signierte Testdaten.
TLS-Grundeinstellungen
Strenge Prüfung von Zertifikat und Hostname, ohne Ausweg. Die TLS-Versionen folgen den Vorgaben der Apple-Plattform. STARTTLS: FOLD verbindet sich, fordert das Upgrade an und bricht ab, wenn der Server ablehnt oder scheitert; Daten, die vor dem Upgrade im Puffer liegen, gelten als Mann in der Mitte und beenden die Verbindung. Unverschlüsseltes IMAP und SMTP werden grundsätzlich abgelehnt. Zertifikats-Pinning pro Konto ist geplant, aber noch nicht verfügbar.
Anmeldung
Passwörter und OAuth-Tokens liegen ausschließlich im Schlüsselbund mit kSecAttrAccessibleWhenUnlockedThisDeviceOnly, nie in UserDefaults oder Plist-Dateien. OAuth läuft über ASWebAuthenticationSession mit verpflichtendem PKCE (S256) als öffentlicher Client: kein Client-Geheimnis im Binary, gleichzeitige Token-Erneuerungen werden gebündelt. SMTP bevorzugt SCRAM-SHA-256 mit Prüfung der Serversignatur, danach CRAM-MD5, PLAIN und LOGIN; OAuth-Konten nutzen XOAUTH2. Optional lassen sich IMAP- und SMTP-Passwörter nach eigener Zustimmung über den Ende-zu-Ende-verschlüsselten iCloud-Schlüsselbund spiegeln. OAuth-Tokens, Fortress- und PGP-Geheimnisse verlassen das Gerät nie.
Protokollierung
Keine personenbezogenen Daten, Mail-Inhalte, Betreffzeilen, Adressen, Tokens oder Cookies in Logs, auch nicht in Debug-Builds; Lint-Regeln lassen den Build sonst scheitern. Erlaubt sind Verbindungsereignisse (Host, Port, TLS-Version, Latenz), Protokollzustand und Fehlerkategorien. Das Aktivitätsfenster auf dem Mac mit Abgleich-Schritten und SMTP-Protokoll lebt im Arbeitsspeicher, ist auf 300 Einträge begrenzt und wird nie auf die Platte geschrieben.
Sandbox und Hardened Runtime
macOS: App Sandbox und Hardened Runtime. Berechtigungen: ausgehende Netzverbindungen, vom Nutzer gewählte Dateien, eine Schlüsselbund-Gruppe und der iCloud-Container für den optionalen Abgleich; eingehende Verbindungen sind abgeschaltet. Keine Umgehung der Bibliotheksprüfung. iOS: System-Sandbox, Schlüsselbund-Gruppe und iCloud-Container, keine App Groups. Die noch nicht veröffentlichte Direktversion ergänzt eine einzige Ausnahme, damit ihr Updater Aktualisierungen installieren kann. Vertrieb über Developer ID auf macOS und über den App Store.
Fortress-Modus
Pro Konto zuschaltbare Verschlüsselung auf App-Ebene. Argon2id über deine Passphrase und ein 32-Byte-Salz aus dem Schlüsselbund (m = 64 MiB, t = 3, p = 4) ergibt einen 256-Bit-Hauptschlüssel, der nur im Arbeitsspeicher lebt; jedes Konto erhält über HKDF-SHA-256 einen eigenen Schlüssel. AES-256-GCM versiegelt die Textspalten der Kopfdatenbank und den Nachrichtenspeicher; die Volltextsuche ist für Fortress-Konten eingeschränkt. Die automatische Sperre löscht den Schlüssel nach Inaktivität und, bei eingeschalteter App-Sperre, beim Wechsel in den Hintergrund. Argon2id und BLAKE2b sind eigene Implementierungen, geprüft gegen RFC 9106 und das Referenzwerkzeug.
Was Fortress nicht ist
Kein Ersatz für OpenPGP oder S/MIME: Die schützen Mails auf dem Transportweg, Fortress schützt die lokale Kopie. Kein Schutz gegen einen kompromittierten Kernel oder ein kompromittiertes Betriebssystem. Kein Anonymisierungsmodus: Die IMAP-Metadaten verraten dem Server weiterhin, mit wem du schreibst.
Bedrohungsmodell
Die Abwehrmaßnahmen sind gegen MITRE ATT&CK (26 Techniken) und MITRE D3FEND abgebildet. Zu jeder Technik ist die Gegenmaßnahme in FOLD benannt; bei Eingabeverarbeitung und Darstellung (Phishing-Anhänge, MIME-Bomben, Polyglott-Dateien, Exfiltration nach EFAIL-Art) auch der Test, der sie abdeckt.
Teststrategie
Strikte Nebenläufigkeit in Swift 6 und ExistentialAny bereits beim Übersetzen. Mehr als 3.000 automatisierte Tests, Stand 22.09.2026. Address-, Thread- und Undefined-Behavior-Sanitizer laufen als lokale Freigabeschritte vor jedem Push und jeder Veröffentlichung; eine gehostete CI gibt es bewusst nicht. Eine Regressionssuite spielt historische CVEs von Mail-Clients nach (EFAIL, BadWinmail, Heap-Überläufe in iOS Mail). Fünf libFuzzer-Ziele decken MIME, kodierte Wörter, Adressen, Kopfblöcke und CMS ab, und jeder Testlauf spielt den Korpus mit 3.000 Mutationen nach.
Koordinierte Offenlegung
Schwachstelle gefunden? Schreib an security@datargo.com. Wir bestätigen innerhalb von 72 Stunden und veröffentlichen Korrekturen mit Nennung. PGP-Schlüssel auf Anfrage; der Kontakt steht auch in /.well-known/security.txt (RFC 9116).