FOLD
Sicherheitsdossier

Sicherheit, von innen nach außen.

Die lesbare Fassung unserer internen Sicherheitsdokumente, am 22.09.2026 gegen den Code geprüft. Wo eine Eigenschaft geplant und noch nicht ausgeliefert ist, steht es hier.

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.

EigenschaftFOLDApple MailMimestreamSparkThunderbirdOutlook (neu)
Kein zusätzliches Cloud-BackendJaJaJa direkt zu GmailNein Readdle-CloudJaNein MS-Cloud
App Sandbox aktivJaJaJaJaEingeschränkt Standard-Install nicht sandboxedJa
OpenPGP nativJa Ed25519, Curve25519 + RSANeinNeinNeinJaNein
S/MIME nativJaJaNeinNeinJaJa
DKIM im Client selbst geprüftJaNeinNeinNeinAdd-on nicht im KernNein
Beliebiger IMAP-AnbieterJaJaNein nur GmailJaJaEingeschränkt über MS-Cloud erzwungen
Open SourceNeinNeinNeinNeinJa MPL 2.0Nein

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
FoundationApple SDK. Streams mit TLS tragen IMAP und SMTP, auch STARTTLS auf der laufenden Verbindung.
CryptoKitEd25519, X25519, AES-GCM, SHA-2, HKDF.
SecuritySchlüsselbund, SecTrust, RSA, CMS für S/MIME auf macOS.
CommonCryptoAES-Blockchiffre für die Modi OCB und CFB.
AuthenticationServicesASWebAuthenticationSession für OAuth.
SQLite3System-SQLite über eine dünne Swift-Schicht. Kein GRDB, kein SQLite.swift.
WebKitGehärtete Mail-Darstellung, JavaScript aus, strenge Inhaltsrichtlinie.
os.LoggerApple SDK.
SparkleNur Direktversion, nur in der App-Hülle: signierte Aktualisierungen. Nicht Teil von Engine oder Oberfläche.
Ausgeschlossen
swift-cryptoPlattformübergreifendes Gegenstück zu CryptoKit, auf Apple-Plattformen unnötig.
libetpan, MailCoreC-Wrapper; wir wollen prüfbaren Swift-Code.
OpenPGP-BibliothekenEigene Implementierung mit modernem Kern statt großer Altlasten-Fläche.
SwiftData, CoreDataNicht für 500.000 Mails pro Postfach gebaut; stattdessen direkt SQLite.
Fremde JSON-, Logging- und NetzwerkpaketeFoundation 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).

security@datargo.com