插件窝 干货文章 SFTP加密方式有哪些

SFTP加密方式有哪些

算法 加密 密钥 OpenSSH 40    来源:    2025-05-07

SFTP(SSH File Transfer Protocol)作为基于SSH的安全文件传输协议,其加密能力依赖于SSH的加密体系。以下是SFTP支持的加密方式分类及详细说明:


1. 加密算法类型

(1)对称加密(用于数据传输加密)

  • 作用:加密实际传输的文件内容和指令。
  • 常见算法
    • AES(Advanced Encryption Standard)
    • 支持128/192/256位密钥(如aes128-ctr, aes256-cbc)。
    • 性能与安全性平衡,最广泛使用。
    • ChaCha20
    • 现代流加密算法,适合移动设备(需OpenSSH 6.5+)。
    • 3DES(Triple DES)
    • 较旧(3des-cbc),安全性弱于AES,不推荐。
    • Blowfish/CAST128
    • 旧算法(如blowfish-cbc),存在漏洞,应禁用。

(2)非对称加密(用于身份认证)

  • 作用:密钥交换和服务器/客户端身份验证。
  • 常见算法
    • RSA
    • 传统算法,建议密钥长度≥2048位。
    • ECDSA(椭圆曲线)
    • 更高效(如ecdsa-sha2-nistp256)。
    • Ed25519
    • 基于EdDSA,抗侧信道攻击,OpenSSH默认推荐。

(3)消息认证码(MAC,完整性校验)

  • 作用:防止数据篡改。
  • 常见算法
    • HMAC-SHA2(如hmac-sha2-256
    • 主流选择,安全性高。
    • UMAC-128
    • 高性能,但较少支持。
    • 避免:SHA1/MD5(已不安全)。

(4)密钥交换算法(KEX)

  • 作用:安全协商会话密钥。
  • 现代算法
    • ECDH(如ecdh-sha2-nistp384
    • 基于椭圆曲线,高效。
    • DH Group 14/16/18(Diffie-Hellman)
    • 建议使用diffie-hellman-group18-sha512(8192位)。
    • 避免:Group1/5(已破解)。

2. 如何查看/配置加密方式?

(1)查看支持的算法

# OpenSSH客户端支持的算法列表
ssh -Q cipher       # 对称加密
ssh -Q kex         # 密钥交换
ssh -Q mac         # 完整性校验
ssh -Q key         # 密钥类型

(2)服务器配置(sshd_config

# 示例:限制为高强度算法(OpenSSH 8.2+)
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
KexAlgorithms ecdh-sha2-nistp521,diffie-hellman-group18-sha512
MACs hmac-sha2-512-etm@openssh.com
HostKeyAlgorithms ssh-ed25519,ecdsa-sha2-nistp384

(3)客户端指定算法

sftp -oCiphers=aes256-ctr -oKexAlgorithms=ecdh-sha2-nistp256 user@host

3. 安全建议

  1. 优先选择现代算法
    • 对称加密:AES-GCM/ChaCha20
    • 密钥交换:ECDH或DH Group ≥16
    • 主机密钥:Ed25519/ECDSA
  2. 禁用弱算法
    • 如CBC模式(aes128-cbc)、SHA1、MD5、DES。
  3. 定期更新
    • 关注SSH协议漏洞(如Terrapin攻击),及时升级OpenSSH。

4. 常见问题

  • Q:SFTP是否支持FIPS 140-2合规加密?
    • 是,可使用FIPS验证的算法(如AES256-CBC+HMAC-SHA2)。
  • Q:Windows SFTP客户端如何配置?
    • WinSCP/FileZilla可在高级设置中选择算法。

通过合理配置加密算法,可确保SFTP传输的机密性、完整性和身份验证安全性。实际选择需权衡安全性与兼容性(如旧设备支持)。