一种针对gRPC数据的密码处理方法及系统技术方案

技术编号:35185927 阅读:17 留言:0更新日期:2022-10-12 17:56
针对gRPC数据的密码处理方法:密码处理拦截器拦截gRPC客户端、服务器端的gRPC调用请求、响应,依配置信息调用密码组件对请求和响应消息数据对象中的需要加密、解密的字段中的数据采用流加密的方式进行加密、解密,将消息数据对象中需要签名、签名验证的字段中的数据进行组合,组合得到的数据中包含需要签名、签名验证的字段的名字及其数值,调用密码组件对组合得到的数据进行签名、签名验证;密码处理拦截器通过gRPC请求、响应的元数据或消息数据对象的约定字段传送数字签名数据、流加密密钥流的初始化向量以及密钥协商数据;所述密码处理拦截器是基于gRPC实现技术提供的拦截器机制实施的程序组件。制实施的程序组件。制实施的程序组件。

【技术实现步骤摘要】
一种针对gRPC数据的密码处理方法及系统


[0001]本专利技术属于信息安全
,特别是一种针对gRPC数据的密码处理方法及系统。

技术介绍

[0002]gRPC(Google remote procedure call)是Google提出的一种远程过程调用框架及协议,通过它能实现远程的过程或接口调用,gRPC目前在各种应用中,比如区块链技术,被广泛采用。gRPC本身不提供数据的安全保护机制,实际应用中可采用TLS/SSL实现传输数据的加密保护,但是,在有些情况下,TLS/SSL可能是不适合的,或者不够的,比如,它不能实现数针对据的数字签名保护,在实际应用中有可能需要针对gRPC的原生数据直接进行加密、签名保护。对于一个新开发的系统,实施针对gRPC的原生数据的加密、签名不难做到,但是对于一个已有、已部署且不能修改的系统,如何在不修改程序代码的情况下,实施针对gRPC的原生数据的加密、签名却是一个需要解决的问题。再有,即便新开发的系统,应用程序/系统的开发者可能不熟悉密码技术,不希望直接进行数据密码处理(如加密、签名)方面的编程。

技术实现思路

[0003]本专利技术的目的是提出一种针对gRPC数据(消息)进行密码处理的技术方案,以满足对gRPC数据(消息)进行安全保护的需求,并解决满足这一需求所存在的技术问题。
[0004]针对本专利技术的目的,本专利技术提出的技术方案包括一种针对gRPC数据的密码处理方法以及相应的系统。
[0005]本专利技术的针对gRPC数据的密码处理方法具体如下。
[0006]gRPC的具体实现技术提供有针对数据对象的反射(reflection)处理(机制、能力或工具,如Java、Go、C#的反射处理,机制、能力或工具),提供有针对gRPC请求、响应的拦截器机制(Interceptor);所述反射处理是指针对一个预先未知的数据对象,(通过专门的反射工具、代码)解析确定其数据类(型)、数据组成结构,以及获取、设置其中存储的数据;
[0007](gRPC客户端提交调用请求)
[0008]当gRPC客户端提交gRPC调用请求时,客户端的密码处理拦截器被触发;密码处理拦截器利用反射解析请求消息数据对象,根据请求消息数据对象的类名称(class name)和/或(一个或多个)字段名称(field name)查询配置信息,确定是否需要对请求消息数据对象进行密码处理,所述密码处理包括加密和/或签名;
[0009]若需要对请求消息数据对象进行密码处理,则密码处理拦截器按如下方式对请求消息数据对象进行密码处理:
[0010]利用反射解析请求消息数据对象的每个字段,获得每个字段的类型(如整数、浮点、字节串类型等)及字段名称(类型不同,加密处理方式会有所不同);
[0011]利用配置信息确定是否需要对请求消息数据对象进行加密处理,若需要,则调用
密码组件对配置信息设定的需要加密的字段中的数据进行加密处理(配置信息通过指定需要加密的字段的名称,设定哪些字段需要加密);
[0012]利用配置信息确定是否需要对请求消息数据对象进行签名处理,若需要,则将配置信息设定的所有需要签名的字段中的数据组合,形成一个待签名的数据,然后调用密码组件(使用配置信息指定的签名私钥)对组合形成的待签名的数据进行数字签名,然后将得到的数字签名数据存放到调用请求的元数据(metadata)中,或存放到配置信息指定的请求消息数据对象中的存放数字签名数据的字段中(不必是专门的数字签名字段);
[0013]所述密码处理拦截器是一种基于gRPC实现技术的拦截器机制开发实施的程序组件,所述密码处理拦截器在gRPC客户端提交gRPC调用请求、接收gRPC调用响应时被触发执行,在gRPC服务器端接收gRPC调用请求、返回gRPC调用响应时被触发执行,用于对请求消息数据对象、响应消息数据对象进行密码处理;
[0014]所述密码组件是提供密码功能的组件(软件或软硬件结合的组件);
[0015]所述配置信息用于设定密码处理拦截器针对请求消息数据对象、响应消息数据对象所进行的密码处理。
[0016](gRPC服务器端接收调用请求)
[0017]当gRPC服务器端接收到gRPC客户端提交的gRPC调用请求时,服务器端的密码处理拦截器被触发;密码处理拦截器利用反射解析请求消息数据对象,使用请求消息数据对象的类名称(class name)和/或(一个或多个)字段名称(filed name)查询配置信息,确定是否需要对请求消息数据对象进行密码处理,所述密码处理包括解密和/或签名验证;
[0018]若需要对请求消息数据对象进行密码处理,则密码处理拦截器按如下方式对请求消息数据对象进行密码处理:
[0019]利用反射解析请求消息数据对象的每个字段,获得每个字段的类型(如整数、浮点、字节串类型等)及字段名称(类型不同,解密处理会有所不同);
[0020]利用配置信息确定是否需要对请求消息数据对象进行解密处理,若需要,则调用密码组件对配置信息设定的需要解密的字段中的数据进行解密处理(配置信息通过指定需要解密的字段的名称,设定哪些字段需要解密);
[0021]利用配置信息确定是否需要对请求消息数据对象进行签名验证处理,若需要,则将配置设定的所有需要签名验证的字段中的数据组合,形成一个待签名验证的数据,然后从调用请求的元数据中或从配置信息指定的请求消息数据对象中的存放数字签名数据的字段中获得数字签名数据,然后调用密码组件(使用配置信息指定的签名验证公钥)利用得到的数字签名数据对组合形成的待签名验证的数据进行签名验证,若签名验证通过,则让请求消息通过,若签名验证不通过,则转入出错处理。
[0022](gRPC服务器端返回调用响应)
[0023]当gRPC服务器端返回gRPC调用响应时,服务器端的密码处理拦截器被触发;密码处理拦截器利用反射解析响应消息数据对象,使用响应消息数据对象的类名称(class name)和/或(一个或多个)字段名称(field name)查询配置信息,确定是否需要对响应消息数据对象进行密码处理,所述密码处理包括加密和/或签名;
[0024]若需要对响应消息数据对象进行密码处理,则密码处理拦截器按如下方式对响应消息数据对象进行密码处理:
[0025]利用反射解析响应消息数据对象的每个字段,获得每个字段的类型(如整数、浮点、字节串类型等)及字段名称;
[0026]利用配置信息确定是否需要对响应消息数据对象进行加密处理,若需要,则调用密码组件对配置信息设定的需要加密的字段中的数据进行加密处理(配置信息通过指定需要加密的字段的名称,设定哪些字段需要加密);
[0027]利用配置信息确定是否需要对响应消息数据对象进行签名处理,若需要,则将配置设定的所有需要签名的字段中的数据组合,形成一个待签名的数据,然后调用密码组件(使用配置信息指定的签名私钥)对组合形成的待签名的数据进行数字签名,然后将得到的数字签名数据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对gRPC数据的密码处理方法,其特征是:gRPC的具体实现技术提供有针对数据对象的反射处理,提供有针对gRPC请求、响应的拦截器机制;所述反射处理是指针对一个预先未知的数据对象,解析确定其数据类、数据组成结构,以及获取、设置其中存储的数据;当gRPC客户端提交gRPC调用请求时,客户端的密码处理拦截器被触发;密码处理拦截器利用反射解析请求消息数据对象,根据请求消息数据对象的类名称和/或字段名称查询配置信息,确定是否需要对请求消息数据对象进行密码处理,所述密码处理包括加密和/或签名;若需要对请求消息数据对象进行密码处理,则密码处理拦截器按如下方式对请求消息数据对象进行密码处理:利用反射解析请求消息数据对象的每个字段,获得每个字段的类型及字段名称;利用配置信息确定是否需要对请求消息数据对象进行加密处理,若需要,则调用密码组件对配置信息设定的需要加密的字段中的数据进行加密处理;利用配置信息确定是否需要对请求消息数据对象进行签名处理,若需要,则将配置信息设定的所有需要签名的字段中的数据组合,形成一个待签名的数据,然后调用密码组件对组合形成的待签名的数据进行数字签名,然后将得到的数字签名数据存放到调用请求的元数据中,或存放到配置信息指定的请求消息数据对象中的存放数字签名数据的字段中;所述密码处理拦截器是一种基于gRPC实现技术的拦截器机制开发实施的程序组件,所述密码处理拦截器在gRPC客户端提交gRPC调用请求、接收gRPC调用响应时被触发执行,在gRPC服务器端接收gRPC调用请求、返回gRPC调用响应时被触发执行,用于对请求消息数据对象、响应消息数据对象进行密码处理;所述密码组件是提供密码功能的组件;所述配置信息用于设定密码处理拦截器针对请求消息数据对象、响应消息数据对象所进行的密码处理。2.根据权利要求1所述的针对gRPC数据的密码处理方法,其特征是:当gRPC服务器端接收到gRPC客户端提交的gRPC调用请求时,服务器端的密码处理拦截器被触发;密码处理拦截器利用反射解析请求消息数据对象,使用请求消息数据对象的类名称和/或字段名称查询配置信息,确定是否需要对请求消息数据对象进行密码处理,所述密码处理包括解密和/或签名验证;若需要对请求消息数据对象进行密码处理,则密码处理拦截器按如下方式对请求消息数据对象进行密码处理:利用反射解析请求消息数据对象的每个字段,获得每个字段的类型及字段名称;利用配置信息确定是否需要对请求消息数据对象进行解密处理,若需要,则调用密码组件对配置信息设定的需要解密的字段中的数据进行解密处理;利用配置信息确定是否需要对请求消息数据对象进行签名验证处理,若需要,则将配置设定的所有需要签名验证的字段中的数据组合,形成一个待签名验证的数据,然后从调用请求的元数据中或从配置信息指定的请求消息数据对象中的存放数字签名数据的字段中获得数字签名数据,然后调用密码组件利用得到的数字签名数据对组合形成的待签名验证的数据进行签名验证,若签名验证通过,则让请求消息通过,若签名验证不通过,则转入
出错处理。3.根据权利要求2所述的针对gRPC数据的密码处理方法,其特征是:当gRPC服务器端返回gRPC调用响应时,服务器端的密码处理拦截器被触发;密码处理拦截器利用反射解析响应消息数据对象,使用响应消息数据对象的类名称和/或字段名称查询配置信息,确定是否需要对响应消息数据对象进行密码处理,所述密码处理包括加密和/或签名;若需要对响应消息数据对象进行密码处理,则密码处理拦截器按如下方式对响应消息数据对象进行密码处理:利用反射解析响应消息数据对象的每个字段,获得每个字段的类型及字段名称;利用配置信息确定是否需要对响应消息数据对象进行加密处理,若需要,则调用密码组件对配...

【专利技术属性】
技术研发人员:龙毅宏刘泉
申请(专利权)人:武汉理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1