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.

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:

bytesfieldcontents
0–7magicASCII "SEALBY-W"
8versão0x01 — qualquer outro valor é rejeitado como “feito com uma versão mais nova”
9algoritmo0x01 = AES-256-GCM
10–13salt do selo4 bytes, CSPRNG, novo a cada selo
14–15reservadodeve ser zero
16–fimquadros de blococada 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.

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.

Baixar na App Store

iPhone e iPad · iOS 17+ · Grátis