一種提高h(yuǎn)dfs文件傳輸安全性和讀取效率的方法
【專利摘要】本發(fā)明提出一種提高HDFS文件傳輸安全性和讀取效率的方法。本發(fā)明首先通過名稱節(jié)點(diǎn)為將要存儲(chǔ)的文件選擇的合適的塊進(jìn)行存放,在塊存儲(chǔ)于數(shù)據(jù)節(jié)點(diǎn)后,對塊文件及其備份進(jìn)行多次隨機(jī)線性網(wǎng)絡(luò)編碼。讀取文件時(shí),同時(shí)從多個(gè)塊文件中讀出字符,并進(jìn)行解碼,還原出原始文件。在整個(gè)文件傳輸和存取過程中,編碼部分由名稱節(jié)點(diǎn)負(fù)責(zé),解碼部分在客戶端完成,信道中不會(huì)出現(xiàn)未加密的原始數(shù)據(jù),同時(shí),由于從多個(gè)節(jié)點(diǎn)同時(shí)獲取數(shù)據(jù),提高了文件的讀取效率。
【專利說明】一種提高HDFS文件傳輸安全性和讀取效率的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明基于HDFS,提出了一種增強(qiáng)文件傳輸過程中的安全性,以及提高文件讀取效率的方法。
【背景技術(shù)】
[0002]由Apache 基金會(huì)所開發(fā)的 HDFS (Hadoop Distributed File System)在面對海量文件存儲(chǔ)問題的處理時(shí),相較于一般的存儲(chǔ)方式具有明顯優(yōu)勢。然而在云計(jì)算越來越普及的今天,用戶將自己的私人數(shù)據(jù)大量存放在云端,對于絕大部分的用戶而言,他們考慮的不再僅僅是需要這些數(shù)據(jù)時(shí)是否可以方便快捷的得到,與之相對應(yīng)的,他們將更加關(guān)注于自己數(shù)據(jù)的存放是否安全。目前針對數(shù)據(jù)加密的幾種方法中,都是以犧牲系統(tǒng)存讀取文件效率為代價(jià),并沒有同時(shí)加強(qiáng)文件安全性和讀取效率的有效方法。舉例說明,F(xiàn)acebook作為現(xiàn)今全球最大的社交網(wǎng)站,每天將處理27億次Like按鈕的點(diǎn)擊,有3億張圖片被上傳,吸收逾500TB的新數(shù)據(jù)。這些數(shù)據(jù)中,有可能是用戶的留言,或者心情狀態(tài),也可能是一張照片或者一段視頻,其中很多都是用戶不愿公開或者半公開的內(nèi)容,這就要求公司在存儲(chǔ)這些數(shù)據(jù)時(shí)既要保證不泄露用戶的個(gè)人隱私,又要保證用戶在任意時(shí)刻想要查找它們時(shí)可以很快得到,這無疑是一項(xiàng)巨大的挑戰(zhàn)。本文在HDFS模型的基礎(chǔ)上,提出了一種采用網(wǎng)絡(luò)編碼和多節(jié)點(diǎn)讀取技術(shù)以增強(qiáng)文件傳輸過程中的安全性和提高文件讀取效率的方法,即利用隨機(jī)線性網(wǎng)絡(luò)編碼對存儲(chǔ)文件進(jìn)行加密,在讀取文件時(shí),同時(shí)從多個(gè)加密后的文件塊中讀取字符進(jìn)行解碼。
【發(fā)明內(nèi)容】
[0003]針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明在HDFS架構(gòu)的基礎(chǔ)上,采用隨機(jī)線性網(wǎng)絡(luò)編碼和多節(jié)點(diǎn)讀取的方法,在云計(jì)算平臺上建立了一套安全性好、解碼成本低、讀取效率高的分布式文件存儲(chǔ)系統(tǒng)。
[0004]本發(fā)明的發(fā)明目的是:在提高文件讀取效率的基礎(chǔ)上,能夠保證用戶的私人數(shù)據(jù)不在文件傳輸或者存儲(chǔ)的過程中被非法獲取。主要應(yīng)用于云存儲(chǔ)、網(wǎng)盤等應(yīng)用。
[0005]為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案為:一種提高HDFS文件傳輸安全性和讀取效率的方法,本方法及系統(tǒng)主要由四個(gè)主要步驟組成。
[0006]第一個(gè)步驟為文件存儲(chǔ)階段。在這一階段中,名稱節(jié)點(diǎn)(Namenode)根據(jù)客戶端發(fā)出的儲(chǔ)存文件請求,選取合適的塊(block)儲(chǔ)存文件,并建立從文件到塊和從塊到文件的映射關(guān)系,這些映射關(guān)系將作為元數(shù)據(jù)(Metadata)的一部分被存儲(chǔ)在名稱節(jié)點(diǎn)中,以方便名稱節(jié)點(diǎn)可以快速響應(yīng)用戶對于某個(gè)文件的查找。
[0007]第二個(gè)步驟為編碼塊文件階段。在這一階段中,名稱節(jié)點(diǎn)對存儲(chǔ)在塊中的文件進(jìn)行隨機(jī)線性網(wǎng)絡(luò)編碼,并將編碼后的文件存儲(chǔ)在數(shù)據(jù)節(jié)點(diǎn)(Datanode)中。隨機(jī)線性網(wǎng)絡(luò)編碼是一種簡單有效的網(wǎng)絡(luò)編碼方式,常用于對網(wǎng)絡(luò)數(shù)據(jù)的加密算法中,具有編碼成本低、解碼成功率高、可容錯(cuò)性強(qiáng)等特點(diǎn)。隨機(jī)線性網(wǎng)絡(luò)編碼是一種文件加密方式,非用戶本人即使使用非正常手段得到了存儲(chǔ)在數(shù)據(jù)節(jié)點(diǎn)中的塊文件,在不知道編碼方式,無法得到編碼系數(shù)的情況下,是無法通過解碼的方法還原出原始文件的,由此保證了文件存儲(chǔ)的安全性。名稱節(jié)點(diǎn)首先選取編碼系數(shù)n(同時(shí)可以得到η個(gè)二進(jìn)制表示的編碼因子&1、a2、a^an),并選擇最小編碼單元。由編碼長度決定每次從塊文件中讀取的字符串長度。假設(shè)η行待編碼的字符串為Vbylvbn,則該編碼單元中,第一行至最后一行的編碼結(jié)果可以表示為:
【權(quán)利要求】
1.一種提高HDFS文件傳輸安全性和讀取效率的方法,其特征在于,包含以下步驟:步驟一、在存儲(chǔ)操作之前,名稱節(jié)點(diǎn)對將要存儲(chǔ)的文件進(jìn)行篩選,保留單個(gè)文件大小小于62MB的文件作為有效文件,超過62MB的文件按照一般的文件方式進(jìn)行存儲(chǔ);名稱節(jié)點(diǎn)為每個(gè)有效文件選取合適的塊儲(chǔ)存,并建立從文件到塊和從塊到文件的映射關(guān)系,這些映射關(guān)系將作為元數(shù)據(jù)的一部分被存儲(chǔ)在名稱節(jié)點(diǎn)中; 步驟二、對存儲(chǔ)在塊中的文件進(jìn)行隨機(jī)線性網(wǎng)絡(luò)編碼,將編碼后的文件存儲(chǔ)在數(shù)據(jù)節(jié)占中.1 ? 步驟三、名稱節(jié)點(diǎn)對已經(jīng)過編碼的塊文件再次進(jìn)行隨機(jī)線性網(wǎng)絡(luò)編碼,編碼結(jié)果作為塊文件的第一個(gè)備份保存在數(shù)據(jù)節(jié)點(diǎn)中,位置為原始的HDFS系統(tǒng)中塊文件的第一個(gè)備份的位置;名稱節(jié)點(diǎn)對已經(jīng)過二次編碼的塊文件進(jìn)行第三次隨機(jī)線性網(wǎng)絡(luò)編碼,編碼結(jié)果作為塊文件的第二個(gè)備份保存在數(shù)據(jù)節(jié)點(diǎn)中,位置為原始的HDFS系統(tǒng)中塊文件的第二個(gè)備份的位置;如果增加備份文件的數(shù)量,由上述方法類推可得; 步驟四、當(dāng)收到來自客戶端讀取文件的請求后,名稱節(jié)點(diǎn)根據(jù)元數(shù)據(jù)中塊到文件的映射關(guān)系找出客戶端需要的文件和備份文件,客戶端每次同時(shí)從多個(gè)塊文件中讀取定長的字符放入解碼矩陣中,解出原始文件;由于隨機(jī)線性網(wǎng)絡(luò)編碼解碼方法的特殊性,從不同的備份中同時(shí)讀取文件時(shí),只 要保證讀取的文件是由同一個(gè)塊文件經(jīng)的編碼得到(編碼次數(shù)可以不同),并在解碼時(shí),對放入的字符做行列變換,每次舍去線性相關(guān)部分,總會(huì)得到一個(gè)滿秩矩陣,該矩陣中的內(nèi)容即為原始文件。
【文檔編號】H04L29/08GK103986718SQ201410224697
【公開日】2014年8月13日 申請日期:2014年5月23日 優(yōu)先權(quán)日:2014年5月23日
【發(fā)明者】都思丹, 馬雁楠, 于耀, 周余 申請人:南京大學(xué)