一种需要大量密钥的密钥管理的方法与流程

文档序号:12493725阅读:363来源:国知局

本发明属信息安全领域,涉及一种对用户进行密钥管理的方法及其在数据加密中的应用。



背景技术:

在许多时候,不同的用户有不同的加密解密权限,比如一个高级别用户可以解密所有的加密文件,而低一级的用户则只能解密一部分文件,这些用户都有自己独自负责的一部分文件可以解密,他们管理的文件范围如同一棵树,最高级别用户可以看成是树根,负责所有文件,级别越低,负责的文件越少。

举一个例子,一个科的人每一个人都管理自己的文件,一个科长可以查阅该科所有人的文件,处长可以查阅所有下辖科的文件,以此类推,这种情况现实中经常存在,但是没有见到相关研究。

在数据量大的时候,密钥量是比较大的,而且管理起来非常复杂。目前大数据越来越大。目前有许多密钥管理方案,如果只是对密钥进行加密存储,则密钥量比较大,管理起来复杂,而且对于这类提到的如同一棵树一样的加密密钥的管理权限不能很好控制。为了能够存储较少的密钥,而且对不同级别的用户赋予不同的权限,我们利用单向函数来产生密钥。

大数据往往属于不同的用户,需要用不同的密钥加密,有不同的安全级别,有不同的访问控制权限。本发明利用单向函数的单向性质设计了一种可以满足需要的密钥生成管理方法,并且应用于大数据的加密保护。



技术实现要素:

对于单个用户,他可能负责大量的文件(或者数据等),采用相同的加密参数去加密大量的数据是不安全的,所以需要较多的密钥。这些文件需要用不同的密钥加密,本方法中这个用户可以有一个初始密钥,考虑到数据的加密需要用到大量的密钥,大量密钥的管理复杂,为了避免这些缺陷,这里采用单向的函数去产生密钥,单向函数可以正向计算,但是反过来求逆则困难。比如hash函数就是这样的函数。

加密的单元可以是一个文件,一个文件夹或者是文件的一部分,或者是某一段存储位置的数据等,我们称为块,我们用唯一确定这个数据块的信息A(比如位置、路径、代号等)以及用户初始密钥K产生块加密的对称密钥。单个分段(数据块)的加密密钥由数据块信息A和初始密钥K的不可逆函数M(F(K,A))产生,F为一个函数,简单地,可以是将K和A合并,比如哈希函数,即HASH(F(K,A))值,截取加密数据块所采用对称加密算法的密钥长度相应的位数(注意,如果密钥的长度大于hash函数的输出长度,可以将以上信息分别输入多个函数,HASH(F1(K,A)),HASH(F2(K,A))),也可以是多个不同单向函数(如hash函数)的值,作为所定位的数据块的加密密钥。当然也可以把这个整体当做一个单向函数。

理论上说,我们只需要存储好初始密钥就行了,不过有时候为了方便可选地也可以加密各个分段的加密密钥。可以采用多重加密,优选地可以用公钥加密后的分段加密密钥,并且将分段信息、分段是否加密、分段的加密密钥对应的数据块的信息、加密算法信息、明文数据的编码类型等等,存放在一起,比如用表格存储起来,我们称为加密信息表。

当有多级用户的时候,由最高级用户的初始密钥Kr结合次高级用户的某一唯一信息Bi(可以是公开的,也可以是只有最高级用户知道的,比如用户名称、姓名、代号、编号等,但是这个信息应该是唯一,不重名的)产生次高级用户的初始密钥,计算方法为M(F(Kr,Bi)),M()为单向函数,截取合适长度的数据作为次高级用户的初始密钥;进一步由次高级用户初始密钥以相同的方式产生再低一级用户的初始密钥;直到产生最低级用户的初始密钥,然后由最低级用户的初始密钥产生数据块的加密密钥。

有时候密钥可能存在泄漏,丢失的情形,如果是各级的初始密钥丢失,由于密钥的产生规则,需要更换所有的初始密钥和由它们产生的块密钥,重新解密,再用新的密钥加密,如果是单个块密钥泄漏,一般情况下,也需要更换初始密钥,由于采用多个初始密钥,加密信息表中应该包含初始密钥(可能是加密的)或者初始密钥的信息。这会带来较大的代价,因此,优选地,我们提出两种方案:A)泄漏的初始密钥的用户开始更换初始密钥,产生下一级的用户初始密钥,(如果它是最低级的,则没有下一级),采用新的最低级的初始密钥产生密钥去加密泄漏密钥的块,并且更新加密信息表;B)在加密信息中,增加一个信息更改密钥次数的信息,简单地可以是Null(空),1,2这样的形式,或者f(0),f(1),f(2),只有能够唯一确定修改次数的信息就行,下一级用户的初始密钥Kr+1产生单向的函数为M(F(Kr,B,f(N))),B为用户的编号,数据块的对称加密密钥采用M(F(Kr,A,f(N)))产生,A为文件的确定信息,在密钥信息表中也必须同样对应更改密钥次数的信息,或者由于更改密钥的数据块总是少数,将N和对应的数据块信息在其他地方存储起来。表面上看,函数形式和前面的不一样,增加了N相关的内容,可以当做是原单向函数的进一步限定。

如果某一级用户的初始密钥泄漏,从它的上一级用户的初始密钥产生新的密钥,注意其中N在原来的基础上加1,这样可以保证密钥是新的,而且由于单向性,互相之间不能相互推导,不会泄密。

在文件多或者数据大的情况下,这些文件的权限也往往复杂,可能是属于上面提到的多级用户的树形的权限。则可以采用如下的加密方法:

1、确定好各级用户的权限,根据上述的方法,首先最高级用户产生一个初始密钥,然后根据上述方法,逐级地产生多级用户的初始密钥。

2、根据需要对需要加密的大规模数据进行分块(分段),比如数据如果是以文件形式存储的,可以以文件为单位当做一块,也可以是一个文件进行分段,也可以是一个文件夹当做一块。这里的文件也可以是Hadoop中的SequenceFile等文件形式,或者是xml文件中的一个特性的值。

3、根据设定的规则或者用户的选择,判定数据块(段)是否需要进行加密,以及采用什么样的方式进行加密。加密只针对于每一块的值,比如某些文件格式中有分隔符,有长度的记录,可以不进行加密。如果数据块需要采用公钥加密方法,则不需要用到产生的密钥,只需要利用公钥和私钥加密解密即可,如果是对称加密,则需要在下一步产生块加密密钥。

4、根据文件块的位置信息(唯一确定这个分段的信息A)和最低级用户的初始密钥Kl产生数据块的加密密钥,我们用初始密钥产生。单个分段(块)的加密密钥由唯一确定这个分段(数据块)的信息A和初始密钥Kl的不可逆函数M(F(Kl,A))产生,比如哈希函数,即HASH(F(Kl,A))值,F为一个函数(简单地可以是将K、A两个数据合并),截取加密数据块所采用对称加密算法的密钥长度相应的位数。采用单向性的函数就可以避免通过块的密钥去逆向推导初始密钥,其他块的密钥,安全性好而且方便。

5、根据选择的方法对数据块进行加密,得到的数据,并且将数据是否加密,如果加密,则相应的解密所需要的信息和参数都要存储起来,比如采用什么方式进行加密,加密的密钥和各种参数。比如,可以将这些信息存放在表中,这些信息包含有唯一确定这个分段的信息A(比如文件的路径,xml文件中的一个特性),密钥K(这个密钥可能是加密的)或者密钥的存放信息B(比如,地址或者是在某个表格中的位置),加密的算法和其他信息(比如分组长度,初始向量,加密模式等)。

在此基础上,还可以增加更改密钥次数的信息,密钥丢失的时候可以直接更换新的密钥,重新加密数据块。

解密是一个相反的过程。

具体实施方式

以下对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

实施例1为本用户密钥管理方法的实施例,由于采用相同的加密参数去加密大量的数据是不安全的,所以需要较多的密钥。这些文件需要用不同的密钥加密,所以这个用户有一个初始密钥K,他对不同的文件的对称加密密钥是不同的,且不能相互推导,我们用唯一确定这个文件的路径A以及初始密钥K产生。采用一个哈希函数产生,取HASH(K‖A)值,‖表示合并,截取加密数据块所采用对称加密算法的密钥长度相应的位数作为所定位的文件的加密密钥。当然也可以把这个整体当做一个单向函数。

实施例2为与实施例1相类似,是实施例1的拓展,最高级用户的初始密钥Kr结合次高级用户的某一唯一编号Bi产生次高级用户的初始密钥,计算方法为将HASH(Kr‖Bi)的值截取合适长度的数据作为次高级用户的初始密钥;以此类推,进一步由次高级用户初始密钥以相同的方式产生再低一级用户的初始密钥;直到产生最低级用户的初始密钥,然后由最低级用户的初始密钥产生数据块的加密密钥。

实施例3为本加密方法实施例2的优选实施例,与实施例2要求相同,有时候密钥可能存在泄漏,丢失的情形,如果是各级的初始密钥丢失,需要更换所有的初始密钥和由它们产生的块密钥,重新解密,再用新的密钥加密,如果是单个块密钥泄漏,一般情况下,也需要更换初始密钥,由于采用多个初始密钥,加密信息表中应该包含初始密钥(可能是加密的)或者初始密钥的信息。因此,优选地,在加密信息中,增加一个信息更改密钥次数的信息N,简单地可以是Null(空),1,2这样的形式,下一级的初始密钥Kr+1产生单向的函数为HASH(Kr‖Bi‖N),为了方便,假设函数的长度正好是密钥的长度,这样无需截取,在密钥信息表中也必须同样对应更改密钥次数的信息。如果某一级用户的初始密钥Kr+1泄漏,从它的上一级用户的初始密钥Kr产生新的密钥HASH(Kr‖Bi‖N+1),依次递推产生HASH(Kr+1‖Bj‖N'+1),…,最后产生数据块的加密密钥HASH(Kr+k‖As‖Nm+1)。以上产生的密钥用于对称加密,如果需要用公钥和同态加密,则利用公钥进行加密。

实施例4为方法本的加密应用,一个单位的文件权限分配属于上面提到的多级用户的树形的权限,采用如下的加密步骤:

1、确定好各级用户的权限,最高级用户可以获得所有文件的加密密钥,次高级的用户可以获得他管辖用户的所有文件的没有,根据上述的方法,首先最高级用户产生一个初始密钥Kr,然后根据上述方法,逐级地产生多级用户的初始密钥Kr+i

2、以文件为单位当做一个加密的单元。

3、根据设定的规则或者用户的选择,判定文件是否需要进行加密,以及采用什么样的方式进行加密。对称加密采用下一步的方法产生密钥,非对称加密利用相应的密钥加密。

4、根据文件的路径A和最低级用户的初始密钥Kl产生文件的对称加密密钥,用HASH(F(Kl‖A))产生,截取加密数据块所采用加密算法的密钥长度相应的位数作为密钥。

5、根据选择的方法对文件进行加密,得到的数据,并且将数据是否加密,如果加密,则相应的解密所需要的信息和参数都要存储起来,比如采用什么方式进行加密,加密的密钥和各种参数。比如,可以将这些信息存放在表中,这些信息包含有唯一确定这个文件的文件路径,对应的初始密钥或者块加密密钥K(这个密钥可能是加密的)或者密钥的存放信息地址,加密的算法和其他信息(比如分组长度,初始向量,加密模式等)。

实施例5为本加密方法实施例4的改进,进一步增加了密钥泄露后的密钥更新方法,如果是各级的初始密钥丢失,需要更换所有的初始密钥和由它们产生的块密钥,重新解密,再用新的密钥加密,在加密信息中,增加一个信息更改密钥次数的信息N,简单地可以是Null(空),1,2这样的形式,下一级的初始密钥Kr+1产生单向的函数为HASH(Kr‖Bi‖N),为了方便,假设函数的长度正好是密钥的长度,这样无需截取,在密钥信息表中也必须同样对应更改密钥次数的信息。如果某一级用户的初始密钥Kr+1泄漏,从它的上一级用户的初始密钥Kr产生新的密钥HASH(Kr‖Bi‖N+1),依次递推产生HASH(Kr+1‖Bj‖N'+1),…,最后产生数据块的加密密钥HASH(Kr+k‖As‖Nm+1),A为文件的路径。以上产生的密钥用于对称加密,如果需要用公钥和同态加密,则利用公钥进行加密。

篇幅所限,不能一一举例,以上实施例的限定条件和优选方法可以交叉组合,本专利是保护范围不限于实施例,实施例中许多限定可以用发明内容中的限定替换。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1