O protocolo Web Push segue os padrões definidos pela IETF Web Push Protocol e pela Web Push Encryption. Ele foi projetado com foco em privacidade, autenticação e segurança contra abusos.
Na Inngage, utilizamos esse protocolo para garantir que as mensagens push sejam criptografadas de ponta a ponta, autenticadas com chaves públicas e privadas exclusivas, e que apenas clientes autorizados possam enviar notificações.
Como Funciona a Autenticação do Web Push:
1. Registro do Service Worker:
O primeiro passo ocorre no navegador do usuário, quando o Service Worker da Inngage é registrado. Isso habilita o navegador a escutar notificações mesmo com o site fechado.
2. Permissão do Usuário:
O usuário explicitamente concede permissão para receber notificações push. Sem essa permissão, nenhum dado de push é gerado.
3. Subscription com Chaves Públicas:
Quando o usuário autoriza, o navegador gera uma assinatura criptográfica com uma chave pública (p256dh) e uma chave de autenticação (auth), e a entrega ao servidor da Inngage junto com o endpoint exclusivo. Esses dados formam a Web Push Subscription, armazenada pela Inngage para envio futuro.
Por que é Seguro?
🔐 1. Criptografia ponta a ponta:
As mensagens são criptografadas com a chave pública do navegador do usuário. Isso significa que:
- Nem mesmo os servidores intermediários (como o Firebase ou VAPID endpoints) conseguem ler a mensagem.
- Somente o navegador com a chave privada correspondente pode descriptografar o conteúdo.
🔑 2. Assinatura com VAPID:
A Inngage assina cada requisição com VAPID (Voluntary Application Server Identification), usando um par de chaves (pública e privada):
- A chave pública é enviada como parte do cabeçalho.
- A chave privada permanece protegida nos servidores da Inngage e é usada para autenticar o servidor de origem.
Essa assinatura garante que apenas a Inngage (ou outro remetente autorizado) possa enviar notificações válidas para o endpoint.
🚫 3. Não é possível atacar só com o endpoint:
Mesmo que um atacante consiga capturar um endpoint de push (uma URL longa e única), ele não consegue enviar mensagens porque:
- Precisa da chave de autenticação (auth) e chave pública (p256dh).
- Precisa assinar o conteúdo com o par de chaves VAPID correto.
- Precisa criptografar corretamente a mensagem, o que requer acesso às chaves de sessão da subscription.
Qualquer tentativa de envio com dados incorretos será rejeitada pelo navegador com erro Unauthorized ou Invalid Crypto Key.
Conclusão:
O sistema de Web Push adotado pela Inngage é altamente seguro, com múltiplas camadas de proteção:
✅ Consentimento explícito do usuário;
✅ Criptografia de ponta a ponta com chaves únicas por navegador;
✅ Autenticação via VAPID com controle total da origem;
✅ Proteção contra spoofing e ataques de envio não autorizado.
Mesmo com o endpoint de push, nenhum atacante consegue enviar notificações sem as devidas chaves e permissões. A arquitetura do Web Push foi desenhada para proteger o usuário final e garantir a integridade das mensagens enviadas pela Inngage.
👉https://datatracker.ietf.org/doc/html/draft-ietf-webpush-encryption
👉 https://datatracker.ietf.org/doc/html/rfc8030