Segurança

Última atualização: 15 de março de 2026

Acreditamos que ferramentas de privacidade devem ser transparentes sobre como protegem os seus dados, não apenas que o fazem. Esta página explica exatamente o que acontece quando utiliza o Privacy First Labs — com detalhe suficiente para um engenheiro de segurança avaliar, mas legível por qualquer pessoa.

O Princípio Fundamental

Os seus dados nunca saem do seu dispositivo. Todas as ferramentas do Privacy First Labs processam dados inteiramente no seu navegador, utilizando Web APIs padrão. Nenhum ficheiro é enviado. Nenhum texto simples é transmitido. Nenhum processamento do lado do servidor ocorre.

Isto não é uma política — é uma garantia arquitetural. As nossas ferramentas são páginas estáticas servidas pelo Cloudflare Pages. Não existe servidor de aplicação, base de dados nem endpoint de API que aceite os seus dados. Pode verificar isto abrindo o separador de rede do seu navegador enquanto utiliza qualquer ferramenta.

Cifragem do SafeSeal

O SafeSeal permite criptografar segredos (palavras-passe, chaves de API, credenciais) com uma palavra-passe e partilhá-los como um link ou ficheiro. Eis exatamente como funciona.

Algoritmo de Cifragem

Utilizamos AES-256-GCM (Advanced Encryption Standard com chaves de 256 bits em Galois/Counter Mode) através da Web Crypto API nativa do navegador. Este é o mesmo padrão de cifragem utilizado por governos, bancos e aplicações de segurança crítica em todo o mundo.

  • AES-256 garante confidencialidade — o seu segredo é ilegível sem a chave
  • GCM mode garante autenticação — qualquer adulteração dos dados cifrados é detetada e rejeitada
  • A Web Crypto API é uma implementação nativa do navegador, não uma biblioteca JavaScript de terceiros que poderia ser comprometida

Derivação de Chave

A sua palavra-passe nunca é utilizada diretamente como chave de cifragem. Em vez disso, derivamos uma chave criptográfica a partir dela usando PBKDF2 (Password-Based Key Derivation Function 2):

  • Função hash: SHA-256
  • Iterações: 600.000 — o mínimo recomendado pela OWASP (2023) para SHA-256
  • Salt: 16 bytes de dados criptograficamente aleatórios, únicos por cifragem
  • Resultado: Uma chave AES de 256 bits

O elevado número de iterações significa que, mesmo que um atacante obtenha os dados cifrados, forçar a palavra-passe por tentativa e erro é computacionalmente dispendioso. O salt aleatório garante que palavras-passe idênticas produzem chaves diferentes.

Processo de Cifragem

Quando clica em "Cifrar", o seguinte acontece inteiramente no seu navegador:

  1. Um salt aleatório de 16 bytes é gerado usando crypto.getRandomValues()
  2. Um vetor de inicialização (IV) aleatório de 12 bytes é gerado usando crypto.getRandomValues()
  3. A sua palavra-passe + o salt são processados pelo PBKDF2 (600.000 iterações) para produzir uma chave AES de 256 bits
  4. O seu segredo é cifrado com AES-256-GCM usando a chave derivada e o IV
  5. O resultado inclui uma etiqueta de autenticação de 16 bytes (verificação de integridade do GCM)

Tanto o salt como o IV são gerados aleatoriamente em cada cifragem. Isto significa que cifrar o mesmo segredo com a mesma palavra-passe duas vezes produz texto cifrado completamente diferente.

Modo Link

No modo link, os dados cifrados são codificados no fragmento do URL (a parte após #):

privacyfirstlabs.io/safeseal/#1.<salt>.<iv>.<ciphertext>

O fragmento do URL nunca é enviado para qualquer servidor. Isto não é uma escolha nossa — é como o protocolo HTTP funciona. De acordo com a RFC 3986 (Section 3.5), o identificador de fragmento é processado inteiramente pelo cliente. Quando abre o link, o seu navegador solicita /safeseal/ ao nosso servidor — a parte #... permanece no seu navegador.

Os componentes são codificados usando base64url (RFC 4648, Section 5) para inclusão segura em URLs.

Modo Ficheiro

No modo ficheiro, os dados cifrados são empacotados num ficheiro binário compacto .pflenc:

  • Byte 0: versão do formato (atualmente 1)
  • Bytes 1–16: salt
  • Bytes 17–28: IV
  • Bytes 29+: texto cifrado (incluindo etiqueta de autenticação GCM)

Antes da cifragem, o nome do ficheiro original é incorporado dentro do payload usando um cabeçalho compacto: um prefixo de comprimento de 2 bytes seguido do nome do ficheiro em UTF-8, seguido dos dados do ficheiro. Isto significa que o nome do ficheiro original é sempre recuperado na descifragem — o destinatário recebe o ficheiro com o seu nome e extensão originais.

O ficheiro é gerado inteiramente no seu navegador e transferido para o seu dispositivo. Nunca é enviado ou armazenado nos nossos servidores. Pode partilhar o ficheiro através do canal que preferir.

Privacidade do Nome de Ficheiro

Por predefinição, os ficheiros cifrados são transferidos como originalname.pflenc — facilitando a identificação do ficheiro. Se preferir não revelar o nome do ficheiro, a opção "Ocultar nome do ficheiro" transfere o ficheiro como secret.pflenc.

O nome do ficheiro original está sempre cifrado dentro do payload .pflenc, independentemente desta definição. Na descifragem, o destinatário recupera sempre o nome do ficheiro original a partir dos dados cifrados. A opção "Ocultar nome do ficheiro" controla apenas o nome do ficheiro .pflenc externo durante a transferência — não afeta o conteúdo cifrado.

Processo de Descifragem

Quando o destinatário abre o link ou carrega o ficheiro .pflenc:

  1. O salt, IV e texto cifrado são extraídos do fragmento do URL ou do ficheiro
  2. O destinatário introduz a palavra-passe
  3. O PBKDF2 deriva a mesma chave AES a partir da palavra-passe + salt (600.000 iterações)
  4. O AES-256-GCM decifra o texto cifrado e verifica a etiqueta de autenticação
  5. Se a palavra-passe estiver errada ou os dados tiverem sido adulterados, a descifragem falha com um erro genérico

A mensagem de erro intencionalmente não revela qual verificação falhou (palavra-passe errada vs. dados corrompidos). Isto impede que atacantes utilizem diferenças nos erros para obter informações sobre a cifragem.

O Que o Nosso Servidor Vê

Para o SafeSeal — nada. O nosso servidor entrega ficheiros estáticos de HTML, CSS e JavaScript. Não recebe, processa nem armazena:

  • O seu texto secreto
  • A sua palavra-passe de cifragem
  • Os dados cifrados
  • A chave de descifragem
  • Quaisquer fragmentos de URL (tecnicamente impossível — os navegadores não enviam fragmentos para servidores)

Mesmo que os nossos servidores fossem comprometidos, um atacante obteria apenas os ficheiros estáticos do site — nunca os seus dados cifrados ou chaves.

O Que Não Podemos Fazer

Devido à nossa arquitetura de conhecimento zero:

  • Não podemos descifrar os seus segredos — nunca temos as chaves
  • Não podemos recuperar a sua palavra-passe — ela existe apenas no seu dispositivo e no do destinatário
  • Não podemos cumprir pedidos para produzir texto simples — não o temos
  • Não podemos saber se um link foi utilizado ou quantas vezes — não temos rastreamento

Isto é intencional. A responsabilidade da gestão de chaves é sua e do destinatário. Se a palavra-passe for perdida, o segredo é irrecuperável.

Verifique Você Mesmo

Não precisa de confiar na nossa palavra. Eis como verificar as nossas afirmações:

  • Separador de rede: Abra as Ferramentas de Programador do seu navegador (F12), vá ao separador Rede e utilize o SafeSeal. Verá zero pedidos de rede contendo o seu segredo ou dados cifrados
  • Código-fonte: O nosso módulo de cifragem foi concebido para publicação open-source. A lógica central utiliza apenas a Web Crypto API nativa do navegador — sem bibliotecas criptográficas de terceiros
  • Teste offline: Desligue-se da internet, depois cifre e descifre um segredo. Funciona — porque nada sai do seu navegador

Isolamento de Processamento

Todas as operações computacionalmente intensivas (derivação de chave, cifragem, descifragem) são executadas em Web Workers — threads de fundo isoladas que:

  • Mantêm a interface responsiva enquanto as 600.000 iterações do PBKDF2 são executadas
  • Não têm acesso ao DOM ou ao contexto JavaScript principal da página
  • São criadas por operação e terminadas imediatamente após a conclusão
  • Não persistem quaisquer dados entre operações

Considerações de Segurança

Força da Palavra-passe

A segurança do seu segredo cifrado depende da sua palavra-passe. Exigimos um mínimo de 8 caracteres, mas recomendamos fortemente a utilização de uma frase-passe mais longa. O PBKDF2 com 600.000 iterações proporciona proteção significativa contra ataques de força bruta, mas uma palavra-passe fraca (como "password123") pode ainda ser adivinhada.

Partilha de Links

Ao utilizar o modo link, os dados cifrados estão no URL. Qualquer pessoa com acesso ao URL completo tem os dados cifrados (embora ainda necessite da palavra-passe para os descifrar). Partilhe links através de canais seguros e partilhe sempre a palavra-passe por um canal diferente do link.

Segurança do Navegador

A cifragem do lado do cliente depende de um ambiente de navegador seguro. Se o seu navegador ou dispositivo estiver comprometido (malware, extensões maliciosas), as garantias de cifragem podem não se manter. Mantenha o seu navegador e sistema operativo atualizados.

Sem Forward Secrecy

Se um atacante capturar o link ou ficheiro cifrado e posteriormente obtiver a palavra-passe, pode descifrar o segredo. Para casos de utilização altamente sensíveis, considere rodar palavras-passe e utilizar métodos de partilha de curta duração.

Resumo Técnico

Cifragem AES-256-GCM (Web Crypto API)
Derivação de chave PBKDF2-SHA-256, 600,000 iterations
Salt 16 bytes, criptograficamente aleatório, único por cifragem
IV 12 bytes, criptograficamente aleatório, único por cifragem
Autenticação GCM mode (128-bit auth tag, included in ciphertext)
Transporte de chave URL fragment (never sent to server) or .pflenc file (downloaded locally)
Envolvimento do servidor None — static site only
Biblioteca criptográfica Browser-native Web Crypto API (no third-party dependencies)
Navegadores alvo Last 2 versions of Chrome, Firefox, Safari, Edge (ES2022)

Questões?

Se tiver questões sobre a nossa implementação de criptografia, encontrou uma potencial vulnerabilidade ou deseja discutir a nossa arquitetura de segurança:

Privacy First Labs
security@privacyfirstlabs.io

Damos as boas-vindas à divulgação responsável e comprometemo-nos a resolver questões de segurança prontamente.