Segurança e criptografia

O push nativo do Mailwake criptografa notificações em seu posto e as descriptografa no iPhone emparelhado. Este artigo descreve as chaves, o fluxo de criptografia e os limites de dados no Mailwake 1.0, para que você possa entender o que você controla e o que passa pelos serviços oficiais. O processamento e a retenção de dados são cobertos pela política de privacidade.

Três caminhos de dados

Notificações, leitura de conteúdo de e-mail e identidade de serviço usam caminhos separados:

Função Caminho dos dados Processamento do conteúdo
Notificações nativas Caixa de e-mail → posto → serviço de envio de notificações → Apple APNs → iPhone O posto lê o e-mail e criptografa as notificações; o iPhone verifica a assinatura, descriptografa e exibe o conteúdo
Leitura do conteúdo sob demanda iPhone → seu posto → caixa de e-mail; a resposta retorna pelo mesmo caminho O posto processa o conteúdo e o app o exibe na sessão de leitura atual
Dispositivos e compras App ↔ serviço de dispositivos e compras Registra dispositivos e verifica compras; o serviço de envio verifica a autorização e os direitos antes de enviar

Seu posto pode ler o correio que está autorizado a acessar. A criptografia ponta a ponta aqui cobre conteúdo de notificação nativo entre o posto e o dispositivo emparelhado. O provedor de caixa de correio, o servidor do posto e o dispositivo de descriptografia permanecem dentro de um limite onde o texto simples é acessível.

Quem detém as chaves

A chave de identidade do posto assina o conteúdo. O posto gera uma chave de assinatura P-256 localmente e a criptografa com sua chave de configuração local. Os dispositivos emparelhados e o serviço de envio de notificações recebem sua chave pública para verificar a origem. A identidade permanece no diretório de dados durante as reinicializações.

O dispositivo usa duas chaves P-256 separadas: uma chave de assinatura comprova a identidade do dispositivo e o consentimento de emparelhamento, enquanto uma chave privada de acordo de chave descriptografa as notificações. O aplicativo cria chaves no Secure Enclave quando disponível e usa chaves de software em outros ambientes de execução. As Chaves Compartilhadas disponibilizam registros de chaves para o App e suas extensões, usando a proteção AfterFirstUnlockThisDeviceOnly com a sincronização das Chaves do iCloud desabilitada. O acesso à chave em segundo plano requer o primeiro desbloqueio do dispositivo após a reinicialização.

O posto e o serviço de envio de notificações armazenam chaves públicas do dispositivo. O dispositivo contém sua chave privada de descriptografia; serviços oficiais e APNs não possuem essa chave privada.

O posto também usa secret.key em seu diretório de dados para criptografar configurações confidenciais, incluindo credenciais de caixa de correio, com AES-256-GCM. O banco de dados e a chave local juntos formam dados recuperáveis: faça backup de ambos e proteja o acesso ao host e aos backups. Alguém com o banco de dados e a chave local pode descriptografar esta configuração.

Como o emparelhamento estabelece confiança

Um código QR de emparelhamento push carrega a chave pública do posto, o endereço e ambiente do serviço de envio de notificações, o identificador de emparelhamento e uma credencial de uso único válida por cinco minutos. O aplicativo mostra a impressão digital criptográfica do posto para comparação. Use um convite confiável do proprietário do posto e verifique as informações de conexão antes de confirmar.

O dispositivo assina seu consentimento, vinculando-o ao posto, chave de criptografia do dispositivo, credencial única e validade. O posto verifica essa prova e bloqueia a identidade do dispositivo e as chaves públicas antes de concluir o registro no serviço de envio de notificações. Notificações posteriores usam esse relacionamento confirmado para selecionar chaves de criptografia e verificação.

Um convite de gerenciamento pode incluir emparelhamento push, mas a autorização permanece separada: push nativo, gerenciamento de configuração e leitura de conteúdo de e-mail têm seu próprio escopo de permissão. Para configuração, consulte Conecte o aplicativo .

Como uma notificação é criptografada

Para cada operação de criptografia, o posto gera um par de chaves P-256 efêmero, um salt aleatório de 32 bytes e um nonce aleatório de 12 bytes. Então:

  1. Executa o acordo de chave ECDH P-256 usando a chave privada efêmera e a chave pública do dispositivo de destino para obter um segredo compartilhado.
  2. Deriva uma chave de conteúdo de 256 bits com HKDF-SHA256. O contexto de derivação vincula o público do serviço de envio de notificações, o ID de emparelhamento e o ID do evento.
  3. Criptografa JSON de notificação com AES-256-GCM, usando o mesmo contexto que dados autenticados adicionais e produzindo texto cifrado com uma etiqueta de autenticação de 128 bits.
  4. Assina o envelope criptografado e o contexto usando a chave de assinatura P-256 do posto com SHA-256 e, em seguida, envia-o ao serviço de envio de notificações por HTTPS.
  5. O serviço de envio de notificações verifica a assinatura e o formato do envelope e transmite o texto cifrado para APNs. O dispositivo primeiro verifica a assinatura usando a chave pública do posto confirmada durante o emparelhamento, depois deriva a chave de conteúdo com sua própria chave privada, verifica a etiqueta de autenticação e descriptografa.

O identificador do algoritmo é P256-HKDF-SHA256-A256GCM . Novas tentativas da mesma entrega reutilizam seu envelope armazenado e identificador de evento; novas operações de criptografia geram novas chaves efêmeras e valores aleatórios. A extensão do serviço de notificação lida com notificações comuns. A extensão Widget lida com atividades ao vivo com código de verificação, que também carregam texto cifrado assinado e vinculam campos de identidade e ciclo de vida da atividade ao contexto de criptografia.

As notificações criptografadas contêm o rótulo da caixa de correio, pasta, remetente, assunto e hora de recebimento, com um código de verificação opcional e referência de mensagem. O conteúdo completo das mensagens usa o caminho separado abaixo. Se a verificação ou descriptografia da assinatura falhar, o dispositivo retém um espaço reservado seguro; o texto simples do email é exibido somente após a verificação bem-sucedida.

O conteúdo das mensagens é obtido diretamente por HTTPS

A abertura do conteúdo do e-mail envia uma solicitação para o endereço HTTPS do posto confirmado. O posto verifica a credencial do dispositivo, a permissão de conteúdo explícita do proprietário e o escopo do recurso na referência da mensagem assinada antes de buscar o conteúdo do e-mail e as imagens embutidas referenciadas na caixa de correio. A leitura do conteúdo do e-mail é gratuita; o emparelhamento push por si só não concede acesso ao conteúdo da mensagem.

O posto limpa HTML e fornece um substituto de texto legível. O App controla o carregamento remoto de imagens, que pode entrar em contato com o servidor do remetente, por meio de suas opções de carregamento de imagens. Anexos comuns estão fora deste fluxo de leitura de conteúdo de e-mail.

O posto processa os corpos das mensagens na memória da solicitação. As respostas usam Cache-Control: no-store; o aplicativo desativa o cache HTTP e rejeita redirecionamentos. Após uma leitura bem-sucedida, salva separadamente o corpo e a permissão de imagens de cada mensagem neste iPhone para leitura offline, inclusive após reiniciar o aplicativo. Os arquivos usam a proteção de arquivos do iOS e são excluídos dos backups. A exclusão ou expiração de uma notificação remove seu corpo salvo e sua permissão de imagens. Remover um posto também apaga seus corpos salvos, preservando os resumos das notificações. Imagens remotas são temporárias e podem exigir outra conexão. Os corpos chegam diretamente do posto ao aplicativo, sem passar pelos serviços oficiais, e ficam fora dos diagnósticos e logs.

O que os serviços oficiais podem ver

Participante Dados que pode processar para cumprir sua função
Seu posto Credenciais da caixa de e-mail, mensagens em texto claro, configurações de notificação, chaves públicas de emparelhamento e registros locais de envio
Serviço de envio de notificações Identificadores do posto, dispositivo e emparelhamento; chaves públicas; tokens APNs; envelopes criptografados; horários e estados de envio
Serviço de dispositivos e compras Identidade do serviço, informações de dispositivos e sessões, compras e direitos, e metadados de diagnóstico de envio
Apple APNs Tokens push, informações de roteamento e envio, avisos genéricos e conteúdo criptografado
Seu iPhone Chaves do dispositivo, notificações descriptografadas, histórico local e conteúdo de mensagens cuja leitura foi autorizada

O remetente, o assunto e o código de verificação estão dentro do texto cifrado de notificação nativo. Os intermediários que manipulam o texto cifrado ainda podem observar as relações de entrega, o tempo e os tamanhos da carga útil. Os diagnósticos de entrega operacional utilizam identificadores, status, códigos de erro e carimbos de data/hora; o conteúdo do email mantém o limite de criptografia acima. Os serviços também processam informações de rede necessárias para suas funções, conforme descrito na política de privacidade.

Registros locais, revogação e limites de segurança

As entregas pendentes e o histórico do administrador no posto têm regras de armazenamento separadas; o histórico local pode conter resumos de caixas de correio e assuntos. O aplicativo armazena o histórico de notificação descriptografado em seu grupo de aplicativos local com proteção de dados de arquivos do sistema, retenção configurável e uma ação de limpeza do histórico. Os corpos das mensagens usam o cache protegido separado descrito acima.

O desemparelhamento interrompe a entrega adicional por meio desse relacionamento. A revogação de uma credencial de conteúdo ou de gerenciamento encerra o acesso correspondente. O conteúdo já entregue e descriptografado deverá ser apagado no dispositivo; a revogação não pode recuperar o conteúdo que alguém já viu.

Este design depende da segurança do host do posto, do convite de emparelhamento e do dispositivo. Ele protege o conteúdo da notificação em trânsito, enquanto um posto comprometido ou um dispositivo desbloqueado pode expor texto simples. O protocolo usa uma chave privada de acordo de chave de dispositivo de longa duração: se essa chave for comprometida, alguém que possua texto cifrado histórico poderá descriptografar notificações antigas. Este projeto, portanto, não faz nenhuma reivindicação de sigilo futuro contra o comprometimento da chave privada de longo prazo do destinatário.

Canais Bark, Pushover e webhook enviam suas respectivas cargas para o serviço que você configura. O protocolo de criptografia nativo acima se aplica ao canal nativo Mailwake. Consulte Canais de notificação para campos de dados de terceiros e opções de visualização.

Markdown · AGPL-3.0-only · Colaboradores do Mailwake