基于Android的互联网加密传输功能设计与实现
2018-12-13吴一鸣
吴 一 鸣
(南宁供电局信息中心 广西 南宁 530031)
0 引 言
当前,各大国企均将移动作业平台系统设立为重点发展的信息化方向,从总公司层面规划建设移动作业总体平台,在移动作业总体平台上各专业线业务开发其移动作业app。移动作业app基本都是Android版本,运行于时下应用最广的Android系统移动智能终端上。
移动智能终端使用的是基于Android的操作系统,是终端厂家二次开发的智能操作系统。Android系统因为其开放性、开源性获得了智能系统市场的超过半数的份额,开放性引入不安全因素的同时,开源性提供定制基于Android的移动智能操作系统功能的空间。
本文通过研究Android系统的开源源码,修改内核代码,定制实现互联网加密传输的系统功能,达到安全通信、限制非工作应用、节省通信流量等目的。研究成果充分满足移动作业系统作业终端的信息安全要求,可作为高度定制版本的企业版专用移动作业智能操作系统。
1 需求分析
各大国企移动作业平台的移动智能终端,多为直接应用终端厂家的硬件及操作系统,因此实际使用中存在的问题有:
(1) 不符合信息安全要求。移动作业传输的数据属于企业涉密内容,是企业的数据资产,在运营商公用网络中明文传输情况下,存在被截获、非法收集的隐患。
(2) 违规安装非工作app。因移动智能终端权限未受限制,终端上常会有安装游戏、视频、娱乐等非工作app的情况,使用者可以随意安装各种应用。除了移动作业外,终端会被另作他用。
(3) 非工作流量占比高。移动作业app对流量需求不高,主要传输格式化数据以及静态图片。但在实际工作中,因为非工作app的流量损耗,企业需要为终端订购大流量的通信套餐,增加了不必要的移动作业平台的运营成本。
针对上述问题,本文提出了一个技术方案,对移动智能终端的互联网传输进行加密,传输加密的流程图如图1所示。
图1 移动智能终端的互联网加密传输数据流
移动作业app向移动作业平台发送加密了互联网网络数据包,移动作业平台收到并对数据包解密,得到正确的请求数据包,完成响应,移动作业终端与平台交互正常。移动作业app数据在运营商公用网络中,传输的是加密后的数据包,大大降低了非法监听、收集破解的隐患,解决了第一个问题。
非工作app的互联网网络数据包加密后发送到非工作应用的服务器端,非工作应用的服务器端无法解密,无法响应非工作app的互联网请求。在此情况下,非工作app无法使用,安装再多的非工作app都形同虚设,更无法消耗通信流量。解决了第二个和第三个问题。
通过上述需求分析,对移动智能终端Android系统的互联网传输加密可以解决移动平台终端的实际使用问题,实现基于Android的互联网加密传输功能便是开发目标。
2 技术原理
2.1 TCP协议
移动智能终端接入的移动互联网是基于移动通信技术的互联网络,移动互联网数据传输流程图如图2所示:app生成互联网数据,该互联网数据经过移动终端转换,以通信网络数据形式发出,进入通信网络。在通信网络中传输到通信网关设备,通信网关设备将通信网络数据转换为互联网数据,进入互联网。通信网络数据在移动终端与通信网关设备之间传输过程,即为移动通信技术。
图2 移动互联网数据传输过程
移动互联网的协议体系是基于TCP/IP协议栈,移动互联网的应用层数据经过传输层、网络层及网络接口层协议封装后,进入物理层,由通信网络相应协议完成移动通信传输,传输流程图如图3所示。对于每台移动智能终端,移动互联网数据的收发均需要使用TCP协议。对移动智能终端操作系统的TCP协议修改,等同于互联网传输的加密。
图3 移动通信协议栈中的TCP/IP协议
2.2 Android系统体系结构
Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层。Android的核心系统服务依赖于Linux Kernel(内核),如安全性、内存管理、进程管理、网络协议栈和驱动模型,Android系统体系结构图如图4所示。对Android系统的TCP协议修改,是在Linux Kernel(内核)实现的。
图4 Android系统体系结构
3 功能实现
Android系统的互联网加密传输功能开发软硬件环境表如表1所示。
表1 开发软硬件环境表
Kernel源代码中,net模块的ipv4 cp.c文件对应tcp协议,其中函数tcp_sendmsg实现tcp消息传输,传输内容关键在msghdr和iovec两个结构体里,如图5所示。
图5 ipv4_tcp.c文件中的tcp_sendmsg函数
msghdr结构体的解析:
struct msghdr {
void *msg_name;
//网络包指向
//sockaddr_in,存数据包的目的地址
//指向sockaddr_nl,向内核发数据
Int msg_namelen;
//消息地址长度
struct iovec *msg_iov;
//结构体iovec指针
__kernel_size_t msg_iovlen;
//结构体iovec长度标志
void *msg_control;
//空指针
__kernel_size_t msg_controllen;
unsigned msg_flags;
//消息标志
};
iovec结构体的解析:
/* Structure for scatter/gather I/O. *//结构体定义
struct iovec
{
void *iov_base; /* Pointer to data. *//数据指针
size_t iov_len; /* Length of data. *//数据长度
};
针对这两个结构体,写了2个函数:
ipv4_iov_base_invert(char str1[])和ipv4_iovec_invert(struct msghdr *msg),用来倒置tcp的传输内容,例如,tcp传输内容为abcdefg,倒置后为gfedcba,代码如图6所示。
图6 2个函数用来修改tcp的传输内容
在tcp.c的tcp_sendmsg函数中调用自定义的TCP传输内容倒置函数,如图7所示。
图7 tcp_sendmsg函数中调用ipv4_iovec_invert函数
编译Kernel,加载Kernel。
然后测试修改。
Ubuntu 14.04_2 64bit的LTS的初始Kernel是3.16.0版本的。
Kernel测试结果如图8所示。
图8 Kernel测试结果
(1) HTTP失效,对地址www.bing.com的访问,浏览器回应“Bad Request—Invalid URL”,地址无法识别,说明TCP传输内容倒置函数生效;
(2) Kernel版本已更新,输入Linux 命令“cat/proc/version”,显示“Linux version 3.13.11”,Kernel版本已经从3.16.0变成3.13.11;
(3) ping 8.8.8.8正常,ICMP协议正常,说明IP协议正常。
4 验 证
将更新了Kernel的Android系统刷入移动智能终端,可以看到下图中终端系统的“内核版本”有笔者的姓名拼音“wuyiming”,说明该系统是笔者定制Kernel后编译的,如图9所示。
图9 开发系统刷入智能终端
在终端上运行QQ应用app和微信应用app,均显示“连接”问题,说明无法在此终端上运行第三方应用app,如图10所示。
图10 第三方应用移动网络连接异常
在终端上某企业的移动应用app“eSpace”,运行正常,各功能模块均可使用,如图11所示。
图11 企业定制应用运行正常
通过对Android系统Kernel的TCP协议修改,解决了前文提到的移动作业平台三个问题。
(1) 违规安装非法app:第三方非工作app无法使用,安装无意义。
(2) 非工作流量占比高:第三方非工作app无法使用。
(3) 不符合信息安全要求:传输加密,保障信息安全。
基于Android的互联网加密传输功能的实现,达到预期需求。
5 结 语
本次针对移动智能终端,基于Android的互联网加密传输功能设计与实现,达到安全通信的目的,实现了限制非工作应用、节省通信流量的效果,解决了企事业单位移动平台终端的实际使用问题。
本次功能设计与实现是移动操作系统定制开发的实践,定制的移动智能操作系统功能,例如信息安全、权限管控、统一UI、续航能力等,更符合业务实际使用需求,有广泛需求前景。同时,在系统体系中,平台“基础”决定上层应用“建筑”。对移动操作系统的深度优化,可以作为移动应用生态环境基础,例如规范应用app开发、移动安全通信协议等,形成企事业移动应用体系的基础规范,占得行业先机。