乐闻世界logo
搜索文章和话题

SSH 加密算法有哪些类型和性能特点?

2月19日 19:29

SSH 加密算法是保障 SSH 安全性的核心技术,用于保护数据传输的机密性和完整性。SSH 使用多种加密算法来满足不同的安全需求。

加密算法类型

对称加密算法

对称加密使用相同的密钥进行加密和解密,适用于大量数据的加密传输。

AES (Advanced Encryption Standard)

bash
# AES-GCM 模式(推荐) aes256-gcm@openssh.com aes128-gcm@openssh.com # AES-CTR 模式 aes256-ctr aes192-ctr aes128-ctr

特点

  • 高性能,硬件加速支持
  • 128/256 位密钥长度
  • GCM 模式提供认证加密
  • 被广泛采用和验证

ChaCha20-Poly1305

bash
chacha20-poly1305@openssh.com

特点

  • 在没有硬件加速的设备上性能优异
  • 256 位密钥
  • 内置认证加密
  • 适合移动设备和 ARM 架构

3DES (Triple DES)

bash
3des-cbc # 已弃用,不推荐使用

特点

  • 较慢,安全性较低
  • 仅用于向后兼容
  • 不建议在生产环境使用

非对称加密算法

非对称加密使用公钥和私钥对,用于身份验证和密钥交换。

RSA

bash
ssh-rsa rsa-sha2-256 rsa-sha2-512

特点

  • 广泛支持
  • 密钥长度:2048/4096 位
  • 计算速度较慢
  • 适合签名和密钥交换

ECDSA (Elliptic Curve DSA)

bash
ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521

特点

  • 更小的密钥尺寸
  • 更快的计算速度
  • 基于椭圆曲线
  • NIST 标准曲线

Ed25519

bash
ssh-ed25519

特点

  • 最新的签名算法
  • 256 位密钥
  • 极快的速度
  • 高安全性
  • 推荐使用

加密模式

CBC (Cipher Block Chaining)

bash
aes256-cbc aes128-cbc

特点

  • 传统的加密模式
  • 需要填充
  • 可能受到填充攻击
  • 不推荐用于新系统

CTR (Counter Mode)

bash
aes256-ctr aes128-ctr

特点

  • 流密码模式
  • 无需填充
  • 并行加密
  • 较好的性能

GCM (Galois/Counter Mode)

bash
aes256-gcm@openssh.com aes128-gcm@openssh.com

特点

  • 认证加密模式
  • 同时提供加密和完整性
  • 高性能
  • 推荐使用

配置加密算法

服务器配置

bash
# /etc/ssh/sshd_config # 推荐的加密算法 Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr # 禁用不安全的算法 Ciphers -3des-cbc,-aes128-cbc,-aes192-cbc,-aes256-cbc

客户端配置

bash
# ~/.ssh/config # 指定加密算法 Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com # 测试连接 ssh -c aes256-gcm@openssh.com user@hostname

性能对比

算法加密速度解密速度安全性硬件加速
AES-256-GCM
ChaCha20-Poly1305
AES-256-CTR
AES-256-CBC
3DES

安全最佳实践

1. 使用现代算法

bash
# 优先使用 GCM 模式 Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com

2. 禁用弱算法

bash
# 禁用 CBC 模式和 3DES Ciphers -aes128-cbc,-aes192-cbc,-aes256-cbc,-3des-cbc

3. 定期更新

bash
# 检查支持的算法 ssh -Q cipher # 测试算法性能 ssh -c aes256-gcm@openssh.com -o "Compression yes" user@hostname

4. 监控和审计

bash
# 查看连接使用的加密算法 ssh -v user@hostname 2>&1 | grep "cipher" # 使用 nmap 检查服务器算法 nmap --script ssh2-enum-algos -p 22 hostname

常见问题

Q: AES-GCM 和 ChaCha20-Poly1305 如何选择?

A: AES-GCM 在有硬件加速的设备上性能更好,ChaCha20-Poly1305 在没有硬件加速的设备上更优。

Q: 为什么禁用 CBC 模式?

A: CBC 模式容易受到填充预言机攻击(Padding Oracle Attack)。

Q: 如何检查服务器支持的加密算法?

A: 使用 nmap --script ssh2-enum-algos -p 22 hostnamessh -Q cipher

Q: Ed25519 比 RSA 好在哪里?

A: Ed25519 提供更好的性能、更小的密钥尺寸和更强的安全性。

SSH 加密算法的选择直接影响系统的安全性和性能,合理配置是保障 SSH 安全的重要环节。

标签:SSH