kelvinsinferno/pangolin
GitHub: kelvinsinferno/pangolin
Pangolin 是一个本地优先的密码管理器,提供硬件辅助安全和链上耐久性。
Stars: 0 | Forks: 0
# 鳄鱼
[](LICENSE)
[](https://github.com/kelvinsinferno/pangolin/releases/latest)
[](https://github.com/kelvinsinferno/pangolin/actions/workflows/ci.yml)
**状态:Base Sepolia 测试网上的封闭测试版。未经审计——欢迎独立社区审计。不要存储生产机密。**
Pangolin 是一个基于硬威胁模型构建的密码管理器:
- **本地优先** — 保险库数据在静止状态下使用从主密码派生的密钥进行加密,操作系统对话框处理端到端。明文永远不会跨越 WebView 的 V8 堆。
- **多设备** — 设备通过 QR 码/简码在离线通道中进行配对;链上授权设备集(RevisionLogV2)是确定谁可以发布更新的真相来源。
- **阈值社交恢复** — 通过用户选择的监护人进行 Shamir 秘密共享。备份信封携带密封的份额,因此任何监护人法定人数都可以帮助新设备上线,而无需原始设备在场。
- **无遥测,无回呼,无自动更新** — 您下载的二进制文件运行时永远不会与 Pangolin 控制的服务器通信。
实现符合 Pangolin 的规范:
- 白皮书(本地优先,分层权限,仅追加修订,区块链仅作为耐久性日志)
- 统一会话权限、硬件和交互规范
- 浏览器扩展和移动自动填充集成规范
- 统一 UI/UX 设计系统规范
## 下载
封闭测试版安装程序发布在 [GitHub 发布页面](https://github.com/kelvinsinferno/pangolin/releases)。每个版本都包含:
| 平台 | 文件 | 安装方法 |
|---|---|---|
| Linux (Debian/Ubuntu) | `Pangolin__amd64.deb` | `sudo dpkg -i Pangolin__amd64.deb` |
| Linux (便携式 AppImage) | `Pangolin__amd64.AppImage` | `chmod +x Pangolin__amd64.AppImage` 然后运行 |
| Windows (NSIS 安装程序) | `Pangolin__x64-setup.exe` | 双击,然后如果 SmartScreen 警告,点击“更多信息”→“仍然运行”(见下文) |
| macOS (Apple Silicon) | `Pangolin__aarch64.dmg` | 右键单击 .dmg → 打开。拖动到应用程序。右键单击 Pangolin.app → 打开(首次启动)。如果 Gatekeeper 仍然阻止,请参阅下文。 |
| 浏览器扩展 | `pangolin-extension-.zip` | `chrome://extensions` → 启用开发者模式 → 加载未打包 → 指向解压缩文件夹 |
### Windows — 通过 SmartScreen
当您双击安装程序时,SmartScreen 会说 **"Windows 保护了您的 PC"**。对于任何未签名的可执行文件,这是预期的。要继续:
1. 点击 **更多信息**
2. 点击 **仍然运行**
此警告将每个安装出现一次。同一台机器上的后续更新通常跳过它(SmartScreen 在第一次执行后学习文件哈希)。
### macOS — 通过 Gatekeeper
当您打开 .dmg 并尝试启动 Pangolin.app 时,macOS 会说 **"Pangolin 无法打开,因为它来自未知的开发者"**。有两种方法可以继续:
**推荐(一键操作):**
1. 右键单击(或按住 Control 键单击)`Pangolin.app` → **打开**
2. 在出现的对话框中点击 **打开**
3. 此后,macOS 会记住您对此二进制的选择
**如果不起作用**(某些 macOS 版本为未隔离的应用程序添加了额外的“Pangolin 会损坏您的计算机”提示),从终端运行以下命令:
```
xattr -d com.apple.quarantine /Applications/Pangolin.app
```
这会移除触发 Gatekeeper 的隔离属性。macOS 的 `.dmg` 仅在手动解锁烟雾(见 [发布说明](https://github.com/kelvinsinferno/pangolin/releases/latest) — 它可能短暂标记为“待烟雾”)后发货。
### Linux
```
# Debian / Ubuntu (.deb)
sudo dpkg -i Pangolin__amd64.deb
# 便携式 / 任何发行版 (.AppImage)
chmod +x Pangolin__amd64.AppImage
./Pangolin__amd64.AppImage
```
`.deb` 在您的应用程序启动器中注册 Pangolin;`.AppImage` 是自包含的,不会留下安装程序的痕迹。
### 浏览器扩展
浏览器扩展是 **可选的** — Pangolin 桌面在没有它的情况下也可以完全使用。扩展添加了浏览器自动填充便利性。
要安装:
1. 从最新版本下载 `pangolin-extension-.zip`
2. 解压缩到某个持久位置(文件夹需要保持在那里)
3. 在浏览器中打开 `chrome://extensions`(或 `edge://extensions`)
4. 启用 **开发者模式**(切换,右上角)
5. 点击 **加载未打包** → 选择解压缩文件夹
6. 复制 Chrome 分配的扩展 ID(在扩展名称下方,约 32 个小写字母)
7. 打开 Pangolin 桌面 → **设置 → 浏览器连接** → 粘贴扩展 ID → **连接**
桌面在您的浏览器配置文件目录中注册了一个本地消息声明,以便扩展可以与本地 Pangolin 进程通信。您可以通过相同的设置面板稍后断开连接。
## 从源代码构建
如果您想检查、修改或运行最新的未发布主分支,请从源代码构建:
### 先决条件
- **Rust** ≥ 1.94(稳定版)
- **Node.js** ≥ 20.18.0,< 23
- **pnpm** ≥ 10
- **Tauri 构建依赖项**(按操作系统;Linux 需要 `libwebkit2gtk-4.1-dev`、`libgtk-3-dev`、`libsoup-3.0-dev`、`libayatana-appindicator3-dev`、`librsvg2-dev`、`libdbus-1-dev`、`patchelf`;macOS 需要 Xcode CLT;Windows 需要 MSVC Build Tools)
- **Foundry**(用于链上合约套件;仅桌面版本不需要)
### 从源代码运行
```
git clone https://github.com/kelvinsinferno/pangolin
cd pangolin
# 构建设计令牌消费者
(cd apps/component-library && pnpm install --frozen-lockfile && pnpm build)
# 以开发模式运行桌面
(cd apps/desktop && pnpm install --frozen-lockfile && cargo tauri dev)
```
### 在本地构建生产安装程序
```
# Linux (.deb + .AppImage)
(cd apps/desktop && cargo tauri build --bundles deb,appimage)
# Windows (NSIS .exe) — 在 Windows 上运行
cd apps\desktop
cargo tauri build --bundles nsis
# macOS (.dmg) — 在 macOS 上运行
(cd apps/desktop && cargo tauri build --bundles dmg)
```
输出位于 `target/release/bundle/<格式>/`。相同的 `cargo tauri build` 调用是 CI 运行的(见 `.github/workflows/release.yml`)。
### 仓库布局
```
crates/ Rust workspace — pangolin-core, pangolin-crypto, pangolin-store,
pangolin-chain, pangolin-indexer, pangolin-funder-client, pangolin-cli
contracts/ Solidity (Foundry) — RevisionLogV2, RecoveryV2, EntitlementRegistry
apps/ Client shells — desktop (Tauri), extension (Chromium MV3),
native-messaging-host, component-library
services/ Off-chain — funder (one-way ETH dispenser; never signs or submits)
tools/ chaincli debug oracle
docs/ issue-plans, architecture, specs
```
## 开发方式
每个问题都遵循主计划中的 §16 每个问题开发协议:
1. **计划** — 在任何代码之前编写 `docs/issue-plans/.md`
2. **批准** — 同行或 Kelvin 审查计划(对于安全关键问题需要 Kelvin)
3. **构建** — 在问题分支上编写代码,注释中包含规范引用
4. **测试** — 每个成功标准都有一个测试;CI 绿色;永远不要为了使测试通过而削弱测试
5. **签字** — DEVLOG 条目;关闭问题;移动到下一个
有关完整协议,请参阅 `CONTRIBUTING.md`,有关负责任的披露路径,请参阅 `SECURITY.md`。
## 封闭测试版中的内容
封闭测试版涵盖了 Base Sepolia 测试网上 MVP-4 桌面 + 扩展的全表面:
- 使用操作系统原生主密码对话框创建/打开/锁定/解锁保险库(无 JS-heap 残留)
- 使用经过审计加固的剪贴板传递添加/编辑/删除/显示/复制帐户
- 多设备配对(QR 码+简码)与链上授权设备集
- 撤销后的设备删除 + VDK 旋转
- 管理员移交/晋升
- 阈值社交恢复 — 监护人入职(所有者端)、监护人帮助(监护人端)、丢失一切向导(恢复者端)
- 带有密封份额信封的恢复备份,用于跨设备恢复
- 浏览器扩展用于自动填充(可选)
**尚未进入测试版(主网门控):**
- 安装程序的代码签名(Apple 开发者 ID + Authenticode)
- 主网合约 + 生产资助者
- 自动更新
- iOS / Android 壳(稍后 MVP)
## 安全审查
Pangolin 的完整源代码是 AGPL-3.0 —任何人都可以阅读、分叉和审计它。我们没有安排付费的外部审计;欢迎独立社区审计,并将发现作为 GitHub 问题或通过 `SECURITY.md` 中的负责任的披露路径提交,将按照内部使用的相同 HIGH/MED/LOW/INFO 级别进行分类。威胁模型在 `THREAT_MODEL.md` 中记录。
## 许可证
GNU Affero 通用公共许可证 v3.0 或更高版本(AGPL-3.0-or-later)适用于此存储库中提供的核心代码——保险库引擎、同步逻辑、恢复逻辑、凭证管理、本地存储、会话策略和 TOTP 处理。有关完整文本,请参阅 `LICENSE`,有关每层许可证映射(AGPL 核心层、Apache-2.0 未来 SDK 和集成、CC BY-SA 文档、商标保护的品牌),请参阅 Pangolin 许可证 & 知识产权规范中的 `LICENSE-RATIONALE.md`。
标签:AGPL许可证, 加密, 区块链, 可视化界面, 多设备同步, 安全架构, 安全模型, 密钥共享, 密钥恢复, 密钥派生函数, 开源, 无自动更新, 无遥测, 本地优先, 测试网, 浏览器扩展, 漏洞扫描器, 用户体验设计, 用户界面设计, 白皮书, 硬件辅助安全, 社区审计, 移动自动填充, 通知系统, 链上持久性, 阈值社交恢复