秘密图像共享

2024-06-15

秘密图像共享(精选7篇)

秘密图像共享 篇1

摘要:秘密共享技术将秘密值进行分布式保存以提高安全性, 在信息安全领域占据着重要的地位, 将其用于数字图像加密可以实现图像的完善保密性。回顾了基本的秘密共享方案, 分析了将其用于图像加密的基本方式, 总结了新兴的视觉密码学的优势。对视觉密码学的各个分支与主要研究内容进行了介绍, 分析了存在的问题和发展方向。分析与实验表明, 视觉密码学在图像加密领域具有比传统秘密共享方案更高的实现效率和更好的安全性, 具有良好的发展前景。

关键词:秘密共享,图像加密,视觉密码方案,存取结构,二值图,灰度图

秘密共享技术在密码学与信息安全领域有着重要的地位, 它将一个秘密值分成若干子秘密由多个参与者进行分布式保存, 只有授权的参与者子集才能恢复出原始的秘密值, 而非授权参与者无法得到秘密值。秘密共享的概念最早由Shamir[1]和Blakley[2]于1979年提出, 他们分别独立给出了两种不同的门限秘密共享方案。一个 (k, n) 门限秘密共享方案指的是将秘密值D分成n份随机子秘密, 只有共享其中至少k份子秘密才能恢复D。Shamir的门限秘密共享方案利用的是多项式理论中的Lagrange插值, 而Blakley则利用几何学中的多维空间性质来实现门限秘密共享。Ito等人研究了一般存取结构上的秘密共享方案与主要构造方法[3—6]。此外还有多重秘密共享方案[7—12]、可验证的秘密共享方案[13—15]等众多研究成果。

秘密共享最初主要用来实现安全的密钥管理, 在数字签名、安全多方计算等领域有着广泛应用[16—18]。随着多媒体处理技术的飞速发展, 数字图像作为重要的数据资源, 其安全问题已经日益成为当前信息安全研究的重要内容。数字图像的加密一般通过矩阵变换和混沌映射来实现[19—25], 但是这两种方案都有着不同程度的缺陷。利用秘密共享技术可以实现安全的数字图像加密, 由此衍生的视觉密码学[26]已经成为当前密码技术的研究热点。本文在回顾秘密共享方案的基础上对其在图像加密领域的应用进行总结, 分析存在的问题并展望未来的发展方向。

1 秘密共享技术

1.1 基本定义

秘密共享技术的基础理论建立在如下定义的存取结构之上。

秘密共享技术主要研究单调存取结构。一个存取结构称为单调的, 是指它满足条件: (3) 若集合B∈ΓQ, 则对于任意的集合, 一定有A∈ΓQ。显然若集合C∈ΓF, 则对任意集合, 有A∈ΓF。

一个秘密共享方案是将秘密信息S分成n份子秘密{s1, s2, …, sn}, 并利用一个存取结构来保存这些子秘密, 即将si分配给参与者pi, 只有授权集合中的参与者子集可以利用其所拥有的子秘密恢复S。

最简单的秘密共享方案是使用如下定义的门限存取结构的秘密共享方案。

定义2门限存取结构一个 (k, n) 门限存取结构指的是对于包含n个参与者的集合V, 其授权集合, 非授权集合。

采用 (k, n) 门限存取结构的秘密共享方案称为 (k, n) 门限秘密共享方案。

1.2 基本门限秘密共享方案

最早的门限秘密共享方案由Shamir与Blakley提出, 其中Shamir的方案应用非常广泛, 具体实现过程如算法1所示。

算法1 Shamir的 (k, n) 门限秘密共享方案

1.2.1 系统建立

选择有限域Fq, 其中q>>n。设参与者集合为P={p1, p2, …, pn}, k为门限值, 秘密信息s∈Fq。公开选择Fq上的n个互不相同的非零元素x1, x2, …, xn。

1.2.2 秘密分享

选择Fq上的k-1次多项式g (x) =a0+a1x+…+ak-1xk-1, 其中a0=s, 其余的ai随机选自Fq。计算si=g (xi) , i=1, 2, …, n, 将 (xi, si) 作为子秘密分发给成员pi。

1.2.3 秘密重构

任意k个成员可以将其持有的子秘密进行共享, 通过Lagrange插值公式恢复秘密信息s。设k个成员为P={pi1, pi2, …, pik}, 他们共享的子秘密为{ (xi1, si1) , (xi2, si2) , …, (xik, sik) }, 则秘密信息

2 秘密共享技术实现图像加密

数字图像的特点是数据量大、结构复杂, 传统的加密技术难以直接应用于图像加密。典型的数字图像加密技术包括基于矩阵变换的图像加密与基于混沌映射的图像加密, 前者的缺陷是密钥空间太小, 难以抵抗穷举攻击;后者的缺陷是算法的安全性过于依赖混沌映射的数学特征。将秘密共享技术引入图像加密领域可以得到安全性更高的算法, 目前已经有了大量的研究成果。

2.1 利用Shamir方案实现图像加密

利用Shamir的门限秘密共享方案实现数字图像加密时, 将图像每一个像素的灰度值看做独立的秘密信息, 利用Lagrange插值多项式即可实现门限秘密共享。但是由于数字图像的数据量太大, 利用这种方案进行秘密图像的分享和重构均需进行大量的计算, 导致算法实现效率极为低下。

Thien等人使用Lagrange插值给出了一种图像秘密共享算法[27], 为了减小处理大量数据带来的时间与空间消耗, 该算法将图像缩小至原始图像的1/t, 同时将灰度值高于250的像素点灰度转化为250以方便处理。Lin给出了一种带有认证功能的图像秘密共享算法[28], 此外还有其它一些成果[29—32]。

此类算法的优势在于直接使用现有的成熟秘密共享方案, 不需要专门针对图像设计新的方案, 算法的安全性可以得到保证, 方案设计能够节省人力物力。但是其缺陷也是明显的:若要保证秘密分享的图像的质量, 将会导致方案的计算消耗和存储消耗过大, 整体实现效率极低;而若要减少时间与空间消耗, 往往又会伴随图像质量下降。

2.2 RG方案

Kafri等人设计了一种适用于图像秘密共享的RG (random grids) 算法[33], 避免了多项式插值或者几何空间点的求解等较复杂的运算, 而是代之以简单的比特运算。Shuyu将RG方案用于彩色图[34], 同时仅利用人类视觉实现解密。RG方案后来被推广至一般的 (n, n) 门限秘密共享以及一般存取结构, 有大量的研究成果[35—42]。

最初的RG算法是一种 (2, 2) 门限秘密共享算法, 但是该算法的思想可以推广至任意的 (n, n) 门限秘密共享算法。下面以n=3为例说明该算法的具体实现过程。

算法2 (3, 3) RG图像秘密共享算法

2.2.1 预处理

设待加密灰度图像为M, 将其转化为一维二进制串M’, 长度为l (M’) , 随机选择2个二进制串R、S, 要求l (R) =l (S) =l (M’) 。

2.2.2 子图像分享

将3个二进制串逐比特异或, 得到T=M’⊕R⊕S, 将R、S、T二维化后作为3个子图像发给3个参与者。

2.2.3 秘密重构

3个参与者将其所持有的子图像共享, 可以重构秘密二进制串M’=R⊕S⊕T, 将M’重新二维化得到秘密图像M。任意2个用户的子图像无法得到秘密图像。

算法2的实验结果如图1所示。

从图1可以看出, 分享的子图像类似于随机的噪声图, 其直方图分布比较均匀。恢复秘密图像时若只有两幅子图像共享, 则恢复出的图像仍然类似于随机噪声图, 而只有三幅子图像进行共享时才能完全恢复出原始的秘密图像。

此类算法的优势在于:计算量少, 不需要进行多项式的插值计算, 比较适用于数据量较大的图像对象。同时从安全性的角度来看, RG算法中缺少任意一份子图像得不到原始图像的任何信息, 可以实现完善保密性。算法的缺陷是目前的方案大都局限于 (n, n) 门限秘密共享方案, 还没有一般的 (k, n) 门限方案。

3 视觉密码学

视觉密码方案 (visual cryptography scheme, VCS) 是Naor和Shamir于1994在欧密会上提出的新型图像加密技术[43]。VCS利用门限秘密共享的思想实现数字图像加密, 但是仅通过人类视觉系统即可进行解密而不需要复杂的算法, 这是一种可以实现完善保密性的图像加密技术。由于计算和存储消耗较小, 视觉密码学得到了广泛研究和应用, 其研究内容和成果不断扩展[44—52]。

VCS的基本思想如下:对于图像较小区域中不同比例的黑白像素, 人眼会将其解释成不同的灰度, 黑像素多则感知趋向于黑色, 反之则趋向于白色。根据这一特性, 将VCS解密后黑像素较多的区域解释成深灰色 (黑色) , 白像素较多的区域解释成浅灰色 (白色) , 从而得到原始图像的近似效果。由于几乎所有的VCS方案都伴随着对比度缺失和像素扩张, 因此研究重点集中在提高对比度和降低像素扩张倍数上。

3.1 二值图的门限VCS

Naor和Shamir最初提出的VCS是一种针对二值图的门限式VCS (称为NS-VCS) 。其中典型的二值图像 (2, 2) VCS方案的加密过程如下:将秘密图像分成两个随机的二值分享图像, 其中像素进行倍数为4的扩张, 扩张结果从多个可能的结果中随机选择;将两个分享图像叠加即可利用人眼恢复近似的秘密图像:若像素同为白色则叠加的结果为白色, 若像素至少有一个是黑色则叠加的结果是黑色。单个像素的完整加解密规则如表1所示。

具体的实验结果如图2所示。

若将上述方案数值化, 1表示黑色, 0表示白色, 表1中的解密规则恰好对应逻辑运算“OR”, 使用这种规则的原因是早期VCS通过透明胶片实现叠加解密, 1表示不透明, 0表示透明。“OR”模型的缺陷是解密出的像素对比度产生缺失, 恢复图像视觉效果并不完美。随着计算机技术的发展, 采用“XOR”模型实现VCS已成为可能[53—56], “XOR”运算可以使解密像素的对比度达到最大, 能够忠实还原原始图像。NS-VCS采用“XOR”模型的解密效果如图3所示。

Naor给出了一般的 (k, k) 和 (k, n) 门限VCS方案, 但这些方案伴随着更大的像素扩张与对比度缺失。因此该方向的研究趋势是降低像素扩张与增大恢复图像的对比度。

3.2 灰度图与彩色图的门限VCS

灰度图像VCS的思想由Naor提出, 但由于其方案需要的像素扩张倍数过大, 并没有引起研究者的兴趣。目前得到广泛关注的灰度图VCS大都基于数字图像半色调技术[57]。半色调技术是利用二值图像近似模拟灰度图的技术, 其基本思想是利用人眼将狭小区域的灰度看成一个整体的特性, 通过打印点的密度来模拟实际的灰度级。图4是一个具有256级的灰度阶及其二值半色调图。

目前常见的半色调技术有:有序颤抖技术、误差扩散方法、点扩散方法和基于细分的算法等。这些算法的基本要求是二值化后的图像灰度总和接近于原图的灰度总和, 同时二值化后的区域灰度总和接近于原图对应区域的灰度总和。

利用半色调技术实现灰度图VCS时, 先利用半色调技术将灰度图转换为二值图, 然后利用NS-VCS对其进行秘密共享[58—60]。一个 (2, 2) 灰度图VCS的实验结果如图5所示。

彩色图像的VCS最早由Hou提出[61], 基本思想是将彩色图看作由红绿蓝 (R, G, B) 三个图层组合而成, 实现彩色图VCS时, 分别对每一个图层进行半色调化, 然后调用NS-VCS方案对其进行秘密共享, 典型的 (2, 2) 彩色图像VCS的实现过程如图6所示。

灰度图与彩色图的VCS目前的主要研究方向仍然集中在研究视觉效果更好的半色调技术, 以及试图寻找不依赖半色调技术的灰度图与彩色图VCS[62—65]。

3.3 一般存取结构的VCS

Ateniese将二值图的门限VCS推广到一般存取结构上的VCS[66]。在一般存取结构VCS中, 秘密图像分成n份分享图像交给n个参与者保存, 只有授权集合中的参与者子集才能恢复秘密图像, 而非授权集合中的参与者子集无法得到秘密图像。

设参与者集合V={1, 2, 3}, 授权集合为ΓQ={{1, 2}, {2, 3}, {1, 2, 3}}, 非授权集合为ΓF={{1, 3}, {1}, {2}, {3}}。则一个像素扩张倍数为2的采用OR模型的二值图一般存取结构VCS实例如图7所示。

一般存取结构上的VCS方案研究进展比较缓慢, 目前除了寻求扩张倍数较小和对比度较大的二值VCS之外, 主要针对灰度图像与彩色图像寻找新的一般存取结构VCS方案[67—69]。

3.4 其他类型的VCS

VCS研究的内容还包括多秘密分享的VCS[70—74]、有意义分享的VCS[75—78]以及认证VCS[79—83]等。根据VCS所加密的秘密图像个数的不同, 可将其分为单秘密分享的VCS (single-secret sharing VCS, SVCS) 和多秘密分享的VCS (multi-secret sharing VCS, MVCS) 。早期的VCS主要都集中在SVCS, 近些年来MVCS的研究也已经日益成为一个热点。两种典型的MVCS模型如图8所示。在存取式MVCS中, 一个授权集合只能恢复一个秘密图像, 不同的秘密图像的授权集合往往不相交;而在操作式MVCS中, 一个授权集合可以恢复多个秘密图像。

有意义分享的VCS指的是分享图像不再是杂乱无章的随机噪声图, 而是有着特定意义和实用性的图像。这种类型的VCS相当于将秘密图像隐藏至多幅合法的图像中, 具有较高的安全性。认证VCS主要用来防止参与者的欺骗行为。VCS最容易遭受的攻击就是图像的恶意欺骗[79], 即攻击者将合法的分享图像替换成精心设计的其它图像, 使得恢复出的秘密图像不再是原始图像。防止欺骗的基本思想是利用多秘密共享的思想, 恢复秘密图像的同时恢复一个认证标识, 当欺骗发生时认证失效, 恢复图像也就无效。

VCS的这些领域目前均处于初步发展阶段, 虽然有了一定的研究成果, 但是理论体系仍然不够完善。未来的研究趋势是将其理论更加严密化, 并与加密、信息隐藏等技术相结合以得到更有效的VCS。

4 结语

秘密共享技术是密码学与信息安全的重要研究内容, 在数字签名、多方安全计算、分布式密码技术等领域有着广泛的应用。随着数字图像的安全需求日益变得重要, 利用秘密共享技术实现图像加密已经成为信息安全研究的热点之一。

本文总结了当前秘密共享技术在图像加密领域的主要应用, 介绍了视觉密码学这一新兴领域的主要分支与研究内容。理论研究和实验结果表明, 视觉密码方案的实现效率远远高于传统秘密共享方案且具有较高的安全性, 具有广阔的理论与应用前景。

秘密图像共享 篇2

图像隐藏是信息隐藏技术的一个分支。其基本原理是利用人们在视觉、系统分辨上的限制,以公开图像信息为载体,将秘密信息隐藏于其中,从而掩盖秘密信息的存在。其目的是在不引起第三方注意的情况下将信息隐蔽地发送出去,隐蔽性和嵌入量是衡量掩密技术优劣的重要指标[1,2]。近几年,由于二值图像的应用越来越广泛,比如文件传真、手写签名、社会安全档案、保险信息、金融文档等,常以二值图像的形式传输[3,4]。如何能更安全更大容量地传输这些保密信息成为迫切需要解决的问题。

目前,针对二值图像已有多种信息隐藏方法,其中,在基于图像空域的信息隐藏技术中,最经典的算法是最不重要位(LSB)替换信息隐藏算法[5],为了达到隐藏秘密信息的目的,需要调整替换掩护图像像素值的最低1~3位有效位来实现。但只是通过简单的替换对掩护图像像素值进行修改的经典LSB方法,不但隐藏信息量少,而且无法保证通信的安全,这就要求有更大隐藏信息量和更高安全性的信息隐藏算法。其中比较有代表性的算法是文献[6]中提出的基于游程编码的LSB隐藏方案。该方法虽然利用游程编码增加了所要隐藏的数据量,并且采用单密钥控制信息的嵌入使安全性得到了一定的提高,但毕竟游程编码不能得到很高的压缩比,故使得隐藏信息量太少,并且单密钥的安全性不是很高。

针对上述方案的缺点,提出了一个新的二值图像隐藏方案,它基于多重秘密共享思想[7,8],并利用变长游程编码压缩方法将秘密图像分成奇偶块隐藏于多幅载体图像中,提高了方案的秘密信息隐藏量和安全性。本方案的特点如下:(1)根据所隐藏图像相对载体图像的大小生成2n-1(n≥2)个秘密信息块,每一信息块都是秘密图像的“0”游程长度统计和“1”游程长度统计,增加了隐藏秘密信息的容量;(2)用n个密钥来控制秘密信息块的嵌入,改变了传统的单人加密/解密、签名和认证模式,能够分散责任,防止权威欺骗,提高了系统的安全性,对重要信息的安全保存、传输及合法利用具有重要的意义[1]。

1基于游程编码的二值图像隐藏方案[6]

该方案的基本思想是先对输入的秘密图像进行游程编码压缩,并保存图像初始像素值a、串编码长度b_numc_num以及编码后的消息长度,再使用一个安全的随机数生成器,利用密钥KEY生成压缩后信息嵌入的位置,然后按照LSB替换进行随机嵌入。这样发送方就完成了二值图像的嵌入。接收方提取时,根据密钥KEY和消息长度从含密载体图像中提取隐藏的秘密数据,再根据串编码长度b_numc_num就可以恢复原来的二值序列,重构得到隐藏的二值图像。此算法有以下两个弊端:(1)毕竟游程编码不能得到很高的压缩比,故使得隐藏信息量太少;(2)单密钥控制秘密信息的LSB随机嵌入,安全性较低。

2本文的方案

提出了一个基于LSB和多重秘密共享的二值图像隐藏方案,该方案根据载体图像的最大信息隐藏量把秘密图像的游程长度序列按照奇偶分块分成n块,并在n个密钥的控制下分别隐藏在n幅载体图像中。这样既增加了隐藏秘密信息的容量又克服了单钥控制秘密信息嵌入的缺陷。

2.1游程长度序列奇偶分块处理

游程编码序列的存储结构如表1,游程序列奇偶分块实现流程如图1所示。这里所谓的奇偶分块就是把一个序列的元素按照所处的奇偶位置分成奇数块序列和偶数块序列,得到的新的序列仍然以表1的方式进行存储。

如表1所示结构中,b(i)表示位于奇数位置上的游程长度,c(i)表示位于偶数位置上的游程长度,由于二值图像的“0”行程和“1”行程总是交替出现的,所以不用浪费存储空间存储初始游程的值,可以很方便地通过查看二值图像的矩阵得到初始游程。

图1中条件M也就是floor(m×n/count)>1,其中m×n为每一个载体图像大小,count是所嵌入的信息量,floor是下取整函数。所谓的奇偶分块函数就是把一个游程序列的元素按照所处的奇偶位置分成奇数块序列和偶数块序列,得到的新的序列仍然以表1的方式进行存储。分块处理实现步骤如下:

1) 对秘密二值图像进行游程编码,在对二值图像进行行扫描后,将二值序列变换成一一对应的游程长度序列N;

2) 调用已编写好的奇偶分块函数把N序列分成两个序列N1和N2,按表1进行存储,根据N1和N2各自的最大值来确定编码的最小bitn1_numn2_num,并计算出编码后各自的信息量count1和count2;

3) 把count1和count2分别代入floor(m×n/count)看是否大于1,如果大于1则停止分块并保存n1_numn2_numcount1和count2的值,这时n=2。否则就以N1和N2为初始游程序列重复上述第二个步骤,如此循环下去便可以得到最终的分块结果。

2.2算法实现

下面利用2.1节提出的奇偶分块方法,对二值图像进行游程长度序列奇偶分块处理后再进行LSB信息隐藏。算法的原理框图如图2所示。

其算法步骤如下:

1) 奇偶分块处理

对二值图像进行分块处理,根据奇偶分块算法将其分成n块,并保存每一块二进制编码后的秘密信息长度n1_length,n2_length2,…,nn_length和串编码长度n1_num,n2_num,…,nn_num

2) 将得到的n块秘密信息分别嵌入到n幅载体图像中

(1) 使用n个安全的随机数生成器,利用n个密钥生成压缩后信息嵌入的位置[row(i),col(i)]1,…,[row(i),col(i)]n;

(2) 按照LSB替换将n块秘密信息分别嵌入到n幅载体图像中。

3) 把n幅载密图像组合起来恢复出秘密二值图像

(1) 分别从两幅图像中提取出所隐藏的秘密信息块;

(2) 根据奇偶分块的逆运算将秘密信息块组合成一个新的序列new_msg;

(3) 解码时只要根据连续数据串的编码长度n1_num,n2_num,...,nn_num和秘密信息长度n1_length,n2_length2,...,nn_length以及初始像素值a就可以恢复出原来的二值图像。

其编程实现如下:

3仿真实验与讨论

3.1本文方案算法仿真

为了验证2.2节提出的基于LSB和多重秘密共享的二值图像隐藏算法,秘密二值图像为图2所示的原始二值图像logo.tif,对该算法进行测试。利用本方案得到的实验结果如图3、图4和图5所示。

在MATLAB 7.0的编程环境下,处理器为1.73GHz,内存为504MB的笔记本电脑一台,用大小为256×256像素的8 bit灰度图像cameraman.tif和大小为240×291像素的8 bit灰度图像pout.tif作为载体图像,图3和图4表明,通过肉眼看不出隐藏秘密信息前后两幅图像之间的差别,也就是说其算法的不可感知性即隐蔽性是相当出色的;由图3可知本算法可以成功地提取出秘密二值图像。

3.2两方案峰值信噪比的对比

图6是从搜狐网站下载的3幅二值图像,图像原始数据流总位数均为27200位,表2是本方案与基于游程编码二值图像隐藏方案的峰值信噪比的对比。

表2中基于游程编码方案的psnr,是通过仿真基于游程编码的二值图像隐藏方案的matlab程序,并调用峰值信噪比函数psnr.m得到的;而本方案的psnr,是通过调用峰值信噪比函数psnr.m分别计算嵌入奇数块信息的载体图像的psnr和嵌入偶数快信息的载体图像的psnr得到的。由表2可知,本算法与基于游程编码的二值图像隐藏算法相比,其峰值信噪比有了显著的提高。除此之外,本算法还有以下优点:(1)在相同的压缩率下能实现更大的信息隐藏量和更少的改变载体图像;(2)由于多密钥的控制,安全性较高。

实验中如果采用彩色图像作为载体图像,也可以得到较理想的峰值信噪比,但为了在相同的条件下跟基于游程编码的二值图像隐藏方案作对比,便选择了灰度图像来隐藏秘密二值图像。

4结语

本文提出了一种多重秘密共享的二值图像隐藏方案,巧妙的把游程编码与多重秘密共享思想结合起来,把对秘密二值图像的处理转换成对游程编码序列长度的处理,游程编码序列长度奇偶分块算法简便易行,而且提高了峰值信噪比。同时,在信息嵌入时,嵌入位置是通过密钥控制的,将安全性寓于密钥之中,因此可以将信息隐藏算法公开,符合Kerckhoffs原则。实验证明此方法的信息隐藏量大,计算量小,载密图像无明显失真。

摘要:提出一种新的二值图像隐藏方案,将一幅秘密二值图像隐藏在多幅公开载体图像中,实现对秘密二值图像的保护。针对二值图像取值形式为二值的特点,该方案第一次把变长游程编码算法、多重秘密共享思想和LSB算法糅合在一起,并根据载体图像的最大隐藏信息量把秘密图像的游程长度序列分成n块,由n个密钥控制分别隐藏在n幅公开载体图像中。实验表明,该算法在不明显引入修改痕迹的情况下,可显著提高峰值信噪比和安全性,且算法简单易行。

关键词:多重秘密共享,二值图像,LSB算法,图像隐藏

参考文献

[1]hang Jun.Method of optimizing the data hiding technique for binaryimsges using genetical gorithm[J].Computer Engineering,2006,32(9):38240.

[2]Zhong Hua,Zhang Xiaohua,Jiao Licheng.Digital watermarking and im-age authentication:algorithm and applications[M].Xi’an:Xidian Uni-versity Press,2006.

[3]钱振兴,程义民,谢春辉,等.基于嵌入矩阵的二值图像隐藏方法[J].电路与系统学报,2008,13(6):128-131.

[4]谢建全,阳春华,谢勍,等.一种大容量的二值图像信息隐藏算法[J].小型微型计算机系统,2008,29(10):1874-1877.

[5]王国新,平西建,张涛,等.空域LSB信息伪装及其隐写分析[J].计算机工程,2008,34(1):173-174,189.

[6]杨全周,蔡晓霞,陈红.一种基于游程编码的二值图像隐藏方案[J].舰船电子对抗,2008,31(2):86-88.

[7]侯整风,高汉军.一个新的基于多重秘密共享的图像隐藏方案[J].计算机应用,2008,28(4):902-905.

一种公平的理性秘密共享方案 篇3

1979年Shamir[1]和Blakely[2]分别独立提出了(t,n)门限秘密共享方案,即将秘密分成n份秘密份额,分发给n个成员,任意t个成员合作可以恢复秘密信息,而少于t个无法恢复。但方案在秘密份额交互过程中,存在参与者欺骗问题。Fledman[3]提出了无可信中心的非交互式可验证秘密共享方案,能识别成员的欺骗行为。随后Pedersen[4]提出了无条件安全的非交互式可验证秘密共享方案,该方案有更高的安全性和效率。

文献[3,4]的方案能检测欺骗行为,而不能阻止欺骗。因为在秘密份额交互过程中,不诚实成员提供了假的秘密份额,而其他成员提供了真实的秘密份额,其结果是不诚实成员可以恢复秘密,而其他成员不能恢复,这是不公平的。2004年,Halpern等[5]提出了理性秘密共享的概念以实现公平秘密共享,该方案使用了一种随机化的秘密分享机制。Maleka[6]提出基于重复博弈的理性秘密共享方案。Micali[7]使用可验证的可信通道提供了一个纯粹的理性秘密共享方案,表明了要想达到平衡不仅要理性而且要有信念;William[8]等通过异步信道实现了理性秘密共享。CAI[9]使用不完全动态博弈实现一个相对公平的理性秘密共享。

文献[5]指出在理性秘密共享方案中,如果秘密重构是一个一次性的过程,那么没有成员愿意公开自己的秘密份额,因为欺骗可以获得更多的利益。为了解决这一问题,可以将秘密重构过程执行多次,并引入惩罚策略阻止欺骗行为。但上述理性秘密共享方案采取的惩罚策略是:如果别人遵守协议,自己也遵守;如果有人欺骗,则终止协议。该策略过于严厉,将终止协议作为对欺骗者的惩罚,但同时也使得诚实成员不能恢复秘密,这对诚实的成员是不公平的。Zhang[10]构造了带有在线分发者的(2,2)门限方案。该方案中欺骗者会在惩罚的过程中失去得到秘密的机会,一定程度上保证诚实成员的利益。但这个协议中存在在线分发者,且只有2个参与者,缺乏普适性。

本文提出一种理性秘密共享方案,基于重复博弈的方法交换秘密份额。能够识别成员交互中的欺骗行为,并能有效阻止欺骗,保证交互的公平性。采取相对宽容的惩罚策略,欺骗不会引起协议的终止,从而在对欺骗者实施惩罚的同时,不损伤其他成员的利益,具有更好的鲁棒性和公平性。

1 准备知识

1.1 理性秘密共享机制

理性秘密共享是指每位成员都是理性的,成员在秘密共享过程中会尽可能最大化自己的利益,即只有在得到更多效用时才遵守协议。理性成员在秘密共享中所追求的效用包括两个方面:(1)成员希望得到最终秘密。(2)在自己得到秘密S的基础上,其他获得秘密的成员越少越好。

Pi表示成员(i=1,2,…,n),本文将成员效用定义为W1,W2,W3,W4,且W1>W2>W3>W4。

W1:Pi得到秘密,但存在Pj(j≠i),Pj没有得到秘密。

W2:Pi和Pj都得到秘密,其中,j≠i,即Pj为除Pi外的任意成员。

W3:Pi和Pj都没有得到秘密,其中,j≠i,即Pj为除Pi外的任意成员。

W4:Pi没有得到秘密,但存在Pj(j≠i),Pj得到秘密。

理性成员在秘密交互过程中会尽可能选择更大的效用。

1.2 重复博弈

重复博弈是指同样的博弈重复多次,其中的每次博弈被称为“阶段博弈”。记为:(Γ1,Γ2,…,ΓT),其中,T表示博弈的轮次,T可以是无限值(无限重复博弈),也可以是有限值(有限重复博弈)。H为博弈的历史,用来记录每一阶段博弈成员所采取的行动。博弈是重复进行的,历史H可以被观察到,因此成员就可以将自己的选择取决于之前博弈的历史。

在重复博弈中,为了约束成员的行为,引入了惩罚机制:在反复执行的博弈过程中,若在某一轮中有欺骗行为发生,博弈机制会对欺骗者进行惩罚。现有的惩罚机制大多为严峻惩罚机制,即如果在博弈中出现欺骗行为,立刻终止博弈,所有成员都不能参与后续的博弈,也就不能得到后续的收益。

2 本文方案

本文的方案采用重复博弈的方法实现理性秘密共享,同时采用相对宽容的惩罚机制。能给欺骗者一个改过的机会,同时也不会因为终止协议使得诚实成员不能恢复秘密。相比之前的严峻惩罚机制,该机制更加公平。

2.1 初始化

设{P1,P2,…,Pn}是n个成员的集合,D是秘密分发者,NB为公告牌。秘密分发者D随机选取两个大素数p和q,计算N=p×q和Φ(N)=(p-1)(q-1)。选择公钥和私钥对(e,d),满足ed=1modΦ(N)。选取单向函数H(x),在公告牌上公布系统信息(N,e,H(x)),并将d保密。

2.2 子秘密分发

秘密分发者使用拉格朗日多项式生成子秘密,并对子秘密进行签名,分发给成员。

(1)分发者D构造t-1阶多项式:F(x)=a0+a1x+…+at-1xt-1modq,其中F(0)=S。

(2)D为每位成员计算秘密份额Si=F(i),i=1,2,…n,n为成员的个数。

(3)D为秘密份额Si随机生成Di阶多项式fi(x):

fi(x)=b0+b1x+…+bDixDimodq,i=1,2,…,n,fi(0)=Si。且|Di-Dj|≤1,i≠j,即任意两个多项式的阶数相差不大于1。

(4)将每一份Si分割成子秘密:Sik=fi(k),i=1,2,…,n,k=1,2,…,di,di=Di+1,同时设置验证向量(Wi1,Wi2,…,Widi),Wik=H(Sik)dmod N,k=1,2,…,di。

(5)D将子秘密{(Si1,Wi1),(Si2,Wi2),…,(Sik,Wik)}告知成员Pi。

2.3 秘密交互

秘密交互过程重复执行不确定轮。令li表示对成员Pi需要惩罚的轮次,初始值为0。当li=0时,表示成员Pi是可信的。当li>0时,表示成员Pi是不可信的。

在秘密交互阶段,成员按li由大到小的顺序广播自己的子秘密(li相等的成员同时广播),若Pi的子秘密通过验证,且li>0,则令li=li-1;若没有通过验证,则令li=li+1。

交互过程步骤如下:

(1)第一轮,所有成员同步地广播自己的第一个子秘密,并验证收到的子秘密是否真实。

Pi广播(Si1,Wi1),其余成员计算等式H(Si1)=(Wi1)ebmod N验证Pi广播的信息是否为真。若为真,则进入下一轮;否则,令li=li+1,并让Pi重新广播子秘密。Pi同样地验证其他成员广播的子秘密。

(2)第二轮:成员按li决定的顺序广播自己的子秘密。Pi广播(Si2,Wi2),其余成员验证Pi广播的子秘密是否为真。若Pi通过验证,且li>0,则令li=li-1,li=0说明该成员是诚实的,不需要再对其减一,即li最小值为0;若没有通过验证,则令li=li+1。Pi同样地验证其他成员广播的子秘密。

(3)此后的交互过程与上述步骤类似,不再叙述。

2.4 秘密恢复

重构秘密S,至少需要t个成员。我们选取t个成员P1,P2,…,Pt。

(1)经过若干轮交互之后,成员Pi获得成员Pj的子秘密{Sj1,Sj2,…,Sjdj}。利用拉格朗日多项式构造出Dj次多项式fj(x),从而计算出Pj的秘密份额Sj=fj(0)。同理,Pi可以计算出其他成员的秘密份额。

(2)使用秘密份额构造拉格朗日多项式F(x),恢复秘密S。

3 方案分析

3.1 方案公平性分析

定理1合作总是比欺骗获得更多效益

证明:证明之前先申明一个变量:贴现因子δ。贴现因子指成员参与博弈的耐心程度,也可理解为成员对未来收益的期望程度。δ∈(0,1),δ越大,表明成员越希望得到后续的收益,遵守协议的可能性就越大。

在重复博弈的每一轮,成员有两种策略可选择:广播子秘密和不广播子秘密,分别记为A和B。

(1)在重复博弈中,如果成员一直选择选择广播子秘密,即(A,A,…)。由前文可知,ui(A)=w2,成员总的收益为

(2)如果成员在第r轮欺骗,那么从交互开始直至第r-1轮成员的收益都是w2,第r轮收益为w1,从第r+1轮往后收益会是w4。

由理性秘密共享机制中成员的效用定义可知,理性成员都希望得到最终秘密,所以δ趋近于1。可得:

在重复博弈中,理性成员遵守协议的收益大于中途欺骗得到的收益。所以,理性成员在交互过程中会交互子秘密。

由证明可知,在子秘密交互过程中,成员为了获得对方全部的子秘密,必须在每一轮广播自己的子秘密。因为一旦在某一轮选择欺骗,接下来若干轮都要率先广播子秘密。这样,诚实成员能得到秘密,而欺骗者可能无法恢复出秘密。所以为了长远利益,每个成员在交互中都会如实地广播子秘密。

方案能解决最后一轮欺骗问题:

在Pi和Pj交互子秘密的过程中,Pi和Pj分别拥有di=Di+1和dj=Dj+1个子秘密。由于|Di-Dj|≤1,因此任意两个成员的子秘密数量差不超过1。

设r=min(di,dj)。在第r轮之前Pi和Pj没有得到对方完整的秘密份额,都会参与交互。在第r轮时会出现两种情况:

(1)成员Pi和Pj的子秘密个数相等,即r=di=dj。在最后一轮(即第r轮),双方都不确定对方是否有第r+1个子秘密,为了得到完整的秘密份额,双方都会广播自己的第r个真实的子秘密。因此,Pi和Pj都得到对方完整的秘密份额。

(2)成员Pi与Pj的子秘密个数相差1,设di=dj-1。在第r轮,Pi广播子秘密Sir,期望下一轮能从Pj那得到Sj(r+1)。同样Pj广播Sjr,并且期望Pi的第r+1个子秘密。在第r+1轮(即最后一轮),Pi的子秘密已经广播完毕,但此时Pj不知道Pi的子秘密已经广播完毕,期望得到Pi的第r+2个子秘密,因此Pj会广播他的第r+1个子秘密Sj(r+1)。最终,双方都能够得到对方完整的秘密份额。

因为每位成员的子秘密长度是由分发者随机决定的,而且成员的子秘密长度并非完全相同,所有成员无法预测交互会在哪一轮结束。

如果成员Pi的子秘密不是最长的。Pi在自己的最后一轮进行欺骗时会被发现。从而Pi要接受惩罚,在下一轮率先发送子秘密。而此时Pi已经没有子秘密了,因此他无法获得其他成员最后的子秘密,也就不能恢复秘密。所以,若是Pi在最后一轮遵守协议,他的效用可以达到W2;若是Pi最后一轮不遵守协议,他的效用是W4,显然遵守协议的收益更高,理性成员会选择遵守协议。

如果Pi拥有较长的子秘密。由于成员的子秘密长度是随机决定的,他并不知道自己的子秘密比别人长,因此Pi不能确定何时为最后一轮。如果欺骗将会有很大风险受到惩罚,从而不能恢复秘密,效用为W4,而遵守协议可以保证得到W2的效用。因此Pi不敢在最后一轮进行欺骗,这是理性成员根据效用的理性选择。

由上述可知,每位成员剩余最后一个子秘密的时候,仍然会遵守协议,所以方案能解决最后一轮欺骗的问题。

3.2 方案能检测并阻止秘密共享中的欺骗行为

(1)在本文的方案中,成员的子秘密都是经过签名的。交互时,只需使用公钥验证签名就可检测子秘密的真伪。成员Pi收到(Sjk,Wjk),对Wjk解密,同时计算H(Sjk)。

证明:在子秘密生成阶段,秘密分发者D计算Wik=H(Sik)dmod N并发送给成员Pi,d为私钥。

交互时,成员收到(Sik,Wik),用公钥e解密(Wik)emod N=H(Sik),即可验证收到子秘密的真实性。

一旦检测出成员有欺骗行为,便对欺骗者实施惩罚。对每个成员来说,一旦欺骗就要率先广播子秘密,可能无法恢复秘密。因此,理性成员不会选择欺骗。

(2)(t-1)个或者更少的成员试图恢复出共享秘密是不可能的。

本方案是一个(t,n)门限方案。由秘密分发阶段多项式的构造可以看出,n个成员中t个或多于t个人合作可以恢复出秘密;少于t个人合作则恢复不出秘密。

4 结语

本文从重复博弈的角度处理理性秘密共享方案,理性成员合作会比欺骗收益更大,从而可以达到阻止成员欺骗的目的。同时相应的惩罚策略不仅能更好的维护诚实成员的利益,也给了不诚实成员一次机会,较之前的方案更加合理化。对子秘密的签名验证能有效防止成员交互时的欺骗,提高方案安全性。

参考文献

[1]Shamir A.How to share a secret[J].Communications of the ACM,1979,22(11):612-613.

[2]Blakley G R.Safeguarding Cryptographic Keys[C]//Proc.of AFIPS National Computer Conference.New York,USA:AFIPS Press,1979.

[3]Fekdman P.A practical scheme for non-interactive verifiable secret sharing[C]//Proceedings of 28 IEEE symposium on Foundations of Computer Science,1987:427-437.

[4]Pedersen T P.Non-interactive and information-theoretic secure verifiable secret sharing[C]//Advances in Cryptology-CRYPTO’91,1991:129-139.

[5]Halpern J,Teague V.Rational secret sharing and multiparty computation:extended abstract[C]//Proc.36th ACM symposium on Theory of Computing(STOC).New York,USA:ACM Press,2004.

[6]Maleka S,Shareef A,Pandu R.Rational secret sharing with repeated games[J].Journal of Information Security Practice and Experience Conference 2008,LNCS 4991,2008:334-346.

[7]Micali S,Shelat A.Purely rational secret sharing(extended abstract)[C]//In 6th Theory of Cryptography Conference,TCC 2009,Volume5444 of LNCS,2009:54-71.

[8]William K,Moses Jr,C Pandu Rangan.Rational secret sharing with honest players over an asynchronous channel.Advances in Network Security and Applications[J].Communications in Computer and Information Science,2011,196:414-426.

[9]Cai Yongquan,Peng Xiayu.Rational Secret Sharing Protocol with Fairness[J].Chinese Journal of Electronics,2012,21(1):149-152.

对一个理性秘密共享方案的改进 篇4

最近, 人们对理性秘密共享进行了研究, 理性秘密共享中假设参与者都是理性的人, 这些人在秘密恢复中的操作都是为了使自己的利益最大化, 即要自己获取最多的信息, 其他参与者获取最少的信息, 对此, 人们提出利用博弈论中囚徒的困境和纳什均衡理论来保证理性参与者按照方案进行操作。Maleka S和Amjed Shareef于2008年提出了一个理性秘密共享方案, 我们对此方案进行了分析, 发现该方案中有不足的地方, 并对此进行了改进。

1 Maleka S和Amjed Shareef的方案介绍

两个参与者的理性秘密共享方案:

1.1 初始化阶段:

(1) dealer (以后简称为P) 为主密钥S随机构造一个一次多项式F (x) , 使得F (0) =S, 并利用多项式F (x) 计算子密钥{S1, S2}。

(2) 为子密钥S1构造D1次多项式f1;为子密钥S2构造D2次多项式f2, 并且|D1-D2|≤1。

(3) 利用多项式f1为S1计算影子密钥组{S11, S12, ……, S1d1}, 其中d1=D1+1, 发送给参与者A, 利用多项式f2为S2计算影子密钥组{S21, S22, ……, S2d2}, 其中d2=D2+1, 发送给参与者B, 并且|d1-d2|≤1。

1.2 密钥交换阶段:

(1) 第一轮:A将他的影子密钥S11发送给B, B将他的影子密钥S21发送给A。

(2) 第r轮:假如参与者A在第r-1轮收到S2 (r-1) , 则A在第r轮发送S1r给B。

同理, 假如B在第r-1轮收到S1 (r-1) , 则B在第r轮发送S2r给A。

A在第r-1轮未收到S2 (r-1) , 则A在第r轮不发送S1r给B。

同理, 假如B在第r-1轮未收到S1 (r-1) , 则B在第r轮不发送S2r给A。

1.3 秘密恢复阶段:

影子密钥交换之后, A得到B的影子密钥组{S21, S22, ……, S2d2}后就可以恢复出密钥S2, B得到A的影子密钥组{S11, S12, ……, S1d1}后就可以恢复出密钥S1。A和B分别可以利用S1和S2可以计算得出主密钥S。

n个参与者的理性秘密共享方案:

1.3.1 初始化阶段:

(1) 秘密分发者为主密钥S构造一个m-1次多项式, 利用该多项式为S计算子密钥{S1, S2, ……, Sn}。

(2) 为子密钥Si (i=1, 2, ……, n) 分别构造一个Di次多项式fi, 并且任意两个多项式fi, fj的次数为Di, Dj, 并且D1-D2≤1。

(3) 利用fi为子密钥Si计算影子密钥组{Si1, Si2, ……, Sidi}, 并且di=Di+1, 且任意的i≠j, |d1-d2|≤1。

1.3.2 秘密分发阶段:秘密分发者秘密的将{Si1, Si2, ……, Sidi}发送给参与者Pi。

1.3.3 秘密恢复阶段:

现有m位参与者参与恢复密钥, 每位参与者执行下面的操作:

在第一轮, 每个参与者Pi将他的影子密钥Si1发送给其他m-1位参与者。

(1) 在第r轮, 假如参与者Pi在第r-1轮收到其他参与者发送的影子密钥, Pi才会选择在第m-1轮向其他位参与者发送自己的密钥Sir。

(2) 密钥交换之后, 每一位参与者得到其他m-1位参与者的影子密钥, 利用这些影子密钥就可以恢复出其他m-1位参与者的子密钥, 结合自己的子密钥, 利用拉格朗日插值公式就可以恢复出主密钥S。

2 对上述方案的分析

2.1 上述方案有两点不足:

2.1.1秘密恢复阶段, 参与者交换影子密钥时, 不能验证对方出示的影子密钥是否为真.

2.1.2按照上述方案, 如果参与者进行欺骗, 最后一轮选择不发送信息, 那么欺骗者能够以的概率欺骗成功。例如:如果P1的影子密钥为{S11, S12, S13, S14}, 那么P1能够知道P2的影子密钥的个数可以是3, 4或5个。

(1) 若P2的影子密钥个数是3个, 即 (S21, S22, S23) , 现在P1要进行欺骗, 前三轮双方互发信息, 但第四轮P1不发S14, 这样P1得到P2的全部信息, P2未得到P1的全部信息, P1欺骗成功。

(2) 如果P2影子密钥个数是4个, 即{S21, S22, S23, S24}, P1要进行欺骗, 前3轮双方互发信息, 第四轮P1不发, P1得到S24, P2得不到S14这样P1得到P2的全部信息, 能恢复出秘密S, 而P2未得到P1全部信息, 不能得到秘密S, P1欺骗成功。

(3) 如果P2影子密钥个数是5个, 即 (S21, S22, S23, S24, S25) , P1的影子秘密为 (S11, S12, S13, S14) , 如果P1要进行欺骗, 前3轮双方互发信息, 第四轮P1不发S14, 这次P1就不会成功, 因为P2接收不到S14, P2不会发送S25, P1和P2都得不到双方全部信息, 则都不能恢复出秘密.同理可说明, P2也可进行欺骗。

综上所述, 任意一个参与者P1或P2要进行欺骗, 则其成功的概率是所以理性的参与者会选择欺骗。

2.2 对上述两点不足的改进:

由于利用单向函数、离散对数或设置等式的方法, 参与者之间可以确定对方影子密钥的个数, 所以都会泄露方案的信息。如何确定影子密钥的个数?例如, P1的影子密钥为 (S11, S12, S13, S14) , 若要利用单向函数或离散对数进行验证保证影子密钥的正确, 则需要对 (S11, S12, S13, S14) 计算验证向量 (S'11, S'12, S'13, S'14) , 其中H (S1i) =S'1i, 并公布 (S'11, S'12, S'13, S'14) , 由于影子密钥和验证向量是一一对应的, 所以公布验证向量就等价于公布了影子密钥的个数, 当对方知道对手的影子密钥数后, 一定会采取欺骗的方案, 是自己获得全部信息, 对手只获得部分信息。

我们可以通过如下方法对上述方案进行改进:

当参与者人数为n=2时:

初始化阶段:

(1) D选取两个大素数p, q, 计算N=p·q计算φ (N) = ( (p-1) (q-1) ) 。

(2) 选取一个小整数e, 利用欧几里得算法计算d, 使得ed=1modφ (N) , 公开小整数e。

(3) 选择一个无碰撞单向函数H (x) , 并公开单向函数H (x) , 为A的影子密钥组{S11, S12, ……, S1d1}设置验证向量:W1i=H (S1i) dmod N, 即 (W11, W12, ……, W1d1) ;同理为参与者B的影子密钥{S21, S22, ……, S2d2}设置验证向量{W21, W22, ……, W2d2}。

(4) 秘密分发者D将 (S11, W11) , (S12, W12) , ……, (S1d1, W1d1) 成对的发给参与者A, 同理将 (S21, W21) , (S22, W22) , ……, (S2d2, W2d2) 成对的发送给B。

密钥交换阶段:

第一轮, 参与者A发送 (S11, W11) 给B, 同时B发送 (S21, W21) 给A。

第二轮, 如果参与者A和B在第r-1轮都收到对方发送的影子密钥, 则参与者在第r轮发送自己的影子密钥, 参与者可以利用等式:Wie=H (Si) mod N验证对方出示的影子密钥是否为真, 若等式不成立, 说明参与者欺骗。

这种捆绑式验证方法最大的优点就是不会泄露影子密钥的个数。密钥个数欺骗问题的解决:

对于个数欺骗问题, 我们通过改进方案, 使得欺骗者不能欺骗成功, 并且我们采取惩罚策略, 如果欺骗者的欺骗行为被发现, 则方案终止, 欺骗者将再也得不到其他参与者的任何信息, 根据利益最大化原则, 欺骗者为了自己利益, 将采取进行诚实的操作。我们对方案的验证部分做进行如下改进:

上述方案之所以能够以的概率欺骗成功, 关键是欺骗者可以通过自己的子密钥个数推断对方的子密钥个数, 进而进行欺骗.我们可以对方案进行改进为影子密钥个数设置验证数, 以n=2时为例:

A的影子密钥个数为d1, 子密钥为S1, D计算d1s1=G1, d1's1=G1'公布G1和d1', G1';

B的影子密钥个数为d2, 子密钥为S2, D计算d2s2=G2, d2's2=G2'公布G2、d2', G2'。

如果A欺骗, 则B可通过等式d1's1=G1'验证自己恢复出的秘密是否正确, 如果A欺骗, 等式d1's1=G1'一定不成立, 所以可以知道参与者A欺骗。如果验证阶段通过, 则证明欺骗者少发了影子密钥。方案这样改进并不会泄露密钥的任何信息, 参与者不能通过等式d1's1=G1求解S1, 因为求S1是解离散对数问题, 这是困难的。综上, 所以理性参与者在知道欺骗不会成功情况下, 就不会选择欺骗。

参考文献

[1]Shmair A.How to share a Secret.Communica-tions of the ACM, 1979, 22 (11) :612-613.

[2]Halpern.J and Teague.V.Rational secret shar-ing and multiparty computatione:xtended ab-stract[J].In 36t ACMSymposium on Theory ofComputing (STOC) , 2004:623-632.

[3]Abraham.I, Dolev.D, Gonen.Ra, nd Halpern.J.Distributed computing meets game theory:Robust mechanisms for rational secret sharingand multiparty computation[J].In 25th ACMPODC, 2006:53-62.

[4]Gordons.D, KATZ J.Rational secret sharing, revisited[C].Proc of Security and Cryp tographyfor Networks Conference.Berlin:Sp ringer, 2006:229-241.

[5]Lysyanskaya.A and Triandopoulos.N.Rational-ity and adversarial behaviour in multi-partycomputation (extended abstract) [J].In CRYPTO, volume 4117 of Lecture Notes in ComputerScience, 2006:180-197.

[6]Maleka S and Amjed Shareef.The Determin-istic Protocol for Rational Secret Sharing[J].IEEE, 2008.

[7]刘焕平, 杨义先, 杨放春.基于单向函数的多级密钥共享方案[J].电子科学学刊, 1999, 21 (4) :561-564.

秘密图像共享 篇5

SIP(Session Initiation Protocol,SIP)会话初始化协议是软交换系统中的重要协议。由于软交换中多媒体业务的会话应用需求,SIP协议制定的主要目的是如何动态、便捷地为会话参与者提供强大的、新型的服务功能,但是对于其安全性方面关注较少。SIP中关于身份认证的安全机制有以下几种:HTTP摘要认证机制、S/MIME加密认证机制、PGP认证机制等。

1 (2,2)秘密共享方案

(2,2)秘密共享的思想是将秘密信息以适当的方式拆分成两个分享。从单个的分享中,攻击者无法获得秘密信息的任何信息,只有同时拥有两个分享才能恢复出秘密信息。

文中需要分享的秘密信息是会话参与者的身份ID,ID为一个32bit的字符串标识。

具体设计原理如下。

ID用一个4×8的数组表示。针对数组中的每bit元素,随机选择3种分享方案扩展成2×2的数组,随后将每bit生成的数组1和2分别串联成8×16的数组,即分享1和分享2。这样生成的分享就拥有了足够的随机性,无法通过单个分享恢复秘密信息。

解密过程是将分享1和2中的数组元素做或运算。当或运算后生成的2×2数组的元素均为1时,解密为1,否则为0。

随机生成的分享可以有效的保密ID的信息,当分享少于两个时,无法根据单独的分享解密出ID。

即使攻击者知道加密和解密的方案,由于分享方案的随机选择,只要攻击者没有获得生成的两个分享,也无法解密出秘密信息。

本文设计的身份认证系统中对身份信息的确认是依靠KDC发送给用户的证书来认证的。此证书就是用用户的公钥加密的分享。

2 基于(2,2)秘密共享的SIP终端身份认证方案

根据对传统的SIP身份认证方式的分析,本文通过扩展SIP的相关认证算法,结合秘密共享的加密方式,借鉴HTTP的认证思想,设计了一种新的SIP身份认证措施。该措施不仅实现了通信双方的身份认证,也使得秘密信息可以保密传递,并且做到一次一密。

身份认证,对于一个通信网络中的每个SIP实体都很必要。SIP采用类似HTTP的协议风格,实体间的通信方式都是用Client/Sever的共组模式。因此,本文所述改进的安全认证方案也可用于所有SIP实体间的安全通信。如UAC与Proxy Server之间,Proxy Server与UAS之间,Proxy Server与Redirect Server之间等等。

在本方案中,身份认证所选取的加密算法是(2,2)秘密共享加密方案。系统在初始化阶段需要一个密钥分发中心KDC(Key Distribution Center,KDC)为通信用户分发分享,每一个合法设备,在发起会话时,会主动向KDC申请一组身份信息的分享。KDC将这组分享以证书的形式分发给需要会话的双方,并产生会话密钥分发给会话双方。

具体流程如图1:

(1)C在会话发起之初,告知KDC要与S通话。

IDC,IDS表示C和S的身份信息。

C——KDC:IDC||IDS

(2)KDC根据时间戳TK和(2,2)秘密共享加密方案随机生成IDC和IDS的分享IDC1、IDC2、IDS1和IDS2。

EKC和EKS分别表示消息使用C和S的公钥加密,可用私钥解密。加密算法为RSA加密算法。

KDC——C:EKC[IDS2||K||EKS[IDC1||TK]]

KDC——S: EKS[IDC2||K||EKC[IDS1||TK]]

(3)C收到EKC[IDS2||K||EKS[IDC1|TK]]后,用自己的私钥解密后得到用于验证S身份的分享IDS2,会话密钥K,以及KDC分发给C用于S验证其身份的证书EKS[IDC1|TK],并将其发送给S。

C——S:EKS[IDC1||TK]

(4)S收到KDC发给其的EKS[IDC2|K|EKC[IDS1|TK]],用自己的私钥解密后得到用于验证S身份的分享IDC2,会话密钥K,以及KDC分发给S用于C验证其身份的证书EKC[IDS1|TK]。

S收到EKS[IDC1|TK]后,用自己的私钥解密出IDC1,用(2,2)秘密共享解密算法计算IDC1⊕IDC2是否等于IDC,如果一致,且TK还未过期,则验证C的身份。之后S发送认证通过的信息给C。并且用会话密钥K加密自己的身份证书EKC[IDS1|TK]给C。

EK表示消息使用对称加密算法DES加密,密钥为K。

S——C:EK[EKC[IDS1||TK]]

(5)C收到EK[EKC[IDS1|TK]],用K和私钥解密出IDS1,用(2,2)秘密共享解密算法计算IDS1⊕IDS2是否等于IDS,如果一致,且TK还未过期,则验证S的身份。此步骤中,C也可以确认S收到了会话密钥K,之后C发送EK[TK-1]确认会话密钥可以使用,双方开始通话。

C——S:EK[TK-1]

以上过程从双方信息交互的角度来说明认证、密钥分发和密钥确认的流程。下面,从SIP消息体的角度说明这个过程。

C与S的SIP交互过程如图2。

(1)首先Client向Sever发起请求。由Client呼叫方发起一次INVITE请求。该请求以纯SIP消息模式发出。该消息可以是USC发给代理服务器,或代理服务器转发给目的服务器,或USC或代理服务器发给注册服务器的都有可能。该消息携带身份证书CNONCE=EKS[IDC1|TK]。

(2)Sever收到请求后,基于挑战和响应的认证方式,Sever会发送一个错误的响应消息挑战请求。S发送407/401错误信号。其中携带CNONCE的相关认证信息,以及自己的身份证书NONCE=EK[EKC[IDS1|TK]]。

(3)C收到挑战信息后,再次发送INVITE请求,说明收到挑战。其中携带NONCE的相关认证信息。

(4)S收到NONCE的相关认证信息EK[TK-1]后,确认可以通话。发送180、200信息。

(5)之后C发送ACK消息,开始会话。

由上述认证过程可以看出,第一、二步中通过将RSA、DES和(2,2)秘密共享加密算法结合实现了双向认证。

3 安全性分析

3.1 身份伪装攻击

SIP原本的认证机制中,仅实现了服务器对用户的单向身份认证,本方案中,加入了客户端对服务器的身份认证,可以有效防止服务器伪装攻击。

在实际系统中,如果攻击者拦截到上述认证中(4)C发给S的身份认证信息EKS[IDC1||TK],攻击者可以冒充C将其发送给S。此时攻击者可以通过S的身份认证,但当S返回给其S的身份信息和确认密钥是否可用的信息时,攻击者因无法得知会话密钥K,所以无法正常通话。

如果攻击者截获认证中(2)KDC发给C的信息EKC[IDS2||K||EKS[IDC1|TK]]。并破解了RSA算法,此时攻击者就既有了C的身份证书和会话密钥,可以完全伪装成C。但是由于时间戳TK的存在,如果攻击者没有在时间戳TK的时间内完成破译,那也不能成功攻击。所以本方案在抵御身份伪装攻击上,安全性较高。

3.2 身份认证的安全性

本方案中KDC每次根据时间戳随机生成用户的身份证书,每次用于身份认证的证书都带有随机性,只有合法用户才能获得证书。如果有攻击者截获证书,必须要破解RSA才能使用证书,安全性比较高。身份认证的算法简单,认证速率高。

4 方案性能分析

本文主要从通信量、计算量和存储量三个方面来分析认证协议的性能。

(1)通信量

本文所设计的认证协议将身份认证方案和密钥确认方案在一个通信过程中完成,通信双方通过3次交互便可完成通信双方身份认证和共享会话密钥,并且还能确认会话密钥是否可用。而传统的基于证书的PKI体制,仅仅完成通信双方的身份认证就至少3次交互;此方案很大程度上减少了通信量。

(2)计算量

本文所设计的身份认证算法,只用到了或运算,在数学算法支持上要求较低,计算量小。

但是由于使用了RSA和DES加密,所以在消息解密方面需要一定的开销。

(3)存储量

本文所设计的认证协议与传统的基于证书的PKI体制相比,KDC不需要存储证书,每个用户只需在本次通信中存储自己的身份证书(分享),很大程度上减少了存储量,也便于系统增加新用户扩容。

5 结束语

本文方案实现了通信双方的双向身份认证,身份认证的基础在于秘密共享加密方案。会话密钥使用公钥加密,保证了会话密钥的安全性。

实际上本系统的身份认证过程有两次,一次是基于公钥体制的KDC对C、S的身份认证,因为只有用户用私钥才能解密和使用身份证书。另一次就是秘密共享加密方案的身份认证。

此系统不能抵御DoS攻击,攻击者可以发送大量无意义的SIP消息,来浪费资源。所以,如需抵御DoS攻击,还需建立SIP的防火墙机制。

其次,此方案的安全性也严格依赖于RSA和DES的安全性。

参考文献

[1]M.Girault.Self-certified public keys.Advances in Cryptology-EUROCRYPT’91.LNCS547,Berlin:Springer-Verlag.1991.

[2]王伟志.IP视频电话的安全策略研究与实现.西安:西安电子科技大学.2011.

秘密图像共享 篇6

数据加密使得除通信双方以外的任意第三方不能获得真实的数据,但不能保证通信双方是可信的,而数字签名可以解决双方伪造、篡改以及冒充等问题。正是由于数字签名的这些特点和功能,数字签名在很多领域得到了广泛的应用,尤其是数据完整性检测、身份鉴别、身份认证、非否认服务等,因此,数字签名在现代密码学中起着相当重要的作用。

盲签名是一种特殊的签名,它与其他的数字签名的不同之处在于,签名方并不知道所要签名文件或信息的具体真实内容。这使得盲签名这种技术在电子投票系统和电子钞票等许多领域得到了广泛的应用。自从1982年Chaum[1]首次提出了盲签名的概念以来,人们利用因子分解问题[1]、离散对数问题[2]、二次剩余问题[3]等相继提出了各种盲签名方案。然而,这些经典盲签名方案的安全性都是基于数学问题的计算复杂性。随着量子计算机的出现, 它们将会被轻易的攻破而变得不安全,于是人们基于量子的特殊性质提出了量子数字签名协议。

2001年,曾贵华等利用GHZ三重态的相干特性提出了一个基于对称密码体制的量子签名方案[4],实现对量子比特串的签名和验证。之后Gottesman 和Chuang 提出了一种量子签名协议[5],但该协议只能对量子基态签名,而不能对一般的量子叠加态签名,效率比较低,只是一种原理性的协议。随后人们又基于其他物理特性,提出了不完全依赖仲裁的签名协议[6],广播多重量子签名协议[7],基于EPR的代理签名协议[8],基于隐形传态的代理签名协议[9]等多种形式的签名协议。

上述协议都用到量子纠缠、量子交换、量子隐形传态、量子远程制备等技术。虽然文献[10]利用量子逻辑门以及附加粒子节省量子信道纠缠资源,但是考虑到两粒子、三粒子甚至多粒子量子态制备的难度,以及多量子之间纠缠的复杂性,受文献[11]的启发,本文借鉴文献[12]中使用量子非纠缠的特点,设计一种盲签名方案。该方案利用秘密共享的思想,使得签名方不知道所要签名的信息的真实内容,而且对信息的签名操作仅仅是异或操作或者是一位逻辑门运算操作,操作简单,节省资源,同时保证安全性。

1 非纠缠量子秘密共享的描述

SAB三者通过非纠缠量子获得各自的子秘密。

1) S随机生成两个n比特二进制串XY。利用串XY,T生成一列2比特的直积态|ab,具体规则如下:

(1) 当X串中对应的比特为0时,使用基⊕;反之,使用基⨂。

(2) 直积态中,比特ab的异或值等于串Y中相对应的值。

所以,以⊕为基的直积态中有如下状态{|00|01|10|11};以⨂为基的状态有{|++|+-|-+|--}

2) S将串ab分别发送给AB,ab对应上述的直积态。

3) 当AB都宣布它们收到其相对应的串ab后,S公布串X(即基底)。

4) AB根据串X选择对应的基测量自己得到的串,并且记录下其结果,分别记为YaYb

5) 在检测阶段,S要求AB 选择一些对应位,公布其测量的结果,如果S经过比较后发现错误比特率小于规定的值,则继续进行下一步,否则,放弃这次通信,重新开始。

6) 在串YYaYb中,剩下的没有进行检测的位可以生成生密钥。

7) SAB对上面得到的生密钥进行密钥纠错和保密放大,就可以得到秘密共享的密钥。

从上述步骤可知,在SAB三者的秘密共享方案中,仅获得一方的信息,另外两方的信息是不能确定的;但是如果能获得其中两方的信息,那么第三方的信息就能被准确的确定。

2 盲签名方案

将上述秘密共享的思想应用到盲签名中,假设消息拥有者、签名者、验证者共享上述三个比特串。A是消息的拥有者,T是签名者,B是验证者。A可以对消息进行一系列操作将信息盲化,T对盲化的信息进行签名,B根据从AT得到的双方的信息对签名进行验证。根据对信息的编码方式的不同,信息可以分为经典信息和量子信息,分别由经典比特和量子比特表示。为方便描述,假设信息和密钥都为n比特。下面,分别对其进行描述。

2.1 签名信息为经典信息

1) 初始化阶段

Step1 按上述秘密共享步骤,TAB分别得到子秘密信息tab

Step2TAB利用量子密钥分配方案获得共享密钥,分别为KATKBTKAB,方法可以采用BB84协议。

2) 盲签名阶段

Step1 对信息m进行盲化:将信息mA的子秘密a进行异或操作得m1:

m1=m⊕a (1)

A用和T共享的密钥KAT将盲化信息m1加密,加密后得到SAT:

SAT=EKAT(m1) (2)

ASAT发送给T

Step2T审计的依据:B将自己的子秘密信息b经过Hash函数(由TAB共同商定)处理后得到H(b),经KBT加密后得SHb:

SHb=EKBT(H(b)) (3)

BSHb发送给T

Step3T收到SHb之后,用KAT解密SAT得到m2:

m2=DKAT(SAT) (4)

之后,将m2与自己的子秘密信息t进行异或运算得m3:

m3=m2⊕t (5)

Step4Tm3用与B共享的密钥KBT加密后得到SBT:

SBT=EKBT(m3) (6)

TSBT发送给B

Step5A用与B共享的密钥KAB加密原始信息m后得到SAB:

SAB=EKAB(m) (7)

ASAB其发送给B

3) 签名验证阶段

Step1B用与T共享的密钥KBT解密SBT得到m4:

m4=DKBT(SBT) (8)

m4与自己的子秘密信息b进行异或操作后得m5:

m5=m4⊕b (9)

Step2B用与A共享的密钥KAB解密SAB后得到m6:

m6=DKAB(SAB) (10)

m6和m5进行比较。若m5=m6,则接受签名,否则,不接受。

4) 审计阶段

增加的审计阶段,主要是为了防止B的欺骗行为,该阶段由T决定是否根据需要对B的合法性进行验证。

Step1B用与T共享的密钥KBT加密其子秘密信息b后得SBT:

SBT=EKBT(b) (11)

BSBT发送给T

Step2TKBT解密SBT后得到b1,T用之前商定好的Hash函数处理b1得H(b1)。

Step3T将之前收到的SHb解密之后得H(b)′:

H(b)′=DKBT(H(b)) (12)

然后进行比较。若H(b1)=H(b)′,则审计通过,否则,不通过。

2.2 签名信息为量子信息

1) 初始化阶段

同2.1节中初始化阶段一样。

2) 盲签名阶段

注:以下使用KATKBTKAB加密时,均使用量子态一次一密算法[13]。

m为量子比特,不失一般性,我们设单量子比特|φ可表示为|φ=α|0+β|1

Step1 对信息m进行盲化:A根据其子秘密信息am进行一位逻辑门操作,规则如下:当ai=0时,对m中第i个粒子进行I操作;当ai=1时,对m中第i个粒子进行H操作。经过上述操作后,得到m1,A用和T共享的密钥KAT将盲化信息m1加密,加密后得到SAT:

SAT=EKAT(m1) (13)

ASAT发送给T

Step2T审计的依据:B将自己的子秘密信息b经过Hash函数(由TAB共同商定)处理后得到H(b),经KBT加密后得SHb:

SHb=EKBT(H(b)) (14)

BSHb发送给T

Step3T收到SHb之后,用KAT解密SAT得到m2:

m2=DKAT(SAT) (15)

之后,利用自己的子秘密t对其进行一位逻辑门操作,规则如下:当ti=0时,对m中第i个粒子进行I操作;当ti=1时,对m中第i个粒子进行H操作,之后得到m3。

Step4Tm3用与B共享的密钥KBT加密后得到SBT:

SBT=EKBT(m3) (16)

TSBT发送给B

Step5A用与B共享的密钥KAT加密原始信息m后得到SAB:

SAB=EKAB(m) (17)

ASAB其发送给B

3) 签名验证阶段

Step1B用与T共享的密钥KBT解密SBT得到m4:

m4=DKBT(SBT) (18)

B用自己的子秘密信息bm4进行一位逻辑门操作,规则如下:当bi=0时,对m中第i个粒子进行I操作;当bi=1时,对m中第i个粒子进行H操作,之后得到m5。

Step2B用与A共享的密钥KAB解密SAB后得到m6:

m6=DKAB(SAB) (19)

m6和m5进行比较。若m5=m6,则接受签名,否则,不接受。

4) 审计阶段

增加的审计阶段,主要是为了防止B的欺骗行为,该阶段由T决定是否根据需要对B的合法性进行验证。

Step1B用与T共享的密钥KBT加密其子秘密信息b后得SBT:

SBT=EKBT(b) (20)

BSBT发送给T

Step2TKBT解密SBT后得到b1,T用之前商定好的Hash函数处理b1得H(b1)。

Step3T将之前收到的SHb解密之后得H(b)′:

H(b)′=DKBT(H(b)) (21)

然后进行比较。若H(b1)=H(b)′,则审计通过,否则,不通过。方案流程图如图1所示。

2.3 对盲签名方案的分析

在本协议的签名阶段中,T签名时无法知道A的信息。因为A根据自己共享的子秘密信息对签名信息进行盲处理;在审计阶段B发给T的只是自己的共享子秘密信息的Hash值。根据Hash函数的单向性,T也无法知道B的信息。根据秘密共享的原理,T签名时只知道一方的消息(自己的共享信息)无法知道A的信息,因此T的签名具有盲性。

非法者的量子攻击策略不可能成功,通常情况下的量子攻击策略有完全截断攻击方案、截获/重发攻击方案、纠缠态攻击方案等。在这些量子攻击方案中,非法者有可能获得文件,但这个消息是由发送者用其共享的子秘密信息和共享密钥加密后形成的,而共享子信息和密钥都是采用量子一次一密的算法生成的,是无条件安全的,非法者没有共享子信息和密钥,无法解密文件,因此,截获的文件对非法者来说是无用的文件。量子的不可克隆原理保证了量子信息是不能被复制的,如果攻击者采取截获/重发方案,对A的光子进行克隆,但这势必对签名信息产生扰动,签名信息将被拒绝,同时系统将检测到窃听者的存在。

非通信方不可能伪造签名成功,如果非通信方伪造签名文件发送给对方,则在验证过程中,一定会出错,即通信方能发现攻击者的存在,抛弃原文件,重新检测信道,并重新进行签名和验证过程。

分析量子签名协议的效率,一方面需要考虑信道中传输的量子比特数,另一方面需要考虑签名过程和验证过程的复杂度。文献[14]中提出的效率分析方法,仅仅考虑了签名阶段时需要传输的量子比特,本方案中,因没有使用纠缠比特,签名过程是对消息进行异或操作或者是幺正变换,采用的幺正变换(一位逻辑门操作)等效于二进制运算。表1比较了本文和其他方案的特点,由表1可知,本文方案使用较少的经典比特和量子比特,而且没有使用纠缠比特,签名和验证过程效率较高。

3 结 语

利用秘密共享的原理,验证方只有在其他两方的共同协作下才能对签名进行验证。本方案一方面使用非纠缠量子,另一方面,对信息的操作仅仅是异或操作或者是一位逻辑门操作,不仅操作简单,而且节省资源,同时能够保证安全性。该方案不同于经典的基于算法复杂性的盲签名方案,但具有盲签名应该满足的性质和经典安全特性。方案的原理基于量子物理特性,因而具有无条件安全性,也可以抵抗量子攻击方式。

秘密图像共享 篇7

目前, 基于齐次线性递归的秘密共享方案的文献并不多, 2010年, 文献[1]提出的方案, 是基于齐次线性递归的, 其验证阶段只能验证了秘密份额的有效性。文献[2]提出的方案特点是公开的函数值个数减少;在验证阶段, 可验证秘密份额的有效性。以上这几个方案的缺点是不能防止分发者通过公开值欺骗参与者, 也不能防止非法成员的欺骗。文献[3]提出的方案使用双变量单向函数防止秘密份额的泄漏, 验证阶段既验证了秘密份额的有效性, 也验证了公开值的正确性。其缺点是部分公开值没有验证其有效性, 也不能验证非法成员对合法参与者的欺骗。在文献[4]中指出寻找一个具有6个条件的双变量函数, 这就增加了实际操作的难度, 并且增加了算法的计算量。

1 秘密共享中的欺骗问题分类

1979年, Shamir最早提出的 (t, n) 门限秘密共享方案成立的前提, 是假设分发者与参与者都是诚实的, 但其假设前提在实际中是很难成立的。该方案明显存在欺骗问题:①分发者对参与者的欺骗;②参与者之间的欺骗。在文献[6]中提出这样一种欺骗:分发者通过伪造假的参数阻止参与者恢复秘密, 即分发者对参与者的欺骗。文献[7]中提到非法成员对合法成员的欺骗。1999年, 张建中等将欺诈分为两类:①内部欺诈:合法参与者出示假的秘密份额;②外部欺诈:非法参加者设法获得秘密。2010年, 李大伟将攻击者分为内部攻击者和外部攻击者。

对以上秘密共享方案中的欺骗问题进行总结, 欺骗可以分为两类:内部欺骗和外部欺骗。

(1) 内部欺骗。

①参与者之间的欺骗, 即合法的不诚实参与者出示假的秘密份额给其它合法参与者, 使合法参与者不能恢复正确的秘密;②分发者对参与者的欺骗, 即分发者出示假的秘密份额或公开假的函数值。

(2) 外部欺骗。

非法成员设法获得秘密。非法成员对合法参与者的欺骗属于外部欺骗。

通常我们所说的可验证秘密共享方案中的“可验证”, 指的是该秘密共享方案可以验证分发者对参与者的欺骗和参与者之间的欺骗, 即简称分发者欺骗和参与者欺骗, 其属于内部欺骗。由此, 对于攻击者就可以分为内部攻击者与外部攻击者。秘密分发者欺骗和参与者欺骗中的攻击者属于内部攻击者;非法成员对合法成员的欺骗中的攻击者属于外部攻击者。

2 方案

本方案是在文献[2]的基础上, 借鉴文献[3]的验证阶段方法, 同时引入零知识证明方法防止非法成员的欺骗。在本方案中对某些参数加强条件限制, 且没有使用双变量单向函数, 减小算法实际操作难度且减少了复杂度;其安全性基于离散对数, 秘密份额也可以多次使用;公开的参数少, 以增强安全性;引入零知识证明方法, 防止非法成员对合法参与者的欺骗, 该方案是一个更安全有效防欺骗的多秘密共享方案。

本方案分为4个阶段:初始化阶段、分发阶段、验证阶段和重构阶段。

重构阶段与文献[2]类似, 因此不再赘述。

2.1 算法步骤

2.1.1 初始化阶段

(1) 分发者选择两个大素数p1, p2并计算N=p1p2, 在N足够大时, 在知道N的情况下要想得到p1和p2是困难的。

(2) 分发者选择一个整数s0且与φ (N) 互素, 也就分别与 (p1-1) , (p2-1) 都互素, 并根据s0计算d, 使之满足s0d=1modφ (N) 。

(3) 分发者选择两个大素数p和q (q

(4) 每个成员Mi任意选择si∈ZN作为它的秘密份额, 计算Ti=gsimod N, 然后把Ti发送给分发者, 分发者验证确保对所有的i≠j时, Ti≠Tj, 否则让成员Mi或Mj重新选择秘密份额, 并公布{T1, T2, …, Tn}。

2.1.2 秘密分发阶段

(1) 当k≤t时, 分发者执行以下步骤完成秘密的分发:

①计算T0=gsimod N, 公布T0, 计算Ii=Tundefinedmod N;②将k个共享的秘密P1, P2, …, Pk隐藏在齐次线性递归式子中, 令uj=Pj+1;令uj=Ij+1-k, 于是构建下面的等式:

undefined

③计算ui;④计算yi=Ii-ui+k-1;⑤根据ui/αi= (A0+A1i++…+At-1it-1) mod p, 联立t个方程组, 求方程的t个系数Aj (j=0, 1, …, t-1, 计算Gj=gAj (j=0, …, t-1;⑥公开 (yt-k+1, …, yn, G0, G1, …, Gt-1。

(2) 当k>1时, 分发者执行以下步骤完成秘密的分发:

①计算T0=gs0mod N, 计算Ii=Tundefinedmod N;②因为k>t, 将t个共享的秘密P1, P2, …, Pk隐藏在齐次线性递归式子中令uj=Pj+1, 于是构建等式

undefined

其余的k-1个共享的在后面的步骤中秘密重新构造式子隐藏;③计算ui;④计算yi=Ii-ui+k-1, 计算ri=Pi+1-ui+n剩余的k-1-t个共享秘密隐藏在这个式子中;⑤根据ui/αi= (A0+A1i+…+At-1it-1) mod p, 联立t个方程组, 求方程的t个系数Aj (j=0, 1, …, t-1) , 计算Gj=gAj (j=0, …, t-1) ;⑥公开 (r1, …, rk-1, y1, …, yn, G0, G1, …, Gt-1) 。

2.1.3 验证阶段

因为有这样的欺骗存在, 非法参与者伪装成合法参与者身份骗取合法参与者的真的秘密份额, 因此在验证阶段合法参与者将秘密份额提交给想要恢复秘密的参与者之前, 先证明持有伪份额参与者的合法性, 利用零知识证明判断参与者合法性, 每个参与者接收到其它t-1个成员的伪份额时, 都能够验证此伪份额的有效性。

(1) 当k≤t时。 (1) 任意t个成员{Mi}i∈I (I{1, 2, …, n}) 拿出它们的伪份额{I'i}i∈I, 每个成员Mi都可以计算它的伪份额I'i=Tsi0mod N。根据下面的公式计算ui:

(2) 当任意t个成员重构秘密时, 这t个中的任何一个成员都可以验证他所接收到的伪份额是否正确, 也间接地验证了公开值yi的正确性, 即验证是否成立。

(2) 当k>t时。 (1) 任意t个成员{Mi}i∈I (I{1, 2, …, n}) 拿出它们的伪份额{I'i}i∈I, 每个成员Mi都可以计算它的伪份额I'i=Tsi0mod N。根据公式计算ui:ut+i-1=I'i-yi (1≤i≤n) ; (2) 当任意t个成员重构秘密时, 这个t中的任何一个成员都可以验证它所接收到的伪份额是否正确, 即验证是否成立。

(3) 零知识证明验证参与者合法性。假设P和V是秘密共享方案中的参与者。若参与者P打算向V证明:自己知道一个秘密份额I'i。

每个秘密份额I'i满足秘密份额的公式为:当k>t时, ut+i-1=I'i-yi (1≤i≤n) , 当k≤t时,

undefined

, 下面这个公式能间接验证秘密份额的正确性:gui+k-1/αi+k-1=∏undefined, 其中令j=i+k-1, bj=uj/αj, 故把原式化简得:gbj=∏undefined。

①P产生随机素数m, 计算n·m=j mod p-1, 得n, 如果n和m都大于3, 则继续。否则重新选择m进行计算。然后计算Y1d=Gundefinedmod p (注:其中d=k-1, …, k+t-2) ) , 将 (Y11, Y12, …, Y1 (t-1) 发送给V;②V产生一个随机数r, 计算Y2d=Gundefinedmod p, 将 (Y21, Y22, …, Y2t-1) 发送给P;③P计算Y3d= (Y2d) ndmod p, 将 (Y31, Y32, …, Y3 (t-1) 发送给V;④V计算Y4d= (Y1d) rmod p, 如果Y3d=Y4d, 则V相信P发来的Y1d确实是Gundefinedmod p;⑤V产生另外一个随机数s, 计算Y5d= (Y1d) smod p, 将 (Y51, Y52, …, Y5 (t-1) ) 发送给 P;⑥P计算Y6d= (Y5d) mdmod p, Y6=∏undefined, 将Y6发送给V;⑦V计算Y7=GundefinedY6mod p, Y8 (gyi) mod p, 如果Y7=Y8, 则V相信P确实拥有合法的秘密份额。

该零知识证明方案的思想是:前4个步骤证明对方确实有I'i, 后7个步骤间接验证秘密份额I'i正确性, V通过该证明既确认了秘密份额的合法性, 又没有获得该秘密份额的任何相关内容。

(4) 当任何成员在接收到其它合法参与者的秘密份额时, 成员就可以通过式子Iundefined=TimodN验证。

2.2 安全分析

初始化阶段, 攻击者利用分发者提供的Ti计算不出每个成员的份额si, 因为当攻击者仅知道Ti和g, 根据公式Ti=gsimod N, 由离散对数的难解性, 计算si是困难的

本方案在验证阶段引入零知识证明方法, 防止非法成员对合法成员的欺骗。虽算法复杂度增加了, 可该方案的安全性却提高了, 本方案牺牲了一定效率换取其安全性, 这是值得的。

3 结论

本方案将共享的秘密隐藏在齐次线性递归的式子中, 减少公开参数的个数, 增加秘密信息的安全性, 秘密份额的安全性基于离散对数的难解性;初始阶段, 对某个参数加强了限制条件, 在秘密验证过程中, 引入零知识证明方法来防止非法成员的欺骗, 提高了方案的安全性;且该方案不用双变量单向函数, 减小算法实际操作难度, 减少了复杂度。因此, 改进的方案是安全有效的多秘密共享方案。本文还总结了秘密共享中的欺骗分类。

摘要:基于齐次线性递归的秘密共享方案, 用于解决非法成员对合法成员欺骗的问题, 主要是通过引入交互式零知识证明方法防止非法成员对合法成员的欺骗。总结了秘密共享中的欺骗分类。

关键词:线性递归,防欺骗,多秘密共享,零知识证明

参考文献

[1]贺军, 李丽娟.两种实用的可验证多秘密共享方案[J].计算机应用研究, 2010 (5) .

[2]DEHKORDI M.H, MASHHADI S.New efficient and practical verifiable multi-secret sharing schemes[J].Information Sciences, 2008 (9) .

[3]陈养奎, 于佳.基于齐次线性递归的可验证多秘密共享方案[J].北京大学学报:自然科学版, 2010 (5) .

[4]王宝文, 吴晓亮.一个新的可验证多秘密分享方案[J].计算机工程与应用, 2011 (4) .

[5]A.SHAMIR.How to share a secret[J].Communication of the ACM, 1979 (11) .

[6]王家玲, 朱艳琴.对一种VMSS方案的分析与改进[J].计算机应用与软件, 2010 (7) .

[7]张屹.防欺骗多秘密共享的研究与实现[D].合肥:合肥工业大学, 2007.

[8]张建中, 肖国镇.一个可防止欺诈的秘密分享方案[J].电子科学学刊, 1999 (4) .

上一篇:新课程语文实效教学下一篇:前列腺素类