GoodSync Connect 的安全机制——两层加密与访问控制
两层加密架构
GoodSync Connect 的数据安全由两层独立的加密保护:
┌─────────────────────────────────────┐
│ 第一层:传输层加密(GSTP 内置) │ ← 由 GoodSync Connect 账户体系管理
│ - TLS 握手 + AES-256 │ 连接建立时自动完成,用户无感知
│ - 覆盖所有网络传输(包括 Forwarder)│
├─────────────────────────────────────┤
│ 第二层:应用层加密(可选) │ ← 由用户在作业配置中独立设置
│ - AES-256 应用层加密 │ 加密密钥与 Connect 账户密码完全独立
│ - 加密覆盖文件内容本身 │ 传输前后文件内容均加密
└─────────────────────────────────────┘
两层加密的密钥互相独立,这意味着即使:
- 第一层被绕过(极端情况),第二层仍能保护文件内容
- Connect 账户密码泄露,攻击者不知道你的作业加密密钥,无法解密文件
第一层:GSTP 传输加密
GSTP(GoodSync Transfer Protocol)默认开启 TLS 加密:
- 握手协议:TLS 1.3 + 证书认证
- 对称加密:AES-256-GCM(Galois/Counter Mode,提供加密+完整性验证)
- 证书体系:设备自签证书,首次连接时 GoodSync 提示指纹验证
证书指纹验证(重要)
两台设备首次连接时,GoodSync 会显示对方设备的 TLS 证书指纹:
Security Alert:
Device "Office-PC" is connecting.
Certificate fingerprint: AA:BB:CC:DD:EE:FF:...
Verify this fingerprint matches what you see on Office-PC.
Accept? [Yes / No]
建议在首次连接时,到对方设备上找到 GoodSync 显示的本地证书指纹,对比一下,确认连接的是真正的对方设备而不是中间人。这个指纹验证之后不会再出现——GoodSync 会记住已验证的证书。
Forwarder 场景下的加密
即使流量经过 Forwarder 转发,加密仍然有效:
- 客户端 → Forwarder:独立加密隧道
- Forwarder → 服务器:独立加密隧道
- 两个隧道之间的转发是字节级的盲转发——Forwarder 看不到加密内容
第二层:应用层文件加密(可选但推荐)
在作业 Options → General → Encryption 中开启:
工作方式
- 用户设置一个独立的加密密钥(可以是任意密码)
- GoodSync 在源端写入时,先对文件内容用 AES-256 加密,然后再传输/存储
- GoodSync 在目标端读取时,先解密再写入目标位置
- 目标端的文件是加密状态——直接用其他工具打开会看到乱码
加密密钥的管理
- GoodSync 不存储明文密码,只存储密钥派生后的哈希
- 加密密钥保存在本地设备的
AppData目录中 - 遗忘加密密钥 = 数据永久丢失——没有任何恢复途径
- 建议把加密密钥用密码管理器保存好,或用密码管理器的安全笔记功能存储
加密对同步的影响
| 影响项 | 说明 |
|---|---|
| 同步速度 | AES-256 在现代 CPU 上开销很小(<5%),基本不影响 |
| 目标端文件大小 | 加密后文件略大(约 1-2%,加密开销) |
| 块级传输兼容性 | 加密后的文件哈希会改变,块级传输仍能正常工作——GoodSync 在块级传输前解密、传输后加密 |
| 版本历史 | 版本历史目录中的文件同样是加密状态 |
账户隔离与访问控制
谁能看见谁
GoodSync Connect 的设备发现遵循账户隔离原则:
- 只有同一个 GoodSync Connect 账户下的设备才能互相看到
- 不同账户的设备彼此完全不可见(Mediator 只根据账户隔离返回设备列表)
- 你无法被陌生账户的设备发现,也无法发现它们的设备
设备权限模型
GoodSync Connect 没有「用户权限」的概念(如某设备只有读权限),权限控制通过分离 GoodSync Connect 账户实现:
| 需求 | 做法 |
|---|---|
| 只想让某些设备能访问某些设备 | 为不同组设备创建不同 GoodSync Connect 账户 |
| 某台只做备份的设备不能被其他设备访问 | 把它放在独立账户中 |
| 家庭共享 vs 个人私有 | 分别创建家庭账户和个人账户 |
GoodSync Explorer 的连接控制
默认情况下,任何登录了你账户的设备都能通过 GoodSync Explorer 浏览同账户其他设备的文件。如果想额外保护:
- 在 GoodSync Server 端设置文件访问的根目录限制(GoodSync Server Settings → Allow Access To)
- 设置只读模式(某些场景下 GoodSync Server 可以配置为只读)
安全审计日志
GoodSync 会记录与 Connect 相关的安全事件:
- 新设备首次连接(指纹验证事件)
- 连接失败(可能的中间人探测)
- 账户登录成功/失败
- 加密作业的加解密操作
这些日志可以在 GoodSync 的 Log 面板或日志文件中查看。重要环境下建议定期检查。
安全最佳实践清单
- [ ] 启用两层加密:GSTP 传输加密默认开启;敏感数据的作业额外开启应用层 AES-256 加密
- [ ] 首次连接验证证书指纹:两台设备首次 Connect 时,对比两端显示的证书指纹
- [ ] 使用强密码:GoodSync Connect 账户密码和作业加密密钥都用 12+ 位强密码
- [ ] 账户不要外泄:GoodSync Connect 账户是整个安全模型的根,不要分享给不信任的人
- [ ] 区分账户隔离组:不同安全级别的设备组用不同 GoodSync Connect 账户
- [ ] 定期检查设备列表:GoodSync Connect 设置中定期查看登记的设备,移除不再使用的
- [ ] 更新 GoodSync 版本:及时更新获取安全补丁
常见安全误解澄清
误解一:GoodSync Forwarder 能看到我的文件吗?不能。Forwarder 只做加密字节流的转发,内容被端到端加密,它无法解密。
误解二:GoodSync 服务器存储了我的文件吗?没有。GoodSync Connect 的 Mediator 和 Forwarder 都不存储用户的任何文件数据。Mediator 只存储「账户名 + 设备名 + 当前 IP」这类协调信息。
误解三:GoodSync Connect 用明文传输密码吗?不会。账户密码只在 TLS 加密的连接上传输,GoodSync 服务器只保存密码哈希,不保存明文。