基于密钥池的云存储加解密方法转让专利

申请号 : CN201210003604.2

文献号 : CN102546181B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王凯东于菊珍林燕

申请人 : 西安电子科技大学

摘要 :

本发明公开了一种基于密钥池的云存储加解密方法,使用对称加解密与非对称加解密相结合,分别加密文件和加密密钥;随机生成一个多密钥的密钥池,每把密钥用非对称加解密算法进行加密,构成密文密钥池,密文密钥池存储在该用户所在的云端分布式云存储服务器中;加密文件时,在源端把文件切分成若干块;从密文密钥池中按密钥抽取算法取出一把密钥KEYTWOi,用用户的私钥KEY私钥和非对称加解密算法解密后,得到密钥KEYONEi;使用对称加密算法加密该文件块。对文件块进行高安全级别的加密解密,保证文件的安全性和隐私性,提升个人云存储平台的可信赖性。在云存储平台中存储的是该用户的密文密钥池和若干密文文件块。

权利要求 :

1.一种基于密钥池的云存储加解密方法,其特征在于,使用对称加解密与非对称加解密相结合,分别加密文件和加密密钥;随机生成一个多密钥的密钥池,每把密钥用非对称加解密算法进行加密,构成密文密钥池,密文密钥池存储在用户所在的云端分布式云存储服务器中;加密文件时,在源端把文件切分成若干块;从密文密钥池中按密钥抽取算法取出一把密钥KEYTWOi,1≤i≤N,N为该用户密钥总数;用用户的私钥KEY私钥和非对称加解密算法解密后,得到密钥KEYONEi;使用对称加密算法加密该文件块;解密文件时,按密钥抽取算法,找到加密文件块的相应密钥KEYTWOi,使用非对称加解密算法解密后,得到密钥KEYONEi;使用对称加密算法解密该密文文件块;再把解密后每个文件块合并成原来的文件,所述的构成密文密钥池方法,按照变换规则,生成多把密钥,形成一个密钥池,用非对称加密算法的公钥KEY公钥对每把密钥进行加密,构成密文密钥池,存储在云端分布式云存储服务器,所述密钥抽取算法包括线性抽取方式和非线性抽取方式,所述文件在用户端被切片成固定大小的M块文件块;对每一文件块分别用不同密钥加密;在密文密钥池中按密钥抽取算法抽取一把密文密钥KEYTWOi,用非对称加解密算法的私钥解密生成密钥KEYONEi,再用密钥KEYONEi作为对称加密算法的密钥对该文件块进行加密,分布存储到密文云存储平台中,用户可根据需要更新该用户密文密钥池,更新方法包括以下步骤:(1)用户在终端随机生成新的公私钥对NEWKEY私钥、NEWKEY公钥;(2)从云存储服务器获取该用户密文密钥池中所有的密钥KEYTWOi,1≤i≤N,取i等于1;(3)用老的私钥KEY私钥和非对称加密算法对密文密钥KEYTWOi进行解密,生成明文密钥KEYONEi;(4)用新的公钥NEWKEY公钥和非对称加密算法对明文密钥KEYONEi进行加密,生成新的密文密钥KEYTWOi;(5)i自加1,跳到(3)步骤,直到循环N次,把所有密文密钥更新,跳到(6)步骤;(6)把更新后的密钥池和新生成的公钥NEWKEY公钥更新到云存储服务器,用户根据需要添加该用户密文密钥池中密钥的数量,添加方法包括以下步骤:(1)用户在终端按照密钥随机生成算法,按需要生成一把或多把新密钥NEWKEYONEi,1≤i≤L,L为大于等于1的整数;

(2)从云存储平台中获取该用户密文密钥池里的公钥KEY公钥;

(3)采用非对称加密算法用KEY公钥加密所有新生成的NEWKEYONEi,1≤i≤L,并添加到云存储服务器的密文密钥池中;

(4)原密文密钥池的密钥总数为N,添加L把密钥之后,总的密钥数变成N+L。

说明书 :

基于密钥池的云存储加解密方法

技术领域

[0001] 本发明属于安全技术领域,涉及密文云存储的文件加密方法,可用于互联网分布式云存储。

背景技术

[0002] 随着社会信息化的快速发展带来的数据海量剧增,基于互联网分布式云存储应用越来越广泛。大容量文件传输和存储服务正在各行各业承担起越来越重要的角色。分布式云存储平台是将文件存储在网络云中,文件的安全性和隐私性将是整个云存储平台安全的重点,因此对文件加密存储成为解决安全问题的首选。而现今普遍采用的加密方式或多或少存在着安全系数的问题。如何实现一种高安全级别的加密方法一直以来都是云存储平台对文件安全存储的一个重要的课题。
[0003] 当前,基于如DES、AES等的对称加密算法因其加密、解密速度较快而被普遍应用在文件传输和存储中。然而,由于对称加解密算法的加密和解密都采用同一把密钥,容易带来密钥泄露,安全性得不到保障。以ECC、RSA算法为代表的非对称加密算法在安全性上具有更高的强度,公私钥对更富灵活性。不过,非对称加解密算法普遍存在的问题就是运算量大,因而它并不适用于大文件的加解密。

发明内容

[0004] 本发明的目的在于克服上述已有技术的不足,提出一种基于密钥池的云存储加解密方法,将密钥池引入文件加密中,使用多把密钥对文件进行对称加密和对密钥进行非对称加密,结合非对称和对称加解密算法以保证文件和密钥的安全,提高云存储平台的安全性。
[0005] 本申请发明的实现步骤如下:
[0006] 一种基于密钥池的云存储加解密方法,使用对称加解密与非对称加解密相结合,分别加密文件和加密密钥;随机生成一个多密钥的密钥池,每把密钥用非对称加解密算法进行加密,构成密文密钥池,密文密钥池存储在该用户所在的云端分布式云存储服务器中;加密文件时,在源端把文件切分成若干块;从密文密钥池中按密钥抽取算法取出一把密钥KEYTWOi,1≤i ≤N,N为该用户密钥总数;用用户的私钥KEY私钥和非对称加解密算法解密后,得到密钥KEYONEi;使用对称加密算法加密该文件块;解密文件时,按密钥抽取算法,找到加密文件块的相应密钥KEYTWOi,使用非对称加解密算法解密后,得到密钥KEYONEi;
使用对称加密算法解密该密文文件块;再把解密后每个文件块合并成原来的文件。
[0007] 所述的云存储加解密方法,所述的构成密文密钥池方法,按照变换规则,生成多把密钥,形成一个密钥池,用非对称加密算法的公钥KEY公钥对每把密钥进行加密,构成密文密钥池,存储在云端分布式云存储服务器。
[0008] 所述的云存储加解密方法,所述密钥抽取算法包括线性抽取方式和非线性抽取方式。
[0009] 所述的云存储加解密方法,所述文件在用户端被切片成固定大小的M块文件块;对每一文件块分别用不同密钥加密;在密文密钥池中按密钥抽取算法抽取一把密文密钥KEYTWOi,用非对称加解密算法的私钥解密生成密钥KEYONEi,再用密钥KEYONEi作为对称加密算法的密钥对该文件块进行加密,分布存储到密文云存储平台中。
[0010] 所述的云存储加解密方法,用户可根据需要更新该用户密文密钥池,更新方法包括以下步骤:
[0011] (1)用户在终端随机生成新的公私钥对(NEWKEY私钥,NEWKEY公钥);
[0012] (2)从云存储服务器获取该用户密文密钥池中所有的密钥KEYTWOi(1≤i ≤N),取i等于1;
[0013] (3)用老的私钥(KEY私钥)和非对称加密算法(ECC或RSA)对密文密钥KEYTWOi进行解密,生成明文密钥KEYONEi;
[0014] (4)用新的公钥(NEWKEY公钥)和非对称加密算法(ECC或RSA)对明文密钥KEYONEi进行加密,生成新的密文密钥KEYTWOi;
[0015] (5)i自加1,跳到(3)步骤,直到循环N次,把所有密文密钥更新,跳到(6)步骤;
[0016] (6)把更新后的密钥池和新生成的公钥NEWKEY公钥更新到云存储服务器。
[0017] 所述的云存储加解密方法,用户可根据需要添加该用户密文密钥池中密钥的数量,添加方法包括以下步骤:(1)用户在终端按照密钥随机生成算法,按需要生成一把或多把新密钥NEWKEYONEi,1≤i≤L,L为大于等于1的整数;
[0018] (2)从云存储平台中获取该用户密文密钥池里的公钥KEY公钥;
[0019] (3)采用非对称加密算法用KEY公钥加密所有新生成的NEWKEYONEi,1≤i≤L,并添加到云存储服务器的密文密钥池中;
[0020] (4)原密文密钥池的密钥总数为N,添加L把密钥之后,总的密钥数变成N+L。
[0021] 本申请发明的有益效果是,用于基于个人用户的密文云存储领域,对文件块进行高安全级别的加密解密,保证文件的安全性和隐私性,提升个人云存储平台的可信赖性。在云存储平台中存储的是该用户的密文密钥池和若干密文文件块,不存储任何形式的明文,构建成密文云存储平台。

附图说明

[0022] 图1是本申请发明的密钥池生成流程。
[0023] 图2是本申请发明的密钥抽取算法。
[0024] 图3是本申请发明的文件分块加密流程。
[0025] 图4是本申请发明的文件分块解密流程。
[0026] 图5是本申请发明的更新密文密钥池流程。
[0027] 图6是本申请发明的新密文密钥添加流程。

具体实施方式

[0028] 实施例1、密文密钥池的生成
[0029] 密钥池的生成流程参照图1,下面介绍密钥池生成的具体过程。
[0030] (1)取原始字符串x
[0031] 为了使生成的密钥更加无序随机,密钥生成算法采用尽可能多的随机参数作为初始种子。x=用户名(注册用户名)+当前时间(表示为年月日时分秒毫秒)+用户密码的MD5码。并对x做去符号处理,即是将x中所有非字母和非数字的字符去掉。
[0032] (2)设控制因子为k(随机生成),k需要满足:
[0033] (2a)为整数;
[0034] (2b)0≤k≤127
[0035] (3)对字符串中的每一字符x[i](1≤i≤length(x)即字符串x的长度)循环:
[0036] (3a)若i模2余数为1,即对所有的奇数位的字符x[i],进行如下转化计算:
[0037] 如果(x[i]+k>127),则x[i]=x[i]+k-127;
[0038] 否则,则x[i]=x[i]+k。
[0039] (3b)若i模2余数为0,即对所有的偶数位的字符x[i],进行如下转化计算:
[0040] 如果(x[i]+i>127),则x[i]=x[i]+i-127;
[0041] 否则,则x[i]=x[i]+i。
[0042] 如上转化也可用如下公式表示:
[0043]
[0044] (4)逐个循环x[i]后得到新的字符串,记做y。
[0045] (5)把字符串y做MD5运算生成128位字符,这128位字符就是生成的一把密钥(KEYONE)。
[0046] (6)对于整个密钥池,需要生成多把密钥,假设密钥池中的密钥数为N。重复步骤1到5N次,生成N把密钥。每生成一把密钥,它的原始字符串中的当前时间部分取不同值(也可增加其他参数作为可变因子),同时对k值取不同值,即可得到N个不同的原始字符串,从而生成N把不同的密钥KEYONEi(1≤i≤N,N一般取100或以上)
[0047] (7)随机生成一把公私钥对(KEY私钥,KEY公钥)。然后采用非对称加密算法(ECC或RSA)用KEY公钥加密所有KEYONEi(1≤i≤N),生成该用户的密文密钥池KEYTWOi(1≤i≤N)。
[0048] (8)用户再将将密文密钥池和KEY公钥存储到云存储服务器中,作为该用户的密文密钥池。用户需要保存自己的私钥KEY私钥,一般采用USB KEY来存储。每个用户都有自己的密钥池,而且只为自己使用。
[0049] 实施例2、密钥的抽取算法
[0050] 密钥抽取算法参照图2。密钥抽取算法采用线性抽取的方式,提供一种线性除留余数法来抽取密钥算法(但不局限于此种此种方法),公式如下式所示:
[0051] x(j)=(k*j+a)mod N j=1,2,...
[0052] 其中x(j)为第j把密钥的编号,k为线性步长系数,a为起始位置,N为总的密钥数。如设定k=7,a=66,N=100,则抽取的第1把密钥号为73号,抽取的第2把密钥号为80号,第三把密钥号为87号......。
[0053] 密钥抽取算法也可采用非线性抽取的方式,提供一种抛物线除留余数法来抽取密钥算法(但不局限于此种此种方法),公式如下式所示:
[0054] x(j)=(k*j*j+a)mod N j=1,2,...
[0055] 其中x(j)为第j把密钥的编号,k为步长系数,a为起始位置,N为总的密钥数。如设定k=7,a=66,N=100,则抽取的第1把密钥号为73号,抽取的第2把密钥号为94号,第三把密钥号为29号......。
[0056] 设定好参数k和a后,每个j都唯一对应一个x(j)。起始位置a可以事先固定,也可以不固定,最好每次文件加密时,a为一随机数。步长k是一小于N的素数。选取随机数a和素数k的目的是为了抽取密钥离散化,以便均匀地和随机地使用密文密钥池的密钥来加密不同文件块。
[0057] 实施例3.文件的分块加密
[0058] 文件分块加密的流程参考附图中图3,下面介绍文件分块加密的具体过程。
[0059] (1)用户在终端选中需要加密存储的文件,将文件(FILE)按固定大小分成若干文件块FILEj(1≤j≤M),最后一块可能小于固定大小,取j等于1。
[0060] (2)从文件块中取出第j(1≤j≤M)个文件块FILEj,文件块的块号j作为密钥抽取算法中的j,调用密钥抽取算法得到密钥号i=x(j)。
[0061] (3)从该用户的密文密钥池中取出密文密钥KEYTWOi(1≤i≤N),用私钥(KEY私钥)和非对称加密算法(ECC或RSA)对KEYTWOi解密,生成密钥KEYONEi。
[0062] (4)使用KEYONEi为对称加密算法(如AES)的密钥对第j块文件块FILEj进行加密,并存储在云存储平台中。
[0063] (5)j自加1,跳到(2)步骤,直到循环M次,把所有文件块加密完成并存储到云存储平台中。
[0064] 实施例4.文件的分块解密
[0065] 文件分块解密的流程参考附图中图4,下面介绍文件分块解密的具体过程。
[0066] (1)用户选中存储在云存储平台中的文件,把该文件(FILE)对应的所有密文文件块(有M块)依次取回到终端,取j等于1。
[0067] (2)从密文文件块中取出第j(1≤j≤M)个文件块FILEj,文件块的块号j作为密钥抽取算法中的j,调用密钥抽取算法得到密钥号i=x(j)。
[0068] (3)从该用户的密文密钥池中取出密文密钥KEYTWOi(1≤i≤N),用私钥(KEY私钥)和非对称加密算法(ECC或RSA)对KEYTWOi解密,生成密钥KEYONEi。
[0069] (4)使用KEYONEi为对称加密算法(如AES)的密钥对第j块文件块FILEj进行解密,并合并到一个文件中。
[0070] (5)j自加1,跳到(2)步,直到循环M次,把所有文件块解密密完成并合并成原来的文件。
[0071] 实施例5.更新密文密钥池
[0072] 更新密文密钥池流程参考附图中图5,下面介绍更新密文密钥池的具体过程。
[0073] (1)用户在终端随机生成新的公私钥对(NEWKEY私钥,NEWKEY公钥)。
[0074] (2)从云存储服务器获取该用户密文密钥池中所有的密钥KEYTWOi(1≤i≤N),取i等于1。
[0075] (3)用老的私钥(KEY私钥)和非对称加密算法(ECC或RSA)对密文密钥KEYTWOi进行解密,生成明文密钥KEYONEi。
[0076] (4)用新的公钥(NEWKEY公钥)和非对称加密算法(ECC或RSA)对明文密钥KEYONEi进行加密,生成新的密文密钥KEYTWOi。
[0077] (5)i自加1,跳到(3)步,直到循环N次,把所有密文密钥更新,跳到(6)步。
[0078] (6)把更新后的密钥池和新生成的公钥NEWKEY公钥更新到云存储服务器。
[0079] 实施例6.添加密钥
[0080] 添加密钥流程参考附图中图6,下面介绍添加密钥的具体过程。
[0081] (1)用户在终端按密钥随机生成算法,按需要生成一把或多把新密钥NEWKEYONEi(1≤i ≤L,L为大于等于1的整数)。
[0082] (2)从云存储平台中获取该用户密文密钥池里的公钥(KEY公钥)。
[0083] (3)采用非对称加密算法(ECC或RSA)用KEY公钥加密所有新生成的NEWKEYONEi(1≤i≤L),并添加到云存储服务器的密文密钥池中。
[0084] (4)原密文密钥池的密钥总数为N,添加L把密钥之后,总的密钥数变成N+L。