安全与信任

你的文件属于你,我们也如实说明还有哪些不足

你的文件不会上传到我们的服务器。加密的云备份只能用保存在你设备上的密钥打开。而且 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 或披露细节。欢迎使用英文或韩文报告。

[email protected]

请包含

  • 你发现的问题,以及受影响的组件或 URL
  • 复现步骤或概念验证
  • 你测试的版本或构建
  • 我们如何联系你

我们的响应目标

  • 我们会在 3 个工作日内确认收到报告。
  • 我们会在 7 天内给出初步评估。
  • 对严重问题,我们力争在 14 天内发布修复或缓解措施,其他问题在 90 天内。

这些是目标,而非保证。对于善意的研究,只要避免触及他人数据和扰乱服务,我们不会采取法律行动。目前我们不设有偿漏洞赏金计划。

目前的局限

一个不说明缺什么的安全页面,没有阅读价值。

  • 尚未接受独立审计

    Syncra 还没有经过独立第三方的审查,也没有 ISO 27001 或 SOC 2 之类的安全认证。本页的全部内容,都是我们自己对软件构造方式的说明。

  • 我们的源代码未公开

    目前你无法自己阅读代码。这正是我们公开上述设计事实,并对发布版本签名、提供校验和的原因。

  • 云加密不隐藏结构

    在新建的加密连接(桌面版 0.1.3 及以后)中,文件名和文件夹名也会加密,但文件夹结构、文件数量、大致大小和修改时间仍对云服务商可见。更早创建的连接保留可读的名称,且加密需要按连接分别开启。

  • 被入侵的电脑无法防护

    如果你登录期间恶意软件控制了电脑,它就能触及你的账户能触及的一切,包括系统凭据库。Syncra 不能替代终端防护或离线备份。

  • 密钥丢了,数据就丢了

    由于只有你持有加密密钥和恢复密钥,如果两者都丢失,我们也无法恢复加密的备份。

路线图

这是计划,而非承诺,没有一项确定了日期。

  • 独立安全评估

    我们正在为独立审查做准备:范围、威胁模型、数据流文档和依赖清单。尚未确定评估机构和时间。

  • 公开威胁模型摘要

    公布一份威胁模型摘要,包括我们接受的风险,以便接受各方批评。

  • Business 的单点登录

    我们计划为 Business 工作区提供通过企业身份提供商登录的功能。

对安全有疑问?

请写信至 [email protected]。能回答的我们会回答,不能回答时也会如实告知。