吳 一 鳴
(南寧供電局信息中心 廣西 南寧 530031)
當前,各大國企均將移動作業平臺系統設立為重點發展的信息化方向,從總公司層面規劃建設移動作業總體平臺,在移動作業總體平臺上各專業線業務開發其移動作業app。移動作業app基本都是Android版本,運行于時下應用最廣的Android系統移動智能終端上。
移動智能終端使用的是基于Android的操作系統,是終端廠家二次開發的智能操作系統。Android系統因為其開放性、開源性獲得了智能系統市場的超過半數的份額,開放性引入不安全因素的同時,開源性提供定制基于Android的移動智能操作系統功能的空間。
本文通過研究Android系統的開源源碼,修改內核代碼,定制實現互聯網加密傳輸的系統功能,達到安全通信、限制非工作應用、節省通信流量等目的。研究成果充分滿足移動作業系統作業終端的信息安全要求,可作為高度定制版本的企業版專用移動作業智能操作系統。
各大國企移動作業平臺的移動智能終端,多為直接應用終端廠家的硬件及操作系統,因此實際使用中存在的問題有:
(1) 不符合信息安全要求。移動作業傳輸的數據屬于企業涉密內容,是企業的數據資產,在運營商公用網絡中明文傳輸情況下,存在被截獲、非法收集的隱患。
(2) 違規安裝非工作app。因移動智能終端權限未受限制,終端上常會有安裝游戲、視頻、娛樂等非工作app的情況,使用者可以隨意安裝各種應用。除了移動作業外,終端會被另作他用。
(3) 非工作流量占比高。移動作業app對流量需求不高,主要傳輸格式化數據以及靜態圖片。但在實際工作中,因為非工作app的流量損耗,企業需要為終端訂購大流量的通信套餐,增加了不必要的移動作業平臺的運營成本。
針對上述問題,本文提出了一個技術方案,對移動智能終端的互聯網傳輸進行加密,傳輸加密的流程圖如圖1所示。

圖1 移動智能終端的互聯網加密傳輸數據流
移動作業app向移動作業平臺發送加密了互聯網網絡數據包,移動作業平臺收到并對數據包解密,得到正確的請求數據包,完成響應,移動作業終端與平臺交互正常。移動作業app數據在運營商公用網絡中,傳輸的是加密后的數據包,大大降低了非法監聽、收集破解的隱患,解決了第一個問題。
非工作app的互聯網網絡數據包加密后發送到非工作應用的服務器端,非工作應用的服務器端無法解密,無法響應非工作app的互聯網請求。在此情況下,非工作app無法使用,安裝再多的非工作app都形同虛設,更無法消耗通信流量。解決了第二個和第三個問題。
通過上述需求分析,對移動智能終端Android系統的互聯網傳輸加密可以解決移動平臺終端的實際使用問題,實現基于Android的互聯網加密傳輸功能便是開發目標。
移動智能終端接入的移動互聯網是基于移動通信技術的互聯網絡,移動互聯網數據傳輸流程圖如圖2所示:app生成互聯網數據,該互聯網數據經過移動終端轉換,以通信網絡數據形式發出,進入通信網絡。在通信網絡中傳輸到通信網關設備,通信網關設備將通信網絡數據轉換為互聯網數據,進入互聯網。通信網絡數據在移動終端與通信網關設備之間傳輸過程,即為移動通信技術。

圖2 移動互聯網數據傳輸過程
移動互聯網的協議體系是基于TCP/IP協議棧,移動互聯網的應用層數據經過傳輸層、網絡層及網絡接口層協議封裝后,進入物理層,由通信網絡相應協議完成移動通信傳輸,傳輸流程圖如圖3所示。對于每臺移動智能終端,移動互聯網數據的收發均需要使用TCP協議。對移動智能終端操作系統的TCP協議修改,等同于互聯網傳輸的加密。

圖3 移動通信協議棧中的TCP/IP協議
Android的系統架構和其操作系統一樣,采用了分層的架構。從架構圖看,Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和Linux核心層。Android的核心系統服務依賴于Linux Kernel(內核),如安全性、內存管理、進程管理、網絡協議棧和驅動模型,Android系統體系結構圖如圖4所示。對Android系統的TCP協議修改,是在Linux Kernel(內核)實現的。

圖4 Android系統體系結構
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協議正常。
將更新了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的互聯網加密傳輸功能的實現,達到預期需求。
本次針對移動智能終端,基于Android的互聯網加密傳輸功能設計與實現,達到安全通信的目的,實現了限制非工作應用、節省通信流量的效果,解決了企事業單位移動平臺終端的實際使用問題。
本次功能設計與實現是移動操作系統定制開發的實踐,定制的移動智能操作系統功能,例如信息安全、權限管控、統一UI、續航能力等,更符合業務實際使用需求,有廣泛需求前景。同時,在系統體系中,平臺“基礎”決定上層應用“建筑”。對移動操作系統的深度優化,可以作為移動應用生態環境基礎,例如規范應用app開發、移動安全通信協議等,形成企事業移動應用體系的基礎規范,占得行業先機。