本發(fā)明屬信息安全領(lǐng)域,涉及一種對用戶進行密鑰管理的方法及其在數(shù)據(jù)加密中的應(yīng)用。
背景技術(shù):
在許多時候,不同的用戶有不同的加密解密權(quán)限,比如一個高級別用戶可以解密所有的加密文件,而低一級的用戶則只能解密一部分文件,這些用戶都有自己獨自負責(zé)的一部分文件可以解密,他們管理的文件范圍如同一棵樹,最高級別用戶可以看成是樹根,負責(zé)所有文件,級別越低,負責(zé)的文件越少。
舉一個例子,一個科的人每一個人都管理自己的文件,一個科長可以查閱該科所有人的文件,處長可以查閱所有下轄科的文件,以此類推,這種情況現(xiàn)實中經(jīng)常存在,但是沒有見到相關(guān)研究。
在數(shù)據(jù)量大的時候,密鑰量是比較大的,而且管理起來非常復(fù)雜。目前大數(shù)據(jù)越來越大。目前有許多密鑰管理方案,如果只是對密鑰進行加密存儲,則密鑰量比較大,管理起來復(fù)雜,而且對于這類提到的如同一棵樹一樣的加密密鑰的管理權(quán)限不能很好控制。為了能夠存儲較少的密鑰,而且對不同級別的用戶賦予不同的權(quán)限,我們利用單向函數(shù)來產(chǎn)生密鑰。
大數(shù)據(jù)往往屬于不同的用戶,需要用不同的密鑰加密,有不同的安全級別,有不同的訪問控制權(quán)限。本發(fā)明利用單向函數(shù)的單向性質(zhì)設(shè)計了一種可以滿足需要的密鑰生成管理方法,并且應(yīng)用于大數(shù)據(jù)的加密保護。
技術(shù)實現(xiàn)要素:
對于單個用戶,他可能負責(zé)大量的文件(或者數(shù)據(jù)等),采用相同的加密參數(shù)去加密大量的數(shù)據(jù)是不安全的,所以需要較多的密鑰。這些文件需要用不同的密鑰加密,本方法中這個用戶可以有一個初始密鑰,考慮到數(shù)據(jù)的加密需要用到大量的密鑰,大量密鑰的管理復(fù)雜,為了避免這些缺陷,這里采用單向的函數(shù)去產(chǎn)生密鑰,單向函數(shù)可以正向計算,但是反過來求逆則困難。比如hash函數(shù)就是這樣的函數(shù)。
加密的單元可以是一個文件,一個文件夾或者是文件的一部分,或者是某一段存儲位置的數(shù)據(jù)等,我們稱為塊,我們用唯一確定這個數(shù)據(jù)塊的信息A(比如位置、路徑、代號等)以及用戶初始密鑰K產(chǎn)生塊加密的對稱密鑰。單個分段(數(shù)據(jù)塊)的加密密鑰由數(shù)據(jù)塊信息A和初始密鑰K的不可逆函數(shù)M(F(K,A))產(chǎn)生,F(xiàn)為一個函數(shù),簡單地,可以是將K和A合并,比如哈希函數(shù),即HASH(F(K,A))值,截取加密數(shù)據(jù)塊所采用對稱加密算法的密鑰長度相應(yīng)的位數(shù)(注意,如果密鑰的長度大于hash函數(shù)的輸出長度,可以將以上信息分別輸入多個函數(shù),HASH(F1(K,A)),HASH(F2(K,A))),也可以是多個不同單向函數(shù)(如hash函數(shù))的值,作為所定位的數(shù)據(jù)塊的加密密鑰。當(dāng)然也可以把這個整體當(dāng)做一個單向函數(shù)。
理論上說,我們只需要存儲好初始密鑰就行了,不過有時候為了方便可選地也可以加密各個分段的加密密鑰??梢圆捎枚嘀丶用埽瑑?yōu)選地可以用公鑰加密后的分段加密密鑰,并且將分段信息、分段是否加密、分段的加密密鑰對應(yīng)的數(shù)據(jù)塊的信息、加密算法信息、明文數(shù)據(jù)的編碼類型等等,存放在一起,比如用表格存儲起來,我們稱為加密信息表。
當(dāng)有多級用戶的時候,由最高級用戶的初始密鑰Kr結(jié)合次高級用戶的某一唯一信息Bi(可以是公開的,也可以是只有最高級用戶知道的,比如用戶名稱、姓名、代號、編號等,但是這個信息應(yīng)該是唯一,不重名的)產(chǎn)生次高級用戶的初始密鑰,計算方法為M(F(Kr,Bi)),M()為單向函數(shù),截取合適長度的數(shù)據(jù)作為次高級用戶的初始密鑰;進一步由次高級用戶初始密鑰以相同的方式產(chǎn)生再低一級用戶的初始密鑰;直到產(chǎn)生最低級用戶的初始密鑰,然后由最低級用戶的初始密鑰產(chǎn)生數(shù)據(jù)塊的加密密鑰。
有時候密鑰可能存在泄漏,丟失的情形,如果是各級的初始密鑰丟失,由于密鑰的產(chǎn)生規(guī)則,需要更換所有的初始密鑰和由它們產(chǎn)生的塊密鑰,重新解密,再用新的密鑰加密,如果是單個塊密鑰泄漏,一般情況下,也需要更換初始密鑰,由于采用多個初始密鑰,加密信息表中應(yīng)該包含初始密鑰(可能是加密的)或者初始密鑰的信息。這會帶來較大的代價,因此,優(yōu)選地,我們提出兩種方案:A)泄漏的初始密鑰的用戶開始更換初始密鑰,產(chǎn)生下一級的用戶初始密鑰,(如果它是最低級的,則沒有下一級),采用新的最低級的初始密鑰產(chǎn)生密鑰去加密泄漏密鑰的塊,并且更新加密信息表;B)在加密信息中,增加一個信息更改密鑰次數(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(Kr,A,f(N)))產(chǎn)生,A為文件的確定信息,在密鑰信息表中也必須同樣對應(yīng)更改密鑰次數(shù)的信息,或者由于更改密鑰的數(shù)據(jù)塊總是少數(shù),將N和對應(yīng)的數(shù)據(jù)塊信息在其他地方存儲起來。表面上看,函數(shù)形式和前面的不一樣,增加了N相關(guān)的內(nèi)容,可以當(dāng)做是原單向函數(shù)的進一步限定。
如果某一級用戶的初始密鑰泄漏,從它的上一級用戶的初始密鑰產(chǎn)生新的密鑰,注意其中N在原來的基礎(chǔ)上加1,這樣可以保證密鑰是新的,而且由于單向性,互相之間不能相互推導(dǎo),不會泄密。
在文件多或者數(shù)據(jù)大的情況下,這些文件的權(quán)限也往往復(fù)雜,可能是屬于上面提到的多級用戶的樹形的權(quán)限。則可以采用如下的加密方法:
1、確定好各級用戶的權(quán)限,根據(jù)上述的方法,首先最高級用戶產(chǎn)生一個初始密鑰,然后根據(jù)上述方法,逐級地產(chǎn)生多級用戶的初始密鑰。
2、根據(jù)需要對需要加密的大規(guī)模數(shù)據(jù)進行分塊(分段),比如數(shù)據(jù)如果是以文件形式存儲的,可以以文件為單位當(dāng)做一塊,也可以是一個文件進行分段,也可以是一個文件夾當(dāng)做一塊。這里的文件也可以是Hadoop中的SequenceFile等文件形式,或者是xml文件中的一個特性的值。
3、根據(jù)設(shè)定的規(guī)則或者用戶的選擇,判定數(shù)據(jù)塊(段)是否需要進行加密,以及采用什么樣的方式進行加密。加密只針對于每一塊的值,比如某些文件格式中有分隔符,有長度的記錄,可以不進行加密。如果數(shù)據(jù)塊需要采用公鑰加密方法,則不需要用到產(chǎn)生的密鑰,只需要利用公鑰和私鑰加密解密即可,如果是對稱加密,則需要在下一步產(chǎn)生塊加密密鑰。
4、根據(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(xiàn)為一個函數(shù)(簡單地可以是將K、A兩個數(shù)據(jù)合并),截取加密數(shù)據(jù)塊所采用對稱加密算法的密鑰長度相應(yīng)的位數(shù)。采用單向性的函數(shù)就可以避免通過塊的密鑰去逆向推導(dǎo)初始密鑰,其他塊的密鑰,安全性好而且方便。
5、根據(jù)選擇的方法對數(shù)據(jù)塊進行加密,得到的數(shù)據(jù),并且將數(shù)據(jù)是否加密,如果加密,則相應(yīng)的解密所需要的信息和參數(shù)都要存儲起來,比如采用什么方式進行加密,加密的密鑰和各種參數(shù)。比如,可以將這些信息存放在表中,這些信息包含有唯一確定這個分段的信息A(比如文件的路徑,xml文件中的一個特性),密鑰K(這個密鑰可能是加密的)或者密鑰的存放信息B(比如,地址或者是在某個表格中的位置),加密的算法和其他信息(比如分組長度,初始向量,加密模式等)。
在此基礎(chǔ)上,還可以增加更改密鑰次數(shù)的信息,密鑰丟失的時候可以直接更換新的密鑰,重新加密數(shù)據(jù)塊。
解密是一個相反的過程。
具體實施方式
以下對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
實施例1為本用戶密鑰管理方法的實施例,由于采用相同的加密參數(shù)去加密大量的數(shù)據(jù)是不安全的,所以需要較多的密鑰。這些文件需要用不同的密鑰加密,所以這個用戶有一個初始密鑰K,他對不同的文件的對稱加密密鑰是不同的,且不能相互推導(dǎo),我們用唯一確定這個文件的路徑A以及初始密鑰K產(chǎn)生。采用一個哈希函數(shù)產(chǎn)生,取HASH(K‖A)值,‖表示合并,截取加密數(shù)據(jù)塊所采用對稱加密算法的密鑰長度相應(yīng)的位數(shù)作為所定位的文件的加密密鑰。當(dāng)然也可以把這個整體當(dāng)做一個單向函數(shù)。
實施例2為與實施例1相類似,是實施例1的拓展,最高級用戶的初始密鑰Kr結(jié)合次高級用戶的某一唯一編號Bi產(chǎn)生次高級用戶的初始密鑰,計算方法為將HASH(Kr‖Bi)的值截取合適長度的數(shù)據(jù)作為次高級用戶的初始密鑰;以此類推,進一步由次高級用戶初始密鑰以相同的方式產(chǎn)生再低一級用戶的初始密鑰;直到產(chǎn)生最低級用戶的初始密鑰,然后由最低級用戶的初始密鑰產(chǎn)生數(shù)據(jù)塊的加密密鑰。
實施例3為本加密方法實施例2的優(yōu)選實施例,與實施例2要求相同,有時候密鑰可能存在泄漏,丟失的情形,如果是各級的初始密鑰丟失,需要更換所有的初始密鑰和由它們產(chǎn)生的塊密鑰,重新解密,再用新的密鑰加密,如果是單個塊密鑰泄漏,一般情況下,也需要更換初始密鑰,由于采用多個初始密鑰,加密信息表中應(yīng)該包含初始密鑰(可能是加密的)或者初始密鑰的信息。因此,優(yōu)選地,在加密信息中,增加一個信息更改密鑰次數(shù)的信息N,簡單地可以是Null(空),1,2這樣的形式,下一級的初始密鑰Kr+1產(chǎn)生單向的函數(shù)為HASH(Kr‖Bi‖N),為了方便,假設(shè)函數(shù)的長度正好是密鑰的長度,這樣無需截取,在密鑰信息表中也必須同樣對應(yīng)更改密鑰次數(shù)的信息。如果某一級用戶的初始密鑰Kr+1泄漏,從它的上一級用戶的初始密鑰Kr產(chǎn)生新的密鑰HASH(Kr‖Bi‖N+1),依次遞推產(chǎn)生HASH(Kr+1‖Bj‖N'+1),…,最后產(chǎn)生數(shù)據(jù)塊的加密密鑰HASH(Kr+k‖As‖Nm+1)。以上產(chǎn)生的密鑰用于對稱加密,如果需要用公鑰和同態(tài)加密,則利用公鑰進行加密。
實施例4為方法本的加密應(yīng)用,一個單位的文件權(quán)限分配屬于上面提到的多級用戶的樹形的權(quán)限,采用如下的加密步驟:
1、確定好各級用戶的權(quán)限,最高級用戶可以獲得所有文件的加密密鑰,次高級的用戶可以獲得他管轄用戶的所有文件的沒有,根據(jù)上述的方法,首先最高級用戶產(chǎn)生一個初始密鑰Kr,然后根據(jù)上述方法,逐級地產(chǎn)生多級用戶的初始密鑰Kr+i。
2、以文件為單位當(dāng)做一個加密的單元。
3、根據(jù)設(shè)定的規(guī)則或者用戶的選擇,判定文件是否需要進行加密,以及采用什么樣的方式進行加密。對稱加密采用下一步的方法產(chǎn)生密鑰,非對稱加密利用相應(yīng)的密鑰加密。
4、根據(jù)文件的路徑A和最低級用戶的初始密鑰Kl產(chǎn)生文件的對稱加密密鑰,用HASH(F(Kl‖A))產(chǎn)生,截取加密數(shù)據(jù)塊所采用加密算法的密鑰長度相應(yīng)的位數(shù)作為密鑰。
5、根據(jù)選擇的方法對文件進行加密,得到的數(shù)據(jù),并且將數(shù)據(jù)是否加密,如果加密,則相應(yīng)的解密所需要的信息和參數(shù)都要存儲起來,比如采用什么方式進行加密,加密的密鑰和各種參數(shù)。比如,可以將這些信息存放在表中,這些信息包含有唯一確定這個文件的文件路徑,對應(yīng)的初始密鑰或者塊加密密鑰K(這個密鑰可能是加密的)或者密鑰的存放信息地址,加密的算法和其他信息(比如分組長度,初始向量,加密模式等)。
實施例5為本加密方法實施例4的改進,進一步增加了密鑰泄露后的密鑰更新方法,如果是各級的初始密鑰丟失,需要更換所有的初始密鑰和由它們產(chǎn)生的塊密鑰,重新解密,再用新的密鑰加密,在加密信息中,增加一個信息更改密鑰次數(shù)的信息N,簡單地可以是Null(空),1,2這樣的形式,下一級的初始密鑰Kr+1產(chǎn)生單向的函數(shù)為HASH(Kr‖Bi‖N),為了方便,假設(shè)函數(shù)的長度正好是密鑰的長度,這樣無需截取,在密鑰信息表中也必須同樣對應(yīng)更改密鑰次數(shù)的信息。如果某一級用戶的初始密鑰Kr+1泄漏,從它的上一級用戶的初始密鑰Kr產(chǎn)生新的密鑰HASH(Kr‖Bi‖N+1),依次遞推產(chǎn)生HASH(Kr+1‖Bj‖N'+1),…,最后產(chǎn)生數(shù)據(jù)塊的加密密鑰HASH(Kr+k‖As‖Nm+1),A為文件的路徑。以上產(chǎn)生的密鑰用于對稱加密,如果需要用公鑰和同態(tài)加密,則利用公鑰進行加密。
篇幅所限,不能一一舉例,以上實施例的限定條件和優(yōu)選方法可以交叉組合,本專利是保護范圍不限于實施例,實施例中許多限定可以用發(fā)明內(nèi)容中的限定替換。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。