26、【Ubuntu】【远程开发】内网穿透:密钥算法介绍(二)

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【远程开发】内网穿透:密钥算法介绍(一)

分析了 SSH 中支持的一些密钥算法类型,下面继续

内网穿透

上篇 blog 提到 RSA-3072 作为传统算法,是对标现代安全标准的底线 ,在 ssh-keygen 命令中关于设置密钥长度的选项 -b 的描述如下

可以看到,这里 -b 选项指定要生成的密钥长度(以 bit 为单位),但要注意,这个参数对不同算法的作用完全不同

  • rsa:最小长度 1024 位(不安全,别用 ),默认长度 3072 位(安全底线 ),比如如果要指定 rsa 算法的话,可以
bash 复制代码
ssh-keygen -t rsa -b 4096   # 显式指定 4096 位 RSA
ssh-keygen -t rsa           # 默认生成 3072 位
  • dsa:必须正好是 1024 位 ,这是美国联邦政府发布的密码学老标准 FIPS Federal Information Processing Standards Publication 186-2 中强制规定的,该标准由 NIST 制定,是 FIPS 186 的第二次修订版本 ,即使写 -b 2048,OpenSSH 也会忽略或报错,因为传统 dsa 不支持更长,这里再次强调,dsa 已过时且不安全,不要使用
  • ecdsa:只能选 256(默认 ),384(更安全),521(注意是 521,不是 512,最安全,但性能略低 )三个数字之一,如果写别的数字,比如是 -b 512 或者 -b 300,命令会直接失败 ,还有,ecdsa-256 指的是椭圆曲线的域大小,不是传统意义上的密钥比特数 ,效果等效于 ASE-128 对称加密强度
  • ecdsa-sk,ed25519,ed25519-sk:密钥长度固定 ,一般是 256 位,即使写别的数字,比如 -b 4096,会被完全忽略

这里再额外说下 FIPS 186 的历史版本演进

  • FIPS 186:1994 年首次引入 dsa
  • FIPS 186-1:1998 年小修小补
  • FIPS 186-2:2000 年固定 dsa 为 1024/160 位(大素数 p 为 1024 位,小素数 q 为 160 位),成为广泛引用的版本,可以说是 dsa 算法的黄金时代
  • FIPS 186-3:2009 年新增 rsa 和 ecdsa 支持,允许更长密钥,比如 dsa-2048/224,dsa-3072/256
  • FIPS 186-4:2013 年进一步细化安全要求,推荐弃用 dsa-1024/160
  • FIPS 186-5:2023 年移除 dsa 完全不再推荐 ,因为 dsa 极度依赖一次性随机数,如果随机数被被重复使用,哪怕只一次,攻击者也可以通过两个签名直接解出私钥 ,此外,相比更好的现代方案 ed25519,dsa 算法性能差,实现复杂,容易出错 ,实际生态也逐渐抛弃 dsa

可以看到, dsa 已经成为历史产物,在特定时期,完成了其历史使命

下面再提下 -t 选项的另一个作用

除了生成密钥,-t 选项还可以用在 RSA 证书颁发机构(CA)签署 SSH 证书时 ,指定签名算法类型,对于 RSA CA,有三种签名方式:

  • ssh-rsa:使用 SHA-1 哈希(已被认为不安全,不推荐)
  • rsa-sha2-256:使用 SHA-256(安全)
  • rsa-sha2-512:使用 SHA-512(更安全,默认值)

这种用法只在搭建 SSH 证书认证体系 (比如企业内部用 CA 统一签发 SSH 证书)时才需要指定 RSA 签名哈希算法 ,比如 -t rsa-sha2-512,普通用户一般用不到,普通用户一般就是拿来生成密钥 ,-t 选项指定密钥算法 ,比如 -t ed25519 或 -t rsa,用途一个是签名,一个是生成密钥


OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Ubuntu】【远程开发】内网穿透:CA 签名

相关推荐
4SAPI4 分钟前
多模型API调用实战:一个项目接入GPT、Claude和DeepSeek
linux·人工智能·gpt·php
电梯界知识分子12 分钟前
浙江台州六层拆迁自建房:建房前期土建交底,规避薄墙预制板误区,预留轮椅通行电梯
运维·服务器·网络·安全·家用电梯
Escalating_xu13 分钟前
【Linux 网络编程】UDP Socket 编程(下):回调封装、网络字典与多线程聊天室
linux·网络·udp
看-是灰机13 分钟前
Milvus向量数据库
linux·运维·人工智能·机器学习·milvus
weixin_4462608515 分钟前
PromptAgent‑Eval:面向提示驱动智能体的细粒度自动化评测框架
运维·自动化
下辈子不要当码农16 分钟前
Linux驱动学习(1)
linux·运维·学习
HelloWorld工程师16 分钟前
不改动任何历史配置,也能让 SSL 证书自动续期
linux·服务器·网络协议·https·ssl
啦啦啦啦啦zzzz19 分钟前
分布式存储----缓存组
linux·服务器·c++·分布式·缓存
华允物联-HUAIOT37 分钟前
串口服务器支持 WiFi 吗?有线与无线串口联网科普
运维·服务器·单片机
水饺编程1 小时前
第2章:Linux 基础,whoami 命令
linux·c语言·汇编