1.本发明属于数据跨域使用技术领域,具体涉及一种无需修改应用前提下支持数据跨域安全使用的方法。
背景技术:
2.随着信息技术产业的高速发展,数据跨域使用交互共享已经成为了众多应用软件的主要数据来源渠道之一。但是数据一旦共享,数据拥有方便失去了数据所有权,数据的隐私性也不复存在。数据使用方一般已经部署了使用数据的应用软件,应用软件直接加载数据进行使用、运算,没有安全的加密、解密模块,数据使用方在读取、写入数据都是以明文形式,操作员可以方便的、以极低的成本接触到应用进出的所有明文数据,由此会导致数据可以被复制,散播,存在比较突出的安全隐患。
3.而在一些有数据加密保障的场景中,数据使用方应用需要重新定制化设计,修改已部署的一般应用以适配安全的接收秘钥并且在内存中解密、使用数据,应用修改难度较大的同时还大幅增加了应用的运营成本。因此,在不改变现有原生应用的基础上,保证数据密态流转、使用,在不对现有使用流程做改变前提下,实现数据全生命周期密态操作,保证数据隐私可控是目前亟待解决的问题。
技术实现要素:
4.针对现有技术的不足,本发明提出一种无需修改应用前提下支持数据跨域安全使用的方法,在不改变现有原生应用的基础上,赋能数据密态流转、使用,在不对现有使用流程做改变前提下,实现数据全生命周期密态操作,保证数据隐私可控。具体实现方式如下:
5.一种无需修改应用前提下支持数据跨域安全使用的方法,包括以下步骤:
6.s1数据使用方部署具有hook功能的组件,应用启动时加载hook组件;
7.s2 hook组件基于用户配置参数文件连接数据拥有方建立安全连接,发送用户信息和用户需求信息;
8.s3数据拥有方核实用户信息的有效性,并基于用户需求信息将数据及与数据对应的加密秘钥k基于安全连接发送给hook组件,hook组件基于秘钥k将收到的数据加密并落盘存储;
9.s4当数据使用方调用打开数据文件或读取数据的函数时,此类函数将会被hook组件中定义的程序替换,hook组件将步骤s3中加密落盘存储的数据加载到内存并在内存中基于秘钥k解密,将内存中的明文数据直接返回给应用实现数据调取;
10.s5当数据使用方调用写操作的函数时,此类函数也会被hook组件中定义的程序替换,由hook组件在内存中把需要写入的数据用加密秘钥k加密后落盘。
11.钩子编程(hooking),也称作“挂钩”,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)。由于一般应用都是可以基于hook
启动,只要用户启动时候去加载hook即可。
12.本技术无需修改应用前提下支持数据跨域安全使用的方法,利用hook组件可以集成秘钥拉取加解密功能,提供了一种数据可用不可见的操作方法,数据跨域交互的应用场景中,数据流转至数据使用方时能被处于加密状态,无需修改一般应用即可将加密数据可信安全的解密、被应用使用,保证了数据全生命周期的安全隐私性。
13.在上述的一种无需修改应用前提下支持数据跨域安全使用的方法中,所述hook组件为能在客户端设备上安装的hook插件或者独立的应用hook2。
14.本技术所述用户均为原生应用,不作任何修改,即不修改代码,不重新编译。启动应用时,无论是hook插件还是独立的应用hook2均能够加载hook功能,即应用以加载hook方式启动。
15.在上述的一种无需修改应用前提下支持数据跨域安全使用的方法中,所述步骤s1中:数据使用方使用的主机根据硬件信息生成唯一标识的机器码。
16.用户在注册时候将指定使用的主机,主机相关硬件信息提供给数据提供方,基于这些硬件信息现有技术即可以生成唯一标识的机器码。
17.在上述的一种无需修改应用前提下支持数据跨域安全使用的方法中,所述步骤s2为:hook组件计算机器码并与数据拥有方建立安全连接,基于安全连接发送计算生成的机器码、用户信息和用户需求信息。
18.应用启动时候会触发hook组件中安全拉取数据的函数,基于保存在目录下或在hook组件相关文件同一目录下的用户配置参数文件,参数文件包含但不限于数据提供者方信息,例如ip、端口号等等,基于参数文件hook组件知道如何连接数据拥有方去拉取数据。
19.在上述的一种无需修改应用前提下支持数据跨域安全使用的方法中,所述步骤s3为:数据拥有方核实机器码与用户信息的有效性,基于用户需求信息将数据通过安全连接发送给hook组件,数据对应的加密秘钥k以及操作模式也基于安全连接发送给hook组件,hook组件基于秘钥k将收到的数据加密并落盘存储。
20.本技术提供的无需修改应用前提下支持数据跨域安全使用的方法,在已开发好的原生应用没有集成远程拉取数据的能力情况下,即使应用只能打开、处理拷贝到本地数据的能力,无需修改也可以密态使用数据,解密明文数据不落盘。
21.在上述的一种无需修改应用前提下支持数据跨域安全使用的方法中,所述操作模式即mode,可选取以下多个选项中的任意一个:save_forbid即禁止写入任何数据;save_direct即直接写明文数据;save_encrypt即所有数据写入加密;save_auto即自动智能化判断,根据数据的输入输出内容,自动判断是否有数据泄露的嫌疑,并由程序自动选取以上三种模式中的一种;
22.所述步骤s5中,数据使用方根据数据拥有方决定的操作模式进行数据落盘。
23.一般情况下,应用的数据输出包含图表,不泄密前提下可以以明文形式存储返回给数据使用方。
24.在上述的一种无需修改应用前提下支持数据跨域安全使用的方法中,还包括步骤s6,具体如下:
25.app重启,hook组件基于用户配置参数文件重新与数据拥有方建立安全连接,基于hook配置文件判断是否需要远程拉取数据还是读取本地上次已写入的加密数据。
26.在上述的一种无需修改应用前提下支持数据跨域安全使用的方法中,所述步骤s6还包括,如hook配置文件判断读取本地上次已写入的加密数据作为本次使用的数据来源,当用户调用打开数据文件或读取数据的函数时,hook组件将本地加密数据加载到内存并在内存中基于秘钥k解密,解密的明文数据直接返回给应用实现数据调取。
27.如果app重启,将会重新与数据拥有方建立安全连接,远程拉取k,并基于hook配置文件判断是否需要远程拉取数据还是可以读取本地上次已写入的加密数据。如读取本地上次已写入的加密数据作为本次使用的数据来源,则数据的读取、拉取操作将会被hook组件中定义的以下程序替换,即将盘上加密数据加载到内存并在内存中基于秘钥k来解密,并将内存中解密的明文数据直接返回给原生应用的数据读取函数。
28.在上述的一种无需修改应用前提下支持数据跨域安全使用的方法中,hook组件中包含动态库函数替换方法,数据读取、拉取和写入函数的具体实现均可以被hook组件中定义的函数替换。
29.在上述的一种无需修改应用前提下支持数据跨域安全使用的方法中,hook组件中还包括数据监测程序,应用使用数据量大小和数据信息经分析后发送至数据拥有方。
30.通过数据监测程序,监测原生应用使用数据时调用相关函数时信息,使用数据量大小,数据信息,数据分析,并发送至数据使用方,从而在数据隐私得以保护前提下使远端数据拥有着实时监控数据使用状况,是否存在非法不合规的使用。
31.与现有技术相比,本发明的有益效果体现在:
32.(1)本技术无需修改应用前提下支持数据跨域安全使用的方法,利用hook组件可以集成秘钥拉取加解密功能,提供了一种数据可用不可见的操作方法,数据跨域交互的应用场景中,数据流转至数据使用方时能被处于加密状态,无需修改一般应用即可将加密数据可信安全的解密、被应用使用,保证了数据全生命周期的安全隐私性。
33.(2)本技术提供的无需修改应用前提下支持数据跨域安全使用的方法,在已开发好的原生应用没有集成远程拉取数据的能力情况下,即使应用只能打开、处理拷贝到本地数据的能力,无需修改也可以密态使用数据,解密明文数据不落盘。
34.(3)通过数据监测程序,监测原生应用使用数据时调用相关函数时信息,使用数据量大小,数据信息,数据简单分析,并发送至数据使用方,从而在数据隐私得以保护前提下使远端数据拥有着实时监控数据使用状况,是否存在非法不合规的使用。
附图说明
35.图1为本发明的无需修改应用前提下支持数据跨域安全使用的方法总体流程图。
具体实施方式
36.下面结合附图和具体实施方式对本实施例的技术方案作进一步详细说明。
37.实施例1
38.如图1所示,本实施例提供了一种无需修改应用前提下支持数据跨域安全使用的方法,包括以下步骤:
39.s 1数据使用方部署具有hook功能的hook组件,应用启动时加载hook组件;
40.数据使用方在注册时候将指定使用的主机,主机相关硬件信息提供给数据提供
者,基于这些硬件信息可以生成唯一标识的机器码,机器码如何生成为现有技术,不在此赘述。本实施例中数据使用方在客户端设备上(例如pc机)部署hook插件,该hook插件包含类似动态库函数替换方法。
41.数据使用方启动不作任何修改的原生应用,但启动方式需能够加载hook功能。必须保证应用启动可以加载hook功能,否则由下面步骤可知如果用户不以加载hook方式启动获取不到数据拥有方的远程数据。
42.s2 hook组件基于用户配置参数文件与数据拥有方建立安全连接,发送用户信息和用户需求信息;
43.应用启动时候会触发hook插件中安全拉取数据的函数。基于保存在目录下的用户配置参数文件,参数文件包含但不限于数据提供者方信息,例如ip、端口号等等,基于参数文件hook插件连接数据拥有方拉取数据。
44.hook插件计算机器码,并与数据拥有方建立tls安全连接,并基于安全连接发送机器码、用户信息(例如拉取远端数据的用户名、密码等),用户需求信息即用户想拉取数据的信息。
45.s3数据拥有方核实用户信息的有效性,并基于用户需求信息将数据及与数据对应的加密秘钥k基于安全连接发送给hook组件,hook组件基于秘钥k将收到的数据加密并落盘存储;
46.数据拥有方核实机器码与用户信息的有效性,并基于用户需求信息将数据基于安全连接发送给hook插件,同时生成数据对应的加密秘钥k以及操作模式(mode)也基于安全连接发送给hook插件。
47.若数据拥有方确认机器码不真实或者用户信息已失效或验证不通过,取消与数据使用方的连接,数据因此不会在流转的过程中被第三方获取。
48.s4当数据使用方调用打开数据文件或读取数据的函数时,此类函数的具体实现将会被hook组件中定义的程序替换,hook组件将步骤s3中加密落盘存储的数据加载到内存并在内存中基于秘钥k解密,将内存中的明文数据直接返回给应用实现数据调取;
49.当用户调用打开数据文件或读取数据的函数,例如fopen(),fread()等,此类函数将会被hook插件中定义的程序实现替换;将内存中的明文数据直接返回给原生应用的数据调取。或者将相关明文数据直接封装到例如fopen()、fread()等函数的返回句柄,并返回给原生应用。这样原生应用不用做修改任何仍然能正常使用。
50.s5当数据使用方需要调用写操作的函数时,此类函数也会被hook组件中定义的程序替换,由hook组件在内存中把需要写入的数据用加密秘钥k加密后落盘。
51.例如fwrite()等函数,此类函数也会被hook插件中定义的程序替换,由hook插件把需要写入的数据用k加密后落盘。
52.数据使用方根据数据拥有方决定的操作模式进行数据落盘。操作模式即mode,可选取以下多个选项中的任意一个:save_forbid即禁止写入任何数据;save_direct即直接写明文数据;save_encrypt即所有数据写入加密;save_auto即自动智能化判断,根据数据的输入输出内容,自动判断是否有数据泄露的嫌疑,并由程序自动选取以上三种模式中的一种。
53.s6如果app重启,hook组件基于用户配置参数文件重新与数据拥有方建立安全连
接,基于hook配置文件判断是需要远程拉取数据还是读取本地上次已写入的加密数据。
54.如hook插件判断读取本地上次已写入的加密数据作为本次使用的数据来源,当用户调用打开数据文件或读取数据的函数时,hook插件将本地加密数据加载到内存并在内存中基于秘钥k解密,在内存中的解密明文数据直接返回给应用的数据调取函数实现数据调取。
55.本实施例在不改变现有原生应用的基础上,赋能数据密态流转、使用,在不对现有使用流程做改变前提下,实现数据全生命周期密态操作,保证数据隐私可控,实现了数据全生命周期的安全隐私性。
56.应用例1
57.实施例1提供的无需修改应用前提下支持数据跨域安全使用的方法具体应用场景如下:
58.b单位的某应用需要使用a单位部分关于国土资源的机密数据。由于数据涉密,因此提供给b单位使用时,相应数据需处于可用不可见的状态。同时b单位的该应用作为开发好的标准化应用,无法修改。此时,a单位使用实施例1提供的方法,可以在不修改应用下把国土资源数据全生命周期密态使用,同时可监测b单位(水利部门)应用使用状态监管,防止国土敏感数据跨域使用时候被窃取。
59.本实施例中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。