Em comparação
Comparamos o FOLD apenas em propriedades verificáveis e indicamos uma fonte por coluna. Colunas dos concorrentes com dados de junho de 2026; se um fornecedor mudar algo, esta tabela muda junto.
| Propriedade | FOLD | Apple Mail | Mimestream | Spark | Thunderbird | Outlook (novo) |
|---|---|---|---|---|---|---|
| Sem backend de nuvem adicional | Sim | Sim | Sim direto com o Gmail | Não nuvem da Readdle | Sim | Não nuvem da MS |
| App Sandbox ativo | Sim | Sim | Sim | Sim | Limitado a instalação padrão não usa sandbox | Sim |
| OpenPGP nativo | Sim Ed25519, Curve25519 + RSA | Não | Não | Não | Sim | Não |
| S/MIME nativo | Sim | Sim | Não | Não | Sim | Sim |
| DKIM verificado no cliente | Sim | Não | Não | Não | Complemento fora do núcleo | Não |
| Qualquer provedor IMAP | Sim | Sim | Não somente Gmail | Sim | Sim | Limitado obrigatoriamente pela nuvem da MS |
| Código aberto | Não | Não | Não | Não | Sim MPL 2.0 | Não |
Fontes: Apple Platform Security · Contas suportadas pelo Mimestream · Privacidade no Spark explicada · Thunderbird · Sincronização em nuvem do novo Outlook (Cybernews, 2023).
A linha DKIM se refere à verificação independente no cliente (recálculo do hash do corpo e da assinatura), não apenas à exibição do cabeçalho Authentication-Results do servidor. Situação em 06/2026.
Política de dependências
Uma dependência de terceiros só é aceita quando os quatro critérios são atendidos: ela fornece uma primitiva que não conseguimos construir corretamente por conta própria · vem de uma fonte confiável · é auditável · consta na tabela abaixo.
O motor e a interface usam apenas frameworks do sistema da Apple. O download direto acrescenta um atualizador ao shell do app.
| Permitidas | |
|---|---|
Foundation | SDK da Apple. Streams com TLS transportam IMAP e SMTP, incluindo STARTTLS na conexão ativa. |
CryptoKit | Ed25519, X25519, AES-GCM, SHA-2, HKDF. |
Security | Chaves, SecTrust, RSA, CMS para S/MIME no macOS. |
CommonCrypto | Cifra de bloco AES para os modos OCB e CFB. |
AuthenticationServices | ASWebAuthenticationSession para OAuth. |
SQLite3 | SQLite do sistema por meio de um wrapper Swift fino. Sem GRDB, sem SQLite.swift. |
WebKit | Renderização de e-mail reforçada, com JavaScript desativado e uma política de conteúdo rígida. |
os.Logger | SDK da Apple. |
| Sparkle | Somente no download direto, no shell do app: atualizações assinadas. Não faz parte do motor nem da interface. |
| Excluídas | |
|---|---|
swift-crypto | Equivalente multiplataforma do CryptoKit, desnecessário nas plataformas Apple. |
libetpan, MailCore | Wrappers em C; queremos Swift auditável. |
| Bibliotecas OpenPGP | Implementação própria, moderna em primeiro lugar, em vez de uma grande superfície legada. |
SwiftData, CoreData | Não foi feito para 500.000 mensagens por caixa de correio; em vez disso, SQLite direto. |
| JSON, logging e rede de terceiros | Foundation e os bastam. |
Estratégia criptográfica
Criptografia assimétrica, AES-GCM, HKDF, SHA-2 e Curve25519 vêm do CryptoKit e do Security.framework; as cifras de bloco, do CommonCrypto. Onde a Apple não oferece uma primitiva, o FOLD a implementa e a verifica byte a byte contra implementações de referência: Argon2id e BLAKE2b para o Modo Fortress, AES-OCB para OpenPGP, PBKDF2 para SCRAM. Tags de autenticação e assinaturas de servidor SCRAM são comparadas em tempo constante.
OpenPGP: moderno por padrão, legado sob controle
Doutrina em duas partes. Para produzir: chaves da versão 4 com assinaturas Ed25519 e acordo de chaves Curve25519 (ECDH), AES-256 com verificação de integridade (SEIPD v1 com MDC), SHA-256/512. Para ler e escrever para destinatários existentes: adicionalmente RSA no Security.framework e, na leitura, o modo OCB do GnuPG; dados criptografados só são aceitos com verificação de integridade válida; caso contrário, a mensagem é rejeitada (EFAIL). Ainda não suportados: chaves da versão 6 e criptografia AEAD (SEIPD v2) da RFC 9580. Rejeitados permanentemente: CAST5, IDEA, Blowfish, 3DES, assinaturas MD5 e SHA-1, e dados criptografados sem proteção de integridade. As chaves privadas ficam protegidas por S2K (AES-256) em um cofre nas Chaves vinculado ao dispositivo. Verificado com o GnuPG real.
S/MIME
No macOS, pelas interfaces CMS do Security.framework; no iOS, por uma implementação CMS independente de plataforma sobre SecKey e SecTrust: assinar, verificar, criptografar e descriptografar. É possível importar uma identidade .p12 e certificados de destinatários (.cer, .pem, .der); certificados de e-mails assinados verificados são coletados, e a confiança é avaliada pelo SecTrust. Uma assinatura válida cujo endereço no certificado não corresponde ao remetente é exibida como não confiável. No iOS, os certificados dos destinatários são coletados de e-mails assinados verificados; a importação manual virá depois. Verificado com dados de teste assinados com openssl.
Configurações padrão de TLS
Validação rigorosa de certificado e nome de host, sem nenhum caminho para contorná-la. As versões de TLS seguem os padrões da plataforma Apple. STARTTLS: o FOLD se conecta, solicita o upgrade e aborta se o servidor recusar ou falhar; bytes armazenados em buffer antes do upgrade são tratados como um ataque man-in-the-middle e encerram a conexão. IMAP e SMTP sem criptografia são recusados de imediato. O pinning de certificado por conta está planejado, mas ainda não está disponível.
Autenticação
Senhas e tokens OAuth ficam apenas nas Chaves, com kSecAttrAccessibleWhenUnlockedThisDeviceOnly, nunca em UserDefaults ou plists. O OAuth usa ASWebAuthenticationSession com PKCE obrigatório (S256) como cliente público: nenhum segredo de cliente no binário, e renovações simultâneas de token são unificadas. O SMTP prefere SCRAM-SHA-256 com verificação da assinatura do servidor, depois CRAM-MD5, PLAIN e LOGIN; contas OAuth usam XOAUTH2. Opcionalmente, após um consentimento separado, as senhas de IMAP e SMTP podem ser espelhadas pelas Chaves do iCloud, com criptografia de ponta a ponta. Tokens OAuth e segredos do Fortress e do PGP nunca saem do dispositivo.
Política de logs
Nenhum dado pessoal, conteúdo de mensagem, assunto, endereço, token ou cookie nos logs, também em builds de depuração, o que é garantido por regras de lint que fazem o build falhar. Permitido: eventos de conexão (host, porta, versão de TLS, latência), estado do protocolo, categorias de erro. A janela de atividade no Mac, com as etapas de sincronização e a transcrição SMTP, fica na memória, é limitada a 300 entradas e nunca é gravada em disco.
Sandbox e Hardened Runtime
macOS: App Sandbox e Hardened Runtime. Permissões: conexões de rede de saída, arquivos selecionados pelo usuário, um grupo de acesso às Chaves e o contêiner do iCloud para a sincronização opcional; conexões de entrada estão desativadas. Nenhum desvio da validação de bibliotecas. iOS: sandbox do sistema, grupo das Chaves e contêiner do iCloud, sem App Groups. O download direto, ainda não público, acrescenta uma única exceção para que seu atualizador possa instalar atualizações. Distribuição via Developer ID no macOS e pela App Store.
Modo Fortress
Criptografia no nível do app, ativada opcionalmente por conta. O Argon2id aplicado à sua frase secreta e a um sal de 32 bytes guardado nas Chaves (m = 64 MiB, t = 3, p = 4) deriva uma chave mestra de 256 bits que existe apenas na memória; cada conta recebe sua própria chave via HKDF-SHA-256. O AES-256-GCM sela as colunas de texto do banco de dados de cabeçalhos e o cache de mensagens; a busca de texto completo é limitada para contas Fortress. O bloqueio automático apaga a chave após um período de inatividade e, se o bloqueio do app estiver ativado, quando o app vai para segundo plano. Argon2id e BLAKE2b são implementações próprias, verificadas com a RFC 9106 e com a ferramenta de referência.
O que o Fortress não é
Não substitui OpenPGP nem S/MIME: esses protegem o e-mail em trânsito, o Fortress protege a cópia local. Não protege contra um kernel ou sistema operacional comprometido. Não é um modo de anonimização: os metadados IMAP continuam revelando ao servidor com quem você se corresponde.
Modelo de ameaças
As defesas são mapeadas em relação ao MITRE ATT&CK (26 técnicas) e ao MITRE D3FEND. Para cada técnica, a mitigação do FOLD é indicada; para o tratamento de entradas e a renderização (anexos de spear-phishing, bombas MIME, arquivos poliglotas, exfiltração no estilo EFAIL), também o teste que a cobre.
Estratégia de testes
Concorrência estrita do Swift 6 e ExistentialAny em tempo de compilação. Mais de 3.000 testes automatizados em 2026-09-22. Os sanitizers Address, Thread e Undefined Behavior rodam como verificações locais de liberação antes de cada push e de cada release; por decisão, não há CI hospedada. Uma suíte de regressão reproduz CVEs históricas de clientes de e-mail (EFAIL, BadWinmail, estouros de heap no iOS Mail). Cinco alvos libFuzzer cobrem MIME, palavras codificadas, endereços, blocos de cabeçalho e CMS, e cada execução de testes reproduz o corpus com 3.000 mutações.
Divulgação coordenada
Encontrou uma falha? Escreva para [email protected]. Confirmamos em até 72 horas e publicamos as correções com crédito. Chave PGP mediante solicitação; o contato também está publicado em /.well-known/security.txt (RFC 9116).