亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種減少寫入的大文件選擇性加密方法與流程

文檔序號:11523915閱讀:192來源:國知局
本發(fā)明屬信息安全領域,涉及一種對大文件進行選擇性加密的方法。
背景技術
::隨著信息技術的發(fā)展,一些文件也越來越大。目前非常熱門的大數(shù)據(jù)(bigdata,megadata)的一些文件也非常大,以hadoop為例,hadoop中的文件格式有多種,比較有代表性的是sequencefile(以及與它相似的文件類型):sequencefile是hadoopapi提供的一種二進制文件,它將數(shù)據(jù)以<key,value>的形式序列化到文件中。這種二進制文件內部使用hadoop的標準的writable接口實現(xiàn)序列化和反序列化。它在大數(shù)據(jù)環(huán)境下的文件格式中有一定代表性,與hadoopapi中的mapfile是互相兼容的。一些大數(shù)據(jù)文件是實時儲存的,比如視頻,文件記錄儲存后,可能會在后面發(fā)現(xiàn)一些數(shù)據(jù)有保密的需要,需要進行加密,但是對大量的數(shù)據(jù)進行加密明顯又是不現(xiàn)實的。針對云計算和大數(shù)據(jù)的加密方面,目前有代理重加密和同態(tài)加密,這些加密都有一定的應用場合,而且有局限性,比如同態(tài)加密效率低,冗余度大,現(xiàn)實中應用有較大的局限性,上述的加密方法直接用于加密大規(guī)模的數(shù)據(jù)是不現(xiàn)實的,因為計算量龐大,而且諸如同態(tài)加密往往會帶來數(shù)據(jù)的擴展,代價大,重代理加密只適合于特定用戶之間的密鑰轉換,現(xiàn)實中也沒有必要將所有的數(shù)據(jù)進行上述的加密。同態(tài)加密比較適用于需要計算的數(shù)據(jù)的加密,但是代價比較高。用傳統(tǒng)的加密方法加密這些數(shù)據(jù)也存在計算量大等等問題。而且現(xiàn)實中,我們還希望對于某些數(shù)據(jù),加密后,密文可以被解密為有意義的錯誤密文,或者明文的關鍵內容被替換為其他誤導意義的字、詞、句子等等,以達到誤導的效果,既要避免龐大的工作量,又要保護其中重要的數(shù)據(jù),需要采取一定的靈活方法。我們考慮進行選擇性的加密,但是一個大的文件往往只需要進行少量數(shù)據(jù)的加密,部分沒有加密的數(shù)據(jù)沒有必要重新寫一次,而且大量數(shù)據(jù)的重寫是有代價的,因此在本發(fā)明中考慮對進行選擇性加密,對被加密的明文覆蓋,將密文存儲下來,不加密的明文數(shù)據(jù)原樣保存在原始明文中。技術實現(xiàn)要素:考慮到減少寫入,加密后的文件(或文件集合)包括之前沒有加密的明文和被加密后的密文,不加密的明文段(數(shù)據(jù)塊)原樣儲存,被加密的明文段(數(shù)據(jù)塊)被隨機數(shù)據(jù)覆寫,加密的密文段被追加在原文后面或者另外儲存在新數(shù)據(jù)文件集、文件、表等中。方案1:對文件進行讀取,對其數(shù)據(jù)或者內容進行分段加密,如果無需保密的不加密,如果需要加密的根據(jù)其需要采用不同的加密方法,最后保存為密文。加密的總體步驟如下:1、讀取文件,針對文件格式需要,獲得相應內容,比如對于文本文件,可以是直接對數(shù)據(jù)進行加密,對于sequencefile文件,分別獲得<key,value>,根據(jù)需要對數(shù)據(jù)或者內容進行分塊(分段),比如分塊可以是hadoop中的sequencefile等文件(流式文件)中包含的一個文件(有時候稱為記錄record),或者是xml文件中的一個特性的值,表格中的一個數(shù)據(jù)項、一行、一列等,textfile文件格式可以根據(jù)分隔符和行結束符分段。2、根據(jù)需要選擇是否對數(shù)據(jù)塊進行加密,以及何種加密方式,這個判定可以是機器的,也可以是人工的,比如根據(jù)設定的規(guī)則進行機器判斷或者用戶的人工選擇,判定大文件的每一個數(shù)據(jù)塊(段)是否需要進行加密,以及采用什么樣的方式進行加密。3、選擇已有密鑰或者產(chǎn)生密鑰,根據(jù)選擇的方法對各個數(shù)據(jù)塊中需要加密的內容進行加密,加密可以針對于每一塊的值,比如某些文件格式中有分隔符,有長度的記錄,如果需要明文形式,可以不進行加密。4、將每一個數(shù)據(jù)塊加密得到的密文,如果需要,進行必要的適應性的編碼轉換,比如通過一般加密得到的是字節(jié)數(shù)組,一般情況下需要轉換為字符數(shù)組而產(chǎn)生實際寫入的密文段(解密的時候需要進行相反的轉換),并且對原明文段(數(shù)據(jù)塊)進行覆蓋。5、將密文段進行存儲,采用兩種方式:a)當原文件格式可以追加數(shù)據(jù)的時候,可以在原文后面根據(jù)相應的文件格式要求追加密文數(shù)據(jù),采用相應的格式保存最后的密文,比如,如果是流式文件,根據(jù)流式文件的格式在后面追加數(shù)據(jù)作為一個記錄進行存儲,根據(jù)格式要求,附加文件結構中的長度信息。b)將密文存放在另外地方,將所有密文段存放在一個新的文件中或者每個密文段存放在一個文件中。對于以上兩種方式為了保證解密,均需要將每個數(shù)據(jù)塊是否加密(如果可以根據(jù)確定的規(guī)則判定數(shù)據(jù)塊是否加密的,這一信息可以忽略),如果加密,則相應的解密所需要的信息和參數(shù)都要存儲起來,比如原始數(shù)據(jù)塊的位置信息(比如起始和結束位置或者起始位置和長度),對應密文塊的位置信息,采用什么方式進行加密,加密的密鑰(或獲得密鑰需要的信息)和各種參數(shù)。為了方便,可以將這些信息存放在表中,這些信息包含有能唯一確定這個分段位置的信息a(比如xml文件中的一個特性,數(shù)據(jù)塊在一個文件中的起始位置和結束位置,存儲器中的位置等),獲得對應的塊密鑰需要的信息,比如密鑰k(這個密鑰可能是加密的)或者密鑰的存放信息b(比如,地址或者是在某個表格中的位置),加密的算法和其他解密所需信息(比如分組長度,初始向量,加密模式等),也可以包括其他需要備注的消息。加密算法也可能是公鑰加密算法等,則需要存放相應的公鑰信息。在判斷是對稱加密還是非對稱加密的時候,以最后的加密算法為準,比如,如果原數(shù)據(jù)采用對稱加密,后面又對對稱的密鑰采用了非對稱的加密,則當做非對稱的加密不需要進行后續(xù)的對稱密鑰的管理。解密是一個相反的過程,對于每一塊數(shù)據(jù),首先判斷其是否加密,如果已經(jīng)加密,則需要解密,獲取其密鑰等信息。對數(shù)據(jù)塊進行解密。本方案的的有益技術效果有:減少了對不需要加密文件讀寫,解決了現(xiàn)有技術不適用于大文件加密的缺陷,避免了完全加密不現(xiàn)實的問題。對于不同的塊根據(jù)不同的需要采用不同的加密方法。方案2:在前面方案1的基礎上,考慮到同態(tài)加密一般只對數(shù)值有意義,在表中,可能某一列都是需要進行同態(tài)加密的數(shù)據(jù),很容易進行區(qū)分,xml文件中的數(shù)據(jù)一般也容易區(qū)分,但是在文本文件中,需要進行同態(tài)加密的數(shù)值可能夾雜在文本(文字)或者其他的數(shù)據(jù)中,在前面分段的基礎上可以進一步將數(shù)值與文本等數(shù)據(jù)進行分開加密,數(shù)值加密的時候在采用同態(tài)加密,這樣需要將同態(tài)加密后的數(shù)值進行委托計算的時候可以很容易找到數(shù)據(jù),而且大量的數(shù)據(jù)可以不進行復雜,而且冗余度高的同態(tài)加密計算。分段后依然要保證對原來文件格式的適應性,保證解密的可逆性,比如如果對于sequencefile文件,可以將每一個記錄中的每一段數(shù)值和其他數(shù)據(jù)進行分割,成為不同的塊進行加密,同時,加密后的密文依然連接起來,成為一個記錄,并且依然根據(jù)流式文件的格式進行存儲,在存儲加密信息的時候,為了實現(xiàn)這類需要進行代理計算的數(shù)據(jù)密文和一般文本的密文的區(qū)分,每一個塊的位置信息(比如起始位置和長度或起始位置和結束位置)和加密方式被記錄下來,便于解密。也可以采用設置起始標記和結束標記的方法來分割這些塊,這些起始和結束標記是密文中不會出現(xiàn)的符號,在密文前后增加起始標記和結束標記。本方案的有益效果是充分利用同態(tài)加密對需要加密的數(shù)據(jù)進行加密,便于后期調用計算,同時也較少同態(tài)加密的代價。方案3:在方案1或者2的基礎上,考慮諸如同態(tài)加密,包括全同態(tài)加密,并不能滿足所有云計算背景下的委托計算的需要,有些計算依然不能被全同態(tài)加密后處理,所以,它不能解決所有問題,也沒有必要花如此大的代價全部采用同態(tài)加密??紤]到同態(tài)加密有時候既有需要,但是又代價比較高,對于一般的數(shù)據(jù)如果用代價太大的同態(tài)加密就顯得大材小用,吃力不討好,除了全同態(tài)加密,比全同態(tài)加密代價小的加法同態(tài)和乘法同態(tài)也有其適用范圍,如果能夠用加法同態(tài)加密的數(shù)據(jù)采用全同態(tài)加密同樣顯得吃力不討好。優(yōu)選地,在加密的時候進行加密方法的選擇,根據(jù)數(shù)據(jù)需要進行計算的所有函數(shù)來判斷涉及到的數(shù)據(jù)是否需要用到同態(tài)加密(只有一個函數(shù)需要用到同態(tài)加密,而其他函數(shù)都不需要同態(tài),也視為需要用到同態(tài)加密,即滿足所有可能函數(shù)的需要,下同),需要采用什么樣的同態(tài)加密,當其他一般的加密和非全同態(tài)加密都不可行,必須用同態(tài)加密的時候,采用全同態(tài)加密,當全同態(tài)加密和非全同態(tài)加密的時候,采用非全同態(tài)(半同態(tài))加密方法,當普通加密可行的時候,優(yōu)先選擇普通的加密方法,即當多種方法都可以達到目的的時候,優(yōu)先選用次序為,一般加密、半同態(tài)加密、全同態(tài)加密。本方案的有益效果是充分發(fā)揮加密的最大優(yōu)勢,避免劣勢,在保證安全需要的同時也較少代價。方案4:在前面方案1、2或者3的基礎上,優(yōu)選地,在加密中,非對稱的加密,包括同態(tài)加密,還有重代理加密總是少數(shù),因為他們的代價比較高,因此更多會采用對稱的加密,對稱加密中采用相同的加密參數(shù)去加密大量的數(shù)據(jù)是不安全的,所以需要較多的密鑰。考慮到大文件的大量數(shù)據(jù)的對稱加密需要用到大量的密鑰,大量密鑰的管理復雜,為了避免這些缺陷,這里采用單向的函數(shù)去產(chǎn)生密鑰。單向函數(shù)可以正向計算,但是反過來求逆則困難。比如hash函數(shù)就是這樣的函數(shù),我們用大文件的數(shù)據(jù)塊的位置信息(可以唯一確定這個分段的信息a),初始密鑰或者是口令(統(tǒng)稱為密碼,初始密碼)k產(chǎn)生,現(xiàn)實中,人們往往很容易記住口令,這樣無需保存口令,但是密鑰則需要另外加密存儲。單個分段的加密密鑰由唯一確定這個分段(數(shù)據(jù)塊)的位置信息a和k的不可逆的單向函數(shù)m(f(k,a))產(chǎn)生,比如哈希函數(shù),即hash(f(k,a))值,f為一個函數(shù),簡單地可以是將ka兩個數(shù)據(jù)合并,截取加密數(shù)據(jù)塊所采用對稱加密算法的密鑰長度相應的位數(shù),注意,如果密鑰的長度大于hash函數(shù)的輸出長度,可以將以上信息分別輸入多個函數(shù),hash(f1(k,a)),hash(f2(k,a)),也可以是多個不同單向函數(shù)(如hash函數(shù))的值,作為所定位的數(shù)據(jù)塊的加密密鑰。當然也可以把這個整體當做一個單向函數(shù)。采用單向性的函數(shù)就可以避免通過塊的密鑰去逆向推導初始密碼,其他塊的密鑰,安全性好而且方便。如果數(shù)據(jù)塊需要采用公鑰加密方法,則不需要用到上述產(chǎn)生的密鑰,只需要利用公鑰和私鑰加密解密即可,如果是對稱加密,則需要用到上面產(chǎn)生的塊加密密鑰。在有些加密中,比如一些誤導功能的加密,有時候還需要兩層的加密,需要較長的密鑰,可以用產(chǎn)生的數(shù)據(jù)去產(chǎn)生一個偽隨機序列,比如可以采用單向函數(shù)產(chǎn)生(可能需要截取)一個流密碼的密鑰,通過這個密鑰以流密碼算法產(chǎn)生密鑰流,在密鑰流中截取需要的誤導加密的各層密鑰。產(chǎn)生密鑰后,根據(jù)方案1,2,3的方法進行加密。理論上說,我們只需要存儲好初始密碼,并且記錄每一塊對應的初始密碼就行了,不過有時候為了方便可選地也可以加密各個分段的加密密鑰??梢圆捎枚嘀丶用?,優(yōu)選地可以用公鑰加密分段加密密鑰,并且將公鑰加密后的分段加密密鑰、分段信息、分段是否加密、分段的加密密鑰對應的數(shù)據(jù)塊的信息、解密分段所需的信息、明文數(shù)據(jù)的編碼類型等等,存放在一起,比如用表格存儲起來,我們稱為加密信息表。本方案的有益效果是簡化密鑰的管理的同時依然保證安全性。方案5:在前面方案4的基礎上,進一步地,可以是各個用戶有自己的初始密鑰或者口令,這里也可以統(tǒng)一稱為密碼ki,這樣他可以加密和解密自己負責的數(shù)據(jù)塊,加密信息也存放在加密信息表中,如果采用多個初始密碼,加密信息表中應該包含初始的密碼ki(可能是加密的ki)或者ki的信息(比如編號,存放位置等)。如果是單個塊密鑰泄漏,采用新的初始密碼產(chǎn)生密鑰去加密泄漏密鑰的塊,并且更新加密信息表。本方案的有益效果是針對多用戶和密鑰泄漏問題,采用多個密碼簡化了密鑰的更新代價。方案6:在前面方案4或者5的基礎上添加更新密鑰功能,有時候密碼可能存在泄漏,丟失的情形,如果是ki丟失,需要更換所有的由它產(chǎn)生的數(shù)據(jù)塊的塊密鑰,重新解密,再用新的密鑰加密,如果是單個塊密鑰泄漏,一般情況下,根據(jù)密鑰的產(chǎn)生規(guī)則也需要更換那個初始的密碼ki,由于采用多個初始密碼,加密信息表中應該包含初始密碼(可能是加密的)或者初始密碼的信息。因此,優(yōu)選地,我們提出兩種方案:a)采用新的密碼產(chǎn)生密鑰去加密泄漏密鑰的塊,并且更新加密信息表;b)計算塊密鑰的時候,增加一個信息更改密鑰次數(shù)的信息,簡單地可以是null(空),1,2這樣的形式,或者f(0),f(1),f(2),只要能夠唯一確定修改次數(shù)的信息就行,用單向的函數(shù)m(f(k,a,f(n)))產(chǎn)生塊密鑰,在密鑰信息表中也必須同樣對應更改密鑰次數(shù)的信息,或者由于更改密鑰的數(shù)據(jù)塊總是少數(shù),可以對有更改密鑰的數(shù)據(jù)塊的更改次數(shù)和對應的數(shù)據(jù)塊信息在其他地方存儲起來。數(shù)據(jù)解密時候先判定數(shù)據(jù)是否加密,根據(jù)加密信息表的信息解密。也可以根據(jù)密碼生成分段的塊加密密鑰用于解密。本方案的有益效果是在密鑰泄漏的情況下可以進行自動的同步更新,而且安全性可以保障。方案7:在前面方案4或者5的基礎上,考慮在大數(shù)據(jù)的一些流式文件中,實際上一個文件包含許多記錄,實際上相當于一個獨立文件,這里還是稱為數(shù)據(jù)塊。在許多時候,不同的用戶對大數(shù)據(jù)文件中的某一部分包含的數(shù)據(jù)塊(比如記錄)有不同的加密解密權限,比如一個高級別用戶可以解密所有的加密數(shù)據(jù)塊,而低一級的用戶則只能解密一部分數(shù)據(jù)塊,這些用戶都有自己獨自負責的一部分文件可以解密,他們管理的文件范圍如同一棵樹,最高級別用戶可以看成是樹根,負責所有文件,級別越低,負責的文件越少。舉一個例子,一個科的人每一個人都管理自己的文件,一個科長可以查閱該科所有人的文件,處長可以查閱所有下轄科的文件,以此類推,這種情況現(xiàn)實中經(jīng)常存在。目前大數(shù)據(jù)越來越大,而許多大數(shù)據(jù)是存放在一個大的流式文件中。這種大文件的記錄可能屬于不同的用戶,有不同的權限,需要用不同的密鑰加密。在數(shù)據(jù)量大的時候,密鑰量是比較大的,而且管理起來非常復雜。目前有許多密鑰管理方案,如果只是對密鑰進行加密存儲,則密鑰量比較大,管理起來復雜,而且對于這類提到的如同一棵樹一樣的加密密鑰的管理權限不能很好控制。為了能夠存儲較少的密鑰,而且對不同級別的用戶賦予不同的權限,我們依然可以利用單向函數(shù)來產(chǎn)生密鑰。大數(shù)據(jù)中的不同記錄往往屬于不同的用戶,需要用不同的密鑰加密,有不同的安全級別,有不同的訪問控制權限。本發(fā)明利用單向函數(shù)的單向性質設計了一種可以滿足需要的密鑰生成管理方法,并且應用于大文件的加密保護。當有多級用戶的時候,由最高級用戶的初始密碼kr結合次高級用戶的某一唯一信息bi(可以是公開的,也可以是只有最高級用戶知道的,比如用戶名稱、姓名、代號、編號等,但是這個信息應該是唯一,不重名的)產(chǎn)生次高級用戶的初始密碼,計算方法為m(f(kr,bi)),m()為單向函數(shù),截取合適長度的數(shù)據(jù)作為次高級用戶的初始的密碼;進一步由次高級用戶初始的密碼以相同的方式產(chǎn)生再低一級用戶的初始的密碼,產(chǎn)生密碼的單向函數(shù)為m(f(kr,b),b為下一級用戶的編號,kr為上一級用戶的初始密碼;直到產(chǎn)生最低級用戶的初始的密碼,然后由最低級用戶的初始的密碼產(chǎn)生數(shù)據(jù)塊的加密密鑰。因此在文件很大,其中的數(shù)據(jù)塊(比如記錄)的權限也往往復雜,可能是屬于上面提到的多級用戶的樹形的權限,則可以采用如下的加密方法:1、確定好各級用戶的權限,根據(jù)上述的方法,首先最高級用戶產(chǎn)生一個初始密碼k1,下一級用戶的初始密碼kr+1產(chǎn)生單向的函數(shù)為m(f(kr,b),b為用戶的編號,以此類推逐級地產(chǎn)生多級用戶的初始密碼。2、根據(jù)需要對需要加密的大文件進行分塊(分段),以hadoop中的sequencefile等大文件的一個記錄。3、根據(jù)設定的規(guī)則或者用戶的選擇,判定數(shù)據(jù)塊(段)是否需要進行加密,以及采用什么樣的方式進行加密。如果數(shù)據(jù)塊需要采用公鑰加密方法,則不需要用到產(chǎn)生的密鑰,只需要利用公鑰和私鑰加密解密即可,如果是對稱加密,則需要在下一步產(chǎn)生塊加密密鑰。4、根據(jù)數(shù)據(jù)塊的位置信息(唯一確定這個分段的信息a)和最低級用戶的初始密碼kl產(chǎn)生他所管轄的數(shù)據(jù)塊的加密密鑰,我們用初始密碼產(chǎn)生。單個分段(塊)的加密密鑰由唯一確定這個分段(數(shù)據(jù)塊)的信息a和對于這個分段有加解密權限的最低級用戶的初始密碼kl的不可逆函數(shù)m(f(kl,a))產(chǎn)生,比如哈希函數(shù),即hash(f(kl,a))值,f為一個函數(shù)(簡單地可以是將k、a兩個數(shù)據(jù)合并),截取加密數(shù)據(jù)塊所采用對稱加密算法的密鑰長度相應的位數(shù)。采用單向性的函數(shù)就可以避免通過塊的密鑰去逆向推導初始密碼,其他塊的密鑰,安全性好而且方便。5、對需要加密的塊,根據(jù)選擇的方法對數(shù)據(jù)塊進行加密,得到的數(shù)據(jù),加密可以只針對于每一塊的值,比如某些文件格式中有分隔符,有長度的記錄,可以不進行加密,加密后長度有變化則做相應的修改。并且將數(shù)據(jù)是否加密,如果加密,則相應的解密所需要的信息和參數(shù)都要存儲起來,比如采用什么方式進行加密,對應的密鑰信息(可以獲得密鑰的信息,比如確定這個塊屬于某個最低級的用戶,根據(jù)塊密鑰的產(chǎn)生規(guī)則就獲得塊密鑰,另外也可以是塊密鑰的存放位置(比如,地址或者是在某個表格中的位置),或者加密的塊密鑰等等。)和各種參數(shù)。為了方便,本例可以將這些信息存放在表中,這些信息包含有唯一確定這個分段的信息a----數(shù)據(jù)塊的起始位置和結束位置,可以恢復塊密鑰的信息-加密的塊密鑰,加密的算法和其他信息(分組長度,初始向量,加密模式,填充模式等)。6、將每一個數(shù)據(jù)塊加密的密文根據(jù)相應的方法連接為一個密文文件,采用相應的格式保存,比如,如果是流式文件,根據(jù)流式文件的格式進行存儲,對文件結構中的長度信息進行相應的調整。本方案的優(yōu)勢在于減少需要存儲的密碼或密鑰,而且可以控制多級的權限。方案8:在前面方案7基礎上增加密鑰(密碼)更新功能,有時候密鑰(密碼)可能存在泄漏,丟失的情形,如果是各級的初始的密碼丟失,由于密鑰(密碼)的產(chǎn)生規(guī)則,需要更換所有的初始的密碼和由它們產(chǎn)生的塊密鑰,重新解密,再根據(jù)規(guī)則重新產(chǎn)生密鑰(用戶密碼)用新的塊密鑰加密,如果是單個塊密鑰泄漏,一般情況下,也需要更換初始的密碼,由于采用多個初始密碼,加密信息表中應該包含初始密碼(可能是加密的)或者初始密碼的信息。這會帶來較大的代價,因此,優(yōu)選地,我們提出在加密信息中,增加一個信息更改密鑰次數(shù)的信息,簡單地可以是null(空),1,2這樣的形式,或者f(0),f(1),f(2),只有能夠唯一確定修改次數(shù)的信息就行,下一級用戶的初始密碼kr+1產(chǎn)生單向的函數(shù)為m(f(kr,b,f(n))),b為下一級用戶的編號,數(shù)據(jù)塊的對稱加密密鑰采用m(f(ks,a,f(n)))產(chǎn)生,a為文件的確定信息,比如位置信息,在密鑰信息表中也必須同樣對應更改密鑰次數(shù)的信息,或者由于更改密鑰的數(shù)據(jù)塊總是少數(shù),將n和對應的數(shù)據(jù)塊信息在其他地方存儲起來,f(n)初值為空,當初值為空的時候函數(shù)簡化為m(f(kr,b)),。表面上看,函數(shù)形式和前面的不一樣,增加了n相關的內容,當我們限定f(n)初值為空,當初值為空的時候函數(shù)簡化為m(f(kr,b)),可以當做是原單向函數(shù)的進一步限定。如果某一級用戶a的初始密碼泄漏,從用戶a的上一級用戶的初始密碼產(chǎn)生用戶a的新密碼(密鑰),注意其中n在原來的基礎上加1,即m(f(kr,b,f(n+1))),這樣可以保證密鑰是新的,而且由于單向性,互相之間不能相互推導,不會泄密。本方案的有益效果是在密鑰丟失的時候可以直接更換新的密鑰,重新加密數(shù)據(jù)塊。一旦泄密,無需大面積更換密鑰(密碼)。注意由于現(xiàn)有的一些系統(tǒng)并沒有提供關于流式文件的修改,所以需要開發(fā)相關支持軟件。具體實施方式下面給出本發(fā)明的部分實施例,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。實施例1為本加密方法的實施例,我們選取sequencefile文件為例,加密步驟如下:1、讀取文件,即可分析每一個記錄及其長度,以它的一個記錄為數(shù)據(jù)塊。以記錄的起始位置和結束位置作為數(shù)據(jù)塊的定位信息。2、根據(jù)設定的關鍵詞計算規(guī)則得出記錄的敏感程度,達到一定閾值的記錄判定需要加密,同時可以根據(jù)規(guī)則確定到底是對稱加密,還是公鑰加密(包括一些同態(tài)加密和代理重加密),如果是用戶根據(jù)需要對不達閾值的記錄要選擇加密,則也加密該塊。如果文件不屬于以上兩種情形,不加密。3、對于需要進行公鑰加密的數(shù)據(jù),選擇已有密鑰,根據(jù)選擇的加密方法對各個數(shù)據(jù)塊中需要加密的內容進行加密,加密可以針對于每一塊的值,對于需要對稱加密的,產(chǎn)生密鑰,進行對稱加密。4、將每一個數(shù)據(jù)塊加密得到的密文,進行必要的適應性的編碼轉換,產(chǎn)生將寫入密文段,并且對原明文段進行覆蓋。5、將密文段進行存儲,流式文件可追加記錄,所以可根據(jù)流式文件的格式在后面追加數(shù)據(jù)作為一個記錄進行存儲,根據(jù)格式要求,附加文件結構中的長度信息。為了保證解密,將每個數(shù)據(jù)塊是否加密(如果可以根據(jù)確定的規(guī)則判定數(shù)據(jù)塊是否加密的,這一信息可以忽略,解密的時候根據(jù)相同規(guī)則判定是否加解密),如果加密,則相應的解密所需要的信息和參數(shù)都要存儲起來,比如原始數(shù)據(jù)塊的位置信息,對應密文塊的記錄位置信息,采用什么方式進行加密,加密的密鑰(或獲得密鑰需要的信息)和各種參數(shù)。將這些信息存放在表中。本方案也可以改為將被加密的密文存放在一個新的文件中。這個文件可以是一個表,包含了對應的明文的位置信息和密文段。解密是一個相反的過程,對于每一塊數(shù)據(jù),首先判斷其是否加密,如果已經(jīng)加密,則需要解密,獲取其密鑰等信息。對數(shù)據(jù)塊進行解密。實施例2為本加密方法的實施例1的進一步改進,在實施例1的基礎上,考慮到文件中,文本和數(shù)值往往混合在一起,當數(shù)值和文本混合在一起的時候,將文本和數(shù)值隔離,各自采用適合的加密方法,比如對于最初的分段,考慮不同加密需要,進行進一步分段,對數(shù)值和文本采用不同加密方法,對數(shù)值進行同態(tài)加密,其他數(shù)據(jù)采用一般的對稱加密,所以對它們也分段以隔離。對于流式文件,可以不用增加記錄數(shù),某個記錄中包含有需要進行同態(tài)加密的數(shù)據(jù)的時候,在這些數(shù)據(jù)的前后進行分段,數(shù)值采用同態(tài)加密,其他采用一般的加密,將一個記錄中的多個分段的密文放在一起,但是記錄最開始一段的起始位置和每一段的長度,將這些密文放在一起,按照流式文件的格式存儲起來,另外在加密信息表中記錄同態(tài)加密后數(shù)值對應的指標,符號、代號或者參數(shù)。這樣便于委托計算的時候調取。實施例3為本加密方法的實施例1的進一步改進,在實施例1的基礎上,將需要同態(tài)加密的數(shù)值可能涉及到的計算函數(shù)進行分析,來判斷涉及到的數(shù)據(jù)是否需要用到同態(tài)加密,需要采用什么樣的同態(tài)加密,當進行某些委托計算時候,其他一般的加密和非全同態(tài)加密都不可直接計算,需要用到全同態(tài)加密的時候,采用全同態(tài)加密,當全同態(tài)加密和非全同態(tài)都可行加密的時候,采用非全同態(tài)(半同態(tài))加密方法,當普通加密可行的時候,優(yōu)先選擇普通的加密方法,即當多種方法都可以達到目的的時候,優(yōu)先選用次序為,一般加密、半同態(tài)加密、全同態(tài)加密。即一般加密可行就優(yōu)先用一般加密,一般加密不可行,半同態(tài)加密可行即用半同態(tài)加密,否則用全同態(tài)加密。實施例4:實施例4為本加密方法的實施例1的進一步改進,在實施例1的基礎上,用大文件的數(shù)據(jù)塊的起始和結束位置信息和密碼k的單向函數(shù)產(chǎn)生塊密鑰。單個分段的加密密鑰由唯一確定這個分段(數(shù)據(jù)塊)的位置信息a和k的哈希函數(shù)hash(k||a)產(chǎn)生。加密算法中還包含一種具有誤導功能的加密,它采用一個內層加密和外層加密,需要較長密鑰,我們用hash產(chǎn)生的值,作為流密碼的密鑰,產(chǎn)生一個密鑰流,截取最前面128bit作為外層加密的密鑰,后面的部分依次截取8bit作為內層加密的每一個關鍵詞的加密用密鑰。產(chǎn)生密鑰后,根據(jù)可以根據(jù)實施例1,2,3的方法進行加密。為了方便加密各個分段的加密密鑰。用公鑰加密分段加密密鑰,并且將公鑰加密后的分段加密密鑰、分段信息、分段是否加密、分段的加密密鑰對應的數(shù)據(jù)塊的信息、解密分段所需的信息、明文數(shù)據(jù)的編碼類型等等,存放在一起,比如用表格存儲起來。實施例5:在實施例4的基礎上,大文件的不同的塊屬于不同的用戶,各個用戶有自己密碼ki,這樣他可以加密和解密自己負責的數(shù)據(jù)塊,加密信息也存放在加密信息表中,如果采用多個初始密碼,加密信息表中除了包含實施例4中的信息,還應該包含初始的加密的ki。實施例6:在實施例4、5的基礎上,計算塊密鑰的時候,增加一個信息更改密鑰次數(shù)的信息,第一次、遺失密鑰后第二次、再次遺失密鑰后第三次的時候,分別添加一個f(n)分別是null(空),1,2這樣的信息,用單向的函數(shù)hash(k||a||f(n))產(chǎn)生塊密鑰,最初產(chǎn)生塊密鑰為hash(k||a),第一次更新密鑰為hash(k||a||1),以此類推,在密鑰信息表中前面的基礎上,也添加對應更改密鑰次數(shù)的信息。實施例7:在實施例5的基礎上,考慮大數(shù)據(jù)中的不同記錄往往屬于不同的用戶,需要用不同的密鑰加密,有不同的安全級別,有不同的訪問控制權限。當有前面提到的樹型的多級用戶的權限時候,由最高級用戶的初始密碼kr結合次高級用戶的某一唯一編號bi產(chǎn)生次高級用戶的初始密碼,計算方法為hash(kr||bi)),截取合適長度的數(shù)據(jù)作為次高級用戶的初始的密碼;進一步由次高級用戶初始的密碼以相同的方式產(chǎn)生再低一級用戶的初始的密碼;直到產(chǎn)生最低級用戶的初始的密碼,然后由最低級用戶的初始的密碼產(chǎn)生數(shù)據(jù)塊的加密密鑰。完整步驟如下:1、確定好各級用戶的權限,根據(jù)上述的方法,首先最高級用戶產(chǎn)生一個初始密碼k1,然后根據(jù)利用方法hash函數(shù)sha256(k1||b),||表示簡單的合并連接,逐級地產(chǎn)生多級用戶的初始密碼。如果數(shù)據(jù)塊是對稱加密,用最低級用戶的初始密碼去產(chǎn)生他所管理的數(shù)據(jù)塊的塊加密密鑰,產(chǎn)生塊加密密鑰的方式和實施例5相同。實施例8:在前面實施例7基礎上增加密鑰(密碼)更新功能,在計算的時候增加一個信息更改密鑰次數(shù)的信息,如次高級用戶密鑰為hash(kl||a||f(n)),f(n)第一次產(chǎn)生密鑰為null(空),后面分別為1,2,下一級用戶的初始密碼kr+1產(chǎn)生單向的函數(shù)為hash(kr||b||f(n)),b為用戶的編號,數(shù)據(jù)塊的對稱加密密鑰采用hash(ks||a||f(n))產(chǎn)生,a為文件的位置信息,在密鑰信息表中也必須同樣對應更改密鑰次數(shù)的信息。如果某一級用戶a的初始密碼泄漏,從用戶a的上一級用戶的初始密碼產(chǎn)生用戶a的新密碼(密鑰),注意其中n在原來的基礎上加1,第一次更新的密碼為hash(kr||b||1),以此類推。篇幅所限,不能一一舉例,實施例也相對簡化,以上實施例的限定條件和一些方法可以交叉組合,以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。當前第1頁12當前第1頁12
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1