999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式設備中點虛擬化技術實現文件保護的應用

2021-06-28 00:42:01趙曉華趙天耳劉京京
現代信息科技 2021年1期

趙曉華 趙天耳 劉京京

摘? 要:嵌入式設備應用廣泛,具有存儲容量低、實時性要求高等特點。考慮在滿足嵌入式設備速度、尺寸和功耗等方面要求的同時,保證重要文件內容不被泄露是值得探究的問題。針對該問題提出一種點虛擬化技術實現文件保護的方法,實現重要文件的保護,防止非法用戶靜態分析、防動態調試、防進程的內存拷貝,提高設備安全性,對系統性能影響不高。

關鍵詞:嵌入式設備;點虛擬化技術;文件保護;內存拷貝

中圖分類號:TP309 ? ? ?文獻標識碼:A 文章編號:2096-4706(2021)01-0146-03

Application of Point Virtualization Technology in Embedded Device to

Realize File Protection

ZHAO Xiaohua1,ZHAO Tianer2,LIU Jingjing3

(1.Henan University Minsheng College,Kaifeng? 475001,China;2.Hangzhou Shuanxiang Software Co.,Ltd.,Hangzhou? 311100,China;3.Kaifeng Vocational College of Culture and Arts,Kaifeng? 475001,China)

Abstract:Embedded devices are widely used,with low storage capacity and high real-time requirements. While meeting the requirements of speed,size and power consumption of embedded devices,it is worth exploring to ensure that the contents of important files are not leaked. To solve the problem,proposes a method of file protection based on point virtualization technology,which can protect important files,prevent illegal users from static analysis,dynamic debugging,memory copy of process,and improve device security,and the impact on system performance is not high.

Keywords:embedded device;point virtualization technology;file protection;memory copy

0? 引? 言

嵌入式Linux系統近幾年來已成為研究熱點,目前正在開發的嵌入式系統中有近50%的系統選用Linux作為嵌入式操作系統。目前在Linux平臺上并沒有很好的工具保證數據的安全性。筆者參與系統內核安全研究,研究嵌入式系統中如何在不影響系統性能的情況下實現文件保護。目前常用的方法為加密,重要文件在發布前進行加密,運行時進行解密,運行結束后刪除文件。但在程序加載時磁盤上為明文數據,容易被入侵者捕獲。本文提出一種基于點虛擬化技術實現的安全保護策略,自定義實現Linux系統的內核模塊機制,可以實現防止非法用戶靜態分析、防動態調試、防進程的內存拷貝,多方面保護文件的安全性。

嵌入式Linux是將Linux系統進行修改,使之能在嵌入式計算機系統上運行的一種操作系統[1]。嵌入式Linux內核開源,可支持X86、PowerPC、ARM、XSCALE、MIPS、SH、68K、Alpha、SPARC等多種體系結構,并且可以移植到多種硬件平臺上,在嵌入式設備中,占用資源更少、運行更穩定、速度更快[2]。

Linux具有獨特的內核模塊機制,可以根據用戶需要實時添加或移除某些模塊,為嵌入式設備的功能補充完善提供了便利。但是Linux的高可用性、實時性對修改提出了更高要求[3]。為了實現嵌入式Linux系統重要文件的保護,本文提出基于虛擬化技術,在實現重要文件保護的同時,又不影響系統性能。

1? 相關技術概述

1.1? 密碼算法

對稱密碼算法(Symmetric Cryptographic Algorithm)又稱傳統密碼算法(Conventional Cryptographic Algorithm),加密密鑰和解密密鑰相同。

非對稱密碼算法(Asymmetric Cryptographic Algorithm),加密密鑰和解密密鑰不同,從一個密鑰很難推斷出另一個密鑰。非對稱密碼算法又稱為公開密鑰算法(Public Key Algrorithm)。公開密鑰算法用一個密鑰進行加密,而用另一個進行解密。加密密鑰可以公開,又稱公鑰,解密秘鑰必須保密,又稱私鑰[4]。

本文對加解密算法不做詳細探究,選用對稱密碼算法。

1.2? 虛擬化技術

虛擬化技術通常是指計算機在虛擬環境工作,可以有效解決資源緊張問題,在資源有限的情況下,根據不同用戶需求制定合理的使用方案,可大大提升系統的靈活性,可用性,提高系統安全性。虛擬化技術按照領域不同的應用進行劃分,可以分為服務器虛擬化、展現層虛擬化、桌面虛擬化和應用程序虛擬化。按照虛擬化程度的不同,可劃分為全虛擬化(Full Virtualization)、部分虛擬化(Partial Virtualization)、半虛擬化(Para-Virtualization)。按照層次不同,虛擬化包含硬件虛擬化和操作系統虛擬化。

1.2.1? 全虛擬化

全虛擬化下把虛擬平臺當作物理平臺,工作在虛擬平臺上的操作系統和運行在真實硬件之上是一樣的。用戶不需要通過虛擬機[5]就可以實現平臺共享,但是缺乏靈活性。

1.2.2? 部分虛擬化

部分虛擬化僅僅提供關鍵性計算組件或者指令集的模擬。操作系統需要做某些修改才能運行在部分虛擬化環境中[6]。

1.2.3? 半虛擬化

半虛擬化不對硬件進行模擬,虛擬機擁有獨立的運行環境,通過虛擬機管理程序共享底層的硬件資源。操作系統需要修改才能運行在半虛擬化環境中[7]。這種模式下,系統從不必要的工作中解放出來,最大限度的減少處理開銷,實現性能提升。

2? 文件保護的實現過程

2.1? 點虛擬化技術

Linux具有獨特的內核模塊機制,可以利用內核模塊添加系統調用。內核模塊雖然是內核的一部分,但是它是獨立于內核存在的。內核模塊至少包含init_module和cleanup_module兩個函數,分別為初始化函數和卸載函數。在內核模塊中添加系統調用步驟如下:

(1)Linux在2.4.8版本以后的內核不再導出符號sys_call_table,可通過兩個文件vmlinuz和system.map獲得sys_call_table的地址。在模塊初始化函數init_module中通過grepsys_call_table /boot/System.map獲得sys_call_table的地址,在cleanup_module模塊恢復原有的系統調用指針。

(2)在/fs/file.c和file.h中定義一個導出函數以實現交互,使用*sys_out = (unsigned long)sys_call_table;獨立模塊從內核獲取系統函數指針表。

(3)通過dh_guard_ptr = (void**)ko_in;將獨立內核模塊的函數的功能函數指針表傳遞給內核。

(4)定義struct _SAX_OPERATOR結構體描述進程,包括進程操作的文件fname,授權操作的程序文件名op,進程id。struct _SAX_OPERATOR結構體為:

typedefstruct _SAX_OPERATOR

{

charfname[256];

char op[256];

PID? id;

}SAX_OPERATOR, *PSAX_OPERATOR;

定義結構體struct _MY_FILE_INFO結構體描述被加載的文件,受保護的文件打開后的文件指針*exe和表示該文件是否需要解密的標識字段noCrypt。struct_MY_FILE_INFO結構體為:

typedefstruct _MY_FILE_INFO

{

struct file *exe;

charnoCrypt;

}MY_FILE_INFO;

(5)當某一進程對文件進行操作時,MY_FILE_INFO判斷文件是否需要解密,如果文件需要解密,則設置文件指針*exe。在fs/exec.c的do_execve方法中使用filename->name和our_process=current->pid獲取進程名和進程id,若是授權進程,將進程操作的文件fname,授權操作的程序文件名op,進程id記錄到SAX_OPERATOR中,并返回加密文件對應文件的屬性或解密后的明文數據。

上述步驟中,文件的解密和信息讀取等操作由獨立內核模塊實現,虛擬文件操作步驟。也稱為點虛擬化技術。

文件保護借助于點虛擬化技術,通過內核獨立模塊程序讀取文件,可以防止非法用戶靜態反編譯、防止動態調試獲取信息、隱藏進程實現防止進程的內存拷貝,在提高安全性的同時,不影響系統性能。

2.2? 獨立模塊讀取文件

Linux內核模塊文件(Kernal Object)的意義在于將內核的功能移到內核外邊,需要的時候插入內核,不需要時卸載即可。這樣的好處在于縮小內核體積,同時不用開源獨立模塊代碼。在點虛擬化的基礎上,不影響系統性能的前提下,進程訪問文件的流程如圖1所示。

在獨立模塊中實現文件保護流程主要包括文件發布前的加密,訪問過程中的權限判定,以下為具體內容:

(1)重要文件在發布前,采用對稱密碼算法對文件進行加密,并在其文件描述符中增加重要文件標識。

(2)啟動系統加載獨立的內核模塊,獨立內核模塊從內核獲取解密密鑰和加密文件路徑。

(3)當進程對文件進行操作時,由內核跳轉到獨立內核模塊進行分析。若是授權進程,且為重要文件,則獨立內存模塊會返回重要文件的屬性查詢信息及解密后的明文數據。其中,授權進程采用配置表方式進行配置。

經過測試,這種方法幾乎不影響系統性能,同時可以實現文件保護。

2.3? 防止靜態反編譯

目前常用的防止靜態反編譯的方法,通常包括代碼混淆、代碼加密、智能壓縮等策略。簡單的靜態反編譯策略是對程序加殼,但是加殼程序的運行依賴于自身的解密,容易被逆向破解,安全性不高。本文中將待發布的文件加密,然后為加密文件配置授權進程,只有授權進程訪問時才會返回文件的屬性和解密之后的明文數據,防止數據被靜態反編譯。

2.4? 防動態調試

首先通過vm_mmap獲取受保護程序的進程id到受保護進程數組,然后在do_filp_open函數中,函數原型為structfile*do_filp_open(intdfd,constchar*pathname,intopen_flag,intmode,intacc_mode),該函數會進行一系列flag和mode標志位的檢查,之后調用path_init()函數進行后續操作的初始化工作。在函數path_init內部,判斷*pathname是否為保護進程id的路徑,如果是,在kernal/exit.c中do_exit函數完成進程終止的任務,并置regs->regs[0] = 0。

2.5? 防進程的內存拷貝

眾所周知,進程是在內存中運行的,而內存中的數據又都寫入到/proc/*目錄下,可以通過隱藏/proc目錄中的文件實現防止進程的內存拷貝。為了防止進程的內存被拷貝,在fs/exec.c的do_execve方法中使用filename->name和our_process=current->pid獲取進程名和進程id,do_execve方法為:

int do_execve(struct filename *filename,

const char __user *const __user *__argv,

const char __user *const __user *__envp)

{

struct user_arg_ptr argv = { .ptr.native = __argv };

struct user_arg_ptr envp = { .ptr.native = __envp };

int ret = 0;

{

static char test[] = "/share/zserver";

char pname[300] = {0};

char param[300] = {0};

if((!filename->name) || (strlen(filename->name) > 256))

return do_execve_common(filename, argv, envp);

if(filename->name[0] == '.')

{

if(get_current_dir(pname))

return do_execve_common(filename, argv, envp);

strcat(pname, filename->name+1);

}

else

memcpy(pname, filename->name, strlen(filename ->name));

if(strlen(pname) == strlen(test) && strstr(pname, test))

{

our_process = current->pid;

sprintf(param, "id=%06d uid=%d\n", current->pid, current->parent->pid);

writeDahuaLog("(1)", pname, param);

}

}

ret = do_execve_common(filename, argv, envp);

return ret;

}

然后在/src/fs/proc/base.cexternintour_process實現進程的隱藏。通過這種方式,在/proc目錄下無法查看進程路徑,也就無法拷貝內存數據。

3? 結? 論

本文采用點虛擬化技術,并從防止靜態反編譯、防動態調試、防進程的內存拷貝等多角度、多層次實現文件保護,防止重要文件信息泄露。該方法專門針對嵌入式設備開發,滿足嵌入式特點需求,兼容性好,對系統性能影響不大。本文選用的加密算法為常用的對稱加密算法,沒有對加密算法進行深層研究,在今后的實際研究工作中可以使用更為復雜的加密算法,進一步保護文件的安全。

參考文獻:

[1] 張同光.嵌入式系統實用教程 [M].北京:電子工業出版社,2009.

[2] 孫瓊.嵌入式Linux應用程序開發詳解 [M].北京:人民郵電出版社,2006.

[3] 彭艦,陳良銀.嵌入式系統設計 [M].重慶:重慶大學出版社,2008.

[4] 崔愛國.電子商務安全與支付 [M].北京:電子工業出版社,2010.

[5] sunny725216.Linux操作系統及平臺虛擬化技術漫談 [EB/OL].(2011-12-25).https://blog.csdn.net/weixin_33859665/article/details/92113157.

[6] likaiwalkman_Victor. Linux vm [EB/OL].(2015-01-19).https://blog.csdn.net/likaiwalkman/article/details/42874353.

[7] zwan0518.【虛擬機】虛擬化技術以及KVM、QEMU與libvirt介紹 [EB/OL].(2013-08-30).https://blog.csdn.net/zwan 0518/article/details/10613481.

作者簡介:趙曉華(1990—),女,漢族,河南濮陽人,講師,碩士,研究方向:智能信息處理,軟件開發;趙天耳(1996—),女,漢族,河南鄭州人,工程師,本科,研究方向:操作系統安全;劉京京(1990—),女,漢族,河南開封人,助教,碩士,研究方向:圖像加密。

主站蜘蛛池模板: 欧美精品导航| 国产香蕉在线视频| 色AV色 综合网站| 毛片基地视频| 婷婷开心中文字幕| 天天综合网色| 国产成+人+综合+亚洲欧美| 精品国产免费观看| 99久久精品视香蕉蕉| 国产鲁鲁视频在线观看| 日本黄色a视频| 麻豆国产原创视频在线播放| AV片亚洲国产男人的天堂| 91精品小视频| 日本爱爱精品一区二区| 自慰网址在线观看| 新SSS无码手机在线观看| 日韩黄色精品| 日韩麻豆小视频| 欧美中文字幕在线视频 | 日韩不卡免费视频| 免费人欧美成又黄又爽的视频| 国产手机在线小视频免费观看 | 六月婷婷精品视频在线观看| 日韩少妇激情一区二区| 国产成人综合久久精品尤物| 无码高潮喷水专区久久| 天堂亚洲网| 亚洲日韩久久综合中文字幕| 国内熟女少妇一线天| 红杏AV在线无码| 免费国产高清视频| 午夜一区二区三区| h网址在线观看| 成人国产一区二区三区| 99精品影院| 国产免费网址| 自拍亚洲欧美精品| a网站在线观看| 国产一在线| 伊人AV天堂| 91精品国产自产91精品资源| 久久综合丝袜日本网| 国产精品免费久久久久影院无码| 国产成本人片免费a∨短片| 为你提供最新久久精品久久综合| 久久这里只有精品国产99| 最新亚洲人成网站在线观看| 无码一区二区三区视频在线播放| 无码中文字幕乱码免费2| 国产精品女熟高潮视频| 99久久精品国产精品亚洲| 国产乱子伦一区二区=| 亚洲午夜福利在线| 国产精品无码作爱| 国产欧美一区二区三区视频在线观看| 久久99国产综合精品1| 91在线免费公开视频| 美女无遮挡拍拍拍免费视频| 亚洲性视频网站| 又大又硬又爽免费视频| 777午夜精品电影免费看| 人妻精品全国免费视频| 欧美国产日韩在线观看| 无码日韩精品91超碰| 欧美日韩第三页| 亚洲娇小与黑人巨大交| 中文字幕 欧美日韩| 91系列在线观看| 免费无码在线观看| 亚洲欧美在线看片AI| 亚洲视频欧美不卡| 欧洲日本亚洲中文字幕| 亚洲福利网址| 99精品国产自在现线观看| 国产精品吹潮在线观看中文| 免费在线a视频| 久久人人爽人人爽人人片aV东京热 | 2021国产精品自产拍在线观看 | 国产免费羞羞视频| 在线看片国产| 国产成人综合亚洲欧美在|