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

Encriptação simétrica vs assimétrica: diferenças explicadas

Encriptação simétrica vs assimétrica comparada em linguagem simples. Entenda como cada uma funciona e como se combinam na transferência moderna.

A encriptação simétrica usa uma única chave para encriptar e desencriptar — pense no AES-256-GCM, a cifra que protege os seus ficheiros durante a transferência. A encriptação assimétrica usa um par de chaves: uma chave pública que qualquer pessoa pode ver e uma chave privada que só você detém, usada por algoritmos como RSA-4096 e Curve25519. A simétrica é rápida (gigabytes por segundo nas CPUs modernas) mas requer que ambas as partes partilhem o mesmo segredo. A assimétrica resolve o problema da troca de chaves mas é 1000 vezes mais lenta. Todos os serviços modernos de transferência de ficheiros — HexaTransfer, Tresorit, Proton Drive, SwissTransfer — usam ambas: a assimétrica para trocar uma chave simétrica, depois a simétrica para encriptar o ficheiro em si.

O mundo de uma chave só: encriptação simétrica

As cifras simétricas usam a mesma chave em ambas as direções. Se encriptar um ficheiro com a chave K, precisa da chave K para o desencriptar. Os principais algoritmos simétricos ainda em uso:

  • AES (Rijndael) com chaves de 128, 192 ou 256 bits, normalizado no FIPS 197.
  • ChaCha20 com chaves de 256 bits, preferido em dispositivos sem aceleração de hardware AES-NI.
  • 3DES — depreciado pelo NIST em 2023, não usar.

O débito é a grande vantagem. O AES-256-GCM funciona a cerca de 3 a 5 GB/s por núcleo com Intel AES-NI, e o ChaCha20-Poly1305 atinge 1,5 a 3 GB/s em telemóveis ARM. Encriptar um ficheiro de 10 GB demora segundos.

O problema: como é que faz chegar a chave à outra pessoa? Enviá-la por e-mail derrota o propósito. Este é o problema de distribuição de chaves, e é a razão pela qual existe a encriptação assimétrica.

O mundo de duas chaves: encriptação assimétrica

Inventada por Diffie e Hellman em 1976 e realizada por Rivest, Shamir e Adleman como RSA em 1977. Cada utilizador tem um par de chaves: uma chave pública publicada abertamente e uma chave privada guardada em segredo. Tudo o que for encriptado com a chave pública só pode ser desencriptado com a chave privada, e vice-versa.

Se quiser enviar-me um ficheiro secreto, encripta-o com a minha chave pública. Só a minha chave privada o consegue abrir — e nunca tive de partilhar nada secreto consigo. Problema de distribuição resolvido.

Algoritmos assimétricos atuais:

  • RSA-2048 ou RSA-4096 — lentos mas universalmente suportados, usados em certificados TLS.
  • Curva elíptica (ECDH, ECDSA) sobre curvas como P-256, P-384 ou Curve25519 — chaves mais pequenas, operações mais rápidas. Uma chave EC de 256 bits equivale à segurança de uma chave RSA de 3072 bits.
  • Ed25519 — o padrão moderno para assinatura, usado pelo SSH e Signal.

Por que a encriptação assimétrica é demasiado lenta para ficheiros

A matemática assimétrica é dispendiosa. A encriptação RSA-4096 funciona a cerca de 100 a 500 operações por segundo numa CPU moderna. Cada operação trata cerca de 470 bytes (o tamanho do bloco RSA menos o preenchimento). Isso dá talvez 200 KB/segundo — cerca de 50 000 vezes mais lento do que o AES-256-GCM.

Tentar encriptar um ficheiro de 10 GB com RSA demoraria cerca de 14 horas. Com AES-256-GCM, demora cerca de 3 segundos. Esta assimetria de velocidade é a razão pela qual ninguém usa RSA para encriptar ficheiros diretamente.

Encriptação híbrida: a abordagem do mundo real

Todos os protocolos que precisam de segurança e velocidade combinam os dois. O TLS 1.3, o PGP, o Signal, o Age e todos os serviços credíveis de transferência de ficheiros usam este padrão:

  1. O remetente gera uma chave AES aleatória de 256 bits (a "chave de sessão" ou "chave de ficheiro").
  2. O ficheiro é encriptado com AES-256-GCM usando essa chave.
  3. A própria chave AES é encriptada com a chave pública do destinatário (RSA-OAEP ou ECIES).
  4. O texto cifrado e a chave encriptada chegam ao destinatário.
  5. O destinatário desencripta a chave AES com a sua chave privada e usa-a para desencriptar o ficheiro.

Paga o custo assimétrico uma vez por destinatário, para uma chave de 256 bits. O ficheiro em volume é tratado simetricamente a toda a velocidade. O melhor dos dois mundos.

Onde os serviços de transferência diferem

Os serviços de transferência baseados em navegador enfrentam uma particularidade: o destinatário pode não ter um par de chaves. Está simplesmente a clicar numa ligação. Três padrões resolvem isto:

  • Apenas simétrica com ligação partilhada (SwissTransfer, HexaTransfer, sucessores do Firefox Send). Uma chave AES-256 aleatória é gerada no navegador do remetente, incorporada no fragmento do URL, e o navegador do destinatário lê-a a partir do fragmento. Não é necessária criptografia assimétrica — o fragmento é o canal.
  • Assimétrica de conta para conta (Tresorit, Proton Drive). Cada utilizador tem um par de chaves RSA ou ECC gerado no momento do registo. Os ficheiros encriptados para um destinatário específico usam a sua chave pública.
  • Híbrida com palavra-passe (muitos serviços). O fragmento do URL contém um salt; o utilizador introduz uma palavra-passe; o PBKDF2 ou o Argon2id deriva a chave simétrica. Não envolve assimétrica, mas a palavra-passe age como segredo partilhado.

A abordagem de ligação partilhada é a mais simples e funciona para destinatários sem contas. A assimétrica ligada a conta é mais robusta porque perder a ligação não expõe a chave. Escolha com base no seu modelo de ameaça.

Assinaturas digitais: a outra função da assimétrica

A encriptação assimétrica faz algo que a simétrica não consegue: provar a autoria. Se assinar um ficheiro com a minha chave privada, qualquer pessoa com a minha chave pública consegue verificar que fui eu a assinar, e que não foi adulterado desde então. A simétrica consegue fornecer autenticação (HMAC, a tag do GCM) mas apenas entre partes que já partilham um segredo.

Algoritmos de assinatura em uso:

  • RSA-PSS com SHA-256 — legado mas amplamente suportado.
  • ECDSA em P-256 ou P-384 — aprovado pelo NIST, usado em sistemas federais dos EUA.
  • Ed25519 — rápido, determinístico, resistente a RNGs defeituosos. A escolha moderna.

A distribuição de software (apt, Homebrew, imagens Docker) baseia-se em assinaturas Ed25519 ou RSA para evitar adulteração na cadeia de fornecimento. Os serviços de transferência de ficheiros normalmente não expõem assinaturas diretamente, mas a tag de autenticação GCM no AES-256-GCM fornece integridade dentro de uma única encriptação.

Tamanhos de chave e níveis de segurança

Uma tabela de conversão rápida para segurança equivalente contra computadores clássicos:

  • Simétrica de 128 bits = RSA de 3072 bits = EC de 256 bits (P-256 ou Curve25519)
  • Simétrica de 192 bits = RSA de 7680 bits = EC de 384 bits (P-384)
  • Simétrica de 256 bits = RSA de 15360 bits = EC de 512 bits (P-521)

A recomendação atual do NIST para novos sistemas: pelo menos 112 bits de segurança, ou seja, RSA-2048 ou P-256. As agências federais usam 128 bits (RSA-3072, P-384) como mínimo até 2030.

Contra computadores quânticos futuros, as chaves simétricas perdem cerca de metade da sua força (algoritmo de Grover), enquanto o RSA e o ECC quebram completamente (algoritmo de Shor). O NIST normalizou substitutos pós-quânticos em 2024: ML-KEM (anteriormente Kyber) para troca de chaves e ML-DSA (anteriormente Dilithium) para assinaturas. A migração está em curso mas é lenta.

Quando usar qual

Um guia prático de decisão:

  • Encriptar um ficheiro para si mesmo (cópia de segurança, arquivo): AES-256-GCM simétrico com uma palavra-passe forte através do Argon2id. Não é necessária a assimétrica.
  • Enviar um ficheiro a um destinatário conhecido: híbrida — AES-256-GCM para o ficheiro, embrulho de chave pública para a chave de sessão.
  • Enviar a múltiplos destinatários: encripte o ficheiro uma vez com AES, depois embrulhe a chave separadamente com a chave pública de cada destinatário. Acrescenta talvez 300 bytes por destinatário.
  • Provar a autoria: assinatura Ed25519 sobre o texto cifrado.
  • Partilha pontual via ligação: simétrica com a chave no fragmento do URL.

Juntar tudo

Para transferências sensíveis hoje, uma configuração pragmática: AES-256-GCM para encriptação em volume, X25519 ECDH para troca de chaves se os destinatários tiverem identidades, PBKDF2 ou Argon2id para chaves derivadas de palavras-passe, e TLS 1.3 como camada de transporte. Esta combinação é o que os serviços modernos auditados implementam.

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