CN106936820B - 数据变长修改方法及其在大数据加密中的应用 - Google Patents

数据变长修改方法及其在大数据加密中的应用 Download PDF

Info

Publication number
CN106936820B
CN106936820B CN201710126075.8A CN201710126075A CN106936820B CN 106936820 B CN106936820 B CN 106936820B CN 201710126075 A CN201710126075 A CN 201710126075A CN 106936820 B CN106936820 B CN 106936820B
Authority
CN
China
Prior art keywords
data
encryption
key
information
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710126075.8A
Other languages
English (en)
Other versions
CN106936820A (zh
Inventor
王勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nantong Jiatianxia Technology Co ltd
Original Assignee
Guilin University of Electronic Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guilin University of Electronic Technology filed Critical Guilin University of Electronic Technology
Priority to CN201710126075.8A priority Critical patent/CN106936820B/zh
Publication of CN106936820A publication Critical patent/CN106936820A/zh
Application granted granted Critical
Publication of CN106936820B publication Critical patent/CN106936820B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本发明属于信息处理领域,涉及数据的修改方法,特别是大数据的修改方法,及其在加密中的应用。数据修改的时候往往长度会发生改变,这会带来许多问题,比如相邻数据会发生移动,文件的结构会发生一些变化而导致存储空间上的数据被大量修改、覆盖,在一些文件格式中,文件或者文件的记录的长度已经事先被记录下来,但是往往数据会需要修改,特别是当发生某一部分数据比较敏感的时候,需要进行加密,但是许多加密会带来数据的扩张,在本发明中,将数据的变长部分写入新的位置,此外本发明还考虑到大文件的数据庞大,不适合于全部加密,采用选择性加密方法。本发明还针对大数据加密提出了几种优选方案,以方便密钥管理和减少一些加密带来的代价。

Description

数据变长修改方法及其在大数据加密中的应用
技术领域
本发明属于信息处理领域,涉及数据的修改方法,特别是大数据的修改方法,及其在加密中的应用。
背景技术
数据修改的时候往往长度会发生改变,这种改变会带来许多问题,比如相邻数据会发生移动,文件的结构会发生一些变化而导致存储空间上的数据被大量修改、覆盖,特别是大数据更会带来一系列连锁反应,有些文件格式由于定义了文件长度或者记录长度,这样就不能进行变长的修改,比如,大数据的某些文件格式,比如SequenceFile就不支持数据的修改。但是,在大数据的许多场合,由于实时性比较强,往往一开始需要很快就把明文数据记录存储下来,放在SequenceFile之类的文件中,但是,事后往往会发觉,需要进行修改以实现匿名,隐私保护或者其他安全的需要,比如需要进行加密,嵌入签名。许多加密会带来数据的扩张,比如,分组密码会需要进行填充处理,往往会变长,具有误导功能加密,同态加密,或者一些签名的嵌入,都会增加数据长度。在本发明中,将数据的变长部分写入新的位置,比如写入原文件的新记录或者新的文件中。此外针对云计算和大数据的加密方面,目前有代理重加密和同态加密,这些加密都有一定的应用场合,而且有局限性,比如同态加密效率低,冗余度大,现实中应用有较大的局限性,上述的加密方法直接用于加密大规模的数据是不现实的,因为计算量庞大,而且诸如同态加密往往会带来数据的扩展,代价大,重代理加密只适合于特定用户之间的密钥转换,现实中也没有必要将所有的数据进行上述的加密。同态加密比较适用于需要委托计算(代理计算)的数据的加密,但是代价比较高。用传统的加密方法加密这些数据也存在计算量大等等问题。而且现实中,我们还希望对于某些数据,加密后,密文可以被解密为有意义的错误密文,或者明文的关键内容被替换为其他误导意义的字、词、句子等等,以达到误导的效果,既要避免庞大的工作量,又要保护其中重要的数据,需要采取一定的灵活方法。本发明考虑对大数据进行选择性的加密的必要性,以及密钥管理的困难,设计了多种方案。
发明内容
由于变长的修改会带来许多问题,比如如果中间位置的修改不是等长的,后面的数据就全部要移动,有些文件结构中包含了长度信息的文件的结构和数据可能都需要大幅度的调整和移动,这也导致一些文件不支持已有记录的修改,特别是对于大数据而言,数据移动的代价更大。比如SequenceFile文件就不支持修改,只支持追加记录。本发明保持数据位置尽量少移动,没有修改的数据位置不移动。
方案1为初始方案:为了减少数据位置的移动和结构的变化,本发明中,将会对不需要修改的数据将存放在原位置不变,对于修改的部分,将新写入的数据存放在被修改原数据的位置,即覆盖原始数据,并且记录必要的信息,比如长度变化的信息、原数据(文件)位置和增加数据位置的对应关系、关于修改方法的一些信息(比如,这里是修改的目的是为了保密而做了加密,则必要的加密解密信息需要保存下来)等,针对修改后的长度与修改前的长度关系的三种情形进行分别处理:
(1)如果长度相同,修改后存放在在原位置,刚好覆盖原数据,并且记录等长的信息,(2)如果长度变长,则将原始数据覆盖后,将超出原始长度的数据存放在另外的位置,另外的位置可以是可以是在原(数据)文件后追加数据,比如SequenceFile文件后面追加一条记录,存放在文件的末尾,也可以存放在新的文件中,可以每次(每段)修改对应存放一个文件,也可以集中存放一个文件中,比如, 可以将信息存放在表中,(3)如果长度比原数据短,则进行覆盖修改后记录长度变化信息,取修改以后的长度或者原数据与修改后数据的长度之差。对于原数据超出部分的数据,如果没有安全需要,可以不改变,如果有保密需要,可以采用随机数据覆盖还没有被修改的那一段原始数据。
为了方便,增加的数据(如果没有增加,比如减少或者长度不变,可以当作为空),以及(前面记录的)长度变化的信息、原文件和增加数据的对应关系、关于修改方法的一些信息(比如,这里是修改的目的是为了保密而做了加密,则必要的加密解密信息需要保存下来)等必须的信息,应该储存在文件中,为了方便,可以存放在1个或者多个表中。比如,可以将上述所有的信息存放在一个表中,也可以采用两个表,将增加的数据和原文对应关系存放在一个表中,将长度变化的信息、原数据(文件)和增加数据的对应关系、关于修改方法的一些信息存放在另一个表中。
方案2:在方案1的基础上,可以先对数据进行压缩再进行修改,比如先压缩再加密。这样可以减少数据冗余,减少需要占用的额外的存储空间。可以在一定程度上减少处理后的数据长度超过原来的长度的情形。
方案3:由于在许多情况下,需要将部分数据进行加密,本方案3利用方案1或者2的方法对数据进行加密,由于加密可以看成是对明文的修改,对于大数据,不适合全部进行加密,所以这里采用选择性加密,大数据的不同部分的安全需求不一样,可能会采用不同的加密方法,其中某些方法可能会带来数据长度的改变,特别是可能会增加数据量,因此可以对文件进行读取,对其数据或者内容进行分段,如果数据是包含许多文件,可以以文件为单位进行分段,如果数据都存放在一个文件中,也可以对文件的不同部分进行分段,如果分段无需保密的不加密,如果分段需要加密的根据其需要采用不同的加密方法,最后保存为密文。加密的总体步骤如下:
1、读取数据(文件),针对数据格式(文件格式)需要,获得相应内容,比如对于文本文件,可以是直接对数据进行加密,对于SequenceFile文件,分别获得<key,value>,根据需要对数据或者内容进行分块(分段),比如分块可以是一个文件为一段,或者Hadoop中的SequenceFile等文件(流式文件)中包含的一个文件(有时候称为记录record),或者是xml文件中的一个特性的值,表格中的一个数据项、一行、一列等,TextFile文件格式可以根据分隔符和行结束符分段。
2、根据需要选择是否对数据块进行加密,以及何种加密方式,这个判定可以是机器的,也可以是人工的,比如根据设定的规则进行机器判断或者用户的人工选择,判定大文件的每一个数据块(段)是否需要进行加密,以及采用什么样的方式进行加密。
3、选择已有密钥或者产生密钥,根据选择的方法对各个数据块中需要加密的内容进行加密,加密可以针对于每一块的值,比如某些文件格式中有分隔符,有长度的记录,如果需要明文形式,可以不进行加密。
4、将每一个数据块加密得到的密文,如果需要,进行必要的适应性的编码转换,比如通过一般加密得到的是字节数组,一般情况下需要转换为字符数组而产生实际写入的密文段(解密的时候需要进行相反的转换),并且用对应的密文对原明文段(数据块)进行覆盖,由于存在长度变化,所以采用方案1或者2的方法进行修改,将超出长度的数据存储好。将长度变化的信息、原文件和增加数据的对应关系、关于修改方法的一些信息也存放起来。在方案1中的关于修改方法的一些信息在本方案中应该包括每个数据块是否加密(如果可以根据确定的规则判定数据块是否加密的,这一信息可以忽略),如果加密,则相应的解密所需要的信息和参数都要存储起来,比如原始数据块的位置信息(比如起始和结束位置或者起始位置和长度),对应密文块的位置信息,采用什么方式进行加密,加密的密钥(或获得密钥需要的信息)和各种参数。
解密是一个相反的过程,对于每一块数据,首先判断其是否加密,如果已经加密,则需要解密,获取其密钥等信息。对数据块进行解密。
本方案的的有益技术效果有:减少了对不需要加密文件读写,解决了现有技术不适用于大文件加密的缺陷,避免了完全加密不现实的问题。对于不同的块根据不同的需要采用不同的加密方法。
方案4:在前面方案3的基础上,考虑到同态加密一般只对数值有意义,在表中,可能某一列都是需要进行同态加密的数据,很容易进行区分,xml文件中的数据一般也容易区分,但是在文本文件中,需要进行同态加密的数值可能夹杂在文本(文字)或者其他的数据中,在前面分段的基础上可以进一步将数值与文本等数据进行分开加密,数值加密的时候往往需要采用同态加密,这样需要将同态加密后的数值进行委托计算的时候可以很容易找到数据,而且大量的数据可以不进行复杂,而且冗余度高的同态加密计算。分段后依然要保证对原来文件格式的适应性,保证解密的可逆性,比如如果对于SequenceFile文件,可以将每一个记录中的每一段需要委托计算的数据(一般是整数数值)和其他不需要进行委托计算(代理计算)的数据进行分割,成为不同的块进行加密,同时,加密后的密文依然连接起来,成为一个记录,并且依然根据流式文件的格式进行存储,在存储加密信息的时候,为了实现这类需要进行代理计算的数据密文和一般文本的密文的区分,每一个块的位置信息(比如起始位置和长度或起始位置和结束位置)和加密方式被记录下来,便于解密。也可以采用设置起始标记和结束标记的方法来分割这些块,这些起始和结束标记是密文中不会出现的符号,在密文前后增加起始标记和结束标记。
本方案的有益效果是充分利用同态加密对需要加密的数据进行加密,便于后期调用计算,同时也较少同态加密的代价。
方案5:在方案3或者4的基础上,考虑诸如同态加密,包括全同态加密,并不能满足所有云计算背景下的委托计算的需要,有些计算依然不能被全同态加密后处理,所以,它不能解决所有问题,也没有必要花如此大的代价全部采用同态加密。考虑到同态加密有时候既有需要,但是又代价比较高,对于一般的数据如果用代价太大的同态加密就显得大材小用,吃力不讨好,除了全同态加密,比全同态加密代价小的加法同态和乘法同态也有其适用范围,如果能够用加法同态加密的数据采用全同态加密同样显得吃力不讨好。优选地,在加密的时候进行加密方法的选择,根据数据需要进行计算的所有函数来判断涉及到的数据是否需要用到同态加密(只有一个函数需要用到同态加密,而其他函数都不需要同态,也视为需要用到同态加密,即满足所有可能函数的需要,下同),需要采用什么样的同态加密,当其他一般的加密和非全同态加密都不可行,必须用同态加密的时候,采用全同态加密,当全同态加密和非全同态加密的时候,采用非全同态(半同态)加密方法,当普通加密可行的时候,优先选择普通的加密方法,即当多种方法都可以达到目的的时候,优先选用次序为,一般加密、半同态加密、全同态加密。本方案的有益效果是充分发挥加密的最大优势,避免劣势,在保证安全需要的同时也较少代价。
方案6:在前面方案3、4或者5的基础上,优选地,在加密中,非对称的加密,包括同态加密,还有重代理加密总是少数,因为他们的代价比较高,因此更多会采用对称的加密,对称加密中采用相同的加密参数去加密大量的数据是不安全的,所以需要较多的密钥。考虑到大文件的大量数据的对称加密需要用到大量的密钥,大量密钥的管理复杂,为了避免这些缺陷,这里采用单向的函数去产生密钥。单向函数可以正向计算,但是反过来求逆则困难。比如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函数)的值,作为所定位的数据块的加密密钥。当然也可以把这个整体当做一个单向函数。采用单向性的函数就可以避免通过块的密钥去逆向推导初始密码,其他块的密钥,安全性好而且方便。如果数据块需要采用公钥加密方法,则不需要用到上述产生的密钥,只需要利用公钥和私钥加密解密即可,如果是对称加密,则需要用到上面产生的块加密密钥。在有些加密中,比如一些误导功能的加密,有时候还需要两层的加密,需要较长的密钥,可以用产生的数据去产生一个伪随机序列,比如可以采用单向函数产生(可能需要截取)一个流密码的密钥,通过这个密钥以流密码算法产生密钥流,在密钥流中截取需要的误导加密的各层密钥。产生密钥后,根据方案3,4,5的方法进行加密。
理论上说,我们只需要存储好初始密码,并且记录每一块对应的初始密码就行了,不过有时候为了方便可选地也可以加密各个分段的加密密钥。可以采用多重加密,优选地可以用公钥加密分段加密密钥,并且将公钥加密后的分段加密密钥、分段信息、分段是否加密、分段的加密密钥对应的数据块的信息、解密分段所需的信息、明文数据的编码类型等等,存放在一起,比如用表格存储起来,我们称为加密信息表。本方案的有益效果是简化密钥的管理的同时依然保证安全性。
方案7:在前面方案6的基础上,进一步地,可以是各个用户有自己的初始密钥或者口令,这里也可以统一称为密码Ki,这样他可以加密和解密自己负责的数据块,加密信息也存放在加密信息表中,如果采用多个初始密码,加密信息表中应该包含初始的密码Ki(可能是加密的Ki)或者Ki的信息(比如编号,存放位置等)。如果是单个块密钥泄漏,采用新的初始密码产生密钥去加密泄漏密钥的块,并且更新加密信息表。本方案的有益效果是针对多用户和密钥泄漏问题,采用多个密码简化了密钥的更新代价。
方案8:在前面方案6或者7的基础上添加更新密钥功能,有时候密码可能存在泄漏,丢失的情形,如果是Ki丢失,需要更换所有的由它产生的数据块的块密钥,重新解密,再用新的密钥加密,如果是单个块密钥泄漏,一般情况下,根据密钥的产生规则也需要更换那个初始的密码Ki,由于采用多个初始密码,加密信息表中应该包含初始密码(可能是加密的)或者初始密码的信息。因此,优选地,我们提出两种方案:A)采用新的密码产生密钥去加密泄漏密钥的块,并且更新加密信息表;B)计算块密钥的时候,增加一个信息更改密钥次数的信息,简单地可以是Null(空),1,2这样的形式,或者f(0),f(1),f(2),只要能够唯一确定修改次数的信息就行,用单向的函数M(F(K,A,f(N)))产生块密钥,在密钥信息表中也必须同样对应更改密钥次数的信息,或者由于更改密钥的数据块总是少数,可以对有更改密钥的数据块的更改次数和对应的数据块信息在其他地方存储起来。
数据解密时候先判定数据是否加密,根据加密信息表的信息解密。也可以根据密码生成分段的块加密密钥用于解密。本方案的有益效果是在密钥泄漏的情况下可以进行自动的同步更新,而且安全性可以保障。
方案9:在前面方案6或者7的基础上,考虑在大数据的一些流式文件中,实际上一个文件包含许多记录,实际上相当于一个独立文件,这里还是称为数据块。在许多时候,不同的用户对大数据文件中的某一部分包含的数据块(比如记录)有不同的加密解密权限,比如一个高级别用户可以解密所有的加密数据块,而低一级的用户则只能解密一部分数据块,这些用户都有自己独自负责的一部分文件可以解密,他们管理的文件范围如同一棵树,最高级别用户可以看成是树根,负责所有文件,级别越低,负责的文件越少。举一个例子,一个科的人每一个人都管理自己的文件,一个科长可以查阅该科所有人的文件,处长可以查阅所有下辖科的文件,以此类推,这种情况现实中经常存在。
目前大数据越来越大,而许多大数据是存放在一个大的流式文件中。这种大文件的记录可能属于不同的用户,有不同的权限,需要用不同的密钥加密。在数据量大的时候,密钥量是比较大的,而且管理起来非常复杂。目前有许多密钥管理方案,如果只是对密钥进行加密存储,则密钥量比较大,管理起来复杂,而且对于这类提到的如同一棵树一样的加密密钥的管理权限不能很好控制。为了能够存储较少的密钥,而且对不同级别的用户赋予不同的权限,我们依然可以利用单向函数来产生密钥。
大数据中的不同记录往往属于不同的用户,需要用不同的密钥加密,有不同的安全级别,有不同的访问控制权限。本发明利用单向函数的单向性质设计了一种可以满足需要的密钥生成管理方法,并且应用于大文件的加密保护。
当有多级用户的时候,由最高级用户的初始密码Kr结合次高级用户的某一唯一信息Bi(可以是公开的,也可以是只有最高级用户知道的,比如用户名称、姓名、代号、编号等,但是这个信息应该是唯一,不重名的)产生次高级用户的初始密码,计算方法为M(F(Kr,Bi)),M()为单向函数,截取合适长度的数据作为次高级用户的初始的密码;进一步由次高级用户初始的密码以相同的方式产生再低一级用户的初始的密码,产生密码的单向函数为M(F(Kr,B),B为下一级用户的编号,Kr为上一级用户的初始密码;直到产生最低级用户的初始的密码,然后由最低级用户的初始的密码产生数据块的加密密钥。
因此在文件很大,其中的数据块(比如记录)的权限也往往复杂,可能是属于上面提到的多级用户的树形的权限,则可以采用如下的加密方法:
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、将每一个数据块加密的密文根据相应的方法连接为一个密文文件,采用相应的格式保存,比如,如果是流式文件,根据流式文件的格式进行存储,对文件结构中的长度信息进行相应的调整。
本方案的优势在于减少需要存储的密码或密钥,而且可以控制多级的权限。
方案10:在前面方案9基础上增加密钥(密码)更新功能,有时候密钥(密码)可能存在泄漏,丢失的情形,如果是各级的初始的密码丢失,由于密钥(密码)的产生规则,需要更换所有的初始的密码和由它们产生的块密钥,重新解密,再根据规则重新产生密钥(用户密码)用新的块密钥加密,如果是单个块密钥泄漏,一般情况下,也需要更换初始的密码,由于采用多个初始密码,加密信息表中应该包含初始密码(可能是加密的)或者初始密码的信息。这会带来较大的代价,因此,优选地,我们提出在加密信息中,增加一个信息更改密钥次数的信息,简单地可以是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和对应的数据块信息在其他地方存储起来,f(N)初值为空,当初值为空的时候函数简化为M(F(Kr,B)),。表面上看,函数形式和前面的不一样,增加了N相关的内容,当我们限定f(N)初值为空,当初值为空的时候函数简化为M(F(Kr,B)),可以当做是原单向函数的进一步限定。
如果某一级用户A的初始密码泄漏,从用户A的上一级用户的初始密码产生用户A的新密码(密钥),注意其中N在原来的基础上加1,即M(F(Kr,B,f(N+1))),这样可以保证密钥是新的,而且由于单向性,互相之间不能相互推导,不会泄密。
本方案的有益效果是在密钥丢失的时候可以直接更换新的密钥,重新加密数据块。一旦泄密,无需大面积更换密钥(密码)。注意由于现有的一些系统并没有提供关于流式文件的修改,所以需要开发相关支持软件。
具体实施方式
下面给出本发明的部分实施例,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例1:在本实施例中,将会对不需要修改的数据将存放在原位置不变,对于修改的部分,将新写入的数据存放在被修改原数据的位置,即覆盖原始数据,并且记录必要的信息,比如长度变化的信息、原文件位置和增加数据位置的对应关系、关于修改方法的一些信息等,存在三种情形:(1)如果长度相同,修改后存放在在原位置,刚好覆盖原数据,并且记录等长的信息,(2)如果长度变长,则将原始数据覆盖后,将超出原始长度的数据存放在另外的位置,将信息存放在表中,(3)如果长度比原数据短,则写入后记录长度,可以是修改以后的长度,也可以是原数据与修改后数据的长度之差。对于原数据超出部分的数据,如果没有安全需要,可以不改变,如果有保密需要,可以采用随机数据覆盖还没有被修改后数据覆盖的原始数据。
以上三种情形整体地看,增加的数据(如果没有增加,比如减少或者长度不变,可以当作为空),以及长度变化的信息、原文件和增加数据的对应关系、关于修改方法的一些信息等必须的信息存放在1个表中。
当然也可以按照方案中的说法将信息分开存放在两个表中。为了方便,不一一举例,下同。
实施例2:在实施例1的基础上,可以先对数据进行高效的压缩再进行修改。
实施例3为本加密方法的实施例,我们选取SequenceFile文件为例,加密步骤如下:
1、读取文件,即可分析每一个记录及其长度,以它的一个记录为数据块。以记录的起始位置和结束位置作为数据块的定位信息。
2、根据设定的关键词计算规则得出记录的敏感程度,达到一定阈值的记录判定需要加密,同时可以根据规则确定到底是对称加密,还是公钥加密(包括一些同态加密和代理重加密),如果是用户根据需要对不达阈值的记录要选择加密,则也加密该块。如果文件不属于以上两种情形,不加密。
3、对于需要进行公钥加密的数据,选择已有密钥,根据选择的加密方法对各个数据块中需要加密的内容进行加密,加密可以针对于每一块的值,对于需要对称加密的,产生密钥,进行对称加密。
4、将每一个数据块加密得到的密文,进行编码转换,将加密得到的是字节数组,转换为字符数组而产生实际写入的密文段(解密的时候需要进行相反的转换),并且用对应的密文对原明文段(数据块)进行覆盖,由于存在长度变化,所以采用实施例1或者2的方法进行修改,将超出长度的数据存储好。将长度变化的信息、原文件和增加数据的对应关系、关于修改方法的一些信息也存放起来。关于修改方法的一些信息在本实施例中包含有能唯一确定这个分段位置的信息A(比如xml文件中的一个特性,数据块在一个文件中的起始位置和结束位置,存储器中的位置等),获得对应的块密钥需要的信息,比如密钥K(这个密钥可能是加密的)或者密钥的存放信息B(比如,地址或者是在某个表格中的位置),加密的算法和其他解密所需信息(比如分组长度,初始向量,加密模式等),也可以包括其他需要备注的消息。加密算法也可能是公钥加密算法等,则需要存放相应的公钥信息。在判断是对称加密还是非对称加密的时候,以最后的加密算法为准,比如,如果原数据采用对称加密,后面对对称的密钥采用了非对称的加密,则当做非对称的加密。
解密是一个相反的过程,对于每一块数据,首先判断其是否加密,如果已经加密,则需要解密,获取其密钥等信息。对数据块进行解密。
实施例4为本加密方法的实施例3的进一步改进,在实施例3的基础上,考虑到文件中,文本和数值往往混合在一起,当数值和文本混合在一起的时候,将文本和数值隔离,各自采用适合的加密方法,比如对于最初的分段,考虑不同加密需要,进行进一步分段,对数值和文本采用不同加密方法,对数值进行同态加密,其他数据采用一般的对称加密,所以对它们也分段以隔离。对于流式文件,可以不用增加记录数,某个记录中包含有需要进行同态加密的数据的时候,在这些数据的前后进行分段,数值采用同态加密,其他采用一般的加密,将一个记录中的多个分段的密文放在一起,但是记录最开始一段的起始位置和每一段的长度,将这些密文放在一起,按照流式文件的格式存储起来,另外在加密信息表中记录同态加密后数值对应的指标,符号、代号或者参数。这样便于委托计算的时候调取。
实施例5为本加密方法的实施例3的进一步改进,在实施例3的基础上,将需要同态加密的数值可能涉及到的计算函数进行分析,来判断涉及到的数据是否需要用到同态加密,需要采用什么样的同态加密,当进行某些委托计算时候,其他一般的加密和非全同态加密都不可直接计算,需要用到全同态加密的时候,采用全同态加密,当全同态加密和非全同态都可行加密的时候,采用非全同态(半同态)加密方法,当普通加密可行的时候,优先选择普通的加密方法,即当多种方法都可以达到目的的时候,优先选用次序为,一般加密、半同态加密、全同态加密。
即一般加密可行就优先用一般加密,一般加密不可行,半同态加密可行即用半同态加密,否则用全同态加密。
实施例6:实施例6为本加密方法的实施例3的进一步改进,在实施例3的基础上,用大文件的数据块的起始和结束位置信息和密码K的单向函数产生块密钥。单个分段的加密密钥由唯一确定这个分段(数据块)的位置信息A和K的哈希函数HASH(K‖A)产生。加密算法中还包含一种具有误导功能的加密,它采用一个内层加密和外层加密,需要较长密钥,我们用hash产生的值,作为流密码的密钥,产生一个密钥流,截取最前面128bit作为外层加密的密钥,后面的部分依次截取8bit作为内层加密的每一个关键词的加密用密钥。产生密钥后,根据可以根据实施例3,4,5的方法进行加密。为了方便加密各个分段的加密密钥。用公钥加密分段加密密钥,并且将公钥加密后的分段加密密钥、分段信息、分段是否加密、分段的加密密钥对应的数据块的信息、解密分段所需的信息、明文数据的编码类型等等,存放在一起,比如用表格存储起来。
实施例7:在实施例6的基础上,大文件的不同的块属于不同的用户,各个用户有自己密码Ki,这样他可以加密和解密自己负责的数据块,加密信息也存放在加密信息表中,如果采用多个初始密码,加密信息表中除了包含实施例6中的信息,还应该包含初始的加密的Ki
实施例8:在实施例6、7的基础上,计算块密钥的时候,增加一个信息更改密钥次数的信息,第一次、遗失密钥后第二次、再次遗失密钥后第三次的时候,分别添加一个f(N)分别是Null(空),1,2这样的信息,用单向的函数HASH(K‖A‖f(N))产生块密钥,最初产生块密钥为HASH(K‖A),第一次更新密钥为HASH(K‖A‖1),以此类推,在密钥信息表中前面的基础上,也添加对应更改密钥次数的信息。
实施例9:在实施例7的基础上,考虑大数据中的不同记录往往属于不同的用户,需要用不同的密钥加密,有不同的安全级别,有不同的访问控制权限。
当有前面提到的树型的多级用户的权限时候,由最高级用户的初始密码Kr结合次高级用户的某一唯一编号Bi产生次高级用户的初始密码,计算方法为HASH(Kr‖Bi)),截取合适长度的数据作为次高级用户的初始的密码;进一步由次高级用户初始的密码以相同的方式产生再低一级用户的初始的密码;直到产生最低级用户的初始的密码,然后由最低级用户的初始的密码产生数据块的加密密钥。完整步骤如下:
1、确定好各级用户的权限,根据上述的方法,首先最高级用户产生一个初始密码K1,然后根据利用方法hash函数SHA256(K1‖B),‖表示简单的合并连接,逐级地产生多级用户的初始密码。如果数据块是对称加密,用最低级用户的初始密码去产生他所管理的数据块的块加密密钥,产生块加密密钥的方式和实施例7相同。
实施例10:在前面实施例9基础上增加密钥(密码)更新功能,在计算的时候增加一个信息更改密钥次数的信息,如次高级用户密钥为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),以此类推。
篇幅所限,不能一一举例,实施例也相对简化,以上实施例的限定条件和一些方法可以交叉组合,以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据变长修改方法,其特征为采用如下步骤:
1)首先针对修改后的长度与修改前的长度关系的三种情形进行分别处理:(1)如果长度相同,修改后存放在原位置,刚好覆盖原数据,并且记录等长的信息,(2)如果长度变长,则将原始数据覆盖后,将超出原始长度的数据存放在另外的位置,(3)如果长度比原数据短,则进行覆盖修改后记录长度变化信息,取修改以后的长度或者原数据与修改后数据的长度之差,
2)将增加的数据,以及长度变化的信息、原数据和增加数据的对应关系、关于修改方法的信息,储存在文件中。
2.如权利要求1所述的数据变长修改方法,其特征为:在进行修改前,先对需要修改的数据进行压缩。
3.如权利要求1所述的数据变长修改方法,应用于数据选择性加密,其特征为加密的总体步骤如下:
1)、读取数据,针对数据格式需要,获得相应内容,根据需要对数据或者内容进行分块,
2)、根据需要选择是否对数据块进行加密,以及何种加密方式,
3)、选择已有密钥或者产生密钥,根据选择的方法对各个数据块中需要加密的内容进行加密,
4)、将每一个数据块加密得到的密文,对原明文段进行覆盖,加密视为修改,采用权利要求1的方法进行修改,将长度变化的信息、原文件块和增加数据的对应关系、关于修改方法的一些信息也存放起来,关于修改方法的一些信息包括每个数据块是否加密,如果加密,则相应的解密所需要的信息和参数都要存储起来。
4.如权利要求3所述的数据变长修改方法,应用于数据选择性加密,其特征为在前面分段的基础上进一步将需要进行委托计算的数据与不需要进行委托计算的数据进行继续分块,分块后依然要维持相应的格式,需要进行委托计算的数据加密的时候采用同态加密,其他数据采用非同态加密,并且记录分块的位置信息。
5.如权利要求3所述的数据变长修改方法,应用于数据选择性加密,其特征为在加密算法的选择上,根据数据需要进行计算的所有函数来判断需要的加密方法,在可以满足所有函数计算需要的前提下,优先选用一般加密,其次采用半同态加密,最后选取全同态加密。
6.如权利要求4所述的数据变长修改方法,应用于数据选择性加密,其特征为对称密码算法加密的密钥由单向函数生成,单个分块的对称加密密钥由唯一确定这个分块的位置信息A和初始密码K的单向函数M(F(K,A))产生,F为一个函数,M为单向函数,一些误导功能的加密,有时候还需要两层的加密,需要较长的密钥,则利用该函数M产生一个流密码的密钥,通过这个密钥产生密钥流,在密钥流中截取需要的误导加密的各层密钥。
7.如权利要求6所述的数据变长修改方法,应用于数据选择性加密,其特征为:存在多个用户对应多个初始密码Ki,不同用户加密和解密自己负责的数据块,加密信息也存放在加密信息表中,加密信息表中包含初始的密码Ki或者Ki的信息;当单个块密钥泄漏时,采用新的初始密码产生密钥去加密泄漏密钥的块,并且更新加密信息表中的密码信息。
8.如权利要求6所述的数据变长修改方法,应用于数据选择性加密,其特征为:计算块密钥的时候,增加一个更改密钥次数的信息f(N),N为更改次数,用单向的函数M(F(K,A,f(N)))产生块密钥,f(N)初值为空,M(F(K,A,f(N)))在初值为空的情况下,函数形式简化为M(F(K,A)),在密钥信息表中也必须同样对应更改密钥次数的信息。
9.如权利要求6所述的数据变长修改方法,应用于数据选择性加密,其特征为:当有多级用户的时候,确定好各级用户的权限,首先最高级用户产生一个初始密码K1,由高级用户产生下一级用户的密码,产生下一级用户的初始密码Kr+1的单向函数为M(F(Kr,B),B为下一级用户的编号,Kr为上一级用户的初始密码,以此类推逐级地产生多级用户的初始密码,直至产生最低级用户的密码,然后利用这些最低级用户的密码产生该用户具有加解密权限的数据块的对称加密的块加密密钥。
10.如权利要求9所述的数据变长修改方法,应用于数据选择性加密,其特征为:计算用户密码和块密钥的时候,增加一个更改密钥次数的信息f(N),用单向的函数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。
CN201710126075.8A 2017-03-06 2017-03-06 数据变长修改方法及其在大数据加密中的应用 Active CN106936820B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710126075.8A CN106936820B (zh) 2017-03-06 2017-03-06 数据变长修改方法及其在大数据加密中的应用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710126075.8A CN106936820B (zh) 2017-03-06 2017-03-06 数据变长修改方法及其在大数据加密中的应用

Publications (2)

Publication Number Publication Date
CN106936820A CN106936820A (zh) 2017-07-07
CN106936820B true CN106936820B (zh) 2020-12-25

Family

ID=59424407

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710126075.8A Active CN106936820B (zh) 2017-03-06 2017-03-06 数据变长修改方法及其在大数据加密中的应用

Country Status (1)

Country Link
CN (1) CN106936820B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107330337B (zh) * 2017-07-19 2022-05-24 腾讯科技(深圳)有限公司 混合云的数据存储方法、装置、相关设备及云系统
CN107886010A (zh) * 2017-12-21 2018-04-06 中国电力科学研究院有限公司 大数据环境下保护用户隐私的数据管理方法
CN108234111B (zh) * 2017-12-29 2021-03-23 Tcl华星光电技术有限公司 数据处理方法
CN108989345A (zh) * 2018-08-29 2018-12-11 沈文策 一种数据加密的方法和装置
CN111400302B (zh) * 2019-11-28 2023-09-19 杭州海康威视系统技术有限公司 连续存储数据的修改方法、装置和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101510175A (zh) * 2009-04-02 2009-08-19 北京中星微电子有限公司 目标数据更新至存储器中的方法及其装置
WO2012047199A1 (en) * 2010-10-05 2012-04-12 Hewlett-Packard Development Company, L.P. Modifying a length of an element to form an encryption key
CN103124959A (zh) * 2010-05-19 2013-05-29 凯姆莱西·甘地 数据对象的组合
CN103780622A (zh) * 2014-01-24 2014-05-07 华中科技大学 一种面向云存储的数据分类加密方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101510175A (zh) * 2009-04-02 2009-08-19 北京中星微电子有限公司 目标数据更新至存储器中的方法及其装置
CN103124959A (zh) * 2010-05-19 2013-05-29 凯姆莱西·甘地 数据对象的组合
WO2012047199A1 (en) * 2010-10-05 2012-04-12 Hewlett-Packard Development Company, L.P. Modifying a length of an element to form an encryption key
CN103780622A (zh) * 2014-01-24 2014-05-07 华中科技大学 一种面向云存储的数据分类加密方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于云存储的重复数据删除文件系统设计与实现;石俊杰;《中国优秀硕士论文全文库 信息科技辑》;20140615;第I137-127页 *

Also Published As

Publication number Publication date
CN106936820A (zh) 2017-07-07

Similar Documents

Publication Publication Date Title
CN108667595B (zh) 一种大数据文件的压缩加密方法
CN107135062B (zh) 一种改进的大文件的加密方法
CN106685980B (zh) 一种大文件的加密方法
CN106936820B (zh) 数据变长修改方法及其在大数据加密中的应用
CN107070649B (zh) 一种减少写入的大文件选择性加密方法
Chen et al. Batched multi-hop multi-key FHE from ring-LWE with compact ciphertext extension
CN107317666B (zh) 一种支持浮点运算的并行全同态加解密方法
CN101340279B (zh) 数据加密及解密方法、系统及设备
CN103875001B (zh) 用于保护密码散列函数的执行的方法和系统
US8085933B2 (en) Cipher for disk encryption
CN103345609B (zh) 一种文本加解密方法和加解密设备
US9602273B2 (en) Implementing key scheduling for white-box DES implementation
JPH07281596A (ja) 暗号化方法およびシステム
Alsaidi et al. Compression multi-level crypto stego security of texts utilizing colored email forwarding
CN106888080A (zh) 保护白盒feistel网络实施方案以防错误攻击
CN105959098A (zh) 基于多分割Feistel网络的保留格式加密算法
CN108197484B (zh) 一种分布式存储环境下实现节点数据安全的方法
CN113221155B (zh) 一种多层级与多等级加密的云储存系统
CN105100083A (zh) 一种隐私保护且支持用户撤销的基于属性加密方法和系统
CN101582760A (zh) 一种基于树结构的密钥加密存储方法
CN111010266B (zh) 消息的加解密、读写方法、装置、计算机设备和存储介质
CN105184115A (zh) 用于将隐式完整性或可信性检查包括到白箱实现中的方法
CN110768797A (zh) 一种基于身份格式保留加密的数据脱敏方法
EP2960891B1 (en) Method for introducing dependence of white-box implementationon a set of strings
CN104794243B (zh) 基于文件名的第三方密文检索方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20221117

Address after: Room 508, No. 42, Guangzhou Road, Zhongxing Street, Nantong Development Zone, Jiangsu Province

Patentee after: Nantong Jiatianxia Technology Co.,Ltd.

Address before: 541004 No. 1, Jinji Road, Guilin City, Guangxi Zhuang Autonomous Region

Patentee before: GUILIN University OF ELECTRONIC TECHNOLOGY

TR01 Transfer of patent right