一种移动云计算环境下的轻量级文件远程加密方法与流程

文档序号:11960089阅读:298来源:国知局
一种移动云计算环境下的轻量级文件远程加密方法与流程

本发明属于计算机技术领域,更进一步涉及移动云计算安全技术领域中的一种移动云计算环境下的轻量级文件远程加密方法。本发明可以在用户进行文件加密的过程中通过远程加密的方式,不让私有云知晓加密密钥,保证了文件和密钥的安全性,进而避免由于云端遭受攻击而导致的用户隐私泄露的问题。



背景技术:

随着移动终端(MT,Mobile Terminal)的广泛普及,人们比起使用电脑等传统的终端,更喜欢使用移动终端来接入和使用网络。移动终端有着非常多的优点,如体积小易携带、快捷、互动、随时随地不受时间和空间限制等,从而受到了广大用户的青睐,应用前景非常广阔。但是实际上移动终端也有着它本身不可避免的缺点,其存储和计算能力有限,不能承担大量的存储和计算任务,只能进行一些轻量级的文件操作。因此对于移动终端来讲,我们常常希望将存储负担和复杂计算转移出去。云计算提供了一个很好的平台,云环境具有强大的存储和计算能力,因此可以将这些任务转移到云上。现在普遍采用移动终端(MT,Mobile Terminal)、私有云(Prc,Private Clouds)、公有云(Puc,Public Clouds)三方模型来降低移动终端的存储和计算负担。在这个模型中,移动终端将文件存储在公有云,私有云是一个可信的第三方,当移动终端需要使用公有云端文件时,代替移动终端进行数据完整性检测。

Yang J,Wang H,Wang J,et al.在其发表的论文“Provable Data Possession of Resource-constrained Mobile Devices in Cloud Computing”(Journal of Networks,2011,6(7):1033-1040)中提出了一种移动云计算环境下的数据完整性验证方法。该方法通过使用递增的消息认证码来验证存储在云端数据的安全性。Trust Coprocessor充当可信第三方进行消息验证码的生成,一定程度上利用了云计算的计算能力。为了最小化移动终端上的处理开销,该方案没有将大量的认证工作转移到云服务提供商和可信第三方上。移动终端执行消息验证码MAC的产生和比较以及所有文件的更新操作;可信第三方只是在移动终端发出验证数据完整性请求时,对公有云的云端传回的文件生成MAC。该方法存在的不足之处是,由于移动终端过多地承担了完整性验证的工作,会导致移动终端负担过重;并且由于移动终端直接将未加密的明文文件发送存储在公有云端导致文件安全遭受威胁。

华中科技大学在其申请的专利“一种移动云存储轻量级数据安全共享方法”(专利申请号:201410026787.9,申请公布号:CN103763319A)中公开了一种移动云存储轻量级数据安全共享方法。该方法包括:数据拥有者在可信第三方注册属性集合,数据拥有者为用户指定属性集合,可信第三方根据用户的属性集合使用属性密码机制对用户授权生成属性密钥,数据拥有者使用移动端共享文件时,首先采用对称密码机制对对称密钥加密,并将文件密文和密钥密文发送到云端,用户从云端读取文件密文及密钥密文后,通过代理解密服务器使用属性密码机制解密文件,数据拥有者向可信第三方及云端发送权限变更声明,可信第三方及云端根据用户权限变声声明判断为用户增加或删除权限。本发明能在电量和计算能力有限的移动端实现数据的安全共享。该方法存在的不足之处是,由于可信第三方知晓密钥,万一可信第三方遭受攻击会导致密钥泄露问题;并且由于可信第三方拥有密文文件,万一可信第三方遭受攻击,或者存在云欺诈,会导致文件信息泄露问题。



技术实现要素:

本发明的目的在于克服上述已有技术的不足,提出一种移动云计算环境下的轻量级文件远程加密方法。本发明通过远程加密、密文文件共享、完整性验证,可是保证密钥的机密性和文件的完整性,有效解决由于云端受到攻击而导致的用户文件和密钥泄露问题,进一步加强了用户使用文件的安全性。

为实现上述目的,本发明的具体实现步骤如下:

(1)验证移动终端用户:

(1a)采用移动终端用户验证方法,私有云对移动终端用户进行验证;

(1b)私有云查询移动终端用户信息表,判断移动终端用户的身份识别ID和口令psd是否与移动终端用户信息表中的信息一致,若是,则通过移动终端用户验证,执行步骤(2),否则,删除待验证的移动终端用户的身份识别码ID和口令psd;

(2)远程加密:

(2a)按照下式,私有云计算待加密文件的第一个中间块:

<mrow> <msub> <mi>I</mi> <mn>1</mn> </msub> <mo>=</mo> <msub> <mi>P</mi> <mn>1</mn> </msub> <mo>&CirclePlus;</mo> <mi>H</mi> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mn>2</mn> </msub> <mn>...</mn> <msub> <mi>I</mi> <mi>i</mi> </msub> <mn>...</mn> <msub> <mi>I</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> </mrow>

其中,I1表示待加密文件的第一个中间块,P1表示待加密文件的第一个明文块,表示按位异或操作,H(·)表示私有云计算的一个哈希函数,Ii表示待加密文件的第i个中间块,In表示待加密文件的第n个中间块,n表示待加密文件的分块的总数;

(2b)私有云用移动终端的公钥对待加密文件的第一个中间块I1和时间戳t2进行加密操作,将加密后的消息发送给移动终端;

(2c)私有云用自己的私钥解密接收到的消息,得到待加密文件的第一个中间块I1,按照下式,私有云计算待加密文件的第一个密文块:

C1=Ek(I1)

其中,C1表示待加密文件的第一个密文块,Ek(·)表示在加密密钥k下,使用由移动终端和私有云共享的对称加密算法,对待加密文件的第一个中间块I1进行加密操作;

(2d)按照下式,移动终端计算密钥替代值:

Kp=M(Ek(C1))

其中,Kp表示密钥替代值,M(·)表示移动终端计算的一个哈希函数,Ek(·)表示在密钥k下,使用由移动终端和私有云共享的对称加密算法,对待加密文件的第一个密文块C1进行加密操作;

(2e)移动终端用私有云的公钥,对待加密文件的第一个密文块C1和密钥替代值Kp进行加密操作,将加密后的消息发送给私有云;

(2f)私有云用自己的私钥解密接收到的消息,得到待加密文件的第一个密文块C1和密钥替代值Kp,按照下式,完成除第一个明文块之外的其余明文块的加密操作,得到所有的密文块;

<mrow> <msub> <mi>C</mi> <mi>i</mi> </msub> <mo>=</mo> <msub> <mi>E</mi> <msub> <mi>k</mi> <mi>p</mi> </msub> </msub> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mi>i</mi> </msub> <mo>&CirclePlus;</mo> <msub> <mi>C</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow>

其中,Ci表示待加密文件的第i个密文块,i=2...n,n表示密文块分块的总数,表示在密钥替代值Kp下,使用移动终端和私有云共享的对称加密算法对待加密文件进行加密操作,Ii表示待加密文件的第i个中间块,表示按位异或操作,Ci-1表示待加密文件的第i-1个密文块;

(2g)私有云生成加密完成的确认消息,发送给移动终端;

(2h)私有云删除待加密文件;

(3)生成数据指纹:

(3a)私有云接收到加密完成的确认消息后,依照元数据生成算法g(a,b),为每个密文块生成K位的元数据,K表示数据块需要读取的数据位的总量,仅为数据所有者和可信第三方私有云知道,g(a,b)表示第a个数据块的第b位数据,a=1...m,b=1...x,m表示密文分块的总数,x表示每一个数据块中需要读取的数据位置;

(3b)私有云按照私有云和公有云共享的哈希函数为每个密文块的元数据生成独一无二的数据指纹;

(3c)私有云生成密文块和元数据指纹对应关系的索引表IndexTable,存储索引表IndexTable;

(4)验证数据指纹:

(4a)采用验证数据指纹方法,公有云和私有云验证对方的数据指纹;

(4b)判断私有云返回的公有云随机数和公有云发送的公有云随机数是否相同,若是,则通过验证,公有云生成确认消息,发送给私有云,执行步骤(5),否则,公有云删除数据指纹;

(5)上传存储密文块:

(5a)私有云接收到确认消息后,将密文文件名以及密文文件的每一个密文块发送给公有云,密文文件的每一个密文块包括数据块号和密文数据;

(5b)公有云接收到密文文件名和密文文件的每一个密文块后,存储密文文件名和密文文件的每一个密文块,生成关系索引表RelationIndex和存储索引表StorageIndex,保存关系索引表RelationIndex和存储索引表StorageIndex;

(5c)公有云生成确认消息,发送给私有云;

(6)私有云删除全部密文块;

(7)验证挑战信息:

(7a)采用验证数据指纹方法,公有云和私有云相互验证对方的数据指纹;

(7b)判断私有云返回的公有云随机数和公有云发送的公有云随机数是否相同,若是,则通过验证,公有云生成确认消息,发送给私有云,执行步骤(7c),否则,公有云删除数据指纹;

(7c)私有云生成挑战信息,对挑战信息使用私有云和公有云共享的哈希函数生成数据指纹,将数据指纹发送给公有云;

(7d)公有云接收数据指纹;

(7e)判断公有云发送的公有云随机数与公有云接收的公有云随机数是否相同,若是,则执行步骤(8),否则,公有云删除数据指纹;

(8)比对数据指纹:

(8a)公有云根据待验证密文块的数据块号查询存储索引表StorageIndex,得到待验证密文块,公有云将待验证密文块发送给私有云;

(8b)私有云接收到待验证密文块后,按照私有云和公有云共享的哈希函数,计算待验证密文块的哈希值,将哈希值作为数据指纹;

(8c)私有云根据待验证密文块的数据块号查询索引表IndexTable,得到存储的待验证密文块的数据指纹;

(8d)判断私有云接收的待验证密文块的数据指纹和私有云存储的待验证密文块的数据指纹是否相同,若是,则私有云向移动终端发送Success,否则,私有云向移动终端发送Failure;

(8e)判断移动终端用户是否需要使用数据,若是,执行步骤(9),否则,不做任何处理;

(9)完整性检测:

(9a)根据待验证文件的隐私等级的高低,确定时间间隔;

(9b)按照时间间隔,执行步骤(7);

(10)发送待使用文件的文件名:

(10a)采用移动终端用户验证方法,私有云对移动终端用户进行验证;

(10b)私有云查询移动终端用户信息表,判断移动终端用户的身份识别ID和口令psd是否与移动终端用户信息表中的信息一致,若是,则通过移动终端用户验证,执行步骤(10c),否则,删除待验证的移动终端用户的身份识别码ID和口令psd;

(10c)采用验证数据指纹方法,公有云和私有云相互验证对方的数据指纹;

(10d)判断公有云发送的公有云随机数和公有云接收的公有云随机数是否相同,若是,则通过验证,公有云生成确认消息,发送给私有云,并执行步骤(10e),否则,公有云删除数据指纹;

(10e)私有云接收到确认消息后,将待使用文件的文件名发送给公有云;

(11)传回密文块:

(11a)公有云根据密文文件名查询关系索引表RelationIndex,得到该密文文件包含的数据块号;

(11b)公有云根据该密文文件包含的数据块号查询存储索引表StorageIndex,得到全部密文块;

(11c)公有云将查询得到的全部密文块发送给私有云;

(11d)私有云接收到全部密文块后,生成确认消息,发送给公有云;

(12)远程解密:

(12a)私有云接收到确认消息后,用移动终端的公钥加密第一个密文块,将加密后的数据发送至移动终端;

(12b)移动终端接收到加密后的数据后,用自己的私钥解密接收到的数据,得到第一个密文块;

(12c)按照下式,移动终端计算密钥替代值:

Kp=M(Ek(C1))

其中,Kp表示密钥替代值,M(·)表示移动终端计算的一个哈希函数,Ek(·)表示在密钥k下使用移动终端和私有云共享的加密算法,对第一个密文块C1进行加密操作;

(12d)按照下式,移动终端计算第一个中间块:

I1=Dk(C1)

其中,I1表示待使用文件的第一个中间块,Dk(·)表示在密钥k下使用对待对称解密算法对第一个密文块C1进行解密操作;

(12e)移动终端将第一个中间块I1、密钥替代值Kp和时间戳t3发送给私有云;

(12f)私有云接收到数据后,按照下式,私有云计算全部明文块:

<mrow> <msub> <mi>I</mi> <mi>j</mi> </msub> <mo>=</mo> <msub> <mi>D</mi> <msub> <mi>k</mi> <mi>p</mi> </msub> </msub> <mrow> <mo>(</mo> <msub> <mi>C</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <msub> <mi>C</mi> <mrow> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mrow>

<mrow> <msub> <mi>P</mi> <mn>1</mn> </msub> <mo>=</mo> <msub> <mi>I</mi> <mn>1</mn> </msub> <mo>&CirclePlus;</mo> <mi>H</mi> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mn>2</mn> </msub> <mn>...</mn> <msub> <mi>I</mi> <mi>y</mi> </msub> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>P</mi> <mo>=</mo> <msub> <mi>I</mi> <mi>j</mi> </msub> <mo>&CirclePlus;</mo> <mi>H</mi> <mrow> <mo>(</mo> <msub> <mi>P</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> </mrow>

其中,Ij表示待使用文件的第j个中间块,j=2...y,y表示待使用文件分块的总数,表示在密钥替代值Kp下使用移动终端和私有云共享的对称解密算法,对第j个密文块Cj进行解密操作,Cj-1表示待使用文件的第j-1个密文块,j=2...y,P1表示待使用文件的第一个明文块,I1表示待使用文件的第一个中间块,H(·)表示私有云计算的一个哈希函数,Iy表示待使用文件的第y个中间块,P表示全部明文块,表示按位异或操作;

(13)返回全部明文块:

(13a)私有云将时间戳t4和解密得到的全部明文块,发送给移动终端;

(13b)移动终端接收全部明文块,明文块包括数据块号和明文数据;

(13c)移动终端生成确认消息,发送给私有云。

本发明与现有技术相比具有以下优点:

第一,由于本发明生成密钥替代值,代替密钥进行加密和解密计算操作,克服了现有技术由于可信第三方知晓密钥,万一可信第三方遭受攻击会导致密钥泄露问题,使得本发明的密钥具有安全性高的优点。

第二,由于本发明上传存储密文块,私有云将明文文件加密后上传存储在公有云,克服了现有技术中由于移动终端直接将未加密的明文文件发送存储在公有云端导致文件安全遭受威胁的问题,使得本发明的文件数据具有安全性高的优点。

第三,由于本发明采用生成所有密文块,私有云代替移动终端进行所有明文块的加密运算操作,克服了现有技术由于移动终端过多地承担了完整性验证的工作,会导致移动终端负担过重的问题,使得本发明具有减轻移动终端存储和计算负担的优点。

第四,由于本发明生成所有明文块,私有云代替移动终端进行所有密文块的解密运算操作,克服了现有技术由于移动终端过多地承担了完整性验证的工作,会导致移动终端负担过重的问题,使得本发明具有减轻移动终端存储和计算负担的优点。

第五,由于本发明删除全部密文块,私有云将全部密文块发送给公有云后,将全部的密文块删除,克服了现有技术由于可信第三方拥有密文文件,万一可信第三方遭受攻击,或者存在云欺诈,会导致文件信息泄露问题,使得本发明具有文件信息机密性高的优点。

附图说明

图1为本发明的流程图;

图2为本发明步骤2远程加密的流程图;

图3为本发明步骤12远程解密的流程图。

具体实施方式

下面结合附图对本发明作进一步的描述。

参照附图1,对实现本发明的具体步骤作进一步的描述。

步骤1,验证移动终端用户。

采用用户验证方法,私有云对移动终端用户进行验证。

实现用户验证方法的具体步骤如下:

第1步,移动终端将移动终端用户身份识别码ID、口令psd、待加密文件的文件名fn、待加密文件的隐私等级PrivLevel和时间戳t1用私有云的公钥加密,将加密后的消息发送给私有云。

第2步,私有云用自己的私钥解密接收的消息,得到移动终端用户身份识别码ID和口令psd。

私有云查询移动终端用户信息表,判断移动终端用户的身份识别ID和口令psd是否与移动终端用户信息表中的信息一致,若是,则通过移动终端用户验证,执行步骤2,否则,删除待验证的移动终端用户的身份识别码ID和口令psd;

步骤2,远程加密。

参照附图2,对实现远程加密操作的具体步骤作进一步的描述。

按照下式,私有云计算待加密文件的第一个中间块:

<mrow> <msub> <mi>I</mi> <mn>1</mn> </msub> <mo>=</mo> <msub> <mi>P</mi> <mn>1</mn> </msub> <mo>&CirclePlus;</mo> <mi>H</mi> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mn>2</mn> </msub> <mn>...</mn> <msub> <mi>I</mi> <mi>i</mi> </msub> <mn>...</mn> <msub> <mi>I</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> </mrow>

其中,I1表示待加密文件的第一个中间块,P1表示待加密文件的第一个明文块,表示按位异或操作,H(·)表示私有云计算的一个哈希函数,Ii表示待加密文件的第i个中间块,In表示待加密文件的第n个中间块,n表示待加密文件的分块的总数。

私有云用移动终端的公钥对待加密文件的第一个中间块I1和时间戳t2进行加密操作,将加密后的消息发送给移动终端。

私有云用自己的私钥解密接收到的消息,得到待加密文件的第一个中间块I1,按照下式,私有云计算待加密文件的第一个密文块:

C1=Ek(I1)

其中,C1表示待加密文件的第一个密文块,Ek(·)表示在加密密钥k下,使用由移动终端和私有云共享的对称加密算法,对待加密文件的第一个中间块I1进行加密操作。

按照下式,移动终端计算密钥替代值:

Kp=M(Ek(C1))

其中,Kp表示密钥替代值,M(·)表示移动终端计算的一个哈希函数,Ek(·)表示在密钥k下,使用由移动终端和私有云共享的对称加密算法,对待加密文件的第一个密文块C1进行加密操作。

移动终端用私有云的公钥,对待加密文件的第一个密文块C1和密钥替代值Kp进行加密操作,将加密后的消息发送给私有云。

私有云用自己的私钥解密接收到的消息,得到待加密文件的第一个密文块C1和密钥替代值Kp,按照下式,完成除第一个明文块之外的其余明文块的加密操作,得到所有的密文块;

<mrow> <msub> <mi>C</mi> <mi>i</mi> </msub> <mo>=</mo> <msub> <mi>E</mi> <msub> <mi>k</mi> <mi>p</mi> </msub> </msub> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mi>i</mi> </msub> <mo>&CirclePlus;</mo> <msub> <mi>C</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow>

其中,Ci表示待加密文件的第i个密文块,i=2...n,n表示密文块分块的总数,表示在密钥替代值Kp下,使用移动终端和私有云共享的对称加密算法对待加密文件进行加密操作,Ii表示待加密文件的第i个中间块,表示按位异或操作,Ci-1表示待加密文件的第i-1个密文块。

私有云生成加密完成的确认消息,发送给移动终端。

私有云删除待加密文件,远程加密步骤结束。

步骤3,生成数据指纹。

私有云接收到加密完成的确认消息后,依照元数据生成算法g(a,b),为每个密文块生成K位的元数据,K表示数据块需要读取的数据位的总量,仅为数据所有者和可信第三方私有云知道,g(a,b)表示第a个数据块的第b位数据,a=1...m,b=1...x,m表示密文分块的总数,x表示每一个数据块中需要读取的数据位置。

私有云按照私有云和公有云共享的哈希函数为每个密文块的元数据生成独一无二的数据指纹。

私有云生成密文块和元数据指纹对应关系的索引表IndexTable,存储索引表IndexTable。

步骤4,验证数据指纹。

采用验证数据指纹方法,公有云和私有云验证对方的数据指纹。

实现验证数据指纹方法的具体步骤如下:

第1步,私有云随机选择随机数rPrc和临时密钥K1,用公有云公钥对私有云随机数rPrc、临时密钥K1和公有云标识符Puc进行加密操作,对加密后的数据生成数据指纹,将加密后的数据和数据指纹发送给公有云;

第2步,公有云用自己的私钥解密接收到的消息,得到加密后的数据和数据指纹,使用私有云和公有云共享的哈希函数对加密后的数据生成数据指纹,判断生成的数据指纹和接收到的数据指纹是否相同,若是,执行本步骤的第3步,否则,执行本步骤的第1步;

第3步,随机选择公有云随机数rPuc和临时密钥K2,用私有云公钥对公有云随机数rPuc、临时密钥K2、私有云随机数rPrc和私有云标识符Prc进行加密操作,使用私有云和公有云共享的哈希函数对加密后的数据生成数据指纹,发送给私有云;

第4步,私有云用自己的私钥解密接收到的消息,得到私有云随机数rPrc,检验是否是私有云发送过的随机数,若是,则执行本步骤的第5步,否则,执行本步骤的第1步;

第5步,私有云用公有云公钥对公有云标识符Puc和公有云随机数rPuc进行加密操作,对加密后的数据生成数据指纹,发送给公有云;

第6步,公有云用自己的私钥解密接收到的消息,得到公有云随机数rPuc

判断私有云返回的公有云随机数和公有云发送的公有云随机数是否相同,若是,则通过验证,公有云生成确认消息,发送给私有云,执行步骤5,否则,公有云删除数据指纹。

步骤5,上传存储密文块。

私有云接收到确认消息后,将密文文件名以及密文文件的每一个密文块发送给公有云,密文文件的每一个密文块包括数据块号和密文数据。

公有云接收到密文文件名和密文文件的每一个密文块后,存储密文文件名和密文文件的每一个密文块,生成关系索引表RelationIndex和存储索引表StorageIndex,保存关系索引表RelationIndex和存储索引表StorageIndex。

公有云生成确认消息,发送给私有云。

步骤6,私有云删除全部密文块。

步骤7,验证挑战信息。

(7a)采用验证数据指纹方法,公有云和私有云相互验证对方的数据指纹。

实现验证数据指纹方法的具体步骤如下:

第1步,私有云随机选择随机数rPrc和临时密钥K1,用公有云公钥对私有云随机数rPrc、临时密钥K1和公有云标识符Puc进行加密操作,对加密后的数据生成数据指纹,将加密后的数据和数据指纹发送给公有云;

第2步,公有云用自己的私钥解密接收到的消息,得到加密后的数据和数据指纹,使用私有云和公有云共享的哈希函数对加密后的数据生成数据指纹,判断生成的数据指纹和接收到的数据指纹是否相同,若是,执行本步骤的第3步,否则,执行本步骤的第1步;

第3步,随机选择公有云随机数rPuc和临时密钥K2,用私有云公钥对公有云随机数rPuc、临时密钥K2、私有云随机数rPrc和私有云标识符Prc进行加密操作,使用私有云和公有云共享的哈希函数对加密后的数据生成数据指纹,发送给私有云;

第4步,私有云用自己的私钥解密接收到的消息,得到私有云随机数rPrc,检验是否是私有云发送过的随机数,若是,则执行本步骤的第5步,否则,执行本步骤的第1步;

第5步,私有云用公有云公钥对公有云标识符Puc和公有云随机数rPuc进行加密操作,对加密后的数据生成数据指纹,发送给公有云;

第6步,公有云用自己的私钥解密接收到的消息,得到公有云随机数rPuc

(7b)判断私有云返回的公有云随机数和公有云发送的公有云随机数是否相同,若是,则通过验证,公有云发送确认消息给私有云,执行步骤(7c),否则,公有云删除数据指纹。

(7c)私有云生成挑战信息,对挑战信息使用私有云和公有云共享的哈希函数生成数据指纹,将数据指纹发送给公有云。

挑战信息,包括待验证密文块的数据块号和挑战值。

(7d)公有云接收数据指纹。

(7e)判断公有云发送的公有云随机数与公有云接收的公有云随机数是否相同,若是,则执行步骤8,否则,公有云删除数据指纹。

步骤8,比对数据指纹。

公有云根据待验证密文块的数据块号查询存储索引表StorageIndex,得到待验证密文块,公有云将待验证密文块发送给私有云。

私有云接收到待验证密文块后,按照私有云和公有云共享的哈希函数,计算待验证密文块的哈希值,将哈希值作为数据指纹。

私有云根据待验证密文块的数据块号查询索引表IndexTable,得到存储的待验证密文块的数据指纹。

判断私有云接收的待验证密文块的数据指纹和私有云存储的待验证密文块的数据指纹是否相同,若是,则私有云向移动终端发送Success,否则,私有云向移动终端发送Failure。

判断移动终端用户是否需要使用数据,若是,执行步骤9,否则,不做任何处理。

步骤9,完整性检测。

根据待验证文件的隐私等级的高低,确定时间间隔。

根据待验证文件的隐私等级的高低,确定时间间隔是指,将待验证文件的隐私等级高的完整性检测的时间间隔T设为1秒,将待验证文件的隐私等级中的完整性检测的时间间隔T设为1小时,将待验证文件的隐私等级低的完整性检测的时间间隔T设为1天。

按照时间间隔,执行步骤7。

步骤10,发送待使用文件的文件名。

(10a)采用移动终端用户验证方法,私有云对移动终端用户进行验证。

实现用户验证方法的具体步骤如下:

第1步,移动终端将移动终端用户身份识别码ID、口令psd、待加密文件的文件名fn、待加密文件的隐私等级PrivLevel和时间戳t1用私有云的公钥加密,将加密后的消息发送给私有云;

第2步,私有云用自己的私钥解密接收的消息,得到移动终端用户身份识别码ID和口令psd。

(10b)私有云查询移动终端用户信息表,判断移动终端用户的身份识别ID和口令psd是否与移动终端用户信息表中的信息一致,若是,则通过移动终端用户验证,执行步骤(10c),否则,删除待验证的移动终端用户的身份识别码ID和口令psd。

(10c)采用验证数据指纹方法,公有云和私有云相互验证对方的数据指纹。

实现验证数据指纹方法的具体步骤如下:

第1步,私有云随机选择随机数rPrc和临时密钥K1,用公有云公钥对私有云随机数rPrc、临时密钥K1和公有云标识符Puc进行加密操作,对加密后的数据生成数据指纹,将加密后的数据和数据指纹发送给公有云;

第2步,公有云用自己的私钥解密接收到的消息,得到加密后的数据和数据指纹,使用私有云和公有云共享的哈希函数对加密后的数据生成数据指纹,判断生成的数据指纹和接收到的数据指纹是否相同,若是,执行本步骤的第3步,否则,执行本步骤的第1步;

第3步,随机选择公有云随机数rPuc和临时密钥K2,用私有云公钥对公有云随机数rPuc、临时密钥K2、私有云随机数rPrc和私有云标识符Prc进行加密操作,使用私有云和公有云共享的哈希函数对加密后的数据生成数据指纹,发送给私有云;

第4步,私有云用自己的私钥解密接收到的消息,得到私有云随机数rPrc,检验是否是私有云发送过的随机数,若是,则执行本步骤的第5步,否则,执行本步骤的第1步;

第5步,私有云用公有云公钥对公有云标识符Puc和公有云随机数rPuc进行加密操作,对加密后的数据生成数据指纹,发送给公有云;

第6步,公有云用自己的私钥解密接收到的消息,得到公有云随机数rPuc

(10d)判断公有云发送的公有云随机数和公有云接收的公有云随机数是否相同,若是,则通过验证,公有云生成确认消息,发送给私有云,并执行步骤(10e),否则,公有云删除数据指纹。

(10e)私有云接收到确认消息后,将待使用文件的文件名发送给公有云;

步骤11,传回密文块。

公有云根据密文文件名查询关系索引表RelationIndex,得到该密文文件包含的数据块号。

公有云根据该密文文件包含的数据块号查询存储索引表StorageIndex,得到全部密文块。

公有云将查询得到的全部密文块发送给私有云。

私有云接收到全部密文块后,生成确认消息,发送给公有云。

步骤12,远程解密。

参照附图3,对实现远程解密操作的具体步骤作进一步的描述。

私有云接收到确认消息后,用移动终端的公钥加密第一个密文块,将加密后的数据发送至移动终端。

移动终端接收到加密后的数据后,用自己的私钥解密接收到的数据,得到第一个密文块。

按照下式,移动终端计算密钥替代值:

Kp=M(Ek(C1))

其中,Kp表示密钥替代值,M(·)表示移动终端计算的一个哈希函数,Ek(·)表示在密钥k下使用移动终端和私有云共享的加密算法,对第一个密文块C1进行加密操作。

按照下式,移动终端计算第一个中间块:

I1=Dk(C1)

其中,I1表示待使用文件的第一个中间块,Dk(·)表示在密钥k下使用对称解密算法,对第一个密文块C1进行解密操作。

移动终端将第一个中间块I1、密钥替代值Kp和时间戳t3发送给私有云。

私有云接收到数据后,按照下式,私有云计算全部明文块:

<mrow> <msub> <mi>I</mi> <mi>j</mi> </msub> <mo>=</mo> <msub> <mi>D</mi> <msub> <mi>k</mi> <mi>p</mi> </msub> </msub> <mrow> <mo>(</mo> <msub> <mi>C</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>&CirclePlus;</mo> <msub> <mi>C</mi> <mrow> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mrow>

<mrow> <msub> <mi>P</mi> <mn>1</mn> </msub> <mo>=</mo> <msub> <mi>I</mi> <mn>1</mn> </msub> <mo>&CirclePlus;</mo> <mi>H</mi> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mn>2</mn> </msub> <mn>...</mn> <msub> <mi>I</mi> <mi>y</mi> </msub> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>P</mi> <mo>=</mo> <msub> <mi>I</mi> <mi>j</mi> </msub> <mo>&CirclePlus;</mo> <mi>H</mi> <mrow> <mo>(</mo> <msub> <mi>P</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> </mrow>

其中,Ij表示待使用文件的第j个中间块,j=2...y,y表示待使用文件分块的总数,表示在密钥替代值Kp下使用移动终端和私有云共享的对称解密算法对第j个密文块Cj进行解密操作,Cj-1表示待使用文件的第j-1个密文块,j=2...y,P1表示待使用文件的第一个明文块,I1表示待使用文件的第一个中间块,H(·)表示私有云计算的一个哈希函数,Iy表示待使用文件的第y个中间块,P表示全部明文块,表示按位异或操作。

远程解密步骤结束。

步骤13,返回全部明文块。

私有云将时间戳t4和解密得到的全部明文块,发送给移动终端。

移动终端接收全部明文块,明文块包括数据块号和明文数据。

移动终端生成确认消息,发送给私有云。

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