Ferramenta de privacidade grátis
Criptografe um arquivo no seu navegador
Escolha um arquivo, escolha uma frase-senha e baixe uma cópia criptografada. AES-256-GCM, com a chave derivada no seu navegador. Nada é enviado, e funciona offline depois de carregado. O formato está documentado byte a byte abaixo, para você não precisar acreditar em nada só na nossa palavra.
Roda inteiramente nesta aba. Nada é enviado, e funciona offline depois de carregado.
Qualquer arquivo. Arquivos grandes exigem memória. Veja os limites honestos abaixo.
Não existe recuperação. Uma frase-senha esquecida significa um arquivo que ninguém, nem nós, jamais conseguirá abrir.
Cada parâmetro, declarado
- Cifra
- AES-256-GCM (WebCrypto), tag de 128 bits
- Derivação de chave
- PBKDF2-HMAC-SHA-256, 600.000 iterações
- Salt do KDF
- 16 bytes, CSPRNG, novo a cada arquivo
- Nonce GCM
- 12 bytes, CSPRNG, novo a cada arquivo
- Dados autenticados
- o cabeçalho inteiro de 42 bytes, então adulterar qualquer parâmetro declarado quebra a descriptografia
- Codificação da frase-senha
- UTF-8, normalizada em NFC (assim a mesma frase digitada em qualquer aparelho deriva a mesma chave)
Limites honestos
Este não é o formato de cofre do app Sealby. O app deriva chaves com Argon2id calibrado por aparelho, as protege no Secure Enclave e guarda o conteúdo em contêineres negáveis divididos em blocos. Nada disso uma página web consegue fazer. Esta página é um utilitário independente construído sobre o que os navegadores oferecem nativamente.
O PBKDF2 não exige muita memória. É a única função de derivação de chave que os navegadores trazem nativamente, e 600.000 iterações deixam cada palpite lento, mas uma máquina com GPU ainda o ataca muito mais rápido que o Argon2id. Então a proteção vive na sua frase-senha: quatro palavras aleatórias ou mais, não uma senha.
A WebCrypto criptografa de uma só vez. Não há streaming, então o arquivo inteiro fica na memória duas a três vezes durante o processamento. Centenas de megabytes: tudo bem na maioria dos aparelhos. Para arquivos de vários gigabytes, use uma ferramenta de computador. A saída criptografada também revela o tamanho aproximado do arquivo. O nome vai criptografado por dentro, mas o tamanho não fica escondido.
O formato, byte a byte
Tudo o que um leitor técnico precisa para verificar a saída desta página de forma independente, ou descriptografá-la em vinte linhas de Python:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | versão | 0x01 |
| 9 | algoritmo | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | iterações | uint32, big-endian (600.000) |
| 14–29 | salt | 16 bytes |
| 30–41 | nonce | 12 bytes |
| 42–fim | texto cifrado | AES-256-GCM do payload, AAD = bytes 0–41; os 16 bytes finais são a tag GCM |
Payload antes da criptografia: [comprimento do nome em 2 bytes, big-endian][nome do arquivo, UTF-8][bytes do arquivo]. O nome original viaja criptografado; na descriptografia, ele é restaurado.
Descriptografador de referência (Python, biblioteca cryptography)
import sys, hashlib, struct, unicodedata
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
raw = open(sys.argv[1], "rb").read()
assert raw[:8] == b"SBXF0001" and raw[8] == 1 and raw[9] == 1
iters = struct.unpack(">I", raw[10:14])[0] # 600000
salt, nonce, ct = raw[14:30], raw[30:42], raw[42:]
phrase = unicodedata.normalize("NFC", sys.argv[2]).encode()
key = hashlib.pbkdf2_hmac("sha256", phrase, salt, iters, 32)
plain = AESGCM(key).decrypt(nonce, ct, raw[:42]) # AAD = header
name_len = struct.unpack(">H", plain[:2])[0]
name = plain[2 : 2 + name_len].decode()
open(name, "wb").write(plain[2 + name_len :])
print("decrypted ->", name)Isto é a demonstração. O cofre é o produto.
Um arquivo, uma frase-senha, uma página. É o que um navegador consegue fazer. O Sealby faz isso direito: Argon2id calibrado para o seu aparelho, chaves no Secure Enclave e cofres ocultos sem nenhuma lista ou contagem guardada.
iPhone e iPad · iOS 17+ · Grátis