Docs/ Privacy & security

Criptografia e gerenciamento de chaves

Segredos criptografados com envelope; traga sua própria chave de IA se preferir.

Cada segredo que o AI Emaily guarda em seu nome — tokens OAuth, senhas IMAP, chaves BYOK — é criptografado com envelope e descriptografado apenas em um worker isolado no momento em que é necessário. Nada sensível é armazenado inline, gravado em logs ou acessível ao código da aplicação.

Criptografia em trânsito e em repouso

Todo o tráfego entre seu dispositivo e os servidores do AI Emaily trafega por TLS 1.2+ com conjuntos de cifras modernos. Conexões que recorrem a versões mais antigas do TLS são rejeitadas no balanceador de carga.

Os dados em repouso — corpos de mensagens, metadados, resumos — são criptografados usando AES-256 na camada de armazenamento. Os blobs de armazenamento de objetos (corpos de mensagens) carregam uma chave de criptografia adicional por objeto gerenciada por um KMS, de modo que uma camada de armazenamento comprometida não pode produzir texto simples sem também comprometer o KMS.

Criptografia de envelope para todas as credenciais

Tokens OAuth, credenciais IMAP/SMTP e chaves BYOK são envolvidos com uma chave de criptografia de dados (DEK) por usuário, que por sua vez é criptografada por uma chave de criptografia de chaves (KEK) mantida em um KMS dedicado. A DEK nunca é armazenada junto ao texto cifrado que protege. Credenciais em texto simples nunca tocam logs da aplicação, relatórios de erros ou pipelines de análise.

Privilégio mínimo em todo lugar

O AI Emaily solicita o acesso mínimo necessário para cada provedor de e-mail. Para provedores OAuth como Outlook e Microsoft 365, solicitamos apenas leitura + envio + gerenciamento de pastas — nunca exportação de contatos, acesso a drives ou APIs de administrador — e cada concessão de escopo é exibida na interface de conexão. Gmail e Google Workspace se conectam via IMAP/SMTP com uma senha de aplicativo que você controla e pode revogar a qualquer momento.

Cada linha de banco de dados, blob de armazenamento de objetos e invocação de função carrega um ID de proprietário. Solicitações que não apresentam um JWT correspondente são rejeitadas na camada de dados, não apenas na camada de API. Essa autorização em nível de objeto significa que um bug no roteamento de API não pode vazar dados de um usuário para outro.

Fluxo de autorização de solicitação (simplificado)
1O cliente envia JWT em Authorization: Bearer …
2O gateway de API verifica assinatura + expiração
3A função extrai userId das afirmações verificadas
4A consulta ao BD inclui WHERE owner_id = :userId
5A política de armazenamento de objetos rejeita leituras de blobs entre usuários
6Resultado retornado — nenhum dado entre contas é possível

Webhooks, CORS e CSP

Webhooks de entrada do Stripe, Gmail Push Notifications e Microsoft Graph são validados com assinaturas HMAC antes de qualquer payload ser processado. Webhooks reproduzidos ou adulterados são descartados silenciosamente e registrados.

A aplicação web inclui uma Política de Segurança de Conteúdo estrita que bloqueia scripts inline, restringe alvos de fetch aos nossos próprios domínios e hosts de API conhecidos, e não permite enquadramento de origens de terceiros. O CORS é configurado por rota para permitir apenas as origens de produção e staging.

Idempotência e novas tentativas seguras

Cada chamada de API que realiza mutações — enviar, arquivar, etiquetar, delegar — aceita uma chave de idempotência para que novas tentativas de rede não possam duplicar ações. Isso é especialmente importante para envio: se uma conexão cair após o servidor aceitar a solicitação, uma nova tentativa com a mesma chave é uma não-operação, não um envio duplicado.

Conformidade PCI via Stripe

Dados de cartão nunca tocam os servidores do AI Emaily. Os fluxos de faturamento usam o checkout hospedado e os Elements do Stripe; armazenamos apenas o ID de cliente do Stripe e o status da assinatura.

Frequently asked

Feature overview

AI Drafting

Ready to try it?

Start Free Trial