安全与信任
你的文件属于你,我们也如实说明还有哪些不足
你的文件不会上传到我们的服务器。加密的云备份只能用保存在你设备上的密钥打开。而且 Syncra 在替换或删除任何文件之前,都会先保留旧副本。
最近复核:
避免丢失数据的原则
这些是同步引擎自身的规则,而不是需要你去找的设置。
先保留旧副本
Syncra 在替换或删除文件之前,会先把旧副本移入版本库(.syncra/versions)。恢复某个版本时,当前文件也会被保存为一个版本,因此恢复本身也可以撤销。版本会按你设定的保留期限保存。
大量删除会先停下来确认
如果一次运行会删掉文件夹中的很大一部分,它会停下来等你确认。这个保护无法关闭,只能调整阈值;AI 或 MCP 代理也不能自行解除,必须由人来确认。
先计划,再执行
每项更改在发生前都会先制定计划并可预览。通过 MCP 连接的 AI 助手只能执行事先预览过的计划;如果期间文件发生了变化,它必须重新制定计划。
发生冲突时两个版本都保留
当同一文件在两侧都被修改时,Syncra 会把两个版本并排保留,而不是让其中一个覆盖另一个。
安全写入,不越出你的文件夹
未传完的文件会以临时名称(.syncra-part)写入,完成后以原子方式替换。符号链接不会被跟随,路径也无法越出同步文件夹。
核心代码不含 unsafe
同步引擎、网络、云、服务、守护进程、AI 和 MCP 各个 crate 以及桌面外壳都以 #![forbid(unsafe_code)] 编译,因此不会意外混入内存不安全的代码。第三方依赖不在此保证范围内。
加密与密钥管理
Syncra 有三条数据通道,每条都有各自的保护方式。
开启加密的云备份
文件内容在上传前就在你的电脑上加密:每个 64 KiB 数据块使用随机的 256 位密钥,采用 XChaCha20-Poly1305。每个数据块都会认证自己的位置以及它在远端中的完整路径,因此字节被篡改、顺序被调换或被截断、文件被替换、密钥错误,读取时都会被发现。云服务商看到的只有密文。
密钥存放在哪里
加密密钥和恢复密钥只保存在操作系统的安全凭据库中(Windows 凭据管理器、macOS 钥匙串、Linux Secret Service),与你的其他云端机密放在一起。它们不会写入配置文件,也不会发送给 Syncra。恢复密钥可以在另一台电脑上打开备份。如果密钥和电脑都丢了,包括我们在内,没有人能恢复这些文件。
网络内的直连同步
设备通过二维码或配对码、一次性密钥和六位核对码进行配对。连接使用 QUIC 与 TLS 1.3,固定设备公钥而不是依赖证书颁发机构,数据块用 XChaCha20-Poly1305 封装。全程不经过我们的服务器。
谁能看到什么
| 数据 | 你的设备 | Syncra 服务器 | 你的云服务商 |
|---|---|---|---|
| 已加密云端远程的文件内容 | 可读 | 从不接收 | 仅有密文 |
| 在你的网络内同步的文件内容 | 可读 | 从不接收 | 不参与 |
| 加密密钥与恢复密钥 | 存于系统凭据库 | 从不接收 | 从不接收 |
| 加密云连接的文件夹结构、文件数量、大致大小和修改时间 | 可读 | 从不接收 | 可见——在桌面版 0.1.3 及以后创建的连接中,文件名和文件夹名本身会被加密 |
| 账户信息:邮箱、姓名、设备公钥 | 归你所有 | 已存储(见隐私政策) | 不参与 |
| 银行卡信息 | 在支付服务商页面输入 | 从不接收 | 不参与 |
加密需要你为每个云端远程单独开启,开启后无法再关闭。未开启加密的远程,会以普通文件的形式存放在服务商那里。在没有系统凭据库的服务器上,机密信息会保存在加密文件中,其局限在文档里有说明。
账户与设备
控制平面(账户、团队、计费、设备列表)看不到你的文件。对于它确实保存的信息,保护方式如下。
签名的设备请求
每台设备都有自己的 Ed25519 密钥对。请求会对方法、路径、时间戳、一次性 nonce 以及请求体的 SHA-256 哈希进行签名。服务器对每个 nonce 只接受一次,并拒绝时间偏差超过五分钟的请求,因此截获的请求无法重放。撤销设备后,它会立即失效。
登录
你可以用邮件链接、Google 账号或通行密钥登录。会话令牌在服务器上只以哈希形式保存。浏览器会话通过 CSRF 令牌和来源检查来防范跨站请求。
静态保存的机密已加密
支付服务商密钥等运营机密在保存前用 AES-256-GCM 封装,密钥作为平台机密单独保管,也绝不会返回给浏览器。
没有可被伪造的支付回调
我们不开放支付回调(webhook)接收端点。金额只在服务器端决定;支付完成后由服务器直接向支付服务商查询确认,并每十分钟复查一次未完成的支付。银行卡信息只留在支付服务商那里。
无法被修改的审计日志
账户、设备和团队的操作会写入审计日志,该表在数据库层面拒绝 UPDATE 和 DELETE。Business 工作区可以导出日志。
勒索软件与恢复
同步工具传播工作成果有多快,传播损害就可能有多快。Syncra 的设计就是为了阻止这一点。
它会自己停下来
Syncra 在你的设备上留意大规模破坏的迹象:批量改扩展名、高熵覆盖写入、突然的大量修改或删除,以及勒索信文件名。当评分达到暂停级别,该同步对会进入保护状态,直到有人手动恢复之前,所有自动和手动运行都会被拒绝,因此一侧的损害不会蔓延到另一侧。AI 代理不能恢复它。
一键恢复
恢复会把未受影响的一侧还原到最后一个正常时间点,把受影响的一侧重新与正常一侧保持一致,然后解除保护。被替换的受损文件会移入版本库,绝不会被删除。
时间点恢复
把整侧或某个子文件夹恢复成你选定时刻的样子,依据版本库和审计日志重建。恢复不会破坏任何内容,而且本身也会被记录,所以可以用另一次恢复来撤销。
检测是启发式的:可能漏掉攻击,也可能误报(你可以自行解除)。在 Syncra 之外直接对文件夹做的更改不会被记录,因此时间点恢复无法回退它们,此时恢复流程会改为把正常一侧复制回来。以上都不能取代离线或异地备份。
你可以自行验证的内容
我们不能要求你全盘相信,所以这里列出你可以自己核对的东西。
签名的发布版本
Windows 安装程序和命令行工具使用颁发给 PROJECTTEAMFORYOU 的代码签名证书签名。发布流程会拒绝发布签名或时间戳验证不通过的文件,SHA-256 校验和(SHA256SUMS)在签名之后计算,你可以与下载到的文件比对。
受监控的依赖
Dependabot 每周提出依赖更新,每次更改都会在持续集成中对照 RustSec 公告数据库以及 npm 高危级别审计进行检查。
严格的网站设置
页面带有只允许该页面已登记哈希的脚本运行的内容安全策略(CSP)、HSTS、禁止嵌入框架以及禁止内容类型嗅探。网页应用在浏览器内处理文件夹,不上传任何内容。
标准的 security.txt
我们的安全联系方式和报告政策发布在 /.well-known/security.txt,这是研究人员查找的标准位置。
报告安全漏洞
请发送邮件至 [email protected],主题写“Security”。在我们修复问题之前,请不要公开提交 issue 或披露细节。欢迎使用英文或韩文报告。
请包含
- 你发现的问题,以及受影响的组件或 URL
- 复现步骤或概念验证
- 你测试的版本或构建
- 我们如何联系你
我们的响应目标
- 我们会在 3 个工作日内确认收到报告。
- 我们会在 7 天内给出初步评估。
- 对严重问题,我们力争在 14 天内发布修复或缓解措施,其他问题在 90 天内。
这些是目标,而非保证。对于善意的研究,只要避免触及他人数据和扰乱服务,我们不会采取法律行动。目前我们不设有偿漏洞赏金计划。
目前的局限
一个不说明缺什么的安全页面,没有阅读价值。
尚未接受独立审计
Syncra 还没有经过独立第三方的审查,也没有 ISO 27001 或 SOC 2 之类的安全认证。本页的全部内容,都是我们自己对软件构造方式的说明。
我们的源代码未公开
目前你无法自己阅读代码。这正是我们公开上述设计事实,并对发布版本签名、提供校验和的原因。
云加密不隐藏结构
在新建的加密连接(桌面版 0.1.3 及以后)中,文件名和文件夹名也会加密,但文件夹结构、文件数量、大致大小和修改时间仍对云服务商可见。更早创建的连接保留可读的名称,且加密需要按连接分别开启。
被入侵的电脑无法防护
如果你登录期间恶意软件控制了电脑,它就能触及你的账户能触及的一切,包括系统凭据库。Syncra 不能替代终端防护或离线备份。
密钥丢了,数据就丢了
由于只有你持有加密密钥和恢复密钥,如果两者都丢失,我们也无法恢复加密的备份。
路线图
这是计划,而非承诺,没有一项确定了日期。
独立安全评估
我们正在为独立审查做准备:范围、威胁模型、数据流文档和依赖清单。尚未确定评估机构和时间。
公开威胁模型摘要
公布一份威胁模型摘要,包括我们接受的风险,以便接受各方批评。
Business 的单点登录
我们计划为 Business 工作区提供通过企业身份提供商登录的功能。