Relayium

Segurança e modelo de ameaças

Última atualização: 2026-08-02

A Relayium foi criada para que as pessoas que transferem arquivos ou textos temporários — e não o servidor — tenham as chaves. Esta página descreve exatamente o que é protegido, como funciona e os limites dessa proteção.

Em resumo: na mesma rede, arquivos e mensagens em tempo real circulam diretamente entre dispositivos. Entre redes, as sessões do navegador usam um retransmissor que transporta apenas texto cifrado de ponta a ponta e não possui a chave do conteúdo. Chaves novas por sessão são sempre usadas; além disso, um código opcional comparado fora de banda permite detectar interceptação da sinalização. A seguir, os detalhes.

Criptografia de arquivos em tempo real no navegador (X25519 + AES-256-GCM)

Para arquivos em tempo real no navegador, cada transferência gera um par X25519 efêmero em cada dispositivo e os navegadores derivam uma chave AES-256-GCM compartilhada. Cada bloco usa um nonce único, então a sinalização e o retransmissor veem texto cifrado, não o arquivo simples. A CLI usa outro protocolo direto TLS 1.3 descrito abaixo.

O código de verificação (SAS) — detectar um servidor malicioso

O WebRTC troca impressões digitais pelo servidor de sinalização, que poderia tentar substituir chaves. Por isso a Relayium pode mostrar um SAS de 6 dígitos nas duas telas. Códigos iguais oferecem a verificação mais forte somente quando as duas pessoas os comparam fora de banda. Mostrar esse código e parar para compará-lo é uma preferência: “verificação avançada” na web (desligada por padrão) e `--verify` na CLI. Desligá-la muda o que aparece e quais passos param para pedir confirmação; não muda a criptografia. O handshake de compromisso e revelação abaixo roda em toda conexão e recusa aquela cuja revelação não confere, as chaves continuam sendo geradas no seu aparelho e nunca são enviadas a nós, o retransmissor continua carregando apenas texto cifrado, e, no navegador, receber arquivos continua perguntando antes de salvar qualquer coisa — já o aplicativo nativo de macOS grava sem perguntar na sua pasta de destino configurada (Downloads por padrão). Essa pergunta evita gravações não solicitadas no seu disco; ela não diz quem está do outro lado, e só a comparação do código estabelece isso.

O compromisso e posterior revelação impede que o servidor escolha depois uma chave que colida. A CLI usa um SAS separado derivado da troca das impressões do certificado TLS fixado; ele também só detecta algo se alguém realmente o comparar fora de banda, que é para o que `--verify` para.

Texto simples que o servidor não pode ver nem descriptografar

Nossos servidores foram projetados para não poder ver nem descriptografar o seguinte texto simples:

Na mesma rede, bytes de arquivos e mensagens fluem diretamente entre dispositivos. Entre redes passam pelo TURN como texto cifrado, sem que o retransmissor tenha a chave. A sinalização ainda processa dados da conexão e vê metadados como IP público, sala, horário, apelido e presença.

Quando arquivos e textos do navegador são retransmitidos (TURN)

Arquivos e textos do navegador entre redes usam TURN por projeto, não como alternativa, pois NATs e firewalls tornam improvável o caminho direto. Sessões do navegador na mesma rede conectam diretamente sem credenciais de retransmissão. Arquivos e textos da CLI nunca usam TURN: são apenas diretos e falham sem caminho direto.

Transferência de texto temporário

As sessões de texto no navegador usam o protocolo Web: os pares fazem uma troca X25519 efêmera e derivam subchaves AES-256-GCM separadas por direção em um domínio distinto das chaves de transferência de arquivos. Cada mensagem UTF-8 válida é autenticada e criptografada como um quadro independente. Entre redes, as sessões do navegador usam TURN por decisão de projeto; o retransmissor transporta texto cifrado e não possui a chave da mensagem. Com a verificação avançada ativada, comparar o SAS fora de banda detecta também a interceptação da sinalização.

O texto da CLI usa um protocolo diferente, exclusivamente direto, sobre TLS 1.3 com certificado fixado. Ele não usa os quadros X25519/AES do navegador nem TURN e falha se nenhum caminho direto puder ser estabelecido. A Relayium não armazena o corpo das mensagens, mas qualquer ponta pode copiar, registrar, capturar a tela ou reter o texto de outra forma após recebê-lo.

Links de download armazenados — a chave nunca deixa seu navegador

O modo opcional de link de download é para quando o destinatário não está online. Seu navegador criptografa os arquivos com AES-256-GCM antes de qualquer coisa ser enviada, e a chave de descriptografia é colocada apenas no fragmento da URL — a parte depois do # —, que os navegadores nunca enviam ao servidor.

Integridade dos arquivos (SHA-256)

Além da confidencialidade, a integridade de cada arquivo é verificada. Cada bloco carrega uma tag de autenticação AES-GCM, e um hash SHA-256 por arquivo é verificado de ponta a ponta no lado receptor, de modo que um arquivo corrompido ou adulterado é detectado em vez de aceito silenciosamente.

Contra o que a Relayium não protege

A criptografia de ponta a ponta protege os dados em trânsito entre dois pontos de extremidade honestos. Por design, ela não pode proteger contra:

Suporte a navegadores e seus limites

A Relayium funciona em qualquer navegador moderno com WebRTC sobre HTTPS. Alguns recursos diferem conforme o navegador:

Código aberto e relato de problemas

O design do protocolo e todo o código de cliente e servidor são públicos no GitHub, de modo que qualquer pessoa pode auditar a criptografia, executar o próprio servidor ou contribuir. Se você encontrar um problema de segurança, relate-o de forma privada por meio do relato de vulnerabilidades do GitHub no repositório, em vez de abrir uma issue pública.