加密隐藏数据,认证指明对端
加密保护内容,对端认证指明服务器,授权决定某个身份可以打开什么。在 VPN 设计中要问清这三件事。
没有对端校验的加密,可能把机密对话交给错误的一方。没有授权的认证只能证明谁接入了,却不能说明对方可以打开什么。这是三项彼此独立的控制,只问加密方式的 VPN 评测只回答了其中一项。打开任何设置页面之前,先把问题理清。
在称之为安全之前的四个问题
四个问题框定了这次评测:观察者能读到什么、哪台服务器在应答、谁在接入、该身份被允许使用什么。加密回答第一个,对端认证回答第二个,用户或设备认证回答第三个,授权回答最后一个。一个加密算法名称或一次成功登录,只是部分答案。
| Control | Question it answers | What a failure looks like |
|---|---|---|
| Encryption | Who can read the traffic | Readable content on the path |
| Peer authentication | Which server is answering | Certificate or key mismatch |
| Joining identity | Which user or device connected | Rejected credentials |
| Authorization | What that identity may use | Access denied inside a working tunnel |
留下一行不处理的设计,不会因为强化另一行而变安全。这些控制是互补的,不能互换。
对端认证不是登录
客户端用已配置的证书、公钥或其他受支持的机制,验证服务器就是预期的那一台。受信任的证书颁发机构并不意味着它签发过的每张证书都是正确的服务器,因此身份校验仍然重要。在未经验证的端点上输入有效密码,并不会让该端点变得可信。密码只能证明你愿意向应答者证明身份。
WireGuard 用另一套工具表达了同样的思路:配置好的对端密钥无需浏览器式证书提示即可完成身份校验。许多人共知的共享密钥更多标识的是一个群体,而不是某个人,所以唯一的设备凭据往往承载更强的身份。
认证加密是一个密码学术语
认证加密是指加密算法既保护机密性,又能检测未经授权的改动。它不代表有人登录,也不决定某个账户可以打开哪些文件。加密套件的名称描述的是一种构造,而不是两方之间的关系。数据包完整性、对端身份和账户权限是相关但证据各自独立的要求。
RFC 5280 信任配置文件是部署使用 X.509 时证书路径与身份校验的参考。读它比把「已认证」当作「安全」的同义词更有用。
在削弱某项控制之前,先读懂故障
过期证书、错误的系统时钟和意外的服务器身份,各有各的修正办法。被拒绝的账户又另有一种。如果服务器确实合法更换,请向经过验证的运营方获取更新后的信任材料。为了让隧道连上而移除身份校验,是把看得见的故障换成看不见的故障。
保护好隧道所依赖的凭据。配置文件里可能存放私钥,已保存的密码可能授予远程访问。一旦泄露,请使用服务的账户或密钥管理流程,因为在客户端目录里换一个国家并不会吊销旧身份。