❓ FIBEMATE 常见问题

更新于 2026-06-25 · ← 返回首页

基础

Q1: FIBEMATE 是什么?

一个端到端加密即时通讯技术研究项目,核心技术特点:

Q2: 和 Signal / WhatsApp 有什么区别?

维度SignalFIBEMATE
密钥封装ECDH (X25519)ML-KEM-768 (后量子)
量子安全❌ 不抵抗✅ 抵抗
国密支持✅ SM2/SM3/SM4
侧信道审计部分TVLA 10k+ 全通过

Signal 使用经典的 X25519 ECDH,在量子计算机下不保证安全。FIBEMATE 的 ML-KEM-768 基于格密码(Kyber),理论上抵抗 Shor 算法。

密码学

Q3: 私钥存在哪里?会被盗吗?

私钥不落盘。ML-KEM-768 私钥始终存在于 WebView 内存,不写入 localStorage、文件系统或服务器。

ECDH 身份密钥存储在 IndexedDB,但标记为 extractable: false(WebCrypto non-extractable),无法导出原始密钥材料。攻击者即使获得文件系统访问权,也无法提取私钥。

Q4: ML-KEM-768 安全吗?NIST 批准了吗?

ML-KEM-768 基于 Kyber-768,NIST 于 2024 年 8 月正式标准化为 FIPS 203。它是:

FIBEMATE 的实现通过了 KAT 10,000/10,000(已知答案测试)和 TVLA 10,000(侧信道验证)。

Q5: Double Ratchet 是什么?为什么需要它?

Double Ratchet 是 Signal 协议的核心机制,确保:

  1. Forward Secrecy(前向安全):即使长期密钥泄露,历史消息仍无法解密
  2. Post-Compromise Security(后泄露安全):攻击者停止窃听后,未来消息自动恢复安全
  3. 每条消息独立密钥:不存在"主密钥",单条密钥泄露不影响其他消息

FIBEMATE 将 ML-KEM-768 作为 Ratchet 的初始密钥交换(替代 X3DH),后续消息使用 Double Ratchet 轮转。

Q6: 什么是 TVLA?结果怎么看?

TVLA(Test Vector Leakage Assessment)是侧信道安全的标准评估方法(Goodwill et al. 2011, NIST NIAT Workshop)。用 Welch's t-test 检测密码学操作是否泄漏密钥信息:

FIBEMATE SM2 实现经过 3 轮 TVLA 测试:

版本N结果关键改进
v1.0 wNAF2,00010/10 ✓基线实现
v1.2 Masked5,0005/5 ✓Scalar Masking + Projective Randomization
v1.3 Montgomery5,0007/7 ✓Montgomery Ladder 恒定时间点乘
高阶 TVLA5,00020/20 ✓1–4 阶矩全通过

完整报告:SM2 TVLA 侧信道分析

⚠️ 重要说明:TVLA 验证的是时序侧信道泄露(Timing Side-Channel),是密码工程的安全基线,但不等于形式化安全证明。TVLA 通过不表示实现能抵抗物理/电磁/故障注入等主动攻击。攻击论文(如模板攻击、格攻击、故障注入)研究的攻击方法与 TVLA 验证的是不同威胁模型,不应混为一谈。

开发

Q7: 为什么不用 Electron,选 Tauri?

维度ElectronTauri v2
打包体积~150 MB~10 MB
内存占用~300 MB~50 MB
后端语言Node.jsRust (零成本抽象)
原生性能JS 引擎Rust 原生编译
WebViewChromium 内嵌系统 WebView(Edge/WebKit)

Tauri 用 Rust 写后端、系统 WebView 做前端,体积小 15 倍,内存省 6 倍,且 Rust 的密码学实现更安全(无 GC 时序、确定性内存管理)。

Q8: 怎么能看到我的代码在做什么?

打开 DevTools:

  1. 右键 FIBEMATE 窗口 → Inspect(或 F12)
  2. Console 中运行 window.MLKEM768.keygen() 等测试命令
  3. Network 标签可查看 WebSocket 连接

Q9: 怎么验证构建是否安全?

# 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

部署 & 运维

Q10: FIBEMATE 可以自部署吗?

可以。计划于 2026.08.31 以 GPLv3 开源:

  1. 部署自己的信令服务器(backend/ 目录)
  2. 修改 CSP 配置指向你的域名
  3. 打包自定义应用

后端基于 Node.js + Express + WebSocket,轻量部署在 1 核 1G 服务器即可。

Q11: 时间戳存证是什么?

FIBEMATE 所有关键文档(TVLA 报告、验证报告、技术文档)通过 FreeTSA RFC 3161 + DigiCert 双源时间戳 存证。这提供了:

Q12: PQC 混合握手是什么?和纯 ML-KEM 有什么区别?

PQC 混合握手(路径 C) 是 FIBEMATE 当前采用的密钥交换方案:

与纯 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 就绪状态抗量子就绪状态

免责声明

  1. 关于 TVLA 验证:本项目的 SM2 实现已完成 Test Vector Leakage Assessment (TVLA) 验证(Welch's t-test,N=5,000/10,000,阈值 |t| < 4.5)。该测试用于检测实现中是否存在可被利用的时序侧信道泄露(Timing Side-Channel),是评估密码实现侧信道抵抗能力的行业通用方法,但不能等同于形式化安全证明。TVLA 通过不表示实现能抵抗物理攻击(功耗分析、电磁辐射分析)、故障注入攻击(激光、电压毛刺)、或微架构侧信道攻击(缓存、分支预测)等不同威胁模型下的攻击。
  2. 关于后量子与国密集成:ML-KEM-768 与 SM2 的实现均基于 NIST FIPS 203 与 GM/T 标准进行技术验证。KAT 向量验证和 TVLA 验证结果仅代表参考实现在特定测试条件下的正确性与侧信道抵抗能力,不代表任何商业产品的合规认证。
  3. 非商密认证说明:本项目中 SM2/SM3/SM4 国密算法的实现仅为技术研究与验证目的,未经过国家密码管理局商用密码产品认证,不适用于需要国密认证的商业或政务场景。
  4. 第三方存证声明:代码已通过 DigiCert 与联合信任(tsa.cn)进行时间戳存证。存证仅用于记录代码在特定时间点的完整性,不构成对代码安全性的第三方背书或担保
  5. 参考文献与攻击论文的区别:本文档中引用的参考文献均为 TVLA 方法论和侧信道工程实践的基础文献。密码学文献中存在大量针对 ECDSA/SM2 的理论攻击论文(如格攻击、模板攻击、故障注入攻击),这些攻击方法与 TVLA 验证属于不同的威胁模型和安全评估范畴,不应混为一谈,也不宜作为 TVLA 验证的佐证引用。