52 lines
3.2 KiB
Markdown
52 lines
3.2 KiB
Markdown
# WebDrop
|
|
|
|
零信任的端到端加密暂存与同步:文本、JSON、剪贴板、文件。浏览器内加密,后端节点完全不受信任,只保存和转发密文。
|
|
|
|
## 状态
|
|
|
|
文档是权威来源,代码以文档为准。
|
|
|
|
| 部分 | 状态 |
|
|
|---|---|
|
|
| 协议、API、威胁模型 | 已定稿(`docs/`) |
|
|
| `test-vectors/` | 已完成。由 `node:crypto` 独立生成,服务端(.NET)和 `@webdrop/core`(WebCrypto)各自复现 |
|
|
| `server/` | 频道与便捷分享 API 已实现;含独立的可选 `WebDrop.Frontend` 静态资源模块;NativeAOT 发布为 OCI 镜像 |
|
|
| `packages/core/` | 已完成并验证。168 个测试,含对着真实服务端的端到端 |
|
|
| `web/` | 前端,开发中 |
|
|
|
|
## 文档
|
|
|
|
| 文档 | 内容 |
|
|
|---|---|
|
|
| [docs/threat-model.md](docs/threat-model.md) | 信任边界、攻击者模型、每种模式的保证、元数据泄露、不做的事 |
|
|
| [docs/e2ee-boundary-comparison.md](docs/e2ee-boundary-comparison.md) | 当前信任边界、签名授权/事件的目标设计与分阶段路线 |
|
|
| [docs/protocol.md](docs/protocol.md) | 密钥派生、令牌、帧格式、加密和 padding、校验算法、保留策略(协议权威文档) |
|
|
| [docs/api.md](docs/api.md) | HTTP / WebSocket / SSE 接口、鉴权头、错误码 |
|
|
| [docs/architecture.md](docs/architecture.md) | 组件、技术栈、NativeAOT 约束、存储模型、部署、阶段划分 |
|
|
| [docs/ui-design.md](docs/ui-design.md) | 前端视觉与交互:色彩、形状、blur 约束、页面、状态与诚实提示、动效 |
|
|
| [docs/frontend.md](docs/frontend.md) | 前端工程:技术栈、分层、状态模型、传输与重连、性能与可维护性约定 |
|
|
| [web/AGENTS.md](web/AGENTS.md) | 前端契约:权威顺序、范围、必须遵守与禁止项 |
|
|
| [packages/core/README.md](packages/core/README.md) | `@webdrop/core` 的接口、前端要做和不用做的事、必须注意的几点 |
|
|
| [server/README.md](server/README.md) | 服务端的结构、配置、AOT 发布、验证码(Cap)接入 |
|
|
| [docs/deployment.md](docs/deployment.md) | Podman Quadlet 自托管部署与 Woodpecker CI |
|
|
| [test-vectors/README.md](test-vectors/README.md) | 协议测试向量的生成与使用 |
|
|
|
|
## 核心概念
|
|
|
|
- **频道**:唯一的顶层概念,一条只追加的帧流,有自己的 id、密钥、设置和账号成员人数上限。
|
|
- **条目**:频道里的一项内容(文本、JSON、文件),由若干帧组成,可复制、下载、删除。
|
|
- **成员**:频道里的人是用户(账号);设备只是账号的属性,同一账号的多设备只算一人,请求凭账号会话鉴权。频道强制登录,没有未登录访客(便捷分享不受影响)。
|
|
- **所有者 / 成员**:所有者持有管理密钥,成员通过频道链接加入。
|
|
- **模式**:`enc`(默认,浏览器端 AES-256-GCM)和 `raw`(负载原样,服务器可见,用于公开或用户自行加密的内容)。
|
|
|
|
## 目录
|
|
|
|
```
|
|
webdrop-proj/
|
|
├─ docs/
|
|
├─ test-vectors/ 协议测试向量,所有实现共用
|
|
├─ packages/core/ @webdrop/core,TS,加解密与帧编解码(网页、将来的 CLI 共用)
|
|
├─ server/ .NET 10,NativeAOT;可将 Vite dist 嵌入 WebDrop.Frontend
|
|
└─ web/ Vite + React + TypeScript
|
|
```
|