在不信任的机器上使用和敏感机器相同的公钥安全吗?

2021-03-31 11:58:34 +08:00
 naoh1000
以前买了很多小商家的 VPS,想用同一个公钥连接 SSH 比较方便。想问下如果系统被商家做过手脚,使用同一个公钥有安全风险吗?
3156 次点击
所在节点    Linux
24 条回复
whee1
2021-03-31 12:05:53 +08:00
云环境下,即使没有私钥匙,云提供商一样能访问你的系统。
naoh1000
2021-03-31 12:09:46 +08:00
@whee1 #1 不信任的机器我肯定不会存放敏感数据,想问的是如果机器系统被动过手脚,有没可能通过我连接时发出的验证数据和公钥还原出什么隐私数据(包括但不限于连接发起者信息 / 私钥的部分信息)。
lsylsy2
2021-03-31 12:15:29 +08:00
@naoh1000 不会,公钥的设计就是可以公开,外观是“SSH 公钥”还是“GPG 公钥”还是你访问银行网站银行给你的“https 证书”是没有(原理上)区别的。
xmumiffy
2021-03-31 12:16:22 +08:00
有能用公钥还原私钥的技术还开什么 vps,直接去银行提钱不爽么
Osk
2021-03-31 12:17:49 +08:00
现实应用中,公钥是可以公开给所有人的。

因为公钥是公开的,所以一般不会用私钥来加密数据,只用来解密数据。所以公钥公开是安全的。

估计 ssh 也有类似的动作,不会用私钥加密数据,所以应该是安全的 ..... 吧
Mutoo
2021-03-31 12:19:43 +08:00
能想到的风险就是使用同一个公钥可以关联同一个使用者。如果有匿名需求的话,最好不要使用公开过的公钥。
BeautifulSoap
2021-03-31 12:25:36 +08:00
可以了解下非对称加密的基本原理

你 https 访问 google 就能拿到 google https 给你加密用的公钥,全球公开。公钥本来就是公开的,没有问题,以现在的算力也没人能从公钥反向出私钥的信息

然后 lz 既然都以 vps 的系统被动手脚为前提了,那作手脚的人哪还需要这么拐弯抹角。。。。。
naoh1000
2021-03-31 12:28:07 +08:00
感谢大家的回复,我知道公钥是无法还原私钥的,但是我想知道 SSH 连接过程中我发送的验证数据是否有可能泄露我的隐私呢?
@lsylsy2
@xmumiffy
@Osk
@Mutoo
@BeautifulSoap
lsylsy2
2021-03-31 12:32:40 +08:00
@naoh1000 如果服务器被做了手脚的话,服务器可以:
1. 知道操作的人是你
2. 知道你的所有操作

还有就是确保你连接服务器的时候如果对方的公钥(就是第一次链接某个服务器的时候让你 yes 的那个东西)改变了那么不要接受就行了
lsylsy2
2021-03-31 12:33:09 +08:00
@lsylsy2 假如接受了,理论上可以做一些更多的攻击?但那个就不熟悉了,只要不接受就好
BeautifulSoap
2021-03-31 12:37:10 +08:00
@naoh1000 你都以系统被做手机为前提了那肯定能啊
supercaizehua
2021-03-31 12:45:27 +08:00
我有一个问题,你会使用 github 上面其它人提供的一键脚本吗?
如果你会毫不犹豫的使用,仅仅是因为其它人都在用,也没人发现有安全问题,那么我觉得你大可对这些运营商放心,都是一个道理
naoh1000
2021-03-31 12:52:12 +08:00
@supercaizehua #12 敏感机器从来不用,测试机器也会先检查再用。
lsylsy2
2021-03-31 12:55:12 +08:00
@naoh1000 顺便感觉我刚才跑题了
你的原问题是“在不信任的机器上使用和敏感机器相同的公钥安全吗?”
那么只要确保不信任的机器的 fingerprint (就是刚才说的 ssh 要输 yes 的东西)没有问题,那么是安全的。
“不信任的机器”只能知道“你是你”,而无法在敏感的机器面前伪装是你
charlie21
2021-03-31 13:08:55 +08:00
公钥等信息元素,就像任何信息元素一样,是可以被用作形成一个用户画像的。泄露的信息越多,用户画像越准确
但你总是要泄露的 不是么,就像你去商店买鞋子都是在泄露你的脚的尺码给商店人员
yanqiyu
2021-03-31 13:21:20 +08:00
如果机器是不被信任的(比如公用机器)放一个公钥上去确实是安全的,你甚至可以 curl https://github.com/${username}.keys 拿到大家在 github 上设置的 ssh pubkey

ssh 上去也_往往_是安全的。但是注意要在 ssh 配置里面设置 ForwardAgent no,因为 ForwardAgent 可以用来偷东西。以及记住不要再不受信任的机器上放私钥 /输密码,因为你不知道目标计算机被动了什么手脚。
yanqiyu
2021-03-31 13:26:14 +08:00
顺带提一句,ForwardAgent 不是可以直接偷走私钥,但是可以用你的私钥认证别的机器。但是这一点也足够棘手了,比如 ssh -T git@github.com 看看你在 github 的用户名然后顺着搞破坏之类的。
Jat001
2021-03-31 13:27:11 +08:00
ssh -v 看一眼好吗,发了什么数据都写着呢,你使用的客户端的信息,支持的加密方法,你的所有公钥,你的 ip 地址等等信息都会被发送
Jat001
2021-03-31 13:29:29 +08:00
@yanqiyu #17 ForwardAgent 默认是 no
ryd994
2021-03-31 14:18:02 +08:00
安全,公钥就是用来公开的。而且你还应该尽可能广的公开,多种渠道相互印证,避免中间人攻击。
github 可以直接下载登记的 ssh 公钥。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/766804

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX