专利转让平台_买专利_卖专利_中国高校专利技术交易-买卖发明专利上知查网

全部分类
全部分类
一种大文件的加密方法

一种大文件的加密方法

IPC分类号 : H04L29/06,H04L9/08

申请号
CN201710023574.4
可选规格
  • 专利类型: 发明专利
  • 法律状态: 有权
  • 申请日: 2017-01-13
  • 公开号: CN106685980B
  • 公开日: 2017-05-17
  • 主分类号: H04L29/06
  • 专利权人: 桂林电子科技大学

专利摘要

本发明属于信息安全领域,涉及大文件加密的方法。该方法考虑到大文件的数据庞大,不适合于全部加密,而且不同的加密方法有不同的优缺点,全同态加密也不能解决所有的委托计算委托,而且加密的代价大,有些需要采用具有误导功能的加密,有些只需要采用一般对称加密,因此根据需要采用分段选择合适的加密方法,通过规则或者选取,只加密部分数据。同时提出了减少密钥管理且保证安全的优选方案,可以只需要较少的密钥进行文件的加解密。

权利要求

1.一种大文件的加密方法,其特征为采用如下步骤:1)、读取文件,获得内容,根据需要对数据或者内容进行分块;

2)、根据需要选择是否加密,以及何种加密方式;

3)、选择已有密钥或者产生密钥,根据选择的方法对各个数据块需加密内容进行加密;

4)、将每一个数据块加密得到的密文,如果需要,进行必要的适应性的编码转换,并且根据相应的文件格式要求连接为一个密文文件,进行必要的处理让数据符合保存的格式,采用相应的格式保存在最后的密文文件中,并且将数据是否加密,如果加密,则对相应的解密所需要的信息和参数进行存储。

2.如权利要求1所述的大文件的加密方法,其特征为:在前面分段的基础上进一步将需要进行委托计算的数值与非数值的数据进行继续分段,分段后依然要维持相应的格式,数值加密的时候在采用同态加密,其他数据采用非同态加密,并且记录分块的位置信息。

3.如权利要求1所述的大文件的加密方法,其特征为:在加密算法的选择上,根据数据需要进行计算的所有函数来判断需要的加密方法,在可以满足所有函数计算需要的前提下优先选用加密算法顺序为:一般加密、半同态加密、全同态加密。

4.如权利要求2所述的大文件的加密方法,其特征为:对称密码算法加密的密钥由单向函数生成,单个分段的对称加密密钥由唯一确定这个分段的位置信息A和初始密码K的不可逆函数M(F(K,A))产生,F为一个函数,一些误导功能的加密,有时候还需要两层的加密,需要较长的密钥,该函数产生一个流密码的密钥,通过这个密钥产生密钥流,在密钥流中截取需要的误导加密的各层密钥。

5.如权利要求4所述的大文件的加密方法,其特征为:存在多个用户对应多个初始密码Ki,不同用户加密和解密自己负责的数据块,加密信息也存放在加密信息表中,加密信息表中应该包含初始的密码Ki或者Ki的信息;当单个块密钥泄漏时,采用新的初始密码产生密钥去加密泄漏密钥的块,并且更新加密信息表中的密码信息。

6.如权利要求4所述的大文件的加密方法,其特征为:计算块密钥的时候,增加一个信息更改密钥次数的信息,用单向的函数M(F(K,A,f(N)))产生块密钥,f(N)初值为空,M(F(K,A,f(N)))在初值为空的情况下,函数形式简化为M(F(K,A)),在密钥信息表中也必须同样对应更改密钥次数的信息。

7.如权利要求4所述的大文件的加密方法,其特征为:当有多级用户的时候,确定好各级用户的权限,首先最高级用户产生一个初始密码K1,有高级用户产生下一级用户的密码,下一级用户的初始密码Kr+1产生单向的函数为M(F(Kr,B),B为用户的编号,以此类推逐级地产生多级用户的初始密码,直至产生最低级用户的密码,然后利用这些最低级用户的密码产生该用户具有加解密权限的数据块的对称加密的块加密密钥。

8.如权利要求7所述的大文件的加密方法,其特征为:计算用户密码和块密钥的时候,增加一个信息更改密钥次数的信息,用单向的函数M(F(K,A,f(N)))产生块密钥,用单向的函数M(F(K,B,f(N)))产生下级用户密码,f(N)初值为空,M(F(K,A,f(N)))在初值为空的情况下,函数形式简化为M(F(K,A)),在密钥信息表中也必须同样对应更改密钥次数的信息,A为文件的确定信息,如果某一级用户的初始密码泄漏,从该用户的上一级用户的初始密码产生该用户的新密码, N在原来的基础上加1。

说明书

技术领域

本发明属信息安全领域,涉及一种对大文件进行加密的方法。

背景技术

随着信息技术的发展,许多服务也趋向于信息化,数字化,人们越来越依赖数据,数据量也越来越大。相应地,一些文件也越来越大。目前非常热门的大数据(big data,mega data)的一些文件也非常大,有些以流式文件的形式存储。显然这些文件中往往有安全需求,需要进行加密保护,但是对大量的数据进行加密明显又是不现实的。因为大数据中有些数据的价值比较低,无需进行保密。但是由于其复杂多样性,有些数据的价值可能非常高,需要进行不同程度的保护,针对云计算和大数据的加密方面,目前有代理重加密和同态加密,其中代理重加密是密文间的一种密钥转换机制,在这个过程中,代理人得不到数据的明文信息,从而降低了数据泄露风险。而这两个密文所对应的明文是一样的,实现了数据共享。同态加密的目的是为了让存储在服务器上的密文数据依然能够进行计算。同态加密效率低,冗余度大,现实中应用有较大的局限性,上述的加密方法直接用于加密大规模的数据是不现实的,因为计算量庞大,而且诸如同态加密往往会带来数据的扩展,代价大,重代理加密只适合于特定用户之间的密钥转换,现实中也没有必要将所有的数据进行上述的加密。同态加密比较适用于需要计算的数据的加密,但是代价比较高。用传统的加密方法加密这些数据也存在计算量大等等问题。而且现实中,我们还希望对于某些数据,加密后,密文可以被解密为有意义的错误密文,或者明文的关键内容被替换为其他误导意义的字、词、句子等等,以达到误导的效果,既要避免庞大的工作量,又要保护其中重要的数据,需要采取一定的灵活方法。在本发明中考虑对重要数据进行加密,而不重要数据不做处理。

发明内容

考虑到不同数据的不同需求,本发明设计了一种针对于大文件的选择性加密方法。

方案1:对文件进行读取,对其数据或者内容进行分段加密,如果无需保密的不加密,如果需要加密的根据其需要采用不同的加密方法,最后保存为密文。加密的总体步骤如下:

1、读取文件,获得内容,对于文本文件,可以是直接对数据进行加密,对于word之类的文件,可以对其包含的文本进行加密,根据需要对数据或者内容进行分块(分段),比如分块可以是Hadoop中的SequenceFile等文件(流式文件)中包含的一个文件,或者是xml文件中的一个特性的值,或者是word文件的一个段落、句子等单元,表格中的一个数据项、一行、一列等。

2、根据需要选择是否加密,以及何种加密方式,这个可以是机器的,也可以是人工的,比如根据设定的规则进行机器判断或者用户的人工选择,判定大文件的每一个数据块(段)是否需要进行加密,以及采用什么样的方式进行加密。

3、选择已有密钥或者产生密钥,根据选择的方法对各个数据块进行加密,加密可以针对于每一块的值,比如某些文件格式中有分隔符,有长度的记录,如果需要明文形式,可以不进行加密。

4、将每一个数据块加密得到的密文,如果需要,进行必要的适应性的编码转换,比如通过一般加密得到的是字节数组,一般情况下需要转换为字符数组再写入文件(解密的时候需要进行相反的转换),并且根据相应的文件格式要求连接为一个密文文件,采用相应的格式保存最后的密文,比如,如果是word文档,针对其文本内容加密,则将加密的密文转换为字符形式的编码连接起来作为文本,放入word文档,然后保存word文档,如果是流式文件,根据流式文件的格式进行存储,加密中如果引起长度的变化,则需要在最终存储的文件中进行修改长度值,对文件结构中的长度信息进行相应的调整。即进行必要的处理让数据符合保存的格式,将这些密文数据保存在密文文件中,并且将数据是否加密,如果加密,则相应的解密所需要的信息和参数都要存储起来,比如数据块的位置信息(比如起始和结束位置或者起始位置和长度)采用什么方式进行加密,加密的密钥(或获得密钥需要的信息)和各种参数,这一块密文乃至于明文的长度存放起来。为了方便,可以将这些信息存放在表中,这些信息包含有能唯一确定这个分段的信息A(比如xml文件中的一个特性,块在一个文件中的起始位置和结束位置,存储器中的位置等),获得对应的块密钥需要的信息,比如密钥K(这个密钥可能是加密的)或者密钥的存放信息B(比如,地址或者是在某个表格中的位置),加密的算法和其他解密所需信息(比如分组长度,初始向量,加密模式等),也可以包括其他需要备注的消息。加密算法也可能是公钥加密算法等,则需要存放相应的公钥信息。

解密是一个相反的过程,对于每一块数据,首先判断其是否加密,如果已经加密,则需要解密,获取其密钥等信息。对数据块进行解密。

本方案的的有益技术效果有:解决了现有技术不适用于大文件加密的缺陷,避免了完全加密不现实的问题。对于不同的块根据不同的需要采用不同的加密方法。

方案2:在前面方案1的基础上,考虑到同态加密一般只对数值有意义,在表中,可能某一列都是需要进行同态加密的数据,很容易进行区分,xml文件中的数据一般也容易区分,但是在文本文件和word中,需要进行同态加密的数值可能夹杂在文本(文字)或者其他的数据中,在前面分段的基础上可以进一步将数值与文本等数据进行分开加密,数值加密的时候在采用同态加密,这样需要将同态加密后的数值进行委托计算的时候可以很容易找到数据,而且大量的数据可以不进行复杂,而且冗余度高的同态加密计算。分段后依然要保证对原来文件格式的适应性,保证解密的可逆性,比如如果对于word文件,分段的时候进一步将这些数值和其他数据进行分块即可,如果是SequenceFile文件,可以采用两种方法:A)类似于上面的,如果一个记录中包含有数值和其他数据,则进一步将每一段数值和其他数据进行分割,成为不同的块进行加密,同时,根据SequenceFile文件的格式,将这些块也设置为对应的一个记录,原来的一个记录被分割为多个记录;B)每一个记录中的每一段数值和其他数据进行分割,成为不同的块进行加密,同时,加密后的密文依然连接起来,成为一个记录,并且依然根据流式文件的格式进行存储,在存储加密信息的时候,为了实现这类需要进行代理计算的数据密文和一般文本的密文的区分,每一个块的位置信息(比如起始位置和长度或起始位置和结束位置)和加密方式被记录下来,便于解密。也可以采用设置起始标记和结束标记的方法来分割这些块,这些起始和结束标记是密文中不会出现的符号,在密文前后增加起始标记和结束标记。

方案3:在方案1或者2的基础上,考虑诸如同态加密,包括全同态加密,并不能满足所有云计算背景下的委托计算的需要,有些计算依然不能被全同态加密后处理,所以,它不能解决所有问题,也没有必要花如此大的代价全部采用同态加密。考虑到同态加密有时候既有需要,但是又代价比较高,对于一般的数据如果用代价太大的同态加密就显得大材小用,吃力不讨好,除了全同态加密,比全同态加密代价小的加法同态和乘法同态也有其适用范围,如果能够用加法同态加密的数据采用全同态加密同样显得吃力不讨好。优选地,在加密的时候进行加密方法的选择,根据数据需要进行计算的所有函数来判断涉及到的数据是否需要用到同态加密(只有一个函数需要用到同态加密,而其他函数都不需要同态,也视为需要用到同态加密,即满足所有可能函数的需要,下同),需要采用什么样的同态加密,当其他一般的加密和非全同态加密都不可行,必须用同态加密的时候,采用全同态加密,当全同态加密和非全同态加密的时候,采用非全同态(半同态)加密方法,当普通加密可行的时候,优先选择普通的加密方法,即当多种方法都可以达到目的的时候,优先选用次序为,一般加密、半同态加密、全同态加密。

方案4:在前面方案1、2或者3的基础上,优选地,在加密中,非对称的加密,包括同态加密,还有重代理加密总是少数,因为他们的代价比较高,因此更多会采用对称的加密,对称加密中采用相同的加密参数去加密大量的数据是不安全的,所以需要较多的密钥。考虑到大文件的大量数据的对称加密需要用到大量的密钥,大量密钥的管理复杂,为了避免这些缺陷,这里采用单向的函数去产生密钥。单向函数可以正向计算,但是反过来求逆则困难。比如hash函数就是这样的函数,我们用大文件的数据块的位置信息(可以唯一确定这个分段的信息A),初始密钥或者是口令(统称为密码,初始密码)K产生,现实中,人们往往很容易记住口令,这样无需保存口令,但是密钥则需要另外加密存储。单个分段的加密密钥由唯一确定这个分段(数据块)的位置信息A和K的不可逆的单向函数M(F(K,A))产生,比如哈希函数,即HASH(F(K,A))值,F为一个函数,简单地可以是将KA两个数据合并,截取加密数据块所采用对称加密算法的密钥长度相应的位数,注意,如果密钥的长度大于hash函数的输出长度,可以将以上信息分别输入多个函数,HASH(F1(K,A)),HASH(F2(K,A)),也可以是多个不同单向函数(如hash函数)的值,作为所定位的数据块的加密密钥。当然也可以把这个整体当做一个单向函数。采用单向性的函数就可以避免通过块的密钥去逆向推导初始密码,其他块的密钥,安全性好而且方便。如果数据块需要采用公钥加密方法,则不需要用到上述产生的密钥,只需要利用公钥和私钥加密解密即可,如果是对称加密,则需要用到上面产生的块加密密钥。在有些加密中,比如一些误导功能的加密,有时候还需要两层的加密,需要较长的密钥,可以用产生的数据去产生一个伪随机序列,比如可以采用单向函数产生(可能需要截取)一个流密码的密钥,通过这个密钥以流密码算法产生密钥流,在密钥流中截取需要的误导加密的各层密钥。产生密钥后,根据方案1,2,3的方法进行加密。

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

方案5:在前面方案4的基础上,进一步地,可以是各个用户有自己的初始密钥或者口令,这里也可以统一称为密码Ki,这样他可以加密和解密自己负责的数据块,加密信息也存放在加密信息表中,如果采用多个初始密码,加密信息表中应该包含初始的密码Ki(可能是加密的Ki)或者Ki的信息(比如编号,存放位置等)。如果是单个块密钥泄漏,采用新的初始密码产生密钥去加密泄漏密钥的块,并且更新加密信息表。

方案6:在前面方案4或者5的基础上添加更新密钥功能,有时候密码可能存在泄漏,丢失的情形,如果是Ki丢失,需要更换所有的由它产生的数据块的块密钥,重新解密,再用新的密钥加密,如果是单个块密钥泄漏,一般情况下,根据密钥的产生规则也需要更换那个初始的密码Ki,由于采用多个初始密码,加密信息表中应该包含初始密码(可能是加密的)或者初始密码的信息。因此,优选地,我们提出两种方案:A)采用新的密码产生密钥去加密泄漏密钥的块,并且更新加密信息表;B)计算块密钥的时候,增加一个信息更改密钥次数的信息,简单地可以是Null(空),1,2这样的形式,或者f(0),f(1),f(2),只要能够唯一确定修改次数的信息就行,用单向的函数M(F(K,A,f(N)))产生块密钥,在密钥信息表中也必须同样对应更改密钥次数的信息,或者由于更改密钥的数据块总是少数,可以对有更改密钥的数据块的更改次数和对应的数据块信息在其他地方存储起来。

数据解密时候先判定数据是否加密,根据加密信息表的信息解密。也可以根据密码生成分段的块加密密钥用于解密。

方案7:在前面方案4或者5的基础上,考虑在大数据的一些流式文件中,实际上一个文件包含许多记录,实际上相当于一个独立文件,这里还是称为数据块。在许多时候,不同的用户对大数据文件中的某一部分包含的数据块(比如记录)有不同的加密解密权限,比如一个高级别用户可以解密所有的加密数据块,而低一级的用户则只能解密一部分数据块,这些用户都有自己独自负责的一部分文件可以解密,他们管理的文件范围如同一棵树,最高级别用户可以看成是树根,负责所有文件,级别越低,负责的文件越少。举一个例子,一个科的人每一个人都管理自己的文件,一个科长可以查阅该科所有人的文件,处长可以查阅所有下辖科的文件,以此类推,这种情况现实中经常存在。

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

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

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

因此在文件很大,其中的数据块(比如记录)的权限也往往复杂,可能是属于上面提到的多级用户的树形的权限,则可以采用如下的加密方法:

1、确定好各级用户的权限,根据上述的方法,首先最高级用户产生一个初始密码K1,下一级用户的初始密码Kr+1产生单向的函数为M(F(Kr,B),B为用户的编号,以此类推逐级地产生多级用户的初始密码。

2、根据需要对需要加密的大文件进行分块(分段),以Hadoop中的SequenceFile等大文件的一个记录。

3、根据设定的规则或者用户的选择,判定数据块(段)是否需要进行加密,以及采用什么样的方式进行加密。如果数据块需要采用公钥加密方法,则不需要用到产生的密钥,只需要利用公钥和私钥加密解密即可,如果是对称加密,则需要在下一步产生块加密密钥。

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

5、对需要加密的块,根据选择的方法对数据块进行加密,得到的数据,加密可以只针对于每一块的值,比如某些文件格式中有分隔符,有长度的记录,可以不进行加密,加密后长度有变化则做相应的修改。并且将数据是否加密,如果加密,则相应的解密所需要的信息和参数都要存储起来,比如采用什么方式进行加密,对应的密钥信息(可以获得密钥的信息,比如确定这个块属于某个最低级的用户,根据块密钥的产生规则就获得块密钥,另外也可以是块密钥的存放位置(比如,地址或者是在某个表格中的位置),或者加密的块密钥等等。)和各种参数。为了方便,本例可以将这些信息存放在表中,这些信息包含有唯一确定这个分段的信息A----数据块的起始位置和结束位置,可以恢复块密钥的信息-加密的块密钥,加密的算法和其他信息(分组长度,初始向量,加密模式,填充模式等)。

6、将每一个数据块加密的密文根据相应的方法连接为一个密文文件,采用相应的格式保存,比如,如果是word文档,针对其文本内容加密,则将加密的文本也连接起来作为文本,放入word文档,然后保存文档,如果是流式文件,根据流式文件的格式进行存储,对文件结构中的长度信息进行相应的调整。

本方案的优势在于减少需要存储的密码或密钥,而且可以控制多级的权限。

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

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

这样密钥丢失的时候可以直接更换新的密钥,重新加密数据块。一旦泄密,无需大面积更换密钥(密码)。

具体实施方式

下面给出本发明的部分实施例,所举实例只用于解释本发明,并非用于限定本发明的范围。

实施例1为本加密方法的实施例,我们选取SequenceFile文件为例,加密步骤如下:

1、读取文件,即可分析每一个记录及其长度,以它的一个记录为数据块。以记录的起始位置和结束位置作为数据块的定位信息。

2、根据设定的关键词计算规则得出记录的敏感程度,达到一定阈值的记录判定需要加密,同时可以根据规则确定到底是对称加密,还是公钥加密(包括一些同态加密和代理重加密),如果是用户根据需要对不达阈值的记录要选择加密,则也加密该块。如果文件不属于以上两种情形,不加密。

3、选择已有密钥或者产生密钥,根据选择的方法对各个数据块进行加密,加密可以针对于每一块的值,如某些文件格式中有分隔符,有长度的记录,如果需要明文形式,可以不进行加密。如果是对称加密,需要产生块密钥,选择加密块的各种参数,如果是非对称加密,需要产生或者选择密钥对文件进行加密,并且将文件是否加密,如果加密,对密钥用公钥加密,存放在加密信息表中,表中包含有唯一确定这个分段的起始和结束位置信息,公钥加密的密钥,加密的算法和分组长度,初始向量,加密模式,相关编码信息等。

4、将每一个数据块加密的密文,还需要进行适应性的编码转换,比如通过一般加密得到的是字节数组,一般应该转换为字符数组再写入文件(解密的时候需要进行相反的转换),并且根据相应的文件格式要求连接为一个密文文件,采用相应的格式保存最后的密文,根据流式文件的格式进行存储,加密中如果引起长度的变化,则需要在最终存储的文件中进行修改长度值,对文件结构中的长度信息进行相应的调整。将这些密文数据保存在密文文件中,并且将数据是否加密,如果加密,则相应的解密所需要的信息和参数都要存储起来,比如数据块的位置信息(比如起始和结束位置或者起始位置和长度)采用什么方式进行加密,加密的密钥和各种参数,这一块密文乃至于明文的长度存放起来。为了方便,可以将这些信息存放在表中,这些信息包含有能唯一确定这个分段在一个文件中的起始位置和结束位置,是否加密,加密的密钥K,加密的算法和其他解密所需信息(比如分组长度,初始向量,加密模式,填充模式等),也可以包括其他需要备注的消息。加密算法也可能是公钥加密算法等,则需要存放相应的公钥信息。

解密是一个相反的过程,对于每一块数据,首先判断其是否加密,如果已经加密,则需要解密,获取其密钥等信息。对数据块进行解密。

实施例2为本加密方法的实施例1的进一步改进,在实施例1的基础上,考虑到文件中,文本和数值往往混合在一起,当数值和文本混合在一起的时候,将文本和数值隔离,各自采用适合的加密方法,比如对于最初的分段,考虑不同加密需要,进行进一步分段,对数值和文本采用不同加密方法,对数值进行同态加密,其他数据采用一般的对称加密,所以对它们也分段以隔离。对于流式文件,可以不用增加记录数,某个记录中包含有需要进行同态加密的数据的时候,在这些数据的前后进行分段,数值采用同态加密,其他采用一般的加密,将一个记录中的多个分段的密文放在一起,但是记录最开始一段的起始位置和每一段的长度,将这些密文放在一起,按照流式文件的格式存储起来,另外在加密信息表中记录同态加密后数值对应的指标,符号、代号或者参数。这样便于委托计算的时候调取。

实施例3为本加密方法的实施例1的进一步改进,在实施例1的基础上,将需要同态加密的数值可能涉及到的计算函数进行分析,来判断涉及到的数据是否需要用到同态加密,需要采用什么样的同态加密,当进行某些委托计算时候,其他一般的加密和非全同态加密都不可直接计算,需要用到全同态加密的时候,采用全同态加密,当全同态加密和非全同态都可行加密的时候,采用非全同态(半同态)加密方法,当普通加密可行的时候,优先选择普通的加密方法,即当多种方法都可以达到目的的时候,优先选用次序为,一般加密、半同态加密、全同态加密。

即一般加密可行就优先用一般加密,一般加密不可行,半同态加密可行即用半同态加密,否则用全同态加密。

实施例4:实施例4为本加密方法的实施例1的进一步改进,在实施例1的基础上,用大文件的数据块的起始和结束位置信息和密码K的单向函数产生块密钥。单个分段的加密密钥由唯一确定这个分段(数据块)的位置信息A和K的哈希函数HASH(K‖A)产生。加密算法中还包含一种具有误导功能的加密,它采用一个内层加密和外层加密,需要较长密钥,我们用hash产生的值,作为流密码的密钥,产生一个密钥流,截取最前面128bit作为外层加密的密钥,后面的部分依次截取8bit作为内层加密的每一个关键词的加密用密钥。产生密钥后,根据可以根据实施例1,2,3的方法进行加密。为了方便加密各个分段的加密密钥。用公钥加密分段加密密钥,并且将公钥加密后的分段加密密钥、分段信息、分段是否加密、分段的加密密钥对应的数据块的信息、解密分段所需的信息、明文数据的编码类型等等,存放在一起,比如用表格存储起来。

实施例5:在实施例4的基础上,大文件的不同的块属于不同的用户,各个用户有自己密码Ki,这样他可以加密和解密自己负责的数据块,加密信息也存放在加密信息表中,如果采用多个初始密码,加密信息表中除了包含实施例4中的信息,还应该包含初始的加密的Ki

实施例6:在实施例4、5的基础上,计算块密钥的时候,增加一个信息更改密钥次数的信息,第一次、遗失密钥后第二次、再次遗失密钥后第三次的时候,分别添加一个f(N)分别是Null(空),1,2这样的信息,用单向的函数HASH(K‖A‖f(N))产生块密钥,最初产生块密钥为HASH(K‖A),第一次更新密钥为HASH(K‖A‖1),以此类推,在密钥信息表中前面的基础上,也添加对应更改密钥次数的信息。

实施例7:在实施例5的基础上,考虑大数据中的不同记录往往属于不同的用户,需要用不同的密钥加密,有不同的安全级别,有不同的访问控制权限。

当有前面提到的树型的多级用户的权限时候,由最高级用户的初始密码Kr结合次高级用户的某一唯一编号Bi产生次高级用户的初始密码,计算方法为HASH(Kr‖Bi)),截取合适长度的数据作为次高级用户的初始的密码;进一步由次高级用户初始的密码以相同的方式产生再低一级用户的初始的密码;直到产生最低级用户的初始的密码,然后由最低级用户的初始的密码产生数据块的加密密钥。完整步骤如下:

1、确定好各级用户的权限,根据上述的方法,首先最高级用户产生一个初始密码K1,然后根据利用方法hash函数SHA256(K1‖B),‖表示简单的合并连接,逐级地产生多级用户的初始密码。

2、根据需要对需要加密的大文件进行分块(分段),以Hadoop中的SequenceFile等大文件的一个记录。

3、根据关键词出现的频率和用户按需要选择,判定数据块(段)是否需要进行加密,以及采用什么样的方式进行加密。如果数据块需要采用公钥加密方法,则不需要用到产生的密钥,只需要利用公钥和私钥加密解密即可,如果是对称加密,则需要在下一步产生块加密密钥。

4、根据数据块的位置信息和最低级用户的初始密码Kl产生数据块的加密密钥。单个分段(块)的加密密钥由HASH(F(Kl‖A))值产生,截取加密数据块所采用对称加密算法的密钥长度相应的位数。

5、对需要加密的块,根据选择的方法对数据块进行加密,得到的数据,加密可以只针对于每一块的值,并且将数据是否加密,如果加密,则相应的解密所需要的信息和参数都要存储在加密信息表中,包括采用什么方式进行加密,加密的块密钥、数据块的起始位置和结束位置和其他信息(分组长度,初始向量,加密模式,填充模式等)。

6、将每一个数据块加密的密文根据相应的方法连接为一个密文文件,采用相应的格式保存,本实施例针对的是流式文件,根据流式文件的格式进行存储,对文件结构中的长度信息进行相应的调整。

实施例8:在前面实施例7基础上增加密钥(密码)更新功能,在计算的时候增加一个信息更改密钥次数的信息,如次高级用户密钥为HASH(Kl‖A‖f(N)),f(N)第一次产生密钥为Null(空),后面分别为1,2,下一级用户的初始密码Kr+1产生单向的函数为HASH(Kr‖B‖f(N)),B为用户的编号,数据块的对称加密密钥采用HASH(Ks‖A‖f(N))产生,A为文件的位置信息,在密钥信息表中也必须同样对应更改密钥次数的信息。

如果某一级用户A的初始密码泄漏,从用户A的上一级用户的初始密码产生用户A的新密码(密钥),注意其中N在原来的基础上加1,第一次更新的密码为HASH(Kr‖B‖1),以此类推。

篇幅所限,不能一一举例,实施例也相对简化,以上实施例的限定条件和一些方法可以交叉组合,以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

一种大文件的加密方法专利购买费用说明

专利买卖交易资料

Q:办理专利转让的流程及所需资料

A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。

1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。

2:按规定缴纳著录项目变更手续费。

3:同时提交相关证明文件原件。

4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。

Q:专利著录项目变更费用如何缴交

A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式

Q:专利转让变更,多久能出结果

A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。

动态评分

0.0

没有评分数据
没有评价数据
×

打开微信,点击底部的“发现”

使用“扫一扫”即可将网页分享至朋友圈

×
复制
用户中心
我的足迹
我的收藏

您的购物车还是空的,您可以

  • 微信公众号

    微信公众号
在线留言
返回顶部