我正在测试我的 OpenVPN 服务器 [Debian 10、1 个 CPU 核心、2 GB RAM],我想使用更强的加密,但是使用更强的加密密码 [SHA512、AES-256] 时吞吐量很慢,而如果我更改密码 [SHA256、AES-128],吞吐量会更快。
- 我是否必须升级我的 OpenVPN 服务器以获得更高的规格以实现更强的加密?
- 是否有任何服务器配置选项可以实现更强的加密和更高的吞吐量?
答案1
...我想使用更强的加密,但是使用更强的加密密码 [SHA512,AES-256] 时吞吐量会很慢,而如果我更改密码 [SHA256,AES-128],吞吐量会更快。
任何超过 AES128 的算法都是没有意义的,因为它至少在 2030 年之前都无法破解(相似的数学适用:如果没有 AES-NI CPU,AES192 或 AES256 只会降低吞吐量,而不会在安全性上获得任何额外提升);相反,设置一个低密钥重新协商建议进一步加强安全性:
reneg-bytes <#>
:#
发送/接收字节后重新协商数据通道密钥(默认:禁用)reneg-pkts <#>
:#
发送/接收数据包后重新协商数据通道密钥(默认:禁用)reneg-sec <#>
:#
数秒后重新协商数据通道密钥(默认:3600
)
可以在客户端/服务器上使用:最低值将触发重新协商
加密/解密是 CPU 密集型的,因此密码越强,吞吐量越慢,而对于单核 CPU,吞吐量效率至关重要:
- TLS电子商务应该通过 SSL 使用密码,因为它们更高效:
服务器/客户端的证书# Server config (see: openssl ciphers -v ; openssl ciphers -tls1_2) # HMAC: auth 'SHA512' # SSL: cipher 'AES-128-CBC' # TLS (!: specifies disabled ciphers) tls-version-min '1.2' tls-crypt '/path/to//openvpn/tls-crypt.psk' tls-cipher 'TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256:TLS-ECDH-RSA-WITH-AES-128-GCM-SHA256:!aNULL:!eNULL:!LOW:!3DES:!MD5:!SHA:!EXP:!PSK:!SRP:!DSS:!RC4:!kRSA'
keyUsage
确定可以使用哪些加密算法
密码速度例子:openssl list -digest-commands
|openssl list -cipher-commands
- 路由器:WRT1900ACS(2C 1.6GHz CPU | 512MB 内存)
openssl speed -elapsed aes-128-cbc aes-192-cbc aes-256-cbc # The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128 cbc 50944.22k 55614.08k 57525.85k 58109.61k 58589.18k 59053.40k aes-192 cbc 45287.47k 49316.10k 50979.41k 51186.35k 51503.10k 51478.53k aes-256 cbc 39510.03k 42003.80k 43466.67k 43816.28k 43881.81k 43876.35k # AES-NI CPUs: openssl speed -elapsed -evp <cipher> aes-128 cbc 43612.99k 54396.71k 58581.25k 59807.06k 60222.12k 60347.73k aes-192 cbc 45327.42k 48932.03k 50659.75k 51033.09k 51112.62k 51030.70k aes-256 cbc 39232.39k 41801.90k 43211.86k 43575.30k 43627.86k 43537.75k aes-128-gcm 32829.30k 39914.79k 44297.47k 48705.19k 49851.05k 49728.98k aes-192-gcm 29934.27k 35889.30k 39292.33k 43299.84k 44348.76k 44307.80k aes-256-gcm 27591.53k 31829.29k 35027.46k 38921.56k 40135.34k 40042.50k openssl speed -elapsed rsa type sign verify sign/s verify/s rsa 512 bits 0.000419s 0.000034s 2387.4 29407.8 rsa 1024 bits 0.002078s 0.000091s 481.1 10943.3 rsa 2048 bits 0.012328s 0.000304s 81.1 3294.0 rsa 3072 bits 0.035587s 0.000638s 28.1 1566.2 rsa 4096 bits 0.077231s 0.001100s 12.9 908.8 openssl speed -elapsed ecdsa type sign verify sign/s verify/s 192 bits ecdsa (nistp192) 0.0024s 0.0019s 419.6 519.6 224 bits ecdsa (nistp224) 0.0033s 0.0026s 298.8 379.2 256 bits ecdsa (nistp256) 0.0004s 0.0011s 2675.1 923.3 384 bits ecdsa (nistp384) 0.0125s 0.0093s 80.3 108.1 521 bits ecdsa (nistp521) 0.0307s 0.0223s 32.6 44.9 openssl speed -elapsed ecdh type op op/s 192 bits ecdh (nistp192) 0.0023s 443.9 224 bits ecdh (nistp224) 0.0031s 318.3 256 bits ecdh (nistp256) 0.0008s 1328.1 384 bits ecdh (nistp384) 0.0118s 84.8 521 bits ecdh (nistp521) 0.0291s 34.4 openssl speed -elapsed eddsa type sign verify sign/s verify/s 253 bits EdDSA (Ed25519) 0.0004s 0.0012s 2659.0 55.5
- 个人电脑:Alienware 18(4C/8T 3.2GHz CPU | 32GB 内存)
openssl speed -elapsed aes-128-cbc aes-192-cbc aes-256-cbc # The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128 cbc 201781.99k 204240.19k 205846.50k 204732.26k 198368.08k 192202.36k aes-192 cbc 155320.50k 165649.08k 170799.59k 174669.13k 174455.52k 176713.92k aes-256 cbc 148357.47k 151856.76k 139485.29k 139795.69k 147752.06k 146543.36k # AES-NI CPUs: openssl speed -elapsed -evp <cipher> aes-128 cbc 594581.71k 704905.32k 727373.46k 734094.34k 735351.19k 728341.29k aes-192 cbc 173568.45k 172797.10k 172932.76k 172692.18k 176029.76k 174697.20k aes-256 cbc 151384.09k 149307.17k 153628.24k 154848.72k 154694.49k 154085.68k aes-128-gcm 289326.68k 669727.86k 1691665.95k 2336267.43k 2923761.74k 2939784.87k aes-192-gcm 280643.46k 789515.49k 1799382.17k 2161594.31k 2613359.92k 2599900.99k aes-256-gcm 265146.87k 722269.03k 1588710.62k 1959085.67k 2308647.86k 2307122.45k # TLS-like benchmark: openssl speed -elapsed -aead -evp aes-128-cbc-hmac-sha256 aes-128-cbc-hmac-sha256 25654.32k 271748.59k 1119811.51k 8298379.99k 66950407.39k 130586894.21k openssl speed -elapsed rsa type sign verify sign/s verify/s rsa 512 bits 0.000057s 0.000005s 17670.1 201324.8 rsa 1024 bits 0.000152s 0.000011s 6568.0 92138.0 rsa 2048 bits 0.000726s 0.000032s 1377.9 31147.1 rsa 3072 bits 0.003061s 0.000062s 326.7 16042.9 rsa 4096 bits 0.007236s 0.000111s 138.2 9015.5 openssl speed -elapsed ecdsa type sign verify sign/s verify/s 192 bits ecdsa (nistp192) 0.0003s 0.0003s 3022.3 3221.8 224 bits ecdsa (nistp224) 0.0005s 0.0004s 2159.8 2430.3 256 bits ecdsa (nistp256) 0.0000s 0.0001s 29636.7 9640.2 384 bits ecdsa (nistp384) 0.0011s 0.0009s 887.1 1053.4 521 bits ecdsa (nistp521) 0.0026s 0.0021s 379.8 467.0 openssl speed -elapsed ecdh type op op/s 192 bits ecdh (nistp192) 0.0003s 3190.5 224 bits ecdh (nistp224) 0.0005s 2192.7 256 bits ecdh (nistp256) 0.0001s 12309.3 384 bits ecdh (nistp384) 0.0011s 892.2 521 bits ecdh (nistp521) 0.0025s 402.1 openssl speed -elapsed eddsa type sign verify sign/s verify/s 253 bits EdDSA (Ed25519) 0.0000s 0.0001s 25465.9 7878.0
我是否必须升级我的 OpenVPN 服务器至更高规格以实现更强的加密?
虽然至少有两个 CPU 核心是理想的,但根据您的 ISP 的上传速度,单个核心上的 AES128 就足够了,因为上传速度决定了没有加密的情况下可能的最大吞吐量。
是否有任何服务器配置选项可以实现更强的加密和更高的吞吐量?
调整服务器和客户端配置可提供最高的吞吐量,但这是一种反复试验的方法,需要花时间阅读 OpenVPN手册页并尝试不同的调整选项来获得尽可能高的吞吐量(调整配置例子)。
答案2
首先,您应该使用以下方法来拆分密码:
- RSA-4096 是非对称加密,需要很高的计算能力,因此它仅用于密钥协议(用于对称加密)
- AES-256 - 用于已建立通道的对称加密 - 大多数 CPU 都在此处
- SHA512 - 用于消息认证的 HMAC
您选择的参数非常强大。如果您愿意牺牲安全性和速度,那么使用 AES-128 和 SHA256 也是可以接受的。
如果你同意升级服务器规格,我建议AES-256-GCM。