一个端到端加密即时通讯技术研究项目,核心技术特点:
| 维度 | Signal | FIBEMATE |
|---|---|---|
| 密钥封装 | ECDH (X25519) | ML-KEM-768 (后量子) |
| 量子安全 | ❌ 不抵抗 | ✅ 抵抗 |
| 国密支持 | ❌ | ✅ SM2/SM3/SM4 |
| 侧信道审计 | 部分 | TVLA 10k+ 全通过 |
Signal 使用经典的 X25519 ECDH,在量子计算机下不保证安全。FIBEMATE 的 ML-KEM-768 基于格密码(Kyber),理论上抵抗 Shor 算法。
私钥不落盘。ML-KEM-768 私钥始终存在于 WebView 内存,不写入 localStorage、文件系统或服务器。
ECDH 身份密钥存储在 IndexedDB,但标记为 extractable: false(WebCrypto non-extractable),无法导出原始密钥材料。攻击者即使获得文件系统访问权,也无法提取私钥。
ML-KEM-768 基于 Kyber-768,NIST 于 2024 年 8 月正式标准化为 FIPS 203。它是:
FIBEMATE 的实现通过了 KAT 10,000/10,000(已知答案测试)和 TVLA 10,000(侧信道验证)。
Double Ratchet 是 Signal 协议的核心机制,确保:
FIBEMATE 将 ML-KEM-768 作为 Ratchet 的初始密钥交换(替代 X3DH),后续消息使用 Double Ratchet 轮转。
TVLA(Test Vector Leakage Assessment)是侧信道安全的标准评估方法(Goodwill et al. 2011, NIST NIAT Workshop)。用 Welch's t-test 检测密码学操作是否泄漏密钥信息:
FIBEMATE SM2 实现经过 3 轮 TVLA 测试:
| 版本 | N | 结果 | 关键改进 |
|---|---|---|---|
| v1.0 wNAF | 2,000 | 10/10 ✓ | 基线实现 |
| v1.2 Masked | 5,000 | 5/5 ✓ | Scalar Masking + Projective Randomization |
| v1.3 Montgomery | 5,000 | 7/7 ✓ | Montgomery Ladder 恒定时间点乘 |
| 高阶 TVLA | 5,000 | 20/20 ✓ | 1–4 阶矩全通过 |
完整报告:SM2 TVLA 侧信道分析
| 维度 | Electron | Tauri v2 |
|---|---|---|
| 打包体积 | ~150 MB | ~10 MB |
| 内存占用 | ~300 MB | ~50 MB |
| 后端语言 | Node.js | Rust (零成本抽象) |
| 原生性能 | JS 引擎 | Rust 原生编译 |
| WebView | Chromium 内嵌 | 系统 WebView(Edge/WebKit) |
Tauri 用 Rust 写后端、系统 WebView 做前端,体积小 15 倍,内存省 6 倍,且 Rust 的密码学实现更安全(无 GC 时序、确定性内存管理)。
打开 DevTools:
window.MLKEM768.keygen() 等测试命令# 1. 运行全部测试 cargo test # 2. 运行 KAT(已知答案测试) node scripts/kat-check.js # 3. 运行 TVLA 快速检查(N=100) node scripts/tvla-quick-check.js --n=100 # 4. 验证构建完整性 sha256sum src-tauri/target/release/fibemate-tauri.exe
可以。计划于 2026.08.31 以 GPLv3 开源:
backend/ 目录)后端基于 Node.js + Express + WebSocket,轻量部署在 1 核 1G 服务器即可。
FIBEMATE 所有关键文档(TVLA 报告、验证报告、技术文档)通过 FreeTSA RFC 3161 + DigiCert 双源时间戳 存证。这提供了:
PQC 混合握手(路径 C) 是 FIBEMATE 当前采用的密钥交换方案:
GET /api/pqc-hybrid/init 获取服务端 ML-KEM-768 公钥ML-KEM-768.Encaps(pk) → 密文通过 POST /api/pqc-hybrid/finalize 发送 → 双方 HKDF 派生相同 sessionKey与纯 ML-KEM 的区别:纯 ML-KEM(如路径 A 的 NamedGroup 原生集成)性能更好但需改造 TLS 栈;路径 C 是实用主义折中——不改基础设施,把 PQC 安全增量叠加在现有 TLS 之上。详见 PQC 就绪度报告。
| 限制 | 状态 | 计划 |
|---|---|---|
| TVLA 仅检测时序泄露(非物理/电磁攻击) | 已说明 | FAQ Q6 明确标注 |
| 前端 SM2 加密集成 | ✅ 已上线 | v3.0-preview 前端桥接 11/11 通过 |
| ECDH 非后量子(身份层) | 使用中 | 计划升级 ML-DSA |
| PWA 离线消息队列 | 部分支持 | v1.2 完善 |
| 移动端 | 开发中 | React Native 先行 |
| 资源 | 链接 |
|---|---|
| 官网 | fibemate.net |
| API 文档 | docs/API.html |
| 架构设计 | docs/architecture.html |
| SM2 TVLA 报告 | SM2 TVLA 侧信道分析 |
| 证据地图 | TECHNICAL-VERIFICATION.md |
| PQC 就绪状态 | 抗量子就绪状态 |