

Resumindo: seus arquivos são criptografados no seu dispositivo antes de qualquer coisa sair dele, as chaves nunca chegam até nós, e guardamos o que não conseguimos ler. A versão completa vem a seguir.
Cada arquivo, cada nome de arquivo, cada listagem de pasta e o nome do compartilhamento. Tudo isso é criptografado no seu dispositivo com uma chave criada ali e que fica ali. Nossos servidores, o armazenamento por trás deles e a rede no meio só lidam com texto cifrado.
As primitivas, para você não precisar adivinhar: AES-256-GCM para conteúdo e metadados, X25519 com HKDF-SHA256 para envelopar chaves para um dispositivo ou uma conta, chaves aleatórias de 256 bits por compartilhamento.
Um link de compartilhamento tem a forma share.ninja/#…. Tudo depois do # é um token de acesso que os navegadores nunca enviam a um servidor; ele fica na barra de endereço. O servidor guarda só um hash desse token, mais a chave do compartilhamento envelopada com uma chave derivada dele. Quem abre o link deriva a chave de envelope localmente, desenvelopa a chave do compartilhamento e descriptografa. Quem não tem o link não tem nada, e isso inclui a gente.
Pare de compartilhar, e o servidor recusa o link em todo lugar de uma vez. A expiração funciona do mesmo jeito.
Na web e no desktop um link pode ser só direto. Então nada é enviado à nuvem: os arquivos ficam na máquina de quem envia e são transmitidos ao vivo para quem recebe, por WebRTC. A transferência é criptografada duas vezes: pela criptografia de transporte do próprio WebRTC e pela nossa camada AES-256-GCM com chave derivada da chave do compartilhamento. Se não houver caminho direto na rede, um relay encaminha os pacotes; o relay vê texto cifrado e nada mais. Feche o lado de quem envia, e não sobra nada para baixar.
Os dispositivos se encontram de três jeitos: na mesma rede local, por Bluetooth (só nos apps) e pelo nosso servidor, que agrupa dispositivos atrás da mesma conexão de internet. O que um dispositivo anuncia é seu nome, uma chave pública e uma impressão digital de oito caracteres dessa chave, e só enquanto estiver definido como visível. O botão fica na aba Por perto.
Enviar para quem está perto envelopa a chave do compartilhamento com a chave pública do dispositivo que recebe. O servidor repassa essa oferta lacrada, mas não consegue abri-la. Quem recebe vê o nome e a impressão digital de quem envia e aceita ou recusa; a impressão digital exibida nas duas telas permite conferir que ninguém está no meio. Seus próprios dispositivos conectados aceitam automaticamente. Os arquivos então vão direto, ou por um relay que só vê texto cifrado.
Entrar cria uma chave de identidade no seu primeiro dispositivo. Ela nunca sai dos seus dispositivos às claras: cada dispositivo guarda uma cópia envelopada com a própria chave do dispositivo, e o servidor guarda só essas cópias envelopadas e as metades públicas.
Um dispositivo novo pede para entrar. Um dispositivo em que você já confia mostra o pedido com o nome e a impressão digital do novato e, se você aprovar, envelopa a chave de identidade para ele. Não conseguimos adicionar um dispositivo à sua conta, nem ler seus compartilhamentos para fazer isso por você.
Se você perder todos os dispositivos, a frase de recuperação de 24 palavras das Configurações desenvelopa a chave de identidade em um dispositivo novo. Recuperar revoga todos os dispositivos anteriores. Se você não tiver a frase de recuperação nem nenhum dispositivo, os compartilhamentos se perdem; não guardamos nenhuma cópia que possa trazê-los de volta. Isso não é política, é aritmética.
Aqui, ser honesto importa mais do que ter uma lista curta.
Os logs do servidor são guardados por 30 dias. Os registros de download e o registro de atividade da sua conta guardam o endereço IP por 90 dias; depois, só o evento permanece.
O que nossos servidores não conseguem ver: nenhum arquivo, nenhum nome de arquivo, nenhuma listagem de pasta, nenhum nome de compartilhamento, nenhuma chave.
Conectado, você mesmo pode ver esse registro: o registro de atividade nas configurações da conta lista cada ação na sua conta, com data, hora, endereço IP e dispositivo.
Nossos servidores rodam na Hetzner, na União Europeia. Os dados criptografados ficam nos nossos próprios servidores de armazenamento lá e no Wasabi S3, em várias regiões. O armazenamento recebe e devolve texto cifrado por URLs assinadas de curta duração; nunca tem uma chave.
A página de todo link tem a ação Denunciar abuso, que não exige conta. Como não conseguimos abrir um compartilhamento sozinhos, quem denuncia decide se inclui a chave do link na denúncia; só então conseguimos olhar o que foi denunciado. Uma denúncia confirmada desativa o link em todo lugar, e podemos bloquear o dispositivo que o criou. O e-mail de contato de quem denunciou é excluído assim que a denúncia é tratada.
Sem scripts de rastreamento, sem cookies de analytics, nada enviado a terceiros. As visitas são contadas pelos logs do nosso próprio servidor. Os apps não têm analytics nenhum.
Escreva para support@share.ninja com “security” no assunto. Respondemos a todos os relatos.