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

一種透明加解密文件系統的設計與實現

2017-09-23 02:57:13顏智潤李春杰梁會武
計算機應用與軟件 2017年9期
關鍵詞:用戶

顏智潤 李春杰 梁會武 位 珣

(中國科學技術大學蘇州研究院 江蘇 蘇州 215000)

一種透明加解密文件系統的設計與實現

顏智潤 李春杰 梁會武 位 珣

(中國科學技術大學蘇州研究院 江蘇 蘇州 215000)

提升計算機安全性,保護敏感數據成為目前的熱點問題。加密文件系統作為一種數據加密存儲技術可以有效防止非法入侵者竊取用戶機密數據。設計一種基于堆疊式文件系統的安全防護策略,屏蔽了具體文件系統的操作差異,實現透明高效的加密、解密。在不改變用戶使用習慣的前提下添加加密、解密過程,用戶使用時將密文形式存儲的數據解密為明文,加、解密算法以當前較為成熟的Blowfish算法為基礎在內核層完成,并且每個文件擁有獨立密碼,極大增加了破解難度,整體實現性能和易用的平衡。

加密文件系統 信息安全 透明

0 引 言

近年來,計算機安全技術不斷發展成熟,人們對于計算機系統安全問題考慮得越來越多,對于計算機系統的安全性提出了更嚴格的要求。目前國內涉及操作系統的文件加密大部分都是針對在Windows操作系統下的文件加密軟件,針對Linux系統的文件加密產品較少。同時國內外已有的數據文件加密產品普遍存在以下幾個問題:一是可移植性差,大部分都是針對Windows操作系統進行設計和開發,對于Linux環境下的數據安全產品很少;二是效率和性能較差,目前已有的較成熟文件加密系統在安全性、穩定性、可移植性、系統維護便捷性等方面存在一定的不足,在實際應用中難以圓滿完成用戶所期待的任務功能。

本文提出基于Linux的透明文件加密系統是防止存儲數據泄密的產品。該系統在不改變用戶使用習慣和計算機存儲文件格式和狀態的情況下,對文件進行實時、透明的加/解密。保密文件數據在存儲介質中以密文形式存放,對于沒有訪問權限的用戶,即使通過非法手段得到存儲設備,也無法獲取明文信息,所有未經授權的數據,都將以亂碼形式出現。

透明加解密文件系統工作模式如下:

圖1 工作模式圖

用戶寫操作通過加密文件系統將明文數據轉化為密文后寫入在存儲設備中,讀操作將密文轉化為明文。

1 文件系統架構分析

計算機中可以擁有多種不同具體的文件系統類型,如常見的ext2、ext3、ISO9660等,傳統Linux文件系統管理通過虛擬文件系統VFS(Virtual Filesystem Switch)進行管理[1]。為具體文件系統提供了通用的接口,使得上層進程在進行與文件系統相關的操作時可以使用同一組系統調用,而內核中根據不同的文件系統執行對應的具體操作。VFS模型,如圖2所示。

圖2 堆疊式文件系統讀過程模型

VFS引入了一個通用的文件模型,這個模型能夠表示所有支持的文件系統[2]。由文獻[1]可知, VFS對用戶屏蔽了具體文件系統的操作細節。而堆疊式文件系統位于VFS層之下,提供了相應讀寫函數接口。讀過程模型如圖3所示。

圖3 堆疊式文件系統讀過程模型

在堆疊式文件系統中添加加解密模塊,用戶在讀文件時,從存儲介質中取出的密文數據通過解密模塊解密為明文后傳給用戶層;用戶執行寫文件時,用戶層傳遞的明文數據通過加密模塊加密后存入存儲介質。

堆疊式文件系統完美實現了兼容和透明兩個方面的需求,本文基于此提出透明加解密文件系統的設計方案。

由文獻[2-3]可知,堆疊式文件系統Wrapfs是符合以上描述的一種理想的空白文件系統模型,為使用者提供了通用的讀寫接口wrapfs_read 和wrapfs_write,符合本文的設計理念。本方法基于Linux-4.2.5版本內核,采用wrapfs文件系統進行研究、設計。

2 Linux透明加密文件系統的設計

文件系統架構以Linux 4.2.5版本內核源碼為基礎,針對具體文件系統ext2,對讀操作進行分析跟蹤。在此基礎上,設計本文提出的透明加解密文件系統。

2.1 Linux文件系統讀寫過程

用戶read()操作的系統調用從用戶層進入內核層,如圖4所示。

圖4 Linux系統read()系統調用流程圖

1) 當用戶層程序調用read() 時,操作系統將其轉換成sys_read(),sys_read() 獲得文件描述符fd、用戶緩存指針buf以及讀入緩存字節數count[4]。

2) 然后調用vfs_read(),如果已經定義讀操作,則使用該讀操作,否則調用new_sync_read(),通過代碼跟蹤,通常具體文件系統最后也會調用該函數。

3) 接著跟蹤fs/mm/filemap.c中的generic_file_read_iter()可知,該函數轉而調用具體文件系統的readpage() 函數,對于ext2而言實際調用ext2_readpage()。具體讀文件操作將讀到數據返回給用戶層,完成整個讀操作。

2.2 透明加解密文件系統的設計

本文通過對Linux文件系統文件讀寫操作的分析跟蹤[4-7],利用VFS層屏蔽具體文件系統操作差異的特性提出透明加解密策略。

Linux系統不同的讀取方式如read,fread,cin等,本質上都是通過調用vfs_read()函數,使用具體文件系統的讀函數,讀取特定大小的數據塊到緩沖區。針對這一工作模式,考慮在對具體文件系統的讀寫操作之前添加加解密功能,以避免觸及具體文件系統的數據。對具體文件系統傳回的數據,經解密模塊處理后再傳回上層緩存空間。

結合前一節對linux文件系統讀寫過程的分析,在wrapfs層的wrapfs_read()中添加解密單元,在wrapfs_write()函數中添加加密單元。以寫過程為例,系統調用sys_write()進入VFS層,vfs_write()得到用戶層傳遞的數據塊內存區域地址,之后映射到wrapfs_write()函數,接著調用加密單元Blowfish_encode_men()對內存中數據進行加密,并覆蓋內存原先的明文數據,返回wrapfs_write()繼續調用具體文件系統寫函數,將密文數據寫入硬盤等設備。透明加密寫文件流程,如圖5所示。

圖5 透明加解密寫文件流程圖

詳細工作過程如下:

1) 首先需要將wrapfs 注冊到內核中[2-3],此過程在全局鏈表file_systems中添加wrapfs文件系統的鏈接。

2) 執行掛載wrapfs操作,此時會在內核中創建一個path結構,其中包含底層文件系統掛載點dentry和superblock等內容。并創建一個新的inode節點,將底層文件系統的superblock和inode節點信息綁定到對應的private data中。關鍵代碼如下:

/* 包含底層文件系統掛載點的dentry和superblock */

struct path {

struct vfsmount *mnt;

struct dentry *dentry;

};

/* 創建新的inode節點,并且將底層inode和superblock綁定到private data中 */

/* sb代表wrapfs層的superblock */

/* lower_sb為底層文件系統的superblock */

inode = wrapfs_iget(sb, d_inode(lower_path.dentry));

/* 綁定底層superblock到private data */

static inline void wrapfs_set_lower_super(struct super_block *sb, struct super_block *val){

WRAPFS_SB(sb)->lower_sb = val;

}

/* superblock to private data */

#define WRAPFS_SB(super) ((struct wrapfs_sb_info *)(super)->s_fs_info)

3) sys_write()調用fdget_pos()以用戶層傳遞的fd號為參數獲取對應file結構體對象(在執行打開文件時創建file結構,該結構由第(2)步中的結構體信息填充);之后調用vfs_write(),通過獲取到的file結構體找到具體寫函數wrapfs_write(),見圖5中①過程。

/* 找到對應文件系統的寫函數 */

file->f_op->write(file, buf, count, pos); //

4) 在wrapfs_write()中開辟的內核空間中對用戶層傳遞的數據執行加密操作,見圖5中③過程;將加密數據覆蓋原明文數據,見圖5中②過程;調用wrapfs_lower_file獲取底層文件系統file結構,再次調用vfs_write將加密后數據寫入底層文件系統中,見圖5中④⑤過程。

5) 將寫字節數ret返回給上層。完成文件系統的一次寫操作。

讀文件操作與寫操作類似,簡要介紹如下,用戶空間的read() 函數在內核中的服務例程為sys_read(),映射到wrapfs_read() 函數,通過vfs_read() 進入具體文件系統進行相應的讀操作。之后進入解密單元對相應密文數據解密,將解密后數據返回給用戶層。

3 透明加解密模塊的實現

3.1 加密算法的選取

基于密鑰的加密算法主要有對稱算法和非對稱算法。非對稱算法速度較慢,主要應用于數字簽名,密鑰分配等任務,對于本文設計的文件加密并不合適,所以選擇以下幾種比較成熟、公認比較安全的算法進行比較,包括DES、3DES、AES和Blowfish等算法,測試結果如表1所示。

表1 幾種常用的對稱加密算法加解密測試

Blowfish自公布以來,仍未發現實際有效的攻擊手段,其算法的子密鑰由算法本身生成,使得加密后數據不可辨認,密鑰分析也極其困難。通過比較,本文在設計加密文件系統時采用Blowfish算法。

3.2 加密算法的實現

為實現透明加解密功能,本文以堆疊式文件系統為框架,采用已有成熟算法Blowfish,在內核層實現加密解密操作。

初始化掛載文件系統時,以用戶名,掛載點路徑和用戶輸入密碼為參數,調用wrapfs_get_encode_pwd產生固定長度序列,調用該函數可以把用戶輸入的簡單密碼轉化為定長的隨機序列,避免字典攻擊等暴力破解手段非法獲取密碼。用戶層發起讀寫請求,陷入內核態后,在內核態內存空間處理數據后,把密文寫入底層或者把明文返回給用戶空間。

由文獻[8-10]可知,BlowFish算法由兩部分組成,密鑰擴展和數據加密,密鑰擴展用于把密鑰擴張到4 168字節的子密鑰,數據加密使用簡單的16輪迭代,主要使用加法運算異或運算。加密時通過給定的密鑰key對源密鑰,即通常所說的兩個固定的“盒”pbox[18]和sbox[4,256]進行變換,得到下一步加密信息所需的key_pbox和key_sbox。

BlowFish算法中,有一個核心加密函數: gBlowFishDeCode。該函數輸入64位信息,運算后,以64位密文的形式輸出[12]。用BlowFish算法加密信息,需要兩個過程,該算法的加解密流程圖如圖6所示。

圖6 Blowfish文件加密解密流程圖

文件加密過程描述如下:

1) 密鑰預處理

BlowFish算法的源密鑰——p盒和s盒是固定的[10]。首先得到key,用這個key對p盒和s盒進行變換,得到下一步信息加密所要用的gKeyBoxes。

2) 信息加密

讀入64位數據,分別獲取其高32位和底32位,操作為xL0 = data64 >> 32;xR0 = data64 & 0x0000 0000ffffffff;然后將xL0與gKeyBoxes進行異或操作,保存在XR中,接著調用gBlowFishFunction(xR) 函數后與xR0異或保存在XL中。之后xR0 = xR,xL0 = xL,并xL = xR0 ^ gKeyBoxes[0],xR = xL0 ^ gKeyBoxes[1]。最后將二者合并即可得到密文64位。

解密過程簡述如下:

1) 密鑰預處理

密鑰預處理的過程與加密時完全相同。

2) 信息解密

信息解密的過程就是把信息加密過程的gKeyBoxes逆序使用即可。

4 性能分析

選取1、2、4到64 MB文件進行加密解密測試,得到時間結果統計,如圖7所示。加解密時間基本一致,并且隨文件體積增大而遞增。

圖7 加解密相同類型不同文件大小時間統計(blowfish)(緩存1 KB)

測試29.3 MB文件分別以 0.5、1、2到10 KB緩存大小進行加解密測試,在一定范圍內,加密過程較慢,加解密時間和緩存大小基本無關。測試結果如圖8所示。

圖8 緩存大小對算法時間的統計(blowfish)

加解密系統無可避免會損失一部分的性能,加解密過程中的其他操作也會對時間產生一定影響。測試結果表明,本文將加解密過程置于內核層中,提高了安全性的同時,對性能損耗基本可以降到用戶接受范圍內。

5 結 語

本文提出并實現一種基于堆疊式文件系統的透明加密、解密系統。以堆疊式文件系統為框架結合VFS層操作實現對任意文件類型的加解密操作。使透明加密具有更高的安全等級,更低的性能損失,實現了兼容性強、對用戶透明、加密速度快和安全性高的加解密文件系統。

[1] Bovet D P,Cesati M.Understanding the Linux kernel[M].3rd ed.O’Reilly Media,Inc.,2005.

[2] Zadok E,Badulescu I.A stackable file system interface for Linux[C]//Proc of the 5th Annual Linux-Expo Conference Proceedings,1999,94.

[3] Zadok E,Badulescu I,Shender A.Extending File Systems Using Stackable Templates[C]//Proc of the 1st USENIX Annual Technical Conference,General Track,1999:57-70.

[4] Rodriguez C S,Fischer G.The Linux kernel primer:a top-down approach for x86 and PowerPC architectures[M].Pearson Education India,2006.

[5] 馬克斯韋爾,馮銳.Linux內核源代碼分析[M].機械工業出版社,2000.

[6] 毛德操,胡希明.Linux內核源代碼情景分析[M].杭州:浙江大學出版社,2001.

[7] Stevens W R.UNIX環境高級編程:英文版[M].機械工業出版社,2002.

[8] Nie T,Zhang T.A study of DES and Blowfish encryption algorithm[C]//TENCON 2009-2009 IEEE Region 10 Conference.IEEE,2009:1-4.

[9] Vaudenay S.On the weak keys of Blowfish[C]//Fast Software Encryption.Springer Berlin Heidelberg,1996:27-32.

[10] Schneier B.Description of a new variable-length key,64-bit block cipher (Blowfish)[C]//Proc of the 1st Fast Software Encryption.Springer Berlin Heidelberg,1993:191-204.

[11] Stallings W.密碼編碼學與網絡安全:原理與實踐[M].劉玉珍,王麗娜,傅建明,譯.北京:電子工業出版社,2006:131-135.

[12] Bruce Schneier.應用密碼學:協議.算法與C源程序[M].2版.機械工業出版社,2014.

DESIGNANDIMPLEMENTATIONOFATRANSPARENTENCRYPTIONFILESYSTEM

Yan Zhirun Li Chunjie Liang Huiwu Wei Xun

(SuzhouInstituteforAdvancedStudy,UniversityofScienceandTechnologyofChina,Suzhou215000,Jiangsu,China)

Enhancing computer security to protect sensitive data has become a key problem nowadays. The proposed approach provides users with effective protection for preventing illegal invaders stealing the confidential information. This paper designs a safety protection strategy based on the stackable file system which is independent of any particular file system. Users do not have to change their habits while adding encryption and decryption transparently. The blowfish algorithm is taken as the foundation of this strategy within the kernel layer, converting information between plain text and cipher text. Different files own their independent password. In addition, this encrypted file system greatly enhances the difficulty of being cracked and balance the performance and ease of use.

Encrypted file system Information security Transparent

TP3

A

10.3969/j.issn.1000-386x.2017.09.002

2016-11-09。江蘇省科技項目-基礎研究計劃(自然科學基金:BK20141209);蘇州市應用基礎研究項目(SYG 201543)。顏智潤,碩士,主研領域:嵌入式系統設計,信息安全。李春杰,副研究員。梁會武,碩士。位珣,碩士。

猜你喜歡
用戶
雅閣國內用戶交付突破300萬輛
車主之友(2022年4期)2022-08-27 00:58:26
您撥打的用戶已戀愛,請稍后再哭
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年5期)2016-11-28 09:55:15
兩新黨建新媒體用戶與全網新媒體用戶之間有何差別
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
挖掘用戶需求尖端科技應用
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 亚洲成人在线免费观看| 国产成人综合日韩精品无码首页| 国模沟沟一区二区三区| www精品久久| 欧美α片免费观看| 国产新AV天堂| 尤物成AV人片在线观看| 国产成人亚洲无吗淙合青草| 18禁色诱爆乳网站| 激情无码字幕综合| 婷婷激情亚洲| 亚洲男人的天堂在线观看| 欧美午夜在线视频| 色综合久久88| 国产精品视频导航| 天堂av高清一区二区三区| 91人妻在线视频| 亚洲中文字幕无码爆乳| 亚洲二区视频| 欧美性精品| 亚洲日韩精品欧美中文字幕| 亚洲日本韩在线观看| 思思99热精品在线| 国产精品成人啪精品视频| 2018日日摸夜夜添狠狠躁| 国国产a国产片免费麻豆| 国产精品一线天| 亚洲一级无毛片无码在线免费视频| 免费看一级毛片波多结衣| 国产在线观看第二页| 毛片视频网址| 亚洲第一福利视频导航| 日韩欧美中文亚洲高清在线| 欧美日本视频在线观看| 国产精品分类视频分类一区| 亚洲第一色视频| yjizz视频最新网站在线| 久久99精品久久久久纯品| www成人国产在线观看网站| 亚洲AV无码不卡无码| 国产激情无码一区二区免费| 亚洲天堂日韩av电影| 欧美精品在线观看视频| 一级不卡毛片| 国产精品污视频| 日韩在线成年视频人网站观看| 中文字幕欧美成人免费| 成人久久18免费网站| 久草视频一区| 亚洲an第二区国产精品| 国产精品视频观看裸模| 亚洲Aⅴ无码专区在线观看q| 日韩A∨精品日韩精品无码| a级毛片免费播放| 欧美精品v| 日韩一级二级三级| 永久免费无码日韩视频| 久久久久国产精品嫩草影院| 精品视频免费在线| 全午夜免费一级毛片| 亚洲三级色| av一区二区无码在线| 91美女视频在线观看| 99精品高清在线播放| 亚洲成人动漫在线观看| 日本成人在线不卡视频| 欧美色丁香| 一级一毛片a级毛片| 91午夜福利在线观看| 在线观看国产小视频| 天天做天天爱夜夜爽毛片毛片| 午夜视频免费试看| a毛片在线播放| 国产不卡国语在线| 91九色国产porny| 午夜爽爽视频| 国产精品视频观看裸模| 午夜精品福利影院| 日韩毛片免费观看| 国产av剧情无码精品色午夜| 无码日韩精品91超碰| www.youjizz.com久久|