Segurança
Um resumo para equipes de TI e segurança que avaliam o Snowkit para uso no trabalho.
Como o Snowkit é construído
A resposta curta para uma revisão de segurança, com o detalhe a um clique.
Arquitetura
- O Snowkit é um site estático. Cada ferramenta roda como JavaScript e WebAssembly dentro do navegador do visitante.
- Arquivos e texto informados em uma ferramenta são processados na memória do dispositivo do visitante e nunca são transmitidos ao Snowkit.
- O site é servido só por HTTPS, com HSTS.
Acesso à rede
Cada página de ferramenta leva a própria Content Security Policy. As páginas de ferramentas só podem carregar os scripts e estilos do próprio Snowkit e quase todas são impedidas de fazer qualquer conexão de rede.
Algumas ferramentas existem para consultar coisas na internet e cada uma diz isso na própria página. O verificador de validade lê registros RDAP públicos e de transparência de certificados. A consulta de DNS pergunta aos resolvedores públicos da Cloudflare e do Google. O gerador de citações consulta um DOI ou ISBN com a Crossref e a Open Library. O verificador de cabeçalhos HTTP, a verificação pré-lançamento e a verificação do site no ar no Snowkit Launch buscam o endereço público que você digita pelo próprio servidor do Snowkit. O testador de MCP se conecta ao endereço de servidor que você informa. Só o domínio, endereço ou identificador que você digita é enviado, nunca os seus arquivos.
Abrir arquivos do Dropbox, Google Drive ou OneDrive e salvar resultados neles está disponível nas páginas que oferecem. O script seletor do próprio serviço só carrega quando alguém o escolhe e só essas páginas permitem os endereços desse serviço na Content Security Policy. Os arquivos vão direto entre o navegador e o serviço, nunca pelo Snowkit, e a permissão de curta duração que o serviço dá fica só na página aberta.
O Notion e o Canva aceitam arquivos só de um servidor, então enviar um arquivo para lá passa pelo servidor do Snowkit no caminho, por uma conexão criptografada. Ele é passado adiante direto, nunca gravado em disco, registrado nem guardado. A permissão que esse serviço dá fica só na página aberta e viaja com aquela única requisição.
O que nunca usamos
- Sem tags de análise nem redes de anúncios. Os únicos scripts de terceiros são os seletores de arquivos descritos em Acesso à rede, carregados quando alguém escolhe esse serviço.
- Sem cookies de rastreamento ou de publicidade. Visitantes que não entram não recebem cookies nenhum; a sua escolha de tema fica no armazenamento local do seu próprio navegador.
- Sem senhas. As contas são opcionais e usam passkeys ou acesso com GitHub ou Google, então o Snowkit nunca vê nem guarda uma senha.
Outros cabeçalhos
As páginas não podem ser colocadas em frames por outros sites, o MIME sniffing é desativado, os referenciadores são cortados ao sair do site e os recursos de câmera, microfone, localização e pagamento ficam desativados a menos que uma ferramenta precise deles.
Content-Security-Policy- Só os scripts e estilos do próprio Snowkit carregam. Plugins e frames são bloqueados.
Strict-Transport-Security- Só HTTPS, lembrado por um ano, subdomínios incluídos.
X-Frame-Options- DENY. Outros sites não podem colocar uma página do Snowkit em um frame.
X-Content-Type-Options- nosniff. Os arquivos só são lidos como o tipo com que são servidos.
Referrer-Policy- strict-origin-when-cross-origin. Outros sites veem só snowkit.io, nunca a página em que você estava.
Permissions-Policy- Câmera, microfone, localização e pagamento ficam desativados a menos que uma ferramenta precise.
Cross-Origin-Opener-Policy- same-origin. Janelas abertas por outros sites não conseguem alcançar uma página do Snowkit.
Contas opcionais
Entrar guarda um nome e um endereço de e-mail quando o método de acesso os fornece, o ID da conta do provedor de acesso e as ferramentas que você salva como favoritas. As sessões usam um token aleatório guardado em um cookie seguro, HttpOnly e de origem própria, com um segundo cookie guardando só a sua inicial para o cabeçalho da página e um terceiro guardando só uma versão da foto quando você adiciona uma foto de perfil, e só um hash do token é guardado do nosso lado. Arquivos e texto usados nas ferramentas nunca são ligados a uma conta. Você pode excluir a sua conta e tudo nela na página da conta a qualquer momento.
Passkeys
As passkeys usam WebAuthn com verificação do usuário preferida. O servidor emite um desafio de uso único que expira em cinco minutos, confere a origem, a parte confiável e o contador da assinatura e guarda só a chave pública da credencial. Os links de acesso por e-mail, onde oferecidos, funcionam uma vez, expiram em 15 minutos e são guardados só como hash.
Sincronização privada
Os visitantes conectados podem escolher sincronizar a Library, o Your Snowkit, os passos salvos e as ferramentas favoritas entre os dispositivos. A sincronização tem criptografia de ponta a ponta: cada item é criptografado no navegador antes do envio e o servidor guarda só texto cifrado.
- Cifra
- AES-GCM com chaves de 256 bits
- Nonce
- Um nonce novo de 96 bits a cada salvamento
- Chave do cofre
- 256 bits aleatórios, criados no navegador
- Encapsulamento de chaves
- Passkey PRF com HKDF-SHA-256 ou uma chave de recuperação de 128 bits com PBKDF2-SHA-256 em 600.000 iterações
- Arquivos da Library
- Uma chave própria para cada versão, selada em blocos de 8 MiB
- O servidor guarda
- Texto cifrado, chaves encapsuladas, o ID da conta, horários e tamanhos
- Uma chave de cofre aleatória de 256 bits é criada no navegador quando a sincronização é ativada. Os itens são criptografados com AES-GCM usando uma chave de 256 bits e um nonce novo de 96 bits a cada salvamento, com o nome da seção e a versão ligados como dados autenticados adicionais.
- A chave do cofre nunca sai do dispositivo sem criptografia. Ela é encapsulada com AES-GCM por cada passkey que aceita a extensão WebAuthn PRF, usando uma chave derivada da saída do PRF com HKDF-SHA-256, e por uma chave de recuperação de 128 bits aleatórios mostrada à pessoa uma vez, usando PBKDF2-SHA-256 com 600.000 iterações.
- O servidor guarda as chaves encapsuladas, os itens criptografados, o ID da conta, horários e tamanhos. Ele não tem nenhuma chave que os descriptografe, então não há recuperação pelo Snowkit: se todas as passkeys e a chave de recuperação forem perdidas, os dados sincronizados não podem ser abertos por ninguém.
- Os arquivos da Library são sincronizados só quando a sincronização está ativada. Cada versão de arquivo é selada com a própria chave aleatória de 256 bits em blocos de 8 MiB, cada bloco ligado ao ID do objeto, à posição e à contagem, e guardado sob um ID de objeto aleatório. As chaves, nomes, tipos e projetos de cada arquivo ficam só dentro do índice criptografado da Library, então o servidor vê IDs opacos, tamanhos e horários.
- Arquivos que só são abertos em uma ferramenta nunca são sincronizados. Cada conta tem um limite de armazenamento; quando ele é atingido, os envios pausam e nada é apagado. Desativar a sincronização apaga a cópia criptografada do servidor.
Um nome de exibição e uma foto de perfil opcional são dados da conta, e não dados de sincronização. A foto é redimensionada no navegador e guardada sem criptografia com a conta, entregue só a essa conta conectada com cache privado e apagada com a conta.
O que vemos
Como qualquer site, o nosso provedor processa dados padrão de requisição, como endereços IP, para entregar as páginas. Contamos visualizações de página por caminho, sem cookies e sem guardar endereços IP. O Gap Radar conta buscas sem resultado, perguntas da Kitsune sem resposta, páginas ausentes e códigos curtos de erro só como totais diários, sem cookie, identificador ou endereço IP; o texto da busca é limpo no dispositivo e texto raro que não surgiu 5 vezes em 28 dias nunca é mostrado e é apagado. As mensagens enviadas pelo formulário de feedback chegam à equipe do Snowkit por e-mail. Veja a política de privacidade para detalhes.
Relatando uma vulnerabilidade
Escreva para [email protected] com os detalhes e os passos para reproduzir. Vamos confirmar o seu relato e manter você informado enquanto corrigimos. O nosso security.txt lista o mesmo contato.
Contato de segurança: [email protected] · security.txt