GM/T 0031-2014《安全电子签章密码技术规范》深度解读:从数据结构到合规实施
title: "GM/T 0031-2014《安全电子签章密码技术规范》深度解读:从数据结构到合规实施" slug: "gm-t-0031-2014-electronic-seal-crypto-spec" excerpt: "解读国密电子签章核心标准 GM/T 0031-2014 的电子印章/签章数据结构、密码处理流程和安全机制,分析 2025 修订版与 GB/T 38540-2020 的关系,提供密评合规实施指导。" category: standard tags: - GM/T 0031 - 电子签章 - SM2 - SM3 - 密评合规
概述
GM/T 0031-2014《安全电子签章密码技术规范》是密码行业标准中规范电子印章和电子签章技术的核心标准,由国家密码管理局于 2014-02-13 发布并实施。该标准规定了电子印章和电子签章的数据结构、密码处理流程以及相应的安全机制,适用于电子印章系统的研制开发、使用和检测。
2026 年 7 月 1 日,修订版本 GM/T 0031-2025 正式实施,替代 2014 版。此次修订最大的变化在于:行业标准(GM/T 0031)与国家标准(GB/T 38540-2020《信息安全技术 安全电子签章密码技术规范》)在数据结构层面实现统一,解决了长期存在的"行标与国标并行、厂商实现碎片化"问题。
标准背景与演进
1. 标准定位
GM/T 0031 在密码标准体系中的位置:
| 维度 | 说明 |
|---|---|
| 标准层级 | 密码行业标准(GM/T) |
| 标准性质 | 技术要求规范 |
| 归口单位 | 密码行业标准化技术委员会 |
| 主管部门 | 国家密码管理局 |
| 对应国标 | GB/T 38540-2020 |
| 配套检测标准 | GM/T 0047-2016 / GM/T 0047-2024 |
| 起草单位 | 北京数字认证、上海数字证书认证中心、卫士通、兴唐通信等 |
2. 版本演进时间线
2014-02-13 GM/T 0031-2014 发布实施
↓
2020-04-28 GB/T 38540-2020 发布(国标,兼容并扩展)
↓
2026-01-07 国家密码管理局第54号公告:GM/T 0031-2025 发布
↓
2026-07-01 GM/T 0031-2025 正式实施,替代 2014 版3. 与 GB/T 38540-2020 的关系
GB/T 38540-2020 是国家标准,技术要求更全面,覆盖范围更广;GM/T 0031 是行业标准,侧重密码技术细节。两者长期并行导致厂商"二选一"或"双重适配"的困境。
GM/T 0031-2025 修订的核心目标之一就是与 GB/T 38540-2020 保持数据结构一致,实现互联互通。两者主要差异:
| 维度 | GB/T 38540-2020 | GM/T 0031-2025 |
|---|---|---|
| 性质 | 推荐性国家标准 | 强制性行业标准 |
| 适用范围 | 更广(含检测、管理) | 聚焦密码技术 |
| 数据格式 | 统一结构 | 兼容 GB/T 38540 |
| 实施要求 | 国密改造参考依据 | 密评合规硬性要求 |
| 检测方法 | 自行规定 | 配套 GM/T 0047 |
密码应用安全机制
GM/T 0031 的安全机制基于 PKI 公钥密码技术,从数据格式和处理流程两个维度保障电子印章和电子签章的安全性。
1. 安全目标
电子签章系统必须满足以下安全属性:
- 真实性:电子印章代表真实的签章者身份
- 完整性:签章后的数据未被篡改
- 不可否认性:签章者不能否认已签署的电子文件
- 抗伪造性:电子印章图像和数据不可被复制伪造
2. 算法要求
GM/T 0031-2014 规定的安全电子签章必须使用国密算法:
| 密码功能 | 要求算法 | 相关标准 |
|---|---|---|
| 数字签名 | SM2 | GM/T 0003.2-2012 |
| 消息摘要 | SM3 | GM/T 0004-2012 |
| 签名算法标识 | SM2WithSM3 (OID: 1.2.156.10197.1.501) | — |
| 数据加密(可选) | SM4 | GM/T 0001-2012 |
| 时间戳 | 遵循 GM/T 0033 | GM/T 0033-2014 |
3. 证书要求
签章者必须持有有效的 SM2 数字证书,证书需满足:
- 证书算法:
id-ecPublicKey+sm2p256v1(OID: 1.2.156.10197.1.301) - 密钥用途:必须包含
digitalSignature - 证书链:可信 CA 签发
- 有效期:在签章时刻处于有效期内
电子印章数据结构与流程
1. 术语定义
标准中三个核心术语的关系:
电子印章(Electronic Seal)
= 制章者签名后的数据(含签章者信息 + 印章图像)
= 数字身份载体
电子签章(Electronic Seal Signing)
= 使用电子印章对电子文件进行签名的过程
= 签署行为的总称
电子签章数据(SES_Signature)
= 签章行为的输出结果(含签名值 + 印章信息 + 签名信息)
= 不可篡改的证据2. 电子印章数据结构(SESeal)
电子印章由制章者(通常是 CA 或印章管理系统)对签章者的印章信息进行签名后生成,核心字段如下:
SESesl ::= SEQUENCE {
header SES_Header, -- 印章头信息
esID IA5String, -- 印章标识
property SES_ESPropertyInfo, -- 印章属性信息
picture SES_ESPictrueInfo, -- 印章图像信息
extDatas ExtensionDatas OPTIONAL -- 扩展数据
}#### 印章头(SES_Headal)
SES_Header ::= SEQUENCE {
id IA5String, -- 标识:"ES"
version INTEGER, -- 版本号(2014版 = 1)
VID IA5String, -- 厂商标识
esID IA5String -- 印章唯一标识
}#### 印章属性(SES_ESPropertyInfo)
SES_ESPropertyInfo ::= SEQUENCE {
cert CertList, -- 签章者证书链
createDate GeneralizedTime, -- 制章时间
validStart GeneralizedTime, -- 有效起始时间
validEnd GeneralizedTime, -- 有效终止时间
name UTF8String, -- 印章名称
issueIA IA5String -- 制章者名称
}#### 印章图像(SES_ESPictrueInfo)
SES_ESPictrueInfo ::= SEQUENCE {
type IA5String, -- 图像类型("GIF"/"PNG"等)
data OCTET STRING, -- 图像数据
width INTEGER, -- 图像宽度(毫米)
height INTEGER -- 图像高度(毫米)
}3. 电子印章生成流程
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 签章者证书 │ │ 印章图像 │ │ 印章属性 │
│ (SM2) │ │ (PNG/GIF) │ │ 信息 │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└───────────┬───────┴───────────────────┘
▼
┌───────────────┐
│ 构造 SESeal │
│ ASN.1 结构 │
└───────┬───────┘
▼
┌───────────────┐
│ SM3 哈希 │
│ 计算摘要 │
└───────┬───────┘
▼
┌───────────────┐
│ 制章者 SM2 │
│ 私钥签名 │
└───────┬───────┘
▼
┌───────────────┐
│ 生成电子印章 │
│ SESeal + 签名 │
└───────────────┘4. 电子印章验证流程
输入:电子印章数据 + 制章者证书
│
├─ 1. 解析 ASN.1 结构,提取各字段
│
├─ 2. 验证制章者证书链
│ └─ 信任锚验证 → 有效期验证 → 吊销状态检查
│
├─ 3. 提取签章者证书,验证证书链
│ └─ 信任锚验证 → 有效期验证
│
├─ 4. 使用制章者公钥验证印章签名
│ └─ SM2 验签(印章信息 → SM3 摘要 → 签名验证)
│
├─ 5. 检查印章有效期
│ └─ validStart ≤ 当前时间 ≤ validEnd
│
└─ 6. 全部通过 → 验证成功电子签章数据结构与流程
1. 电子签章数据结构(SES_Signature)
签章结果数据是签章行为的最终产出,包含签名值、印章信息、签名信息三大模块:
SES_Signature ::= SEQUENCE {
toBeSigned SES_SealInfo, -- 待签章信息(印章 + 文件摘要)
signature SES_SignInfo -- 签名信息(算法 + 签名值 + 时间戳等)
}#### 待签章信息(SES_SealInfo)
SES_SealInfo ::= SEQUENCE {
header SES_Header, -- 标识 "ES_Seal"
esID IA5String, -- 印章标识
picture SES_ESPictrueInfo, -- 印章图像
data OCTET STRING, -- 签章原始数据
hash OCTET STRING, -- 数据摘要(SM3)
timeInfo SES_TSTInfo, -- 时间信息
cert CertList, -- 签章者证书
extDatas ExtensionDatas OPTIONAL
}#### 签名信息(SES_SignInfo)
SES_SignInfo ::= SEQUENCE {
signatureAlgorithm AlgorithmIdentifier, -- SM2WithSM3
signature OCTET STRING, -- SM2 签名值(DER 编码)
timestamp SES_TSTInfo OPTIONAL, -- 时间戳(RFC 3161)
cert CertList, -- 签章者证书(冗余,便于独立验证)
extDatas ExtensionDatas OPTIONAL
}2. 电子签章生成流程
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 电子文件 │ │ 电子印章 │ │ 签章者私钥 │
│ (原文) │ │ (SESeal) │ │ (SM2) │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
▼ │ │
┌─────────┐ │ │
│ SM3 │ │ │
│ 计算摘要 │ │ │
└────┬────┘ │ │
│ │ │
└─────────┬─────────┴───────────────────┘
▼
┌───────────────┐
│ 构造 SES_SealInfo
│ (印章+摘要+时间+证书)
└───────┬───────┘
▼
┌───────────────┐
│ ASN.1 编码 │
│ → 待签数据 │
└───────┬───────┘
▼
┌───────────────┐
│ SM3 哈希 │
└───────┬───────┘
▼
┌───────────────┐
│ 签章者 SM2 │
│ 私钥签名 │
└───────┬───────┘
▼
┌───────────────┐
│ 生成时间戳 │
│ (RFC 3161) │
└───────┬───────┘
▼
┌───────────────┐
│ 构造 SES_Signature
│ = 签章结果数据 │
└───────────────┘3. 电子签章验证流程
验证是签章的逆过程,需要确认:印章合法、签名有效、数据完整、时间可信。
输入:SES_Signature + 原始文件 + 信任锚证书
│
├─ 1. 解析 SES_Signature ASN.1 结构
│
├─ 2. 提取印章数据,验证电子印章
│ └─ 调用电子印章验证流程
│
├─ 3. 计算原始文件 SM3 摘要
│ └─ 与 SES_SealInfo.hash 比对
│
├─ 4. 提取签章者公钥(从证书)
│ └─ SM2 公钥(x, y 坐标)
│
├─ 5. ASN.1 编码待签数据 → SM3 摘要
│
├─ 6. SM2 验签
│ └─ 使用签名值验证摘要
│
├─ 7. 验证时间戳(如存在)
│ └─ GM/T 0033 / RFC 3161 验证
│
└─ 8. 全部通过 → 验证成功2025 修订要点
GM/T 0031-2025 于 2026-07-01 正式实施,主要修订内容:
1. 数据结构统一
与 GB/T 38540-2020 实现数据结构层面的统一,消除行业/国家标准之间的格式差异:
| 项目 | GM/T 0031-2014 | GM/T 0031-2025 |
|---|---|---|
| 数据格式 | 独立结构 | 与 GB/T 38540 兼容 |
| 签名值编码 | R+S 拼接 | DER 编码(与国标一致) |
| 证书引用方式 | 内联完整证书 | 可选引用或内联 |
| OID 标识 | 部分缺失 | 补全国密 OID |
2. 密码算法更新
- 引用标准全面更新:GM/T 0003→GM/T 0003-2012、GM/T 0004→GM/T 0004-2012
- SM2 签名遵循 GB/T 32918.2-2016
- 时间戳遵循 GM/T 0033-2023
- 密码应用标识遵循 GM/T 0006-2023
3. 流程步骤细化
- 电子印章生成流程增加"印章图像格式校验"步骤
- 签章验证流程增加"证书吊销状态检查(OCSP/CRL)"强制要求
- 时间戳验证流程细化
4. 扩展性增强
extDatas字段定义更加规范- 支持多格式印章图像(新增 SVG、OFD 嵌入式)
- 增加对签章者多证书场景的支持
合规实施建议
1. 密评合规要点
GM/T 0031 是密评(电子签章系统密码应用评估)的核心依据,合规实施需重点关注:
| 合规项 | 要求 | 常见问题 |
|---|---|---|
| 算法合规 | 必须使用 SM2/SM3 | 使用 SHA-256 替代 SM3 → 不合规 |
| 证书合规 | 必须使用 SM2 证书 | 使用 RSA 证书签章 → 不合规 |
| 数据结构 | 必须遵循 ASN.1 结构 | 自定义 JSON/XML 格式 → 不合规 |
| 时间戳 | 必须使用可信时间戳 | 无时间戳或本地时间 → 扣分 |
| 密钥管理 | 签章私钥必须安全存储 | 软存储私钥 → 高风险 |
2. 实施步骤建议
阶段一:差距分析(1-2 周)
- 盘点现有电子签章系统使用的算法和数据格式
- 对照 GM/T 0031 逐条标记不符合项
- 评估改造工作量(算法替换、格式迁移、流程重构)
- 确定 SM2 证书签发方案(自建 CA 或公共 CA)
- 设计电子印章 ASN.1 编解码模块
- 设计签章/验章服务接口
- 确定时间戳服务方案(自建 TSA 或第三方)
- 集成国密密码模块(加密机/密码卡/KMS)
- 实现 SESeal 和 SES_Signature 编解码
- 实现签章/验章核心逻辑
- 集成时间戳服务
- 证书吊销状态检查(OCSP/CRL 客户端)
- 功能测试:签章/验章全链路
- 互操作性测试:与第三方系统互通
- 密评预评估:对照 GM/T 0047 自查
- 性能压测:并发签章场景
3. 兼容性策略
GM/T 0031-2014 到 2025 的过渡期内,建议采用"双格式并行"策略:
签章服务端
├─ 签章请求
│ ├─ 旧系统 → 生成 2014 格式签章数据
│ └─ 新系统 → 生成 2025 格式签章数据
│
└─ 签章格式标识(header.version 字段区分版本)
验章服务端
├─ 解析 header.version
├─ version=1 → 2014 格式验证逻辑
└─ version=4(2025版版本号) → 2025 格式验证逻辑与相关标准的关系
GM/T 0031 不是孤立标准,它在国密标准生态中与其他多个标准协同:
GM/T 0031(电子签章)
├── 算法基础
│ ├── GM/T 0003.2-2012 SM2 数字签名
│ ├── GM/T 0004-2012 SM3 杂凑
│ └── GM/T 0001-2012 SM4 加密(可选)
├── 证书与 PKI
│ ├── GM/T 0015-2023 数字证书格式
│ ├── GM/T 0034-2014 证书认证系统
│ └── GM/T 0009-2023 SM2 使用规范
├── 时间与戳
│ └── GM/T 0033-2023 时间戳接口规范
├── 标识
│ └── GM/T 0006-2023 密码应用标识规范
└── 检测
└── GM/T 0047-2024 安全电子签章密码检测规范总结
GM/T 0031-2014/2025 是国密电子签章领域最核心的技术标准,其核心价值在于:
- 统一数据格式:通过 ASN.1 严格定义电子印章和签章数据结构,确保跨平台互认
- 强制国密算法:要求使用 SM2/SM3 算法,从根本上保障技术自主可控
- 全链路安全:从印章制作到签章验证的闭环密码处理,覆盖签名、摘要、时间戳、证书验证
- 密评基石:是电子签章系统密码应用评估的直接依据
参考来源
- GM/T 0031-2014《安全电子签章密码技术规范》(国家密码管理局,2014-02-13 发布)
- GM/T 0031-2025《安全电子签章密码技术规范》(国家密码管理局第54号公告,2026-07-01 实施)
- GB/T 38540-2020《信息安全技术 安全电子签章密码技术规范》
- GM/T 0047-2016《安全电子签章密码检测规范》
- GM/T 0047-2024《安全电子签章密码检测规范》(修订版)
- GB/T 32918.2-2016《信息安全技术 SM2 椭圆曲线公钥密码算法 第2部分:数字签名算法》
- GB/T 32905-2016《信息安全技术 SM3 密码杂凑算法》
- GM/T 0033-2023《时间戳接口规范》
- GM/T 0006-2023《密码应用标识规范》