前端设备分级
- 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);