具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
首先在用户端的角度描述技术方案。
请参阅图1和图2,图1为本发明实施例提供的资源数据防篡改方法的应用场景示意图;图2为本发明实施例提供的资源数据防篡改方法的流程示意图,该资源数据防篡改方法应用于用户端中,该方法通过安装于用户端中的应用软件进行执行。其中,所述用户端为智能手机、台式电脑、平板电脑、手提电脑、等终端的任意一种。
如图2所示,该方法包括步骤S101~S107。
S101、响应于应用更新指令,根据所述应用更新指令获取用户端核心数据,将所述用户端核心数据中的每一个子数据通过预设的第一私钥进行加密,得到第一重加密数据;其中,所述用户端核心数据包括更新包包名、用户签名、用户唯一识别信息、用户端终端型号,所述第一重加密数据中的第一重加密子数据与所述用户端核心数据中的子数据一一对应。
在本实施例中,当用户为了对用户端上安装的应用程序(如采用混合式开发方式开发的应用程序,该混合式开发方式中一般包括含h5,ReactNative,Weex开发等)进行应用更新时,为了提高数据安全性,可以是先获取用户端核心数据,将所述用户端核心数据中的每一个子数据进行加密,得到第一重加密数据。
具体的,所述用户端核心数据包括更新包包名、用户签名、用户唯一识别信息、用户端终端型号。这些信息均可以在用户端本地的so库中获取(so库对应的.so文件是一种二进制文件,一般存在于Android Studio工程的main/jniLibs/ABI目录中)。为了提高数据安全性,可以通过同一个私钥(如第一私钥)对更新包包名、用户签名、用户唯一识别信息、用户端终端型号分别进行加密,得到对应个数的第一重加密子数据,从而组成第一重加密数据。例如,所述用户端核心数据包括更新包包名、用户签名、用户唯一识别信息、用户端终端型号中包括4个子数据,将这4个子数据均通过第一私钥进行加密得到4个第一重加密子数据,从而由4个第一重加密子数据组成。
S102、将所述第一重加密数据根据动态组合私钥进行加密,得到第二重加密数据;其中,所述动态组合私钥包括用户端终端型号的局部数据、和用户端联系号码的局部数据。
在本实施例中,继续参照上述列举的实例可知,第一重加密数据由4个第一重加密子数据组成,更具体是按照一定的数据格式拼接而成,可以形象的理解为第一重加密数据有一个数据body,在该数据body中容纳了4个第一重加密子数据,此时还可以基于动态组合私钥对所述第一重加密数据进行第二次加密,得到第二重加密数据。
在一实施例中,步骤S102之前还包括:
获取所述用户端终端型号的前N1位并获取所述用户端联系号码的前N2位,组成动态组合私钥;;其中,N1为预设的第一位数值,N2为预设的第二位数值。
具体的,为了更快速的获取动态组合私钥,可以从用户端终端型号选取局部数据(例如用户端终端型号的前4位),同时从用户端联系号码选取局部数据(例如用户端联系号码的前4位),由用户端终端型号的局部数据和用户端联系号码的局部数据拼接成动态组合私钥,以对所述第一重加密数据进行第二次加密,得到第二重加密数据。
S103、将所述第二重加密数据作为加密核心数据发送至服务器。
在本实施例中,当在用户端中完成了对用户端核心数据的双重加密得到第二重加密数据后,将所述第二重加密数据作为加密核心数据发送至服务器,通过发送第二重加密数据作为对应用更新指令的响应。
S104、接收并存储服务器发送的第一目标拆分子公钥。
在本实施例中,当在服务器中完成了对公钥的拆分后,先是将其中的第一目标拆分子公钥先发送至用户端,以由用户端对第一目标拆分子公钥进行存储。之后再继续检测是否接收到第二目标拆分子公钥,即可进一步判断是否能在用户端中基于第一目标拆分子公钥和第二目标拆分子公钥重新组合为公钥,从而实现对加密后资源包进行解密。
S105、若接收到更新后目标拆分子公钥和加密后更新资源包,获取所述更新后目标拆分子公钥中包括的随机标识符与第二目标拆分子公钥。
在本实施例中,当用户端接收到服务器发送的所述更新后目标拆分子公钥和所述加密后更新资源包后,此时无需先对加密后更新资源包进行解密,这是因为还缺少完整的公钥对其进行解密。此时,在用户端中是先获取所述更新后目标拆分子公钥中包括的随机标识符与第二目标拆分子公钥,由于之前用户端接收并存储了公钥的另一部分(即第一目标拆分子公钥),故可以在用户端中根据所述第一目标拆分子公钥与所述第二目标拆分子公钥进行下一步的公钥组合处理,以得到完整的公钥。
S106、将所述第一目标拆分子公钥与所述第二目标拆分子公钥进行组合得到公钥,通过所述公钥对所述加密后资源包进行解密,得到待更新资源包。
在本实施例中,在用户端中可以所述第一目标拆分子公钥置于所述第二目标拆分子公钥之前的顺序进行拼接组合,从而还原得到公钥。通过所述公钥即可实现对所述加密后资源包进行解密,得到待更新资源包,通过所述待更新资源包在用户端中对应进行应用程序中某一个或多个功能模块的更新。
S107、当检测到已根据所述待更新资源包完成更新时,生成更新完成通知信息,将所述随机标识符和所述更新完成通知信息发送至服务器。
在本实施例中,当在用户端中根据所述待更新资源包完成更新时,生成更新完成通知信息,这一更新完成通知信息并不是单独发送至服务器,而是与之前用户端接收到的所述随机标识符和所述更新完成通知信息一同发送至服务器。通过这一方式,可将随机标识符作为一个认证标识符来表示用户端此次更新的数据是基于服务器发送的,并没有被其他服务器或终端进行拦截和恶意篡改。
在一实施例中,步骤S107之后还包括:
S108、当检测到应用数据获取指令时,根据所述应用数据获取指令获取应用待检测数据,将所述应用待检测数据发送至服务器;其中,所述应用数据获取指令用于获取应用界面截图或应用功能模块代码;
S109、当检测到应用验证未通过通知信息时,将所述待更新资源包对应的应用切换为不可用状态。
在本实施例中,由于应用程序在上一次更新完成之后,在下一次更新之前,用户在使用应用程序的过程中还有可能存在代码或页面等资源被篡改的可能(例如用户端连接了某一植入了木马程序的热点),为了确保应用程序的数据安全,可以由服务器不定时的发起应用数据获取指令,或者是用户端本地不定时的发起应用数据获取指令。只要在用户端中检测到应用数据获取指令时,根据所述应用数据获取指令获取应用待检测数据,将所述应用待检测数据发送至服务器进行合法性验证。
一旦用户端上传的应用待检测数据经过服务器识别与正常的应用待检测数据不相同时,则可判定未通过验证,并将应用验证未通过通知信息发送至用户端。当用户端检测到应用验证未通过通知信息时,将所述待更新资源包对应的应用切换为不可用状态,实现对该应用程序的及时禁用以确保数据安全。本申请可应用于智慧教育场景中,从而推动智慧城市的建设。
之后在服务器的角度描述技术方案。
请参阅图1和图3,图3为本发明实施例提供的资源数据防篡改方法的另一流程示意图,该资源数据防篡改方法应用于服务器中,该方法通过安装于服务器中的应用软件进行执行。
如图3所示,该方法包括步骤S201~S208。
S201、当获取到加密核心数据时,缓存所述加密核心数据,并根据所述加密核心数据相应的用户端信息获取动态组合公钥;其中,所述动态组合公钥包括用户端终端型号的局部数据、和用户端联系号码的局部数据。
在本实施例中,当服务器接收到用户端因响应应用更新指令而发送的加密核心数据后,先是缓存该加密核心数据。由于服务器是可以根据与该用户端对应的历史访问信息而获取到用户端信息,从用户端信息中是可以提取出用户端终端型号和用户端联系号码,此时可以从从用户端信息中的用户端终端型号和用户端联系号码分别提取出前4位,组成与动态组合私钥相对应的动态组合公钥,从而可以用于加密核心数据的解密。
S202、根据所述动态组合公钥和预先存储的第一公钥依次对所述加密核心数据进行二次解密,得到解密核心数据。
在本实施例中,由于加密核心数据是经过了两次加密的加密数据,此时对其进行解密时也是需要进行两次解密。
在一实施例中,步骤S202包括:
通过所述动态组合公钥对所述加密核心数据进行第一次解密,得到第一次解密数据;
通过预先存储的与第一私钥相对应的第一公钥对所述第一次解密数据进行第二次解密,得到解密核心数据。
在本实施例中,首先是通过所述动态组合公钥对所述加密核心数据进行第一次解密,得到第一次解密数据。然后通过预先存储的,与所述第一私钥相对应的第一公钥对所述第一次解密数据进行第二次解密,得到解密核心数据。此时在服务器中可以得到包括更新包包名、用户签名、用户唯一识别信息、用户端终端型号的解密核心数据。
S203、获取已存储的公钥,将所述公钥根据预先存储的拆分策略进行公钥分拆,得到拆分公钥集合;其中,所述拆分公钥集合中包括至少2个拆分子公钥。
在本实施例中,为了提升服务器向用户端发送更新资源包的数据安全性,可以是采用公钥拆分策略对公钥进行拆分,也即通过将对待更新资源包进行加密的公钥(这一公钥是区别与之前的第一公钥)进行一个拆分,得到至少2个拆分子公钥,然后将这拆分得到的多个拆分子公钥中的其中1个拆分子公钥先发送至用户端进行存储,之后再将剩余的拆分子公钥与后续随机生成的随机标识符组合并与加密后的待更新资源包一同发送至用户端。
在一实施例中,所述拆分策略用于将所述公钥平均拆分为两个拆分子公钥,所述将所述公钥根据预先存储的拆分策略进行公钥分拆,得到拆分公钥集合,包括:
将所述公钥根据字符总个数进行平均拆分得到2个拆分子公钥,以组成拆分公钥集合。
在本实施例中,若所述公钥包括128个字符,则将其划分为2个64字符的拆分子公钥,更具体是所述公钥的前64个字符划分至第一拆分子公钥,所述公钥的后64个字符划分至第二拆分子公钥。通过这一公钥拆分操作,可以灵活的将公钥分为多次分别发送至用户端以提高数据的安全性。
S204、随机获取所述拆分公钥集合的其中一个拆分子公钥作为第一目标拆分子公钥,将所述第一目标拆分子公钥发送至用户端;其中,所述拆分公钥集合中除第一目标拆分子公钥之外的其他拆分子公钥组成第二目标拆分子公钥。
在本实施例中,可以先从所述拆分公钥集合随机选取一个拆分子公钥作为第一目标拆分子公钥(例如上述举例的第一拆分子公钥),这样所述拆分公钥集合中剩余的数据组成第二目标拆分子公钥仍继续保存在服务器中暂不发送。此时,先被发送至用户端中的第一目标拆分子公钥是为了更方便与后续发送的第二目标拆分子公钥在用户端中完成重新组合。
S205、若确定所述解密核心数据通过验证,随机生成随机标识符,并获取所述第二目标拆分子公钥,通过所述随机标识符与所述第二目标拆分子公钥组成更新后目标拆分子公钥。
在本实施例中,对所述解密核心数据进行验证时,是将所述解密核心数据中包括的用户唯一识别信息、用户端终端型号,与用户端信息中包括的用户唯一识别信息、用户端终端型号进行比对,若两者完全相同则可确定所述解密核心数据通过验证。
此时,可以通过随机算法生成一个随机标识符(例如随机标识符A),将其与之前得到的所述第二目标拆分子公钥,由随机标识符A+所述第二目标拆分子公钥组成更新后目标拆分子公钥。
S206、获取待更新资源包及已存储的私钥,将所述待更新资源包通过所述私钥进行加密,得到加密后更新资源包;其中,所述公钥可对通过所述私钥加密的数据进行解密。
在本实施例中,之前的数据处理均是针对密钥,此时需对服务器发送至用户端的待更新资源包进行处理,具体是将所述待更新资源包通过所述私钥进行加密,得到加密后更新资源包。此处的私钥与之前被拆分为多个拆分子公钥的公钥是相对应的,即所述公钥可对通过所述私钥加密的数据进行解密。此处无需对更新后目标拆分子公钥一同进行加密,是因为更新后目标拆分子公钥的数据安全性本身就已经较高,无需再进行一次加密,降低了加密的复杂程度。
S207、将所述更新后目标拆分子公钥和加密后更新资源包发送至用户端信息相应的用户端。
在本实施例中,当通过私钥完成了对待更新资源包的加密而得到加密后更新资源包后,此时服务器可以将加密后更新资源包和所述更新后目标拆分子公钥同时发送至用户端,以使用户端在接收到更新资源包后进行应用程序的资源更新。
S208、当已接收到用户端发送的随机标识符和更新完成通知信息,且确定用户端发送的随机标识符与本地的随机标识符相同,将所述更新完成通知信息进行存储。
在本实施例中,当在用户端中基于解密后的待更新资源包完成了应用更新时,用户端会在得到的随机标识符和更新完成通知信息一同发送至服务器。服务器在接收到了用户端发送的随机标识符和更新完成通知信息,且确定用户端发送的随机标识符与本地的随机标识符相同,则表示用户端此次更新所基于的待更新资源包是没有被拦截和恶意篡改,可将用于表示用户端完成此次更新的所述更新完成通知信息进行存储,以作为更新历史记录存储。
在一实施例中,步骤S208之后还包括:
S209、若确定满足预设的应用数据获取指令生成条件时,生成应用数据获取指令并发送至用户端;其中,所述应用数据获取指令用于获取应用界面截图或应用功能模块代码。
在本实施例中,为了随时可对用户端中的应用程序代码或图片等核心资源数据是否发生篡改进行检测,可以在服务器中预先设置一个应用数据获取指令生成条件,例如将该应用数据获取指令生成条件设置为当前系统时间为中午12点整,这样每天一到中午12点整均会满足应用数据获取指令生成条件,从而生成一个应用数据获取指令并发送至用户端,从而触发在用户端中获取应用界面截图或应用功能模块代码的流程。
S210、接收应用待检测数据,对所述应用待检测数据进行合法性验证,得到验证结果。
在本实施例中,例如当基于应用数据获取指令获取的图片返回到服务器的时候,服务器根据获取到的图片进行大数据图形识别,并与预先放入的图片来判定是否是属于自己的页面还是被篡改的页面。
或者是当基于应用数据获取指令获取的应用功能模块代码,并与原本的代码进行比对来判定是否是属于自己的页面还是被篡改的页面。
当所述应用待检测数据为验证通过时,则得到验证通过的验证结果。当所述应用待检测数据为验证未通过时,则得到验证未通过的验证结果。
S211、若确定验证结果为验证未通过时,将应用验证未通过通知信息及应用禁用指令发送至用户端。
在本实施例中,若确定验证结果为验证未通过时,表示应用程序有被篡改,此时为了及时保护用户数据安全,将应用验证未通过通知信息及应用禁用指令发送至用户端以实现对应用程序的及时禁用。
该方法实现了在应用程序的资源更新过程中需要将若干个目标拆分子公钥进行组合后得到公钥对加密后资源包进行解密从而得到待更新资源包,而且还可以获取此次更新得到的随机标识符用于本次更新的双方验证,提高了应用程序更新资源的过程中数据安全性。
本发明实施例还提供一种资源数据防篡改系统,该资源数据防篡改系统包括用户端及服务器,用户端用于执行前述资源数据防篡改方法中步骤S101~S107记载的实施例,服务器用于执行前述资源数据防篡改方法中步骤S201~S208记载的实施例。具体地,请参阅图4,图4是本发明实施例提供的资源数据防篡改系统的示意性框图。
如图4所示,资源数据防篡改系统10包括:用户端100及服务器200。
其中,如图4所示,用户端100包括第一重加密单元101、第二重加密单元102、加密核心数据发送单元103、第一接收单元104、第二接收单元105、公钥解密单元106、通知信息生成单元107。
第一重加密单元101,用于响应于应用更新指令,根据所述应用更新指令获取用户端核心数据,将所述用户端核心数据中的每一个子数据通过预设的第一私钥进行加密,得到第一重加密数据;其中,所述用户端核心数据包括更新包包名、用户签名、用户唯一识别信息、用户端终端型号,所述第一重加密数据中的第一重加密子数据与所述用户端核心数据中的子数据一一对应。
在本实施例中,当用户为了对用户端上安装的应用程序(如采用混合式开发方式开发的应用程序,该混合式开发方式中一般包括含h5,ReactNative,Weex开发等)进行应用更新时,为了提高数据安全性,可以是先获取用户端核心数据,将所述用户端核心数据中的每一个子数据进行加密,得到第一重加密数据。
具体的,所述用户端核心数据包括更新包包名、用户签名、用户唯一识别信息、用户端终端型号。这些信息均可以在用户端本地的so库中获取(so库对应的.so文件是一种二进制文件,一般存在于Android Studio工程的main/jniLibs/ABI目录中)。为了提高数据安全性,可以通过同一个私钥(如第一私钥)对更新包包名、用户签名、用户唯一识别信息、用户端终端型号分别进行加密,得到对应个数的第一重加密子数据,从而组成第一重加密数据。例如,所述用户端核心数据包括更新包包名、用户签名、用户唯一识别信息、用户端终端型号中包括4个子数据,将这4个子数据均通过第一私钥进行加密得到4个第一重加密子数据,从而由4个第一重加密子数据组成。
第二重加密单元102,用于将所述第一重加密数据根据动态组合私钥进行加密,得到第二重加密数据;其中,所述动态组合私钥包括用户端终端型号的局部数据、和用户端联系号码的局部数据。
在本实施例中,继续参照上述列举的实例可知,第一重加密数据由4个第一重加密子数据组成,更具体是按照一定的数据格式拼接而成,可以形象的理解为第一重加密数据有一个数据body,在该数据body中容纳了4个第一重加密子数据,此时还可以基于动态组合私钥对所述第一重加密数据进行第二次加密,得到第二重加密数据。
在一实施例中,用户端100还包括:
动态组合私钥获取单元,用于获取所述用户端终端型号的前N1位并获取所述用户端联系号码的前N2位,组成动态组合私钥;;其中,N1为预设的第一位数值,N2为预设的第二位数值。
具体的,为了更快速的获取动态组合私钥,可以从用户端终端型号选取局部数据(例如用户端终端型号的前4位),同时从用户端联系号码选取局部数据(例如用户端联系号码的前4位),由用户端终端型号的局部数据和用户端联系号码的局部数据拼接成动态组合私钥,以对所述第一重加密数据进行第二次加密,得到第二重加密数据。
加密核心数据发送单元103,用于将所述第二重加密数据作为加密核心数据发送至服务器。
在本实施例中,当在用户端中完成了对用户端核心数据的双重加密得到第二重加密数据后,将所述第二重加密数据作为加密核心数据发送至服务器,通过发送第二重加密数据作为对应用更新指令的响应。
第一接收单元104,用于接收并存储服务器发送的第一目标拆分子公钥。
在本实施例中,当在服务器中完成了对公钥的拆分后,先是将其中的第一目标拆分子公钥先发送至用户端,以由用户端对第一目标拆分子公钥进行存储。之后再继续检测是否接收到第二目标拆分子公钥,即可进一步判断是否能在用户端中基于第一目标拆分子公钥和第二目标拆分子公钥重新组合为公钥,从而实现对加密后资源包进行解密。
第二接收单元105,用于若接收到更新后目标拆分子公钥和加密后更新资源包,获取所述更新后目标拆分子公钥中包括的随机标识符与第二目标拆分子公钥。
在本实施例中,当用户端接收到服务器发送的所述更新后目标拆分子公钥和所述加密后更新资源包后,此时无需先对加密后更新资源包进行解密,这是因为还缺少完整的公钥对其进行解密。此时,在用户端中是先获取所述更新后目标拆分子公钥中包括的随机标识符与第二目标拆分子公钥,由于之前用户端接收并存储了公钥的另一部分(即第一目标拆分子公钥),故可以在用户端中根据所述第一目标拆分子公钥与所述第二目标拆分子公钥进行下一步的公钥组合处理,以得到完整的公钥。
公钥解密单元106,用于将所述第一目标拆分子公钥与所述第二目标拆分子公钥进行组合得到公钥,通过所述公钥对所述加密后资源包进行解密,得到待更新资源包。
在本实施例中,在用户端中可以所述第一目标拆分子公钥置于所述第二目标拆分子公钥之前的顺序进行拼接组合,从而还原得到公钥。通过所述公钥即可实现对所述加密后资源包进行解密,得到待更新资源包,通过所述待更新资源包在用户端中对应进行应用程序中某一个或多个功能模块的更新。
通知信息生成单元107,用于当检测到已根据所述待更新资源包完成更新时,生成更新完成通知信息,将所述随机标识符和所述更新完成通知信息发送至服务器。
在本实施例中,当在用户端中根据所述待更新资源包完成更新时,生成更新完成通知信息,这一更新完成通知信息并不是单独发送至服务器,而是与之前用户端接收到的所述随机标识符和所述更新完成通知信息一同发送至服务器。通过这一方式,可将随机标识符作为一个认证标识符来表示用户端此次更新的数据是基于服务器发送的,并没有被其他服务器或终端进行拦截和恶意篡改。
在一实施例中,用户端100还包括:
应用数据获取单元,用于当检测到应用数据获取指令时,根据所述应用数据获取指令获取应用待检测数据,将所述应用待检测数据发送至服务器;其中,所述应用数据获取指令用于获取应用界面截图或应用功能模块代码;
不可用状态切换单元,用于当检测到应用验证未通过通知信息时,将所述待更新资源包对应的应用切换为不可用状态。
在本实施例中,由于应用程序在上一次更新完成之后,在下一次更新之前,用户在使用应用程序的过程中还有可能存在代码或页面等资源被篡改的可能(例如用户端连接了某一植入了木马程序的热点),为了确保应用程序的数据安全,可以由服务器不定时的发起应用数据获取指令,或者是用户端本地不定时的发起应用数据获取指令。只要在用户端中检测到应用数据获取指令时,根据所述应用数据获取指令获取应用待检测数据,将所述应用待检测数据发送至服务器进行合法性验证。
一旦用户端上传的应用待检测数据经过服务器识别与正常的应用待检测数据不相同时,则可判定未通过验证,并将应用验证未通过通知信息发送至用户端。当用户端检测到应用验证未通过通知信息时,将所述待更新资源包对应的应用切换为不可用状态,实现对该应用程序的及时禁用以确保数据安全。
之后在服务器的角度描述技术方案。
如图4所示,服务器200包括动态组合公钥获取单元201、二次解密单元202、公钥拆分单元203、第一发送单元204、第二发送单元205、私钥加密单元206、加密资源发送单元207、通知信息存储单元208。
动态组合公钥获取单元201,用于当获取到加密核心数据时,缓存所述加密核心数据,并根据所述加密核心数据相应的用户端信息获取动态组合公钥;其中,所述动态组合公钥包括用户端终端型号的局部数据、和用户端联系号码的局部数据。
在本实施例中,当服务器接收到用户端因响应应用更新指令而发送的加密核心数据后,先是缓存该加密核心数据。由于服务器是可以根据与该用户端对应的历史访问信息而获取到用户端信息,从用户端信息中是可以提取出用户端终端型号和用户端联系号码,此时可以从从用户端信息中的用户端终端型号和用户端联系号码分别提取出前4位,组成与动态组合私钥相对应的动态组合公钥,从而可以用于加密核心数据的解密。
二次解密单元202,用于根据所述动态组合公钥和预先存储的第一公钥依次对所述加密核心数据进行二次解密,得到解密核心数据。
在本实施例中,由于加密核心数据是经过了两次加密的加密数据,此时对其进行解密时也是需要进行两次解密。
在一实施例中,二次解密单元202包括:
第一解密单元,用于通过所述动态组合公钥对所述加密核心数据进行第一次解密,得到第一次解密数据;
第二解密单元,用于通过预先存储的与第一私钥相对应的第一公钥对所述第一次解密数据进行第二次解密,得到解密核心数据。
在本实施例中,首先是通过所述动态组合公钥对所述加密核心数据进行第一次解密,得到第一次解密数据。然后通过预先存储的,与所述第一私钥相对应的第一公钥对所述第一次解密数据进行第二次解密,得到解密核心数据。此时在服务器中可以得到包括更新包包名、用户签名、用户唯一识别信息、用户端终端型号的解密核心数据。
公钥拆分单元203,用于获取已存储的公钥,将所述公钥根据预先存储的拆分策略进行公钥分拆,得到拆分公钥集合;其中,所述拆分公钥集合中包括至少2个拆分子公钥。
在本实施例中,为了提升服务器向用户端发送更新资源包的数据安全性,可以是采用公钥拆分策略对公钥进行拆分,也即通过将对待更新资源包进行加密的公钥(这一公钥是区别与之前的第一公钥)进行一个拆分,得到至少2个拆分子公钥,然后将这拆分得到的多个拆分子公钥中的其中1个拆分子公钥先发送至用户端进行存储,之后再将剩余的拆分子公钥与后续随机生成的随机标识符组合并与加密后的待更新资源包一同发送至用户端。
在一实施例中,所述拆分策略用于将所述公钥平均拆分为两个拆分子公钥,所述公钥拆分单元203还用于:
将所述公钥根据字符总个数进行平均拆分得到2个拆分子公钥,以组成拆分公钥集合。
在本实施例中,若所述公钥包括128个字符,则将其划分为2个64字符的拆分子公钥,更具体是所述公钥的前64个字符划分至第一拆分子公钥,所述公钥的后64个字符划分至第二拆分子公钥。通过这一公钥拆分操作,可以灵活的将公钥分为多次分别发送至用户端以提高数据的安全性。
第一发送单元204,用于随机获取所述拆分公钥集合的其中一个拆分子公钥作为第一目标拆分子公钥,将所述第一目标拆分子公钥发送至用户端;其中,所述拆分公钥集合中除第一目标拆分子公钥之外的其他拆分子公钥组成第二目标拆分子公钥。
在本实施例中,可以先从所述拆分公钥集合随机选取一个拆分子公钥作为第一目标拆分子公钥(例如上述举例的第一拆分子公钥),这样所述拆分公钥集合中剩余的数据组成第二目标拆分子公钥仍继续保存在服务器中暂不发送。此时,先被发送至用户端中的第一目标拆分子公钥是为了更方便与后续发送的第二目标拆分子公钥在用户端中完成重新组合。
第二发送单元205,用于若确定所述解密核心数据通过验证,随机生成随机标识符,并获取所述第二目标拆分子公钥,通过所述随机标识符与所述第二目标拆分子公钥组成更新后目标拆分子公钥。
在本实施例中,对所述解密核心数据进行验证时,是将所述解密核心数据中包括的用户唯一识别信息、用户端终端型号,与用户端信息中包括的用户唯一识别信息、用户端终端型号进行比对,若两者完全相同则可确定所述解密核心数据通过验证。
此时,可以通过随机算法生成一个随机标识符(例如随机标识符A),将其与之前得到的所述第二目标拆分子公钥,由随机标识符A+所述第二目标拆分子公钥组成更新后目标拆分子公钥。
私钥加密单元206,用于获取待更新资源包及已存储的私钥,将所述待更新资源包通过所述私钥进行加密,得到加密后更新资源包;其中,所述公钥可对通过所述私钥加密的数据进行解密。
在本实施例中,之前的数据处理均是针对密钥,此时需对服务器发送至用户端的待更新资源包进行处理,具体是将所述待更新资源包通过所述私钥进行加密,得到加密后更新资源包。此处的私钥与之前被拆分为多个拆分子公钥的公钥是相对应的,即所述公钥可对通过所述私钥加密的数据进行解密。此处无需对更新后目标拆分子公钥一同进行加密,是因为更新后目标拆分子公钥的数据安全性本身就已经较高,无需再进行一次加密,降低了加密的复杂程度。
加密资源发送单元207,用于将所述更新后目标拆分子公钥和加密后更新资源包发送至用户端信息相应的用户端。
在本实施例中,当通过私钥完成了对待更新资源包的加密而得到加密后更新资源包后,此时服务器可以将加密后更新资源包和所述更新后目标拆分子公钥同时发送至用户端,以使用户端在接收到更新资源包后进行应用程序的资源更新。
通知信息存储单元208,用于当已接收到用户端发送的随机标识符和更新完成通知信息,且确定用户端发送的随机标识符与本地的随机标识符相同,将所述更新完成通知信息进行存储。
在本实施例中,当在用户端中基于解密后的待更新资源包完成了应用更新时,用户端会在得到的随机标识符和更新完成通知信息一同发送至服务器。服务器在接收到了用户端发送的随机标识符和更新完成通知信息,且确定用户端发送的随机标识符与本地的随机标识符相同,则表示用户端此次更新所基于的待更新资源包是没有被拦截和恶意篡改,可将用于表示用户端完成此次更新的所述更新完成通知信息进行存储,以作为更新历史记录存储。
在一实施例中,服务器200还包括:
应用数据获取指令生成单元,用于若确定满足预设的应用数据获取指令生成条件时,生成应用数据获取指令并发送至用户端;其中,所述应用数据获取指令用于获取应用界面截图或应用功能模块代码。
在本实施例中,为了随时可对用户端中的应用程序代码或图片等核心资源数据是否发生篡改进行检测,可以在服务器中预先设置一个应用数据获取指令生成条件,例如将该应用数据获取指令生成条件设置为当前系统时间为中午12点整,这样每天一到中午12点整均会满足应用数据获取指令生成条件,从而生成一个应用数据获取指令并发送至用户端,从而触发在用户端中获取应用界面截图或应用功能模块代码的流程。
合法性验证单元,用于接收应用待检测数据,对所述应用待检测数据进行合法性验证,得到验证结果。
在本实施例中,例如当基于应用数据获取指令获取的图片返回到服务器的时候,服务器根据获取到的图片进行大数据图形识别,并与预先放入的图片来判定是否是属于自己的页面还是被篡改的页面。
或者是当基于应用数据获取指令获取的应用功能模块代码,并与原本的代码进行比对来判定是否是属于自己的页面还是被篡改的页面。
当所述应用待检测数据为验证通过时,则得到验证通过的验证结果。当所述应用待检测数据为验证未通过时,则得到验证未通过的验证结果。
禁用指令发送单元,用于若确定验证结果为验证未通过时,将应用验证未通过通知信息及应用禁用指令发送至用户端。
在本实施例中,若确定验证结果为验证未通过时,表示应用程序有被篡改,此时为了及时保护用户数据安全,将应用验证未通过通知信息及应用禁用指令发送至用户端以实现对应用程序的及时禁用。
该系统实现了在应用程序的资源更新过程中需要将若干个目标拆分子公钥进行组合后得到公钥对加密后资源包进行解密从而得到待更新资源包,而且还可以获取此次更新得到的随机标识符用于本次更新的双方验证,提高了应用程序更新资源的过程中数据安全性。
上述资源数据防篡改系统可以实现为计算机程序的形式,该计算机程序可以在如图5所示的计算机设备上运行。
请参阅图5,图5是本发明实施例提供的计算机设备的示意性框图。该计算机设备500是服务器,也可以是终端。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。
参阅图5,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括存储介质503和内存储器504。
该存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行资源数据防篡改方法。
该处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。
该内存储器504为存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行资源数据防篡改方法。
该网络接口505用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图5中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现本发明实施例公开的资源数据防篡改方法。
本领域技术人员可以理解,图5中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图5所示实施例一致,在此不再赘述。
应当理解,在本发明实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本发明的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质,也可以为易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现本发明实施例公开的资源数据防篡改方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。