SSH Key加密类型选择

date
May 28, 2024
slug
ssh-keygen-crypto-method
status
Published
tags
Tech
Devops
summary
加密类型有四种,分别是dsa、rsa、 ecdsa、ed25519,RSA兼容性最好,而ed25519安全性和性能最好
type
Post

背景

今天用Mac生成ssh key的时候发现生成出来的key默认加密方式变成了Ed25519这种新的格式,随即了解了一下这个加密方式与RSA有什么区别。
以往我们这样生成密钥,生成出的公密以 ssh-rsa 开始:
命令执行完之后会在当前用户目录下生成一份私钥和公钥 ~/.ssh/id_rsa和~/.ssh/id_rsa.pub
目前市面上常见的加密算法有RSA、DSA、ECDSA 和 Ed25519 这四种,根据数学特性它们可以被分为两大类, RSA和DSA是一类,rcdsa和ed25519是另外一类。

DSA 以及 RSA

在这之前,我只用过这两个较早的加密算法, 这两种算法都是对两个大质数之积进行分解的实际困难
从原理上来讲:
  • RSA基于大数因子分解问题,是一种广泛使用的非对称加密算法,它的安全性取决于离散的对数问题,所以其密钥长度需相对较长才能保证较高的安全性,但是在量子计算攻击面前相对来说还是比较脆弱, 不过与DSA相比,RSA的签名验证速度更快,但是生成速度较慢。
  • DSA基于离散对数问题,是一种数字签名算法,它的安全性取决于离散的对数问题。
由于已发现的漏洞带来安全问题,OpenSSH 7.0废弃并禁用了对 DSA 密钥的支持,因此密码体制的选择范围就限定在了 RSA 或两种 ECC 之一当中。

ECDSA 以及 Ed25519

Ed25519是目前最安全、加解密速度最快的key类型,由于其数学特性,它的key的长度比RSA小很多,优先推荐使用。它目前唯一的问题就是可能有兼容性问题。
  • Ed25519 公钥算法的性能是RSA的数十倍并且安全性还不低于 RSA 2048 。
  • "25519" 的来源是 Curve25519 曲线中的素数的位数
ECDSA(椭圆曲线数字签名算法)是DSA(数字签名算法)的椭圆曲线实现。椭圆曲线密码术能够以较小的密钥提供与RSA相对相同的安全级别。它还具有DSA对不良RNG敏感的缺点。
  • 不过 ECDSA 因为政治原因和技术原因都不推荐使用
 
那我们应该怎么使用新的Ed25519算法呢?使用下面的命令开始吧

© Devpan 2023 - 2024