为什么没人能让它下线?ScienceFair公钥签名与数据隐私安全机制详解
【免费下载链接】sciencefairThe futuristic, fabulous and free desktop app for working with scientific literature :microscope: :book:项目地址: https://gitcode.com/gh_mirrors/sc/sciencefair
ScienceFair是一款免费的开源 P2P 科学文献桌面库,它用公钥签名机制为每个数据源(datasource)"上保险":只有创建者能添加内容,任何人无法篡改或删除已有论文;同时你的本地文献收藏完全受自己控制,这就是它数据隐私安全的核心底气。本文将用大白话讲清楚这套机制为何"没人能让它下线"。
先认识一下 ScienceFair:把文献库的控制权还给你
传统模式下,你读到的论文存在谁的服务器上?出版社。出版社关站、改价、撤库,你就什么都看不到了。
ScienceFair 换了一种思路:它基于dat/hyperdrive 协议,把每个数据源做成一份只追加(append-only)的 JATS XML 论文流,用公钥签名,走点对点网络分发。默认自带 eLife 期刊数据源,代码见 app/lib/defaultsources.js,其中每个数据源都由一个 64 位的公钥唯一标识。
公钥签名是怎么防篡改的?
把它想象成"防伪印章":
- 私钥 = 印章本身:只有数据源的创建者持有,能盖新章(追加新论文);
- 公钥 = 印章样本:所有用户手里的 64 位标识,用来验证每一份内容是否出自原主笔;
- 只追加,不修改:hyperdrive 档案天生只支持 append-only,已发布的论文无法被删除或改写,撤稿也只能以"新增一条撤稿说明"的方式出现。
客户端在建立数据源时会校验公钥格式(必须为 64 字符),核心连接逻辑在 app/client/lib/datasource.js 中:先挂载元数据 feed,再挂载正文 feed,内容在落盘前都会经过签名校验。
一句话:"只有原作者能加内容,没人能改历史"——这是公钥签名带来的两层保证。
为什么没人能让它下线?
关键在于没有"唯一服务器":
- 下载来自最近、最快的节点:ScienceFair 通过 hyperdiscovery 发现 P2P 蜂群中的对等节点,谁离得近就从谁那里下载;
- 原始源离线无所谓:即使官方服务器永久宕机,已分发到全球用户磁盘上的内容仍能被彼此同步,数据源依然"活着";
- 任何人都是备份节点:你本地缓存的每篇论文,都可能成为下一个人的下载源。
所以"下线"这个操作在架构上就不成立——没有中央开关可以关掉整份数据。
数据隐私:你的收藏,你做主
很多人担心 P2P = 数据裸奔,ScienceFair 的做法恰恰相反:
- 本地数据全部存你自己的电脑:所有数据源与收藏都放在用户文档目录下的
sciencefair文件夹,路径常量定义在 app/constants.js 中; - 本地搜索索引由你掌控:收藏库用本地 yuno 倒排索引,搜索不发往任何第三方服务器(见 app/client/lib/localcollection.js);
- 私有是默认值:你自己创建的数据源默认就是私有的,分享与否完全由你决定,但一旦分享出去,别人就永远无法让你下架;
- 按需下载:即时搜索只拉取你真正请求的数据,不整库搬运。
小结:一张表看懂安全机制
| 机制 | 带来的保证 |
|---|---|
| 公钥签名 | 内容真实性:只有创建者能追加新论文 |
| Append-only 档案 | 历史不可篡改、不可删除 |
| P2P 蜂群分发 | 无单点故障,"无法被下线" |
| 本地存储 + 本地索引 | 数据隐私:收藏默认私有,搜索不出本机 |
对想动手看看实现的读者,项目文档入口在 README.md,整体思路是:用密码学信任替代中心化信任,把科学文献的存储与分发交还给用户自己 🎓
【免费下载链接】sciencefairThe futuristic, fabulous and free desktop app for working with scientific literature :microscope: :book:项目地址: https://gitcode.com/gh_mirrors/sc/sciencefair
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考