O que é Fragmento de URL?
Um fragmento de URL é a parte de uma URL que aparece depois do símbolo de cerquilha (#). Conforme o RFC 3986, os navegadores processam os fragmentos apenas no lado do cliente e nunca os incluem nas requisições HTTP enviadas ao servidor.
As URLs têm uma estrutura definida: esquema, autoridade, caminho, string de consulta e fragmento. O fragmento (tudo o que vem depois do #) foi projetado originalmente para navegar até uma seção específica dentro de uma página. No entanto, sua propriedade mais importante do ponto de vista da segurança é que os navegadores têm a obrigação explícita, conforme a especificação HTTP, de nunca enviar o fragmento ao servidor.
Quando você visita uma URL como example.com/page#section, o navegador envia uma requisição para example.com/page: a parte #section é removida antes de a requisição ser feita. O fragmento permanece na barra de endereços do navegador e fica acessível ao JavaScript que roda na página, mas o servidor não tem conhecimento dele. Esse comportamento é imposto pela especificação HTTP e é consistente em todos os navegadores modernos.
Essa propriedade torna os fragmentos de URL especialmente úteis para transmitir dados sensíveis em aplicações web. Se chaves de criptografia ou outros segredos forem colocados no fragmento, eles ficam disponíveis ao JavaScript do lado do cliente que precisa deles para a descriptografia, mas nunca são transmitidos ao servidor, nem registrados pelos proxies, nem gravados nos logs de acesso do servidor.
See the fragment vanish in transit
Edit the part after # and watch the server log update. The fragment never appears in the HTTP request line.
https://www.vaulted.fyi/s/aBc123#b9pK4mNxQ_2L7eRfA3vTcU1xY8zB6jH9wM0nP5qS4iE
GET /s/aBc123 HTTP/1.1 Host: www.vaulted.fyi User-Agent: Mozilla/5.0 ...
Per RFC 3986 §3.5, browsers strip everything after # before issuing the HTTP request. The fragment stays in the address bar, accessible only to JavaScript on the loaded page — never logged, never proxied, never cached by the server.
Como o Vaulted usa Fragmento de URL
A Vaulted coloca a chave de criptografia AES-256-GCM diretamente no fragmento da URL. Quando você cria um segredo, o link gerado tem o formato /s/{id}#{base64url(key)}. Como os navegadores nunca enviam o fragmento nas requisições HTTP, a chave de criptografia nunca chega ao servidor da Vaulted. O navegador do destinatário extrai a chave do fragmento, recupera os dados criptografados do servidor e realiza a descriptografia localmente. Essa única decisão arquitetural é o que torna a Vaulted verdadeiramente zero-knowledge.