System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及一种基于秘密拆分的可否认加密存储方法及系统,属于数据加密。
技术介绍
1、数据加密在网络安全中起着至关重要的作用,是保护数据免受未经授权访问的核心手段。然而,当前的加密方案存在一个显著的漏洞,这一漏洞难以通过现有的加密技术解决:用户胁迫的威胁。攻击者,甚至合法的权威机构,可能迫使用户披露其加密密钥,从而访问加密数据。传统的加密方案,无论是对称加密(如aes)还是非对称加密(如rsa或ecc),都未能提供对物理或社会性攻击的有效防护,尤其是在用户被迫交出密钥的情况下。在这种情况下,加密数据的机密性会立即受到破坏。因此,研究人员开始探索像可否认加密这样的密码学解决方案,旨在提供合理的否认性。
2、可否认存储使用户即使在被迫揭示密钥的情况下,也能够合理地否认加密数据的存在。合理否认存储方案主要有两种类型:基于可否认算法的方案和基于隐藏卷的方案。基于可否认算法的方案使用可否认隐藏数据;基于隐藏卷的方案通常在文件系统或存储设备的闪存转换层中实现,利用隐藏卷存储数据。磁盘被划分为两部分,整个磁盘标记为公共卷,剩余部分填充随机数据。隐藏卷被加密并位于公共卷的末尾,随机数据覆盖了隐藏卷。如果用户受到威胁,他们可以给出公共卷的密码,而不承认隐藏卷的存在。由于很难区分随机数据和隐藏数据,攻击者无法发现隐藏数据的存在。
3、可否认加密存储主要有以下两个优化的方向:一是提高系统可用性,使用单独的区块分配表、信息分散算法和维护一个额外的密钥目录等方式,来提高冗余效率。二是抵御多重快照攻击,通过区块分配表、随机标记块和
4、但这些实施时仍存在以下问题:需要维护额外的元数据,管理加密文件块的分配和写入需要额外的分配位图;存储空间利用率低,大多应对多重快照攻击的方案都采用冗余随机写入或伪数据块来掩盖对加密块的更改;需要特殊的磁盘布局,这不仅会引起敌手的额外注意,而且还会导致显著的性能损失。
技术实现思路
1、为了解决上述问题,本专利技术提出了一种基于秘密拆分的可否认加密存储方法及系统。
2、本专利技术采用的技术方案是:一种基于秘密拆分的可否认加密方法,包括以下步骤:
3、步骤1:setup()→(keys,keyp),使用随机数生成器生成密钥keys和伪密钥keyp;
4、步骤2:encrypt(keys,keyp,s,p)→c,分别对秘密s和伪秘密p进行秘密拆分,然后输出密文c;
5、步骤3:decrypts(keys,c)→s,decryptp(keyp,c)→p,构建秘密共享点和伪秘密共享点,解密出秘密s和伪秘密p;
6、步骤4:更新秘密s和伪秘密p。
7、上述基于秘密拆分的可否认加密方法,所述步骤2中,秘密s用于秘密拆分的shamir秘密拆分多项式次数为m,伪秘密p的多项式次数为n(m<n),其中keys的长度为m+1,keyp的长度为n+1,key的元素大小取决于多项式运算的有限域的大小。
8、上述基于秘密拆分的可否认加密方法,所述步骤2的具体实现包括以下子步骤:
9、步骤2.1:对秘密s进行拆分,令keys[0]作为秘密点的x坐标,s作为秘密点的y坐标,得到秘密点(xs,s),然后选取m个秘密共享点{(keys[1],y1),(keys[2],y2),…,(keys[m],ym)},其中y坐标的值yi,i∈{1,2,…,m}为随机选取,最后根据这些秘密共享点和秘密点(xs,s)构造出m次多项式fs(x),并计算第m+1个秘密共享点的y坐标值ym+1=fs(keys[m+1]);
10、步骤2.2:对伪秘密p进行拆分。
11、步骤2.2.1:令keyp[0]作为伪秘密点的x坐标,p作为伪秘密点的y坐标,得到伪秘密点(xp,p),然后选取m+1个伪秘密共享点{(keyp[1],y1),(keyp[2],y2),…,(keyp[m+1],ym+1)},这些点的y坐标与秘密共享点的y坐标相同(为了进一步提高安全性,可以重新安排x和y之间的对应关系,将x与y的坐标关系进行任意的交换并保存映射关系,例如{(keyp[1],yrandom(1…m+1)),(keyp[2],yrandom(1…m+1)),…,(keyp[m+1],yrandom(1…m+1))})。
12、步骤2.2.2:随机选取剩余n-m-1个伪秘密共享点的y坐标,得到{(keyp[m+2],ym+2),(keyp[m+3],ym+3),…,(keyp[n],yn)},最后使用前n个伪秘密共享点及伪秘密点(xp,p)构造n次多项式fp(x),计算出第n+1个伪秘密共享点的y坐标值yn+1=fp(keyp[n+1]);
13、步骤2.3:计算出密文c=y1||y2…||yn+1,其中,||表示连接符。
14、上述基于秘密拆分的可否认加密方法,所述步骤3的具体实现包括以下子步骤:
15、步骤3.1:构建秘密共享点{(keys[1],c[1]),(keys[2],c[2]),…,(keys[m+1],c[m+1])}并构造m次多项式fs(x),计算s=fs(keys[0]);
16、步骤3.2:构建伪秘密共享点{(keyp[1],c[1]),(keyp[2],c[2]),…,(keyp[n+1],c[n+1])}并构造n次多项式fp(x),计算p=fp(keyp[0])。
17、上述基于秘密拆分的可否认加密方法,所述步骤4中,当向密文c=y1||y2…||yn+1中更新秘密s时,因密文c=y1||y2…||yn+1同时保存了秘密s及伪秘密p,不能直接进行更新,以免更新后密文c无法恢复出伪秘密p。因此首先重建伪秘密p,根据密钥keys和伪密钥keyp,系统读取每个份额,并根据伪密钥keyp提供的信息重建p,然后重复步骤2,根据恢复出的伪秘密p及需要更新的秘密s,计算出新的密文c并将其写入相关存储。
18、上述基于秘密拆分的可否认加密方法,所述步骤4中,如果仅执行步骤2.2.2来更新伪秘密p,那么将会仅有部分的密文c=y1||y2…||yn+1会更新(步骤2.2.1中的前m+1个伪秘密共享点计算规则是固定的,得到的结果不会变化),这会增加被攻击者发现的风险(每次密文没有全部更新,只更新一部分,是反常的现象),因此需要设计方案,能够更新全部密文c=y1||y2…||yn+1。在gf(256)中,异或同态性质能够帮助解决这个问题。在gf(256)中,份额可以直接进行异或运算,其结果会体现在恢复的秘密中。例如:
19、secreta⊕secretb=recover(sharea1⊕shareb1,
20、sharea2⊕shareb2,
21、…,
22、sharean⊕sharebn)
23、由于对于任何值本文档来自技高网...
【技术保护点】
1.一种基于秘密拆分的可否认加密存储方法,其步骤包括:
2.根据权利要求1所述的方法,其特征在于,对秘密S进行拆分的方法为:令keyS[0]作为秘密点的x坐标,秘密S作为秘密点的y坐标,得到秘密点(xS,S),然后选取m个秘密共享点{(keyS[1],y1),(keyS[2],y2),…,(keyS[m],ym)},其中,y坐标的值yi为随机选取,i∈{1,2,…,m},最后根据各秘密共享点和秘密点(xS,S)构造出m次多项式fS(x),并计算第m+1个秘密共享点的y坐标值ym+1=fS(keyS[m+1])。
3.根据权利要求2所述的方法,其特征在于,对伪秘密P进行拆分的方法为:令keyP[0]作为伪秘密点的x坐标,伪秘密P作为伪秘密点的y坐标,得到伪秘密点(xP,P),然后选取m+1个伪秘密共享点{(keyP[1],y1),(keyP[2],y2),…,(keyP[m+1],ym+1)},该m+1个伪秘密共享点的y坐标与各秘密共享点的y坐标对应相同或满足设定的映射关系,然后随机选取剩余n-m-1个伪秘密共享点的y坐标,得到{(keyP[m+2],ym+
4.根据权利要求3所述的方法,其特征在于,解密出秘密S的方法为:构建秘密共享点{(keyS[1],C[1]),(keyS[2],C[2]),…,(keyS[m+1],C[m+1])}并构造m次多项式fS(x),计算得到秘密S=fS(keyS[0]);解密出伪秘密P的方法为:构建伪秘密共享点{(keyP[1],C[1]),(keyP[2],C[2]),…,(keyP[n+1],C[n+1])}并构造n次多项式fP(x),计算得到伪秘密P=fP(keyP[0])。
5.根据权利要求1或2或3所述的方法,其特征在于,根据步骤3)的解密结果更新秘密S和伪秘密P;其中,当更新秘密S时,首先重建伪秘密P,根据密钥keyS和伪密钥keyP,系统读取每个份额,并根据伪密钥keyP提供的信息恢复重建出伪秘密P,然后根据恢复出的伪秘密P及需要更新的秘密S,计算出新的密文C;当更新伪秘密P时,首先预计算秘密S为0时进行拆分的份额,然后利用二元扩域的异或同态性质,将各份额分别与相应的份额随机异或,然后随机选取剩余n-m-1个伪秘密共享点的y坐标,得到{(keyP[m+2],ym+2),(keyP[m+3],ym+3),…,(keyP[n],yn)},再使用前n个伪秘密共享点及伪秘密点(xP,P)构造n次多项式fP(x),计算出第n+1个伪秘密共享点的y坐标值yn+1=fP(keyP[n+1]);然后计算出密文C=y1||y2…||yn+1。
6.根据权利要求1或2或3所述的方法,其特征在于,在配置阶段,当系统连接到用户端时自动显示一配置分区,用于接收用户上传的配置文件;然后根据所述配置文件启动秘密共享引擎、建立网络连接和连接iSCSI服务器,完成配置后卸载所述配置分区,然后进入存储阶段;在存储阶段,系统根据所述配置文件中的密码挂载对应的存储分区,并作为SCSI指令代理接收来自用户端的SCSI读写指令,并使用秘密共享引擎实时共享和恢复相关指令,将数据分发到用户指定的存储后端。
7.根据权利要求6所述的方法,其特征在于,所述系统包括媒体传输协定设备和USB附加SCSI协议设备;所述媒体传输协定设备用于构建所述配置分区;所述USB附加SCSI协议设备用于建立所述存储分区;所述存储分区包括伪存储区域和秘密存储区域,用于收到伪密钥keyP时只显示伪存储区域的数据,隐藏秘密存储区域的数据。
8.一种基于秘密拆分的可否认加密存储系统,其特征在于,包括随机数生成器、密文生成模块和解密模块;
9.根据权利要求8所述的系统,其特征在于,还包括一更新模块,用于根据所述解密模块的解密结果更新秘密S和伪秘密P;其中,当更新秘密S时,首先重建伪秘密P,根据密钥keyS和伪密钥keyP,系统读取每个份额,并根据伪密钥keyP提供的信息恢复重建伪秘密P,然后根据恢复出的伪秘密P及需要更新的秘密S,计算出新的密文C;当更新伪秘密P时,首先预计算秘密S为0时进行拆分的份额,然后利用二元扩域的异或同态性质,将各份额分别与相应的份额随机异或,然后随机选取剩余n-m-1个伪秘密共享点的y坐标,得到{(keyP[m+2],ym+2),(keyP[m+3],ym+...
【技术特征摘要】
1.一种基于秘密拆分的可否认加密存储方法,其步骤包括:
2.根据权利要求1所述的方法,其特征在于,对秘密s进行拆分的方法为:令keys[0]作为秘密点的x坐标,秘密s作为秘密点的y坐标,得到秘密点(xs,s),然后选取m个秘密共享点{(keys[1],y1),(keys[2],y2),…,(keys[m],ym)},其中,y坐标的值yi为随机选取,i∈{1,2,…,m},最后根据各秘密共享点和秘密点(xs,s)构造出m次多项式fs(x),并计算第m+1个秘密共享点的y坐标值ym+1=fs(keys[m+1])。
3.根据权利要求2所述的方法,其特征在于,对伪秘密p进行拆分的方法为:令keyp[0]作为伪秘密点的x坐标,伪秘密p作为伪秘密点的y坐标,得到伪秘密点(xp,p),然后选取m+1个伪秘密共享点{(keyp[1],y1),(keyp[2],y2),…,(keyp[m+1],ym+1)},该m+1个伪秘密共享点的y坐标与各秘密共享点的y坐标对应相同或满足设定的映射关系,然后随机选取剩余n-m-1个伪秘密共享点的y坐标,得到{(keyp[m+2],ym+2),(keyp[m+3],ym+3),…,(keyp[n],yn)},最后使用前n个伪秘密共享点及伪秘密点(xp,p)构造n次多项式fp(x),计算出第n+1个伪秘密共享点的y坐标值yn+1=fp(keyp[n+1]);所述密文c=y1||y2…||yn+1,其中,||表示连接符。
4.根据权利要求3所述的方法,其特征在于,解密出秘密s的方法为:构建秘密共享点{(keys[1],c[1]),(keys[2],c[2]),…,(keys[m+1],c[m+1])}并构造m次多项式fs(x),计算得到秘密s=fs(keys[0]);解密出伪秘密p的方法为:构建伪秘密共享点{(keyp[1],c[1]),(keyp[2],c[2]),…,(keyp[n+1],c[n+1])}并构造n次多项式fp(x),计算得到伪秘密p=fp(keyp[0])。
5.根据权利要求1或2或3所述的方法,其特征在于,根据步骤3)的解密结果更新秘密s和伪秘密p;其中,当更新秘密s时,首先重建伪秘密p,根据密钥keys和伪密钥keyp,系统读取每个份额,并根据伪密钥keyp提供的信息恢复重建出伪秘密p,然后根据恢复出的伪秘密p及需要更新的秘密s,计算出新的密文c;当更新伪秘密p时,首先预计算秘密s为0时进行拆分的份额,然后利用二元扩域的异或同态性质,将各份额分别与相应的份额随机异或,然后随机选取剩余n-m-1个伪秘密共享点的y坐标,得到{(keyp[m+2],ym+2),(keyp[m+3],ym+3),…,(keyp[n],yn)},再使用前n个伪秘密共享点及伪秘密点(xp,p)构造n次多项式fp...
【专利技术属性】
技术研发人员:王跃武,马思源,荆继武,王鹏,寇春静,
申请(专利权)人:中国科学院大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。