知识库

国密 SM2、SM3、SM4 在统一身份认证里怎么用

发布

关键信息基础设施和等保三级以上的系统,越来越多地被要求使用商用密码并通过密评。统一身份认证平台是密码使用最集中的地方之一。

三种算法分别是什么

  • SM2:椭圆曲线公钥密码算法,用于数字签名、密钥交换和加密,地位相当于 RSA 和 ECDSA。
  • SM3:密码杂凑(哈希)算法,输出 256 位,地位相当于 SHA-256。
  • SM4:分组密码算法,分组和密钥都是 128 位,地位相当于 AES。

统一认证平台里哪些地方要用密码

  • 令牌签名:OIDC 的 ID Token、Access Token 和 SAML 断言都要签名,防止伪造。用 SM2 签名后,业务系统用 SM2 公钥验签。
  • 口令存储:用户口令不能明文保存,要做哈希。可以用 SM3 加盐哈希。
  • 敏感字段:手机号、身份证号等个人信息在数据库里要加密存储,可以用 SM4,密钥放在密码机或 KMS 里。
  • 传输加密:登录页和接口的传输链路用国密 TLS(TLCP),需要浏览器或客户端支持。
  • 身份鉴别:用基于 SM2 的数字证书或 UKey 登录,满足等保“其中一种鉴别技术使用密码技术”的要求。

密评关注什么

商用密码应用安全性评估(密评)关注密码技术是否被合规、正确、有效地使用:使用的是不是经过认证的商用密码产品和算法,密钥是否安全地生成、存储和使用,身份鉴别、数据传输和存储的机密性与完整性是否真的由密码技术保护。仅仅“代码里调用了 SM 算法”并不够,密钥管理往往是评估的重点,这也是要对接密码机和签名验签服务器的原因。

落地时的几个常见问题

  • 业务系统不支持 SM2 验签怎么办:可以只在口令存储、敏感字段、传输和身份鉴别上使用国密,令牌签名暂时保留 RSA;或者由网关统一验签。具体以密评方案为准。
  • 浏览器不支持国密 TLS 怎么办:可以使用支持国密的浏览器,或在前端部署国密网关,内部仍走普通 TLS。
  • 老数据怎么办:已有的口令哈希可以在用户下次登录时透明地升级为 SM3;敏感字段可以批量重新加密。

Casdoor 企业版的国密能力

Casdoor 企业版支持 SM2 签发 JWT 和 SAML 令牌、SM3 密码哈希、SM4 加密存储敏感字段、国密 TLS(TLCP),可以把密钥放进 KMS 或密码机、对接签名验签服务器,并支持 UKey 和数字证书登录(CFCA 和各地 CA)。信创版包含全部国密能力,并运行在国产芯片、操作系统和数据库上。

相关方案

延伸阅读