Ferramenta de privacidade grátis
Sele um arquivo
Criptografe um arquivo com uma chave de uso único gerada na hora e mande por qualquer canal que quiser. Quem tiver a chave abre o arquivo aqui mesmo, nesta página. Nada é enviado em momento algum, não há frase-senha para quebrar, e você vê o que está lá dentro antes de qualquer coisa ser salva.
Roda inteiramente nesta aba. Esta página não consegue falar com servidor nenhum.
Selando…
Selado.
Este é o seu arquivo criptografado. Sem a chave, ninguém consegue lê-lo. Nem nós, nem ninguém.
A chave — mostrada só agora
Esta chave existe só nesta página, agora. Ela não é guardada nem enviada a lugar nenhum. Se você perdê-la, ninguém consegue abrir o arquivo, nem nós. Salve-a antes de sair.
Ou compartilhe a chave como link
A chave fica depois do # no link. Os navegadores nunca enviam essa parte para servidor nenhum. O link abre esta página com a aba Abrir pronta e a chave preenchida, e depois remove a chave da barra de endereços.
Envie o arquivo e a chave separadamente.
Qualquer pessoa que tenha o arquivo selado e a chave consegue abri-lo. Mande cada um por um canal diferente, por exemplo o arquivo por e-mail e o link da chave por mensagem de texto. Assim nenhuma caixa de entrada tem os dois.
Chave lida do seu link e removida da barra de endereços, para ficar fora do seu histórico.
Verificando…
Dentro deste arquivo selado
Nada foi salvo ainda. Isto é o que o arquivo selado diz conter:
- Nome
- Tamanho
- Tipo
Cuidado — este tipo de arquivo pode executar código no seu aparelho
Descriptografado.
O arquivo foi descriptografado no seu aparelho e oferecido como download. Nada sobre ele saiu desta página em momento algum.
De quem faz o Sealby — o cofre criptografado para iPhone
O Sealby guarda fotos, arquivos e notas em cofres criptografados no seu iPhone. Sem conta, sem servidores, e só você pode ler.
Cada parâmetro, declarado
- Cifra
- AES-256-GCM (WebCrypto), tag de 128 bits por bloco
- Chave
- 256 bits do CSPRNG do navegador, gerada na hora a cada selo, usada uma única vez, derivada de nada
- Divisão em blocos
- um manifesto criptografado (nome do arquivo, tamanho, tipo) e depois o arquivo em blocos de 1 MiB — cada um autenticado separadamente
- Nonce
- salt de selo aleatório de 32 bits ‖ contador de blocos de 64 bits — nunca repetido dentro de um arquivo, e a chave é de uso único de qualquer forma
- Dados autenticados
- o cabeçalho completo de 16 bytes mais o índice de cada bloco e o número total de blocos — reordenar, truncar ou emendar blocos quebra a descriptografia
- String da chave
- base64url, 47 caracteres: a chave de 32 bytes mais um checksum de 3 bytes do SHA-256, para que um erro de digitação falhe de forma limpa em vez de produzir lixo
Respostas honestas sobre o que isto faz
Tudo acontece no seu navegador.
Selar e abrir leem o arquivo para a memória desta página, rodam AES-256-GCM ali mesmo com o motor WebCrypto embutido no seu navegador e devolvem o resultado como download. Nada é enviado. Não há conta nem processamento em servidor. Diferentemente do resto deste site, esta página nem carrega o contador de visitas sem cookies. Nenhuma coleta de estatísticas de nenhum tipo.
Isso não é só uma promessa. A página é servida com uma Content-Security-Policy que permite ao navegador buscar apenas os arquivos estáticos deste próprio site. Ela não tem como enviar o seu arquivo, a sua chave ou qualquer outra coisa a servidor nenhum, inclusive os nossos. Abra as ferramentas de desenvolvedor do seu navegador enquanto sela e você vai ver zero requisições. Para a prova mais direta, instale a Caixa de Ferramentas e sele no modo avião. Com a rede desligada, nada pode sair.
A chave é tudo — e nós nunca a temos.
Cada selo gera no seu navegador uma chave aleatória nova de 256 bits. Ela é mostrada a você uma vez e não fica guardada em lugar nenhum: nem nos nossos sistemas (nenhum está envolvido), nem no armazenamento do seu navegador, nem no arquivo selado. Não há frase-senha para adivinhar e nada sujeito a força bruta. Quem tiver a chave e o arquivo consegue abri-lo. Quem não tiver, não consegue.
Isso tem uma consequência dura: se a chave for perdida, o arquivo se foi. Não há redefinição, nem chamado de suporte, nem recuperação. Não é falta de boa vontade da nossa parte. Uma cópia que nós pudéssemos recuperar seria uma cópia que alguém poderia roubar ou exigir.
O link da chave nunca chega a um servidor.
O link de compartilhamento coloca a chave depois do # na URL. Essa parte, o fragmento, fica com o navegador. Ela nunca entra no que o navegador envia a qualquer servidor, nosso ou de quem quer que seja. Quando esta página carrega com uma chave no link, ela lê a chave, muda para a aba Abrir e remove a chave da barra de endereços imediatamente. Assim ela não fica parada na URL visível nem no histórico do navegador.
Ainda assim, quem tiver o link e o arquivo selado consegue abri-lo. É por isso que esta página manda você enviar o arquivo e a chave por canais diferentes.
Você vê o que tem dentro antes de qualquer coisa ser salva.
Abrir acontece em duas etapas. Primeiro a página descriptografa apenas um pequeno manifesto: o nome, o tamanho e o tipo originais do arquivo. Ela mostra isso a você, com um aviso bem alto para tipos de arquivo que podem executar código (programas, scripts, instaladores, documentos com macros, HTML) e para nomes disfarçados com extensão dupla, como invoice.pdf.exe. Nada é gravado até você clicar para descriptografar. A página nunca abre nem exibe o conteúdo descriptografado. Ela apenas oferece o arquivo para download.
Deixe claro o que a criptografia prova e o que não prova. Um arquivo selado é confidencial no trajeto. Selar não diz nada sobre quem o enviou nem sobre o conteúdo dele ser seguro. Trate um arquivo selado inesperado com o mesmo ceticismo que um anexo inesperado.
Onde fica de verdade a fronteira de confiança.
Você está rodando código que este site entregou a você. Se o sealby.app, ou a sua conexão com ele, fosse comprometido, uma página maliciosa poderia ler o que você coloca nela. Isso vale para toda ferramenta de criptografia baseada na web, e preferimos dizer isso a fingir o contrário. O que fazemos a respeito: a página é um arquivo estático, e nós a mantemos livre de código de terceiros. A Caixa de Ferramentas instalada permite continuar usando uma versão que você já carregou. E o formato está documentado abaixo, para que ferramentas independentes possam ser construídas em cima dele.
O seu próprio aparelho também está dentro dessa fronteira. Extensões de navegador com acesso à página, ou malware na máquina, conseguem ler tudo o que qualquer página consegue. O arquivo selado esconde o conteúdo, mas não tudo. Quem o tiver consegue ver o tamanho dele (mais ou menos o do original) e que ele é um arquivo selado pelo Sealby.
Os limites, em português claro
- Chave perdida = arquivo perdido. Sem exceções, por design.
- Não conseguimos ver seus arquivos nem suas chaves, então também não conseguimos verificar se eles têm malware. O aviso de tipo de arquivo é baseado apenas no nome do arquivo. Não é uma garantia de segurança.
- Qualquer pessoa com o arquivo selado e a chave consegue abri-lo. A ferramenta não sabe nem verifica quem essa pessoa é.
- O tamanho do arquivo selado revela aproximadamente o tamanho do arquivo original.
- Um arquivo, de até 100 MB, por selo. Compacte vários arquivos antes.
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 abrir um arquivo .sealed em trinta linhas de Python:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SEALBY-W" |
| 8 | versão | 0x01 — qualquer outro valor é rejeitado como “feito com uma versão mais nova” |
| 9 | algoritmo | 0x01 = AES-256-GCM |
| 10–13 | salt do selo | 4 bytes, CSPRNG, novo a cada selo |
| 14–15 | reservado | deve ser zero |
| 16–fim | quadros de bloco | cada um: uint32 BE com o comprimento do texto cifrado, depois o texto cifrado AES-GCM + tag de 16 bytes |
O bloco 0 é o manifesto: JSON em UTF-8 {"name":…,"size":…,"type":…}. Os blocos 1…N−1 são o arquivo em pedaços de 1 MiB. Para o bloco i de N: nonce = salt ‖ uint64 BE i; dados autenticados = cabeçalho ‖ uint64 BE i ‖ uint64 BE N. Assim, adulteração, truncamento, reordenação, realocação e emenda entre arquivos falham todos na autenticação. Cada caso é comprovado por um teste negativo versionado no repositório.
String da chave: base64url (sem preenchimento) da chave de 32 bytes seguida dos 3 primeiros bytes do SHA-256 dela, 47 caracteres no total. Um erro de digitação falha no checksum em vez de produzir lixo.
Especificação completa byte a byte (FORMAT-WEB-v1) ·Vetores de teste com resposta conhecida (JSON)
Abridor de referência (Python, biblioteca cryptography)
import base64, hashlib, json, struct, sys
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
raw = open(sys.argv[1], "rb").read()
assert raw[:8] == b"SEALBY-W" and raw[8] == 1 and raw[9] == 1
assert raw[14:16] == b"\x00\x00"
header, salt = raw[:16], raw[10:14]
frames, off = [], 16
while off < len(raw):
(n,) = struct.unpack(">I", raw[off:off + 4]); off += 4
frames.append(raw[off:off + n]); off += n
assert off == len(raw)
kb = base64.urlsafe_b64decode(sys.argv[2] + "=") # 47-char key string
key, check = kb[:32], kb[32:35]
assert hashlib.sha256(key).digest()[:3] == check # typo check
N = len(frames)
def chunk(i):
nonce = salt + struct.pack(">Q", i)
aad = header + struct.pack(">QQ", i, N)
return AESGCM(key).decrypt(nonce, frames[i], aad)
manifest = json.loads(chunk(0))
data = b"".join(chunk(i) for i in range(1, N))
assert len(data) == manifest["size"]
open(manifest["name"], "wb").write(data)
print("decrypted ->", manifest["name"])Isto é para arquivos em trânsito. O cofre é para arquivos em repouso.
Selar protege um arquivo no caminho até algum lugar. O Sealby protege tudo o que fica: fotos, arquivos e notas em cofres criptografados no seu iPhone. Sem conta, sem servidores, e só você pode ler.
iPhone e iPad · iOS 17+ · Grátis