CN109194625B - 一种基于云端服务器的客户端应用保护方法、装置及存储介质 - Google Patents

一种基于云端服务器的客户端应用保护方法、装置及存储介质 Download PDF

Info

Publication number
CN109194625B
CN109194625B CN201810906090.9A CN201810906090A CN109194625B CN 109194625 B CN109194625 B CN 109194625B CN 201810906090 A CN201810906090 A CN 201810906090A CN 109194625 B CN109194625 B CN 109194625B
Authority
CN
China
Prior art keywords
client application
key
client
cloud server
encrypted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810906090.9A
Other languages
English (en)
Other versions
CN109194625A (zh
Inventor
兰书俊
苏玉海
蔡阿川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Meiya Pico Information Co Ltd
Original Assignee
Xiamen Meiya Pico Information Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen Meiya Pico Information Co Ltd filed Critical Xiamen Meiya Pico Information Co Ltd
Priority to CN201810906090.9A priority Critical patent/CN109194625B/zh
Publication of CN109194625A publication Critical patent/CN109194625A/zh
Application granted granted Critical
Publication of CN109194625B publication Critical patent/CN109194625B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2212/00Encapsulation of packets

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供了一种基于云端服务器的客户端应用保护方法、装置及存储介质,该方法包括:获取步骤,客户端应用从云端服务器获取经加密压缩后的核心代码;组装步骤,客户端应用将获取的经加密压缩后的核心代码进行处理得到解密解压缩后的核心代码,并将解密解压缩后的核心代码导入客户端应用形成完整版的客户端应用。本发明将应用的核心代码在云端服务器上进行加密压缩存储,发布的应用仅包括登录界面等部分非核心功能,从而防止破解者对获取应用进行破解,通过HOOK动态分段加载从云端服务器获取的解密DEX和SO文件,从而防止核心代码被逆向工具获取;用于加密压缩数据的解密密钥是通过云端服务器根据客户端的运行环境值生成,进一步提高了安全性。

Description

一种基于云端服务器的客户端应用保护方法、装置及存储 介质
技术领域
本发明涉及系统安全技术领域,特别是一种基于云端服务器的客户端应用保护方法、装置及存储介质。
背景技术
Android是目前最流行的智能手机操作系统,远超过苹果,黑莓等智能手机操作系统。进而吸引了越来越多的黑客进行Android操作系统程序的破解。因为Android应用程序在各个渠道中发行,人们可以很轻易的获取到需要的应用程序,进行分析破解程序的实现方式,实现逻辑等。现有些安全解决方案是对应用程序进行加壳处理,防止应用程序的被人破解,不过因为网络的流通,很多加壳原理都被人熟知,同样存在安全隐患。
可见现有技术的缺陷在于:Android上的客户端应用程序可以通过各种渠道获取,即使对该应用程序进行了加壳,但是因为加壳原理可分析,故安全性还是有问题,何况更多的应用程序是没有加壳的,可以通过逆向工具很容易获得程序的源码,暴露程序的实现逻辑,比如:加解密函数等,导致系统的安全性很低,容易造成用户数据的泄露。
发明内容
本发明针对上述现有技术中的缺陷,提出了如下技术方案。
一种基于云端服务器的客户端应用保护方法,该方法包括:
获取步骤,所述客户端应用从所述云端服务器获取经加密压缩后的核心代码;
组装步骤,所述客户端应用将获取的经加密压缩后的核心代码进行处理得到解密解压缩后的核心代码,并将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用。
更进一步地,所述应用为安卓系统的应用。
更进一步地,所述方法还包括:验证步骤,所述云端服务器基于所述客户端应用的请求进行客户端运行环境的安全性和所述客户端应用合法性及完整性的验证;其中,所述验证步骤在所述获取步骤之前进行。
更进一步地,所述云端服务器将经加密压缩后的核心代码与应用程序的版本对应存储在数据库中。
更进一步地,所述验证步骤包括:
注册步骤,将在所述客户端应用注册时输入的用户名和用户密码及采集的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值进行压缩使用第一加密算法进行加密生成第一加密数据包,计算所述用户密码的md5值、所述客户端应用的签名及所述客户端应用的完整性的md5值,将所述用户密码的md5值、客户端应用的签名及所述客户端应用的完整性的md5值进行压缩后使用第二加密算法进行加密生成第二加密数据包,将第一加密数据包、第二加密数据包、第一加密算法的密钥和第二加密算法的密钥封装为所述客户端应用的请求发送至所述云端服务器。
解密步骤,所述云端服务器使用第一加密算法的密钥和第二加密算法的密钥对第一加密数据包和第二加密数据包进行解密后进行解压缩,将获得的用户名、用户密码及对应的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值对应存储在数据中;
判断步骤,根据系统是否root状态值和/或系统是否被HOOK状态值判断系统的运行是否安全,如果是,基于云端应用服务器中存储的各个渠道发放的客户端应用的完整性校验值和签名判断判断所述客户端是否被篡改和/或反编译,如果则通过验证,如果是则向用户发出警告信息。
更进一步地,所述获取步骤包括:
加密步骤,所述云端服务器根据用户名、用户密码、imei、pin码、cpu和/或系统内核版本号及一个随机数生成一个加密核心代码的密钥,并将所述密钥与所述客户端应用对应存储在数据库中,使用第三加密算法和加密核心代码的密钥对压缩后的核心代码进行加密生成所述经加密压缩后的核心代码;
发送步骤,将所述经加密压缩后的核心代码和解密核心代码的密钥发送至所述客户端应用。
更进一步地,将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用为:判断解密解压出的数据格式类型,如果数据格式类型是DEX数据,则进行按照DEX格式进行组合,然后通过HOOK的DEX动态导入函数分段导入,如果数据格式类型是SO文件,则按照elf格式进行组装,然后通过HOOK的dlopen函数进行组装动态导入。
更进一步地,所述解密核心代码的密钥一次有效,经加密压缩后的核心代码下载后存储在所述客户端上,当用户再次使用该客户端应用时,所述云端服务器仅向所述客户端发送解密核心代码的密钥。
本发明还提出了一种基于云端服务器的客户端应用保护装置,该装置包括:
获取模块,所述客户端应用从所述云端服务器获取经加密压缩后的核心代码;
组装模块,所述客户端应用将获取的经加密压缩后的核心代码进行处理得到解密解压缩后的核心代码,并将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用。
更进一步地,所述应用为安卓系统的应用。
更进一步地,所述装置还包括:验证模块,所述云端服务器基于所述客户端应用的请求进行客户端运行环境的安全性和所述客户端应用合法性及完整性的验证;其中,所述验证模块的操作在所述获取模块的操作之前进行。
更进一步地,所述云端服务器将经加密压缩后的核心代码与应用程序的版本对应存储在数据库中。
更进一步地,所述验证模块包括:
注册模块,将在所述客户端应用注册时输入的用户名和用户密码及采集的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值进行压缩使用第一加密算法进行加密生成第一加密数据包,计算所述用户密码的md5值、所述客户端应用的签名及所述客户端应用的完整性的md5值,将所述用户密码的md5值、客户端应用的签名及所述客户端应用的完整性的md5值进行压缩后使用第二加密算法进行加密生成第二加密数据包,将第一加密数据包、第二加密数据包、第一加密算法的密钥和第二加密算法的密钥封装为所述客户端应用的请求发送至所述云端服务器。
解密模块,所述云端服务器使用第一加密算法的密钥和第二加密算法的密钥对第一加密数据包和第二加密数据包进行解密后进行解压缩,将获得的用户名、用户密码及对应的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值对应存储在数据中;
判断模块,根据系统是否root状态值和/或系统是否被HOOK状态值判断系统的运行是否安全,如果是,基于云端应用服务器中存储的各个渠道发放的客户端应用的完整性校验值和签名判断判断所述客户端是否被篡改和/或反编译,如果则通过验证,如果是则向用户发出警告信息。
更进一步地,所述获取模块包括:
加密模块,所述云端服务器根据用户名、用户密码、imei、pin码、cpu和/或系统内核版本号及一个随机数生成一个加密核心代码的密钥,并将所述密钥与所述客户端应用对应存储在数据库中,使用第三加密算法和加密核心代码的密钥对压缩后的核心代码进行加密生成所述经加密压缩后的核心代码;
发送模块,将所述经加密压缩后的核心代码和解密核心代码的密钥发送至所述客户端应用。
更进一步地,将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用为:判断解密解压出的数据格式类型,如果数据格式类型是DEX数据,则进行按照DEX格式进行组合,然后通过HOOK的DEX动态导入函数分段导入,如果数据格式类型是SO文件,则按照elf格式进行组装,然后通过HOOK的dlopen函数进行组装动态导入。
更进一步地,所述解密核心代码的密钥一次有效,经加密压缩后的核心代码下载后存储在所述客户端上,当用户再次使用该客户端应用时,所述云端服务器仅向所述客户端发送解密核心代码的密钥。
本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行上述之任一的方法。
本发明的技术效果为:本发明将应用的核心实现代码在云端服务器上进行加密压缩存储,通过应用市场发布的客户端应用仅包括登录界面等部分非核心功能,从而防止破解者通过渠道获取应用程序进行破解,即使破解其获取的应用程序也是残缺的;通过HOOK系统导入DEX和SO文件的函数,动态分段加载从云端服务器获取的解密DEX和SO文件,从而防止包含核心DEX、SO文件被逆向工具获取;用于加密压缩数据的解密密钥是通过云端服务器根据客户端的运行环境值生成,进一步提高了安全性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。
图1是根据本发明的实施例的一种基于云端服务器的客户端应用保护方法的流程图。
图2是根据本发明的实施例的验证步骤的流程图。
图3是根据本发明的实施例的获取步骤的流程图。
图4是根据本发明的实施例的一种基于云端服务器的客户端应用保护装置的结果图。
图5是根据本发明的实施例的验证模块的结构图。
图6是根据本发明的实施例的获取模块的结构图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
下面结合图1-3详细描述本发明的一种基于云端服务器的客户端应用保护装置。
图1示出了本发明的一种基于云端服务器的客户端应用保护方法,该方法包括:
获取步骤S11,所述客户端应用从所述云端服务器获取经加密压缩后的核心代码。
组装步骤S12,所述客户端应用将获取的经加密压缩后的核心代码进行处理得到解密解压缩后的核心代码,并将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用。
在本发明的一个实施例所述应用为安卓系统的应用,当然本发明的方法也适用于其他系统中,如apple系统、windows系统等等。
在本发明的一个实施例中,如图1所示,所述方法还包括:验证步骤S10,所述云端服务器基于所述客户端应用的请求进行客户端运行环境的安全性和所述客户端应用合法性及完整性的验证;其中,所述验证步骤S10在所述获取步骤S11之前进行。
本发明的重要发明点之一是把一部分包含核心代码的DEX、SO文件加密压缩存储在云端应用服务器(也称为云端服务器)中,各种渠道发布的版本只有一部分包含登录验证,数据解密的函数等代码。当客户端安装新的应用时候注册用户,云端应用服务器把加密压缩后的数据下发到手机应用客户端,然后在手机应用客户端通过云端应用服务器下发的密钥进行解密解压,再动态分段加载DEX,SO文件。
云端应用服务器中存储各种版本应用程序的加密压缩数据,如应用程序的关键实现逻辑函数,加密压缩保存在云端应用服务器中。当应用程序更新不同的版本时候,云端应用服务器只需要更新各版本的关键实现逻辑代码的加密压缩数据。云端服务器还可以执行加密算法(一般为对称加密算法),加密应用程序的核心逻辑代码,同时也可以对加密后数据进行压缩。
基于上面的介绍,下面介绍本发明的验证步骤S10的具体操作,这是本发明的关键发明点之一,如图2所示,其包括:
注册步骤S201,将在所述客户端应用注册时输入的用户名和用户密码及采集的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值进行压缩使用第一加密算法进行加密生成第一加密数据包,计算所述用户密码的md5值、所述客户端应用的签名及所述客户端应用的完整性的md5值,将所述用户密码的md5值、客户端应用的签名及所述客户端应用的完整性的md5值进行压缩后使用第二加密算法进行加密生成第二加密数据包,将第一加密数据包、第二加密数据包、第一加密算法的密钥和第二加密算法的密钥封装为所述客户端应用的请求发送至所述云端服务器。
客户端的应用程序DEX中仅设计了如登录界面、注册界面等一部分不关键的逻辑函数。用于接收用户输入的用于注册的用户账号(也称为用户名),用户密码的输入值等等。当用户注册时候采集当前系统的运行环境数据,如imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值等,然后进行压缩后使用aes(即第一加密算法)进行加密(密钥是协商的同时隐藏起来)生成第一加密数据包。
然后计算所述用户密码的md5值、所述客户端应用的签名及所述客户端应用的完整性的md5值,将所述用户密码的md5值、客户端应用的签名及所述客户端应用的完整性的md5值进行压缩后使用rsa加密算法的公钥进行加密(rsa,aes加密是举例说明,公钥保存在应用中)生成第二加密数据包。最后将使用算法把第一加密数据包、第二加密数据包及aes加密、rsa加密的数据密钥等合成一个pack包作为所述客户端应用的请求,发送给云端服务器。
解密步骤S202,所述云端服务器使用第一加密算法的密钥和第二加密算法的密钥对第一加密数据包和第二加密数据包进行解密后进行解压缩,将获得的用户名、用户密码及对应的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值对应存储在数据中。
所述云端服务器接收到作为所述客户端应用的请求的pack包进行解密加压缩,云端应用服务器在每个手机安装应用时候,通过手机客户端的应用程序收集运行环境的信息,在服务器中建立一个手机端运行环境的映射关系,即将获得的用户名、用户密码及对应的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值对应存储在数据中。
判断步骤S203,根据系统是否root状态值和/或系统是否被HOOK状态值判断系统的运行是否安全,如果是,基于云端应用服务器中存储的各个渠道发放的客户端应用的完整性校验值和签名判断判断所述客户端是否被篡改和/或反编译,如果则通过验证,如果是则向用户发出警告信息。
云端服务器判断数据库中每个手机环境的基准值(即判断系统是否root状态值和/或系统是否被HOOK状态值)来确实手机环境是否安全,并验证客户端安装应用程序是否合法,是否完整,云端服务器中需要存储各个渠道发放应用程序的完整性校验值和签名。当手机端应用程序申请获取加密压缩数据时候,判断手机端安装的应用程序是否被篡改及是否被反编译。通过先验证客户端的环境是否安全,再验证客户端应用是否合法有效,大大提高了客户端应用执行前的安全性,确保了用户数据的安全。客户端可以运行在智能手机、平板电脑等电子设备上。
客户端被验证安全后,客户端应用向云端服务器获取加密压缩的核心代码段,这也是本发明的重要发明点之一,如图3所示,所述获取步骤S11包括:
加密步骤S301,所述云端服务器根据用户名、用户密码、imei、pin码、cpu和/或系统内核版本号及一个随机数生成一个加密核心代码的密钥,并将所述密钥与所述客户端应用对应存储在数据库中,使用第三加密算法和加密核心代码的密钥对压缩后的核心代码进行加密生成所述经加密压缩后的核心代码。
客户端被验证安全后,确定下发给对应手机客户端适当应用程序版本的加密压缩数据,云端应用服务器生成每个手机客户端应用程序数据加密解密的密钥:云端应用服务器根据手机客户端应用程序采集的对应手机端的信息,比如imei,pin码,手机号码,注册账号,cpu版本等。再加上云端应用服务器随机生成的值,合成一个密钥,通过该密钥加密应用程序的核心逻辑代码数据。如果云端应用服务器具有tpm或者tcm等可信芯片则,密钥值可以在可信芯片中生成,增加密码的安全性。云端应用服务器需要建立各个手机客户端的密钥对应关系的数据库存储表。
发送步骤S302,将所述经加密压缩后的核心代码和解密核心代码的密钥发送至所述客户端应用。
发送加密压缩后的数据和密钥时,如果上述检查没有问题,则进行特定封包,然后下发加密压缩数据组成的pack包到注册客户端的应用程序中。为了通信安全,发送的包必须是加密的,同时建立比如ssl安全通道,进行客户端和服务器双向认证等。
在本发明的一个实施例中,将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用为:判断解密解压出的数据格式类型,如果数据格式类型是DEX数据,则进行按照DEX格式进行组合,然后通过HOOK的DEX动态导入函数(如HOOK DEX Loader函数)分段导入,如果数据格式类型是SO文件,则按照elf格式进行组装,然后通过HOOK的dlopen函数进行组装动态导入。
如果加密压缩数据比较大则每次登陆都需要从云端程序服务器下载则会出现流量浪费速度慢的问题,为解决该问题,通过在第一次登陆时候把加密压缩数据保存在客户端,每次登陆的时候从云端服务器获取生成的密钥值,如通过云端应用服务器上的各个手机客户端的密钥对应关系的数据库存储表获取密钥值。然后通过这个密钥值解密保存在手机客户端的数据,最后导入。为进一步安全性,所述解密核心代码的密钥一次有效,经加密压缩后的核心代码下载后存储在所述客户端上,当用户再次使用该客户端应用时,所述云端服务器生成解密核心代码的密钥并仅向所述客户端发送解密核心代码的密钥。这样进一步降低了流量消耗,适应于在带宽较低的地方使用,同时提高了安全性,这也是本发明的另一个发明点所在。
下面结合图4-6详细描述本发明的一种基于云端服务器的客户端应用保护装置。
图4示出了本发明的一种基于云端服务器的客户端应用保护装置,该装置包括:
获取模块11,所述客户端应用从所述云端服务器获取经加密压缩后的核心代码。
组装模块12,所述客户端应用将获取的经加密压缩后的核心代码进行处理得到解密解压缩后的核心代码,并将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用。
在本发明的一个实施例所述应用为安卓系统的应用,当然本发明的装置也适用于其他系统中,如apple系统、windows系统等等。
在本发明的一个实施例中,如图4所示,所述装置还包括:验证模块10,所述云端服务器基于所述客户端应用的请求进行客户端运行环境的安全性和所述客户端应用合法性及完整性的验证;其中,所述验证模块10的操作在所述获取模块11的操作之前进行。
本发明的重要发明点之一是把一部分包含核心代码的DEX、SO文件加密压缩存储在云端应用服务器(也称为云端服务器)中,各种渠道发布的版本只有一部分包含登录验证,数据解密的函数等代码。当客户端安装新的应用时候注册用户,云端应用服务器把加密压缩后的数据下发到手机应用客户端,然后在手机应用客户端通过云端应用服务器下发的密钥进行解密解压,再动态分段加载DEX,SO文件。
云端应用服务器中存储各种版本应用程序的加密压缩数据,如应用程序的关键实现逻辑函数,加密压缩保存在云端应用服务器中。当应用程序更新不同的版本时候,云端应用服务器只需要更新各版本的关键实现逻辑代码的加密压缩数据。云端服务器还可以执行加密算法(一般为对称加密算法),加密应用程序的核心逻辑代码,同时也可以对加密后数据进行压缩。
基于上面的介绍,下面介绍本发明的验证模块10的具体操作,这是本发明的关键发明点之一,如图5所示,其包括:
注册模块201,将在所述客户端应用注册时输入的用户名和用户密码及采集的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值进行压缩使用第一加密算法进行加密生成第一加密数据包,计算所述用户密码的md5值、所述客户端应用的签名及所述客户端应用的完整性的md5值,将所述用户密码的md5值、客户端应用的签名及所述客户端应用的完整性的md5值进行压缩后使用第二加密算法进行加密生成第二加密数据包,将第一加密数据包、第二加密数据包、第一加密算法的密钥和第二加密算法的密钥封装为所述客户端应用的请求发送至所述云端服务器。
客户端的应用程序DEX中仅设计了如登录界面、注册界面等一部分不关键的逻辑函数。用于接收用户输入的用于注册的用户账号(也称为用户名),用户密码的输入值等等。当用户注册时候采集当前系统的运行环境数据,如imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值等,然后进行压缩后使用aes(即第一加密算法)进行加密(密钥是协商的同时隐藏起来)生成第一加密数据包。
然后计算所述用户密码的md5值、所述客户端应用的签名及所述客户端应用的完整性的md5值,将所述用户密码的md5值、客户端应用的签名及所述客户端应用的完整性的md5值进行压缩后使用rsa加密算法的公钥进行加密(rsa,aes加密是举例说明,公钥保存在应用中)生成第二加密数据包。最后将使用算法把第一加密数据包、第二加密数据包及aes加密、rsa加密的数据密钥等合成一个pack包作为所述客户端应用的请求,发送给云端服务器。
解密模块202,所述云端服务器使用第一加密算法的密钥和第二加密算法的密钥对第一加密数据包和第二加密数据包进行解密后进行解压缩,将获得的用户名、用户密码及对应的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值对应存储在数据中。
所述云端服务器接收到作为所述客户端应用的请求的pack包进行解密加压缩,云端应用服务器在每个手机安装应用时候,通过手机客户端的应用程序收集运行环境的信息,在服务器中建立一个手机端运行环境的映射关系,即将获得的用户名、用户密码及对应的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和/或系统是否被HOOK状态值对应存储在数据中。
判断模块203,根据系统是否root状态值和/或系统是否被HOOK状态值判断系统的运行是否安全,如果是,基于云端应用服务器中存储的各个渠道发放的客户端应用的完整性校验值和签名判断判断所述客户端是否被篡改和/或反编译,如果则通过验证,如果是则向用户发出警告信息。
云端服务器判断数据库中每个手机环境的基准值(即判断系统是否root状态值和/或系统是否被HOOK状态值)来确实手机环境是否安全,并验证客户端安装应用程序是否合法,是否完整,云端服务器中需要存储各个渠道发放应用程序的完整性校验值和签名。当手机端应用程序申请获取加密压缩数据时候,判断手机端安装的应用程序是否被篡改及是否被反编译。通过先验证客户端的环境是否安全,再验证客户端应用是否合法有效,大大提高了客户端应用执行前的安全性,确保了用户数据的安全。客户端可以运行在智能手机、平板电脑等电子设备上。
客户端被验证安全后,客户端应用向云端服务器获取加密压缩的核心代码段,这也是本发明的重要发明点之一,如图6所示,所述获取模块11包括:
加密模块301,所述云端服务器根据用户名、用户密码、imei、pin码、cpu和/或系统内核版本号及一个随机数生成一个加密核心代码的密钥,并将所述密钥与所述客户端应用对应存储在数据库中,使用第三加密算法和加密核心代码的密钥对压缩后的核心代码进行加密生成所述经加密压缩后的核心代码。
客户端被验证安全后,确定下发给对应手机客户端适当应用程序版本的加密压缩数据,云端应用服务器生成每个手机客户端应用程序数据加密解密的密钥:云端应用服务器根据手机客户端应用程序采集的对应手机端的信息,比如imei,pin码,手机号码,注册账号,cpu版本等。再加上云端应用服务器随机生成的值,合成一个密钥,通过该密钥加密应用程序的核心逻辑代码数据。如果云端应用服务器具有tpm或者tom等可信芯片则,密钥值可以在可信芯片中生成,增加密码的安全性。云端应用服务器需要建立各个手机客户端的密钥对应关系的数据库存储表。
发送模块302,将所述经加密压缩后的核心代码和解密核心代码的密钥发送至所述客户端应用。
发送加密压缩后的数据和密钥时,如果上述检查没有问题,则进行特定封包,然后下发加密压缩数据组成的pack包到注册客户端的应用程序中。为了通信安全,发送的包必须是加密的,同时建立比如ssl安全通道,进行客户端和服务器双向认证等。
在本发明的一个实施例中,将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用为:判断解密解压出的数据格式类型,如果数据格式类型是DEX数据,则进行按照DEX格式进行组合,然后通过HOOK的DEX动态导入函数(如HOOK DEX Loader函数)分段导入,如果数据格式类型是SO文件,则按照elf格式进行组装,然后通过HOOK的dlopen函数进行组装动态导入。
如果加密压缩数据比较大则每次登陆都需要从云端程序服务器下载则会出现流量浪费速度慢的问题,为解决该问题,通过在第一次登陆时候把加密压缩数据保存在客户端,每次登陆的时候从云端服务器获取生成的密钥值,如通过云端应用服务器上的各个手机客户端的密钥对应关系的数据库存储表获取密钥值。然后通过这个密钥值解密保存在手机客户端的数据,最后导入。为进一步安全性,所述解密核心代码的密钥一次有效,经加密压缩后的核心代码下载后存储在所述客户端上,当用户再次使用该客户端应用时,所述云端服务器生成解密核心代码的密钥并仅向所述客户端发送解密核心代码的密钥。这样进一步降低了流量消耗,适应于在带宽较低的地方使用,同时提高了安全性,这也是本发明的另一个发明点所在。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
最后所应说明的是:以上实施例仅以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。

Claims (7)

1.一种基于云端服务器的客户端应用保护方法,其特征在于,该方法包括:
验证步骤,所述云端服务器基于所述客户端应用的请求进行客户端运行环境的安全性和所述客户端应用合法性及完整性的验证;
获取步骤,所述客户端应用从所述云端服务器获取经加密压缩后的核心代码;
组装步骤,所述客户端应用将获取的经加密压缩后的核心代码进行处理得到解密解压缩后的核心代码,并将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用;
所述验证步骤包括:
注册步骤,将在所述客户端应用注册时输入的用户名和用户密码及采集的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和系统是否被HOOK状态值进行压缩使用第一加密算法进行加密生成第一加密数据包,计算所述用户密码的md5值、所述客户端应用的签名及所述客户端应用的完整性的md5值,将所述用户密码的md5值、客户端应用的签名及所述客户端应用的完整性的md5值进行压缩后使用第二加密算法进行加密生成第二加密数据包,将第一加密数据包、第二加密数据包、第一加密算法的密钥和第二加密算法的密钥封装为所述客户端应用的请求发送至所述云端服务器;
解密步骤,所述云端服务器使用第一加密算法的密钥和第二加密算法的密钥对第一加密数据包和第二加密数据包进行解密后进行解压缩,将获得的用户名、用户密码及对应的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和系统是否被HOOK状态值对应存储在数据中;
判断步骤,根据系统是否root状态值和系统是否被HOOK状态值判断系统的运行是否安全,如果是,基于云端应用服务器中存储的各个渠道发放的客户端应用的完整性校验值和签名判断判断所述客户端是否被篡改和/或反编译,如果则通过验证,如果是则向用户发出警告信息;
所述获取步骤包括:
加密步骤,所述云端服务器根据用户名、用户密码、imei、pin码、cpu和系统内核版本号及一个随机数生成一个加密核心代码的密钥,并将所述密钥与所述客户端应用对应存储在数据库中,使用第三加密算法和加密核心代码的密钥对压缩后的核心代码进行加密生成所述经加密压缩后的核心代码;
发送步骤,将所述经加密压缩后的核心代码和解密核心代码的密钥发送至所述客户端应用;
将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用为:判断解密解压出的数据格式类型,如果数据格式类型是DEX数据,则进行按照DEX格式进行组合,然后通过HOOK的DEX动态导入函数分段导入,如果数据格式类型是SO文件,则按照elf格式进行组装,然后通过HOOK的dlopen函数进行组装动态导入;
所述解密核心代码的密钥一次有效,经加密压缩后的核心代码下载后存储在所述客户端上,当用户再次使用该客户端应用时,所述云端服务器仅向所述客户端发送解密核心代码的密钥。
2.根据权利要求1所述的方法,其特征在于,所述应用为安卓系统的应用。
3.根据权利要求1所述的方法,其特征在于,所述云端服务器将经加密压缩后的核心代码与应用程序的版本对应存储在数据库中。
4.一种基于云端服务器的客户端应用保护装置,其特征在于,该装置包括:
验证模块,所述云端服务器基于所述客户端应用的请求进行客户端运行环境的安全性和所述客户端应用合法性及完整性的验证;
获取模块,所述客户端应用从所述云端服务器获取经加密压缩后的核心代码;
组装模块,所述客户端应用将获取的经加密压缩后的核心代码进行处理得到解密解压缩后的核心代码,并将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用;
所述验证模块包括:
注册模块,将在所述客户端应用注册时输入的用户名和用户密码及采集的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和系统是否被HOOK状态值进行压缩使用第一加密算法进行加密生成第一加密数据包,计算所述用户密码的md5值、所述客户端应用的签名及所述客户端应用的完整性的md5值,将所述用户密码的md5值、客户端应用的签名及所述客户端应用的完整性的md5值进行压缩后使用第二加密算法进行加密生成第二加密数据包,将第一加密数据包、第二加密数据包、第一加密算法的密钥和第二加密算法的密钥封装为所述客户端应用的请求发送至所述云端服务器;
解密模块,所述云端服务器使用第一加密算法的密钥和第二加密算法的密钥对第一加密数据包和第二加密数据包进行解密后进行解压缩,将获得的用户名、用户密码及对应的系统的imei、pin码、cpu、系统内核版本号、系统是否root状态值和系统是否被HOOK状态值对应存储在数据中;
判断模块,根据系统是否root状态值和系统是否被HOOK状态值判断系统的运行是否安全,如果是,基于云端应用服务器中存储的各个渠道发放的客户端应用的完整性校验值和签名判断判断所述客户端是否被篡改和/或反编译,如果则通过验证,如果是则向用户发出警告信息;所述获取模块包括:
加密模块,所述云端服务器根据用户名、用户密码、imei、pin码、cpu和系统内核版本号及一个随机数生成一个加密核心代码的密钥,并将所述密钥与所述客户端应用对应存储在数据库中,使用第三加密算法和加密核心代码的密钥对压缩后的核心代码进行加密生成所述经加密压缩后的核心代码;
发送模块,将所述经加密压缩后的核心代码和解密核心代码的密钥发送至所述客户端应用;将所述解密解压缩后的核心代码导入所述客户端应用形成完整版的客户端应用为:判断解密解压出的数据格式类型,如果数据格式类型是DEX数据,则进行按照DEX格式进行组合,然后通过HOOK的DEX动态导入函数分段导入,如果数据格式类型是SO文件,则按照elf格式进行组装,然后通过HOOK的dlopen函数进行组装动态导入;所述解密核心代码的密钥一次有效,经加密压缩后的核心代码下载后存储在所述客户端上,当用户再次使用该客户端应用时,所述云端服务器仅向所述客户端发送解密核心代码的密钥。
5.根据权利要求4所述的装置,其特征在于,所述应用为安卓系统的应用。
6.根据权利要求4所述的装置,其特征在于,所述云端服务器将经加密压缩后的核心代码与应用程序的版本对应存储在数据库中。
7.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行权利要求1-3之任一的方法。
CN201810906090.9A 2018-08-10 2018-08-10 一种基于云端服务器的客户端应用保护方法、装置及存储介质 Active CN109194625B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810906090.9A CN109194625B (zh) 2018-08-10 2018-08-10 一种基于云端服务器的客户端应用保护方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810906090.9A CN109194625B (zh) 2018-08-10 2018-08-10 一种基于云端服务器的客户端应用保护方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN109194625A CN109194625A (zh) 2019-01-11
CN109194625B true CN109194625B (zh) 2021-06-11

Family

ID=64920789

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810906090.9A Active CN109194625B (zh) 2018-08-10 2018-08-10 一种基于云端服务器的客户端应用保护方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN109194625B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110619219B (zh) * 2019-07-31 2021-08-24 广州亚美信息科技有限公司 应用程序源码保护方法、装置、计算机设备和存储介质
CN112527763A (zh) * 2019-09-19 2021-03-19 深圳艾派网络科技股份有限公司 文本格式数据的更新方法及系统
CN111310218A (zh) * 2020-02-28 2020-06-19 云知声智能科技股份有限公司 一种java class核心文件的保护方法及装置
CN111523128B (zh) * 2020-04-03 2023-12-08 咪咕文化科技有限公司 信息保护方法、系统、电子设备及介质
CN111597521B (zh) * 2020-05-20 2023-12-01 贵州电网有限责任公司 一种变电站移动终端数据安全处理方法及系统
CN112231651A (zh) * 2020-10-26 2021-01-15 山东超越数控电子股份有限公司 一种防止反编译篡改版权授权的方法
CN112929423A (zh) * 2021-01-25 2021-06-08 上海契云科技有限公司 一种用于终端设备数据打包的方法及装置
CN112799699B (zh) * 2021-01-25 2024-05-03 广州心娱网络科技有限公司 一种服务器的更新方法及装置
CN113536287A (zh) * 2021-06-21 2021-10-22 苏州工业园区服务外包职业学院 信息校验方法、系统、计算机设备及存储介质
CN116151827B (zh) * 2023-04-04 2023-07-14 北京银联金卡科技有限公司 一种数字钱包安全系统及基于安全系统的双离线交易方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104090785A (zh) * 2014-06-19 2014-10-08 小米科技有限责任公司 应用程序提供方法、装置及系统
CN104156672A (zh) * 2014-08-06 2014-11-19 厦门天锐科技有限公司 基于linux的数据加密保护方法及系统
CN105893860A (zh) * 2016-05-05 2016-08-24 百度在线网络技术(北京)有限公司 关键代码保护方法以及代码生成装置和代码运行装置
CN106304040A (zh) * 2015-05-25 2017-01-04 阿里巴巴集团控股有限公司 管理移动应用的方法、装置
CN106599626A (zh) * 2016-12-23 2017-04-26 武汉斗鱼网络科技有限公司 一种应用程序授权认证方法及系统
CN107196907A (zh) * 2017-03-31 2017-09-22 武汉斗鱼网络科技有限公司 一种安卓so文件的保护方法及装置
CN107609410A (zh) * 2017-09-11 2018-01-19 厦门市美亚柏科信息股份有限公司 基于HOOK的Android系统数据保护方法、终端设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10705894B2 (en) * 2016-05-30 2020-07-07 Samsung Electronics Co., Ltd. Electronic device for authenticating application and operating method thereof

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104090785A (zh) * 2014-06-19 2014-10-08 小米科技有限责任公司 应用程序提供方法、装置及系统
CN104156672A (zh) * 2014-08-06 2014-11-19 厦门天锐科技有限公司 基于linux的数据加密保护方法及系统
CN106304040A (zh) * 2015-05-25 2017-01-04 阿里巴巴集团控股有限公司 管理移动应用的方法、装置
CN105893860A (zh) * 2016-05-05 2016-08-24 百度在线网络技术(北京)有限公司 关键代码保护方法以及代码生成装置和代码运行装置
CN106599626A (zh) * 2016-12-23 2017-04-26 武汉斗鱼网络科技有限公司 一种应用程序授权认证方法及系统
CN107196907A (zh) * 2017-03-31 2017-09-22 武汉斗鱼网络科技有限公司 一种安卓so文件的保护方法及装置
CN107609410A (zh) * 2017-09-11 2018-01-19 厦门市美亚柏科信息股份有限公司 基于HOOK的Android系统数据保护方法、终端设备及存储介质

Also Published As

Publication number Publication date
CN109194625A (zh) 2019-01-11

Similar Documents

Publication Publication Date Title
CN109194625B (zh) 一种基于云端服务器的客户端应用保护方法、装置及存储介质
CN108241517B (zh) 一种软件升级方法、客户端及电子设备
CN106936577B (zh) 一种用于证书申请的方法、终端和系统
CN108243176B (zh) 数据传输方法和装置
WO2016019790A1 (zh) 一种安装包的校验方法、客户端、服务器及系统
CN109145628B (zh) 一种基于可信执行环境的数据采集方法及系统
CN106372497B (zh) 一种应用编程接口api保护方法和保护装置
CN111131300B (zh) 通信方法、终端及服务器
CN108959990B (zh) 一种二维码的验证方法及装置
CN112559993A (zh) 身份认证方法、装置、系统及电子设备
CN108075888B (zh) 动态url生成方法及装置、存储介质、电子设备
CN111800377B (zh) 一种基于安全多方计算的移动终端身份认证系统
CN114637987A (zh) 基于平台验证的安全芯片固件下载方法及系统
CN111585995B (zh) 安全风控信息传输、处理方法、装置、计算机设备及存储介质
CN111241492A (zh) 一种产品多租户安全授信方法、系统及电子设备
CN117240625B (zh) 一种涉及防篡改的数据处理方法、装置及电子设备
CN113055182B (zh) 认证方法及系统、终端、服务器、计算机系统和介质
CN105678542B (zh) 支付业务交互方法、支付终端和支付云端
CN115935388B (zh) 一种软件包安全发送方法、装置、设备及存储介质
CN115442046A (zh) 签名方法、装置、电子设备和存储介质
CN110933028B (zh) 报文传输方法、装置、网络设备及存储介质
CN112825093A (zh) 安全基线检查方法、主机、服务器、电子设备及存储介质
CN111523128A (zh) 信息保护方法、系统、电子设备及介质
CN112929871A (zh) Ota升级包的获取方法、电子设备以及存储介质
CN111061495A (zh) 应用的安装方法、终端设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant