CN102867142A - 一种基于Android系统的安全防护方法 - Google Patents
一种基于Android系统的安全防护方法 Download PDFInfo
- Publication number
- CN102867142A CN102867142A CN2012102995814A CN201210299581A CN102867142A CN 102867142 A CN102867142 A CN 102867142A CN 2012102995814 A CN2012102995814 A CN 2012102995814A CN 201210299581 A CN201210299581 A CN 201210299581A CN 102867142 A CN102867142 A CN 102867142A
- Authority
- CN
- China
- Prior art keywords
- android
- jni
- function
- module
- interface
- 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
Links
Images
Landscapes
- Telephonic Communication Services (AREA)
Abstract
本发明涉及计算机操作系统,其公开了一种基于Android系统的安全防护方法,有效防护基于Android系统的移动终端远离外部网络攻击。该方法具体包括:a.按照Android的Linux2.6内核编写底层模块,并预留接口共JNI函数调用;b.按照JNI的规范编写JNI函数,并且根据需要调用底层模块的功能函数对其进行封装;c.利用Android自带的编译器将其编译成模块形式;d.使用调试工具将编译好的模块加载到Android系统中;e.编写前台UI及用户处理程序,并调用加载好的模块所提供的接口。本发明适用于对基于Android系统的移动终端上的安全防护。
Description
技术领域
本发明涉及计算机操作系统,具体的说,是涉及一种基于Android系统的安全防护方法。
背景技术
Android移动操作系统是Google公司在2007年11月研发完成了基于Linux的移动操作系统,它是一个真正意义上的开放的移动设备开发平台。正是由于其开源性,使得在第三方软件开发商的门槛降低了很多,也使得Android从刚刚推出时就受到了很多开发者的关注。通过其特有的Dalvik虚拟机使得程序在手机上运行的效率更高。更是由于其免费与开源性,让Android能够不仅仅局限于手机上,而是更广阔的平板电脑或者其他智能设备之上。所以Android的应用与开发的前景无法限量。但是随着用户通过Android智能终端访问网络的需求日益增加,Android智能终端网络通信的安全性也就成为智能终端安全研究的首要任务。
发明内容
本发明所要解决的技术问题是:提出一种基于Android系统的安全防护方法,有效防护基于Android系统的智能终端远离外部网络攻击。
本发明解决上述技术问题所采用的技术方案是:
一种基于Android系统的安全防护方法,包括以下步骤:
a.按照Android的Linux2.6内核编写底层模块,并预留接口共JNI函数调用;
b.按照JNI的规范编写JNI函数,并且根据需要调用底层模块的功能函数对其进行封装;
c.利用Android自带的编译器将其编译成模块形式;
d.使用调试工具将编译好的模块加载到Android系统中;
e.编写前台UI及用户处理程序,并调用加载好的模块所提供的接口。
进一步,步骤d中,使用Android自带的调试工具adb将编译好的模块加载到Android系统中。
进一步,步骤e中,按照Android SDK的规范编写前台UI及用户处理程序。
本发明的有益效果是:通过对Android底层组件开发与底层数据包控制的研究,应用基于多叉树规则检测算法,实现了一个底层包过滤的安全机制,从而有效防护了基于Android系统的智能终端远离外部网络攻击。
附图说明
图1为Android底层开发与架构示意图;
图2为本发明的Android底层组件开发流程图;
图3为初始多叉树结构示意图;
图4为经过简化后的多叉树结构示意图。
具体实施方式
下面结合附图对本发明的技术方案作进一步的描述。
本发明基于Android移动操作系统和智能终端网络通信安全的研究,结合传统防火墙解决方案提出了该平台下的网络防火墙设计模型。并提出了一个底层包过滤的安全机制,该安全机制的实现基本流程如下:
一、android框架结构,网络数据包,以及数据过滤算法研究
1、Android的系统架构
Android操作系统从顶至下共包含以下四个层次:
应用层,应用框架层,组件库层和虚拟机,Linux内核层。在应用层:Android包含了一套核心应用(coreapplications):Email客户端、SMS(短信)序、日历、G oogle地图、网页浏览器、联系簿等等。所有的应用均使用JAVA语言开发。在应用框架层:在开发者通过使用核心的应用程序调用Android框架提供的API。这个应用程序结构被设计成方便复用的组件。任何的应用程序都可以公布它的功能,而任何其他的应用程序都可以使用这些功能(涉及到安全问题的功能将会被框架禁止)。在组件库层:Android包含了一套C/C++函数库,供Android系统使用。开发者可以通过Android应用程序框架使用这些库函数提供的功能。另外还包含了一套核心库,这些库提供了绝大多数JAVA编程语言核心库的功能。每个Android应用程序都运行于自己的进程中,具有自己的Dalvik虚拟机的实例,Dalvik使得设备可以高效地运行多个虚拟机,且针对手持设备的较小内存做了优化。
2、Android底层组件的开发
在应用层可以说Android的提供的API已经足够的强大,可以提供大部分的功能支持。但是当开发者想要从事与底层硬件较为紧密的开发工作的时候就会遇到没有相应的API可以提供支持的尴尬。比如要进行防火墙的开发,就一定会涉及到底层数据包的收发和过滤,但是由于上层接口出于安全性的考虑就没有提供。这就给开发者带来比较大的麻烦。所以在这种情况下我们就需要一种方法用来直接获取底层Linux接口,从而进行一些底层的开发。比如防火墙,或者是一些设备驱动。而且本身Androi d的组件库就是用C/C++编写的,并且一些底层与本地硬件交互的功能就是通过JNI实现的。所以这种方式并不违背Android的整个架构。附图1为Android底层开发与架构示意图。
3、Android底层组件的开发步骤
参见图2,Android底层组件的开发步骤如下:(1)按照Android的Linux2.6内核编写底层模块,并预留接口共JNI函数调用。(2)按照JNI的规范编写JNI函数,并且根据需要调用底层模块的功能函数对其进行封装。(3)利用Android自带的编译器将其编译成模块(*.so)形式。(4)使用Android自带的调试工具adb将编译好的模块加载到Android手机或模拟器中。(5)按照Android SDK的规范编写前台UI及用户处理程序,并调用加载好的模块(loadLibrary())所提供的接口。
4、Linux基本网络数据包结构skbuff
因为Linux中,所有数据的接受和发送都要建立一个skbuff结构来包含数据,自然就要通过skbuff结构来读取Linux网络中的数据包。在Linux内核2.6.24之后,skbbuff结构也有了许多微妙的改变。其中主要有,增加了三个数据结构使得我们可以比以前更加方便地访问网络各层的报文头。
sk_buff_data_t transport_header;//读取传输层的报文头
sk_buff_data_t network_header;//读取网络层的报文头
sk_buff_data_t mac_header;//读取MAC层的报文头
通过这三个结构,我们现在比以前更加方便地获取各层的头部指针,从而通过指针的偏移取得相应的重要信息,包括源I P地址和端口号等等。从而根据已有的规则表来进行遍历从而决定这个数据包是接受还是舍弃。
5、基于多叉树的防护墙规则检测算法
这里由于智能手机的资源有限性,使得在普通P C上的防火墙所采用的Netfilter结构在Android上的应用会显得效率不高而且代价太高。所以在这里我们采用基于FDD法的防火墙规则遍历检测方法。
举例来说,I是防火墙收到数据包的端口;S是数据包的源地址;D是数据包的目标地址;P是数据包的传输协议类型。下面是一组已有的原始规则:
I=0∧S=any∧D=s∧P=tcp∧T=25→a,
I=0∧S=any∧D=s∧P=any∧T=any→d,
I=0∧S=m∧D=any∧P=any∧T=any→d,
I=1∧S=h∧D=any∧P=any∧T=any→a,
I=1∧S=any∧D=any∧P=any∧T=any→a
我们可以发现规则之间有冲突与冗余,所以我们这里引入多叉树来解决规则冲突问题,以期尽量消除冲突问题从而实现精简规则。
先根据初始的规则集建立多叉树,如附图3所示。
然后我们可以发现在第二层的F1有节点冗余,进行进一步删减,如图4所示。
从而我们得到相对精简得多的多叉树图。而且由于多叉树的特点,事实上现在根据树来建立的规则集不可能存在冲突。当防火墙收到一个数据包时,通过对其s k b u f f结构的解析,分离出相应的端口号,源地址,目的地址等等需要的信息。再从根部开始深度优先遍历我们刚刚建立的无冲突多叉树,遍历到一枝的叶子,从而得到处理这个数据包的采取动作结果即接受还是丢弃(a或者d)。
二、基于android系统的安全机制的具体实现步骤
1、底层包过滤模块的实现
(1)驱动设备的注册
if((major=register_chrdev(LWFW_MAJOR)
LWFW_NAME
&lwfw_fops))<0){
printk("AndFirewall:Module installation
aborted.\n");
return major;
}
//确保设备正在使用的位被清空
lwfw_ctrl_in_use^=lwfw_ctrl_in_use;
printk("\nAndFirewall:Control device successfully
regi stered.\n");
//注册网络钩子结构
nfkiller.hook=lwfw_hookfn;
nfkiller.hooknum=0;//第一层钩子
nfkiller.pf=PF_INET;//面向IPV4
nfki ller.priority=NF_IP_PRI_FIRST;//优先
运行钩子函数
//具体注册
nf_register_hook(&nfkiller);
(2)取得TCP的报文头
struct tcphdr*thead;//定义一个TCP报文头
struct iphdr*iph;//定义一个IP报文头
iph=(struct iphdr*)skb_network_header(skb);//取
得网络层指针
if(!skb)return NF_ACCEPT;
if(!iph)return NF_ACCEPT;
//确保这是一个TCP数据包
if(iph->protocol!=IPPROTO_TCP){
return NF_ACCEPT;
}
//从网络层包头偏移skb的数据大小加上适当的偏移量
thead=(struct tcphdr*)(skb->data+(iph->ihl
*4));
//检查端口号
if((thead->dest)==deny_port){
lwfw_statistics.total_dropped++;
lwfw_statistics.tcp_dropped++;
//确认舍弃
return NF_DROP;
}
2、利用JNI函数进行封装
上述防火墙代码主要在核心态下运行,而我们用户使用的话必须在用户态调用相应的系统调用才能使用。但是由于Android平台上层UI只能通过JNI才能与底层模块交互。所以必须将系统调用用JNI进行封装。
3、编写Android的make文件进行编译
在编写完上述代码之后,将代码放置在Android源代码的development目录之下新建的MyFireWall目录下,并按照Android的m a k e文件的规范,编写Android.mk,最后通过编译后成为liband.so模块文件。
4、加载模块入Android系统
将liband.so模块利用Android特有的adb(AndroidDebugBridge)调试工具,将模块加载到系统之中。这时,在运行我们编写完的应用层Android程序,就能使用该防火墙相应的功能了。
通过对于Android底层组件开发与底层数据包控制的研究,应用基于多叉树规则检测算法,实现了一个底层包过滤防火墙,从而有效防护了Android手机远离外部网络攻击。而Android本身的安全机制相结合,研究出适合Android安全模型则是我们进一步研究的方向。
Claims (3)
1.一种基于Android系统的安全防护方法,其特征在于,包括以下步骤:
a.按照Android的Linux2.6内核编写底层模块,并预留接口共JNI函数调用;
b.按照JNI的规范编写JNI函数,并且根据需要调用底层模块的功能函数对其进行封装;
c.利用Android自带的编译器将其编译成模块形式;
d.使用调试工具将编译好的模块加载到Android系统中;
e.编写前台UI及用户处理程序,并调用加载好的模块所提供的接口。
2.如权利要求1所述的一种基于Android系统的安全防护方法,其特征在于,步骤d中,使用Android自带的调试工具adb将编译好的模块加载到Android系统中。
3.如权利要求1或2所述的一种基于Android系统的安全防护方法,其特征在于,步骤e中,按照Android SDK的规范编写前台UI及用户处理程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102995814A CN102867142A (zh) | 2012-08-22 | 2012-08-22 | 一种基于Android系统的安全防护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102995814A CN102867142A (zh) | 2012-08-22 | 2012-08-22 | 一种基于Android系统的安全防护方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102867142A true CN102867142A (zh) | 2013-01-09 |
Family
ID=47446009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012102995814A Pending CN102867142A (zh) | 2012-08-22 | 2012-08-22 | 一种基于Android系统的安全防护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102867142A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014194856A1 (zh) * | 2013-06-08 | 2014-12-11 | 安徽量子通信技术有限公司 | 一种基于Android智能移动终端的通信密钥分配方法 |
CN106130959A (zh) * | 2016-06-12 | 2016-11-16 | 微梦创科网络科技(中国)有限公司 | 恶意应用识别方法及装置 |
CN106484490A (zh) * | 2015-09-02 | 2017-03-08 | 腾讯科技(深圳)有限公司 | 一种应用程序的跟踪分析方法和装置 |
CN107391219A (zh) * | 2017-07-07 | 2017-11-24 | 腾讯科技(深圳)有限公司 | 函数编译方法和装置 |
CN107423067A (zh) * | 2017-07-28 | 2017-12-01 | 山东超越数控电子有限公司 | 一种Java应用与非JNI规范二进制文件相互调用的方法 |
CN112084494A (zh) * | 2020-09-21 | 2020-12-15 | 百度在线网络技术(北京)有限公司 | 敏感信息检测方法、装置、设备以及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6066181A (en) * | 1997-12-08 | 2000-05-23 | Analysis & Technology, Inc. | Java native interface code generator |
CN1746844A (zh) * | 2005-09-29 | 2006-03-15 | 浪潮电子信息产业股份有限公司 | 一种跨操作系统平台的机群系统监控和管理方法 |
-
2012
- 2012-08-22 CN CN2012102995814A patent/CN102867142A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6066181A (en) * | 1997-12-08 | 2000-05-23 | Analysis & Technology, Inc. | Java native interface code generator |
CN1746844A (zh) * | 2005-09-29 | 2006-03-15 | 浪潮电子信息产业股份有限公司 | 一种跨操作系统平台的机群系统监控和管理方法 |
Non-Patent Citations (1)
Title |
---|
王力生等: "一种基于Android的防火墙的研究与实现", 《计算机安全》, no. 10, 31 October 2009 (2009-10-31), pages 37 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014194856A1 (zh) * | 2013-06-08 | 2014-12-11 | 安徽量子通信技术有限公司 | 一种基于Android智能移动终端的通信密钥分配方法 |
CN104243144A (zh) * | 2013-06-08 | 2014-12-24 | 安徽量子通信技术有限公司 | 一种基于Android智能移动终端的通信密钥分配方法 |
US9668127B2 (en) | 2013-06-08 | 2017-05-30 | Quantumctek Co., Ltd. | Method for allocating communication key based on android intelligent mobile terminal |
CN104243144B (zh) * | 2013-06-08 | 2018-03-13 | 科大国盾量子技术股份有限公司 | 一种基于Android智能移动终端的通信密钥分配方法 |
CN108156180A (zh) * | 2013-06-08 | 2018-06-12 | 科大国盾量子技术股份有限公司 | 一种基于Android智能移动终端的通信密钥分配方法 |
CN108156180B (zh) * | 2013-06-08 | 2021-04-09 | 科大国盾量子技术股份有限公司 | 一种基于Android智能移动终端的通信密钥分配方法 |
CN106484490A (zh) * | 2015-09-02 | 2017-03-08 | 腾讯科技(深圳)有限公司 | 一种应用程序的跟踪分析方法和装置 |
CN106130959A (zh) * | 2016-06-12 | 2016-11-16 | 微梦创科网络科技(中国)有限公司 | 恶意应用识别方法及装置 |
CN106130959B (zh) * | 2016-06-12 | 2019-07-23 | 微梦创科网络科技(中国)有限公司 | 恶意应用识别方法及装置 |
CN107391219A (zh) * | 2017-07-07 | 2017-11-24 | 腾讯科技(深圳)有限公司 | 函数编译方法和装置 |
CN107423067A (zh) * | 2017-07-28 | 2017-12-01 | 山东超越数控电子有限公司 | 一种Java应用与非JNI规范二进制文件相互调用的方法 |
CN112084494A (zh) * | 2020-09-21 | 2020-12-15 | 百度在线网络技术(北京)有限公司 | 敏感信息检测方法、装置、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102867142A (zh) | 一种基于Android系统的安全防护方法 | |
KR101366402B1 (ko) | 가상 실행 시스템 및 가상 실행 시스템의 성능 향상 방법 | |
Vrijders et al. | Prototyping the recursive internet architecture: the IRATI project approach | |
EP4020198A1 (en) | Neutral host edge services | |
CN105359098B (zh) | 用于在多处理器系统中执行应用交换的方法、介质和系统 | |
CN106897611A (zh) | 无需root权限的安全虚拟移动应用程序运行环境系统及方法与应用 | |
CN112532538A (zh) | 流量的控制方法、装置、电子设备及计算机可读存储介质 | |
CN104951375A (zh) | 基于函数拦截技术的手机app性能数据采集方法 | |
CN111090823B (zh) | 一种页面应用的集成系统以及应用访问方法、装置和设备 | |
CN109670299A (zh) | 一种创建Python沙盒环境的方法及电子设备 | |
CN108958730A (zh) | 应用程序组件共享方法及装置、终端设备及可读存储介质 | |
CN106027612A (zh) | 一种远程智能监控系统 | |
CN111756629B (zh) | 设备接入overlay网络及通信的方法、装置、设备、网络及介质 | |
CN102023867A (zh) | 一种终端二次开发装置及二次开发平台构建方法 | |
CN115589383B (zh) | 基于eBPF的虚拟机数据传输方法、装置、设备、存储介质和程序产品 | |
CN103957214A (zh) | 一种教学用计算机网络数据包抓取方法 | |
Satoh | Mobile agents | |
CN104423932B (zh) | Javascript中调用二进制组件的方法 | |
Sergei | Cyber resilient platform for Internet of things (IIOT/IOT) ed systems: survey of architecture patterns | |
CN103279382A (zh) | 原生方式访问资源的方法、Java端、原生端及系统 | |
CN115208718B (zh) | 设备侧智能网关及其系统、和嵌入式设备适配控制方法 | |
CN114928562B (zh) | 一种图计算平台的流量处理方法和系统 | |
Wu et al. | Design and implementation of a fast dynamic packet filter | |
Cheng et al. | Design and implementation of network packets collection tools based on the android platform | |
CN104063229A (zh) | 一种数字家庭中间件系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130109 |