Ir para o conteúdo
HexaTransfer
Voltar ao blog
Criptografia e seguranca

Transferência protegida por palavra-passe: proteja os seus ficheiros partilhados

Adicione protecção por palavra-passe às transferências de ficheiros para uma camada extra de segurança. Saiba como funciona a encriptação derivada de palavra-passe e as melhores práticas.

A transferência de ficheiros protegida por palavra-passe significa que o receptor não consegue desencriptar o payload sem um segredo escolhido pelo remetente. A palavra-passe não é apenas uma barreira de acesso — é um input para PBKDF2-HMAC-SHA256 (ou Argon2id) que deriva a chave AES-256-GCM usada para encriptar os bytes. Sem ela, o texto cifrado no servidor é ruído. Isto difere acentuadamente das ferramentas de transferência "com porta de palavra-passe" que armazenam ficheiros em texto simples e apenas verificam a palavra-passe na camada HTTP. A protecção real por palavra-passe vincula a palavra-passe à própria criptografia.

A diferença entre porta de acesso e derivação

A maioria das plataformas de partilha de ficheiros para consumidores antes de 2020 usava portas de acesso por palavra-passe. Fazia o upload de um .pdf, o servidor armazenava-o no S3, e um controlador Rails verificava a palavra-passe submetida contra um hash bcrypt antes de entregar o ficheiro. Um administrador com acesso à base de dados ou uma intimação judicial via tudo. A encriptação derivada de palavra-passe inverte isso: o navegador corre o PBKDF2 com 600.000 iterações (linha de base OWASP 2023), expande a palavra-passe numa chave de 256 bits e encripta antes do upload. O servidor mantém texto cifrado e um salt aleatório. Sem palavra-passe, sem chave, sem ficheiro. O Firefox Send usava este modelo antes de a Mozilla o encerrar em 2020.

Escolher entre PBKDF2 e Argon2id

O PBKDF2 é o padrão — vem incluído na Web Crypto API, corre em todo o lado, e resiste à força bruta com contagens de iterações elevadas. O Argon2id é mais recente e melhor: memory-hard, pelo que os atacantes com GPU não conseguem percorrer rainbow tables barato. O problema é o suporte no navegador. O Argon2 nativo não está ainda na Web Crypto, por isso os serviços implementam-no via libsodium.js, que adiciona cerca de 180 KB ao bundle. Para uma transferência de 10 GB onde o gargalo é o upload de qualquer forma, a troca favorece o Argon2id com m=64MB, t=3, p=1. Para um anexo de 20 MB, o PBKDF2 com 600k iterações termina em 400 ms num telemóvel de gama média.

O que torna uma palavra-passe suficientemente forte

Uma mistura de 12 caracteres de maiúsculas, minúsculas, dígitos e símbolos atinge cerca de 78 bits de entropia — mais que suficiente contra ataques offline de 2026 sobre Argon2id. Uma frase-passe de quatro palavras Diceware (no estilo correctohorsebatterystaple) atinge 51 bits e é mais fácil de ler ao telefone. Evite palavras-passe curtas mesmo com expansão por KDF; um atacante com texto cifrado e salt roubados pode correr PBKDF2 numa RTX 5090 a 20 milhões de hipóteses por segundo. Palavras-passe de seis caracteres caem em minutos. Reitere isto a cada utilizador que tente "Verao2026!".

Partilhar a palavra-passe sem derrotar o propósito

Enviar o link do ficheiro e a palavra-passe no mesmo email derrota tudo. Atacantes que controlem a caixa de entrada controlam ambos. Separe os canais: envie o link por email, a palavra-passe por SMS ou Signal. Ainda melhor, use um serviço de segredo de uso único como o Psst! do 1Password ou uma mensagem directa no Slack que não possa ser reencaminhada sem captura de ecrã. Para receptores recorrentes, acorde num esquema de derivação de palavra-passe fora de banda (por exemplo, "nome do mês mais ID do projecto") para que nada sensível viaje pelo canal.

Salt, nonce e por que não são a palavra-passe

Três peças viajam junto ao texto cifrado: um salt para a KDF (16 bytes), um nonce para GCM (12 bytes) e uma tag de autenticação (16 bytes). Nenhuma delas precisa de ficar secreta — apenas precisam de ser únicas por transferência. Reutilizar um nonce com a mesma chave é catastrófico em GCM: vaza o XOR dos textos simples. A geração aleatória criptograficamente segura via crypto.getRandomValues() trata disto, e o salt fica armazenado no cabeçalho de metadados do ficheiro. A palavra-passe é o único segredo; todo o resto viaja com o texto cifrado.

Protecção contra adulteração do lado do cliente

Uma extensão de navegador maliciosa pode ler a palavra-passe à medida que o utilizador a escreve. Mitigue com cabeçalhos Content Security Policy que proíbam scripts inline e ligações externas (connect-src 'self'), Subresource Integrity em todo o JavaScript empacotado, e uma Referrer-Policy estrita para que os referrers não vazem para ferramentas de análise. Audite o bundle wasm com hashes de sub-recurso no manifesto. Nada disto para um SO comprometido, mas eleva a barra acima dos curiosos ocasionais. O HexaTransfer publica os seus hashes SHA-384 para que utilizadores avançados possam verificar que o bundle carregado corresponde ao repositório de código fonte.

Retomar downloads interrompidos sem vazar a chave

Para um ficheiro .iso de 5 GB, o download pode durar horas. Se o tab fechar, a retoma deve funcionar sem reintroduzir a palavra-passe. Armazene a chave derivada em SessionStorage (nunca em LocalStorage — persiste entre reinícios) e apague-a quando o download terminar ou o tab fechar. Para o modelo bloco a bloco, cada bloco de 5 MB recebe a sua própria sub-chave HKDF derivada da mestra; desta forma, o reinício de uma sessão pausada apenas expõe a sub-chave do bloco actual, não a raiz. O Smash e o SwissTransfer suportam ambos pedidos de intervalo mas tratam o material das chaves de forma diferente.

Quando a protecção por palavra-passe não é suficiente

A palavra-passe sozinha não impede um receptor autorizado de repartilhar o ficheiro. Uma vez que a Jane desencripta o .docx, pode reencaminhá-lo para qualquer lado. Para contenção real, combine palavras-passe com restrições ao estilo DRM: links de download único, acesso vinculado a IP, ou janelas de expiração curtas (15 minutos para um pacote de evidências PCI DSS 4.0). Para conformidade com o Artigo 32 do RGPD, registe quem acedeu ao quê e quando. A protecção por palavra-passe é um piso, não um tecto — eleva o custo da intercepção casual sem resolver o problema da ameaça interna.

Experimente em hexatransfer.com — gratuito, sem conta, até 10 GB.

Envie arquivos grandes com segurança e criptografia de ponta a ponta

Transfira arquivos de até 10 GB gratuitamente com criptografia de ponta a ponta. Sem necessidade de conta. Seus arquivos são criptografados no navegador antes do envio — ninguém mais pode lê-los.

Enviar um arquivo