1
wonderfulcxm 8 小时 37 分钟前 via iPhone 你观察得很仔细,这是个好问题👍
|
2
jhytxy 8 小时 32 分钟前
安全性好像并不接近
但是你的也足够安全,比如你的要破 100 年,私钥的得破 1000 年 你找 ai 问问密码学的问题吧 password 和 key 中文都叫密码,但是意义不同 |
3
laikicka 8 小时 30 分钟前
你不懂 SSH 也不懂密码学 是这样的
|
4
zooo 8 小时 29 分钟前
能在 v 站看到这个帖子我也是开了眼了
|
5
yinmin 8 小时 26 分钟前
私钥文件是可以加密码保护的
|
6
zhy0216 8 小时 25 分钟前 via Android
好处是本地一个私钥 对多服务器同一个公钥
万一某个服务器被黑 本地的私钥不用换 |
7
adoal 8 小时 23 分钟前
root 帐户用了超级复杂口令
你自己的登录帐户用了超级复杂口令 然后你同事那个能 sudo 的帐户用了 admin123 你配置了口令复杂度的 pam 策略 然后被所有其它同事一致骂 |
8
xiangyuecn 8 小时 16 分钟前
私钥的“私”,意思是只有你有这个密钥,不会发送出去
服务器用你的公钥加密的数据只有你能解密,就算是明文传输,也是安全的,任何人截获数据也没用 解密不了,中间人也不好使 |
9
SAFEluren 8 小时 14 分钟前
为啥会觉得 16 位混合密码能打得过 rsa or ed25519 呢?那密码就不能泄漏了?
另外一个人不止可以有一个私钥的,你要是想,当然可以给不同等级的服务器用不同的私钥 |
10
totoro625 8 小时 10 分钟前 安全性是接近的 ✓
但是时间线拉长,还是有点差异的 RSA (4096 位)> Ed25519 > RSA (2048 位)>随机密码 能理解你不喜欢使用公钥,但是面向所有人的教程:配置公钥,就完事了 只需要存储一个小文件就 ok ,不需要存储一个特别的“16 位以上大小写英文数字符号混合” 一个是自己都会记错 二是会顺手发给微信 三是人会撒谎 四是人会犯懒 |
11
wonderfulcxm 8 小时 6 分钟前 via iPhone
简单地说,Ed25519 密钥拥有 256 bits 的安全性。在数学层面上,破解密钥的难度比破解 16 位密码高出天文数字级。
|
12
wonderfulcxm 7 小时 54 分钟前 via iPhone 主要黑客也要衡量成本,破解难度高就知难而退了,而且公钥挑战失败的错误信息非常明显,不如去祸害别的密码登录的,btw ,fail2ban 这种防不了分布式攻击。如果有几万个 ip ,每个 IP 试一次,也很难将其封锁。
|
13
loading 7 小时 51 分钟前 via Android
建议先了解一下 PGP ,然后在了解一下公钥交换后,最后看一下你自己提的问题。
|
14
NonResistance 7 小时 49 分钟前 via iPhone
额
|
15
mercury233 7 小时 49 分钟前
多个复杂密码容易变成防自己,如果在电脑上或者密码管理器中保存密码,泄露风险不比泄露私钥低多少
|
16
nomagick 7 小时 45 分钟前
关键词 Diffie–Hellman key exchange
|
17
lscho 7 小时 42 分钟前 via Android
建议粗略了解一下密码学。。。。在数学层面,安全性是天文数字的差距。
|
19
phrack 7 小时 32 分钟前 密码登陆的话是密码要发送到 ssh 服务器的,不会像常见的 web 服务那样发送 hash ,可以用 pam 模块拦截记录
这个知识点估计只有极少数人知道,一般用来后入侵横移 随机密码你总是要复制粘贴的,剪贴板的内容很容易不小心粘贴到错误的地方,监控剪贴板也比较容易 |
20
Admstor OP @wonderfulcxm 你这个分布式攻击确实,不过 16 位的混合密码,也存在 62 的 16 次方,这个数字也已经是天文数字了,我算了用 10W 设备每秒 100 次尝试,也需要 75 万年,这放到现实其实就是足够安全了吧,更何况这种尝试,我怕是服务器先被流量撑爆
|
21
restkhz 7 小时 24 分钟前
主要是密码管理问题
比如,服务器有 root 账户,你们几个人一起维护用同一个密码,一旦有人离职这密码就要换掉。但是你现在只需要删掉他公钥就行。就不要说还有那些能 sudo 账户可能还有弱密码的问题...反正直接禁用密码用公钥就没这些事了。 另外你描述的 16 位密码大概是等效 log2(94)*16 ,105bit 。还是不够长。你要是有 20 位就能做到 128bit 了 XD 问题是公钥认证模式中几乎不可能做暴力破解。登陆时你要先发你的公钥,你要不先偷到公钥,要不先猜那个巨长的公钥。公钥先猜对了,服务器这时候要你签名之前步骤里的信息,你这才有机会开始猜私钥... 用密码服务器多了也要用密码管理器...不如用一个公钥私钥对直接解决大部分密码管理问题了。 另外私钥也可以上密码的。 |
22
artiga033 7 小时 21 分钟前 via Android
考虑实际的话,不管哪种方式要穷举完所有可能先耗尽的可能是网络资源...
但是有一点是,脑子正常的攻击者遇到没开密码验证的服务器一般就直接放弃尝试了,否则可能会一直试 |
23
Admstor OP @restkhz 你提到的多用户情况确实存在,但这似乎也仅仅是便利性上而非安全性上,更换密码一样安全不是吗? sudo 同理,这已经超过本身讨论,16 位密码是不是足够安全这个范围。
不论 105bit 还是 128bit 甚至 4096bit ,现实暴力破解的预期时间都可以说是遥遥无期 |
24
Admstor OP @artiga033 一直尝试绝大部分情况下也并不会导致网络阻塞,毕竟想阻塞网络不会用尝试 SSH 密码这种攻击方式。还是回到密码本身是否足够安全这样的范围里讨论吧
|
25
wonderfulcxm 7 小时 15 分钟前 via iPhone
@Admstor 如果从负载的角度看,更应该关闭密码验证只启用密钥,每次密码验证服务器要进行一次复杂的哈希运算,这些还故意设计得很慢,需要消耗大量内存,而公钥验证速度极快,对内存要求也很低。
|
26
01802 7 小时 0 分钟前 via Android
和密码是两种东西啊,记得三十年前老师专门讲公钥私钥在邮件加密里的作用。
|
27
BenHunDun 6 小时 55 分钟前
@Admstor 公私钥本质就不是说类似做密码验证. 可能先了解一下对称加密, 非对称加密.
像是你一直提到的是密码比对, 但是如果在传输不可信的时候. 他可能就会出问题, 类似中间人攻击. (叠个甲. 对安全这块个人也不是专业的) 上面的这些内容可以了解一下. |
30
BenHunDun 6 小时 51 分钟前
然后泄露凭证, 密码, 公私钥这类, 应该都不属于密码学和网络协议能够解决的范畴
|
31
adoal 6 小时 46 分钟前
算了,还是放弃吧、OP 说的对 o(╥﹏╥)o
|
32
aarontian 6 小时 46 分钟前
私钥的永远不会离开你的电脑,由此可以避免中间人攻击,重放攻击,撞库攻击等(我觉得这是最主要优势)。密码简单的容易破解,复杂的你需要备份/复制粘贴,再敲键盘,每一步都会增加危险。
私钥没有任何语义特征,密码通常有(如果你想记住),这是天然的不安全性。 特殊情况下你的服务器被侵入,如果是密码加密,攻击者可以对 hash 进行离线脱机爆破,这个过程只需要简单的位运算—— 一块 RTX 4090 跑 SHA-256 的速度大约是 100 GH/s (10^{11} 次/秒)。而破解 ed25519 尝试一次的运算成本是哈希运算的数万倍。 公共服务器的登陆管理就不说了。 如果考虑未来的技术(量子计算),这个差距会发生反转: 破解密码: 使用 Grover 算法,复杂度从 2^n 变为 \sqrt{2^n}。即 2^{128} 变成 2^{64}。虽然变弱了,但 2^{64} 依然是一个非常高的门槛。 破解密钥: 使用 Shor 算法,Ed25519 这种非对称加密会被彻底攻破(复杂度变为多项式级 O(n^3))。 AI 回答,供参考 |
33
ronman 6 小时 39 分钟前
现在这个背景下,这种话题和 ai 讨论,没必要发帖
|
34
Overfill3641 6 小时 34 分钟前 开密码,一堆 IP 在那尝试破解,你越 BAN 对方越起劲。
用密钥,对方尝试下就不鸟你了。 |
36
liuzimin 6 小时 12 分钟前 via Android
为啥没人提 2FA ?我给 ssh 加了个 OTP 的 2FA ,感觉很安心。而且也带多次输错自动 BAN 一段时间的功能。
|
37
psllll 5 小时 59 分钟前
记性差的话开了 auto-ban 基本上都是挡自己,自己还得去服务商面板那里解除
|
38
GoldenSheep 4 小时 56 分钟前
我用 ssh-agent,私钥从不落盘
|
39
restkhz 4 小时 46 分钟前
@Admstor OK, 你想谈安全。
你要从抵抗暴力破解来说,你这种情况完全足够了。非常安全。 但是! 从设计思路上来说,“口令”这种东西就是要给对方进行验证的。你有 secret,我也有,我要给你看 secret 来证明我有。两端都一定会要存有 secret ,并且在验证的时候这个 secret 一定会被传输。 公钥认证的思路是我们 secret 从不离开自己的设备。只要做一次 challenge-response 证明你有 secret 就可以. 我们只是用 secret 签名,secret 不会被传输,甚至服务器上都不需要存有 secret 存在. 你觉得哪种设计更安全?以后能暴露的攻击面更少? 你的对手会的不只是暴力破解。secret 出现的地方越多,出问题的可能性越大。我理解你讲的比如如果我密码足够强就算黑客读到/etc/shadow 也破不出来,和黑客拿到公钥没用同理。然而一旦出现 secret 明文本身呢?楼上也有说到 PAM 模块直接拦截读取明文的,这就是问题。但是我们或许应该在一开始就直接掐死这种可能。只要 secret 压根不出现在服务器上,不被传输,就没这些事情了。 我们抛开上面的理论层面的东西, 在现实世界中,合理的密码的确足够强。我自己也有不少设备和 VM 都是用密码的。小规模使用其实不会有任何问题,这也是为什么他至今都存在。 问题就是它经常被不合理使用,而且随着规模的扩大它只会越来越不方便。所以到一定规模的时候,我认为,使用公钥的最大原因就是:方便管理 安全这种东西你永远不能指望用户。用户是可以用 123456 作为密码的,是可以为了看毛片随手运行 exe 并且卸载杀毒软件的。更不要说定期更换密码,16 位大小写数字符号组合。所以不如直接逼着用户用更复杂的一套算了。 所以回到问题本身,我觉得公钥的确是更安全的,从理论和应用上都是。我希望我说清楚了。 顺便我在某个实验室做运维,管理 100+的 OS ,你猜猜我们用什么做 SSH 验证?密码?公钥? 答案:都不是,我们用 kerberos kerberos 就更安全吗?没有。单纯就是管理方便。 安全不安全,你得带着威胁模型再讨论。在你提出的问题中,如果仅考虑暴力等等的,你这的确安全。 但是考虑防御纵深,那就不如公钥那么安全。就这样。管理也没那么方便。 |
40
ryd994 2 小时 10 分钟前 via Android
“只计算大小写英文+数字,组合就有 62 的 16 次方”
我不信你能记住任意 16 位纯随机密码。人能记住的信息量是有限的。你的 16 位密码大概率是包含了方便记忆的单词或者数字(比如日期),这些都会被优先穷举。 记不住怎么办?大部分人都会偷偷用笔记下来或者记在手机里,这就非常不安全。这一点对于多人访问的项目来说非常重要,因为你不能指望所有人都和你一样记性好。 ssh 密钥文件存在电脑里的话,那和 ssh 密码写下来一样不安全。但是 ssh 密钥还可以放到硬件密钥里,无法读取,只能用于握手。这就安全了百倍。 其次,密钥认证可以防止蜜罐。如果你有一台服务器被植入病毒。病毒完全可以修改 ssh 登入程序,偷偷记录密码,然后到你其他服务器上使用。但是密钥认证全程不传输密钥本身。密钥只是用来签名握手数据。 总之,密钥认证不仅更安全,还更方便。我反正是不可能背 64 位纯随机密码的。你爱背你背。 |
41
NonResistance 1 小时 42 分钟前 via iPhone
op 认为 16<4096
|
42
allplay 55 分钟前 via Android
前面有人提到了密钥交换过程,怕楼主还没明白,再解释一下:
比如服务器是一个 http 协议的网页,你在上面输密码,密码明文传输过去,那这整个过程所有人都能看见。 为了保护这个输密码的过程,以及所有的数据传输,现在都用 HTTPS ,这个 HTTPS 本来就是公钥私钥体体制的呀。 这道理明白吧。 不仅登录要认证,传输内容也要加密。 ssh 同理,是先建立公钥交换的加密隧道,然后才给你输入密码的机会。你第一次登录服务器的时候,在输入密码之前,是不是有个问你是否信任服务器指纹的选项? yes no ?这就是服务器的公钥! 所以公钥机制你是回避不了的。 |
43
GeruzoniAnsasu 50 分钟前 密码:你先告诉我秘密以便证明身份
非对称加密体系: 我**不需要告知任何秘密**就能证明我的身份 |
44
allplay 47 分钟前 via Android
我理解公钥私钥只是一个更加复杂的密码
- 你这个理解从根本上是错误的。 公钥私钥的本意是解决加密通信密钥传输问题的。你登录服务器时,如果没有公钥首先建立加密通道(用户无感,所以你不知道)的话,那么你输入密码这个过程,本身就立马暴露了。 |
45
allplay 39 分钟前 via Android
如果没有公钥,你输入的密码必须明文传输给服务器,那么这时候,从你家出去,在几百公里的线路上,经过 n 个交换机路由器,任何人都可以大摇大摆地窃听你传的那一段你以为很强的!多位的明文是什么。可笑不。
从历史上,在公钥体系建立起起之前,商业信函的很大一部分是在分发密钥,纸质打印的密码。这样才能安全地(彻底安全吗?)把密码告诉对方。 |
46
szdosar 8 分钟前 via iPhone
密码难不难猜,只是是否 [安全] 的衡量标准其中之一。同时还有管理便捷和易实现性,也是很重要的安全考量指标之一。每换一个密码,成本太高,要公告所有应该知道密码的人
|
47
aulayli 1 分钟前 via Android
那我问你,你用复杂的长密码你记的住吗?如果记不住你是不是要把密码保存哪里?复杂的长密码你能保证每次都手动输入不用复制粘贴吗?密码验证的原理还需要把密码发送到服务器进行验证,这些环节是不是增加了很多泄露的风险。
使用密钥就没有这些烦恼了,密钥有公钥和私钥,只有公钥需要上传到服务器,就算你把公钥公开到全网也没关系,因为私钥文件永远存放在你本地,密钥也不会上传到远程服务器,只是用来加密消息,你的公钥加密的信息只有你的私钥能解开,你的私钥加密的信息也只有你的公钥能验证是否来自于你本人,跟密码相比这样是不是更方便更安全。 |