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

相关推荐
wdfk_prog16 小时前
[Linux]学习笔记系列 -- hashtable
linux·笔记·学习
每日出拳老爷子17 小时前
【远程协助】内网 IT 运维远程协助系统的最小可用架构
运维·服务器·远程工作·流媒体·视音频
weixin_4624462317 小时前
使用 Puppeteer 设置 Cookies 并实现自动化分页操作:前端实战教程
运维·前端·自动化
oMcLin17 小时前
如何在 Ubuntu 22.10 上通过 Kubernetes 和 Helm 管理微服务应用,简化跨平台电商平台的自动化部署?
ubuntu·微服务·kubernetes
CheungChunChiu17 小时前
Linux 内核动态打印机制详解
android·linux·服务器·前端·ubuntu
oMcLin18 小时前
如何在Ubuntu 20.04上配置并优化容器化的SaaS应用平台,实现弹性伸缩与跨区域分布?
ubuntu·sass
BlueBirdssh18 小时前
linux 内核通过 dts 设备树 配置pcie 控制器 各种参数和中断等, 那freeRTOS 是通过直接设置PCIe寄存器吗
linux
小目标一个亿19 小时前
Windows平台Nginx配置web账号密码验证
linux·前端·nginx
实战项目19 小时前
软件测试自动化框架的设计与实现
运维·自动化
Aotman_19 小时前
Element-UI Message Box弹窗 使用$confirm方法自定义模版内容,修改默认样式
linux·运维·前端