CN108733989A - 一种针对Android应用的通信协议加密方法 - Google Patents

一种针对Android应用的通信协议加密方法 Download PDF

Info

Publication number
CN108733989A
CN108733989A CN201710257949.3A CN201710257949A CN108733989A CN 108733989 A CN108733989 A CN 108733989A CN 201710257949 A CN201710257949 A CN 201710257949A CN 108733989 A CN108733989 A CN 108733989A
Authority
CN
China
Prior art keywords
android
function
server
added
data
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.)
Pending
Application number
CN201710257949.3A
Other languages
English (en)
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.)
Hunan Dingyuan Bluesword Mdt Infotech Ltd
Original Assignee
Hunan Dingyuan Bluesword Mdt Infotech 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 Hunan Dingyuan Bluesword Mdt Infotech Ltd filed Critical Hunan Dingyuan Bluesword Mdt Infotech Ltd
Priority to CN201710257949.3A priority Critical patent/CN108733989A/zh
Publication of CN108733989A publication Critical patent/CN108733989A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明公布了一种针对Android应用的通信协议加密方法,包括对Android应用网络环境进行初始化、替换Android系统中的网络通信接口、在服务端通过自定义动态库接收和发送数据。本发明技术方案使得加密后的协议发送的数据是经过加密处理的,可有效地对Android应用通信协议加密,防止网络通信内容被破解,保护版权,防止他人通过分析网络数据而获取到应用的相关敏感信息。本发明的加密不需要加入专门的SDK,且能够保证开发者正常的开发不会受到影响,能够便捷而有效地实现对Android应用的通信协议进行加密。

Description

一种针对Android应用的通信协议加密方法
技术领域
本发明涉及一种针对Android应用的通信协议加密方法,具体涉及JNI机制、Hook技术和Socket通信。
背景技术
随着移动互联网的发展,移动智能终端的使用越来越普及,尤其是Google公司开源的Android系统更是占据了移动智能终端的绝大部分市场。但是Android应用的安全问题却始终没有很好的解决方案。一般的Android应用都是采用Java语言开发的,逆向分析技术可以很容易得到Android应用的程序流程,篡改应用数据,损害开发者的利益。对Android应用的加固研究迫在眉睫。
在互联网通信开发时有句话叫做一切皆Socket,即软件要通过互联网通信必须要通过Socket。Socket通常也被称作套接字,是应用层和传输层之间的一种抽象层,是对TCP/UDP复杂协议的一种封装。即应用层的所有协议以及传输的数据都会通过Socket才能连接到互联网与远程进程通信。由于中间人攻击等网络攻击技术,能够很容易的得到应用程序通过互联网传输的数据。由于很多开发者不会考虑到这个问题,没有将数据加密再传输,也就是以明文在网络上通信,这样很容易让攻击者通过分析通信内容获取关键信息。
为了应对这种中间人攻击,目前出现了很多方案,如专门针对web的有https协议。但是这只是针对web应用,并不能为所有的通信提供一个通用的加密方案。还有一种方案是重新封装通信的库,在这些库中加入加密模块,能够对通信的数据进行加密。这种方案一般要求开发者在使用通信时调用这种第三方库的接口。而在Android应用中,这种方案都是通过增加一个SDK库的方式来实现的,这样会要求开发者在通信时使用专门的接口,会增加开发者的负担。
上述现有的一些通信协议加密方法,多数是需要增加SDK的,当前并没有针对Android应用通信协议的成熟加密方法。
发明内容
为了克服上述现有技术的不足,本发明提供一种针对Android应用的通信协议加密方法,使得加密后的协议发送的数据是经过加密处理的,保护版权,防止他人通过分析网络数据,获取到应用的相关敏感信息。另外,本发明技术方案不需要专门的SDK,且能够保证开发者正常的开发不会受到影响。
本发明提供的技术方案是:
一种针对Android应用的通信协议加密方法,包括对Android应用网络环境进行初始化、替换Android系统中的网络通信接口、在服务端通过自定义动态库接收和发送数据;具体包括如下步骤:
A.在Android客户端,Android应用网络环境初始化时,执行如下操作:
A1.自定义so库,里面包含自定义的加密模块、解密模块和Hook模块。
A2.将Hook模块的处理流程入口加入到Android应用入口处;
B.替换Android系统中的网络通信接口,执行如下操作:
B1.在Hook模块中,Hook(操作)Android系统中的Socket相关接口函数,主要是send()和recv();
其中,HOOK模块用于将原来的程序流程中加入一个接口;Hook(操作)一般包括以下步骤:获取目标函数地址;将原程序(目标程序)指令保存,替换成想要执行的模块;恢复堆栈,再执行上述保存的目标程序原来的指令。
B2.在Hook后的send()函数中加入A1所述自定义的加密模块;
B3.在Hook后的recv()函数中加入A1所述自定义的解密模块;
C.服务端接收和发送数据时,执行如下操作:
C1.在服务端实现自定义的动态库,动态库里面包含服务端加密模块、解密模块和Hook模块;此处的加密模块应与A1中的Android端的解密模块相对应(相同),解密模块应与A1中的Android端的加密模块相对应(相同)。
C2.Hook服务端的Linux系统中Socket相关接口函数(库函数),主要是函数send()和函数recv();
C3.在Hook后的send()函数中加入服务端加密模块。
C4.在Hook后的recv()函数中加入服务端解密模块。
通过上述步骤,实现针对Android应用通信协议进行加密操作。
与现有技术相比,本发明的有益效果是:
本发明提供一种针对Android应用的通信协议加密方法,使得加密后的协议发送的数据是经过加密处理的,可以有效地对Android应用通信协议加密,防止网络通信内容被破解,保护版权,防止他人通过分析网络数据而获取到应用的相关敏感信息。另外,本发明技术方案不需要加入专门的SDK,且能够保证开发者正常的开发不会受到影响。因此,本发明针对Android应用的通信协议加密方法便捷而有效。
附图说明
图1是本发明提供的针对Android应用通信协议加密方法的流程框图。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明提供一种针对Android应用的通信协议加密方法,使得加密后的协议发送的数据是经过加密处理的,保护版权,防止他人通过分析网络数据,获取到应用的相关敏感信息。另外,本发明技术方案不需要专门的SDK,且能够保证开发者正常的开发不会受到影响。
本发明的具体实施方式如下:
A.在Android应用网络环境初始化时,执行如下操作:
A1.自定义so库,里面包含自定义的加密模块、自定义的解密模块和自定义的Hook模块;
A2.在Android应用入口处插入静态代码,System.load(“xxx.so”),使用java的jni机制加载自定义so模块;
A3.在通信加密so模块的JNI_ONLOAD()函数中引入Hook流程;
B.替换Android系统中的网络通信接口,在对Socket相关函数进行Hook时,执行如下操作:
B1.主要是针对Android系统提供的Socket相关系统函数send()和recv()进行Hook;Hook就是修改了系统函数内容,但是不会改变其接口;
B2.在send()函数中加入A1中自定义的加密模块,对向网络发送的数据使用服务端的公钥采用RSA算法进行加密;
B3.在recv()函数中加入A1中自定义的解密模块,对向网络发送的数据使用应用端的私钥进行RSA解密;
C.在与服务端通信时,服务端执行如下操作:
C1.主要是针对Linux系统提供的Socket相关系统函数send()和recv(),进行Hook;
C2.在send()函数中加入A1所述加密模块,对向网络发送的数据使用应用端(手机端)的公钥进行RSA加密。
C3.在recv()函数中加入A1所述解密模块,对向网络发送的数据使用服务端的私钥进行RSA解密。
下面通过实例对本发明做进一步说明。本实施例为某应用进行通信协议加密处理,首先在Android客户端找到该应用的主类(通过Android客户端中的AndroidManifest.xml配置文件中可以定位到主类。一般一个Android应用只有一个主类。其名称不定,可以根据AndroidManifest.xml中的android:name="android.intent.action.MAIN"这个标签来确定主类),然后在里面加入静态代码,本实施例采用的静态代码为:System.loadLibrary(“libRsaSocket.so”)。可以引入我们自定义的的so库(so可以利用java的jni机制自己编程实现,包括我们自定义的加解密模块和Hook模块)。在so库中,进行Hook Socket相关函数send()和recv(),这里需要只对这个应用的进程和它的子进程通信数据进行加密。在我们Hook后的send()和recv()系统函数,会调用我们的加解密模块,在我们的加密模块中对数据加密,加密算法采用的是RSA算法。这样做是为了保证不影响其他应用的正常工作。使用成熟的RSA算法对发送数据进行加密,对接收数据进行解密。
静态代码在程序启动时自动执行,不需要其他代码的调用。静态代码需要static关键字来修饰。这里也可以使用非静态代码,但是那样需要修改原来代码的逻辑,会让过程变得复杂。
接下来在服务端也要进行相关函数的Hook,在Linux中,Socket的相关函数也是send()和recv()函数,对这两个函数做和Android客户端(手机端)相同的操作,这样能够保证加密传输的数据能够被服务端无歧义的识别。进而能够保证两端的数据传输正常功能不会受到影响。
采用上述加密方法对Android应用的通信协议进行加密之后,我们通过网络抓包可以看到,传输的数据都是经过加密后的,攻击者无法通过分析网络通信数据来得到有价值的数据。此外,由于我们是对系统函数进行Hook来保证传输数据的加密,这样对于开发者不需要调用我们的接口,能够与开发者进行无缝结合。
需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

Claims (5)

1.一种针对Android应用的通信协议加密方法,包括对Android应用网络环境进行初始化、替换Android系统中的网络通信接口、在服务端通过自定义动态库接收和发送数据;具体包括如下步骤:
A.在Android客户端,对Android应用的网络环境进行初始化时,执行如下操作:
A1.自定义so库,所述自定义so库包含自定义的加密模块、解密模块和Hook模块;
A2.将Hook模块的处理流程入口加入到Android应用入口处;
B.替换Android系统中的网络通信接口,执行如下操作:
B1.在Hook模块中,对Android系统中的Socket接口函数执行Hook操作;所述Socket接口函数包括函数send()和函数recv();
B2.在执行Hook操作之后的send()函数中加入A1所述自定义的加密模块;
B3.在执行Hook操作之后的recv()函数中加入A1所述自定义的解密模块;
C.服务端接收和发送数据时,执行如下操作:
C1.在服务端实现自定义的动态库,所述自定义的动态库包括服务端加密模块、服务端解密模块和Hook模块;所述服务端加密模块与A1所述Android端的解密模块相同,所述服务端解密模块与A1所述Android端的加密模块相同;
C2.对服务端的Linux系统中的Socket函数执行Hook操作;所述Socket接口函数包括函数send()和函数recv();
C3.在执行Hook操作之后的send()函数中加入服务端加密模块;
C4.在执行Hook操作之后的recv()函数中加入服务端解密模块;
通过上述步骤,实现针对Android应用通信协议进行加密操作。
2.如权利要求1所述通信协议加密方法,其特征是,步骤A2具体在Android应用入口处插入静态代码,使用java的jni机制加载所述自定义so库,在所述自定义so库的JNI_ONLOAD()函数中加入Hook模块的处理流程。
3.如权利要求1所述通信协议加密方法,其特征是,所述插入静态代码使用函数System.load(“xxx.so”)实现。
4.如权利要求1所述通信协议加密方法,其特征是,步骤B2在send()函数中加入A1中自定义的加密模块,对向网络发送的数据使用服务端的公钥进行RSA加密;步骤B3在recv()函数中加入A1中自定义的解密模块,对向网络发送的数据使用应用端的私钥进行RSA解密。
5.如权利要求1所述通信协议加密方法,其特征是,步骤C2具体在send()函数中加入A1中自定义的加密模块,对向网络发送的数据使用应用端的公钥进行RSA加密;步骤C3在recv()函数中加入A1所述解密模块,对向网络发送的数据使用服务端的私钥进行RSA解密。
CN201710257949.3A 2017-04-19 2017-04-19 一种针对Android应用的通信协议加密方法 Pending CN108733989A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710257949.3A CN108733989A (zh) 2017-04-19 2017-04-19 一种针对Android应用的通信协议加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710257949.3A CN108733989A (zh) 2017-04-19 2017-04-19 一种针对Android应用的通信协议加密方法

Publications (1)

Publication Number Publication Date
CN108733989A true CN108733989A (zh) 2018-11-02

Family

ID=63924830

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710257949.3A Pending CN108733989A (zh) 2017-04-19 2017-04-19 一种针对Android应用的通信协议加密方法

Country Status (1)

Country Link
CN (1) CN108733989A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109862000A (zh) * 2019-01-22 2019-06-07 深圳市永达电子信息股份有限公司 一种Linux网络层的端对端加密方法和系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103281324A (zh) * 2013-06-04 2013-09-04 江苏科大汇峰科技有限公司 一种Android客户端的安全通信方法
CN103605930A (zh) * 2013-11-27 2014-02-26 湖北民族学院 一种基于hook和过滤驱动的双重文件防泄密方法及系统
US8677466B1 (en) * 2009-03-10 2014-03-18 Trend Micro Incorporated Verification of digital certificates used for encrypted computer communications
CN104331644A (zh) * 2014-11-24 2015-02-04 北京邮电大学 一种智能终端文件的透明加解密方法
CN105208041A (zh) * 2015-10-15 2015-12-30 厦门大学 基于hook的云存储应用加密数据包破解方法
CN105243330A (zh) * 2015-10-13 2016-01-13 武汉大学 一种面向Android系统内部数据传递过程的保护方法及系统
CN105956478A (zh) * 2016-04-25 2016-09-21 北京珊瑚灵御科技有限公司 一种基于iOS Method Swizzling技术的数据隔离系统和方法
CN106161477A (zh) * 2016-09-19 2016-11-23 上海迅行易汽车租赁有限公司 一种端对端加密的通讯系统
CN106254348A (zh) * 2016-08-08 2016-12-21 中国地质大学武汉 一种基于Android的无线局域网通信方法
CN106302482A (zh) * 2016-08-22 2017-01-04 浙江省数字安全证书管理有限公司 一种跨浏览器使用硬件加密介质数据安全传输系统和方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8677466B1 (en) * 2009-03-10 2014-03-18 Trend Micro Incorporated Verification of digital certificates used for encrypted computer communications
CN103281324A (zh) * 2013-06-04 2013-09-04 江苏科大汇峰科技有限公司 一种Android客户端的安全通信方法
CN103605930A (zh) * 2013-11-27 2014-02-26 湖北民族学院 一种基于hook和过滤驱动的双重文件防泄密方法及系统
CN104331644A (zh) * 2014-11-24 2015-02-04 北京邮电大学 一种智能终端文件的透明加解密方法
CN105243330A (zh) * 2015-10-13 2016-01-13 武汉大学 一种面向Android系统内部数据传递过程的保护方法及系统
CN105208041A (zh) * 2015-10-15 2015-12-30 厦门大学 基于hook的云存储应用加密数据包破解方法
CN105956478A (zh) * 2016-04-25 2016-09-21 北京珊瑚灵御科技有限公司 一种基于iOS Method Swizzling技术的数据隔离系统和方法
CN106254348A (zh) * 2016-08-08 2016-12-21 中国地质大学武汉 一种基于Android的无线局域网通信方法
CN106302482A (zh) * 2016-08-22 2017-01-04 浙江省数字安全证书管理有限公司 一种跨浏览器使用硬件加密介质数据安全传输系统和方法
CN106161477A (zh) * 2016-09-19 2016-11-23 上海迅行易汽车租赁有限公司 一种端对端加密的通讯系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109862000A (zh) * 2019-01-22 2019-06-07 深圳市永达电子信息股份有限公司 一种Linux网络层的端对端加密方法和系统
CN109862000B (zh) * 2019-01-22 2021-08-17 深圳市永达电子信息股份有限公司 一种Linux网络层的端对端加密方法和系统

Similar Documents

Publication Publication Date Title
US11601809B2 (en) Method and system for updating certificate issuer public key, and related device
CN103856485B (zh) 可信用户界面安全指示器的初始化系统及方法
CN110352605B (zh) 一种鉴权算法程序的添加方法、相关设备及系统
CN104980920B (zh) 智能终端建立通信连接的方法及装置
CN101068204B (zh) 通信架构中的中间网络节点及其执行的方法
JP4864333B2 (ja) ソフトウェアの脆弱性の悪用を防止するように通信をフィルタ処理するための方法およびシステム
CN109756501B (zh) 一种基于http协议的高隐匿网络代理方法及系统
CN102291387A (zh) 加密的网络通信拦截和检查
CN109558739B (zh) 程序运行方法、装置、终端及可读介质
EP2429150A1 (en) Apparatus, web service component and method based on web service
US10970264B2 (en) Supporting secure layer extensions for communication protocols
CN104700003B (zh) 一种文件加壳及脱壳方法、装置及系统
CN109831775B (zh) 一种处理器、基带芯片以及sim卡信息传输方法
CN111475543A (zh) 一种模糊搜索方法、装置、计算机设备及存储介质
CN103246540A (zh) 应用程序更新方法和装置
CN112822193A (zh) 应用通信方法、装置、设备及存储介质
US11227032B1 (en) Dynamic posture assessment to mitigate reverse engineering
CN103034811B (zh) 一种文件处理的方法、系统及装置
CN108733989A (zh) 一种针对Android应用的通信协议加密方法
CN112580056A (zh) 一种终端设备、数据加密方法、解密方法、及电子设备
CN112261059A (zh) 一种基于java网关技术平台通用性的接口方法及系统
CN101753520A (zh) 利用智能卡为外部设备应用提供加解密服务的方法
WO2014089968A1 (zh) 虚拟机系统数据加密方法及设备
CN106060792B (zh) 一种基于tpm加密的ip短消息收发方法
CN112187734B (zh) 一种IPSec组件架构及VPN隧道建立方法

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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20181102