一种大数据的改进加密方法与流程

文档序号:11236575阅读:335来源:国知局

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



背景技术:

随着信息技术的发展,许多服务也趋向于信息化,数字化,人们越来越依赖数据,数据量也越来越大。大数据(bigdata,megadata),或称巨量资料,指的是需要新处理模式才能具有更强的决策力、洞察力和流程优化能力的海量、高增长率和多样化的信息资产。大数据具有4v特点:volume(大量)、velocity(高速)、variety(多样)、value(价值)。

“大数据”的形式多样化。大数据必然无法用单台的计算机进行处理,必须采用分布式计算架构。它的特色在于对海量数据的挖掘,但它必须依托云计算的分布式处理、分布式数据库、云存储和/或虚拟化技术。美国互联网数据中心指出,互联网上的数据每年将增长50%,每两年便将翻一番,而目前世界上90%以上的数据是最近几年才产生的。此外,数据又并非单纯指人们在互联网上发布的信息,全世界的工业设备、汽车、电表上有着无数的数码传感器,随时测量和传递着有关位置、运动、震动、温度、湿度乃至空气中化学物质的变化,也产生了海量的数据信息。

这样大量的,有价值的数据必然也存在信息安全问题,传统的数据一般采用加密即可,但是,大数据由于其形式和需求的多样化,数据量巨大,采用一般的加密方法必然会带来许多问题。

在云计算和大数据的加密方面,目前有代理重加密和同态加密,其中代理重加密是密文间的一种密钥转换机制,是由blaze等人在1998年的欧洲密码学年会上提出的,并由ateniese等人在2005年的网络和分布式系统安全研讨会议(ndss,network&distributedsystemsecuritysymposium)和2007年的美国计算机学会计算机与通信安全会议(acmccs,acmconferenceoncomputerandcommunicationssecurity)上给出了规范的形式化定义。在代理重加密中,一个半可信代理人(proxy)通过代理授权人产生的转换密钥rk把用授权人(delegator)的公钥pa加密的密文转化为用被授权人的公钥pb加密的密文,在这个过程中,代理人得不到数据的明文信息,从而降低了数据泄露风险。而这两个密文所对应的明文是一样的,使alice和bob之间实现了数据共享。所谓的半可信,指的是只需相信这个代理者proxy一定会按方案来进行密文的转换。同态加密的目的是为了让存储在服务器上的密文数据依然能够进行计算。

但是,上述的加密方法直接用于加密大规模的数据是不现实的,因为计算量庞大,而且诸如同态加密往往会带来数据的扩展,代价大,另一方面,也没有必要将所有的数据进行上述的加密。用传统的加密方法加密这些数据也存在计算量大等等问题。避免庞大的工作量,又要保护其中重要的数据,需要采取一定的灵活方法。在本发明中考虑对重要数据进行加密,而不重要数据不做处理。在加密前,考虑到安全性和空间的节省,对数据进行压缩后再加密。



技术实现要素:

考虑到不同数据的不同需求,本发明设计了一种选择性加密方法,对定义的一个块(分段)进行先压缩再加密。加密的总体步骤如下:

1、根据需要对数据进行分块(分段),比如数据如果是以文件形式存储的,可以以文件为单位当做一块,也可以是将一个文件分成多段,也可以是一个文件夹当做一块。这里的文件也可以是hadoop中的sequencefile等文件形式,或者是xml文件中的一个特性的值。

2、根据设定的规则或者用户的选择,判定数据块(段)是否需要进行加密,以及采用什么样的方式进行加密。加密可以针对于每一块的值,比如某些文件格式中有分隔符,有长度的记录,如果需要明文形式,可以不进行加密。

3、根据选择的方法对数据块进行压缩,然后再加密,得到密文数据,并且将数据是否压缩和加密,如果加密,则相应的解压缩和解密所需要的信息和参数都要存储起来,比如采用什么方式进行压缩和加密,加密的密钥和加密和压缩的各种参数,这一块密文乃至于明文的长度存放起来。为了方便,可以将这些信息存放在表中,这些信息包含有能唯一确定这个分段的信息a(比如文件的路径,xml文件中的一个特性,块在一个文件中的起始位置,存储器中的位置等),密钥k(这个密钥可能是加密的)或者密钥的存放信息b(比如,地址或者是在某个表格中的位置),加密的算法和其他解密所需信息(比如分组长度,初始向量,加密模式等),也可以包括其他需要备注的消息。加密算法也可能是公钥加密算法等,则需要存放相应的公钥信息。

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

本方案的的有益技术效果有:解决了现有技术不适用于大数据加密的缺陷,避免了完全加密不现实的问题。对于不同的块根据不同的需要采用不同的加密方法。由于采用了压缩,可以增强安全性,并且减少数据冗余,也减少储存空间。

优选地,为了减少数据的移动,特别是在一些序列化的文件存储形式中,比如,sequencefile,本身定义了数据的长度,如果加密算法采用等长的加密,比如流密码,一次一密等,就会比较合适。这样减少了软硬件的操作和代价。如果采用可能填充的分组加密或者引入冗余度的加密方式,数据可能变长而装不下,因此优选地,我们采用等长度的加密方式。

优选地,采用相同的加密参数去加密大量的数据是不安全的,所以需要较多的密钥。考虑到数据的加密需要用到大量的密钥,大量密钥的管理复杂,为了避免这些缺陷,这里采用单向的函数去产生密钥。单向函数可以正向计算,但是反过来求逆则困难。比如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函数)的值,作为所定位的数据块的加密密钥。当然也可以把这个整体当做一个单向函数。采用单向性的函数就可以避免通过块的密钥去逆向推导初始密钥,其他块的密钥,安全性好而且方便。如果数据块需要采用公钥加密方法,则不需要用到上述产生的密钥,只需要利用公钥和私钥加密解密即可,如果是对称加密,则需要用到上面产生的块加密密钥。

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

进一步地,可以是各个用户有自己的初始密钥,这样他可以加密和解密自己负责的数据块,加密信息也存放在加密信息表中,如果采用多个初始密钥,加密信息表中应该包含初始密钥(可能是加密的)或者初始密钥的信息(比如编号,存放位置等)。

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

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

具体实施方式

实施例1为本加密方法的实施例,数据以文件和文件夹的形式储存,我们选取文件路径(包括文件名)作为确定文件的唯一信息,加密信息存放起来,为了方便可以存放在一个加密信息表中,数据包括文件路径(包括文件名),是否加密,加密算法名称或代号,如果是分组密码,信息中还包括工作模式(加密模式),初始向量,填充模式等解密必须信息。对大量数据中的几个重要文件进行加密。

步骤如下:

1、根据需要对数据进行分块(分段),以一个文件当做一块。

2、根据设定的关键词计算规则得出文件的敏感程度,达到一定阈值的判定需要加密,如果是用户选择不达阈值的文件,也可以加密,可以一种无损压缩方法进行压缩,然后采用aes128或aes256两种算法加密。如果文件不属于以上两种情形,不加密。

3、产生块密钥,选择加密块的各种参数,对文件进行加密,并且将文件是否加密,如果加密,对密钥用公钥加密,存放在加密信息表中,表中包含有唯一确定这个分段的信息(文件的完整路径,包含文件名),公钥加密的密钥,加密的算法和分组长度,初始向量,加密模式,相关编码信息等。

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

实施例2为本加密方法的优选实施例,与实施例1相类似,与实施例1的差别在于算法采用流密码算法,加密信息表中无需分组长度,初始向量,加密模式的信息。

实施例3为本加密方法实施例1的优选实施例,与实施例1要求相同,但是,在密钥的管理上,采用一个初始密钥来初始各个文件的加密密钥,选取一个hash函数sha256,用文件路径a,主密钥(初始密钥)k产生。计算hash(k,a)值,从二进制前面开始截取加密数据块所采用对称加密算法的密钥长度相应的位数128或者256bit。算法也可以替换为流密码。

理论上说,我们只需要存储好初始解密可以加密各个文件的加密密钥。可以用公钥加密后的分段加密密钥,并且将分段信息、分段是否加密、分段的加密密钥对应的数据块的信息、加密算法信息、明文数据的编码类型等等,存放在加密信息表。

实施例4为本加密方法实施例3的改进,与实施例3要求相同,进一步地,可以是各个用户有自己的初始密钥,这样他可以加密和解密自己负责的文件,加密信息也存放在加密信息表中,加密信息表中应该包含公钥加密的初始密钥,以及前述加密信息表的信息。

实施例5为本加密方法实施例3的改进,与实施例3要求相同,进一步地,如果是单个块密钥泄漏,采用新的初始密钥产生密钥去加密泄漏密钥的块,并且更新加密信息表。

实施例6为本加密方法实施例3的改进,与实施例3要求相同,进一步地,如果是单个块密钥泄漏,在单向函数计算块密钥的时候,增加一个信息更改密钥次数的信息,第一次不添加,第二次采用hash(k,a,1),第三次采用hash(k,a,2),以此类推,加密信息表中在前面的基础上包含密钥更改的信息。

实施例7为本加密方法实施例1的改进,加密算法不仅仅包括对称算法,还包括同态加密,非对称的加密方法。由于有些数据有进行委托计算的需要,而且需要保密,所以对于这一些需要用到的数值采用公钥进行同态加密。

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

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