一种保护本地数字资源的方法、介质和设备与流程

文档序号:31659847发布日期:2022-09-27 22:53阅读:61来源:国知局
一种保护本地数字资源的方法、介质和设备与流程

1.本发明涉及计算机安全技术领域,特别是指一种保护本地数字资源的方法、介质和设备。


背景技术:

2.互联网的发展,很多数字资源得到广泛传播。数字资源常见的情况包括:javascript、html、css、图片、音频和视频等等资源文件。这些资源文件通常明文打包在应用程序里,如电脑的可执行程序,手机端的app,或app上运行的小程序等。
3.目前的开源框架electron是基于nodejs的,可以跨各类系统平台进行传播这些本地数字资源。
4.由于这些资源可能会随着联网而被盗取,存在安全风险。


技术实现要素:

5.有鉴于此,本发明在于提供一种保护本地数字资源的方法、介质和设备,以解决上述本地数字资源被盗用的问题。
6.为解决上述问题,本发明提供一种保护本地数字资源的方法,包括:
7.启动程序读取本地数字资源,根据所述读取的过程中的信息,先解密出受保护内容的存储路径;或,直接加载受保护内容;
8.从运行内存的所述程序的运行代码的多个位置,恢复出预先存储的密钥;
9.采用所述密钥对所述受保护内容进行二次解密,向用户呈现所述受保护内容。
10.优选的,所述启动程序读取本地数字资源,根据所述读取的过程中的信息,先解密出受保护内容的存储路径的过程包括:
11.读取所述本地数字资源的相关的标识文件的地址和文件名,地址包括所述标识文件的文件打包过程的第一相对路径、和所述标识文件在本地的安装目录;
12.根据所述第一相对路径和所述标识文件的文件名,按照预定的第一解密算法,解密出所述受保护内容的打包过程的第二相对路径;
13.将所述标识文件在本地的安装目录和所述受保护内容的打包过程的第二相对路径,作为所述受保护内容的在本地数字资源存储的存储路径。
14.优选的,所述从运行内存的所述程序的运行代码的多个位置,恢复出预算存储的密钥的过程,包括:
15.所述密钥采用防反编译的语言通过第二加密算法生成;
16.预先将所述生成的密钥拆分成多个部分,采用所述第二加密算法硬编码散落加入到所述程序的运行代码中的多个不同位置;
17.采用所述第二加密算法的逆向算法,在所述运行内存中,从所述程序的代码恢复所述二次解密的密钥。
18.优选的,所述从运行内存中的所述程序的代码,获得用于二次解密的密钥的过程,
还包括:
19.所述用于二次解密的密钥包括由两部分组成,所述密钥的第一部分为在所述运行内存中恢复的密钥;
20.第二部分密钥由注册用户从付费平台认证获得,并输入到所述程序,两部分共同生成所述用于二次解密的密钥。
21.优选的,所述进行二次解密的过程,包括:
22.采用从所述运行内容的多个位置恢复的所述第一部分的密钥对所述受保护内容进行二次解密失败后,向用户输出提示;
23.接收所述用户根据提示输入的所述第二部分密钥;
24.将所述第一部分和第二部分的密钥共同生成述用于二次解密的密钥。
25.优选的,从运行内存的所述程序的运行代码的多个位置,恢复出预先存储的密钥的过程包括:
26.将字符串拆分,选出一部分多个子串或所述多个子串中每个子串的预定义运算结果的组合作为所述密钥;
27.将所述拆分后的多个子串或每个子串的预定义运算结果硬编码散落加入到所述程序中,用于所述在运行代码中的多个不同位置,恢复所述密钥。
28.优选的,所述程序为采用开源平台electron的电脑运行的可执行文件、app程序或小程序;
29.所述第一解密算法为md5算法;
30.所述标识文件具有触发url拦截器/界面元素的用户交互/h5端加载/读取所述本地数字资源的相关的标识文件的地址的功能;
31.所述受保护的内容为多个h5资源,且全部在同一个文件夹内;
32.将解密后的所述h5资源返回给开源平台electron渲染并展示给用户;
33.所述防止反编译的语言为c、c+、object-c或汇编语言。
34.优选的,所述对所述受保护内容进行二次解密的过程,包括;
35.所述程序通过javascript器通过c语言的桥接器,调用采用aes算法的c语言加解密器,执行所述二次解密的过程;
36.还包括:采用javascript加密器对所述javascript器处理的内容进行加/解密。
37.本发明的实施例还提供一种保护本地数字资源的介质,存储有代码,所述代码被读取执行时,实现上述的方法。
38.本发明的实施例还一种保护本地数字资源的设备,具有处理器,用于读取所述介质。
39.本发明的实施例通过上述方案,可以实现本地数字资源的加密,防止被定位到,密码散落硬编码在代码内,有效防止被盗用。也可以防止本地数字资源被恶意读取。
附图说明
40.图1是本发明的一个实施例的流程图;
41.图2是本发明的实施例中解密的流程图;
42.图3是本发明的实施例中的界面示意图;
43.图4是本发明的实施例中的另一界面示意图;
44.图5是本发明的另一个实施例的流程图;
45.图6是本发明的实施例中对javascript的加密流程示意图。
具体实施方式
46.为清楚说明本发明中的方案,下面给出优选的实施例并结合附图详细说明。
47.本发明的方案,可以采用以下多个实施例实现,各个实施例之间,实现同样功能的技术,可以相互挪用,不影响本发明方案的实现。
48.本发明的各个实施例,包括两个加密方式。
49.第一种加密方式,采用对文件的读取路径进行加密,只有解密后,才能获得文件的加载路径。本发明的实施例通过文件名的加密,实现定位到加载文件的存储路径,需要进行解密才可以定位到。
50.第二种加密方式,建立在预先对密钥和本地数字资源文件的加密上。两种加密方案既可以单独分开独立使用,也可以合并后,按照先后实施第一种、第二种的方式实现首次解密和二次解密的顺序,首次解密后定位到受保护内容并二次解密受保护内容本身。
51.下面通过实施例详细说明本发明的文件的在保护本地数字资源,采用的具体实例的方案。
52.本地数字资源,可以是各类的电子数据,如图片、视频、文档文件、各类程序文件等。这些文件在通过其他程序调用时,具有被盗用的风险,存在知识产权成果的保护不利的问题。通过操作命令可以解压或直接定位到javascript、html、css、图片、音频和视频等本地数字资源。这些资源也可以是实施例中提到的用于页面展示的h5资源,在各个实施例中,以h5的本地数字资源为例说明。
53.下面我们通过实施例说明首次加密/解密的流程。首次加密/解密的过程,是为了将加密资源的位置统一放置,并保存起来,防止恶意的程序在用户不之情的情况下,定位并复制本地数字资源。
54.为了防止本地数字资源被随意读取,本发明的实施例提供一种对文件位置的加密方法。在各个实施例中,通过对加密后的本地数字资源的存储地址进行加密,只有在调用本地数字资源或程序在调用本地数字资源之前的一些操作被触发后,通过对调用过程或触发操作的特定文件被读取,这里的特定文件,也称为标识文件,指和调用本地数字资源有关联的预先指定的文件,该标识文件的一些相关信息,含有本地数字资源的存储路径。本地数字资源的存储路径包括两部分,一部分为打包过程中的相对路径,另一部分为程序的安装目录。通过标识文件的解密,可以获得本地数字资源的存储路径。对本地数字资源的相对路径的加密,在读取时进行解密,可以认为是获得本地数字资源的首次解密,从而实现了读取对本地数字资源的解密过程。
55.下面通过实施例详细说明首次解密,以获得本地数字资源的过程。
56.本发明的实施例包括一种保护本地数字资源的方法,采用以下步骤:
57.s1:启动程序读取本地数字资源,根据所述读取的过程中的信息,先解密出受保护内容的存储路径;
58.s2:调用存储路径下的受保护内容,向用户呈现所述受保护内容。
59.下面以h5资源为例,说明解密流程的实例。在实施例中,程序采用开源平台electron的app,实现程序的运行。在app运行时,需要调用h5本地数字资源,实现页面的渲染。
60.在本实施例中,程序在调用本地数字资源时,通过标识文件,获得本地数字资源的存储路径。
61.本地数字资源的存储路径主要包括两部分,一部分是在打包过程的相对路径,这个相对路径,可以通过标识文件的信息获得,如将标识文件的文件名、地址、描述信息等,通过算法获得本地数字资源在打包过程的文件名,进一步获得受保护内容的文件存储的相对路径;本地数字资源在本地的安装目录,可以通过标识文件的安装目录,作为本地数字资源的安装目录。将二者拼合,即可获得本地数字资源的存储路径。
62.参见图2所示的流程,在实施例中,标识文件为index.html文件,通过electron平台自带的url拦截器,或现有技术的url拦截器,可以实现,当index.html文件被调用时,通过对index.html的地址解密,获得本地数字资源的文件名,进一步获得相对路径。index.html的地址中,包括两部分,一部分是程序安装时的安装目录,一部分是打包文件的存储的相对路径,为了和本地数字资源的相对路径区分,可将标识文件的相对路径称为第一相对路径,将本地数字资源打包的相对路径称为第二相对路径。
63.可预先建立标识文件的相关信息和本地数字资源的文件名之间,加密/解密的关系。这里的加密/解密算法,可以采用多种防反编译的算法,例如采用md5的算法,对标识文件的相关信息加密处理后的结果,如对index.html的第一相对路径的字符串md5加密后的值作为本地数字资源的文件名,这里的本地数字资源,可以是一张图片,一个视频,或多个文本的集合等。
64.将含有本地数字资源的文件做成可执行的程序文件的过程,本地数字资源的文件需要经历文件打包的操作。
65.这些资源都是以文件夹的方式组织起来的,定位一个具体的本地数字资源文件就会有一个相对路径,例如,用户把h5离线资源放到命名为temp的目录中,标识文件为index.html文件,存储在temp目录下,路径包括temp/content/index.html,content目录上级目录为temp,相对temp的存储路径就是:/content/index.html。如图4所示。
66.这些离线数字资源在经过首次加密后,统一保存到我们设定命名为wmapp的文件夹中,并把此文件夹打包到app中;如图3所示。
67.标识文件index.html也被加密打包到wmapp的文件夹中,这个路径:/content/index.html,在实施例中相对于wmapp,称为第一相对路径。将第一相对路径做md5加密后为:6108b3385fab679abb26659c108f5829,生成后的字符作为被加密资源的文件名。
68.加密后的本地数字资源文件6108b3385fab679abb26659c108f5829,相对于wmapp的文件夹的路径为/6108b3385fab679abb26659c108f5829,也称为第二相对路径。
69.用户获得app程序,如.apk文件/.exe文件,将app程序安装到电子设备,如手机或电脑上。在实施例中,存储在d:\wm中,在app中指定electron加载h5的入口文件,为index.html文件。
70.从上述打包的wmapp的加载,那么加载路径是:d:/wm/wmapp/content/index.html,拦截器拦截此次请求对象中有一个url:
71.url的值就是file:///d:/wm/wmapp/content/index.html,那么电子设备通过找到字符串:wmapp的位置,通过字符串截取就可以获取到第一相对路径/content/index.html,采用md5处理截取的字符,可以获得加密文件的文件名6108b3385fab679abb26659c108f5829。通过第一相对路径可以获得文件名,定位到该文件后,即可获得这个本地数字资源相对于wmapp这个安装目录的相对路径,称为第二相对路径,/6108b3385fab679abb26659c108f5829。当然,如果文件目录进一步扩展,第二相对路径可能更长,如abc/def/6108b3385fab679abb26659c108f5829;
72.加载路径中,index.html这个标识文件的安装目录为d:/wm/wmapp/;本地数字资源的第二相对路径,/6108b3385fab679abb26659c108f5829;安装目录和第二相对路径相组合后,可获取到对应的加密文件的存储路径:d:/wm/wmapp/6108b3385fab679abb26659c108f5829,从而实现到了调用请求与加密文件的关联,其他的资源文件都是类似处理。
73.6108b3385fab679abb26659c108f5829这个文件可以是离线的本地数字资源内的一个文件,也可以是受保护内容之一。通过上述的流程,可以实现对受保护内容的存储路径的访问。
74.优选的,上述的方案,将所有的本地离线资源打包时保存在同一个文件夹下,实现了扁平化统一保存,如图4所示,wmapp_s目录是原始的数字资产目录是数字资产研发的时候的目录,都是根据具体的业务模块划分,通过上述方案改变了这种根据具体业务划分的存储存储结构,不利于记载和管理的问题。
75.优选,在实施例中,当程序启动后,定位并访问到受保护的内容。还可以进一步包括:读取受保护内容,二次解密后并展示给用户。这个过程既可以采用s2直接加载展示给用户,也可以再进行一次解密,如下面这个实施例中提到的二次解密。
76.下面通过本发明的另一个实施例说明二次解密的方案。这个实施例既可以在前面的实施例执行后执行,也可以不关联前一个实施例,运行程序直接定位到加密的受保护内容,参见图5,包括:
77.s21:启动程序读取本地数字资源,根据所述读取的过程中的信息,先解密出受保护内容的存储路径,或,直接加载受保护的内容;
78.对于直接加载的情况,程序可以直接按照文件名调用受保护的内容。
79.s22:从运行内存的所述程序的运行代码的多个位置,恢复出预先存储的密钥;
80.s23:采用所述密钥对所述受保护内容进行二次解密,向用户呈现所述受保护内容。
81.通过上述的步骤,可以实现直接解密向用户呈现受保护内容,也可以实现首次存储路径的解密,以及s23步骤中的二次解密,可以实现对本地数字资源的两重防护。另外,由于密钥是存储在内存代码内,只有在运行程序时按照从内存的多个位置,恢复密钥,才能实现对本地数字资源的读取。各个实施例所提到的内存,可以是在ram芯片的内存。以下说明二次解密的实施例中的解密过程。
82.首先,先将这些本地数字资源进行加密,加密的算法很多种,在各个实施例中,可以优选采用aes加密算法。本发明的实施例的加密方法,可以采用以下步骤实现:
83.1、采用aes算法将h5资源进行加密,加密可以采用防止反编译的语言编写,如c、c+、object-c或汇编语言等。编译后的可执行程序具有不易被破解和反编译的特性,可以将
加密的密钥存储到代码中。用户只有在运行程序时,才能获得密钥,并用该密钥解密本地数字资源。
84.2、加密密钥的存储,可以将密钥采用硬编拆散成多个字符,散落在代码内。在程序运行时,通过解密算法,恢复aes算法加密本地数字资源的密钥。使用该密钥进行解密本地数字资源。
85.优选的,aes加密算法的密钥,可以是个字符串,该字符串可以来自任何电子数据,比如一张图片上的多个点位的像素值,一段文章不同位置的字/词的ascii码等。可以将这些值或字符拼合或任意顺序组合,或这些值或字符经过一些数学运算,如某个函数运算。
86.将表示密钥的字符串拆分,选出一部分多个子串或所述多个子串中每个子串的预定义运算结果的组合作为所述密钥;这里的子串可以是上述提到的某个点位的像素值、某个位置的ascii码,或这些值或字符经过预定义函数运算的结果。将这些子串组合后作为密钥。
87.这些拆散的表示密钥的子串,每个子串可以是一个或多个字符或一个数值,可以采用硬编码散落在程序的代码内,并使用防止反编译的语言编写代码。只有在程序运行时,才能组合成完整的密钥。
88.优选的,在实施例中,为了增强加密的效果,采用字符串的解密密钥,可以将解密的密钥设置成两部分组成,密钥的第一部分为在所述运行内存中恢复的密钥;
89.第二部分密钥存储在网络平台。只有符合一定条件的用户才能获得第二部分密钥。
90.在步骤1的加密过程中,可以采用两种密钥的形式,一种密钥是全部存储在代码内,只有程序运行时,才能从内存获得;另一种是将密钥分成两部分,第二部分密钥存储在网络平台。在解密时,当用户的权限不够,无法打开需要的文件,只有通过充值或得到管理员的认证等符合条件后的用户,才能获得第二部分密钥。
91.例如,第二部分密钥由注册用户从付费平台认证获得,并输入到所述程序,两部分共同生成所述用于二次解密的密钥。进行上述解密的过程,包括:
92.采用从所述运行内容的多个位置恢复的所述第一部分的密钥对所述受保护内容进行二次解密失败后,向用户输出提示;
93.接收所述用户根据提示输入的所述第二部分密钥;
94.将所述第一部分和第二部分的密钥共同生成述用于解密的密钥,并采用该密码解密步骤s1或s21中的定位到的本地数字资源。
95.上述的解密过程,即使受保护的本地数字资源被非法读取,通过增加一次内存的解密过程,也可以得到有效保护。在各个实施例中,对于采用的两次解密,这个额外增加的解密过程之前的先解密存储路径,可称为首次加密/解密;以上将从内存中获得密钥、或从内存以及网络平台获得两部分密钥合并后进行解密都称为二次解密。
96.以上的实施例,在从内存中解密受保护内容,对于实施例中采用c/c++语言的程序,可以采用以下方式解密,1、调用c++桥接器解密文件,生成内存文件流;2、把文件流返回给url拦截器;3、url拦截器拿到受保护内容返回给electron渲染引擎,渲染h5页面。
97.在实施例中,如图2所示,app程序为web应用程序,会使用javascript调用c++加解密器,就需要一个javascript与c++之间的c++桥接器,调用桥接器的接口,进而调用c++加
解密器中的c++aes加/解密算法和/或加解密文件。
98.在实施例中,解密的流程示意图,可以参见附图6。实施例中,采用electron发布的桌面应用程序中的javascript,可以用于实现实施例中的app程序,也存在非法拷贝的风险。因此对javascript代码也需要加密。采用javascript加密器对所述javascript处理的内容进行加/解密。包括:
99.由于electron是基于nodejs的,在nodejs框架中有一个bytenode框架,它可以实现对javascript代码进行加密生成二进制流文件。electron是可以加载这个加密后的二进制流文件流,进而实现javascript代码安全保护。具体流程可以参见附图:
100.通过开发一个electron应用程序调用javascript加密器;
101.javascript加密器调用bytenode框架接口对javascript代码加密;
102.生成javascript加密二进制流文件;
103.发布的electron的app应用程序调用javascript加密器,加载javascript加密二进制流文件;
104.加载javascript加密二进制流文件成功后,electron应用程序就可以调用采用javascrip封装在main.js中的electron加载app的入口接口,进而实现了采用bytenode技术对main.js进行代码加密。
105.在以上的实施例中,提到的程序为采用开源平台electron的电脑运行的可执行文件、app程序或小程序;
106.提到的第一解密算法为md5算法;
107.所述标识文件具有触发url拦截器/界面元素的用户交互/h5端加载/读取所述本地数字资源的相关的标识文件的地址的功能;并对标识文件的地址进行截取分析,解密获得受保护内容的文件名,以得到第二相对存储路径。
108.受保护的内容可以为多个h5资源,且全部在同一个文件夹内;
109.所述防止反编译的语言为c、c+、object-c或汇编语言。
110.优选的,实施例中,除了采用electron的框架实现程序,还可以采用miniblink,miniblink可支持windows系统;也可以采用flutter或cordova框架,用于手机app程序;还可以采用基于duilib+cef+nodejs,类似electron的ui框架。
111.优选的,本发明的实施例,还提供一种保护本地数字资源的介质,存储有代码,所述代码被读取执行时,实现上述各个实施例中所述的方法。
112.这个介质可以是各类存储器,如网盘、u盘、或消费级的电子设备内的存储器。
113.本发明实施例中的步骤流程所述的方案,可以存储在介质中,用于随时被调用执行。
114.优选的,本发明的实施例,还提供一种保护本地数字资源的设备,具有处理器,用于读取所述介质。
115.该设备可以是手机、笔记本、pad、电视机、各类投影的影响设备等。对于实施例中提到的第二部分密钥,可以采用密码卡、短信、即时消息、nfc手环触碰传输等各种形式,被实施例中的电子设备所获得。
116.上面详细描述了本发明的各个实施例,实施例的方法,可以在各类电子设备内运行。
117.对于本发明各个实施例中所阐述的方案,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1