公开/公告号CN110086796A
专利类型发明专利
公开/公告日2019-08-02
原文格式PDF
申请/专利权人 南京联创北斗技术应用研究院有限公司;
申请/专利号CN201910321973.8
申请日2019-04-22
分类号H04L29/06(20060101);H04L9/32(20060101);H04L9/06(20060101);
代理机构32249 南京瑞弘专利商标事务所(普通合伙);
代理人秦秋星
地址 210036 江苏省南京市鼓楼区集慧路18号联创大厦A座14楼
入库时间 2024-02-19 12:54:43
法律状态公告日
法律状态信息
法律状态
2020-05-01
专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L29/06 变更前: 变更后: 申请日:20190422
专利权人的姓名或者名称、地址的变更
2020-02-14
授权
授权
2019-08-27
实质审查的生效 IPC(主分类):H04L29/06 申请日:20190422
实质审查的生效
2019-08-02
公开
公开
技术领域
本发明涉及一种基于公私钥加密技术收集监控数据的传输方法,属于电子信息技术领域。
背景技术
在项目开发交付后,一般系统都需要做一些系统应用级监控,这种监控一般都是内网中进行,但是绝大多数传统的技术研发公司在互联网转型过程中公司内部技术团队由内部服务逐步向技术输出转移,这就必然会产生项目对外交付情况,这样就对监控的安全性和准确性带来了考验。由于公司的监控系统是建立在内网内,如需采集对外交付的监控数据就需要建立起一套安全有效的传输方法来应对改变带来的不便。
发明内容
本发明提供一种基于公私钥加密技术收集监控数据的传输方法,该方法借助于公私钥加密技术,安全准确的将客户端监控数据采集上来。
为实现上述目的,本发明采用如下技术方案:
一种基于公私钥加密技术收集监控数据的传输方法,包括如下步骤:
步骤1:客户端通过管理端注册监控客户端;
步骤2:管理端定期向客户端发送心跳请求,客户端通过响应头返回当前客户端的公钥版本号;
步骤3:管理端检测客户端公钥版本,不是最新的版本则发送最新公钥更新请求更新客户端公钥;
步骤4:管理端请求客户端监控数据采集接口,客户端将监控数据进行公钥加密后传输给管理端;
步骤5:管理端定期或主动生成一组公私钥,并将新的公钥下发给客户端。
优选的,步骤4包括:
步骤4.1:管理端将请求参数进行签名后请求客户端监控数据采集接口,签名中包含公钥版本信息;
步骤4.2:当客户端接到管理端提取监控数据请求后从签名后的请求参数中解析出公钥版本信息,并与客户端现有公钥版本比对是否一致判断是否非法来源,如是非法来源则累计错误次数,当错误次数超过阈值则访问IP加入黑名单,黑名单的列表内的请求则直接禁止访问,如果通过版本验证则进入下一步签名验证;
步骤4.3:客户端将签名后的请求参数通过客户端的公钥进行签名验证操作,通过签名验证判断是否非法来源,如是非法来源则累计错误次数,当错误次数超过阈值则访问IP加入黑名单;
步骤4.4:当公钥版本验证和签名验证都通过之后,客户端将数据转发到对应的客户端监控数据采集接口中;
步骤4.5:客户端拿到具体的监控数据后,客户端将对监控数据进行公钥加密,同时将加密后的监控数据返回管理端;
步骤4.6:管理端接收到加密后的监控数据后进行解密后存储到管理端的数据源中,用作将来异常通知,数据分析的应用场景。
优选的,步骤4.1包括:通过调用JAVA内置机密算法SHA256对请求原文信息hash运算,获取数据摘要,然后再调用JAVA内置加密算法SHA256withRSA对数据摘要进行私钥签名运算,得到数据签名,最后将公钥版本信息添加到签名。
优选的,步骤4.1:将公钥版本信息添加到签名最后四位,版本规则为顺序十进制数转换为16位进制数,位数不足向前补零。
优选的,步骤4.3包括:
步骤4.3.1:参数提取操作:从签名后的请求参数中分离出请求原文和签名;
步骤4.3.2:验签操作:将步骤4.3.1中提取的请求原文通过机密算法SHA256进行hash运算,获取数据摘要,然后使用管理端提供的公钥、数据摘要及原始签名调用JAVA内置签名对比方法进行签名的对比,如比对返回true则表示签名合法,如返回false或者报错则表示签名不合法。
优选的,步骤5包括:
步骤5.1:客户端每隔一段时间调用客户端心跳接口,获取当前客户端的公钥版本;
步骤5.2:管理端获取到客户端公钥版本后和管理端最新的公钥版本进行比对,当版本出新不一致的时候立即下发最新的公钥给客户端;
步骤5.3:客户端接收到公钥后及时更新本地的公钥版本,以便在后面的数据扭转过程中使用最新的公钥进行数据验签比对和数据加密;
步骤5.4:管理端将自动在一定的时间周期内自动生成公私钥,并将生成的公钥和公钥版本同步下发所有的客户端。
有益效果:
本发明通过管理控制端下发最新的公钥,同时借助公私钥加密技术,对客户端监控数据进行加密传输,生成防泄漏防篡改的传输数据。
附图说明
图1为本方法中实施例提供的基于最新的公私钥加解密数据传输的工作流程图;
图2为本方法中实施例提供的客户端公钥更新流程;
图3为本方法中实施例提供的数据监控数据获取流程;
图4为本方法中实施例提供的数据签名流程;
图5为本方法中实施例提供的数据验签对比流程。
具体实施方式
下面结合实例对本发明做更进一步的解释。
该方法主要实施流程如下,相关流程图见图1:
1)通过管理端注册监控客户端。
客户端通过管理端将客户端监控服务跟地址注册到管理端,为管理端收集客户端的存活状态,监控数据进行准备。
2)管理端定期向客户端发送心跳请求
客户端在管理端上注册的过程中和后续过程中,管理端以一定的频率向客户端发送心跳请求,客户端通过响应头返回当前客户端的公钥版本号。管理端通过检测客户端公钥版本,当发现客户端公钥版本不是最新的版本则下发最新版本的公钥。
3)管理端请求相关监控数据采集接口,客户端加密传输,数据获取流程图见图3。
管理端组装请求参数,管理端和客户端约定好相关接口的请求方式。
①管理端将请求参数进行签名后请求客户端监控数据采集接口。
通过调用JAVA内置机密算法SHA256对请求原文信息hash运算,获取数据摘要,然后再调用JAVA内置加密算法SHA256withRSA对数据摘要进行签名运算,得到数据签名,最后将公钥版本信息添加到签名最后四位(版本规则为顺序十进制数转换为16位进制数,位数不足向前补零)。具体的签名流程图见图4:
例如:
签名前的数据为:bizCode=0001&time=1552979575,公钥版本号为100。
SHA256编码后数据为:
b433c8efd475ef5b07e85e6a7af104c8313a3afbff97eca0eeb7978cc9b22c72
签名后为:
5a878ca868560d7fb4a1b4094584a00986d201aba0af4a32bbb4e355ffba2b1c3bbd03b402bf4580829552a16fd2f4b961af9adf27ee238d2e92de45ee1bf6e5acce91b94439452989bb4577a47fd2e149e63d7f91bd20a6ead04ce86bdcfbc012f2981f7c6c8be388ac5527b05acd4d8afdc6151bcb92950d084b3f278df80e
公钥版本号100转换到十六进制为:0064
最终得到的签名:
5a878ca868560d7fb4a1b4094584a00986d201aba0af4a32bbb4e355ffba2b1c3bbd03b402bf4580829552a16fd2f4b961af9adf27ee238d2e92de45ee1bf6e5acce91b94439452989bb4577a47fd2e149e63d7f91bd20a6ead04ce86bdcfbc012f2981f7c6c8be388ac5527b05acd4d8afdc6151bcb92950d084b3f278df80e0064
管理端将在原始请求的基础上追加sign参数用于客户端验签。
最终管理端向客户端发起采集请求,请求参数如下:
bizCode=0001&time=1552979575&sign=5a878ca868560d7fb4a1b4094584a00986d201aba0af4a32bbb4e355ffba2b1c3bbd03b402bf4580829552a16fd2f4b961af9adf27ee238d2e92de45ee1bf6e5acce91b94439452989bb4577a47fd2e149e63d7f91bd20a6ead04ce86bdcfbc012f
②当客户端接到管理端提取监控数据请求后从请求参数中解析出公钥版本信息,通过比对版本判断是否非法来源,如是非法来源则累计错误次数,当错误次数超过阈值则访问IP加入黑名单,黑名单的列表内的请求则直接禁止访问,如果通过版本检测则进入下一步验证签名。
客户端接收到管理端请求数据,从请求参数中提取sign参数,截取sign参数的后四位用于获取签名的版本信息。
例如上一步管理端签名后的请求内容为:
bizCode=0001&time=1552979575&sign=5a878ca868560d7fb4a1b4094584a00986d201aba0af4a32bbb4e355ffba2b1c3bbd03b402bf4580829552a16fd2f4b961af9adf27ee238d2e92de45ee1bf6e5acce91b94439452989bb4577a47fd2e149e63d7f91bd20a6ead04ce86bdcfbc012f2981f7c6c8be388ac5527b05acd4d8afdc6151bcb92950d084b3f278df80e0064。
从请求参数中提取sign值
5a878ca868560d7fb4a1b4094584a00986d201aba0af4a32bbb4e355ffba2b1c3bbd03b402bf4580829552a16fd2f4b961af9adf27ee238d2e92de45ee1bf6e5acce91b94439452989bb4577a47fd2e149e63d7f91bd20a6ead04ce86bdcfbc012f2981f7c6c8be388ac5527b05acd4d8afdc6151bcb92950d084b3f278df80e0064,sign值的后四位为0064,将十六进制0064转换成十进制值为100,说明传输公钥版本为100,然后将该版本和本地的版本进行对比操作。
③客户端将请求参数通过客户端的公钥进行验签操作,通过验签判断是否非法来源,如是非法来源则累计错误次数,当错误次数超过阈值则访问IP加入黑名单。
客户端接收到管理端的请求后我们分两步进行操作。
参数提取操作:我们从请求参数中分离出原始请求和签名,签名为请求参数sign的值,原始请求是剔除sign的部分内容。
例如:
上一步骤请求参数:
bizCode=0001&time=1552979575&sign=5a878ca868560d7fb4a1b4094584a00986d201aba0af4a32bbb4e355ffba2b1c3bbd03b402bf4580829552a16fd2f4b961af9adf27ee238d2e92de45ee1bf6e5acce91b94439452989bb4577a47fd2e149e63d7f91bd20a6ead04ce86bdcfbc012f2981f7c6c8be388ac5527b05acd4d8afdc6151bcb92950d084b3f278df80e0064
分离参数:原始请求bizCode=0001&time=1552979575,签名为
5a878ca868560d7fb4a1b4094584a00986d201aba0af4a32bbb4e355ffba2b1c3bbd03b402bf4580829552a16fd2f4b961af9adf27ee238d2e92de45ee1bf6e5acce91b94439452989bb4577a47fd2e149e63d7f91bd20a6ead04ce86bdcfbc012f2981f7c6c8be388ac5527b05acd4d8afdc6151bcb92950d084b3f278df80e0064,其中签名部分包括两个部分一部分为原始签名
5a878ca868560d7fb4a1b4094584a00986d201aba0af4a32bbb4e355ffba2b1c3bbd03b402bf4580829552a16fd2f4b961af9adf27ee238d2e92de45ee1bf6e5acce91b94439452989bb4577a47fd2e149e63d7f91bd20a6ead04ce86bdcfbc012f2981f7c6c8be388ac5527b05acd4d8afdc6151bcb92950d084b3f278df80e,一部分为版本号0064,转换成十进制为100,表示当前版本为100。
验签操作:
将上文中提取的请求原文通过JAVA内置加密算法SHA256进行hash运算,获取数据摘要,然后使用管理端提供的公钥、数据摘要及原始签名调用JAVA内置签名对比方法进行签名的对比,验签流程图见图5。
例如上文中提到的请求原文为原始请求bizCode=0001&time=1552979575,签名为
5a878ca868560d7fb4a1b4094584a00986d201aba0af4a32bbb4e355ffba2b1c3bbd03b402bf4580829552a16fd2f4b961af9adf27ee238d2e92de45ee1bf6e5acce91b94439452989bb4577a47fd2e149e63d7f91bd20a6ead04ce86bdcfbc012f2981f7c6c8be388ac5527b05acd4d8afdc6151bcb92950d084b3f278df80e,我们将原始请求通过SHA256加密算法进行hash运算获得摘要字符串
b433c8efd475ef5b07e85e6a7af104c8313a3afbff97eca0eeb7978cc9b22c72,然后再通过公钥进行签名的对比,如比对失败则表示签名合法,如不正确则表示签名合法。
④当版本验证和数据验签都通过之后,客户端将数据转发到对应的数据处理逻辑接口中。
⑤客户端拿到具体的监控数据后,客户端将对数据进行公钥加密,同时对加密后的数据返回管理端。
⑥管理端接收到加密数据后进行解密后存储到管理端的数据源中,用作将来异常通知,数据分析的应用场景。
4)管理端到一定的时间周期将提升公私钥版本并下发最新的公钥到客户端完成公私钥版本的更新,同时管理端也可以手动触发公私钥版本的更新,客户端公钥更新流程见图2。
①客户端每隔一段时间调用客户端心跳接口,获取当前客户端的公钥版本。
②管理端获取到客户端版本后和管理端最新的公钥版本进行比对,当版本出新不一致的时候立即下发最新的公钥给客户端。
③客户端接收到公钥后及时更新本地的公钥版本,以便在后面的数据扭转过程中使用最新的公钥进行数据验签和数据加密。
④管理端将自动在一定的时间周期内自动生成公私钥,并将生成的公钥和公钥版本同步下发所有的客户端。
例如原始版本是1,所有的客户端版本也是1,每隔一个月通过程序自动生成一对公私钥,同时版本号加1,这样管理端的最新版本号就是2。当通过心跳接口获取客户端版本数据的时候发现不一致时,管理端立即下发最新的公钥给客户端,客户端接收到新的公钥时更新本地的公钥,同时更新本地的版本号与管理端一致。同时管理端可以手动升级公私钥版本以触发客户端公钥更新流程,以防止公私钥提前泄露引起数据的不安全。
以上为本发明的技术实施例和技术特点,仅用于说明本发明的技术方案而非限制。然而本领域技术人员仍可能基于本发明的教示和揭示内容而作出对本发明的技术方案的修改和等同替换。因此,本发明的保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替代和修正,并为上述权利要求书所涵盖。
机译: 用于芯片卡的数字消息传输方法,包括解密通过加密消息而获得的密码,通过执行乘法使用私钥,其中消息通过改进的kiayas和yung算法进行加密和解密。
机译: 设备密钥生成设备,公钥加密,私钥解密设备,配置为生成公钥的密钥生成方法。公钥加密方法,私钥解密方法和计算机程序。
机译: 密钥共享方法,私钥生成方法,公共密钥生成方法,加密通信方法,私钥生成器,公共密钥生成器,加密通信系统和记录介质