1 术语、定义
GB35114
GB35114-2017标准是国内第一个关于视频监控联网信息安全方面的技术标准,对于保障视频监控联网信息的安全具有重要作用。
GB/T 28181
GB/T 28181标准规定了公共安全视频监控联网系统(以下简称联网系统)的互联结构,传输、交换、控制的基本要求和安全性要求,以及控制、传输流程和协议接口等技术要求。
签名与加密
数据加密使用的是接受方的密钥对,任何知道接收方公钥的都可以向接受方发送消息,但是只有拥有私钥才能解密出来。
数据签名使用的是发送方的密钥对,任何接受方都可以用公钥解密,验证数据的正确性。
国密算法
参阅 https://blog.csdn.net/lishuoboy/article/details/118458483
CA
安全认证机构(CA)也称为认证中心(Certificate Authority),受理数字证书的申请、签发数字证书,以及对数字证书的管理。
各类证书密钥文件后缀的解释 参阅 https://blog.csdn.net/bluishglc/article/details/123565671
2 环境与工具
2.1 前端设备
海康IPC
2.2 开源的密码工具箱
GmSSL http://gmssl.org 密钥、证书生成都基于最新3.0.0版本,其中信令服务验签部分代码也是完全使用GmSSL提供的方法。
2.3 在线签名与验签工具
GB35114的前端设备注册的验签主要涉及SM2 with SM3算法,使用https://const.net.cn/tool/sm2/verify/
3 注册验签过程
3.1 生成密钥对和证书
1.使用GmSSL生成CA密钥对,生成CA自签crt证书
2.使用GmSSL生成信令服务密钥对,生成csr证书请求文件,通过CA私钥签名成crt证书
3.使用GmSSL通过CA私钥签名IPC的证书请求csr文件,生成crt证书。
3.2 导入证书到IPC
将设备的crt证书导入到IPC中,双向认证可以将CA证书和信令服务证书一同导入到设备上。
导入成功如图:
3.3 注册验签
设备端勾选启用国密模式,启动注册,信令服务按照GB35114要求构建回复报文,通过抓包搜集验签数据,所抓报文如下图:
依据GB35114中要求和使用gmssl方法,流程如下:
1.对random1,random2做base64解码,然后将random2,random1,serverid内存相加
2.对上面相加的内存数据进行sm3获取摘要
3.使用sm2方法验签,其中sm2_verify_init需要输入一个id值,查询各方面资料,没有提这个id值的来源,猜测可能就是sm2的默认值,或者是IPC的设备国标id,两种方法值都有尝试,还是验签不通过。
此时觉得可能有如下问题:
1.待验签的源数据构建有问题。
2.sm2_verify_init 中传入的id不对。
基于以上怀疑,觉得待签名数据可能有4种情况:
1.直接用报文中的random2+random1+serverid
2.基于1的数据主动调用SM3获取摘要
3.对random2,random1进行base64解码后和serverid相加
4.基于3的数据主动调用SM3获取摘要
之前提到的id,2种可能的情况:
1.sm2头文件的默认值
2.设备国标id
于是针对以上的可能性,首先用在线工具进行验证,直到出现验证成功,如下图:
接着修改代码同样验签通过。
4 总结
1.待验签的数据为报文中的random2+random1+serverid
2.不需要对待验签数据主动调用gmssl中的SM3算法
3.sm2_verify_init中id使用sm2头文件中的默认值1234567812345678字符串