O princípio
O seu segredo é cifrado no seu navegador com uma chave aleatória de 256 bits. Essa chave é colocada na ligação, depois do sinal #. Os navegadores nunca enviam essa parte do endereço: os nossos servidores recebem apenas um bloco cifrado que não conseguem decifrar. Mesmo com acesso total aos nossos servidores e à base de dados, ninguém consegue ler um segredo sem a ligação completa.
Anatomia de uma ligação
https://eclair.kayzen-lyon.com/s/35fZoy72KMhzS86v9fUxog#v1.p.8BJ3ft…/s/{id}: Identificador aleatório de 128 bits, enviado ao servidor para encontrar o texto cifrado.#v1: Versão do formato.n ou p: Sem ou com PIN.{key}: Chave de 256 bits. Nunca enviada, nunca registada.
Primitivas criptográficas
| Utilização | Construção | Implementação |
|---|---|---|
| Conteúdo | AES-256-GCM, IV aleatório de 96 bits, dados associados ligados ao identificador do segredo | WebCrypto |
| Derivação | HKDF-SHA-256, cadeias de contexto com o prefixo «eclair v1» | WebCrypto |
| PIN | Argon2id (64 MiB, 3 passagens) seguido de HKDF; verificador HMAC-SHA-256 derivado da chave da ligação | hash-wasm |
| Comprimento | Conteúdo preenchido por patamares (1, 4, 16, 64 KiB…) para ocultar o seu tamanho real | — |
Porque é que o servidor não pode testar os seus PIN
O verificador enviado ao servidor é calculado a partir do código E da chave da ligação. Sem a chave, o servidor não pode verificar nem experimentar um código. Limita-se a contar as falhas e destrói o segredo à quinta tentativa.
Contra o que protegemos
- Uma fuga da nossa base de dados ou do nosso alojamento: Contém apenas blocos cifrados e algumas datas.
- Pré-visualizadores de ligações (Slack, Teams, Outlook): A página da ligação não contém o segredo; este só é entregue após um clique, através de um pedido POST.
- Duas aberturas simultâneas: A leitura e a eliminação ocorrem numa única operação atómica, testada com 100 leituras simultâneas.
- Enumeração de ligações: 128 bits aleatórios, limitação de pedidos, resposta idêntica para ligações desconhecidas, expiradas ou já lidas.
- Um script adulterado: Sem scripts de terceiros, política de segurança de conteúdo rigorosa baseada em nonce, dependências fixadas e auditadas.
Os limites, com franqueza
- Um atacante que tenha a ligação e uma cópia da nossa base de dados pode testar PIN curtos offline. Para um segredo crítico, escolha uma frase-passe.
- A cifragem numa página web pressupõe que o código servido pelo nosso site está intacto. A extensão e as aplicações assinadas, em preparação, vão reduzir este risco.
- Vemos metadados: datas, patamar de tamanho, número de leituras.
- Um destinatário pode sempre copiar o segredo depois de o ler.
- O serviço ainda não foi auditado por terceiros. A auditoria está prevista antes da versão 1.0 e o respetivo relatório será publicado.
Verifique por si
Ver o pedido enviado ao servidor
Comunicar uma vulnerabilidade
Escreva-nos seguindo o nosso ficheiro security.txt. Nunca tomaremos medidas contra quem comunique uma falha de boa-fé. security.txt · contact@kayzen-lyon.fr