SM2/SM3/SM4 在邮件系统里到底用在哪几个位置?
三者不是替换关系,而是分工关系,分别对应密码行业标准中的三份算法规范:
- SM2:椭圆曲线公钥密码算法,用于数字签名、密钥交换、公钥加密(GM/T 0003 系列)。
- SM3:密码杂凑算法,输出 256 位,用于完整性校验与签名前摘要(GM/T 0004)。
- SM4:分组密码算法,分组与密钥长度均为 128 位,用于数据的对称加密(GM/T 0002)。
常见误区:「上了国密」并不是把某一处换个算法就完事,而是要说明每一处密码应用分别用了什么算法、密钥从哪来、谁能用。这正是密评的问法。
传输层是国密改造投入产出比最高的位置。有两条技术路线:
- TLCP 路线:依据 GB/T 38636-2020《信息安全技术 传输层密码协议(TLCP)》,采用签名证书与加密证书分离的双证书体系。这是国内合规场景的主流形态。
- TLS 1.3 国密套件路线:RFC 8998 ShangMi (SM) Cipher Suites for TLS 1.3 在 RFC 8446 The Transport Layer Security (TLS) Protocol Version 1.3 框架内注册了国密套件,可与国际生态在同一协议版本下共存。
可操作配置:对客户端接入段(提交 465、IMAP 993、POP 995、Web 443)优先启用;对服务器间的跨域段要谨慎,因为对端未必支持——见下文回退逻辑。
内容层指对邮件正文与附件本身做签名或加密,与传输层相互独立、互不替代。传输层加密只保护链路,邮件落到中间节点仍是明文;内容层加密才覆盖静态与中转全过程。
结构上沿用 RFC 5652 Cryptographic Message Syntax (CMS) 定义的 CMS 封装与 RFC 8551 S/MIME Version 4.0 Message Specification 定义的 S/MIME 消息格式,把其中的签名算法与对称算法标识替换为国密算法标识即可。
务必先想清楚的问题:内容加密后,网关侧的反病毒与内容合规检查将无法读取正文。需要在部署前确定检查点前移到客户端,还是在受控的解密点集中处理——这一决策直接影响等保区域边界层的符合性。
存储层:邮箱数据、附件对象、归档库、备份介质的静态加密,用 SM4 做数据加密,密钥由独立的密钥管理设施托管。判定要点是「密钥与密文不同处存放」——密钥和数据放在同一台机器上,加密的实际防护价值接近于零。
凭据层:口令的存储不应使用可逆加密。使用 SM3 做杂凑时必须加盐并使用足够的迭代强度;相关验证器的通用要求可参考 NIST SP 800-63B Digital Identity Guidelines: Authentication。
邮件与 Web 最大的不同在于:对端不受你控制。向外部域投递时,对方 MTA 极可能不支持国密套件。若配置成「仅国密、否则不发」,结果是邮件发不出去。
推荐的判定逻辑(按域分级):
- 内部段与自有客户端段:强制国密,不允许回退。
- 已确认支持国密的伙伴域:配置为强制,并纳入监控,一旦协商失败立即告警。
- 互联网通用域:允许协商到国际算法的 TLS,但禁止回退到明文;同时用 RFC 8461 SMTP MTA Strict Transport Security (MTA-STS) 与 RFC 8460 SMTP TLS Reporting 保证不被降级且失败可观测。
关键原则:回退的底线是「换算法」,绝不是「不加密」。
「配置里写了国密」不等于「实际协商用了国密」。验证应做到:
- 对每个开放端口实际发起握手,记录协商结果中的套件标识与证书类型。
- 对链路抓包确认密文特征,确认无明文回退路径。
- 把协商结果纳入日常监控,出现降级即告警——一次证书更换或版本升级就可能悄悄改变协商结果。
算法与标准的现行状态请以国家密码管理局与密标委发布的目录为准。
参考:RFC 8998 ShangMi (SM) Cipher Suites for TLS 1.3 | RFC 8446 The Transport Layer Security (TLS) Protocol Version 1.3 | 国家密码管理局 | 密码行业标准化技术委员会(GM/T 标准目录) | 国家标准全文公开系统(GB/T 标准检索)
