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:

bytesfieldcontents
0–7magicASCII "SBXF0001"
8versão0x01
9algoritmo0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256
10–13iteraçõesuint32, big-endian (600.000)
14–29salt16 bytes
30–41nonce12 bytes
42–fimtexto cifradoAES-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.

Baixar na App Store

iPhone e iPad · iOS 17+ · Grátis