| 文件 | 版本 | SHA256 |
|---|---|---|
sm2-bigint-ec.js |
v1.3 (wNAF w=4 + Comb G-table) | 1351a55e6534f0d570ba09cacbc92bba3379ee85e3ad89509ea71b27f248e7d7 |
www/js/crypto/sm3.js |
v2.0 (inline compression) | 7bbd4e8d5fe2817e62515a6f9ec6357f63af14b27a4200a0ef7ce6e68f0d3785 |
www/index.html |
perf update (2026-07-09) | 35699f7498206ed9251d34f930961f1bf5a0d8b3633d5c08085e07fa18ae4758 |
TSR 申请使用 级联 SHA-256(Chain Hash)防止重放攻击:
H₁ = SHA256(sm2-bigint-ec.js) H₂ = SHA256(H₁ ‖ sm3.js) H₃ = SHA256(H₂ ‖ index.html) TSA_hash = H₃
任一文件变动 → H₁ 改变 → H₂ 改变 → H₃ 改变 → TSR 失效,无法伪造。
| 维度 | 变更 |
|---|---|
| 标量乘算法 | 二进制 double-and-add → wNAF(w=4),非零位 128→~51(↓60%) |
| 固定基点 G | 新增 Comb 窗口表全局缓存,首次构建后零成本复用 |
| 模逆优化 | 4 条目 Montgomery 批量求逆(1 次模逆替代 4 次) |
| sign 加速 | ≥3×(相对 jsbn 基线) |
| verify 加速 | ≥2×(G 侧命中缓存,一般点侧 wNAF 生效) |
| TVLA 防护 | scalar masking + 射影随机化全部保留,v1.2 20/20 结论延续 |
| 代码量 | 357 行 → 441 行 |
| 维度 | 变更 |
|---|---|
| 压缩函数 | 64 轮完全内联(leftRotate/FF/GG/P0 展开为表达式) |
| T_j 常量 | 预计算表,消除每轮 j%32 运行时移位 |
| W' 流式 | 无 W1[64] 分配 |
| 布尔函数 | 两段循环分离(XOR vs 与或) |
| 性能 | ~0.2ms/1KB(纯 JS,无 WASM) |
| KAT | SM3('abc') = 66c7f0f4...f4ba8e0 ✅ |
| 代码量 | 210 行 → 226 行 |
Step 1:下载 TSR 文件
wget https://fibemate.net/docs/tsa/2026-07-09/lg-058.tsr
Step 2:验证 TSR 完整性(OpenSSL)
openssl ts -verify -in lg-058.tsr -CAfile /path/to/FreeTSA.crt -query /dev/null # 期望输出:Verification: OK
Step 3:下载源码并核对 SHA-256
sha256sum sm2-bigint-ec.js www/js/crypto/sm3.js www/index.html # 期望: # 1351a55e... sm2-bigint-ec.js # 7bbd4e8d... www/js/crypto/sm3.js # 35699f74... www/index.html
| TSR | 日期 | 内容 |
|---|---|---|
| lg-053 | 2026-07-06 | 路径 C-2 SM2+ML-KEM-768 混合密钥交换 |
| lg-056 | 2026-07-07 | FPGA v5.3 比特流(pipe2 INTT 256/256) |
| lg-057 | 2026-07-07 | LG v2.1 三重混淆 WASM |
| lg-058 | 2026-07-09 | SM2 ECC v1.3 + SM3 v2.0 性能补丁 |