Ferramenta gratuita de privacidade
Selar um ficheiro
Encripte um ficheiro com uma chave de uso único acabada de gerar e envie-o pelo canal que quiser. Quem tiver a chave abre-o aqui mesmo, nesta página. Nada é alguma vez enviado, não há frase-passe nenhuma para quebrar, e vê o que está lá dentro antes de se guardar seja o que for.
Corre inteiramente neste separador. Esta página não consegue falar com nenhum servidor.
A selar…
Selado.
Este é o seu ficheiro encriptado. Sem a chave, ninguém o consegue ler. Nem nós, nem ninguém.
A chave — mostrada apenas agora
Esta chave existe apenas nesta página, neste preciso momento. Não é guardada nem enviada para lado nenhum. Se a perder, ninguém consegue abrir o ficheiro, nós incluídos. Guarde-a antes de sair.
Ou partilhe a chave como ligação
A chave fica depois do # da ligação. Os navegadores nunca enviam essa parte para servidor nenhum. A ligação abre nesta página com o separador Abrir pronto e a chave já preenchida, e depois remove a chave da barra de endereço.
Envie o ficheiro e a chave em separado.
Quem tiver ao mesmo tempo o ficheiro selado e a chave consegue abri-lo. Envie-os por canais diferentes, por exemplo o ficheiro por e-mail e a ligação da chave por mensagem. Assim, nenhuma caixa de entrada tem alguma vez os dois.
Chave lida a partir da sua ligação e removida da barra de endereço, para não ficar no seu histórico.
A verificar…
Dentro deste ficheiro selado
Ainda não foi guardado nada. Isto é o que o ficheiro selado diz conter:
- Nome
- Tamanho
- Tipo
Atenção — este tipo de ficheiro pode executar código no seu dispositivo
Desencriptado.
O ficheiro foi desencriptado no seu dispositivo e disponibilizado para descarregar. Nada sobre ele alguma vez saiu desta página.
De quem faz o Sealby — o cofre encriptado para iPhone
O Sealby guarda fotos, ficheiros e notas em cofres encriptados no seu iPhone. Sem conta, sem servidores, legíveis por ninguém a não ser você.
Todos os parâmetros, declarados
- Cifra
- AES-256-GCM (WebCrypto), etiqueta de 128 bits por bloco
- Chave
- 256 bits vindos do CSPRNG do navegador, gerada de novo em cada selagem, usada uma só vez, não derivada de nada
- Divisão em blocos
- um manifesto encriptado (nome, tamanho e tipo do ficheiro) e depois o ficheiro em blocos de 1 MiB — cada um autenticado em separado
- Nonce
- sal de selagem aleatório de 32 bits ‖ contador de blocos de 64 bits — nunca repetido dentro de um ficheiro e, de qualquer forma, a chave é de uso único
- Dados autenticados
- todo o cabeçalho de 16 bytes mais o índice de cada bloco e o número total de blocos — reordenar, truncar ou enxertar blocos quebra a desencriptação
- Cadeia da chave
- base64url, 47 caracteres: a chave de 32 bytes mais uma soma de verificação SHA-256 de 3 bytes, para que uma gralha 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 ambos o ficheiro para a memória desta página, executam aí AES-256-GCM com o motor WebCrypto integrado no seu navegador e devolvem-lhe o resultado como um descarregamento. Nada é enviado. Não há conta nem processamento do lado do servidor. Ao contrário do resto deste site, esta página nem sequer carrega o contador de visitas sem cookies. Nenhuma telemetria, de espécie nenhuma.
Isto não é só uma promessa. A página é servida com uma Content-Security-Policy que só permite ao navegador ir buscar os ficheiros estáticos deste próprio site. Não tem forma nenhuma de enviar o seu ficheiro, a sua chave ou o que quer que seja para servidor nenhum, incluindo o nosso. Abra as ferramentas de programador do seu navegador enquanto sela e verá zero pedidos. Para a prova mais contundente, instale a Caixa de Ferramentas e sele em modo de voo. Com a rede desligada, nada pode sair.
A chave é tudo — e nós nunca a temos.
Cada selagem gera no seu navegador uma chave aleatória nova de 256 bits. É-lhe mostrada uma única vez e não fica guardada em lado nenhum: nem nos nossos sistemas (não há nenhum envolvido), nem no armazenamento do seu navegador, nem no ficheiro selado. Não há frase-passe nenhuma para adivinhar nem nada a que aplicar força bruta. Quem tiver a chave e o ficheiro consegue abri-lo. Quem não tiver, não consegue.
Isso tem uma consequência dura: se a chave se perder, o ficheiro perde-se. Não há reposição, não há pedido de suporte, não há recuperação. Não é falta de vontade de ajudar. Uma cópia que nós conseguíssemos recuperar seria uma cópia que alguém poderia roubar ou exigir.
A ligação com a chave nunca chega a um servidor.
A ligação de partilha coloca a chave depois do # do URL. Essa parte, o fragmento, fica com o navegador. Nunca é incluída no que o navegador envia para servidor nenhum, nosso ou de quem quer que seja. Quando esta página abre com uma chave na ligação, lê a chave, muda para o separador Abrir e remove imediatamente a chave da barra de endereço. Assim, não fica no URL visível nem no histórico do navegador.
Ainda assim, quem tiver ao mesmo tempo a ligação e o ficheiro selado consegue abri-lo. É por isso que esta página lhe diz para enviar o ficheiro e a chave por canais diferentes.
Vê o que está lá dentro antes de se guardar seja o que for.
Abrir acontece em dois passos. Primeiro, a página desencripta apenas um pequeno manifesto: o nome original, o tamanho e o tipo do ficheiro. Mostra-lho, com um aviso bem visível para os tipos de ficheiro que podem executar código (programas, scripts, instaladores, documentos com macros, HTML) e para nomes disfarçados com uma extensão dupla, como invoice.pdf.exe. Nada é escrito até clicar para desencriptar. A própria página nunca abre nem apresenta o conteúdo desencriptado. Limita-se a disponibilizar o ficheiro para descarregar.
Tenha bem presente o que a encriptação prova e o que não prova. Um ficheiro selado é confidencial em trânsito. Selá-lo não diz nada sobre quem o enviou nem sobre se o conteúdo é seguro. Trate um ficheiro selado inesperado com o mesmo ceticismo com que trataria um anexo inesperado.
Onde está realmente a fronteira de confiança.
Está a executar código que este site lhe serviu. Se o sealby.app ou a sua ligação a ele estivessem comprometidos, uma página maliciosa poderia ler o que lá colocasse. Isto é verdade para todas as ferramentas de encriptação baseadas na web, e preferimos dizê-lo a fingir o contrário. O que fazemos quanto a isso: a página é um ficheiro estático e mantemo-la livre de código de terceiros. A Caixa de Ferramentas instalada permite-lhe continuar a usar uma versão que já carregou. E o formato está documentado abaixo, para que se possam construir ferramentas independentes compatíveis com ele.
O seu próprio dispositivo também está dentro dessa fronteira. Extensões do navegador com acesso à página, ou malware na máquina, conseguem ler tudo aquilo que qualquer página consegue ler. O ficheiro selado esconde o seu conteúdo, mas não tudo. Quem o tiver consegue ver o seu tamanho (aproximadamente o do original) e que é um ficheiro selado pelo Sealby.
Os limites, em linguagem simples
- Chave perdida = ficheiro perdido. Sem exceções, por conceção.
- Não conseguimos ver os seus ficheiros nem as suas chaves, por isso também não os conseguimos analisar à procura de malware. O aviso sobre o tipo de ficheiro baseia-se apenas no nome do ficheiro. Não é uma garantia de segurança.
- Quem tiver ao mesmo tempo o ficheiro selado e a chave consegue abri-lo. A ferramenta não sabe nem verifica quem é.
- O tamanho do ficheiro selado revela aproximadamente o tamanho do ficheiro original.
- Um ficheiro, até 100 MB, por selagem. Junte vários ficheiros num ZIP primeiro.
O formato, byte a byte
Tudo o que um leitor técnico precisa para verificar de forma independente o resultado desta página, ou para abrir um ficheiro .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 recente» |
| 9 | algoritmo | 0x01 = AES-256-GCM |
| 10–13 | sal de selagem | 4 bytes, CSPRNG, novo em cada selagem |
| 14–15 | reservado | tem de ser zero |
| 16–fim | tramas de blocos | cada uma: comprimento do texto cifrado em uint32 BE, seguido do texto cifrado AES-GCM + etiqueta de 16 bytes |
O bloco 0 é o manifesto: JSON em UTF-8 {"name":…,"size":…,"type":…}. Os blocos 1…N−1 são o ficheiro em pedaços de 1 MiB. Para o bloco i de N: nonce = sal ‖ uint64 BE i; dados autenticados = cabeçalho ‖ uint64 BE i ‖ uint64 BE N. Assim, adulteração, truncagem, reordenação, deslocação e enxerto entre ficheiros falham todos a autenticação. Cada caso é provado por um teste negativo incluído no repositório.
Cadeia da chave: base64url (sem preenchimento) da chave de 32 bytes seguida dos 3 primeiros bytes do respetivo SHA-256, 47 caracteres no total. Uma gralha faz falhar a soma de verificação em vez de produzir lixo.
Especificação completa, exata ao byte (FORMAT-WEB-v1) ·Vetores de teste com resposta conhecida (JSON)
Leitor 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 ficheiros em trânsito. O cofre é para ficheiros em repouso.
Selar protege um ficheiro a caminho de algum lado. O Sealby protege tudo o que fica: fotos, ficheiros e notas em cofres encriptados no seu iPhone. Sem conta, sem servidores, legíveis por ninguém a não ser você.
iPhone e iPad · iOS 17+ · Grátis