SM2 前端集成联调验证 — 2026-06-25

摘要

SM2 前端整套链路在 Tauri 开发环境下验证全部通过。整条国密加密通信链路一共 11 项用例,11/11 全部 PASS。

一、环境启动验证

执行命令:npm run tauri dev

  1. Rust 编译耗时:3.80s,开发配置构建无报错
  2. 桌面窗口正常拉起,密钥仓库 KeyStore 初始化干净,无残留会话
  3. 运行环境版本:

二、全链路测试结果

执行脚本:scripts/verify-sm2-browser.mjs

序号测试项目结果
1SM3 哈希自测(标准向量 + 空字符串 + 长文本)✅
2SM4-GCM 加密/解密往返(随机密钥)✅
3SM2 密钥生成 + 签名/验签往返(标准向量)✅
4密文篡改拦截校验✅
510KB长文本(9.2K字符):加密 25.6ms / 解密 18.2ms✅
6非法密钥自动拒绝✅
7空字符串加解密(边界处理)✅
8ECDSA-P256 与 SM2 签名互不混淆✅
9消息信封字段格式合规校验✅
1010组独立SM4密钥生成无冲突✅
11桥接全流程自测:密钥生成→签名→验签→加密→解密→ECDH协商✅

三、调用链路完整覆盖

sm2-ec-browser.js(底层椭圆运算,TVLA 5/5 通过)
→ sm3-browser.js
→ sm4-browser.js(AEAD认证加密)
→ sm2-bridge.js(桥接层七项接口封装)
→ message-gm.js(双棘轮 + SM2-SM4混合加密)
→ main.js(上层聊天业务、密钥管理、P2P直连模式)

四、前端资源加载链(main.html)

sm2-ec-browser.js → sm3-browser.js → sm4-browser.js → sm2-bridge.js → message-gm.js → security-levels.js → main.js

共计 12 个密码学模块,加载顺序正常,无缺失、无脚本阻塞。

五、关键勘误与环境说明

  1. 接口名称修正:原规划的 encryptWithSM2 与 decryptWithSM2 改为 encryptWithSM4 与 decryptWithSM4,SM2 仅用于 ECDH 密钥协商
  2. 桥接自测依赖浏览器 localStorage;在 Node 命令行运行测试需要补齐存储 polyfill
  3. Tauri 开发地址锁定:http://localhost:3002
  4. 消息信封格式:{"v":1,"k":"","c":"","iv":"","tag":""}

六、安全审计完成状态

七、本次同步上线的配套模块

  1. SLH-DSA WASM:WebWorker 异步加载,不阻塞 UI 主线程
  2. OPK 预密钥客户端:公钥打包扩展 gmPublicKey,复用现有接口
  3. PQC 国密混合模式:SM2 ECDH + ML-KEM-768 双层密钥协商

八、链接入口

完整性能指标、高阶 TVLA 侧信道测试数据详见附件文档。