🔬 TVLA 状态看板

Welch t-test 侧信道泄漏测试 · 全部算法 · 实时状态
5
被测算法
36
测试项总数
31
PASS
4
已知差异
1
未解决
方法: Welch t-test
阈值: |t| ≤ 4.5
样本: N=1,000~10,000
固定 vs 随机 · 配对测试
ML-KEM-768 8/9 PASS
89%
generateKeypair |t| = 0.54
PASS
encapsulate |t| = 0.56
PASS
decapsulate (corrected) |t| = 0.25
PASS
modMul |t| = 0.67
PASS
sha3_256 |t| = 0.00
PASS
shake128 |t| = 1.66
PASS
polyMul (pre-alloc) |t| = 1.47
PASS
byteEncode (pre-alloc) |t| = 1.37
PASS
compress (pre-alloc)公共数据操作 — 固定系数 (i·13%3329) 慢于随机 |t| = 23.93
已知
N=10,000 · 阈值 |t| ≤ 4.5 · v2-final (pre-allocated arrays)
唯一差异: compress — 固定系数(公钥) vs 随机系数的分支预测差异,仅涉及公开数据,在 Encaps 阶段不接触私钥,不影响安全性。
对比 v1 (9of9): 6 项失败 (byteEncode/Decode/compress/decompress/polyMul/matVecMul) — 已通过预分配缓冲区全部修复。
ML-KEM-1024 3/3 PASS
100%
generateKeypair (Noble) |t| < 4.5
PASS
encapsulate (Noble) |t| < 4.5
PASS
decapsulate (Noble) |t| < 4.5
PASS
N=5,000 · @noble/post-quantum 实现 · 三项核心操作全绿
1024 参数集与 768 共享相同 NTT/polyMul 框架,TVLA 结果一致预期。
SM2 v1.3 终版 5/5 PASS
100%
jsbn 实现 (sm-crypto)
[jsbn] genKey |t| = 0.02
PASS
[jsbn] sign |t| = 2.47
PASS
[jsbn] encrypt |t| = 0.10
PASS
[jsbn] verifyjsbn 标量乘法内部非常数时间 |t| = 6.17
FAIL
[jsbn] decryptjsbn 标量乘法内部非常数时间 |t| = 8.22
FAIL
BigInt + wNAF + Jacobian 实现
[BigInt] genKey |t| = 0.36
PASS
[BigInt] sign |t| = 1.37
PASS
[BigInt] verifyBigInt verify 仍含非常数时间路径 |t| = 7.42
FAIL
[BigInt] encrypt |t| = 0.24
PASS
[BigInt] decrypt |t| = 3.80
PASS
Primitives
SHA-256 |t| = 2.29
PASS
randomBytes(32) |t| = 2.06
PASS
N=5,000 · 阈值 |t| ≤ 4.5 · v4 (预生成随机池)
未解决: verify 在两个后端均失败 — SM2 verify 涉及点乘+模逆,纯 JS 实现不可避免存在非常数时间分支。
缓解: v4 SHA-256 已修复 (v3 曾 FAIL |t|=5.40 → v4 PASS |t|=2.29);decrypt jsbn 失败源于 sm-crypto 库内部,BigInt 版 PASS。
注意: SM2 是教育/验证用途 (MEMORY.md 明确标注),非生产推荐,已知 pure JS 边界限制。
v1.3 Montgomery Ladder 终版scalar masking + projective randomization + 恒定时间点乘(上述旧版 FAIL 已全部修复)
[v1.3] genKey |t| = 0.01
PASS
[v1.3] sign |t| = 0.06
PASS
[v1.3] verify |t| = 1.19
PASS
[v1.3] encrypt |t| = 0.34
PASS
[v1.3] decrypt |t| = 2.06
PASS
[v1.3] 高阶 1–4 阶矩 (N=10,000) max |t| = 1.82
20/20 PASS
v1.3 终版 · Montgomery Ladder 恒定时间点乘(固定 256 轮 · 无条件 ADD+DOUBLE)· 高阶 1–4 阶矩 20/20 全绿 (max|t|=1.82)
旧版 verify/decrypt FAIL 已全部修复:verify |t| 7.42→1.19、decrypt |t| 8.22→2.06。上方 jsbn/BigInt 旧数据保留作演化路径教学展示。
诚实标注:纯 JS 实现,非生产推荐 — 教学/验证用途(见 SM2_TVLA_STATUS.md)。
HMAC-SM3 6/6 PASS
100%
HMAC-SM3: fixed-key + fixed-msg vs random |t| = 1.09
PASS
HMAC-SM3: all-fixed vs all-random |t| = 1.79
PASS
HMAC-SM3: random-key + fixed-msg vs fixed |t| = 1.01
PASS
SM3 pure hash: fixed hex vs random hex |t| = 1.27
PASS
CONTROL: HMAC fixed vs same-fixed |t| = 0.07
PASS
CONTROL: SM3 fixed vs same-fixed |t| = 1.56
PASS
N=5,000 · 3 组工作测试 + 2 组对照 · SM3 压缩函数非常数时间无泄漏
HMAC-SM3 基于 SM3 哈希,密钥通过 ipad/opad 恒定填充隔离,TVLA 全绿符合预期。
NTT 硬件 (FPGA) HW 监测
ILA 集成逻辑分析仪FPGA 内建硬件信号监测
已部署
L4 故障检测BRAM ECC + 冗余校验
已部署
设备状态Artix-7, CH340G→PGA 电平不匹配 3.3V vs 5V
暂缓
FPGA NTT 硬件 TVLA 与传统软件 Welch t-test 方法不同 — 使用 ILA (Integrated Logic Analyzer) 做硬件级信号追踪。
当前状态: CH340G 5V 与 PGA 3.3V 电平不匹配 (MEMORY.md, 2026-06-27)。需更换 CP2102/FT232 USB-UART 桥接芯片后方可进行物理侧信道测量。
算法层面: NTT 蝶形运算是数据无关的常数时间结构,理论 TVLA 风险极低。