Snapzy安全白皮书解读:无遥测、钥匙串凭据与Hardened Runtime如何守护你的隐私
【免费下载链接】SnapzyAn open-source native macOS screenshot and screen recording app. A CleanShot X alternative.项目地址: https://gitcode.com/gh_mirrors/sn/Snapzy
Snapzy 是一款开源的原生 macOS 截图与录屏应用(CleanShot X 的免费替代方案),它把隐私写进了产品基因:不收集任何遥测数据、云凭据只存放在 macOS 钥匙串(Keychain)中、并启用 Hardened Runtime 加固运行。本文用大白话拆解 SECURITY.md 这份"安全白皮书",帮你搞懂这三道防线到底如何守护你的屏幕数据。
为什么隐私对截图工具如此重要?
截图和录屏应用天然拥有"上帝视角":它能看到你屏幕上的每一帧——密码、聊天记录、财务页面都可能被捕获。更关键的是,macOS 要求授予它屏幕录制这类高敏感权限。
所以选截图工具时,比"功能多少"更重要的是回答三个问题:
- 📡 它会不会偷偷上传数据?
- 🔑 它存的账号凭据放在哪里?
- 🛡️ 它被攻破后,攻击者能走多远?
Snapzy 的安全白皮书恰好逐条回答了这三个问题。
零遥测:所有数据都留在你的 Mac 上
白皮书在"Data Handling"章节给出了明确的承诺:
- 本地优先——所有截图和录像默认只保存在本地;
- 无遥测——不收集任何分析、追踪或使用数据;
- 无账号——不注册、不登录,没有"用户"这个概念;
- 网络请求受限——出站请求只用于两类场景:Sparkle 更新检查(HTTPS + 签名 appcast)和用户主动发起的云上传。
即使出现问题需要排查,Snapzy 的日志也全部留在本地:DiagnosticLogger 只把日志写入~/Library/Logs/Snapzy/目录,默认保留 3 天。崩溃报告会打包成一个 zip 放在你的临时文件夹里,需要你手动拖去提交,应用绝不会自动发送任何日志(详见 docs/UPDATES.md 的 Problem reporting 章节)。
钥匙串凭据:你的密钥从不明文落盘
如果你用 Snapzy 的云上传功能(自带存储:AWS S3 / Cloudflare R2 / Google Drive),需要填写 Access Key、Secret Key 或 OAuth Token。这些"金钥匙"放在哪里?
答案是macOS 钥匙串,具体实现在 CloudKeychainStore:
- 凭据以
kSecClassGenericPassword条目存入数据保护钥匙串(data-protection keychain),受系统级加密; - 从不写入明文文件,也不进 UserDefaults;
- 老版本的遗留凭据会被自动迁移到新位置并清理。
再往深一层,是可选的密码保护机制(CloudPasswordService):
- 你设置的保护密码先经过SHA-256 哈希才存入钥匙串,系统里永远只有哈希值,没有明文密码;
- 修改、导入、导出云配置前需要验证密码。
如果你换 Mac 想迁移配置,走的是手动加密导出流程:生成.snapzycloud归档文件,采用AES-GCM-256 加密 + PBKDF2-SHA256 密钥派生(30 万轮),口令要求至少 12 位。这份加密包由你自己保管和传递,Snapzy 服务器从不接触(技术细节见 docs/CLOUD.md)。
Hardened Runtime:给高危权限加一道系统级锁
Snapzy 有一个容易被误解的点:它没有使用 App Sandbox(应用沙盒)。白皮书说得直白——它运行在你用户账户的权限下。那怎么防止失控?
靠的就是Hardened Runtime(加固运行时)+ Developer ID 签名 + Apple 公证这套组合拳:
| 防护项 | Snapzy 的状态 |
|---|---|
| Hardened Runtime | ✅ 启用 |
| 代码签名 | ✅ Developer ID |
| Apple 公证 | ✅ 已公证并装订(stapled) |
| 库验证(Library Validation) | ✅ 保持开启 |
其中库验证最关键:它禁止进程加载未签名或第三方签名的代码,只有 Snapzy 或 Apple 签名的库才能被加载。也就是说,即便有人想往这个"手握屏幕录制权限"的进程里注入恶意代码,也会被系统直接拦下。
同时,Snapzy.entitlements 只声明了最小必要的权限集:出站网络(更新检查和用户发起的云上传)、本地回环(Google OAuth 回调)、用户主动选择的文件读写、麦克风(录音用)、以及读取系统快捷键做冲突检测。没有多余的权限,就少被利用的面。
三条红线:连开发者自己都不许踩
白皮书的"Contributor Security Best Practices"部分,相当于给维护者立下的军规,也侧面说明项目的安全底线:
- 🚫 禁止在源码里硬编码密钥或 Token;
- 🚫 禁止引入新的 entitlement 而不写明理由;
- 🚫 禁止削弱 Hardened Runtime,尤其是不许添加"禁用库验证"这类开关——因为这会让持有屏幕录制、麦克风、辅助功能权限的进程变得不设防。
发布流程同样严格:docs/RELEASES.md 记录了构建必须带安全时间戳签名并完成公证,更新包在安装前还要经过EdDSA 签名校验,从源头杜绝了篡改的更新包。
普通用户如何自查?三步建立信任
你不需要读懂全部源码,也可以快速验证上面说的一切:
- 看系统弹窗——Snapzy 只会请求屏幕录制(必需)、麦克风(可选)、辅助功能(可选),且都能随时在"系统设置 → 隐私与安全性"中撤销;
- 看钥匙串——打开"钥匙串访问",搜
com.trongduong.snapzy,可以看到云凭据条目,确认它们不是散落的明文文件; - 看网络行为——把更新检查和云上传都在偏好设置里关掉后,Snapzy 基本不再发起任何出站请求。
写在最后
一款优秀的截图工具,标准不只是"快"和"全"。Snapzy 用一份透明的安全白皮书证明了自己的姿态:数据不出本地、密钥不落明文、进程不装野码。如果你受够了商业截图工具的捆绑与付费墙,又在意屏幕上的每一帧都只属于自己,这个开源的 CleanShot X 替代方案值得放进你的 Mac 工具栏。
【免费下载链接】SnapzyAn open-source native macOS screenshot and screen recording app. A CleanShot X alternative.项目地址: https://gitcode.com/gh_mirrors/sn/Snapzy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考