一种基于动态链接库的数据动态更新方法及其装置与流程

文档序号:17695097发布日期:2019-05-17 21:25阅读:487来源:国知局
一种基于动态链接库的数据动态更新方法及其装置与流程

本发明涉及信息安全领域,特别涉及基于动态链接库的数据动态更新方法及其装置。



背景技术:

目前动态链接库不支持自动更新自身的技术,因此机密信息文件无法封装在动态链接库内进行动态的安全保护与更新。而通过js等其它技术进行注入和插入新进程代码来动态更新动态链接库会引起更多的不安全性,如木马病毒的潜在可能性,且可能会被app应用商店的安全检测技术拦截。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种安全性好、支持自动更新的基于动态链接库的数据动态更新方法及其装置。通过动态链接库(如so)动态更新自身技术对安全文件更新保护(如白盒库文件),可用于关键机密信息的安全存储及动态更新,此外,动态链接库进行整体加固,极大地提升了信息的保护强度,且对整体应用程序的影响最小。

本发明提供的一种基于动态链接库的数据动态更新方法,其技术方案为:

一种基于动态链接库的数据动态更新方法,在所述动态链接库内设有子安全动态链接库,包括以下步骤:

在内存中更新数据;

将子安全动态链接库中的全部数据转到内存中暂存为临时文件;

在内存中将临时文件与更新数据进行组合,形成新的更新文件;

将新的更新文件存入子安全动态链接库,并删除子安全动态链接库中的原有数据,完成子安全动态链接库内数据的更新。

优选地,所述更新方法包括初始化步骤,所述初始化步骤包括新建动态链接库。

优选地,所述初始化步骤还包括采用代码混淆和代码水印的方式对所述动态链接库进行加固。

优选地,所述初始化步骤还包括,在所述动态链接库内创建子安全动态链接库,所述子安全动态链接库以独立资源的形式链接到所述动态链接库。

优选地,所述子安全动态链接库共享所述动态链接库的rt运行时防护,并具有统一的跨平台适配。

优选地,所述代码混淆的方式包括进行结构混乱、代码迁移、加密处理中的一种或几种。

优选地,所述结构混乱的方式为对所述动态链接库中的通用的已知固定类库进行结构混乱打散。

优选地,所述代码迁移的方式为对所述动态链接库中存储的程序中所有的判断逻辑代码以及关键业务逻辑代码增加修正代码,使原始代码迁移到其它代码段位置,获得迁移后的代码;在运行时通过调用修正脚本,修正迁移后的代码为原始代码。

优选地,所述加密处理的方式是对所述动态链接库中存储的关键函数在编译时进行加密,运行时,先对其进行解密后运行。

优选地,所述代码水印的方式是采用动态链接库私钥对所述动态链接库中存储的数据进行整体签名,获得签名文件并存储在动态链接库内;运行时采用动态链接库公钥对签名文件进行验证,并上传所述签名文件供远程服务器验证。

优选地,所述更新方法用于更新白盒算法库和/或安全文件数据。

本发明还提供了一种基于动态链接库的数据动态更新装置,包括子安全动态链接库和临时文件存储模块,所述子安全动态链接库以独立资源形式内设于动态链接库,所述子安全动态链接库与所述临时文件存储模块进行交互实现子安全动态链接库内数据的更新。

优选地,所述动态链接库包括多种以独立资源形式存在的所述子安全动态链接库;

所述子安全动态链接库共享一套rt运行防护代码,并具有统一的跨平台适配。

本发明的实施包括以下技术效果:

本发明的基于动态链接库的数据动态更新方法能够动态更新动态链接库内的数据,安全性好;采用统一的动态链接库可以隐藏分散的子安全动态链接库的内部实现函数,子安全动态链接库的自我更新更安全,并支持将机密信息动态地存储在子安全动态链接库内;能够减少分散的单个子安全动态链接库文件被误删除导致整体程序无法运行的可能性。通过统一的加固方式,多个子安全动态链接库共享一套成体系的保护方案进行整体防护,防止逐个被破解。

附图说明

图1为本发明实施例的基于动态链接库的数据动态更新方法流程示意图。

图2为以白盒库动态更新为例的流程示意图。

具体实施方式

下面将结合实施例以及附图对本发明加以详细说明,需要指出的是,所描述的实施例仅旨在便于对本发明的理解,而对其不起任何限定作用。

参见图1所示,本实施例提供的一种基于动态链接库的数据动态更新方法,在所述动态链接库内设有子安全动态链接库,有数据需要动态更新时,包括以下步骤:在内存中更新数据;将子安全动态链接库中的全部数据转到内存中暂存为临时文件;在内存中将临时文件与更新数据进行组合,组合方式包括临时文件与更新数据叠加,或更新数据替换临时文件的相应数据,形成新的更新文件;将新的更新文件存入子安全动态链接库,并删除子安全动态链接库中的原有数据,完成子安全动态链接库内数据的更新。

具体地,所述更新方法还包括以下初始化步骤:

新建动态链接库;并采用代码混淆和代码水印的方式对所述动态链接库进行加固;

在动态链接库内创建子安全动态链接库,所述子安全动态链接库以独立资源的形式链接到所述动态链接库,从而使得子安全动态链接库的逻辑代码的调用可以在所述动态链接库内完成。

优选地,所述子安全动态链接库共享所述动态链接库的rt运行时防护,并具有统一的跨平台适配。

所述动态链接库采用代码混淆和代码水印的方式进行整体加固。代码混淆的方式包括进行结构混乱、代码迁移、加密处理中的一种或几种。所述结构混乱的方式为对所述动态链接库中的通用的已知固定类库进行结构混乱打散;所述代码迁移的方式为对所述动态链接库中存储的程序中所有的判断逻辑代码以及关键业务逻辑代码增加修正代码,使原始代码迁移到其它代码段位置,获得迁移后的代码;在运行时通过调用修正脚本,修正迁移后的代码为原始代码;所述加密处理的方式为对所述动态链接库中存储的关键函数在编译时进行加密,运行时,先对其进行解密后运行;其中,所述加密处理可采用任意加密算法处理,优选白盒算法。所述代码水印的方式是采用动态链接库私钥对所述动态链接库中存储的数据进行整体签名,获得签名文件并存储在动态链接库内;运行时采用动态链接库公钥对签名文件进行验证,并上传所述签名文件供远程服务器验证。采用此种双重保障方式,可确保代码水印存在且正确。

所述子安全动态链接库用于存储动态白盒算法库或安全文件系统等机密信息。动态链接库的动态资源整合能力,可保障子安全动态链接库在运行时对需要保护的信息进行动态更新和内部存储,而不将机密信息落盘到操作系统或其它端设备的文件系统上,维护子安全动态链接库的整体安全性。

本实施例以对动态白盒库文件的动态更新为例继续说明本发明的技术方案。参见图2所示,当密钥发生变化时,白盒库和白盒密钥随之变化,加解密时需要使用新的白盒库和白盒密钥。新的白盒库需要替换或附加在原有子安全动态链接库内,不存储在其它设备上。白盒库动态更新的步骤如下所示:

当动态白盒需要更新密钥时,在内存里随机生成密钥,并通过密钥转换生成白盒库文件。此时将子安全动态链接库自身的全部数据转到内存中暂存为一次性的临时文件。在内存中将临时文件与更新的白盒库文件进行组合,形成新的更新文件,最后将新的更新文件存入子安全动态链接库,并删除子安全动态链接库中的原有数据,完成子安全动态链接库内数据的更新。此种数据更新方式保留了原有子安全动态链接库和白盒系统的全部能力。新的更新文件可以根据实际需要进行设置,可以是以更新的白盒库文件替换原有白盒库文件后形成的新的更新文件,也可以是同时保留更新的白盒库文件和原有白盒库文件的新的更新文件。

更新白盒算法库的初始化步骤如下:

1)、新建动态链接库,并采用代码混淆+代码水印技术对动态链接库进行整体加固,加固步骤如下:

i.进行结构混乱,即对所述动态链接库中的通用的已知固定库进行结构混乱打散,例如c/c++语言标准库可进行rot13编码处理,达到混淆的目的;

ii.进行代码迁移,即对所述动态链接库中存储的程序中所有的判断逻辑代码以及关键业务逻辑代码增加修正代码,使原始代码迁移到其它代码段位置,获得迁移后的代码;在运行时通过调用修正脚本,修正迁移后的代码为原始代码;

iii.应用白盒算法进行加密处理,对所述动态链接库中存储的关键函数在编译时使用白盒算法进行加密,运行时,调用白盒库文件对其进行解密后运行,以此避免静态分析泄密;

iv.对代码进行水印处理,采用动态链接库私钥对所述动态链接库中存储的数据进行整体签名,获得签名文件并存储在动态链接库内;运行时采用动态链接库公钥对签名文件进行验证,并上传所述签名文件供远程服务器验证;这种双重保障方式,确保代码水印存在且正确。

2)、在动态链接库内创建子安全动态链接库,将预设的动态白盒算法逻辑和白盒库链接到子安全动态链接库内,使得白盒算法逻辑和白盒库可以在动态链接库内部完成调用。

白盒算法子安全动态链接库共享所述动态链接库的rt运行时防护,并具有统一的跨平台适配。

本发明还提供了一种基于动态链接库的数据动态更新装置,包括内设于动态链接库以独立资源形式子安全动态链接库和临时文件存储模块,所述子安全动态链接库与所述临时文件存储模块进行交互实现子安全动态链接库内数据的更新。本实施例中,所述动态链接库包括多种以独立资源形式存在的所述子安全动态链接库;所述子安全动态链接库共享一套rt运行防护代码,并具有统一的跨平台适配。

本发明的动态链接库兼容各种以独立资源的形式存在的子安全动态链接库,适用于各种操作平台系统(windows、inux、android、mac、ios等),从而将动态链接库重构为一种关联性强的安全体;此外,动态链接库的动态资源整合能力,可以保障动态链接库在运行时对机密信息进行动态更新和内部存储,而不会将机密信息落盘到操作系统或其它端设备的文件系统上,维护动态链接库的整体安全性。

整个动态链接库共享一套rt运行时防护代码,并具有统一的跨平台适配,在不同的平台编译为不同的形态文件,windows平台编译为dll文件,linux/android平台编译为so文件,mac/ios平台编译为dylib文件。此外,动态链接库的整体加固采用代码混淆+代码水印的技术进行保护,保证动态链接库内的数据更安全。

最后应当说明的是,以上实施例仅用以说明本发明的技术方案,而非对本发明保护范围的限制,尽管参照较佳实施例对本发明作了详细地说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的实质和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1