
Aplicativo web offline e de código aberto para criptografia e compartilhamento de arquivos baseados em passkeys. AES-256-GCM/HPKE, sem nuvem, sem contas; criptografe para destinatários com Share Keys públicas.
# 🔐 FileKey O FileKey é um aplicativo web offline que permite criptografar e compartilhar arquivos rapidamente usando passkeys. Sem contas, sem rastreamento, sem nuvem. > 🛡️ **FileKey é gratuito, de código aberto e prioriza a privacidade.** Disponível em **[filekey.app](https://filekey.app)**. --- ### 🚀 Recursos - ✅ **Gratuito e de Código Aberto** – Licenciado sob GPLv3. - ✅ **Sem Contas** – Sem logins, sem rastreamento. - ✅ **Criptografia Baseada em Passkey** – Usa sua passkey existente, gerenciador de senhas ou chave de segurança de hardware. - ✅ **Sem Nuvem** – Os arquivos são selados com AES-256 no seu dispositivo. Nada é enviado para a internet. - ✅ **Compartilhamento Seguro** – Criptografe um arquivo para a Share Key de alguém ou publique um link "envie-me um arquivo". - ✅ **Códigos de Recuperação** – Códigos de recuperação offline opcionais para você nunca ficar bloqueado. - ✅ **Pastas e Arquivos Grandes** – Criptografe pastas inteiras e arquivos de vários gigabytes facilmente. - ✅ **Offline** – Funciona 100% no seu navegador, online ou offline. Instalável como PWA. --- ### 🗣️ O que estão dizendo - O blogueiro francês de cibersegurança Korben escreveu uma ótima [análise do FileKey](https://korben.info/filekey-chiffrement-fichiers-passkeys-local-opensource.html). - O [thread de Tom Dörr no X](https://x.com/tom_doerr/status/1921957643444273491?s=20). (mais de 40 mil visualizações) - Post de lançamento no [Reddit](https://www.reddit.com/r/yubikey/comments/1iiptny/introducing_filekey_encrypt_decrypt_files_using/). (mais de 100 mil visualizações) - Lançamento do recurso de compartilhamento no [Reddit](https://www.reddit.com/r/yubikey/comments/1jbbvwd/update_filekey_encrypt_share_files_using/) (mais de 45 mil visualizações) - [Discussão](https://discuss.privacyguides.net/t/filekey-passkey-file-encryption/26326/3) no PrivacyGuide --- ### 👨💻 Como Usar o FileKey 1. **Crie sua FileKey**<br> Crie uma passkey armazenada no seu gerenciador de senhas ou chave de segurança (iCloud Keychain, Google Password Manager, 1Password, um YubiKey etc.). 2. **Criptografe arquivos**<br> Arraste qualquer arquivo (ou uma pasta inteira) para o FileKey. Ele é criptografado instantaneamente com AES-256 e salvo como `name.filekey`. 3. **Descriptografe arquivos**<br> Arraste o arquivo criptografado de volta. Sua passkey o desbloqueia, local e com segurança. 4. **Compartilhe com privacidade**<br> Criptografe um arquivo para a Share Key de alguém (só essa pessoa pode abri-lo) ou compartilhe um link "envie-me um arquivo" para receber arquivos criptografados de qualquer pessoa. 5. **Salve um código de recuperação**<br> Opcionalmente, salve um código de recuperação de uso único para poder acessar seus arquivos novamente mesmo se perder sua passkey. --- ### 💾 Sistemas Suportados O FileKey precisa de um provedor de passkey que suporte a **extensão PRF** do WebAuthn: um gerenciador de senhas compatível (Apple Passwords, Google Password Manager, 1Password, etc.) ou uma chave de segurança de hardware FIDO2 (YubiKey 5 / Bio Series). Seu navegador e sistema operacional também precisam suportar WebAuthn + PRF. Uma tabela de compatibilidade não exaustiva: | Plataforma | Provedores de passkey | Observações | |----------|-------------------|-------| | **macOS** | Apple Passwords, 1Password, YubiKey | Safari ≥ 17 ou Chrome ≥ 112. YubiKeys podem não funcionar no Safari. | | **iOS / iPadOS** | Apple Passwords, 1Password | Safari ≥ 17 ou Chrome ≥ 112. | | **Windows** | 1Password, YubiKey | Edge ≥ 112 ou Chrome ≥ 112. Requer Windows 11. | | **Android** | Google Password Manager, 1Password, YubiKey | Chrome ≥ 112. | | **Linux** | YubiKey (pelo navegador) | Navegadores Chrome / Chromium recentes. | > ⚠️ **Observações:** > - O provedor deve implementar a extensão PRF do WebAuthn; o suporte varia conforme o aplicativo e a versão, então se um gerenciador ainda não funcionar, provavelmente ele ainda não implementou o PRF. > - Navegadores baseados em Chromium (Brave, Vivaldi, Opera) geralmente funcionam. > - O Windows 10 e versões anteriores não suportam PRF. --- ### 🛠️ Como Funciona a Criptografia O FileKey deriva sua identidade de criptografia de uma passkey. Quando você cria sua FileKey, uma passkey é registrada no domínio do aplicativo (`filekey.app`) como relying party. A autenticação executa a extensão PRF da passkey sobre uma entrada fixa, produzindo um segredo determinístico que nunca sai do seu dispositivo. Esse segredo passa por HKDF-SHA-256 para derivar seu par de chaves de identidade de longo prazo, de modo que a mesma passkey sempre reproduza a mesma identidade, e nada precisa ser armazenado além da própria passkey. Os arquivos são criptografados com HPKE (Hybrid Public Key Encryption, [RFC 9180](https://www.rfc-editor.org/rfc/rfc9180.html)) no modo Auth, usando o conjunto DHKEM-P256 + HKDF-SHA-256. O HPKE deriva chaves novas por arquivo, e o corpo do arquivo é selado com AES-256-GCM em uma construção em fluxo, por blocos, para que arquivos de qualquer tamanho sejam criptografados e descriptografados sem ficar inteiramente na memória. Criptografar para si mesmo usa sua própria chave pública; compartilhar usa a do destinatário. Cada operação acontece inteiramente no seu dispositivo por meio de bibliotecas de criptografia auditadas. > 🛡️ Sua passkey é a única credencial. Não há mais nada para armazenar, e nada sai do seu dispositivo. --- ### 🔁 Compartilhamento Todo usuário do FileKey tem uma Share Key única, uma string pública longa que você encontra no menu em "Your Share Key". Ela pode ser compartilhada abertamente; é um endereço público, não um segredo. #### 📤 Compartilhando um arquivo 1. Escolha Compartilhar ao criptografar (ou envie para um contato salvo). 2. Digite a Share Key do destinatário. 3. O FileKey gera um arquivo que só esse destinatário pode abrir, chamado `name.shared.filekey`. Envie-o por qualquer meio: e-mail, mensagens, transferência de arquivos. #### 📥 Recebendo um arquivo compartilhado 1. Abra o FileKey e autentique-se. 2. Arraste o arquivo `.shared.filekey` para dentro. 3. O FileKey o reconhece e o descriptografa com sua chave. #### 📨 "Envie-me um arquivo" Compartilhe um link "envie-me um arquivo" (ele incorpora sua Share Key). Qualquer pessoa (sem conta, sem passkey) pode usá-lo para criptografar um arquivo *para você* diretamente no navegador dela e depois enviar o resultado para você. Só você pode abri-lo. #### 🔐 Detalhes de segurança - Suas chaves privadas nunca saem do seu dispositivo. - Arquivos compartilhados são bloqueados para um destinatário específico (chave pública, ponta a ponta). - Toda criptografia e descriptografia acontecem no seu dispositivo, sem envolvimento de servidores. - Os arquivos são selados com AES-256. - Sua Share Key é pública e pode ser compartilhada abertamente. --- ### 🔑 Códigos de Recuperação Como sua identidade vem da sua passkey, perder essa passkey normalmente significaria perder o acesso. O FileKey oferece um código de recuperação opcional, uma frase de 24 palavras (BIP39) que faz backup da sua identidade. Salve-o uma vez, guarde-o em um lugar seguro e você poderá restaurar o acesso mais tarde. O FileKey também inclui uma ferramenta offline de recuperação independente (`recover.html`): um único arquivo HTML que você pode manter no disco. Com seu código de recuperação, ele descriptografa seus arquivos `.filekey` totalmente offline, mesmo que o site do FileKey desapareça. --- ### 🫥 O Que Acontece se o FileKey Desaparecer? Duas redes de segurança: 1. **A ferramenta offline de recuperação** (acima) abre seus arquivos apenas com seu código de recuperação, sem precisar do site. 2. **Instale o FileKey como um aplicativo** para que ele continue funcionando offline: #### 💻 Desktop (Chrome / Edge / Brave) Abra o FileKey, clique no ícone Instalar na barra de endereço e confirme. Ele abre como um aplicativo offline independente. #### 📱 iOS / iPadOS (Safari) Abra o FileKey no Safari → toque em Compartilhar → Adicionar à Tela de Início → Adicionar. #### 🤖 Android (Chrome / Edge / Brave / Samsung Internet) Abra o FileKey → toque em Adicionar à tela inicial (banner ou menu ⋮) → confirme. Como o FileKey é um site estático sem backend, você também pode hospedá-lo você mesmo (veja abaixo). --- ### 🛠️ Build e Auto-hospedagem O FileKey é um site estático construído com [Bun](https://bun.sh): ```bash cd reference bun install bun test # crypto-core tests bun run build:web # build the app bun run serve # serve it locally ``` A saída do build são arquivos estáticos simples. Hospede-os em qualquer hospedagem estática ou no seu próprio servidor. > **Nota sobre auto-hospedagem:** o ID da relying party da passkey é derivado do domínio registrável (os dois últimos rótulos do host). Hospede o FileKey no seu próprio domínio raiz (apex) ou subdomínio (ex.: `files.example.com` → RP-ID `example.com`). Um host cujo domínio registrável seja um sufixo público (ex.: `you.github.io`, em que os navegadores rejeitam um RP-ID de `github.io`) não funcionará; use um domínio personalizado. --- ### 📦 Arquivos Antigos O FileKey 1.1 usa um formato novo, baseado em padrões, e não consegue abrir arquivos criados pelo FileKey original. Arquivos antigos ainda abrem em **[v1.filekey.app](https://v1.filekey.app)** com a mesma passkey, e o FileKey redireciona você para lá automaticamente ao detectar um desses arquivos. O código-fonte original da v1 está no [`v1` branch](../../tree/v1). --- ### 🔗 Links > 🔒 **[filekey.app](https://filekey.app)** – o aplicativo > > 📜 **[Substack](https://filekey.substack.com/)** – nosso blog > > 💬 **[Signal Group](https://signal.group/#CjQKIDpdakX0nr1V00ciNv3dsWCFZgUwm_NylulFJz4VOUJ_EhBtY-bq759RNExzcCWMUGIB)** – converse conosco --- ### 📜 Licença [GPLv3](https://github.com/rockwellshah/filekey/blob/main/LICENSE).