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

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

背景

上篇 blog
【Ubuntu】【远程开发】内网穿透:环境准备

分析了 ECS 云服务器和轻量应用服务器的区别,通过对比,后面将用轻量服务器作为基础搭建内网穿透的跳板

内网穿透

首先,第一步,内网设备要主动连接 云服务器,建立 SSH 反向隧道,在建立 SSH 反向隧道之前,先在家庭服务器上生成对应的公私钥,然后上传公钥到云服务器

打开家庭服务器终端,运行以下命令:

bash 复制代码
ssh-keygen -t ed25519 -C "your_email@example.com"

这里推荐用 ed25519 密钥算法,更安全高效

终端输入 man ssh-keygen,输入 \-t 查找,可以看到 ssh-keygen 命令的选项说明,其中 -t 选项描述如下

可以看到,-t 选项可以指定要生成的 SSH 密钥类型,支持的密钥类型包括

  • dsa:全称 Digital Signature Algorithm‌ 数字签名算法,由 NIST(National Institute of Standards and Technology)美国国家标准与技术研究院在 1991 年提出,基于离散对数问题 生成密钥,属于旧的 DSA 算法,已不安全,不推荐使用
  • ecdsa:全称 Elliptic Curve Digital Signature Algorithm‌,基于椭圆曲线 的数字签名算法,比 dsa 安全,但不如 ed25519
  • ecdsa-skecdsa 的扩展版本,这里 -sk 的全称 Security Key 安全密钥,私钥不在电脑上,而是存储在专门的物理硬件设备中 ,并且私钥永远无法被导出,永远留在硬件,不会被复制泄露,极大提升安全性,适合对安全要求极高的场景
  • ed25519:全称 Edwards-curve Digital Signature Algorithm over Curve25519 ,其中 Curve25519 是一条精妙的椭圆曲线,计算高效,可以避免某些数学攻击,而 Curve25519Edwards form 爱德华兹形式,可以让签名更安全,更快,是现代高效,安全的椭圆曲线算法,强烈推荐用这个
  • ed25519-sk:和上面 ecdsa-sk 一样的性质, 是 ed25519 的扩展形式,将私钥存在专门的物理硬件中
  • rsa:全称 Rivest--Shamir--Adleman(三位密码学家名字) ,在 1977 年提出,是第一个既能用于加密又能用于数字签名的公钥算法基于大整数分解难题生成密钥 ,作为传统的 RSA 算法,兼容性最好,但需足够长的密钥,比如 4096 位

这里额外再补充下 rsa 的安全性,rsa 算法的安全性和其生成密钥长度有关,其评估是基于当前和可预见未来的算力(包括经典计算机和量子计算机的发展趋势,结合超级计算机,GPU 集群,算法优化等) ,估算出破解所需的时间和资源成本,从而判断它在多长时间内是实际不可行破解的,评估机构(比如 NIST)会留足安全余量,宁可保守,也不会冒险

  • 1024 位密钥长度:当前已被破解,别用 ,安全强度等效于 AES-80已过时
  • 2048 位密钥长度:目前勉强可用,但 NIST 建议 2030 年前淘汰 ,安全强度等效于 AES-112
  • 3072 位密钥长度:安全期到 2031 年后,安全强度等效于 AES-128
  • 4096 位密钥长度:推荐,可以长期使用 ,安全强度等效于 AES-152

AES-128 被认为是安全的,所以 RSA-3072 作为传统算法,是对标现代安全标准的底线 ,而 RSA-4096 在经典计算机时代,几乎可以认为是终身安全的 ,除非数学上有革命性突破,长期来看,更现实威胁是量子计算,因此 NIST 正在推动后量子密码学标准 PQC(Post-Quantum Cryptography)


OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog

相关推荐
9ilk2 小时前
【基于one-loop-per-thread的高并发服务器】--- 自主实现HttpServer
linux·运维·服务器·c++·笔记·后端
HMS Core2 小时前
【FAQ】HarmonyOS SDK 闭源开放能力 — Push Kit
linux·python·华为·harmonyos
LFly_ice2 小时前
Docker核心概念与实战指南
运维·docker·容器
Once_day2 小时前
Linux之rsyslog(4)属性配置
linux·服务器
waving-black2 小时前
Linux中自定义服务开机自启nginx
linux·服务器·nginx
Lenyiin2 小时前
《 Linux 修炼全景指南: 六 》软件包管理器
linux·运维·服务器
陌路202 小时前
Linux32 网络编程TCP通信(缓冲区问题)
服务器·网络·tcp/ip
NiKo_W2 小时前
Linux 重定向与Cookie
linux·运维·服务器·前端·网络·线程·协议
ytttr8732 小时前
Rocky Linux 8.9配置Kubernetes集群详解,适用于CentOS环境
linux·kubernetes·centos