47 条回复  ·  4947 次点击
BenHunDun 初学 昨天 23:06
然后泄露凭证, 密码, 公私钥这类, 应该都不属于密码学和网络协议能够解决的范畴
adoal 小成 昨天 23:11
算了,还是放弃吧、OP 说的对 o(╥﹏╥)o
aarontian 初学 昨天 23:11
私钥的永远不会离开你的电脑,由此可以避免中间人攻击,重放攻击,撞库攻击等(我觉得这是最主要优势)。密码简单的容易破解,复杂的你需要备份/复制粘贴,再敲键盘,每一步都会增加危险。 私钥没有任何语义特征,密码通常有(如果你想记住),这是天然的不安全性。 特殊情况下你的服务器被侵入,如果是密码加密,攻击者可以对 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 回答,供参考
ronman 小成 昨天 23:18
现在这个背景下,这种话题和 ai 讨论,没必要发帖
Overfill3641 初学 昨天 23:23
开密码,一堆 IP 在那尝试破解,你越 BAN 对方越起劲。 用密钥,对方尝试下就不鸟你了。
moudy 初学 昨天 23:40
@Admstor 信息安全是一个体系,不光是密码复杂度这一项指标。密钥管理,算法,日常安全更新频率,加密流程都会影响整体安全性。
liuzimin 初学 昨天 23:45
为啥没人提 2FA ?我给 ssh 加了个 OTP 的 2FA ,感觉很安心。而且也带多次输错自动 BAN 一段时间的功能。
psllll 小成 昨天 23:58
记性差的话开了 auto-ban 基本上都是挡自己,自己还得去服务商面板那里解除
GoldenSheep 小成 13 小时前
我用 ssh-agent,私钥从不落盘
restkhz 小成 13 小时前
@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 就更安全吗?没有。单纯就是管理方便。 安全不安全,你得带着威胁模型再讨论。在你提出的问题中,如果仅考虑暴力等等的,你这的确安全。 但是考虑防御纵深,那就不如公钥那么安全。就这样。管理也没那么方便。
返回顶部