借用别人的机器、赶一份急活,再加上一个承诺加密一切的 VPN 客户端:这个顺序看起来安全,其实并不安全。隧道保护的是两个端点之间的路径,而眼前的端点正是你无法验证的部分。下面三个步骤决定设备到底能不能用、如何让凭据远离它,以及事后怎么做才不会让一次临时会话变成永久副本。

主机已经看过数据之后,隧道才开始

加密发生在 VPN 客户端里,而客户端是运行在这台机器上的程序。该程序之上的一切,包括浏览器、操作系统,以及任何拥有足够权限的扩展或驱动,都会在数据被加密之前处理它。这不是协议的缺陷;这就是协议所在的位置。

因此检查出口地址几乎证明不了主机是否可信。一台机器可以把全部流量都送进干净的出口,却照样记录每一次按键,这两件事并不矛盾。

有用的框架是问主机能看到什么,而不是问网络能做什么。在一台由别人管理的机器上,这个集合比你所能列举的更大。

第一步:确认谁控制这台设备

控制权是管理权限和物理接触的问题,不是礼貌问题。如果别人能安装软件、加载驱动、接入设备或还原镜像,这台机器的行为就不是你看着它就能确定的。管理是一种能力,而能力不会出现在截图里。去问把机器交给你的人。

寻找常见信号,把每一个都当作关于控制权的证据,而不是安全的证明。任何单一信号都不能下定论。

  • 无法安装软件的访客或自助终端账户,比别人交给你的管理员账户更适合作为起点。
  • 有明确所有者和支持联系人的受管设备,比无人看管的终端更可靠,即使后者看上去更干净。
  • 无法确定最后是谁登录的机器,就是你无法描述其状态的机器。

这些检查都不能让共享主机变得可信。它们只告诉你风险是否足够有限,能否继续做一件有限的事,而那是另一个也更诚实的问题。继续之前把答案记下来。

第二步:让凭据不留在主机上

活动中的配置文件不是书签。OpenVPN 配置文件可能包含内嵌证书和私钥,导入它就会把这些材料写到一台不属于你的设备上。保存 cookie 的浏览器会话同理,任何在本地缓存保险库的密码管理器也一样。

DecisionSafe defaultWhat it buys you
Which device to useOne you control, or an approved managed deviceA host whose software you can account for
Which account to sign in withA session that does not persist, with a second factorLimited exposure if the machine retains state
What to installNothing; use the browser and the service's own portalNo profile or client left behind for the next user
What to do afterwardsSign out everywhere and revoke sessions from a trusted deviceAn end to access that does not depend on local cleanup

优先选择服务支持的最不持久的访问方式。按会话认证并要求第二因素的网页门户,比保存了配置文件的桌面客户端留下的痕迹更少;关闭浏览器就结束的会话,也好过能熬过重启的会话。

然后检查机器留下了什么。在共享的 Linux 主机上,配置文件位置很容易查看;在 Windows 上,同样的搜索只需一条命令。找到前一位用户的配置文件,是个有用的提醒:你的也会被同样对待。

ls -la ~/.config/openvpn 2>/dev/null
Get-ChildItem -Path $HOME -Recurse -Filter *.ovpn -ErrorAction SilentlyContinue

第三步:从你信任的地方结束访问

本地清理值得做,但并不够。退出服务、关闭浏览器、删除所有下载的文件,然后做真正关键的一步:从你控制的设备上撤销该会话或凭据。

人们跳过的正是最后这一步,因为本地屏幕看起来很干净。主机上的软件复制走的会话令牌,在你离开之后仍然有效,而且它并不在乎浏览器是否关过。撤销是唯一假定主机可能怀有敌意的步骤。如果主机真的怀有敌意,它也是唯一起作用的步骤。

如果私钥或恢复密钥接触过这台机器,就当作已经暴露,直接轮换,而不是去检查副本。对于使用过第二因素的账户,还要检查服务商列出的设备和会话,因为你访问期间签发的令牌可能仍然有效。

趁记忆还新把结果写下来:哪台设备、哪个账户、装了什么、撤销了什么、什么时候。正是这份记录让下一个人能回答之后唯一重要的问题:是否还有东西保有访问权。

私人控制的设备同样需要维护,但它给了你管理端点的依据,这是借来的终端永远给不了的。隧道只是容易的那部分。

相关文章