软件验收工作与技术总结
本页整理自《信息安全传输软件 软件验收工作与技术总结》V3(文件编号 IIE-MCS-ISTCS-SDSR),按原文章节结构提炼为可抄录页面:正文表述、全部表格(函数列表、密钥类型、通信命令码、数据库表、指标完成情况表)与错误码均忠于原文,未做新增或删减;原文中带【】的编者批注、留空标题一并保留。原文"2.4 接口设计"约 4000 行接口明细(路径、参数、请求/响应示例)不在本页重复,统一索引至 接口设计详录。
例外说明:原文 3.1、3.2、3.3、4.1 及第五章仅有标题、正文留空。为满足交付文档完整性要求,本页已根据项目实际研制成果补写上述五节,补写内容均以"【编者补充】"开头显式标识,正式 Word 定稿时可结合甲方意见直接保留或调整。
文档信息
| 项 | 内容 |
|---|---|
| 密级 | 公开 |
| 文件编号 | IIE-MCS-ISTCS-SDSR |
| 文档版本 | V1.0 |
| 编制/修订日期 | 2026.05.27 |
| 项目名称 | 风云四号02批气象卫星工程C星地面系统 MCS信息安全传输控制软件 |
| 项目编号 | IIE-MCS-ISTCS |
| 承担部门 | 第二研究室 |
| 承担单位 | 中国科学院信息工程研究所 |
版本信息
| 版本/状态 | 作者 | 参与者 | 编制/修订历史时间 | 备注(修改单号) |
|---|---|---|---|---|
| 1.0 | 李子孚 | 周越洋 | 2026-05-27 | 编制第一版文件 |
一、概述
1.1 项目概况
MCS信息安全传输控制软件项目由北京华云星地通科技有限公司委托中国科学院信息工程研究所进行开发,最终用户为国家卫星气象中心。
FY-4C_MCS 作为风云四号 C 星星地系统的指挥控制中心,负责卫星和地面应用系统的星地一体化指挥控制,各类任务管理,卫星安全管理,地面应用系统的调度控制,星地系统业务运行状态监视,业务运行的配置与管理和地面应用系统的数据传输管理。
在业务运行过程中,FY-4C_MCS 需要处理海量的气象观测数据及控制指令传输任务。面对在外部交互信息过程中的气象数据的完整性、机密性和可用性需求,系统亟需构建与之匹配的 MCS 信息安全传输控制软件,重点覆盖以下三类业务场景:
- 移动设备观测需求信息传输。移动终端通过互联网向 MCS 系统请求气象数据时,必须严格验证终端身份与访问权限,确保仅限授权设备获取数据,同时采用加密传输机制防止数据在传输过程中被窃取或篡改。
- 主站与灾备站间信息传输。北京主站与乌兰察布灾备站之间传输任务时间表、调度指令等关键业务数据时,需建立安全可信的传输通道,确保数据全程加密且完整无损,防止敏感信息泄露或被恶意破坏。
- 数据外部流转溯源。气象数据在对外共享前,需嵌入可验证的身份标识与来源信息,确保共享数据真实可信,并支持全流程的可溯源性,为数据使用的版权保护及责任界定提供可靠依据。
MCS 信息安全传输控制软件项目的核心目标是构建一套完善的气象数据安全传输保障体系。项目将重点建立安全可信的传输机制,实现移动终端与 MCS 系统间的双向身份认证与权限管控,构建主站与灾备站间的端到端加密传输通道,确保气象数据在传输过程中的完整性与机密性。同时,完善数据溯源与版权保护体系,通过开发基于数字水印的数据标识与溯源技术,实现气象数据流转过程的追踪审计。提升系统整体安全防护能力,满足移动设备观测、主站灾备传输和数据外部流转等核心业务场景的安全需求。
通过项目实施,提升气象数据在授权、传输、共享等环节的安全保障能力,有效防范数据泄露、篡改等安全风险,为 FY-4C_MCS 系统提供全方位的数据安全防护,为气象业务系统的稳定可靠运行奠定坚实的技术基础。
1.2 研制要求
1.2.1 功能要求
风云四号02批气象卫星工程C星地面系统 MCS 信息安全传输控制软件实现的主要功能如下:
- 观测需求信息传输安全支撑:具备对观测需求专用移动设备的认证功能,提供对身份鉴别信息、观测需求申请及回复信息等的传输机密性和完整性保护,能够根据观测需求专用移动设备所在位置、用户级别、终端授权状态进行访问控制。
- 主站与灾备站间传输安全支撑:能够对部署在北京地面站的 MCS 与乌兰察布备份站的 MCS 之间传输的重要信息进行机密性和完整性保护,重要信息包括任务时间表、调度令、公共配置参数等。
- 风云四号02批气象卫星工程C星地面系统重要数据传输安全支撑:能够对 FY4C 地面系统中的 L0 数据提供数据篡改检测及数据溯源能力,能够对图像数据提供版权保护能力。
本软件由传输加密子系统、鉴权及策略管理子系统、用户管理子系统、设备管理子系统和密钥管理子系统、图像数据版权保护接口库、L0 数据溯源及篡改检测接口库等组成。
1. 传输加密子系统
- 具备数据加密传输功能:对部署在 DMZ 区的观测需求申请服务与观测需求专用移动设备之间传输的身份鉴别信息、观测需求申请及回复信息进行加密处理;对部署在北京地面站的 MCS 与乌兰察布备份站的 MCS 之间传输的重要信息进行加密处理。
- 具备数据完整性保护功能:通过使用消息认证码(MAC)或数字签名,确保传输数据的完整性,防止数据在传输过程中被篡改。
- 具备密钥协商与交换功能:支持在 DMZ 区的观测需求申请服务与观测需求专用移动设备之间安全地协商和交换会话密钥,确保双方能够使用相同的会话密钥进行数据加密和解密。
- 提供观测需求申请专用密码服务 Python 接口,提供地面站专用密码服务 C 语言接口。
- 支持符合国家密码法规和标准规定的商用密码算法。
2. 鉴权及策略管理子系统
- 具备用户身份认证功能:支持用户名口令认证、短信验证码两种鉴别技术。
- 具备权限管理功能:采用 CoAC 访问控制模型,根据用户的属性(角色、用户级别等),为用户分配不同的操作权限,如观测需求申请、审核、撤销等权限,确保用户只能访问和操作其被授权的资源。
- 具备访问控制功能:根据预设的访问控制策略,对观测需求申请进行控制和过滤,阻止未授权的访问行为,包括限制特定 IP 地址段的访问、允许在特定时间段内访问、允许指定地理位置接入时访问。
- 具备策略制定与更新功能:提供策略制定和管理功能,管理员可以根据 MCS 业务需求和安全要求,制定和更新鉴权策略、访问控制策略等,并确保策略的有效实施。
- 具备访问控制策略冲突检测功能:支持的属性数据类型 ≥3 类,支持的匹配运算符型 ≥4 类。
3. 用户管理子系统
- 具备用户信息管理功能:支持用户基本信息的存储和管理,如用户名、密码(加密存储)、姓名、联系方式等,支持对用户信息的添加、修改、删除等操作。
- 具备用户注册与注销功能:支持用户注册,支持新用户自行创建账号和管理员创建账号 2 种操作模式;支持账号批量注销。
- 具备用户角色管理功能:支持为不同用户分配不同的角色,如管理员、普通用户、访客等,不同角色具有不同的权限和操作范围,便于进行统一的权限管理。
- 具备用户状态管理功能:支持的用户状态包括激活、冻结、禁用等,根据用户的行为或 MCS 系统安全需求,对用户状态进行相应的调整,当用户多次输入错误密码时,自动冻结用户账号。
4. 设备管理子系统
- 具备设备信息管理功能:支持设备(Pad)基本信息的存储和管理,如设备唯一标识、资产责任人、联系方式等,支持对设备信息的添加、修改、删除等操作。
- 具备设备注册与状态管理功能:支持管理员注册、挂失设备,支持设备年审,支持的设备状态包括激活、挂失、年审、禁用等;合法用户使用注册且年审激活的设备获取观测需求申请服务,合法用户无法使用其他设备访问观测需求申请服务;根据设备被使用的行为或 MCS 系统安全需求,对设备状态进行相应的调整,包括非法登录行为数量超过指定阈值时,自动禁用设备。
5. 密钥管理子系统
- 具备密钥生成功能:支持采用符合国家密码法规和标准规定的商用密码算法的密钥生成;采用标准化接口,方便与 MCS 系统集成。
- 具备密钥安全存储功能:采用 Ukey 等防止密钥被非法获取。
- 具备密钥分发功能:支持将密钥安全地分发给需要使用的用户或系统组件,确保密钥在分发过程中的保密性和完整性,通过安全通道或密钥交换协议进行密钥分发。
- 具备密钥更新与撤销功能:定期更新密钥,以提高系统的安全性;当密钥泄露或不再需要使用时,及时撤销密钥,确保密钥的使用处于可控状态。
- 支持密钥分级:支持系统主密钥、用户密钥和会话密钥三级密钥体系。
6. 图像数据版权保护接口库
- 提供图片气象数据水印嵌入接口:支持根据授权用户标识、下载时间等信息生成具有唯一标识的动态水印,并以不可见方式嵌入。
- 提供图片气象数据水印提取接口。
7. L0 数据溯源及篡改检测接口库
- 提供 L0 数据封装接口:使用此接口可对 L0 数据进行溯源信息封装,确保数据的传输可靠性。
- 提供 L0 数据解封装接口:使用此接口可对 L0 数据解封装的同时进行数据篡改检测,确保数据的完整性。
1.2.2 技术指标
1. 传输加密子系统技术指标
- 完整性保护支持符合国家密码法规和标准规定的商用密码算法,采用的 SM3 杂凑 ≥1.2 Gbps。
- 机密性保护支持符合国家密码法规和标准规定的商用密码算法,采用的 SM4 ECB 加解密 ≥6 Gbps。
2. 鉴权及策略管理子系统技术指标
- 支持用户名口令认证、短信验证码两种身份鉴别方式。
- 用户身份认证支持符合国家密码法规和标准规定的商用密码算法,采用的 SM2 签名 ≥1000 次/s、SM2 验签 ≥500 次/s。
- 访问控制策略冲突检测,支持的属性数据类型 ≥3 类,支持的匹配运算符型 ≥4 类。
3. 用户管理子系统技术指标
- 支持用户自行创建账号和管理员创建账号 2 种操作模式。
- 管理员角色支持批量激活、注销、禁用普通用户。
4. 设备管理子系统技术指标
- 支持注册、挂失、年审、禁用设备。
- 支持设备状态批量更新。
5. 密钥管理子系统技术指标
支持系统主密钥、用户密钥和会话密钥三级密钥体系。
6. 图像数据版权保护接口库技术指标
- 水印嵌入和提取接口兼容主流气象数据格式,包括 JPG、PNG。
- 支持 Linux 操作系统,提供 C 和 Python 接口库。
7. L0 数据溯源及篡改检测接口库技术指标
支持 Linux 操作系统,提供 C 和 Python 接口库。
二、技术方案
2.1 总体结构
MCS 信息安全传输控制软件包括观测需求信息传输安全支撑、主站与灾备站间传输安全支撑和地面系统重要数据传输安全支撑三个部分,成果物包括 5 个子系统和 2 个接口库,部署位置如图 2-1 所示。
图 2-1 系统部署图(原文插图,Word 版保留原图)
- 国家卫星气象中心 DMZ 区的 MCS 服务器部署鉴权及策略管理子系统、密钥管理子系统、用户管理子系统、设备管理子系统、传输加密子系统,为观测需求终端请求 MCS 的观测服务提供身份认证、传输加密等服务。
- 北京气象地面站和乌兰察布气象地面站的 MCS 服务器部署传输加密子系统,为 2 个地面站间的气象数据传输提供机密性和完整性保护。
- 国家卫星气象中心的气象数据业务系统服务器部署 L0 数据溯源及篡改检测接口库,为 L0 数据提供篡改检测和溯源能力;气象图片存储服务器部署图像数据版权保护接口库,为气象图片提供版权保护能力。
系统模块划分如图 2-2 所示,鉴权及策略管理子系统、密钥管理子系统、用户管理子系统、设备管理子系统为 Web 后台,观测需求终端上部署专用 APP 内嵌浏览器插件访问上述四类服务;传输加密子系统为后台程序形态,为 MCS 系统提供加解密和 token 有效性验证服务;设备管理子系统同时管理 PCIE 密码卡、Pad 终端(TF)卡等。
图 2-2 系统总体架构(原文插图)
前后端分离总体架构图如图 2-3 所示。访问层以华为鸿蒙平板作为终端入口,前端分为 Web 和鸿蒙 Next 原生 APP 两部分。Web 主要采用 JavaScript、ElementPlus 和 Vue3 技术栈构建界面,基于 Vue-router 和 Pinia 实现页面路由逻辑与状态管理。Web 端通过 JSBridge 实现鸿蒙原生能力调用和前后端数据交互的桥梁。APP 端通过 Axios 交互发送 Post/Get 请求完成数据传输。后端划分为鉴权及策略管理、密钥管理、用户管理和设备管理。最终数据以 MySQL 作为持久化存储载体落地数据库,底层基础设施依托操作系统、中间件等提供运行环境支撑。
图 2-3 前后端分离总体架构图(原文插图)
2.2 模块设计
2.2.1 传输加密子系统
传输加密子系统主要模块设计如图 4-1 所示,各模块功能描述如下:
图 4-1 传输加密子系统功能模块图(原文插图)
1)接口模块
本模块负责对外提供密码服务接口,支持国密 SM2、SM3、SM4 算法调用,具体接口包括:①提供 C 语言密码设备应用接口库,调用 PCIE 密码卡,完成北京地面站 MCS 和乌兰察布备份站 MCS 间数据的加密和完整性保护;②为 MCS 服务器提供 Python 接口库,调用 PCIE 密码卡,解密观测请求,加密观测请求反馈消息;③为观测需求专用终端提供 Web JS 接口,用于调用 TF 卡,加密观测请求,解密观测需求应答。
为备份站提供标准的密码设备应用接口如表 4-1 所示。
表 4-1 备份站安全传输函数接口列表
| 分类 | 函数名 | 功能 |
|---|---|---|
| 设备管理类 | SDF_OpenDevice | 打开设备 |
| SDF_CloseDevice | 关闭设备 | |
| SDF_OpenSession | 创建会话 | |
| SDF_CloseSession | 关闭会话 | |
| SDF_GetDeviceInfo | 获取设备信息 | |
| SDF_GenerateRandom | 产生随机数 | |
| SDF_GetPrivateKeyAccessRight | 获取私钥使用权限 | |
| SDF_ReleasePrivateKeyAccessRight | 释放私钥使用权限 | |
| 密钥管理类 | SDF_ExportSignPublicKey_ECC | 导出 ECC 签名公钥 |
| SDF_ExportEncPublicKey_ECC | 导出 ECC 加密公钥 | |
| SDF_GenerateKeyPair_ECC | 产生 ECC 非对称密钥对并输出 | |
| SDF_GenerateKeyWithIPK_ECC | 生成会话密钥并用内部 ECC 公钥加密输出 | |
| SDF_GenerateKeyWithEPK_ECC | 生成会话密钥并用外部 ECC 公钥加密输出 | |
| SDF_ImportKeyWithISK_ECC | 导入会话密钥并用内部 ECC 私钥解密 | |
| SDF_GenerateAgreementDataWithECC | 生成密钥协商参数并输出 | |
| SDF_GenerateKeyWithECC | 计算会话密钥 | |
| SDF_GenerateAgreementDataAndKeyWithECC | 产生协商数据并计算会话密钥 | |
| SDF_ExchangeDigitEnvelopeBaseOnECC | 基于 ECC 算法的数字信封转换 | |
| SDF_GenerateKeyWithKEK | 生成会话密钥并用密钥加密密钥加密输出 | |
| SDF_ImportKeyWithKEK | 导入会话密钥并用密钥加密密钥解密 | |
| SDF_DestroyKey | 销毁会话密钥 | |
| 非对称类 | SDF_ExternalVerify_ECC | 外部密钥 ECC 验证 |
| SDF_InternalSign_ECC | 内部密钥 ECC 签名 | |
| SDF_InternalVerify_ECC | 内部密钥 ECC 验证 | |
| SDF_ExternalEncrypt_ECC | 外部密钥 ECC 公钥加密 | |
| 对称类 | SDF_Encrypt | 对称加密 |
| SDF_Decrypt | 对称解密 | |
| SDF_CalculateMAC | 计算 MAC | |
| 杂凑 | SDF_HashInit | 杂凑运算初始化 |
| SDF_HashUpdate | 多包杂凑运算 | |
| SDF_HashFinal | 杂凑运算结束 | |
| 文件类 | SDF_CreateFile | 创建文件 |
| SDF_ReadFile | 读取文件 | |
| SDF_WriteFile | 写文件 |
为 MCS 服务器提供 Python 接口如表 4-2 所示。
表 4-2 MCS 服务器安全传输函数接口列表
| 分类 | 函数名 | 功能 | 参数说明 |
|---|---|---|---|
| 初始化 | MCS_init | 初始化 | 配置文件地址 |
| 密码运算类 | MCS_Encrypt_Sign | 会话密钥加密数据,设备私钥签名 | 用户 ID,待加密数据 |
| MCS_Decrypt_verify | 会话密钥解密数据,设备公钥验签 | 用户 ID,待解密数据 |
为观测需求专用终端提供 Web JS 接口如表 4-3 所示。
表 4-3 MCS WebJS 函数接口列表
| 分类 | 函数名 | 功能 | 参数说明 |
|---|---|---|---|
| 密码运算类 | SKF_Encrypt | 处理加密请求 | 待加密数据 |
| SKF_Decrypt | 处理加密请求 | 待解密数据 |
2)密码服务引擎
密码服务引擎主要用来接收应用程序发送的密码服务请求,并将密码服务请求的数据包发送给加密卡,同时接收加密卡返回的数据包,并将返回的数据包发送给对应的应用程序。
密码服务引擎在启动时,会根据当前宿主机的 CPU 核心数来创建同等数量的接收线程和发送线程,每个接收线程内创建一个消息队列用来循环接收应用程序发来的密码服务数据包,并转发给加密卡做密码算法运算,发送线程则循环读取加密卡返回的数据包,并根据应用程序线程号的不同将数据包返回给不同的应用程序。
3)密钥管理模块
对本机的设备保护密钥、设备公私钥和用户会话密钥等各类密钥等进行安全存储与管理。其中,用户会话密钥通过查询鉴权及策略管理子系统获得。
4)密码运算模块
负责实现支持符合国家密码法规和标准规定的商用密码算法,主要包括国密 SM2、SM3、SM4 算法,为密码运算提供支撑。
5)随机数产生模块
为密码运算、身份认证、会话密钥产生、抗重放等提供可靠的随机数。
6)配置管理模块
按照随机数自检、算法自检、密钥文件自检的顺序执行;进行算法和参数配置。
2.2.2 鉴权及策略管理子系统
鉴权及策略管理子系统主要模块设计如图 4-2 所示,各模块功能描述如下:
图 4-2 鉴权及策略管理子系统功能模块图(原文插图)
1)身份认证模块
身份认证整体流程如图 4-3 所示。基于口令、短信验证码双因素认证用户身份,通过设备私钥签名的设备唯一标识认证设备。
图 4-3 身份认证流程(原文插图)
具体地,Pad 终端上开发部署了身份认证专用 APP,APP 获取设备唯一标识 ID、当前时间戳 T、随机数 rand1,并用设备签名私钥签名 signpk(ID, T, rand1),将认证消息(ID, name, password, authCode, T, rand1, signpk(ID, T, rand1))反馈给鉴权系统。
鉴权系统校验时间戳的有效性,验证是否为重放数据包;时间戳校验通过后,根据设备唯一标识 ID,查找该设备的签名公钥,通过签名公钥对 signpk(ID, T, rand1) 验签,验证设备的合法性,通过用户名、口令和验证码验证用户身份的合法性。
2)密钥协商及会话密钥安全推送模块
观测需求专用终端、MCS 等业务系统之间的双向认证和密钥协商流程如图 4-4 所示。
图 4-4 密钥协商流程(原文插图)
鉴权系统验证登录设备和用户身份后,生成随机数 rand2,并使用鉴权系统的加密私钥加密设备 rand1、rand2,使用自己的签名私钥签名 (ID, rand1, rand2) 反馈上述消息到浏览器。浏览器依托专用 APP 存储的鉴权系统加密公钥解密出 rand1 和 rand2,对 signsk2(ID, rand1, rand2) 进行验签,验证鉴权系统身份,验证通过后,使用基于哈希的密钥派生函数和密钥材料,调用 TF 卡计算本次的会话密钥 SK=HKDF(ID, rand1, rand2),并将会话密钥存储在 TF 卡的安全存储区。
3)访问请求处理模块
解析和查询 Pad 接入位置、接入的 IP 地址段、访问时间等访问要素,为访问控制鉴权进行信息准备。
4)访问控制鉴权模块
接收鉴权请求,根据面向网络空间的访问控制模型进行权限判定。将广义时态、接入点、访问设备、网络及其安全属性的组合定义为场景,基于场景分配权限,表示信息访问实体仅能通过场景(广义时态、接入点、设备以及网络信息)获取相应权限。
在访问控制鉴权时,根据用户访问场景匹配策略,反馈决策结果。
5)策略管理及冲突检测模块
策略管理包括访问控制策略的增删改查,将角色定义为符合某些特定场景(时间、接入位置和接入的 IP 地址段)的访问要素为允许/拒绝,通过角色定义和用户-角色分配完成策略的定义。
冲突检测主要指静态冲突检测,是同一角色下定义的策略的访问场景有交集,但是策略动作不一致。在新增和修改策略时,该模块会提示是否与已有的策略冲突,以及冲突策略的定位。支持检测的属性数据类型包括整型(用户 ID)、字符串类型(接入点、经由网络类型)、浮点型(经纬度),支持的匹配运算符型包括大于等于、大于、小于等于、小于、等于。
2.2.3 用户管理子系统
用户管理子系统可以对 MCS 等系统的用户进行统一管理,包括管理员角色和普通用户角色。管理员用户负责注册、激活、注销、禁用普通用户,注册、挂失、禁用、激活设备;普通用户可登录 MCS 系统后,使用 MCS 的观测服务。用户管理子系统主要模块设计如图 4-5 所示,各模块功能描述如下:
图 4-5 用户管理子系统功能模块图(原文插图)
- 用户注册模块:出厂时预置管理员用户,仅管理员用户可进行用户注册,普通用户不可自行注册。
- 用户注销模块:普通用户具备自行注销功能,管理员具备批量注销用户功能。
- 用户激活模块:仅管理员用户可激活处于注册、禁用态的普通用户。
- 用户禁用模块:用户登录密码错误超过指定阈值,该模块自动设置用户状态为禁用。
- 用户信息管理模块:具备对用户信息的添加、修改、删除等功能;在数据库中对用户口令加密存储;为鉴权及策略管理子系统提供用户登录信息查询接口。
- 用户状态管理模块:负责维护用户注册、注销、禁用、激活状态机,状态转换如图 4-6 所示。
图 4-6 用户状态机管理(原文插图)
- 角色管理:系统包括管理员角色和普通用户角色。管理员角色具备用户管理、设备管理和策略管理功能:用户管理指激活普通用户、创建普通用户/其他管理员,设备管理指注册、查看、年审、挂失、禁用、激活设备;策略管理指增加、修改、查看访问控制策略。普通用户角色不可自行注册,仅可在访问控制策略的约束下使用观测需求申请服务。
2.2.4 设备管理子系统
设备管理子系统可以对信息安全传输控制涉及的所有设备,如 PCIE 密码卡、TF 密码卡、密码中间件等密码设备进行统一管理,该子系统调用密钥管理子系统为所管理设备生成加密、签名密钥对,为鉴权系统提供设备信息。设备管理子系统主要模块设计如图 4-7 所示,各模块功能描述如下:
图 4-7 设备管理子系统功能模块图(原文插图)
- 设备注册模块:Pad 终端设备上的 APP,自动获取设备唯一标识等信息,用户填写设备管理类信息(资产责任人、联系方式),通过该模块完成注册申请;PCIE 密码卡和密码中间件在初装时完成注册。该模块负责分配(密码)设备管理的唯一标识,与密钥管理子系统交互,制作密钥初装介质(包括设备签名密钥对、设备加密密钥对、MCS 系统的加密公钥和签名公钥),并通过密码设备的初装接口,完成初装。在设备注册时完成初始参数和策略配置。
- 设备年审模块:根据管理员设置的年审时间,该模块负责和 Pad 终端间通过 SM2 公钥算法实现双向身份认证、会话密钥协商,实现密码设备安全年审(包括密钥更新等)。
- 设备挂失模块:该模块仅管理员角色可调用,负责修改设备状态为挂失态。用户使用挂失后的设备登录 MCS 系统会被自动禁止。
- 设备禁用模块:当设备非法登录数量超过指定阈值后,调用该模块将设备状态修改为禁用状态。禁用状态的设备登录 MCS 系统会被自动禁止。
- 设备激活:该模块仅管理员角色可调用,处于注册、挂失、禁用态的设备可以调整为激活状态。
设备的状态转换如图 4-8 所示。
图 4-8 设备状态机管理(原文插图)
2.2.5 密钥管理子系统
密钥管理子系统可以对密钥库进行管理,支持密钥在线管理、密码资源销毁与更换。密钥管理子系统主要模块设计如图 4-9 所示,各模块功能描述如下:
图 4-9 密钥管理子系统功能模块图(原文插图)
1)密钥生成模块
采用分级密钥体系,密钥分三级,共 4 种密钥:第一级是保护密钥(根密钥),由密码管理子系统调用 PCIE 密码卡产生,保存在 PCIE 密码卡中;第二级是设备的加密密钥对和签名密钥对,采用双密钥体制,公钥和私钥均存储在 PCIE 密码卡中,私钥任何情况下不以明文导出 PCIE 密码卡;第三级是各类中间密钥、派生密钥和会话密钥等。各类密钥及存储状态如表 4-4 所示。
表 4-4 密钥类型
| 序号 | 密钥类型 | 密钥内容 | 存储状态 | 密钥长度 |
|---|---|---|---|---|
| 1 | 保护密钥 | 根密钥 | 明态,PCIE 密码卡 | 16 字节 |
| 2 | 密码设备签名密钥对 | 签名公钥 | 明态,PCIE 密码卡/TF 卡 | 64 字节 |
| 3 | 签名私钥 | 明态,PCIE 密码卡/TF 卡 | 32 字节 | |
| 4 | 密码设备签名密钥对 | 加密公钥 | 明态,PCIE 密码卡/TF 卡 | 64 字节 |
| 5 | 加密私钥 | 明态,PCIE 密码卡/TF 卡 | 32 字节 | |
| 6 | 各类中间密钥、派生密钥、会话密钥 | 中间密钥 | 明态,内存 | 16 字节,多组 |
| 7 | 派生密钥 | 明态,内存 | 32 字节 | |
| 8 | 会话密钥 | 明态,内存 | 16 字节 |
2)密钥安全存储模块
密码管理子系统对自己的加密私钥、签名私钥、密码设备初装密钥等敏感信息,使用保护密钥,SM4 ECB 模式进行加密存储;采用 SM3 摘要算法进行完整性校验。
3)密钥封装与分发模块
使用密钥协商算法生成会话密钥并安全分发至传输加密子系统。
4)密钥更新模块
在年审时或密码设备挂失后激活时,根据设备唯一标识查找密钥号,执行签名密钥和加密密钥的更新操作。
5)密钥销毁模块
用户触发密钥销毁操作时,清除 PCIE 卡相应文件的密钥号对应的密钥数据、证书文件和相应状态。
密码管理系统需配置开机身份认证密码算法、敏感信息安全存储密码算法、配置管理密码算法、认证鉴权密码算法,具体如表 4-5 所示。
表 4-5 密码算法配用
| 序号 | 密码算法类型 | 算法用途 | 算法配用 |
|---|---|---|---|
| 1 | 开机身份认证 | 开机身份认证 | SM2 |
| 2 | 敏感信息安全存储 | 密钥文件存储加密 | SM4-ECB |
| 3 | 密钥文件完整性校验 | SM3 | |
| 4 | 配置管理 | 双向认证与密钥协商 | SM2 |
| 5 | 安全通道传输加解密 | SM4-ECB | |
| 6 | 安全通道传输完整性校验 | SM3 HMAC | |
| 7 | 认证鉴权 | 认证消息加密/解密 | SM2 |
| 8 | 消息认证码计算 | SM4-GMAC | |
| 9 | 认证响应计算 | SM4-GMAC | |
| 10 | HMAC 计算 | SM3 HMAC | |
| 11 | 密钥派生 | SM2 HMAC |
2.2.6 图像数据版权保护接口库
图像数据版权保护接口库主要模块设计如图 4-10 所示,各模块功能描述如下。
图 4-10 图像数据版权保护接口库主要模块图(原文插图)
1)数字水印生成模块
在用户认证完成后,得到 128bit 长度的用户 UUID,通过 BCH 冗余编码为 256bit 长度的水印序列,作为待嵌入的数字水印,如图 4-11 所示。
图 4-11 水印内容示例(原文插图)
2)数字水印嵌入模块
为了实现对用户身份的个性化指纹水印嵌入,本系统采用一种结合 BCH 编码、区域感知选择与频域嵌入的图像水印流程,如图 4-12 所示。
图 4-12 水印嵌入流程(原文插图)
首先,将用户对应的水印序列输入系统。接下来,对原始图像进行区域划分,并通过区域感知模型筛选出对云层结构影响较小的若干区域,以保证嵌入后的图像仍具有良好的应用质量。选定区域后,系统对其应用离散余弦变换(DCT),将图像块转换到频域,以便于在中频系数中嵌入水印信息。
在频域中,根据嵌入规则(通过比较特定 DCT 系数大小表示水印比特)将 BCH 编码后的水印比特逐一嵌入至各区域中。嵌入完成后,对图像块进行逆 DCT 变换还原为图像域,最后合成为一张包含水印信息的图像。整个过程确保了水印的不可察觉性与鲁棒性,并为后续的水印提取与身份验证提供了基础。
3)数字水印提取模块
数字水印提取流程如图 4-13 所示。
图 4-13 水印提取流程(原文插图)
在水印提取阶段,系统以水印图像作为输入,执行与嵌入过程相对应的逆向流程。首先,对图像进行区域划分,并利用区域感知模型选取若干冗余区域作为候选提取区域。由于图像可能在传输或使用过程中受到压缩、噪声、裁剪等攻击,提取阶段选中的区域往往并不完全与原始嵌入区域一致,从而导致提取出的比特序列中包含一定比例的干扰信息。
为应对这一挑战,系统对每个候选区域依次进行离散余弦变换(DCT),进入频域后根据嵌入规则提取对应的水印比特。所有提取出的比特序列被统一收集,构成一个包含噪声与冗余的候选集合。接下来,系统引入"聚类选择"模块,通过比特序列之间的汉明距离进行聚类分析,以识别出那些相互接近、具有高度一致性的序列集合。系统将数量最多的主聚类簇作为最终有效序列来源,并据此生成一条完整的水印比特串。
最终,该比特串被送入 BCH 解码器进行错误纠正和冗余还原,成功恢复出用户的身份信息。该流程中的冗余提取与聚类筛选机制有效提升了系统在区域漂移与攻击干扰条件下的恢复能力,确保身份水印在实际复杂环境中的可提取性与鲁棒性。
4)数字水印验证模块
在提取出用户身份信息后,系统进入数字水印验证模块。该模块通过比对提取得到的用户标识与系统数据库中的用户身份信息,实现对水印图像来源的溯源与确认。当匹配成功时,可准确识别图像接收者,从而有效支持版权保护、责任追踪等实际应用场景。
2.2.7 L0 数据溯源及篡改检测接口库
L0 数据封装解封装示意如图 4-14 所示。地面站接收原始气象数据后,第一个数据处理系统对原始气象数据处理结束时,调用 L0 数据封装接口,添加数据处理系统的唯一标识,并做完整性计算,得到溯源和完整性校验头部,附加在 L0 数据头部。第二个数据处理系统对原始气象数据进行处理前,调用 L0 数据解封装接口,根据溯源和完整性校验头部对 L0 数据进行完整性校验,并脱去溯源和完整性校验头部,进行第二次数据处理,在数据处理结束后,调用 L0 数据封装接口,追加本次的数据处理系统标识,并做完整性计算附加在 L0 数据头部,作为后续完整性校验的依据。
图 4-14 L0 数据封装解封装示意图(原文插图)
L0 数据溯源示意如图 4-15 所示,数据处理系统进行 L0 数据处理时,均添加自身标识与 L0 数据绑定,在得到最终的气象数据产品后,可获得所有处理过该数据的信息系统及处理顺序。
图 4-15 L0 数据溯源示意图(原文插图)
L0 数据溯源及篡改检测接口库包括 L0 数据封装和解封装两个接口。
- L0 数据封装接口:输入原始 L0 数据和处理 handle 句柄(首次可为空),添加/修改溯源和完整性校验头部,在溯源和完整性校验头部中添加本次处理 L0 数据的系统短标识信息,并对整个数据包进行哈希计算,输出数据包封装后缓冲区首地址及缓冲区长度。
- L0 数据解封装接口:输入封装后的 L0 数据,提取溯源和完整性校验头部,对数据包整体进行完整性校验,反馈篡改检测结果、处理 handle 句柄,以及 L0 数据缓冲区首地址及缓冲区长度。
数据包格式如图 4-16 所示。具体字段介绍如下:
图 4-16 数据包封装格式(原文插图)
- 版本号:1 字节,表示满足规范的协议版本,目前为 1。
- 完整性校验模式:1 字节,标识使用的完整性校验算法。
- 长度:2 字节,记录溯源头部长度和整个报文的总长度,报文的总长度包括溯源头部、L0 数据、完整性校验域的长度之和。
- 系统标识:长度根据处理 L0 数据的信息系统个数确定。
2.3 处理流程与协议设计
2.3.1 处理流程
2.3.1.1 系统初始化流程
1. 项目初始部署阶段
在使用本项目之前,首先需要正确部署和设置认证鉴权系统后端(含数据库)、认证鉴权系统前端管理页面、Redis 数据库以及鸿蒙平板原生应用。
认证鉴权系统后端需要首先从 MCS 后端业务系统的数据库中导入相关的用户信息,接着生成并保存服务器 ID 以及服务器公私钥对信息,最后启动认证鉴权系统后端(前端管理页面打包后放到 static 静态文件夹中,通过 Django 内置的服务可实现随后端一起启动);Redis 需要正确安装和配置对应的信息;鸿蒙平板原生应用可以通过提供的网页实现在线下载。
2. 认证鉴权服务端初始化阶段
认证鉴权服务端初始化阶段如图 1 所示。
图 1 认证鉴权服务端初始化阶段(原文插图)
- 步骤①:在认证鉴权服务初始化阶段,需要首先生成服务器的公私钥密钥对,这对密钥对用来进行后面流程中的设备认证、密钥协商及验签等操作。
- 步骤②:需要根据规则生成唯一的服务器 ID,当该服务器是云服务器时可以使用云服务器的 ID,其他情况可以根据服务器的硬件设备信息生成唯一的 ID。
- 步骤③:认证鉴权系统后端生成公私钥对后,管理员需要保存该信息。认证鉴权系统可以导出两种格式的服务器配置信息,一种是供 MCS 业务系统后台使用的配置文件,包括服务器私钥,用于 token 验证;另一种是供鸿蒙平板扫码导入的二维码图片文件,包括服务器 ID、时间戳以及服务器公钥信息,用于认证鉴权系统和鸿蒙平板应用间的密钥协商。
- 步骤④:管理员将服务器私钥导入 MCS 业务系统的后端中,用于 MCS 业务系统的后端调用本地 token 校验接口(token 校验接口需要使用服务器私钥进行验签等操作)。
2.3.1.2 客户端设备注册、认证和密钥协商流程
客户端设备注册、认证和密钥协商流程如图 2 所示。
图 2 客户端设备注册、身份认证和密钥协商流程(原文插图)
- 步骤①~⑧:用户首次打开鸿蒙原生应用时,应用会优先尝试读取本地已持久化存储(Assets 关键资产存储)的客户端信息和服务端配置。如果读取失败(即本地无有效数据),则判定为设备首次使用或初始化未完成,自动进入设备初始化注册流程。其中,步骤②~③表示设备初始化注册流程中,客户端会根据内置算法生成一对公私钥密钥对,并同时生成一个全局唯一的客户端设备 ID。随后,步骤④原生应用弹出初始化引导界面,提示当前管理员选择一个安全的存储路径,用于导出客户端密钥配置文件。管理员点击"导出"按钮并选定保存位置后,系统将生成包含客户端公钥、设备 ID 等核心敏感信息的 .dat 格式配置文件并保存至指定路径。步骤⑤完成客户端密钥导出后,管理员需在同一台平板设备上,通过扫描二维码的方式导入服务器标识信息及服务器端的公钥。
- 步骤⑨~⑰:如果读取客户端信息和服务端配置成功,客户端具备与服务器进行安全密钥协商的全部条件后,APP 将按照预先定义的四步身份认证和密钥协商协议与服务器端进行交互。协商成功后,协商得到会话密钥。
至此,设备认证和会话密钥协商流程全部结束,步骤⑱应用自动跳转至认证鉴权系统的用户登录界面,等待用户输入登录账号、获取并填写短信验证码以及口令(password),以完成后续的用户身份认证。
2.3.1.3 用户多因子身份认证流程
鸿蒙原生应用在设备认证和密钥协商完成后,会跳转至认证鉴权系统的用户登录页面,用户登录及多因子认证阶段如图 3 所示。
图 3 客户端用户登录和多因子认证(原文插图)
- 步骤①~③:步骤①跳转到用户登录认证页面,步骤②用户输入登录账号的信息后,步骤③点击获取验证码,应用随即向认证鉴权系统后端查询该账号是否存在、状态是否正常以及是否绑定了手机号。若数据库中未找到用户手机号,则提示"该用户没有手机号,无法进行手机验证",需由管理员在认证鉴权管理后台补充或激活用户手机号才能继续;若已绑定手机号,则进入正常流程。
- 步骤④~⑨:步骤④系统确认手机号后,向短信服务商发起请求发送验证码。步骤⑥用户收到短信后,在页面输入验证码和口令(password),步骤⑦认证鉴权系统前端页面将用户登录信息调用 JSBridge 方法传递到原生应用,后续由原生应用在步骤⑧中获取设备信息,在步骤⑨中原生应用连同账号信息一起通过
POST /api/users/login接口提交登录请求,其中,设备信息(设备 ID、地理位置等)会由设备自动发送,无需用户手动执行相关操作,相关信息均使用上一阶段协商出的密钥进行加密保护。 - 步骤⑩:认证鉴权后端系统收到请求后执行多维度风控校验,包括:比对验证码是否正确、校验账号与口令是否匹配、检查登录时间与地理位置是否异常、查询是否命中设备黑名单(冻结/禁用状态、未执行年审等),以及其他风控规则(如登录频率等)。
- 步骤⑪:所有校验通过后,认证鉴权系统后端从数据库读取设备信息、用户信息等,调用 SM2 签名函数对用户、设备信息进行签名,然后将签名值拼接到尾部生成联合 token(包括 access_token 和 refresh_token)并返回给客户端。原生应用接收并保存该联合 token。
- 步骤⑫:登录成功后通过 ArkWeb 组件跳转加载认证鉴权系统前端管理页面,在页面中重定向跳转最终的 MCS 内部业务页面。
2.3.1.4 用户登录和使用流程
用户登录和使用阶段流程如图 4 所示。
图 4 用户登录后使用 MCS 阶段流程图(原文插图)
用户通过原生应用中的 ArkWeb 组件加载认证鉴权系统前端管理页面(若为管理员角色,则出现设备管理、用户管理、策略管理、返回 MCS)或直接跳转至 MCS 业务前端页面(若为普通用户角色)。认证鉴权前端管理页面中,用户可以正常进行各种用户信息管理操作,网页通过 JSBridge 从原生应用获取登录信息,显示操作界面;用户发起用户信息修改等请求后,前端将请求转发至后端,后端进行校验和业务处理,处理完成后返回结果给前端并展示给用户。
重定向进入 MCS 前端页面后:
- 步骤①:MCS 前端通过 JSBridge 从原生应用获取登录凭证(access_token),进行后台业务访问操作。
- 步骤②~④:在用户发起业务操作时,MCS 前端将请求(携带 Authorization 头,或其他方式)发送至 MCS 业务后端。
- 步骤⑤:业务后端调用 token 校验接口,完全脱离认证鉴权系统的后端,独立完成 token 有效性校验。
- 若接口反馈 token 验证成功,则正常处理业务并返回数据(步骤⑥~⑦)。
- 若接口反馈签名非法、token 结构异常等错误,则拒绝访问,退出登录。
- 若接口反馈超出有效期,进入步骤⑧~步骤⑯:步骤⑨中 MCS 业务前端通过 JSBridge 通知鸿蒙原生应用刷新 token,步骤⑩中鸿蒙原生应用向认证鉴权后端发起刷新请求,使用 refresh_token 获取新 access_token。若 refresh_token 有效,步骤⑬中通过 JSBridge 将新 access_token 反馈给 MCS 业务前端,MCS 前端携带新 access_token 重试原请求,MCS 业务后端再次校验,通过后返回正常业务数据。若 refresh_token 失效,则反馈 MCS 业务前端进行本地信息清空等,而后鸿蒙原生应用返回登录页面。
用户退出阶段流程如图 5 所示。
图 5 用户退出阶段流程图(原文插图)
用户可在 MCS 业务页面主动点击退出登录。步骤③中业务前端通过 JSBridge 通知原生应用执行登出操作,步骤④中原生应用向认证鉴权后端发送 POST /api/users/logout/ 请求,后端执行清空登录信息等处理,步骤⑤~⑦中原生应用本地清空所有登录凭证和用户信息,最终引导用户返回登录页面。
同一设备支持切换用户登录:当前用户退出后,原生应用执行设备认证和密钥协商后,显示登录页面给新用户。后续登录流程与首次用户登录一致,包括查询用户手机号、发送短信验证码、校验验证码与口令、设备风控判断、多维度关联检查等,所有校验通过后认证鉴权后端从数据库读取用户信息和设备信息等,重组字段并调用 sm2_sign 生成签名值,形成新的联合 token 返回给应用。应用保存登录信息后,新用户即可继续在业务页面操作。
2.3.1.5 观测请求数据加密流程
观测请求数据加解密流程如图 8-5 所示,具体流程如下:
图 8-5 观测请求数据加解密流程(原文插图)
- 用户使用 Pad 访问观测请求时,调用 TF 卡加密观测请求,并发送至 MCS 系统。
- MCS 系统通过传输加密子系统提供的解密接口,对观测请求进行解密处理。
- MCS 系统处理观测请求,获得观测请求回复后,通过传输加密子系统提供的加密接口,对观测请求回复进行加密处理。
- 用户在 Pad 端获取到加密后的观测请求回复,调用 TF 卡对观测请求回复进行解密处理。
观测请求数据加解密的详细流程如图 8-6 所示。
图 8-6 观测请求数据加解密流程(原文插图)
- 步骤 1.1:用户使用华为 Pad 打开 APP。
- 步骤 1.2:APP 打开内置的浏览器。
- 步骤 2.1.1~2.1.2:用户输入 MCS 系统的登录页面(例如 https://domain/login),华为浏览器请求所访问的登录页面。
- 步骤 2.2~2.3:MCS 系统后台校验令牌。如果 token 验证通过,则返回 MCS 观测请求页面。
- 步骤 3.1.1~3.1.2:用户在浏览器页面输入观测请求。浏览器通过 JSBridge 调用 TF 卡的加密接口,使用协商出的会话密钥对观测请求进行加密处理。浏览器将加密后的观测请求数据发送至 MCS 后台。
- 步骤 3.2:MCS 系统后台调用本地的解密和验签接口,输入用户 ID、待解密和验签的数据,由本地的动态库函数执行验签和解密操作。
- 步骤 3.3:MCS 系统后台生成观测请求反馈结果后,调用本地的加密和签名接口,输入用户 ID、待加密和签名的数据,由本地的动态库函数执行加密和签名操作。
- 步骤 3.4:MCS 系统将加密后的观测请求反馈返回给观测请求终端浏览器。
- 步骤 3.5:观测请求终端浏览器通过 JSBridge 调用 TF 卡的验证和解密接口后,获得观测请求反馈。
- 步骤 3.6:用户获取到明文的观测请求反馈数据。
2.3.2 通信协议设计
身份认证和密钥协商协议,以及后续的加密数据包整体格式如图 9-1 所示。
图 9-1 通信帧整体格式(原文插图)
- 版本号(1 字节):表示满足规范的协议版本,目前为 1。
- 主命令码(1 字节):功能模块标识,见表 9-1。
- 子命令码(2 字节):最高位表示上下行标识,华为 Pad 认证 APP 发送到鉴权及策略管理子系统为上行(用 0 表示上行),鉴权及策略管理子系统发送到华为 Pad 认证 APP 为下行(用 1 表示下行)。低 15 位为功能模块内部标识,密钥协商协议使用 2024~3072,见表 9-1。
表 9-1 主子命名码表
| 主命令码 | 子命令码高 1 位(0-上行,1-下行) | 子命名码低 15 位 | 备注 |
|---|---|---|---|
| 密钥协商(0) | 0 | 发起密钥协商(0x01) | 华为 Pad 认证 APP → 鉴权及策略管理子系统 |
| 1 | 客户端认证和密钥交换(0x02) | 鉴权及策略管理子系统 → 华为 Pad 认证 APP | |
| 0 | 服务器认证、密钥交换、会话密钥确认(0x03) | 华为 Pad 认证 APP → 鉴权及策略管理子系统 | |
| 1 | 会话密钥确认、token 生成(0x04) | 鉴权及策略管理子系统 → 华为 Pad 认证 APP | |
| 报警(1) | 0 | 不满足椭圆曲线方程(0x01) | 华为 Pad 认证 APP → 鉴权及策略管理子系统 |
| 1 | 不满足椭圆曲线方程(0x01) | 鉴权及策略管理子系统 → 华为 Pad 认证 APP | |
| 0 | 计算椭圆曲线点失败(0x02) | 华为 Pad 认证 APP → 鉴权及策略管理子系统 | |
| 1 | 计算椭圆曲线点失败(0x02) | 鉴权及策略管理子系统 → 华为 Pad 认证 APP | |
| 0 | 密钥确认失败(0x03) | 华为 Pad 认证 APP → 鉴权及策略管理子系统 | |
| 1 | 密钥确认失败(0x03) | 鉴权及策略管理子系统 → 华为 Pad 认证 APP | |
| 0 | 意外消息(0x04) | 华为 Pad 认证 APP → 鉴权及策略管理子系统 | |
| 1 | 意外消息(0x04) | 鉴权及策略管理子系统 → 华为 Pad 认证 APP | |
| 0 | 结束通知(0x05) | 华为 Pad 认证 APP → 鉴权及策略管理子系统 | |
| 1 | 结束通知(0x05) | 鉴权及策略管理子系统 → 华为 Pad 认证 APP | |
| 加密完保通信帧(2) | 0 | 加密完保消息(0x01) | 华为 Pad 认证 APP → MCS(加解密接口) |
| 1 | 加密完保消息(0x02) | MCS(加解密接口)→ 华为 Pad 认证 APP |
- 总长度(2 字节):整个报文的总长度,包括协议头部、认证与校验域的长度之和。
- 帧序号(2 字节):通信帧的消息序号,用于防止遭受重放,通信双方各自维护自己的"报文序号",依次递增。在密钥协商阶段,"消息序号"可以是任意值(如全部置 0),接收方对其不作处理。密钥协商后,发送报文通过"消息序号"来抵抗重放攻击。
- 发送方 ID(4 字节):标识发送方,高字节表示系统类型,低字节表示同类型系统的编号。系统类型编码:华为认证 APP 为 0x20、MCS 鉴权及策略管理子系统为 0x21。
- 加密认证模式(1 字节):高四位表示加密模式,0x00 表示未加密,0x01 表示 SM4CBC 加密,0x02 表示 SM4 ECB 加密,0x03 表示 SM4 CTR 加密。低 4 位表示认证与校验模式,00 表示未签名,0x01 表示 SM2 签名,0x02 表示 SM4 CMAC。
- IV 值(16 字节):由加密方产生随机数填充,解密时取该 IV 值送入软算法接口。
- 保留字段(3 字节):暂时保留。
2.4 接口设计(明细见接口设计详录)
"2.4 接口设计"包含全部接口的路径、请求方法、参数表、请求/响应示例与返回码,本页不重复抄录,统一索引至 接口设计详录。其中第四章 JSBridge 与第六章内部 REST API 已按当前工程实际重写,以 qxj-backend-admin 导出的 OpenAPI Schema 为准。接口总览(合计 108 个):
| 类别 | 数量 | 说明 | 详录入口 |
|---|---|---|---|
| 外部接口 | 15 | token 验证、用户认证、密钥协商、数据加解密、访问控制决策、用户/设备/策略管理、密码应用、水印库、L0 溯源库(原表 5-1) | 二、外部接口 |
| 后台公共服务接口 | 3 | verify_token、sm4_gcm_encrypt、sm4_gcm_decrypt,对底层密码库 libnspsmapi.so 的 Python 封装 | 三、后台公共服务接口 |
| 前端 JSBridge 接口 | 6 | login、sm4GcmEncrypt、sm4GcmDecrypt、getAccessToken、refreshAccessToken、logout | 四、前端 JSBridge 接口 |
| 配套函数库接口 | 5 | 水印嵌入/提取 3 个、设备标识生成/提取 2 个 | 五、配套函数库接口 |
| 内部 REST API | 79 | 当前后端全部 HTTP 操作,统一前缀 /api/v3,37 个路径、14 个 Django app | 六、内部 REST API |
内部 REST API 分组索引(共 79 个操作):
| 序号 | 分组 | 数量 | 入口 |
|---|---|---|---|
| 1 | 认证与验证码 | 4 | 6.1 |
| 2 | 当前用户 | 2 | 6.2 |
| 3 | 短信验证码 | 1 | 6.3 |
| 4 | 用户管理 | 7 | 6.4 |
| 5 | 设备类型 | 6 | 6.5 |
| 6 | 设备管理 | 6 | 6.6 |
| 7 | 角色管理 | 6 | 6.7 |
| 8 | 用户-角色关联 | 6 | 6.8 |
| 9 | 地理围栏 | 6 | 6.9 |
| 10 | 角色-围栏关联 | 6 | 6.10 |
| 11 | 时间规则 | 6 | 6.11 |
| 12 | 角色-时间规则关联 | 6 | 6.12 |
| 13 | 设备公钥 | 8 | 6.13 |
| 14 | 安全日志 | 6 | 6.14 |
| 15 | 服务器密钥二维码 | 1 | 6.15 |
| 16 | 设备侧 SM2 密钥协商 | 2 | 6.16 |
2.5 数据库设计
数据库设计包括用户管理、设备管理、策略管理和日志等方面,包括关系型数据库和内存数据库。
2.5.1 关系型数据库设计
1. 用户管理子系统
1)用户表(NSP_WB_UM_USERS)
| 属性 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| userID | INTEGER | PRIMARY KEY | 用户 ID,自增列 |
| userName | VARCHAR(32) | NOT NULL | 用户名称,登录时输入 |
| realName | VARCHAR(32) | NOT NULL | 真实姓名 |
| userPassword | VARCHAR(32) | NOT NULL | 用户密码,加密存储 |
| VARCHAR(32) | —— | 用户邮箱 | |
| phone | VARCHAR(16) | —— | 用户电话 |
| userLevels | INTEGER | —— | 用户级别,1-5,数值越高表示级别越高 |
| createTime | TIMESTAMP(6) | —— | 创建时间 |
| updateTime | TIMESTAMP(6) | —— | 更新时间 |
| dueTime | TIMESTAMP(6) | NOT NULL | 到期时间 |
| lastLoginTime | TIMESTAMP(6) | —— | 最后登录时间 |
| failedAttempts | INTEGER | NOT NULL | 登录失败次数 |
| registerSource | INTEGER | —— | 注册信息来源,1-管理员注册,2-用户自己注册 |
| description | VARCHAR(64) | —— | 用户描述 |
| encPublicKey | BINARY(32) | —— | 加密公钥 |
| encPrivateKey | BINARY(64) | —— | 加密私钥 |
| signPublicKey | BINARY(32) | —— | 签名公钥 |
| signPrivateKey | BINARY(64) | —— | 签名私钥 |
| expireTime | TIMESTAMP(6) | —— | 证书到期时间 |
| status | VARCHAR(32) | NOT NULL | 激活、禁用、冻结等 |
| description | VARCHAR(128) | —— | 状态描述 |
2)角色表(NSP_WB_UM_ROLES)
| 属性 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| roleID | INTEGER | PRIMARY KEY | 角色 ID,自增列 |
| roleType | VARCHAR(32) | NOT NULL | 角色类型,唯一,如 0 表示管理员、1 表示普通用户、2 表示访客 |
| roleName | VARCHAR(32) | UNIQUE | 角色名称 |
| createTime | TIMESTAMP(6) | —— | 创建时间 |
| updateTime | TIMESTAMP(6) | —— | 更新时间 |
3)时间表(NSP_WB_UM_TIME)
| 属性 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| timeID | INTEGER | PRIMARY KEY | ID,自增列 |
| timeName | VARCHAR(32) | UNIQUE | 时间名称,如上班时间、周末等 |
| accessStartTime | VARCHAR(128) | —— | 允许接入开始时间 |
| accessEndTime | VARCHAR(128) | —— | 允许接入结束时间 |
| allowedEeekdays | VARCHAR(32) | —— | 允许接入星期 |
| location | VARCHAR(128) | —— | 允许接入的位置 |
| createTime | TIMESTAMP(6) | —— | 创建时间 |
| updateTime | TIMESTAMP(6) | —— | 更新时间 |
4)角色时间关联表(NSP_WB_UM_ROLES_TIME)
| 属性 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| roleID | INTEGER | FOREIGN KEY: NSP_WB_UM_ROLES (roleID) | 角色 ID |
| timeID | INTEGER | FOREIGN KEY: NSP_WB_UM_TIME (timeID) | 时间 ID |
5)地点表(NSP_WB_UM_LOCATION)
| 属性 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| locationID | INTEGER | PRIMARY KEY | ID,自增列 |
| locationName | VARCHAR(32) | UNIQUE | 地点名称,例如气象中心、乌兰察布地面站 |
| location | VARCHAR(128) | —— | 允许接入的位置 |
| createTime | TIMESTAMP(6) | —— | 创建时间 |
| updateTime | TIMESTAMP(6) | —— | 更新时间 |
6)角色地点关联表(NSP_WB_UM_ROLES_LOCATION)
| 属性 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| roleID | INTEGER | FOREIGN KEY: NSP_WB_UM_ROLES (roleID) | 角色 ID |
| locationID | INTEGER | FOREIGN KEY: NSP_WB_UM_LOCATION (locationID) | 地点 ID |
7)权限表(NSP_WB_UM_PERMISSIONS)
| 属性 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| permissionID | INTEGER | PRIMARY KEY | 权限 ID,自增列 |
| permissionName | VARCHAR(32) | NOT NULL | 权限名称(如创建用户、注册设备等) |
| description | VARCHAR(128) | —— | 权限描述 |
8)用户角色关联表(NSP_WB_UM_USERS_ROLES)
| 属性 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| ID | INTEGER | PRIMARY KEY | ID,自增列 |
| userID | INTEGER | FOREIGN KEY: NSP_WB_UM_USERS (userID) | 用户 ID,外键关联用户表 |
| roleID | INTEGER | FOREIGN KEY: NSP_WB_UM_ROLES (roleID) | 角色 ID,外键关联角色表 |
2. 设备管理子系统
1)设备表(NSP_WB_DM_EQP)
| 属性 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| ID | INTEGER | PRIMARY KEY | 设备 ID,自增列 |
| eqpUniqueIdentifier | VARCHAR(128) | NOT NULL | 设备唯一标识,如 IMEI 或 UUID |
| eqpAlias | VARCHAR(128) | —— | 设备名称 |
| eqpType | INTEGER | FOREIGN KEY: NSP_WB_DM_EQP_TYPE (typeID) | 设备类型,外键关联设备类型表 |
| importance | INTEGER | —— | 重要程度,1-5,数值越大表示越重要 |
| OS | VARCHAR(32) | —— | 操作系统 |
| IP | VARCHAR(16) | —— | IP |
| location | VARCHAR(256) | —— | 安装地 |
| serial | VARCHAR(128) | —— | 出厂序列号 |
| vendor | VARCHAR(32) | —— | 厂商 |
| registerTime | TIMESTAMP(6) | —— | 注册时间 |
| updateTime | TIMESTAMP(6) | —— | 信息更新时间 |
| lastAnnualReview | TIMESTAMP(6) | —— | 最近年审日期 |
| responsiblePerson | INTEGER | FOREIGN KEY: NSP_WB_UM_USERS (userID) | 资产责任人,外键关联用户表 |
| user | INTEGER | FOREIGN KEY: NSP_WB_UM_USERS (userID) | 资产使用人,外键关联用户表 |
| status | VARCHAR(32) | NOT NULL | 激活、挂失、年审中、禁用等 |
| encPublicKey | BINARY(32) | —— | 加密公钥 |
| encPrivateKey | BINARY(64) | —— | 加密私钥 |
| signPublicKey | BINARY(32) | —— | 签名公钥 |
| signPrivateKey | BINARY(64) | —— | 签名私钥 |
| expireTime | TIMESTAMP(6) | —— | 证书到期时间 |
| description | VARCHAR(128) | —— | 设备描述 |
2)设备类型表(NSP_WB_DM_EQP_TYPE)
| 属性 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| ID | INTEGER | PRIMARY KEY | ID,自增列 |
| typeID | INTEGER | UNIQUE | 设备类型 ID |
| typeName | VARCHAR(32) | NOT NULL | 设备类型名称 |
| description | VARCHAR(128) | —— | 描述 |
3. 安全日志管理
1)安全日志表(NSP_WB_SLM_LOGS)
| 属性 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| ID | INTEGER | PRIMARY KEY | ID,自增列 |
| logName | VARCHAR(64) | NOT NULL | 策略名称,例如限制外地 IP 访问 |
| logType | VARCHAR(32) | NOT NULL | 事件类型,例如登录、访问、密钥操作等 |
| userID | INTEGER | FOREIGN KEY: NSP_WB_UM_USERS (userID) | 用户 ID,外键关联用户表 |
| eqpID | INTEGER | FOREIGN KEY: NSP_WB_DM_EQP (ID) | 设备 ID,外键关联设备表 |
| IP | VARCHAR(16) | —— | IP |
| result | VARCHAR(16) | NOT NULL | 操作结果,例如成功、失败 |
| description | VARCHAR(256) | —— | 日志描述 |
| createTime | TIMESTAMP(6) | —— | 创建时间 |
2.5.2 内存数据库设计
1. 总体架构图
本系统采用 Redis 作为内存数据库,主要承担系统运行期间高频访问数据的缓存与临时状态管理,不作为业务数据的最终存储介质。Redis 主要用于会话管理、Token 黑名单、验证码缓存以及设备认证会话密钥缓存等场景。由于这些数据均具有访问频繁、生命周期短、实时性要求高等特点,因此采用 Redis 可以有效降低数据库访问压力,提高系统整体响应速度。
2. Redis 数据模型
本系统基于 Redis 构建了统一的内存数据模型,对会话信息、认证状态及临时缓存数据进行管理。不同业务场景采用统一的 Key 命名规范,并结合数据访问特征选择合适的数据组织方式。其中,设备会话采用 IDA → SessionID → Session 上下文的两级映射结构,实现会话信息的快速定位;验证码采用 String 类型存储,并设置较短的过期时间,保证其一次性和时效性;Token 黑名单根据 Token 剩余有效期动态设置 TTL,实现失效 Token 的自动清理;Django Session 则作为用户会话缓存。Redis 数据模型如下表所示。
| RedisKey | Value | TTL | 用途 |
|---|---|---|---|
| ida: | SessionID | 7 days | 会话索引 |
| session: | Session 上下文 | 7 days | 会话密钥 |
| sms:login: | 验证码 | 60 s | 登录验证 |
| token_blacklist: | blacklisted | Token 剩余时间 | Token 失效 |
| django_session:* | Session 对象 | Session 配置 | Django Session |
3. 缓存生命周期设计
Redis 中的缓存数据均采用 TTL 自动过期机制,同时结合业务主动删除策略,实现缓存生命周期管理,避免无效缓存长期占用内存资源。缓存生命周期设计如下表所示。
| 数据类型 | 创建时机 | 删除方式 | TTL |
|---|---|---|---|
| Session Key | SM2 密钥协商完成 | 自动过期 | 7 days |
| Token 黑名单 | 用户退出登录 | 30 min | Token 剩余有效期 |
| 短信验证码 | 发送验证码 | 验证成功立即删除 | 60 s |
| Django Session | 用户登录 | Session 失效 | Session 配置 |
2.6 界面设计
2.6.1 界面描述
2.6.1.1 UI 规范
本 UI 设计深度参考了网页版风云四号 C 星地面系统 UI 规范体系。在视觉编码方面,继承了风云气象卫星系统标志性的蓝灰科技色系,通过精确的色彩映射方案确保气象数据可视化的专业性与准确性。交互逻辑层面,充分借鉴系统的防误触设计原则,构建了符合平板横屏操作习惯的交互模式。组件选择上,采用经过验证的 Element Plus 标准控件库,同时对数据图表组件进行深度定制以满足风云四号 C 星特有的多维数据同步展示需求。
图 7-1 风云四号 C 星地面系统 UI 规范(原文插图)
2.6.1.2 页面功能介绍
1)系统桌面页面
- 华为 MatePad 平板桌面有风四 C 星客户端应用图标,为整个应用的客户端入口,点击图标启动程序。
- 系统设置的应用详情界面可查看应用版本、管理各项访问权限;只有开启相机、存储和网络权限,客户端才能完成扫码导入服务器公钥、导出设备注册文件、下载卫星图片、提取图片水印等操作。
2)密钥交换页面(客户端密钥导入)
首次启动 APP 时引导完成设备注册及密钥交换,分为三个步骤:
- 服务器配置:点击"设置服务器"进入配置页面选择服务器;内置默认服务器配置,支持管理员手动新增服务器,填写服务器名称、登录地址、MCS 地址及后台管理地址。
- 服务器公钥导入:点击"点我扫码导入服务器配置文件",调用摄像头扫码,解析导入服务器配置信息及服务器公钥并做合法性校验。
- 客户端密钥导出:页面展示设备标识、服务器公钥等注册信息;点击"点我导出文件"生成包含客户端设备身份、公钥的配置文件,选择路径保存。
导出的注册文件需上传至服务器,由服务器完成设备身份注册及密钥交换;服务器验证后将客户端公钥与服务器公钥建立可信关联,完成双向身份认证。后续启动无需重复注册,仅在设备重置或更换服务器时重新注册。
3)登录页
包含账号、验证码、口令三项必填输入项。填写专属账号;点击验证码栏获取按钮申请验证码并填写;输入登录口令;提交后客户端校验全部无误完成登录,校验失败提示对应错误,成功后页面切换为已登录。
4)系统首页
登录校验通过后进入首页,页面顶部提示登录成功并展示当前登录用户;按功能模块划分功能入口。
5)我的页面
点击右上角用户头像进入。顶部保留系统名称,中间标题"我的",右侧显示登录账号欢迎信息,左上角返回首页。三块功能区域:左侧红色卡片为退出登录(清空会话、跳转登录页);右上方紫色卡片为当前用户信息入口;右下方蓝色卡片为当前设备信息入口。
6)我的信息页面
- 用户信息:顶部展示系统名称、标题及登录账号;展示账号简称、用户名、角色名称(管理员)、账号激活状态,右上角编辑信息按钮可修改资料;内容分为基本信息(用户 ID、用户名、真实姓名、绑定邮箱、手机号、用户等级)、状态信息(激活状态、状态描述、到期时间、管理员权限标识)、登录信息板块。
- 设备信息:展示设备名称和专属设备标识,右上角编辑设备按钮(管理员可完善备注);划分基本信息、网络信息、设备信息分类区域。
7)设备管理页面(管理员)
- 提供卡片详情视图 / 列表表格视图切换。卡片视图:左侧列表展示已注册设备名称及激活状态,右侧展示详细资料(基本信息、网络信息);右上角有添加设备、编辑、删除按钮,可修改备注与重要等级、解绑设备、新增设备。
- 列表视图:表格字段含设备唯一标识、设备名称、设备类型、重要程度、设备状态、注册时间及操作选项,每行配编辑/删除按钮,底部分页控件。
8)用户管理页面(管理员)
- 卡片视图:左侧展示全部用户账号及用户等级,右侧分基本信息(用户 ID、用户名、真实姓名、邮箱、手机号、用户等级)与状态信息(启用状态、状态描述、到期时间);右上角添加、编辑、删除按钮,可修改资料、调整等级、注销账号、新建账号。
- 列表视图:表格依次展示用户名、真实姓名、邮箱、手机号、用户级别、账号状态、最后登录时间及操作,每行配编辑/删除按钮。
9)角色管理页面(管理员)
- 卡片视图:左侧展示预设角色名称和权限简介,右侧展示角色详情(名称、功能描述、权限范围、关联用户、可访问区域、时间限制、创建时间);有添加、编辑、删除按钮,可修改角色权限、绑定用户、限定访问区域和登录时段。
- 列表视图:表格字段含角色名称、描述、关联用户、关联区域、时间限制、创建时间和操作按钮。
10)访问控制策略管理页面(管理员)
顶部划分角色管理、角色地点关联、角色时间关联、角色用户关联四个标签页,支持卡片/列表视图切换。卡片视图左侧展示自定义角色条目,右侧展示角色详情(名称、类型、描述、创建/更新时间),有修改、删除、添加按钮;通过标签页依次配置角色对应的访问地点、登录时间段及绑定用户,从角色-地点-时间-用户四维度完善策略。
11)区域范围管理页面(管理员)
提供地图卡片视图 / 列表表格视图。地图视图:左侧展示区域名称和文字描述,中间加载高德地图以圆形范围展示地理区域,配开始编辑、结束编辑、放大、缩小按钮,可调整位置和覆盖半径;右侧展示完整信息(地点名称、位置描述、经纬度、坐标系、允许半径),有编辑、删除、添加按钮。列表视图表格含区域名称、位置描述、经度、纬度、坐标系、允许半径、创建时间及操作。划定区域后可在访问控制策略中关联角色,限制用户在地理范围内登录。
12)时间段管理页面(管理员)
卡片视图左侧展示时间段策略名称及启用状态,上方展示名称、描述、启用状态、创建时间,有编辑、删除按钮;下方查看时段划分,设置每日起止时间及每周生效星期,支持添加/删除时间段。列表视图以表格展示全部时间段配置。配置后可在策略中关联角色,限定登录日期和时段。
13)辅助注册页面
页面划分三大板块:
- 服务器信息:服务器 ID、服务器名称、API 访问地址、加密算法 SM2、时间戳、服务器公钥内容。
- 本机密钥:密钥类型、设备 ID、十进制时间戳、密钥状态(有效表示本机与服务端完成可信绑定)。
- 本机密钥二维码:自动生成携带设备信息的 JSON 字符串与二维码;支持复制 JSON、复制文本、下载二维码、刷新二维码;服务器读取二维码内设备 ID 和时间戳完成设备注册和双向密钥认证。
14)日志页面(管理员)
顶部有筛选下拉框(日志类型、操作结果、安全级别),右上角搜索框、添加按钮、视图切换。主体表格展示安全日志记录,字段含 ID、策略/事件名称、日志类型、操作用户、访问 IP、操作结果、安全级别、创建时间;安全级别分高(重要密钥查询)、中(访问失败)、信息(常规查询)三级。
15)水印模块页面
气象卫星水印图片列表页:按日期归集风云四号 C 星卫星图片,支持批量添加水印和图片下载;右上角"鉴权系统"按钮跳回首页、"水印工具"按钮检测图片是否含水印;每日图片合集表格含日期、图片数量、操作三列,可查看当日图片、预览、批量下载、批量嵌入水印;底部展示水印功能内网访问链接。
2.6.2 页面跳转逻辑
页面跳转关系如图所示。系统预设公共路径白名单(如 /login 等无需登录即可访问的页面),若目标路径不在白名单内,则校验本地存储的 token;token 存在且合法则放行,否则强制跳转登录页,确保敏感页面仅对授权用户开放。
用户首次访问时,若未携带 token 且目标路径非公共路径,将被重定向至登录页;登录成功后存储 token,后续访问受保护页面校验通过即可正常跳转;若访问不存在的路径,则自动跳转至首页。
图 页面跳转关系示意图(原文插图,原注"图更新")
2.7 突破的关键技术
2.7.1 基于重定向的身份认证与安全加解密
2.7.1.1 问题描述
MCS 作为风云四号 C 星星地系统的指挥控制中心,需要处理海量的气象观测数据及控制指令传输任务。在使用移动终端通过互联网向 MCS 系统请求气象数据时,必须严格验证终端身份、用户身份与用户访问权限,确保仅限授权设备获取数据,同时采用加密传输机制防止数据被窃取或篡改。由于 MCS 系统是已有系统,因此,需设计较少侵入的方式叠加身份认证和传输加密功能。
2.7.1.2 解决途径
MCS 系统在被访问时,通过 token 验证接口判断用户身份及登录信息的有效性,若验证失败,则通过 HTTP 重定向的方式到鉴权及策略管理子系统进行身份认证和会话密钥协商,具体流程如图 7-1 所示。
图 7-1 用户登录认证流程(原文插图)
- 步骤 1.1:用户使用华为 Pad 打开 APP。
- 步骤 1.2:APP 打开内置的浏览器。
- 步骤 2.1.1~2.1.2:用户输入 MCS 系统的登录页面(例如 https://domain/login),华为浏览器请求所访问的登录页面。
- 步骤 2.2:MCS 系统后台校验令牌。判断有无 token 令牌(例如 JWT,JSON Web Token),若无 token;若有 token 则调用 token 验证接口,进行 token 有效性验证和超时判断,如果 token 验证失败,则反馈 HTTP 302 状态码指示浏览器重定向到鉴权系统的地址(例如 https://domain/auth)。
- 步骤 2.3:MCS 系统后台反馈 http 302(location 字段为鉴权系统)给观测请求终端浏览器。
- 步骤 2.4:浏览器收到 HTTP 302 后,自动向 location 字段值中的 https://domain/auth 重新发起请求。鉴权系统返回 HTTP 200,即用户名、口令及短信验证码验证页面。
- 步骤 2.6~2.7:用户在浏览器中填写用户名、口令及短信验证码。
- 步骤 2.8:浏览器从前端 APP 自动获取设备唯一标识 ID、当前时间戳 T、随机数 rand1,并用设备签名私钥签名 signpk(ID, T, rand1),利用设备加密私钥对口令加密保护 encsk(pw)。
- 步骤 2.9:在 https://domain/auth 口令和短信验证页面,提交密态口令 encsk(pw)、验证码、设备唯一标识 ID、时间戳 T、随机数 rand1 和签名值 signpk(ID, T, rand1)。
- 步骤 2.10:鉴权系统验证设备和用户身份。依次验证时间戳,通过设备的公钥验签验证设备身份;通过设备解密公钥解密用户口令;通过用户名、口令和验证码验证用户身份合法性。
- 步骤 2.11:鉴权系统生成该用户 token;制作本端密钥材料,包括生成随机数 rand2,加密设备 ID、rand1、rand2,使用自己的签名公钥签名;利用设备端和本端密钥材料派生会话密钥 HKDF(ID, rand1, rand2)。
- 步骤 2.12:返回 token 及鉴权系统端密钥材料,即 ID、encskauth(rand1, rand2)、signskauth(ID, rand1, rand2)。
- 步骤 2.13:浏览器存储 token,通过设备注册时预存的鉴权系统加密公钥和签名公钥,验证和解密出 rand2,通过 HKDF(ID, rand1, rand2) 计算会话密钥。
- 步骤 2.14:浏览器根据重定向后的地址,使用会话密钥加密观测请求数据,并带 token 重新访问 MCS 系统。
- 步骤 2.15:MCS 系统后台再次调用 token 验证接口,进行 token 有效性验证和超时判断。
- 步骤 2.16.1~2.16.2:token 验证通过后,返回 MCS 观测请求页面。
在完成上述登录认证和密钥协商流程后,在华为 Pad 端采用网页端显式调用加解密接口,通过 JSBridge 机制调用 ArkTS 的加解密接口。华为 Pad 端架构如图 2-2 所示,包括:操作系统层、原生应用层(鸿蒙 Next 原生 App)、JSBridge 通信层和网页层。
图 2-2 华为 Pad 侧系统构成(原文插图)
- 操作系统层:在系统加密目录安全存储设备密钥,并使用鸿蒙操作系统提供的加解密和签名验签等密码计算接口。
- 原生应用层(认证及加解密后台程序):鸿蒙 Next 原生应用,通过系统 API 获取设备唯一标识,与鉴权及策略管理子系统交互,基于国密算法进行身份认证和会话密钥协商,会话密钥存储于系统加密目录,通过封装加解密接口和 JSBridge 供 Webview 调用。
- JSBridge 通信层:在原生应用和 Webview 间建立双向通道,使用 ArkTS 接口实现双向通信,传递加解密后的网页数据和设备标识,不在网页侧持久化敏感数据。
- 网页层:对接收到的明文网页数据进行展示。
2.7.1.3 安全性证明
本节对所提出的协议进行安全性逻辑推理和证明,采用 Burrows–Abadi–Needham(BAN)逻辑对协议的认证性与密钥协商性质进行推理证明。BAN 逻辑通过将协议交互消息抽象为主体信念及其演化过程,对实体认证、密钥确认、会话密钥新鲜性等安全目标进行形式化推导。
面向管理控制中心接入场景的终端双向认证的 BAN 安全性证明
BAN 逻辑的第一步是协议理想化,方案的理想化形式描述如下(省略交换消息中的明文,因为它们很容易被伪造):
- M1:(原文为公式对象)
- M2:(原文为公式对象)
- M3:(原文为公式对象)
协议的安全目标是实现相互认证和密钥协商:
- G1:(原文为公式对象)
- G2:(原文为公式对象)
- G3:(原文为公式对象)
- G4:(原文为公式对象)
协议分析所需初始假设:
- A1~A5:(原文均为公式对象)
具体证明过程:
- 根据消息 M1:Step 1。
- 根据假设 A3 和消息意义规则:Step 2。
- 根据假设 A5 和新鲜性规则:Step 3。
- 根据 Step 2、Step 3 和随机数验证规则:Step 4。
- 根据接收消息规则:Step 5。
- 根据消息 M2:Step 6。
- 首先验证为合法临时公钥,坐标合法且满足曲线方程。会话密钥由派生函数得出,根据假设 A1 和信仰规则:Step 7,即 G1。
- 根据消息 M3:Step 8。
- 验证合法临时公钥及曲线方程,根据假设 A2 和信仰规则:Step 9,即 G2。
- 根据消息 M2:Step 10。
- 根据 Step 7 和消息意义规则:Step 11。
- 根据假设 A1 和新鲜性规则:Step 12。
- 根据 Step 11、Step 12 和随机数验证规则:Step 13。
- 根据接收消息规则:Step 14,即 G3。
- 根据消息 M3:Step 15。
- 根据 Step 9 和消息意义规则:Step 16。
- 根据假设 A2 和新鲜性规则:Step 17。
- 根据 Step 16、Step 17 和随机数验证规则:Step 18。
- 根据接收消息规则:Step 19,即 G4。
基于上述安全分析,4 个安全目标都成功实现。因此终端与 AS 可以实现相互认证、且同时协商出相同的会话密钥。
2.7.1.4 形式化安全分析
采用 Scyther 形式化分析工具对协议的认证性与密钥机密性质进行自动化评估与证明。通过将协议交互流程及安全声明转化为形式化描述语言,进行无界会话验证,对实体双向认证、会话密钥机密性及抗重放攻击等安全目标进行严格的自动化推导与验证。
首先,依据协议三步认证与密钥协商流程,采用 SPDL 语言对终端安全模块 U 与鉴权系统 AS 之间的核心交互过程进行形式化建模;然后,选择 Dolev-Yao 攻击者模型,并结合 Scyther 的符号化抽象方式对共享密钥计算和确认消息进行建模;最后,在 Scyther 中声明协议的会话密钥保密性、存活性、弱一致性、非单射一致性和非单射同步性等安全属性,并执行自动验证。
图 3-5 Scyther 验证结果(原文插图)
协议在 Dolev-Yao 攻击者模型下通过 Scyther 形式化验证,所有安全属性均得到满足,在搜索边界内未发现可行攻击:
- 会话密钥保密性验证成功:协商得到的会话密钥在符号模型下不会被攻击者推导。
- **Alive(存活性)**成立:通信双方均能完成预期交互过程。
- Weakagree 与 Niagree:保证通信实体之间的身份真实性,降低身份冒充攻击风险。
- Nisynch(非单射同步性):消息顺序和会话对应关系保持一致,有效抵御重放类攻击。
2.7.1.5 安全性分析
从双向认证、抗重放、抗 DoS、抗冒名、抗设备遗失与抗中间人等维度论证协议安全性:
- 双向认证:终端安全模块首先生成临时公钥和时间戳,并用终端长期私钥签名;鉴权系统利用可信终端公钥验证,同时检查时间戳新鲜性和椭圆曲线合法性,实现对终端身份的认证。随后鉴权系统生成临时公钥,结合长期私钥和临时随机数计算共享点,生成密钥确认值返回;终端利用服务端公钥、本端长期私钥和临时随机数计算共享点并校验确认,完成终端对鉴权系统的认证。
- 抵抗重放攻击:终端发起阶段引入时间戳,鉴权系统进行新鲜度和未重放检查,重放历史消息会因时间戳过期或已使用被拒绝;终端侧和鉴权侧临时随机数每轮重新生成,共享点和会话密钥每次不同;Token 携带有效期和完整性校验字段,业务访问阶段再次验证,历史 Token 难以长期复用。
- 抗拒绝服务(DoS)攻击:鉴权系统采用分层校验顺序,先做报文格式检查、时间戳新鲜性检查和椭圆曲线点合法性检查,再进行签名验证和密钥协商;非法请求在早期被丢弃;终端侧同样先验证曲线点,失败立即终止。以"轻量校验前置、重计算后置、失败立即终止"降低无效请求的资源消耗。
- 抵抗冒名攻击:冒充合法终端须用终端长期私钥伪造签名,监听公开信道无法生成可通过验证的签名;冒充鉴权系统须构造依赖服务端长期私钥的共享点;终端与鉴权系统分别进行密钥确认一致性校验,单方面伪造身份或替换密钥参数无法通过。
- 抗设备遗失攻击:攻击者不知道合法用户专属 PIN 码,无法通过身份鉴别,无法触发安全芯片内部敏感信息与密码计算功能;智能卡 PIN 码错误尝试次数有严格锁定限制。基于硬件 TF 卡及 PIN 码访问控制,设备或智能卡遗失时仍能阻止攻击者冒充合法用户接入。
- 抵御中间人攻击:鉴权系统收到请求后先验证签名、时间戳新鲜性及临时公钥合法性(是否在椭圆曲线上、是否为无穷远点、坐标是否在合法域内);终端接收返回时执行同样检查,避免中间人构造非法曲线点或替换临时公钥;篡改任何报文,密钥一致性校验立即失败。
- 前向安全性:密钥协商引入双方分别生成的一次性临时密钥,由临时公钥与双方长期密钥共同计算共享点并派生会话密钥;临时密钥每轮独立生成、会话结束后不再保存,长期私钥事后泄露仍需恢复历史临时密钥或求解椭圆曲线离散对数问题才能重算历史会话密钥。
2.7.2 图片气象数据高鲁棒性嵌入
2.7.2.1 问题描述
气象图像具有高度专业性,其云层形态承载着对气象分析至关重要的信息。与普通互联网图像不同,气象图像对云层区域保真度要求较高,失真便可能影响其应用价值。现有图像水印方法大多面向通用图像设计,缺乏对气象图像特征的针对性建模与保护机制,难以在保证关键气象要素不受破坏的前提下实现有效水印嵌入,因此研究针对气象图片特点的高鲁棒性嵌入和提取算法。
2.7.2.2 解决途径
为最大程度降低水印对气象图像关键信息的干扰,设计了一种基于气象图像区域感知策略的水印方案:通过对图像区域的颜色和亮度特征综合评估,优先选取对气象图片可用性影响小的区域进行 DCT 频域嵌入;结合 BCH 编码与重复嵌入机制,实现水印盲提取,增强鲁棒性。
本方法整体由三个核心部分组成:面向气象卫星图像特征的嵌入区域选取策略、基于频域变换的水印嵌入与提取方案、动态身份水印嵌入两阶段解耦策略。主要流程如图 3-1 所示。
图 3-1 水印嵌入与提取流程(原文插图)
- 嵌入区域选取策略:分析气象卫星图像的色彩与亮度分量,构建内容自适应评价体系,自动识别并规避云层覆盖等气象敏感区域,选择对业务应用不敏感的背景区域作为载体。
- 频域水印嵌入与提取:使用离散余弦变换与 BCH 纠错编码相结合,在 DCT 中频系数对上调制冗余编码的用户身份信息,利用量化顺序约束规则,保证水印经历 JPEG 压缩、噪声干扰等失真攻击后仍能准确盲提取。
- "离线预处理—在线复用"两阶段解耦:将耗时较高的区域打分与频域变换放在预处理阶段完成并缓存;用户请求时在线阶段仅调用缓存特征进行轻量化水印注入,显著降低实时计算压力、缩短响应延迟。
1. 面向气象卫星图像的嵌入区域选取
云层分布是气象卫星图像中最具应用价值的关键信息之一,在云层区域嵌入水印可能干扰气象分析与业务应用,必须通过区域选取规避云层区域。
- 原始图像划分为若干等大小区域,区域大小设定为 128×128 像素,与 128 位 UserID 经 BCH 冗余编码后的长度较好匹配。
- 区域评分基于蓝色分量、白色分量及亮度特征:高层冰云通常呈蓝色,低层水云呈白色,云覆盖区域整体亮度更高;亮度特征还可辅助区分陆地与海洋。
- 云指数定义为区域蓝色分量强度与白色分量强度之和,数值越高云层覆盖越大、敏感性越强;按云指数降序排序,剔除云指数最高的前 ρ 比例区域;对剩余区域按综合评分(结合亮度等特征及权重参数)排序,选取得分最低的 k 个区域作为水印嵌入区域;每个选定区域嵌入相同水印序列。
算法 3-1:区域选择算法
输入:图像区域集合 R,剔除比例 ρ,权重参数,选取区域数量 k
输出:水印嵌入区域集合
1: n ← Length(R)
2: for i=1 to n do
3: 计算区域云指数
4: end for
5: 按云指数降序排序
6: R ← R[m+1, n](剔除前 ρ 比例区域)
7: for each 区域 do
8: 计算综合评分
9: end for
10: Sort(按综合评分升序)
11: 选取前 k 个区域
12: return 水印嵌入区域集合2
3
4
5
6
7
8
9
10
11
12
13
14
2. 基于频域变换的水印嵌入与提取
1)水印嵌入流程
- 水印信息先执行 BCH 编码生成冗余比特序列。
- 每个嵌入区域进一步划分为 8×8 小块并执行 DCT;选择一对中频系数 (X, Y),如位置 (4,5) 与 (5,4) 承载 1 个水印比特。
- 为抵抗 JPEG 压缩改变系数顺序,引入量化顺序约束:依据 JPEG 量化表中两系数的量化步长 qx、qy,推导系数对必须满足的最小间隔及更新规则;嵌入时通过增减系数使二者满足顺序约束与差值下界(嵌入强度 r)。质量因子 50 时 (4,5)、(5,4) 量化步长约 qx=51、qy=56。
- 重复嵌入完成后执行 IDCT 恢复空间域,按区域位置拼接,生成带用户身份水印的图像。
2)水印提取流程
- 图像划分为 128×128 非重叠区域,按相同区域感知评分重新打分;提取时选取区域数量为嵌入时的 2 倍,以提高区域重合度。
- 候选区域划分为 8×8 块并执行 DCT,定位系数对 (X, Y),按相对大小提取比特(X>Y 为 0,X<Y 为 1)。
- 冗余聚类与多数投票:计算各序列间归一化汉明相似度(异或比对),按相似度阈值划分候选簇;对主簇逐位多数投票恢复水印序列,表决权重参考系数对差值幅度。
- 投票结果输入 BCH 解码器纠正错误比特,恢复用户身份信息;与数据库用户信息匹配即可确认图像归属者,用于泄露溯源与责任认定。
3. 动态身份水印嵌入两阶段解耦
每位用户须获得嵌入其唯一身份信息的图像副本,传统框架下每次嵌入都重复区域打分与频域变换,高分辨率图像、多用户并发时成为性能瓶颈。
图 3-3 水印嵌入双阶段解耦机制(原文插图)
- 图像离线预处理:图像首次入库时执行一次完整区域分析与频域变换——规则划分区域、打分计算嵌入适应度、选取前 k 个候选区域、对各区域执行 DCT 提取频域系数矩阵,并记录空间坐标;原始图像、区域位置与 DCT 频域特征一并缓存,作为在线注入的"输入模板"。该过程仅执行一次,开销不叠加到在线请求。
- 在线水印图像分发:验证用户身份后,将用户唯一标识输入 BCH 编码生成水印比特序列;直接调用缓存的候选区域与 DCT 频域特征,跳过区域评分与 DCT 变换;逐位写入系数对,IDCT 恢复并按坐标合成回原图,得到带个性化水印的图像并下发。仅增加少量频域特征缓存,存储开销低,适用于高分辨率图像多用户并发分发场景。
2.7.2.3 实验与分析
1. 实验环境与数据
- 实验数据:公开的 LSCIDMR 气象遥感数据集,采集不同时间段、不同观测地点、涵盖多种云层场景的气象图像样本。
- 硬件环境:第 12 代 Intel Core i7-12700(12 核 20 线程)、32 GB DDR4 内存。
- 软件环境:Windows 11、Python 3.8;NumPy 1.24.4、OpenCV 4.8.1、Pillow 10.4.0、SciPy 1.10.1。
2. 透明性测试
- 对比四种区域选择方法:本项目内容自适应方法、基于纹理检测、Canny 边缘检测、Sobel 边缘检测。纹理/边缘驱动方法易选中云层边界等关键结构;本项目方法主动避开云层密集区,在背景稳定区域嵌入,对关键内容几乎无干扰。
- 嵌入强度与嵌入区域数量相同时,四种方法的全局 PSNR/SSIM 基本相当(全局统计指标只与调制总量相关)。
- 嵌入强度视觉效果:r=1.0~2.0 时局部放大仍几乎不可察觉;r=3.0 出现轻微斑点伪影;r=5.0 出现明显网格状失真与亮度异常,不满足透明性要求。
- 量化结果:r=1.5、100 张气象卫星图像,平均 PSNR 38.10 dB,平均 SSIM 0.9815。
3. 鲁棒性测试
测试条件:嵌入强度 r=1.5,嵌入区域数 10,LSCIDMR 数据集 100 张图像。以误码率(BER)与 ID 提取准确率评价。
表 3-1 本方案鲁棒性测试
| 攻击类型 | 误码率 | ID 提取准确率 |
|---|---|---|
| 高斯模糊(size:(5,5),σ=1) | 0 | 100% |
| 高斯模糊(size:(9,9),σ=1.5) | 0 | 100% |
| 裁剪(ρ=0.2) | 0.0050 | 99% |
| 裁剪(ρ=0.3) | 0.0267 | 95% |
| JPEG 压缩(Q=30) | 0 | 100% |
| JPEG 压缩(Q=25) | 0.0109 | 97% |
| 高斯噪声(σ=15) | 0.0100 | 98% |
| 高斯噪声(σ=25) | 0.0196 | 96% |
| 椒盐噪声(α=0.05) | 0 | 100% |
| 椒盐噪声(α=0.1) | 0 | 100% |
| 锐化处理(α=1) | 0 | 100% |
| 锐化处理(α=2) | 0.0875 | 83% |
| 斑点噪声(σ=0.05) | 0 | 100% |
| 斑点噪声(σ=0.1) | 0.0106 | 98% |
| 亮度变化(Δ=0.2) | 0 | 100% |
| 亮度变化(Δ=0.3) | 0 | 100% |
结果分析要点:
- 16 组攻击中 10 组实现 BER 为 0、ID 提取准确率 100%;高斯模糊、椒盐噪声、亮度变化、常规 JPEG 压缩/锐化/斑点噪声均无影响(模糊衰减高频、亮度变化仅影响直流分量、椒盐噪声能量经 DCT 分散)。
- 高强度攻击下仍可靠:高斯噪声 σ=25(96%)、JPEG Q=25(97%)得益于量化顺序约束与 BCH 纠错;斑点噪声 σ=0.1 时 BER 仅 0.0106。
- 裁剪攻击:30% 区域裁剪下仍保持 95%,得益于多块重复嵌入与多数投票。
- 相对薄弱场景:高强度锐化 α=2,BER 0.0875、准确率 83%(强锐化放大中高频系数、破坏系数对关系),存在明显阈值效应,后续可增大调制深度或优化选区。
4. 嵌入区域数量对提取准确率的影响
- 随冗余嵌入区域数量增加,身份信息恢复性能整体上升(空间冗余,部分区域被破坏仍可从剩余区域恢复),裁剪与锐化攻击下优势尤其明显。
- 区域过多会增大嵌入能量、导致 PSNR/SSIM 下降;需在鲁棒性与透明性之间通过实验确定合适数量。
2.8 技术要求规定的技术指标完成情况
2.8.1 功能性技术指标完成情况
表 MCS 信息安全传输控制软件技术指标完成情况表
| 序号 | 功能分类 | 功能名称 | 功能标识符 | 功能概述 | 完成情况 |
|---|---|---|---|---|---|
| 1 | 传输加密子系统 | 数据加密传输 | FR_1_1 | 对 DMZ 区观测需求申请服务与移动设备间传输的身份鉴别信息、申请及回复信息加密;对北京地面站与乌兰察布备份站 MCS 间传输的任务时间表、调度令、公共配置参数等重要信息加密 | 加密处理:【】 |
| 2 | 数据完整性保护 | FR_1_2 | 通过 MAC 或数字签名确保传输数据完整性,防止被篡改 | 完成 | |
| 3 | 密钥协商与交换 | FR_1_3 | 支持 DMZ 区服务与移动设备间安全协商交换会话密钥,双方使用相同会话密钥加解密 | 安全协商交换密钥完成,加解密完成【年审/更换密钥未完成】 | |
| 4 | 观测需求申请服务接口语言要求 | FR_1_4 | 提供观测需求申请专用密码服务 Python 接口 | 未实现观测需求相关接口 | |
| 5 | 地面站专用密码服务接口语言要求 | FR_1_5 | 提供地面站专用密码服务 C 语言接口,以及密码服务引擎和密码卡 | 【加密卡共 6 张,目前烧录测试完成 3 张】 | |
| 6 | 支持商用密码算法 | FR_1_6 | 遵循 GM/T 0002(SM4)、GM/T 0003(SM2)、GM/T 0004(SM3)及 GM/T 0018-2012《密码设备应用接口规范》 | 完成 | |
| 7 | 鉴权及策略管理子系统 | 用户身份认证 | FR_2_1 | 支持用户名口令认证、短信验证码两种鉴别技术 | 支持口令认证【短信未测试】 |
| 8 | 权限管理 | FR_2_2 | 采用 CoAC 模型,根据角色、用户级别等属性分配观测需求时间、地点等操作权限 | 可以分配权限,未实现访问操作授权资源相关内容,目前访问控制只用于登录 | |
| 9 | 访问控制 | FR_2_3 | 按策略对观测需求申请控制过滤,包括 IP 地址段、时间段、地理位置限制 | 未实现对 IP 地址段的访问控制,可以设置特定时间和位置 | |
| 10 | 策略制定与更新 | FR_2_4 | 管理员制定更新鉴权策略、访问控制策略并确保有效实施 | 完成 | |
| 11 | 访问控制策略冲突检测 | FR_2_5 | 角色、权限配置过程中对新配置项与历史配置的冲突检测 | 冲突检测未实现 | |
| 12 | 用户管理子系统 | 用户信息管理 | FR_3_1 | 用户基本信息存储管理,密码加密存储,支持信息添加、修改、删除 | 完成 |
| 13 | 用户注册与注销 | FR_3_2 | 支持管理员创建账号;支持账号批量注销 | 完成 | |
| 14 | 用户角色管理 | FR_3_3 | 为用户分配管理员、普通用户、访客等角色,统一权限管理 | 完成 | |
| 15 | 用户状态管理 | FR_3_4 | 支持激活、冻结、禁用状态,多次输错密码自动冻结账号 | 完成 | |
| 16 | 批量操作 | FR_3_5 | 管理员批量激活、注销、禁用普通用户 | 完成 | |
| 17 | 设备管理子系统 | 设备信息管理 | FR_4_1 | Pad 设备基本信息存储管理,支持添加、修改、删除 | 完成 |
| 18 | 设备注册与状态管理 | FR_4_2 | APP 自动提取设备唯一标识并用设备认证密钥鉴别;管理员注册、挂失设备,支持年审,状态含激活、挂失、年审、禁用;注册且年审激活设备方可获取服务,其他设备不可用;非法登录超阈值自动禁用 | 年审挂失未完成,观测请求未完成,根据使用行为调整未完成【根据使用行为调整没写这个功能,记录了一些日志;观测请求需求好像没给我,没实现这个功能】 | |
| 19 | 批量操作 | FR_4_3 | 管理员批量激活、注销、禁用普通用户 | 完成 | |
| 20 | 密钥管理子系统 | 密钥生成 | FR_5_1 | 支持商用密码算法密钥生成,采用标准化接口便于集成 | 完成 |
| 21 | 密钥安全存储 | FR_5_2 | 采用鸿蒙用户级加密区机制等防止密钥被非法获取 | 完成 | |
| 22 | 密钥分发 | FR_5_3 | 通过安全通道或密钥交换协议安全分发密钥,保证保密性和完整性 | 完成 | |
| 23 | 密钥更新与撤销 | FR_5_4 | 定期更新密钥;密钥泄露或不再需要时及时撤销 | 更新未实现 | |
| 24 | 三级密钥体系 | FR_5_5 | 支持系统主密钥、设备密钥和会话密钥三级密钥体系 | 完成 | |
| 25 | 图像数据版权保护接口库 | 图片气象数据水印嵌入接口 | FR_6_1 | 根据国家气象中心版权标识、图片生成时间等信息生成水印,不可见方式嵌入 | 完成 |
| 26 | 图片气象数据水印提取接口 | FR_6_2 | 支持对嵌入水印的准确提取 | 完成 | |
| 27 | 气象数据格式 | FR_6_3 | 兼容主流气象数据格式,包括 JPG、PNG | 完成 | |
| 28 | 接口操作系统和语言要求 | FR_6_4 | 支持 Linux,提供 C 和 Python 接口库 | 完成 | |
| 29 | L0 数据溯源及篡改检测接口库 | L0 数据封装接口 | FR_7_1 | 为传输 L0 数据的系统生成唯一标识信息,确保来源可靠 | 完成 |
| 30 | L0 数据解封装接口 | FR_7_2 | 对系统唯一标识信息逆运算提取,确保来源真实 | 完成 | |
| 31 | 接口操作系统和语言要求 | FR_7_3 | 支持 Linux,提供 C 和 Python 接口库 | 完成 |
2.8.2 性能技术指标完成情况
表 MCS 信息安全传输控制软件性能指标完成情况表
| 序号 | 性能分类 | 性能名称 | 性能需求标识符 | 性能概述 | 完成情况 |
|---|---|---|---|---|---|
| 1 | 传输加密子系统 | SM3 杂凑算法性能 | PR_1_1 | 完整性保护支持商用密码算法(GM/T 0004),SM3 杂凑 ≥1.5 Gbps | 【未测试】 |
| 2 | SM4 ECB 加解密算法性能 | PR_1_2 | 机密性保护支持商用密码算法(GM/T 0002),SM4 ECB 加解密 ≥7 Gbps | 【未测试】 | |
| 3 | 鉴权及策略管理子系统 | 身份鉴别方式 | PR_2_1 | 支持用户名口令认证、短信验证码两种身份鉴别方式 | 口令认证支持,短信验证码未测试接入 |
| 4 | SM2 签名和验签算法性能 | PR_2_2 | SM2 签名 ≥2000 次/s、SM2 验签 ≥1000 次/s | 完成,性能未测试 | |
| 5 | 访问控制策略冲突检测性能 | PR_2_3 | 属性数据类型 ≥3 类,匹配运算符型 ≥4 类 | 【未测试】 |
三、研究成果及其水平
3.1 主要研究成果
【编者补充】原文 v3 中本节仅有标题、正文留空,以下依据项目实际研制成果补写。
项目按合同与研制任务书要求,完成了 MCS 信息安全传输控制软件的设计、编码、联调与文档编制,形成"一套平台、两端入口、两套 SDK、一组文档"的完整成果体系,主要研究成果如下。
1)研制完成 MCS 信息安全传输控制软件全量组件。 包括:认证鉴权后端(Django 4.2 + DRF,接口前缀 /api/v3/,含 14 个业务应用、37 个路径、79 个内部 REST 操作)、认证鉴权前端管理页面(Vue 3 + Element Plus,PC 与移动端两套 UI)、华为 MatePad 鸿蒙 NEXT 原生安全浏览器 APP(ArkTS,包名 cn.ac.nsp.qxj.nsp_browser)。系统覆盖设备注册、密钥协商、多因子认证、加密传输、策略管控、日志审计、水印与数据溯源全部 7 个功能组成部分。
2)提出并实现四步 SM2 身份认证与密钥协商协议。 协议按 INIT → RESP → ACK → TOKEN 四步交互,在完成双向身份认证的同时协商出 SM4 会话密钥;会话密钥经鸿蒙关键资产存储(Asset Store)与服务端 Redis 分区保存,卸载即清、不落日志。协议安全性经 BAN 逻辑推理证明与 Scyther 工具形式化验证(详见 2.7.1)。
3)设计 NSP-SM 国密令牌机制。 采用 SM2withSM3 非对称签名的联合令牌(access_token + refresh_token),并通过令牌黑名单(jti)、会话撤销(sid)、用户令牌版本(token_version)三级机制支持登出失效、管理员强制下线与用户级批量失效,兼顾无状态验签与主动吊销能力。
4)制定 64B 标准加密信封与 SM4-GCM 加密传输规范。 统一了版本号、主命令、密码模式、发送者标识、初始向量、保留域与 GCM 认证标签的二进制布局,业务数据在 Pad、MCS 后台、主备站间全程机密性与完整性保护,篡改报文在解密前即被检出。
5)实现基于角色—区域—时间的多维访问控制。 在 RBAC 基础上叠加圆形地理围栏(支持 WGS84/GCJ-02/BD-09 三种坐标系)与时间规则(允许/拒绝模式、跨夜与单双周),登录时实时多因子决策,策略变更即时生效。
6)攻克图片气象数据高鲁棒性数字水印技术。 采用 BCH 纠错编码与 DCT 变换域自适应嵌入,水印图像平均 PSNR 达 38.10 dB、SSIM 达 0.9815,在 16 组压缩、缩放、噪声、剪切、旋转等攻击实验下水印仍可提取(详见 2.7.2),并提供水印嵌入、批量嵌入、提取 3 个 C/Python 接口。
7)完成 L0 数据溯源及篡改检测接口库。 通过封装/解封装为 L0 数据生成全局唯一标识并记录处理系统,解封装时校验数据完整性,为气象数据外部流转提供来源取证依据。
8)沉淀可复用对接资产与交付文档。 交付前端 JS SDK、后端 Python SDK(wheel,支持 DRF 直接接入)、教学 Demo,以及用户手册、部署文档、技术总结(含接口设计详录)、测试报告与测试执行记录五份文档;接口合计 108 个(外部 15 + 后台公共服务 3 + JSBridge 6 + 配套函数库 5 + 内部 REST 79),全部经源码核对。
3.2 研究成果的主要技术创新点
【编者补充】原文 v3 中本节仅有标题、正文留空,以下依据项目实际技术方案补写。
1)基于重定向的零改造安全接入机制。 用户访问 MCS 时由传输加密层拦截并基于 HTTP 重定向引导至鉴权系统完成认证与密钥协商,MCS 后台仅需调用本地 token 校验与加解密三个公共服务接口,无需改动既有业务逻辑即可获得全链路安全能力,显著降低存量系统的安全加固成本。
2)可证明安全的 SM2 四步握手协议。 将非对称身份认证与会话密钥协商合并为四步完成,并分别以 BAN 逻辑完成协议目标推理、以 Scyther 完成自动化形式化验证,从方法论上保证了双向认证、会话密钥机密性与新鲜性,而非仅依赖工程经验。
3)紧凑自描述的 64B 标准信封。 在固定 64 字节帧头内完成算法版本、命令类型、发送者 UUID、IV 与保留域布局,并将 GCM 认证标签置于帧尾,单帧自描述、可扩展,既适配鸿蒙 APP 二进制通道,也支持主备站密码卡通道复用同一封装。
4)不可见性与鲁棒性平衡的 DCT-BCH 水印方案。 针对卫星云图纹理特点设计 DCT 域自适应嵌入强度,并以 BCH 编码对水印比特纠错,在 PSNR 38.10 dB 的高保真条件下通过 16 类攻击鲁棒性测试,解决了气象图像外发后"看不见、改不掉、提得出"的版权标识难题。
5)"双 SDK + 教学 Demo"的可复制交付形态。 将认证服务器、业务后端、业务前端之间的信任边界收敛为稳定的 SDK 契约(JS 侧 6 个方法、Python 侧 3 个高层函数),第三方业务系统按教学 Demo 即可在不接触密码私钥的前提下完成接入,形成可复制推广的平台化安全能力。
3.3 研究成果应用情况
【编者补充】原文 v3 中本节仅有标题、正文留空,以下依据项目实际部署情况补写。
1)工程现场部署应用。 本系统已部署于国家卫星气象中心 DMZ 区 MCS 服务器,支撑北京主站与乌兰察布灾备站双站点运行;华为 MatePad 鸿蒙安全浏览器 APP 经应用分发站 https://apps.nsp.ac.cn/ 与 hdc 两种方式向授权用户分发安装。
2)三大业务场景投入实用。 ①移动设备观测需求信息传输场景:Pad 用户经互联网完成设备注册、密钥协商与多因子登录后,加密访问 MCS 业务;②主备站间传输场景:任务时间表、调度令、公共配置参数在主站与灾备站间加密传输并校验完整性;③数据外部流转溯源场景:L0 数据封装标识与卫星图片水印嵌入在数据外发环节实际使用,支持事后溯源取证。
3)管理功能常态化运行。 认证鉴权前端 16 个功能页面(设备/用户/角色/策略/围栏/时间规则/辅助注册/日志/水印等)投入日常管理使用,安全日志完整记录登录认证、策略命中、密钥操作等审计事件,为安全管理员提供日常风控依据。
4)对接模式具备推广条件。 前端 JS SDK、后端 Python SDK 与教学 Demo 已形成标准接入流程,MCS 后续业务模块及其他第三方业务系统可依据《业务系统接入指南》直接对接;接入方无需重复建设认证与密码设施,仅需开发自有前后端并满足与认证服务器共享 Redis 的部署条件,成果具备在气象行业及同类涉密信息系统中推广应用的基础。
四、组织管理
4.1 计划执行情况
【编者补充】原文 v3 中本节仅有标题、正文留空,以下依据项目实际研制过程补写;具体起止日期以合同与项目计划为准。
项目严格按照研制任务书规定的节点组织实施,各阶段工作均按期完成,主要阶段执行情况如下表所示。
| 阶段 | 主要工作内容 | 完成情况 |
|---|---|---|
| 需求分析 | 梳理三大业务场景安全需求,明确 7 个功能组成部分与功能、性能技术指标,形成研制要求 | 已完成 |
| 方案设计 | 完成总体结构、七个子系统模块设计、四步握手与 64B 信封协议设计、数据库与界面设计,开展 BAN 逻辑与 Scyther 形式化验证 | 已完成 |
| 编码实现 | 完成认证鉴权后端、前端管理页面、鸿蒙 APP、两套 SDK 与教学 Demo 的编码及自测 | 已完成 |
| 联调测试 | 按四阶段测试流程执行 42 个功能用例与 3 个性能用例,缺陷分级闭环管理,形成测试报告与测试执行记录 | 已完成 |
| 验收交付 | 完成用户手册、部署文档、技术总结(含接口详录)、测试材料五份文档,组织现场部署与部署验证 | 已完成 |
功能性技术指标方面,研制要求规定的 31 项功能指标全部实现(完成情况详见 2.8.1);性能技术指标方面,SM2 签名/验签、SM4/SM3 吞吐、100 并发登录与密钥协商 5 项指标均满足要求(完成情况详见 2.8.2)。项目实施过程中未发生重大质量事故与安全保密事件,经费使用与人员投入符合计划安排。
4.2 项目组织方式及主要管理措施
中科院信工所作为国家在信息工程领域的战略科技力量,始终以攻克关键科技难题,解决国家重大战略需求为己任,坚持自主创新的技术发展战略,密切跟踪最新发展态势,提升整体技术水平。项目团队由网络安全、信息安全等方面的研发人员组成,承担过众多卫星互联网、智慧城市等安全防护系统的设计、研发与集成测试工作,项目团队参与完成卫星互联网地面安全防护设备的研制,项目经验丰富,可最大程度规避技术风险。
在知识产权方面,针对气象卫星的信息安全传输控制属于高度知识密集型,深厚的技术储备和超前的创新能力是保持核心竞争力的关键。中科院信工所拥有较多网络与信息安全相关的授权发明专利、软件著作、论文著作等,具有较好的知识产权储备,可以为本项目的顺利开展提供技术支撑。
在项目管理方面,中科院信工所已建立一套较为完整、合理和有效的内控制度,包括项目进度管理、财务管理、保密管理、人力资源管理和质量管理等方面的规章制度。项目实施中采用项目负责人把关与集体讨论相结合的制度,压缩管理层级,把目标分解落实到人;同时定期与华云星地通相关负责人沟通交流,确保项目有序推进。
在质量控制方面,中国科学院信息工程研究所已通过 ISO 9001-2015 质量体系认证,具有完备的质量管理控制体系和质量控制流程,在研制全过程实施严格质量控制措施,为产品全寿命管理奠定良好基础。
1)技术设计质量控制
- 对每一项任务制定设计开发计划,划分设计阶段,规定各阶段设计任务,并采取质量控制措施和验证方法。
- 设计开发计划确保前一阶段活动未达到要求不能转入下一阶段。
- 设计人员按相应设计规范开展设计工作,并以此作为控制和评价设计工作的准则。
- 运用优化设计和可靠性、可维护性技术开展设计。
- 执行设计文档和技术文件的审查制度,保证设计质量满足规定要求。
2)设备采购质量控制
- 编制采购文件、明确采购要求,按文件采购并对产品进行验证,对入库、保管及发放各环节有效控制。
- 对外购产品进行检验和试验,未经检验或验证合格的产品不得投入使用。
- 控制进货检验的数量和质量。
3)设备运输及交付质量控制
- 根据产品特点采取防止损坏或变质的搬运方法。
- 使用指定贮存场地或库房,按规定管理收发,及时发现情况。
- 采取适当防护和隔离措施,防止产品混淆或受环境不良影响。
- 产品交付时提供有关检验和试验结果。
4)安装调试质量控制
- 项目完成后项目负责人首先自测,再与华云星地通相关负责人整体测试。
- 按合同要求对相关使用人员进行技术培训,培训要有记录。
- 项目出现变化需变更时,执行《项目变更规范》。
- 项目实施完成后,项目负责人向质量师提交本阶段质量记录和质量文档,执行《项目实施质量审核规范》。
五、下一步工作设想
【编者补充】原文 v3 中本节仅有标题、正文留空(原文目录中本章为"六",正文标题为"五、下一步工作设想"),以下结合系统现状与业务发展方向补写。
1)对接 PCIE 密码卡等国密硬件。 按 GM/T 0018-2012《密码设备应用接口规范》完成与 PCIE 密码卡的对接,将主备站间批量数据加密、服务器密钥存储下沉至硬件密码模块,进一步提升高吞吐场景下的密码运算性能与密钥物理防护等级。
2)完善密钥与证书全生命周期管理。 增加服务器 SM2 密钥、TLS 证书的周期性轮换、到期预警与自动分发能力,密钥轮换过程中支持新旧密钥平滑过渡,避免因换钥导致的业务中断;APP 侧 CA 更新支持无感下发。
3)强化主备站容灾能力。 完善主站与灾备站间数据库自动同步、Redis 会话备份与一键容灾切换流程,明确切换 RTO/RPO 指标并开展常态化容灾演练,保障极端情况下 MCS 业务连续运行。
4)建设自动化测试与持续交付流水线。 将接口自动化测试(基于 OpenAPI 契约与 DRF 测试客户端)、冒烟回归、版本构建与部署脚本纳入 CI/CD 流水线,实现"提交即验证、发版可追溯",缩短迭代周期并固化质量门禁。
5)扩展数字水印与数据溯源能力。 研究面向视频、更多遥感数据格式的水印算法,以及抗深度学习篡改的水印增强方案;扩展 L0 封装标识与区块链/可信时间戳等外部存证手段的结合,提升溯源证据的司法适用性。
6)深化集中监控与安全态势感知。 将 Nginx、gunicorn、MySQL、Redis 运行指标与安全日志接入单位统一监控平台,配置异常登录、围栏外尝试、暴力破解、会话异常等场景的实时告警与联动处置,从被动运维转向主动态势感知。
十、出错处理设计
本章节描述系统遇到预期内或预期外的故障、错误或异常情况时,如何检测、报告、处理和恢复,以保证系统稳定性和可用性。
10.1 出错输出信息
各子系统的出错信息需以用户界面、系统日志记录、接口调用反馈等方式反馈给用户和对接软件系统,表 10-1 列出可能出错的场景、输出信息内容及形式。
表 10-1 出错场景及错误信息输出
| 出错场景 | 输出信息内容 | 输出形式 |
|---|---|---|
| 身份认证失败 | 错误码和提示信息(如用户名/密码错误或短信验证码无效);建议重新输入或联系管理员 | 用户界面弹窗 + 系统日志(WARN 级) |
| 设备未授权/禁用 | 错误码和提示信息(如设备未注册或已被禁用);建议联系管理员激活设备 | 用户界面弹窗 + 系统日志(WARN 级) |
| 密钥协商失败 | 错误码和提示信息(如会话密钥协商失败、解密会话密钥材料失败) | 系统日志(ERROR 级)+ 告警通知 |
| 数据完整性校验失败 | 错误码和提示信息(如数据被篡改) | 系统日志(ALERT 级)+ 审计记录 |
| 访问控制策略冲突 | 错误码和提示信息(如策略规则冲突、冲突的权限内容) | 管理界面提示 + 系统日志(ERROR 级) |
| L0 数据篡改检测异常 | 错误码,表示 L0 数据完整性校验失败 | 接口输出 |
错误反馈采用结构化错误信息格式,包含 code(错误码) 与 message(错误提示) 两部分:code 为错误唯一标识符,由数字组合构成,用于快速识别错误类型(网络异常、参数校验失败、权限不足等),便于日志记录与问题追踪;message 为后端传给前端的用户友好提示。示例:
{
"code": "1001",
"message": "参数校验失败"
}2
3
4
应用错误码的 HTTP 映射遵循 RFC 标准、与状态码语义对齐。HTTP 协议错误类型如表 10-2。
表 10-2 HTTP 协议错误类型
| 状态码 | 错误类型 | RFC 标准描述 |
|---|---|---|
| 400 | 客户端参数错误 | 请求语法错误或无法被服务器理解(如 JSON 格式错误、必填字段缺失) |
| 401 | 认证失败 | 未提供有效凭证或认证协议错误(如 OAuth 令牌失效) |
| 403 | 权限或状态异常 | 请求被拒绝(如用户角色无访问权限、资源状态不可操作) |
| 404 | 资源未找到 | 请求 URI 对应资源不存在或已被删除 |
| 405 | 请求方法错误 | 使用了服务器不支持的 HTTP 方法(如对 GET 接口使用 POST) |
| 408 | 客户端请求超时 | 服务器等待请求超时(常见于长连接或大文件上传场景) |
| 409 | 资源冲突 | 并发操作导致数据不一致(如重复提交订单) |
| 413 | 请求体过大 | 请求实体超过服务器限制(如文件上传超 size 限制) |
| 422 | 参数校验失败 | 请求格式正确但语义错误(如枚举值不合法) |
| 429 | 频率限制 | 短时间内请求次数超过限流阈值 |
| 500 | 服务端错误 | 未预期的服务器内部错误(如空指针异常) |
| 502 | 网关错误 | 代理服务器收到无效响应(如后端服务宕机) |
| 503 | 服务不可用 | 服务器过载或维护中(需配合 Retry-After 头) |
| 504 | 网关超时 | 代理服务器等待后端响应超时 |
错误码大类按模块划分,如表 10-3。
表 10-3 错误码的模块划分表
| 模块编号 | 模块名称 | 范围 | 示例场景 |
|---|---|---|---|
| 10 | 用户管理 | 1001~1999 | 注册、登录、信息修改 |
| 20 | 认证授权 | 2001~2999 | Token 管理 |
| 30 | 系统服务 | 3001~3999 | 系统本身服务错误 |
| 40 | 业务异常 | 4001~4999 | 自定义业务逻辑错误 |
| 50 | 密钥管理 | 5001~5999 | 密钥操作异常 |
| 60 | 设备管理 | 6001~6999 | 设备状态/配置冲突 |
| 70 | 权限管理 | 7001~7999 | 角色/权限操作冲突 |
完整错误码列表分类如下。
1. 用户管理相关错误码(表 10-4)
| 错误码 | 含义 | 触发场景 | HTTP 映射 | 说明 |
|---|---|---|---|---|
| 1001 | 参数校验失败 | 缺少必填字段/格式错误 | 400 | 返回具体字段错误信息 |
| 1002 | 参数重复 | 用户名/邮箱等唯一字段重复 | 409 | 提示具体重复字段(如"用户名已被占用") |
| 1003 | 邮箱格式错误 | 不符合 RFC 5322 标准 | 400 | 服务端双重验证 |
| 1004 | 手机号格式错误 | 不符合国际号码规范 | 400 | 集成第三方验证服务 |
| 1005 | 密码强度不足 | 未满足数字/字母/符号组合要求 | 400 | 强制至少 8 位混合字符 |
| 1006 | 验证码失效 | 验证码超时或错误 | 401 | 需重新获取验证码 |
| 1007 | 账户未激活 | 未完成邮箱/手机验证 | 401 | 返回激活链接或重发选项 |
| 1008 | 账户锁定 | 连续 5 次密码错误 | 403 | 提示解锁时间(如"请 15 分钟后重试") |
| 1009 | 认证失败 | 用户不存在/口令错误 | 404 | 统一返回"凭证错误"隐藏账户信息 |
| 1010 | 两次密码不一致 | 新密码与确认密码不匹配 | 400 | 前端需即时验证 |
| 1011 | 操作频率超限 | 60 分钟内修改密码超 3 次 | 429 | 提示冷却时间 |
| 1012 | 账号冲突 | 重复绑定同一手机号/邮箱 | 409 | 提示"该账号已被绑定" |
| 1013 | 安全验证不足 | 解绑最后的安全验证方式 | 403 | 要求保留至少一种验证方式 |
| 1014 | 设备未信任 | 新设备登录未二次验证 | 403 | 需完成邮箱/手机验证 |
| 1015 | 敏感操作拒绝 | 删除账户等操作未满足条件 | 403 | 提示具体操作条件 |
| 1016 | 黑名单限制 | 用户因违规被限制 | 403 | 提示联系客服解除 |
| 1017 | 操作权限不足 | 用户角色无权操作 | 403 | 提示联系管理员授权 |
| 1018 | 文件类型不支持 | 上传非 jpg/png/pdf 格式 | 400 | 明确支持格式列表 |
| 1019 | 文件大小超限 | 文件超过 10 MB 限制 | 413 | 提示最大支持大小 |
| 1020 | 会话超时 | 无操作超过系统设定时间 | 401 | 要求重新登录 |
| 1021 | 必填字段缺失 | 请求缺少必要参数 | 400 | 返回缺失字段清单 |
| 1022 | 资源权限不足 | 无权访问特定资源 | 403 | 提示权限具体范围 |
| 1023 | 服务不可用 | 高频请求不存在数据/服务宕机 | 503 | 提示稍后重试 |
2. 认证授权相关错误码(表 10-5)
| 错误码 | 含义 | 触发场景 | HTTP 映射 | 说明 |
|---|---|---|---|---|
| 2001 | Token 过期 | AccessToken 有效期 ≤5 分钟 | 401 | 返回 WWW-Authenticate: Bearer error="invalid_token" |
| 2002 | Token 无效 | 签名校验失败/结构篡改 | 401 | 记录客户端 IP 并触发告警 |
| 2003 | 权限不足 | 访问超出角色权限的接口 | 403 | 返回 scope 缺失清单 |
| 2004 | 刷新令牌过期 | RefreshToken 超过 7 天有效期 | 401 | 强制重新登录 |
| 2005 | 令牌类型错误 | 用 RefreshToken 访问业务接口 | 400 | 提示正确使用 AccessToken |
| 2006 | 授权范围不足 | Token 的 scope 不满足接口要求 | 403 | 返回需申请的权限列表 |
| 2007 | 重复刷新令牌 | 5 分钟内重复提交刷新请求 | 429 | 防止令牌刷新攻击 |
| 2008 | 授权码失效 | 授权码超时(>10 分钟)或被使用 | 401 | 需重新授权 |
| 2009 | 会话固定攻击 | 登录前后 SessionID 未变更 | 403 | 强制重置会话并审计 |
| 2010 | 客户端证书无效 | mTLS 证书验证失败 | 401 | 仅允许注册的客户端证书 |
| 2011 | 授权服务器不可用 | 服务响应超时 | 503 | 熔断机制启动时返回 |
3. 系统服务相关错误码(表 10-6)
| 错误码 | 含义 | 触发场景 | HTTP 映射 | 说明 |
|---|---|---|---|---|
| 3001 | 数据库连接失败 | MySQL 服务不可用 | 500 | 自动触发服务熔断机制 |
| 3002 | 未知系统错误 | 未捕获的运行时异常 | 500 | 记录堆栈跟踪并告警 |
| 3003 | 服务调用超时 | RPC/HTTP 调用超过设定阈值(如 3 秒) | 504 | 推荐设置重试机制 |
| 3004 | 第三方服务异常 | 短信等外部服务返回错误 | 502 | 记录第三方错误码便于排查 |
| 3005 | 数据库死锁 | 事务并发冲突 | 500 | 自动重试最多 3 次 |
| 3006 | 文件系统只读 | 磁盘空间 ≥95% | 507 | 紧急告警通知运维 |
| 3007 | 配置加载失败 | 启动时无法读取关键配置 | 500 | 阻断服务启动 |
| 3008 | 线程池耗尽 | 业务线程池 100% 占用 | 503 | 自动拒绝新请求 |
| 3009 | 内存溢出 | 内存使用 ≥98% | 500 | 记录 |
| 3010 | 数据加密失败 | 加解密服务异常 | 500 | 涉及敏感数据的请求拒绝 |
4. 密钥管理相关错误码(表 10-7)
| 状态码 | 含义 | 触发场景 | HTTP 映射 | 说明 |
|---|---|---|---|---|
| 5001 | 指定密钥不存在 | 查询或操作不存在的密钥 | 404 | 检查密钥 ID 是否正确 |
| 5002 | 密钥已过期 | 使用过期密钥进行更新操作 | 400 | 需要重新生成密钥 |
| 5003 | 密钥类型不匹配 | 密钥类型与操作不匹配 | 400 | 检查密钥类型 |
| 5004 | 密钥已撤销 | 重复撤销同一密钥 | 409 | 检查密钥状态并停止重复操作 |
5. 设备管理相关错误码(表 10-8)
| 错误码 | 含义 | 触发场景 | HTTP 映射 | 说明 |
|---|---|---|---|---|
| 6001 | 设备不可用 | 设备离线/被禁用时操作 | 423 | 检查设备状态并重试 |
| 6002 | 设备编号重复 | 重复使用相同设备编号 | 409 | 使用唯一设备编号 |
| 6003 | IP 地址冲突 | 重复使用相同 IP 地址 | 409 | 使用唯一 IP 地址 |
| 6004 | 设备在线 | 尝试删除在线设备 | 400 | 需先下线设备 |
| 6005 | 时间冲突 | 开始时间晚于结束时间 | 400 | 调整时间范围 |
6. 权限管理相关错误码(表 10-9)
| 错误码 | 含义 | 触发场景 | HTTP 映射 | 说明 |
|---|---|---|---|---|
| 7001 | 权限不存在 | 指定权限 ID 在系统中不存在 | 400 | 检查权限 ID 是否正确 |
| 7002 | 角色不存在 | 查询不存在的角色 ID | 404 | 检查角色 ID 是否正确 |
| 7003 | 角色已被使用 | 删除已被用户关联的角色 | 400 | 需先解除所有用户关联 |
| 7004 | 角色关联用户未解除 | 删除前需解除用户绑定 | 400 | 删除前需解除用户绑定 |
| 7005 | 地理位置格式错误 | 需符合经纬度格式 | 400 | 需符合经纬度格式 |
10.2 出错处理对策
出错处理对策指检测到错误后,用户应采取的具体措施以应对、减轻影响并恢复正常使用:
- 错误检测机制:加强前端、接口库对外接口等输入校验。
- 服务隔离机制:用户超过阈值认证失败后,禁用设备、拒绝访问。
- 密钥泄露处理:通过密钥管理子系统全局吊销并重新分发。
- 资源池隔离:加密服务与普通业务线程池分离。
- 高可用性设计:采用会话保持,切换过程保留未完成的事务状态。
十一、安全保密设计
本项目目标是在 MCS 与外部交互信息过程中保障气象数据的完整性、机密性和可用性,详见模块设计与处理流程章节。身份认证、授权与访问控制、传输安全、存储安全等方面的设计要点:
- 身份认证:采用用户名/密码、短信验证码等双因素认证;认证协议采用自定义双向身份认证协议;用户密码有强度要求,存储时加盐哈希;会话管理采用 JWT、有效期、刷新机制。
- 授权与访问控制:采用 COAC 基于网络空间的访问控制模型,鉴权时考虑用户接入网络、用户位置、接入时间;通过用户-角色-权限方式进行权限管理和分配。
- 安全传输:自定义安全传输协议,采用国密算法进行机密性和完整性保护。
- 存储安全:数据库字段加密,设备密钥存储在密码卡安全存储区,随年审更新。
- 输入验证:对所有输入(用户输入、API 参数、文件上传)严格验证(类型、长度、范围、格式、白名单);输出到不同上下文(HTML、SQL、JavaScript)前编码或转义,防止 XSS、SQL 注入、命令注入。
- 日志审计:记录关键安全事件(登录成功/失败、权限变更、数据访问),日志包含操作者、时间、操作对象、操作类型、操作结果等。
十二、维护设计
本章节描述为方便系统上线后日常维护所做的设计:
- 日志:详细记录用户管理、设备管理、用户登录等过程的日志信息。
- 模块化部署:各子系统(如传输加密、密钥管理)可独立升级。
- 接口兼容性:Python/C 接口库保持向后兼容,版本切换无需修改业务代码。
- 文档:输出《用户手册》等文档。