注:以下的“文档” = 某笔记本 / 某文档及其子文档 / 某文档
需求
要求提供文档“加密”功能的需求帖一直源源不断,我观察到,大家需要的功能主要有几点:
- 打开文档时需要先输入访问密码,且文档内容不在搜索结果中显示
- 文档名不在搜索结果中显示(可选)
- 文档在文档树中隐藏(需要讨论如何实现)
- 例如:文档名脱敏,变为一串星号:************ / 变为默认名称:Untitled / 自定义
- 文档一段时间内无操作则自动锁定
场景
有但不仅有以下场景:
- 记录了包含隐私内容的文档(密码、日记、个人信息、高价值信息等)
- 需要展示一部分笔记给别人看(工作党刚需)
- 电脑投屏做知识分享 / 电脑前有人,此时全局检索,需要避免显示隐私内容。
- 通过伺服在局域网内共享给同事,需要避免同事打开包含隐私内容的文档。
- 启动思源时正好打开了包含隐私内容的文档,需要隐藏。
- 临时借出设备给他人使用,需要避免他人私自打开包含隐私内容的文档
- 离开电脑时忘记关闭文档 / 忘记锁屏
“加密”的方式
官方原生支持端到端加密,已经防住了云服务厂商,接下来就要防住身边的人了。
之前提出的两种“加密”方式:
- 在前端实现(锁定文档的界面),不需要修改文件,避免文档损坏。
- 本地数据加密,每次使用时解密。但由于需要整个工作空间都加密才能确保没有泄漏,所以不太可能实现,因此不考虑了。
在前端实现“加密”,本质上是为了避免他人轻易看到隐私信息,避免尴尬社死(至暗时刻)。身边的普通人一般不会专门想办法去偷看被你加密的文档,所以我们只是需要把界面锁一锁,能挡住身边绝大多数不懂技术的人就行了。
思源的本地存储格式是 .sy 而非 .md,别人看到了也不知道是啥,用编辑器打开也是 json 文件,基本没有可读性。
对此 @8V9q7V 提出异议:“界面加密,如果有人往里面存财务密码,而源文件是明文保存的,被人把密码扫出来了造成损失。思源会不会有法律纠纷?别人可不管你‘界面’加密”
当然,面对窃取数据的人,目前的访问授权码也一样是摆设:如果有人拿到了你的电脑,想偷偷打开你设置了访问授权码的工作空间,根本防不住,他直接在 工作空间/conf/conf.json 文件里找 accessAuthCode 字段就能拿到访问授权码。
虽然同样是“摆设”,但大家就是需要。我的看法是:思源负责防君子,用户负责防小人。但为了以防万一也许可以在用户启用这个功能时就明确说明:这个功能并非对本地数据加密,因此有需要的用户应自行采取其他保密措施。思源只需要尽到提醒的责任,怎么使用这个功能是用户的事情。
设置密码的方式
- 每个加密的文档单独设置密码,并可自定义默认填写的密码
- 配置了访问授权码的用户则可以统一使用访问授权码
回答一些疑问
为什么不使用多个工作空间,其中一个设置访问授权码?
- 两个工作空间来回切换使用,操作繁琐。
- 不同的工作空间内容不互通,但有在加密笔记与非加密笔记间双链引用的需求。
- 需要加密的往往只是单一的文档,这些文档可能出现在任何目录下,单独将需要加密的文档移动到另一个工作空间会破坏笔记的目录结构。
为什么需要官方原生支持而非制作社区插件实现?
- 价值观
- 思源笔记官网上写着「加密同步 隐私优先」,是「隐私优先的个人知识管理系统」。隐私优先,但只有云同步不会泄漏数据,这感觉就好像门口有两扇门却只关了半边一样难受,肯定得是一扇在云端挡服务厂商,一扇在线下挡人才完整。既然现在已经实现了端到端加密,那就应该更进一步,实现文档级的“加密”。
- 维护
- 保证功能随时可用,否则关闭插件就能解除加密 / 出 BUG 需要等待插件作者更新
- 同时维护桌面端和移动端
这是一个真实的需求吗?
有人说过:“有部分用户提需求,证明他真的有需求。不能因为自己没有需求而否定别人的需求。”这里附上我随手找的相关需求帖和 issues :
关于对思源笔记本进行加密的一种解决方案,但需要思源增加支持对 data 文件夹中的笔记本文件夹的软链接的识别,期望能添加这一特性
原投票(请在下面的「新投票」里投票)
是否支持加密(多选)
原来的选项设置得不好,大部分人都把多选当作单选,现在分清楚一些,重新投票: