
1. ssh密钥对
- ssh key的类型有四种,分别是dsa、rsa、 ecdsa、ed25519。
- 根据数学特性,这四种类型又可以分为两大类,dsa/rsa是一类,ecdsa/ed25519是一类,后者算法更先进。
- dsa因为安全问题,已不再使用了。
- ecdsa因为政治原因和技术原因,也不推荐使用。
- rsa是目前兼容性最好的,应用最广泛的key类型,在用ssh-keygen工具生成key的时候,默认使用的也是这种类型。不过在生成key时,如果指定的key size太小的话,也是有安全问题的,推荐key size是3072或更大。
- ed25519是目前最安全、加解密速度最快的key类型,由于其数学特性,它的key的长度比rsa小很多,优先推荐使用。它目前唯一的问题就是兼容性,即在旧版本的ssh工具集中可能无法使用。不过据我目前测试,还没有发现此类问题
2. ed25519 生成密钥对
ssh-keygen -t ed25519 -C "your_email@example.com" -f ed25519file
- 参数解释:
- -t: 指定使用的数字签名算法;
- -C: 注释,随便填;
- -f: 指定文件输出位置,可选默认为 ~/.ssh/
3. 验证ssh密钥对
添加公钥:
验证命令,前提条件: 已经添加了公钥
|
|
4. 总结
优先选择ed25519,否则选择rsa。
RSA算法通过使用不同的密钥进行加密和解密,实现了信息的保密性和完整性。它在实际应用中被广泛使用,但需要注意选择足够大的密钥长度以确保安全性。在安全性方面,RSA算法主要受到大整数分解问题的影响,随着量子计算技术的进步,RSA算法的安全性可能会受到威胁,因此一些新的算法如Ed25519等逐渐被引入以满足未来的安全需求。
5. RSA算法
RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年共同提出。它在加密和数字签名领域广泛使用,并且具有较高的安全性。RSA算法基于大整数分解的困难性,其安全性依赖于对两个大素数的质因数分解。下面是RSA算法的基本步骤:
- 密钥生成:
- 选择两个大素数p和q。这两个素数要足够大,以保证分解N = pq非常困难。
- 计算N = pq,N将成为公钥的一部分,也被称为"模数"。
- 计算Φ(N) = (p-1)(q-1),Φ(N)也被称为"欧拉函数"。
- 选择一个整数e,使得1 < e < Φ(N)且e与Φ(N)互质。e将成为公钥的一部分,被称为"公钥指数"。
- 计算e的乘法逆元d,使得d * e ≡ 1 (mod Φ(N))。d将成为私钥的一部分,被称为"私钥指数"。
- 加密:
- 要加密的明文消息m被转换为一个整数M,使得0 ≤ M < N。
- 加密者使用公钥 (N, e) 对整数M进行加密,计算密文C = M^e mod N。C就是加密后的密文。
- 解密:
- 接收者使用私钥 (N, d) 对密文C进行解密,计算明文消息 M = C^d mod N。M就是解密后的原始消息。
- 数字签名:
- 要对消息进行数字签名,签名者使用私钥 (N, d) 对消息进行签名。
- 签名者对消息m计算消息摘要,通常使用哈希函数,得到一个固定长度的摘要。
- 签名者使用私钥对摘要进行加密,得到签名S = Hash(m)^d mod N。
- 签名S就是数字签名,它可以被任何拥有公钥的人验证。
- 验证数字签名:
- 接收者获得签名S和公钥 (N, e)。
- 接收者对签名S使用公钥进行解密,得到签名摘要S^e mod N。
- 接收者对收到的消息m计算消息摘要,得到 Hash(m)。
- 如果签名摘要与计算的消息摘要相等,则认为签名是有效的,否则认为签名是无效的。
6. Ed25519算法
Ed25519是一种基于椭圆曲线密码学的非对称加密算法,用于数字签名。它基于Curve25519椭圆曲线和Edwards曲线形式,由Daniel J. Bernstein等人在2011年提出。Ed25519算法具有高性能和较短的密钥长度,同时对抗量子计算攻击具有较好的安全性。 下面是Ed25519算法的基本步骤:
- 密钥生成:
选择一个256位的随机数作为私钥,称为"私钥种子"。 使用哈希函数(通常是SHA-512)对私钥种子进行处理,生成一个256位的私钥。 根据私钥计算相应的公钥。公钥可以通过执行一系列计算得到,包括点倍乘等操作。 2. 签名:
要对消息进行签名,签名者使用私钥对消息进行哈希处理,通常使用SHA-512。 使用私钥对哈希值进行签名,通过执行一系列椭圆曲线操作来生成签名。 签名结果包含两个部分:32字节的R(签名的一部分)和32字节的S(签名的另一部分)。
3.验证签名:
接收者获取签名、公钥和原始消息。 使用哈希函数对原始消息进行处理,得到哈希值。 执行一系列椭圆曲线操作,使用公钥和签名来验证签名的有效性。 验证的结果是签名的有效性,可以确定消息的完整性和认证性。
- Ed25519算法具有以下特点和优势:
高性能:Ed25519算法具有较快的签名速度和验证速度,适合在资源有限的环境中使用。 较短的密钥长度:Ed25519算法使用的密钥长度为256位,较短,减少了密钥管理的复杂性和存储需求。 抗量子计算攻击:Ed25519算法基于椭圆曲线密码学,相对于RSA等算法,在抵抗量子计算攻击方面更具优势。 简化的操作步骤:相比其他椭圆曲线算法(比如:ECDSA非对称算法),Ed25519算法的操作步骤相对简化,提高了实现的安全性和可靠性。 安全性和可靠性:Ed25519算法经过广泛的安全审查和分析,被认为是一种安全可靠的加密算法。 综上所述,Ed25519算法是一种高性能、安全可靠且抗量子计算攻击的非对称加密算法,特别适用于数字签名场景。它的简洁性和高效性使其在实际应用中得到了广泛的采用。
7. 参考连接
