一种基于Android系统的安全防护方法

文档序号:6375454阅读:102来源:国知局
专利名称:一种基于Android系统的安全防护方法
技术领域
本发明涉及计算机操作系统,具体的说,是涉及一种基于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系统的智能终端远离外部网络攻击。


图I为Android底层开发与架构示意图;图2为本发明的Android底层组件开发流程图;图3为初始多叉树结构示意图4为经过简化后的多叉树结构示意图。
具体实施例方式下面结合附图对本发明的技术方案作进ー步的描述。本发明基于Android移动操作系统和智能終端网络通信安全的研究,结合传统防火墙解决方案提出了该平台下的网络防火墙设计模型。并提出了一个底层包过滤的安全机制,该安全机制的实现基本流程如下一、android框架结构,网络数据包,以及数据过滤算法研究I、Android的系统架构Android操作系统从顶至下共包含以下四个层次应用层,应用框架层,组件库层和虚拟机,Linux内核层。在应用层An droid包含 了一套核心应用(coreapplications) :Email客户端、SMS (短信)序、日历、G oogle地图、网页浏览器、联系簿等等。所有的应用均使用JAVA语言开发。在应用框架层在开发者通过使用核心的应用程序调用Android框架提供的API。这个应用程序结构被设计成方便复用的组件。任何的应用程序都可以公布它的功能,而任何其他的应用程序都可以使用这些功能(涉及到安全问题的功能将会被框架禁止)。在组件库层=Android包含了ー套C/C++函数库,供Andro i d系统使用。开发者可以通过Andro i d应用程序框架使用这些库函数提供的功能。另外还包含了ー套核心库,这些库提供了绝大多数JAVA编程语言核心库的功能。每个Android应用程序都运行于自己的进程中,具有自己的Dalvik虚拟机的实例,Dalvik使得设备可以高效地运行多个虚拟机,且针对手持设备的较小内存做了优化。2、Android底层组件的开发在应用层可以说Android的提供的API已经足够的強大,可以提供大部分的功能支持。但是当开发者想要从事与底层硬件较为紧密的开发工作的时候就会遇到没有相应的API可以提供支持的尴尬。比如要进行防火墙的开发,就一定会涉及到底层数据包的收发和过滤,但是由于上层接ロ出于安全性的考虑就没有提供。这就给开发者带来比较大的麻烦。所以在这种情况下我们就需要ー种方法用来直接获取底层Linux接ロ,从而进行一些底层的开发。比如防火墙,或者是ー些设备驱动。而且本身Androi d的组件库就是用C/C++编写的,并且ー些底层与本地硬件交互的功能就是通过JNI实现的。所以这种方式并不违背Android的整个架构。附图I为Android底层开发与架构示意图。3、Android底层组件的开发步骤參见图2, Android底层组件的开发步骤如下⑴按照Android的Linux2. 6内核编写底层模块,并预留接ロ共JNI函数调用。(2)按照JNI的规范编写JNI函数,并且根据需要调用底层模块的功能函数对其进行封装。(3)利用Android自带的编译器将其编译成模块O. so)形式。(4)使用Android自带的调试工具adb将编译好的模块加载到Android手机或模拟器中。(5)按照Android SDK的规范编写前台Π及用户处理程序,并调用加载好的模块(IoadLibraryO)所提供的接ロ。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=O Λ S=any Λ D=s Λ P=tcp Λ T=25 — a,I=O Λ S=any Λ D=s Λ P=any Λ T=any — d,I=O Λ S=m Λ D=any Λ P=any Λ T=any — d,I=I Λ S=h Λ D=any Λ P=any Λ T=any — a,I=I Λ S=any Λ D=any Λ P=any Λ T=any — a我们可以发现规则之间有冲突与冗余,所以我们这里引入多叉树来解决规则冲突问题,以期尽量消除冲突问题从而实现精简规则。先根据初始的规则集建立多叉树,如附图3所示。然后我们可以发现在第二层的Fl有节点冗余,进行进一步删减,如图4所示。从而我们得到相对精简得多的多叉树图。而且由于多叉树的特点,事实上现在根据树来建立的规则集不可能存在冲突。当防火墙收到ー个数据包时,通过对其s k b u f f结构的解析,分离出相应的端口号,源地址,目的地址等等需要的信息。再从根部开始深度优先遍历我们刚刚建立的无冲突多叉树,遍历到一枝的叶子,从而得到处理这个数据包的采取动作结果即接受还是丢弃(a或者d)。ニ、基于android系统的安全机制的具体实现步骤I、底层包过滤模块的实现(I)驱动设备的注册if ((major=register_chrdev(LWFW_MAJ0R)LWFW_NAME&lwfw_fops))<0) {printk("AndFirewall:Module installationaborted. \n");return major;}Η确保设备正在使用的位被清空
lwfw—ctrl_in—use"=lwfw—ctrl_in—use;printk(^XnAndFirewall:Control device successfullyregi stered. \n");//注册网络钩子结构nfkiller. hook=lwfw_hookfn;nfkiller. hooknum=0; // 第一层钩子nfkiller. pf=PF—INET;//面向 IPV4nfki 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!=IPPR0T0—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安全模型则是我们进ー步研究的方向。
权利要求
1.一种基于Android系统的安全防护方法,其特征在于,包括以下步骤 a.按照Android的Linux2.6内核编写底层模块,并预留接ロ共JNI函数调用; b.按照JNI的规范编写JNI函数,并且根据需要调用底层模块的功能函数对其进行封装; c.利用Android自带的编译器将其编译成模块形式; d.使用调试工具将编译好的模块加载到Android系统中; e.编写前台UI及用户处理程序,并调用加载好的模块所提供的接ロ。
2.如权利要求I所述的ー种基于Android系统的安全防护方法,其特征在于,步骤d中,使用Android自带的调试工具adb将编译好的模块加载到Android系统中。
3.如权利要求I或2所述的ー种基于Android系统的安全防护方法,其特征在干,步骤e中,按照Android SDK的规范编写前台UI及用户处理程序。
全文摘要
本发明涉及计算机操作系统,其公开了一种基于Android系统的安全防护方法,有效防护基于Android系统的移动终端远离外部网络攻击。该方法具体包括a.按照Android的Linux2.6内核编写底层模块,并预留接口共JNI函数调用;b.按照JNI的规范编写JNI函数,并且根据需要调用底层模块的功能函数对其进行封装;c.利用Android自带的编译器将其编译成模块形式;d.使用调试工具将编译好的模块加载到Android系统中;e.编写前台UI及用户处理程序,并调用加载好的模块所提供的接口。本发明适用于对基于Android系统的移动终端上的安全防护。
文档编号G06F21/55GK102867142SQ20121029958
公开日2013年1月9日 申请日期2012年8月22日 优先权日2012年8月22日
发明者岳高强 申请人:四川长虹电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1