2.0 KiB
2.0 KiB
UX 授权端接口说明
本文档描述当前 UX 服务端实现的授权对接接口与职责边界。
1. 职责边界
- UX 只与工具箱交互(HTTP RPC),不直接与手机 App 交互。
- 手机 App 仅承担扫码和与管理平台联网通信。
- 报告签名流程由工具箱上传原始 ZIP 到 UX,UX 返回已签名 ZIP。
2. 设备注册
device.register
- 输入:
licence、platformPublicKey - UX 在本机采集设备特征并计算
fingerprint - UX 将
licence + fingerprint + 公钥 + PGP 密钥对持久化到数据库
3. 核心加密接口
3.1 设备授权二维码密文
crypto.encryptDeviceInfo
- 使用平台公钥 RSA-OAEP 加密:
{ licence, fingerprint } - 返回 Base64 密文(工具箱用于生成二维码)
3.2 任务二维码解密
crypto.decryptTask
- 密钥:
SHA256(licence + fingerprint) - 算法:AES-256-GCM
- 输入:任务二维码中的 Base64 密文
- 输出:任务 JSON
3.3 摘要二维码加密
crypto.encryptSummary
- 密钥派生:HKDF-SHA256
ikm = licence + fingerprintsalt = taskIdinfo = "inspection_report_encryption"
- 算法:AES-256-GCM
- 输出:
{ taskId, encrypted }JSON(工具箱用于生成二维码)
3.4 原始 ZIP 签名打包(最终报告)
crypto.signAndPackReport
- 输入:
rawZip(multipart/form-data文件字段) +taskId+inspectionId+enterpriseId+summary - UX 在服务端完成:
- 校验并解包原始 ZIP
- 计算文件 SHA-256
- HKDF + HMAC 生成
deviceSignature - 生成
summary.json - 生成
META-INF/manifest.json - OpenPGP 分离签名生成
META-INF/signature.asc - 重新打包为 signed ZIP
- 输出:签名后 ZIP 文件(二进制响应,
application/zip)
4. 安全约束(签名打包)
- 拒绝危险 ZIP 路径(防 Zip Slip)
- 限制原始 ZIP 和单文件大小
- 强制存在以下文件:
assets.jsonvulnerabilities.jsonweakPasswords.json漏洞评估报告*.html