When configuring OpenVPN, cipher selection impacts both security and throughput. While Blowfish (the default) uses a 128-bit block size, AES-256-CBC offers stronger 256-bit encryption with better hardware acceleration support on modern processors.
Testing on Intel Xeon E5-2680v4 shows:
# AES-256-CBC throughput
openssl speed -evp aes-256-cbc
# Results: ~650 MB/s
# Blowfish throughput
openssl speed -evp bf-cbc
# Results: ~220 MB/s
AES-256 remains NSA-approved for Top Secret data, while Blowfish has theoretical vulnerabilities in its key schedule. For modern systems, the performance penalty of AES-256 is negligible due to AES-NI CPU instructions.
For optimal security in server config:
cipher AES-256-CBC
auth SHA512
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
For legacy device compatibility:
cipher BF-CBC
auth SHA1
tls-cipher TLS-DHE-RSA-WITH-BLOWFISH-CBC-SHA
When upgrading from Blowfish to AES-256:
- Test performance impact with
iperf3
- Verify all clients support AES-NI
- Consider TLS 1.3 cipher suites for new deployments
html
When configuring OpenVPN, the cipher choice impacts both throughput and security posture. Modern systems should prioritize:
- AES-256-CBC - Gold standard with hardware acceleration
- AES-256-GCM - AEAD cipher with built-in authentication
- ChaCha20-Poly1305 - Excellent for ARM/mobile devices
Testing on AWS t2.xlarge instance (Ubuntu 20.04):
# Throughput test command openvpn --test-crypto --secret key.txt --cipher AES-256-CBC # Results: # AES-256-CBC: 145 MB/s (hw accelerated) # AES-128-GCM: 210 MB/s # BF-CBC: 95 MB/s (deprecated)
Current NIST recommendations suggest:
- AES-256 provides sufficient protection against quantum attacks
- GCM mode prevents padding oracle vulnerabilities
- Blowfish (default) should be avoided due to 64-bit block size
Modern server configuration:
# /etc/openvpn/server.conf cipher AES-256-GCM auth SHA512 tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
Legacy client compatibility:
# /etc/openvpn/client.conf cipher AES-256-CBC auth SHA256
Check AES-NI support:
grep aes /proc/cpuinfo # Enable acceleration in OpenVPN: engine rdrand
Transition plan for existing deployments:
- Add multiple ciphers to config:
ncp-ciphers AES-256-GCM:AES-256-CBC
- Monitor connection logs for legacy clients
- Phase out CBC mode after 90 days