研读 GB35114

前端设备分级

  • FDWSF(具有安全功能的前端设备) 的安全能力分为三个等级
能力 目标 关联标准 加密算法 A 级 B 级 C 级
基于数字证书与管理平台双向身份认证能力 身份真实 GBT/28181 (SVAC) SM2, SM3 Y Y Y
对视频数据签名的能力 视频真实(来源真实, 内容真实, 未被篡改) GBT/25724 (SVAC) SM2, SM3 N Y Y
视频内容加密 防止泄露 GBT/25724 (SVAC) SM1/SM4, SM3 N N Y

视频监控安全管理平台

  • 对 FDWSF 的基本信息、属性信息以及 FDWSF 的 ID、其密码模块 ID 与设备证书的对应关系作管理
  • 对所有接入的 FDWSF 进行单向或双向设备身份认证
  • 平台互联互通时应进行管理平台间的双向身份认证

设备接入认证

  • 平台需要:
    • 解析 FDWSF 支持的算法
    • 生成随机数的算法
    • 校验签名的时效性
    • 获取 FDWSF 的公钥
    • 获取管理平台的私钥
    • 可设置 Date 比对有效时间范围

信令

  • 除注册信令, 其他信令作摘要
  • 增加设备控制请求: 前端签名控制、前端加密控制, 都是有应答的请求
  • 增加通知信令: FDWSF 的 VKEK 改变时, SIP 服务器通知媒体流接收者新的 VKEK 密文和版本号
  • 第三方呼叫控制中, 媒体流接收者需要在 Invite 请求中添加 Monitor-User-Identity 表明用户身份
  • 在 Invite 的回复中, SIP 服务器在 SDP 中添加媒体流发送者的的 VKEK 密文和版本号
  • 导出加密视频: 解密视频数据, 生成新的 VEK 进行加密, 保存 VETK 和播放权限到安全芯片

运算

分类 算法 国标应用 长度
非对称密码算法 SM2 用于用户身份认证、数字签名、密钥协商 密钥 256 比特
对称密码算法 SM1、SM4_OFB 用于视频数据的加密保护 SM4 密钥 128 比特
- SM4_ECB 用于密钥协商数据的加密保护 SM4 密钥 128 比特
密码杂凑算法 SM3 用于完整性校验 输出 256 比特
随机数生成算法 生成随机数,应能通过 GM/T 0005-2012 中规定的方法进行检测
  • VEK 是 128 比特
  • IV (采用 OFB 模式) 是 128 比特

密钥种类

  • 具有安全功能的前端设备、用户终端、中心信令控制服务器、路由网关、媒体服务器都持有各自的: 非对称密钥和对称密钥
    • 非对称密钥
    • 管理平台内功能实体的签名公私钥和加密公私钥
    • FDWSF 的签名公私钥
    • 具有安全功能的用户终端签名公私钥
    • 对称密钥:视频加密密钥、视频密钥加密密钥、视频主密钥

| 密钥名称 | 密钥简称 | 算法 | 备注 | | — | — | — | — | | 视频加密密钥 | VEK | SM4 | 加密视频流 | | 视频密钥加密密钥 | VKEK | SM4 | 加密保护 VEK | | 视频主密钥 | VEMK | SM4 | 分散得到 VKEK |

数字证书类型

  • 基于非对称密码算法
  • 包括用户证书、前端设备证书、服务器设备证书和管理平台证书
  • 支持 GM/T 0015-2012 基于 SM2 密码算法的数字证书格式规范
名称 用途 备注
签名密钥 签名密钥为 SM2 非对称密钥对中的私钥,主要用于数据签名 系统内所有安全实体均拥有自己的签名密钥,且由自身的密码设备生成该密钥
加密密钥 加密密钥为 SM2 非对称密钥对中的公钥,主要用于对数据进行加密 仅服务器实体具有。由密钥管理中心产生并负责安全管理
签名证书 由 CA 颁发给申请实体,内含申请实体的公钥和申请信息。签名证书主要用于对申请实体的签名进行验证 系统内所有安全实体均拥有自己的签名证书
加密证书 由 CA 颁发给申请实体,内含 CA 分配给申请实体的公钥、私钥和申请信息。外部实体使用申请实体加密证书中的公钥加密数据信息,申请实体利用加密证书中的私钥解密,从而做到加密通讯 仅服务器实体具有
  • 签名证书和加密证书一起保存在用户的证书载体中

SIP 服务器认证 FDWSF 的单向身份认证

  • FDWSF 收到 401, 发送请求: 使用 FDWSF 的私钥对 (R2 + R1 + SIP_Server_ID) 做签名运算
    • R2: FDWSF 产生的随机数
    • R1: 第一次 register, SIP 服务器在 401 返回的随机数
    • SIP_Server_ID: SIP 服务器的设备 ID
    • 签名: SM2 椭圆曲线密码算法
  • 管理平台回复:
    • 使用 FDWSF 证书校验签名, 使用 FDWSF 公钥解密, 验证各个参数
    • 使用 FDWSF 的公钥对 VKEK 加密经 Base64 编码后得到 crypt_key
    • 加密: SM4 分组密码算法 ECB 模式

SIP 服务器与 FDWSF 的双向身份认证

  • FDWSF 收到 401, 请求: 同上
  • 管理平台回复:同上
    • 用管理平台私钥对 (R1 + R2 + device_id + crypt_key) 做签名运算
    • R1: 第一次 register, SIP 服务器在 401 返回的随机数
    • R2: FDWSF 产生的随机数
    • device_id: FDWSF 的 ID
    • 签名: SM2 椭圆曲线密码算法
  • FDWSF 收到管理平台 200 回复
    • 用 SIP 服务器证书校验签名, 使用管理平台公钥解密, 验证各个参数
    • 用 FDWSF 私钥解密 crypt_key, 获得 VKEK 的值

管理平台间认证(网关 1 向网关 2 发起认证)

  • 网关 1 收到 401, 发送请求: 使用网关 1 的私钥对 (R2 + R1 + 网关_2_ID) 做签名运算
    • R2: 网关 1 产生的随机数
    • R1: 第一次 register, 网关 2 在 401 返回的随机数
    • 网关_2_ID: 网关 2 的 ID
    • 签名: SM2 椭圆曲线密码算法
  • 网关 2 回复:
    • 使用网关 1 的公钥对 VKEK 加密经 Base64 编码后得到 crypt_key_1
    • 使用网关 1 的公钥对 VEMK 和 VEMK 版本号加密经 Base64 编码后得到 crypt_key_2
    • 加密: SM4 分组密码算法 ECB 模式
    • 用网关 2 私钥对 (R1 + R2 + 网关_1_ID + crypt_key_1 + crypt_key_2) 做签名运算
    • R1: 第一次 register, 网关 2 在 401 返回的随机数
    • R2: 网关 1 产生的随机数
    • 网关_1_ID: 网关 1 的 ID
    • 签名: SM2 椭圆曲线密码算法
  • 网关 1 收到 200 回复
    • 用网关 2 证书校验签名, 使用网关 2 公钥解密, 验证各个参数
    • 用网关 1 私钥解密 crypt_key_1, 获得 VKEK 的值
    • 用网关 1 私钥解密 crypt_key_2, 获得 VEMK 和 VEMK 版本号

控制信令认证

  • 对注册信令以外的消息作带密钥的杂凑
  • 发起消息之前计算 nonce
    • 对 (METHOD + From + To + CallID + Date + VKEK + 消息体) 做杂凑运算经 Base64 编码得到的值
  • 收到消息之后计算并校验摘要
    • 对 (METHOD + From + To + CallID + Date + VKEK + 消息体) 做杂凑运算经 Base64 编码得到的值
    • 对比收到的 nonce 和计算的结果

密钥与证书管理

  • FDWSF持有:
    • 签名私钥(SM2)
    • 加密私钥(SM4_ECB)
    • 对称密码,和加密公钥相同
    • 管理平台签名证书(包含管理平台签名公钥)
    • 管理平台加密证书(包含管理平台加密公钥)
  • 管理平台持有:
    • 签名私钥(SM2)
    • 加密私钥(SM4_ECB)
    • 对称密码,和加密公钥相同
    • 前端设备签名证书(包含设备签名公钥)
    • 前端设备加密证书(包含设备加密公钥)

新增协议获取密钥与证书

  • 请求签名公私钥(SM2)
    • GetSM2SignKeyPair(std::string &pubKey, std:;string &priKey);
  • 请求签名证书(SM2)
    • GetSM2SignCert(std::string &pubKey, std::string &cert);
  • 请求加密公私钥(对称加密 SM4)
    • GetSymmCipherKeyPair(std::string &key);
  • 请求加密证书(对称加密 SM4)
    • GetSymmCipherCert(std::string &key, std::string &cert);

相关