Symmetric vs Asymmetric Encryption: Key Differences Explained
Symmetric vs asymmetric encryption compared in plain language. Understand how each works, when to use them, and how they combine in modern file transfer.
Symmetric encryption uses one key for both encryption and decryption — think AES-256-GCM, the cipher that secures your files during transfer. Asymmetric encryption uses a key pair: a public key that anyone can see and a private key that only you hold, used by algorithms like RSA-4096 and Curve25519. Symmetric is fast (gigabytes per second on modern CPUs) but requires both parties to share the same secret. Asymmetric solves the key-exchange problem but is 1,000 times slower. Every modern file transfer service — HexaTransfer, Tresorit, Proton Drive, SwissTransfer — uses both: asymmetric to exchange a symmetric key, then symmetric to encrypt the actual file.
The one-key world: symmetric encryption
Symmetric ciphers use the same key for both directions. If I encrypt a file with key K, you need key K to decrypt it. The major symmetric algorithms still in use:
- AES (Rijndael) with 128, 192, or 256-bit keys, standardized in FIPS 197.
- ChaCha20 with 256-bit keys, preferred on devices without AES-NI hardware acceleration.
- 3DES — deprecated by NIST in 2023, don't use it.
Throughput is the big advantage. AES-256-GCM runs at roughly 3–5 GB/s per core on Intel AES-NI, and ChaCha20-Poly1305 hits 1.5–3 GB/s on ARM phones. Encrypting a 10 GB file takes seconds.
The problem: how do you get the key to the other person? Emailing it defeats the point. This is the key distribution problem, and it's why asymmetric exists.
The two-key world: asymmetric encryption
Invented by Diffie and Hellman in 1976 and realized by Rivest, Shamir, and Adleman as RSA in 1977. Each user has a key pair: a public key published openly and a private key kept secret. Anything encrypted with the public key can only be decrypted with the private key, and vice versa.
If you want to send me a secret file, you encrypt it with my public key. Only my private key can open it — and I never had to share anything secret with you. Key distribution solved.
Current asymmetric algorithms:
- RSA-2048 or RSA-4096 — slow but universally supported, used in TLS certificates.
- Elliptic curve (ECDH, ECDSA) over curves like P-256, P-384, or Curve25519 — smaller keys, faster operations. A 256-bit EC key matches the security of a 3072-bit RSA key.
- Ed25519 — the modern default for signing, used by SSH and Signal.
Why asymmetric is too slow for files
Asymmetric math is expensive. RSA-4096 encryption runs at roughly 100–500 operations per second on a modern CPU. Each operation handles about 470 bytes (the RSA block size minus padding). That's maybe 200 KB/second — about 50,000 times slower than AES-256-GCM.
Trying to encrypt a 10 GB file with RSA would take roughly 14 hours. With AES-256-GCM, it takes about 3 seconds. This asymmetry in speed is why nobody actually uses RSA to encrypt files directly.
Hybrid encryption: the real-world approach
Every protocol that needs both security and speed combines the two. TLS 1.3, PGP, Signal, Age, and every credible file transfer service use this pattern:
- The sender generates a random 256-bit AES key (the "session key" or "file key").
- The file gets encrypted with AES-256-GCM using that key.
- The AES key itself gets encrypted with the recipient's public key (RSA-OAEP or ECIES).
- Both the ciphertext and the encrypted key travel to the recipient.
- The recipient decrypts the AES key with their private key, then uses it to decrypt the file.
You pay the asymmetric cost once per recipient, for a 256-bit key. The bulk file is handled symmetrically at full speed. Best of both worlds.
Where file transfer services differ
Browser-based transfer services face a twist: the recipient might not have a key pair. They're just clicking a link. Three patterns handle this:
- Shared-link symmetric only (SwissTransfer, HexaTransfer, Firefox Send's successors). A random AES-256 key is generated in the sender's browser, embedded in the URL fragment, and the recipient's browser reads it from the fragment. No asymmetric crypto needed — the fragment is the channel.
- Account-to-account asymmetric (Tresorit, Proton Drive). Each user has an RSA or ECC key pair generated at signup. Files encrypted for a specific recipient use their public key.
- Hybrid with password (many services). The URL fragment contains a salt; the user types a password; PBKDF2 or Argon2id derives the symmetric key. No asymmetric involved, but the password acts as a shared secret.
The shared-link approach is simplest and works for recipients without accounts. Account-bound asymmetric is stronger because losing the link doesn't leak the key. Pick based on your threat model.
Digital signatures: asymmetric's other job
Asymmetric does something symmetric can't: prove authorship. If I sign a file with my private key, anyone with my public key can verify I signed it, and they know it wasn't tampered with since. Symmetric can provide authentication (HMAC, GCM's tag) but only between parties who already share a secret.
Signature algorithms in use:
- RSA-PSS with SHA-256 — legacy but widely supported.
- ECDSA on P-256 or P-384 — NIST-approved, used in US federal systems.
- Ed25519 — fast, deterministic, resistant to bad RNGs. The modern choice.
Software distribution (apt, Homebrew, Docker images) relies on Ed25519 or RSA signatures to prevent supply-chain tampering. File transfer services typically don't expose signatures directly, but the GCM authentication tag in AES-256-GCM provides integrity within a single encryption.
Key sizes and security levels
A quick conversion table for equivalent security against classical computers:
- 128-bit symmetric = 3072-bit RSA = 256-bit EC (P-256 or Curve25519)
- 192-bit symmetric = 7680-bit RSA = 384-bit EC (P-384)
- 256-bit symmetric = 15360-bit RSA = 512-bit EC (P-521)
NIST's current recommendation for new systems: at least 112-bit security, meaning RSA-2048 or P-256. Federal agencies use 128-bit (RSA-3072, P-384) as a minimum through 2030.
Against future quantum computers, symmetric keys lose roughly half their strength (Grover's algorithm), while RSA and ECC break entirely (Shor's algorithm). NIST standardized post-quantum replacements in 2024: ML-KEM (formerly Kyber) for key exchange and ML-DSA (formerly Dilithium) for signatures. Migration is underway but slow.
When to use which
A practical decision guide:
- Encrypting a file for yourself (backup, archive): symmetric AES-256-GCM with a strong password through Argon2id. No asymmetric needed.
- Sending a file to one known recipient: hybrid — AES-256-GCM for the file, public-key wrap for the session key.
- Sending to many recipients: encrypt the file once with AES, then wrap the key separately with each recipient's public key. Adds maybe 300 bytes per recipient.
- Proving authorship: Ed25519 signature over the ciphertext.
- One-off share via link: symmetric with the key in the URL fragment.
Putting it together
For sensitive transfers today, a pragmatic stack: AES-256-GCM for bulk encryption, X25519 ECDH for key exchange if recipients have identities, PBKDF2 or Argon2id for password-derived keys, and TLS 1.3 as the transport layer. This combination is what modern audited services deploy.
Try it at hexatransfer.com — free, no account, 10 GB max.
Send large files securely with end-to-end encryption
Transfer files up to 10 GB for free with end-to-end encryption. No account required. Your files are encrypted in your browser before upload — no one else can read them.
Send a file