Note.my

一次性加密笔记

笔记在你的浏览器里加密,密钥放在链接的 # 之后,从不发送到服务器。

它是怎么工作的

  1. 你的浏览器生成一个 32 字节随机密钥,用 AES-256-GCM 加密笔记。
  2. 只有密文被上传。密钥编码进链接 # 之后的部分,而浏览器从不把 # 之后的内容发送给服务器。
  3. 接收者打开链接并确认后,服务器用一条 SQL 语句原子地取出并删除密文,浏览器在本地解密。
  4. 同一个链接第二次打开只会得到「无法读取」,与链接从未存在过完全无法区分。

本服务的完整源码托管在 GitHub: https://github.com/FreeyW/note.my

为什么可以验证,而不只是相信

服务端代码里没有任何加解密函数。构建过程是确定性的,任何人都可以克隆仓库、重新构建,并把产物哈希与线上资源比对。代码采用 AGPL-3.0 授权。

FAQ

服务器能读到我的笔记吗?

不能。解密密钥在链接的 # 之后,浏览器按规范从不把这部分发送给服务器。服务器只持有一段没有密钥就毫无意义的密文。

如果链接被别人拿到会怎样?

拿到完整链接的人就能读到笔记,而且只能读一次。请通过你信任的渠道传递链接,并可以额外设置一个密码,通过另一个渠道单独告知。

笔记真的被删除了吗?

数据库中的记录在读取时被立即删除。但磁盘上可能在一段时间内残留于 InnoDB 未回收页与 undo log 中。由于这些残留是没有密钥的密文,对拿到磁盘的人没有意义。详见 SECURITY.md。

笔记最长能保存多久?

最长 30 天,也可以选择 1 小时、1 天或 7 天;还可以选择「阅读后删除」,不设过期时间,笔记一直保留到被读取为止。设了期限而到期未被读取的笔记,会被定时任务自动清除。

有长度限制吗?

单条笔记的明文上限约 24 KB。本服务不支持文件上传。