(二)在信息保密系统中,攻击者Eve所拥有的基本资源有哪些? Eve在不安全的公共信道上截获了密文c。 Eve知道加密算法E和解密算法D。 攻击者Eve可能拥有的更多资源有哪些?
Eve可能知道密文c所对应的明文m 。(此时所进行的攻击称为已知明文攻击) Eve可能拥有强大的计算能力。
Eve可能缴获了一台加密机(也称为加密黑盒子),可以任意地输入明文,输出密文。(此时所进行的攻击称为选择明文攻击) 攻击者Eve不可能拥有的资源是什么? Eve不知道加密密钥z和解密密钥k。
(事实上,在进行安全性分析时,有时也假设Eve 知道了密钥的一部分,但决不能全部知道)
(三)叙述已知明文攻击。
设攻击者Eve截获了密文c,并且知道了密文c所对应的明文m 。(这种情况是怎样发生的呢?当明文m 是已经过期的消息,可能无法再保密,也可能必须将其公开。因此,这种情况是经常发生的)于是:
• 在解密方程m=D(c, k)中,Eve知道m 和c,仅仅不知道解密密钥k。 • 在加密方程c=E(m, z)中,Eve知道m 和c,仅仅不知道加密密钥z。 • 如果Eve从解密方程m=D(c, k)中计算出解密密钥k ,则Eve今后就可以像Bob一样对任何密文c’进行解密: m’=D(c’, k)。
• 如果Eve从加密方程c=E(m, z)中计算出加密密钥z ,则Eve今后就可以像Alice一样对任何明文m’进行加密: c’=E(m’, z)。
• 还可以给更加宽松的条件。设攻击者Eve获得了以往废弃的n组明文/密文对:(m1,c1),(m2,c2),…, (mn,cn)。 • 于是Eve获得了关于解密密钥k 的方程组: • m1=D(c1, k) , • m2=D(c2, k) , • …, • mn=D(cn, k) 。
• (n越大,解密密钥k 就越容易确定。)
(四)叙述无条件安全性。
对密码体制的任何攻击,都不优于(对明文)完全盲目的猜测,这样的密码体制就称为无条件安全的(或完善保密的)。 什么样的加解密方式能够实现无条件安全性?
一次一密的加密方式容易实现无条件安全性。因为密钥时时更新,所以以往得到的任何明文/密文对,对于破译新的密文没有任何帮助,只能做完全盲目的猜测。
(五)叙述计算安全性。
计算安全是一个模糊的概念。我们可以给出以下三个级别的定义。
(1)对密码体制的任何攻击,虽然可能优于完全盲目的猜测,但超出了攻击者的计算能力。这是最高级别的计算安全。
(2)对密码体制的任何攻击,虽然可能没有超出攻击者的计算能力,但所付出的代价远远大于破译成功所得到的利益。这是第二级别的计算安全。
(3)对密码体制的任何攻击,虽然可能没有超出攻击者的计算能力,但破译成功所需要的时间远远大于明文本身的有效期限。这也是第二级别的计算安全。 什么样的加解密方式能够实现计算安全性?
(六)设明文x,密文y,密钥z1,密钥z2,均为8比特课文。加密算法为 y=(x‘+’z1)“+”z2。其中‘+’表示逐位(mod2)加法运算;“+”表示(mod28)加法运算。 试用2个明文/密文对解出密钥z1和z2各自的最低位,其中明文可以任意选择。你选择什么明文?怎样解出?
在解出密钥z1和z2各自的最低位以后,试用2个明文/密文对解出密钥z1和z2各自的次最低位,其中明文可以任意选择。你选择什么明文?怎样解出? 使用选择明文攻击,多少个经过选择的明文/密文对可以解出密钥z1和z2?
(七)设明文(x1x2x3x4x5),密文(y1y2y3y4y5),密钥A(5×5阶方阵),密钥(b1b2b3b4b5),满足域GF(2)上的如下加密方程: (y1y2y3y4y5)=(x1x2x3x4x5)A+(b1b2b3b4b5)。 取6组明文/密文对:
(00000)/(10110),(10000)/(01110),(01000)/(11010), (00100)/(10000),(00010)/(10101),(00001)/(00111)。 试解出密钥A和密钥(b1b2b3b4b5)。 此加密方程能够唯一解密吗?为什么?
(八)叙述Golomb随机性假设(三条假设)。
(1)当n充分大时, k1k2 k3 …kn中0和1的个数各占约一半。
(2)当n充分大时,在k1k2 k3 …kn中,长度为l的比特串10 …01 (称为0游程)的个数约有n/2l 个;长度为l的比特串01 …10 (称为1游程)的个数约有n/2l 个。 (3)若k>0,当n充分大时,以下的值(称为异相自相关函数值)约为0。
1n(1)l1nklklk(九)回答下列问题:
1.一个周期的布尔序列一定是线性反馈移位寄存器序列吗?为什么?
定理 如果一个比特流是一个周期序列,则它一定是线性反馈移位寄存器序列。
证明 设比特流k的最小周期是N。 则 l>N后,kl=kl-N。
因此比特流k为N阶线性反馈移位寄存器序列,抽头系数为 {c1、 c2 、 … 、 cN}={0、0 、 …0 、1}(即极小多项式f(x)=1‘+’xN),初始状态为k1k2k3… kN。
2.n阶线性反馈移位寄存器序列的最小周期的上确界是什么?(2n-1)最小周期达到该上确界的序列称为什么序列?(n阶m序列)当n阶线性反馈移位寄存器序列的最小周期达到该上确界时,对Golomb随机性假设的符合程度是怎样的? 完全满足GOLOMB随机性假设.
(3.1) k在自己的一个最小周期内(即连续2n-1个比特内),0出现2n-1-1次,1出现2n-1次。
(3.2)取定j,3≤j≤n,观察k的连续2n-1个长j的比特串:klkl+1kl+2 …kl+j-1,l=1, 2, …, 2n-1。
10 …01出现2n-j次;(长为j-2的0游程) 01 …10出现2n-j次。(长为j-2的1游程)
观察k的连续2n-1个长n+1的比特串:kl~kl+n,l=1~ 2n-1。10 …01出现1次。(长为n-1的0游程)
观察k的连续2n-1个长n+2的比特串:kl~kl+n+1,l=1~ 2n-1。01…10出现1次。(长为n-1的0游程)
(3.3)对任何1≤j≤2n-2 ,下式接近0。(自相关函数)
1n212n11(1)lklklj1n21这样的序列为什么不能直接作为密钥流?
不能直接作为密钥流的原因为:EVE如果得到任何一段连续2N个比特,就获得了一个关于抽头系数的方程组,由于加法和乘法都是在域GF(2)上进行(MOD2运算),容易计算出抽头系数,从而被攻破。 解法:
如果n阶线性反馈移位寄存器序列用作密钥流,攻击者Eve截获了密文段c1c2c3… c2n,并知道了对应的明文段m1m2m3… m2n,因此计算出了对应的废弃密钥段k1k2k3… k2n。
则Eve获得了关于抽头系数{c1、 c2 、 … 、 cn}的以下方程组。 kl=c1kl-1 ‘+’ c2kl-2 ‘+’ … ‘+’ cnkl-n, 其中l=n+1,n+2,…,2n。
注意到这是在有限域GF(2)上的线性方程组,很容易解出抽头系数{c1、 c2 、 … 、 cn}。
实际上,当Eve获得了n阶线性反馈移位寄存器序列的任何一段的连续2n个比特kj+1kj+2kj+3… kj+2n , 他就获得了关于抽头系数{c1、 c2 、 … 、 cn}的以下方程组。
kl=c1kl-1 ‘+’ c2kl-2 ‘+’ … ‘+’ cnkl-n, 其中l=j+n+1,j+n+2,…,j+2n。
kjnkjn1
kkjn1jn
kkj2n2j2n1
特, Eve就获得了整个密钥流。
kjn1kj1c1kj2c2kjn2kjncnkj2n以上方程组中的加法和乘法都是在域GF(2)上进行的(即(mod2)运算)。 以上事实说明,当Eve获得了n阶线性反馈移位寄存器序列的任意连续2n个比
(3)当一个周期的布尔序列的线性复杂度为n时,该序列的长度为2n的串就能完全解出(综合出)该序列。怎样解出?(两种算法)
序列的综合的两种最著名的算法是B-M算法和Games-Chan算法。
(十)当非线性前馈序列用作密钥流时,哪三个部分可能作为通信伙伴的原始密钥?初始状态,极小多项式,非线性布尔函数。 (十一)分组密码与流密码相比,有什么优点?
(分组密码与流密码相比,优点:加解密算法简洁快速,占用的计算资源小,易于软件和硬件的实现;加解密算法参数固定,比流密码容易实现标准化;由于明文流被分段加密,因此容易实现同步,而且传输错误不会向后扩散.) 有什么缺点?
(不容易使用硬件实现,安全性很难被证明,至多证明局部安全性.) 分组密码的5个设计准则是什么?
(安全性,简洁性,有效性,透明性和灵活性,加解密的相似性.)
(十二)写出Feistel网络的算法步骤,并画出图。 将明文m分为等长的两部分m=(L(0), R(0)); 使用由密钥k控制的高度非线性函数F, (1)计算:
(L’, R’)=(L(0)‘+’F(R(0), k), R(0)); (2)计算密文:c=(L(1), R(1))= (R’, L’)。
L(1)R(1)‘+’FL(0)kR(0)L’R’(十三)在DES中,
32比特课文X→扩充变换E→‘+’48比特密钥k→8个S盒→32比特课文Y 是可逆的;这就是说,当密钥k确定时,不同的X一定得到不同的Y。说明这是为什么。这种可逆性设计有什么意义。
为了使扩充变换E→8个S盒(32比特→ 32比特)整体是一个可逆函数,必须使得8个S盒总体输出是8个S盒总体输入的第2~5、8~11、14~17、20~23、26~29、32~35、38~41、44~47比特的可逆函数。(回顾扩充变换E:扩充变换E的作用是将32比特的课文膨胀为48比特,且扩充变换后的第1、6、7、12、13、18、19、24、25、30、31、36、37、42、43、48比特为扩充部分。 )
(十四)在DES、Rijndael、Safer+中,不具有加解密相似性的有()。 DES是加解密相似的。 RIJNDAEL不是加解密相似的。
SAFER+解密算法就是简单地将加密算法的操作逆向进行。
(十五)IDEA是加解密相似的。设加密算法的密钥子块的标号顺序为 (z11, z12, z13, z14);(z15, z16);(z21, z22, z23, z24);(z25, z26);…; (z81, z82, z83, z84);(z85, z86);(z91, z92, z93, z94)。
现在把解密过程用加密算法来实现,问:第3轮的6个密钥子块依次是什么? ((z71-1, -z73, -z72, z74-1 );(z65, z66)) 第8轮的10个密钥子块依次是什么?
( (z21-1, -z23, -z22, z24-1 );(z15, z16);(z11-1, -z12, -z13, z14-1 ) )
在IDEA中,“×”表示(mod216+1)乘法运算。计算215“×”215。(49153)
(十六)写出Rijndael轮函数(普通轮)的四个不同的计算部件名称。 RIJNDAEL的轮函数由四个不同的计算部件所组成,分别是:
字节代替(ByteSub) 行移位(ShiftRow) 列混合(MixColumn) 加密钥(AddRoundKey)
设Rijndael的字节代替函数为y=bytesub(x)。计算sub(0)。
(1)首先,将字节看作GF(28)上的元素,映射到自己的乘法逆;0字节影射到它自身。
(2)其次,将字节看作GF(2)上的8维向量,做如下的(GF(2)上的;可逆的)仿射变换:
(11000110) (十七)
在Safer+中,计算指数盒的值X(0),计算对数盒的值L(0)。
字节内的混淆采用字节非线性可逆变换函数X(·)和L(·),其中X(·)称为指数变换,X(x)=45x(mod257)(mod256),L(·)是X(·)的逆变换,称为对数变换。 X(0)=1 L(0)=128
Safer+线性层变换矩阵M有何特点,为什么这样设计。
y01000y11100y11102y31111y41111y50111y600110001y71111x010111x11x0011200001x301000x401100x511110x611111x70线性层是环({0, 1}8, +(mod256), ×(mod256))上的一个16维可逆线性变换,作为字节之间的快速扩散。
线性层运算就是将输入课文看作环({0, 1}8, +(mod256), ×(mod256))上的16维向量,右乘矩阵M。从上式可以看出,矩阵M中的元素都是2的幂,这种设计的目的是使模28乘法运算简化成为“左移位,右补0”,简单快速。
(十八)写出RSA的密钥生成过程。 密钥的产生:
(1)选择两个保密的大素数p和q;
(2)计算n=p×q,(n)=(p-1)(q-1),其中(n)是n的欧拉函数值; (3)选一整数e,满足1 (5)以{e,n}为公开钥,{d,p,q}为秘密钥。 (十九)写出基本RSA的加密过程和解密过程。 加密:加密时首先将明文比特串分组,使得每个分组对应的十进制数小于n, 即分组长度小于log2n;然后对每个明文分组m,作加密运算:c≡me mod n; 解密:对密文分组的解密运算为:m≡c mod n。 d(二十)设p是奇素数,且p是4的倍数加3。设c是一个(mod p)平方剩余。关于未知数x的二次方程c=x2(mod p)一共有几个解?它们怎样计算。 两个解 由题设知 p1是整数, 4因为c是模p的二次剩余, p1a21(modp) 所以:apa从而即有 p14p1p122aaaa(modp) 2ap14为c模p的两个平方根。 (二十二)设n=pq是两个不同的奇素数的乘积。设c是一个(modn)平方剩余。关于未知数x的二次方程c=x2(modn)一共有几个解?如果给出2个不同的解,它们关于(modp)同余,关于(modq)不同余,则能够得到什么结果。 (重要!由题设知,pq必须都是Blum数) 解方程组 xcp14(modp) xcq14(modq) 显然该方程组有4组解。 其关于(modn)也不同余 (二十二)写出ElGamal的密钥生成过程,加密过程,解密过程。 ElGamal的密钥生成 选择一个大的素数p。 选择g,1 Alice欲发送明文m给Bob,其中 0 y1=g kmodp (随机数k被加密)。 再用Bob的公钥y,计算: y2=mykmod p(明文被随机数k和公钥y加密) 密文由y1、y2级连构成,即密文c=y1||y2。 ElGamal的解密过程:Bob 收到密文c后,用自己的私钥x计算 m=y2/y1x=myk/gkx=mgxk/gxk modp 。 (二十三)叙述杂凑函数应该满足的3条性质。 1.等长性,2.单向性.3.无碰撞性. (二十四)写出只使用杂凑函数构造的公平提交方案。 散列编码的用途 用途一:公平提交方案 Alice猜测了一个号码x1,但不知道中奖号码x2; Bob设置了中奖号码x2,但不知道Alice猜测的号码x1。 Alice希望首先获得x2,然后重新确定x1使得x1=x2。 Bob希望首先获得x1,然后重新确定x2使得x2≠x1。 防止两人作弊的方案称为“公平提交方案”。 两人使用一个公开的杂凑函数y=H(x)。方案如下: (1)Alice随机选择r1,计算y1=H(x1, r1),并将y1发送给Bob。 (2)Bob随机选择r2,计算y2=H(x2 , r2),并将y2发送给Alice 。 (3)Alice收到y2后,将(x1, r1)发送给Bob。 (4)Bob收到y1后,将(x2, r2)发送给Alice 。 (5)Alice收到(x2, r2)后,检验是否y2=H(x2 , r2),若是则x2是真实的中奖号码。 (6)Bob收到(x1, r1)后,检验是否y1=H(x1, r1),若是则x1是Alice的真实的猜测号码。 方案分析: Alice发送y1给Bob,Bob发送y2给Alice ,这叫做承诺。 Alice发送(x1, r1)给Bob,Bob发送(x2, r2)给Alice ,这叫做践诺。 当承诺值确定以后,无法改变践诺值。 当对方发送来了承诺值以后,己方无法计算出对方的践诺值,因而无法“随机应变地”确定自己的践诺值,以重合或避开对方的践诺值。 综上所述,杂凑函数阻止了双方作弊。 Alice(5):验证是否y2=H(x2,r2)(1):y1=H(x1,r1)(2):y2=H(x2,r2)(3):(x1,r1)(4):(x2,r2)Bob(6):验证是否y1=H(x1,r1)(二十五)叙述数字签名应该满足的3条性质。 1.完整性,2.身份唯一性(不可伪造性),3.不可否认性(公开可验证性). (二十六)写出公钥密码数字签名方案(二)。 额外使用一个公开的杂凑函数H。 设Alice欲发消息m给Bob。 (1)Alice用H将消息m进行处理,得h=H(m)。 (2)Alice用自己的私钥k对h“解密”s=D(h, k),s就是对消息m的签名值,(m,s)就是一个签名消息。 (3) Alice将(m,s)发送给Bob。 (4) Bob收到(m,s)后,用Alice的公钥z,将消息m与签名s做如下的检验:是否H(m)=E(s, z)。若是则(m,s)是Alice发送的签名消息。 在上述方案中, 签名方程是s=D(H(m), k)。 验证方程是H(m)=E(s, z)。 任何人只要拥有Alice的公钥z,都可以对签名消息(m,s)进行验证。 设攻击者Eve知道Alice的公钥z ,他试图伪造一个(m,s),让Bob相信(m,s)是Alice的签名消息。伪造的(m,s)必须满足验证方程H(m)=E(s, z)。 Eve面临着两难问题: 如果选定消息m,再匹配签名值s,则在验证方程H(m)=E(s, z)中无法解出s 。(这是公钥密码的基本安全性) 如果选定签名值s,再匹配消息m,则在验证方程H(m)=E(s, z)中能够解出H(m),却无法得到m。(这是杂凑函数的性质) 如此看来,签名方案(二)似乎具有身份唯一性和不可伪造性。 (二十七)写出D. Chaum盲签名方案。 D. Chaum曾提出第一个实现盲签名的算法,他采用了RSA算法。令B的公钥为e,秘密钥为d,模为n。 (a) A需要B对消息m进行盲签名,选1 (m, s)就是B对m按RSA体制的合法签名,任何知道公钥e的人都能验证 se=m(modn)。 (二十八)完整地写出ElGamal数字签名方案和Schnorr数字签名方案。(密钥生成、签名、验证)。叙述Schnorr数字签名方案与ElGamal数字签名方案相比的优点。 ElGamal数字签名 ElGamal的密钥生成:选择一个大的素数p。选择g为域GF(p)的本原元素。选择正整数x。计算y=gx(modp)。 Alice的公钥是(p,g,y),私钥是x。 签名方案是上述的签名方案(二),额外使用一个公开的杂凑函数H。设Alice欲发消息m给Bob。 (1) Alice用H将消息m进行处理,得h=H(m)。 (2) Alice选择秘密随机数k,满足 0 s=(h-xr)k-1(mod (p-1))。 (3) Alice将(m,r,s)发送给Bob。 (4) Bob用Alice的公钥,检验是否 yrrs=gH(m) ( mod p)。 若是则(m,r,s)是Alice发送的签名消息。 Schnorr数字签名 Alice拥有3个正整数(p,q,g),向自己的通信伙伴公开。其中: p是模数(即将要进行(modp)模数运算),它是一个素数,值的范围在2511 到2512之间(即p是一个长度为512的比特串)。 q也是模数(即将要进行(modq)模数运算),它是一个素数, 2159 < q (即 q是一个长度不小于160的比特串),并且q是p-1的一个因子。 g是域GF(p)的元素,且gq=1(modp)。 Alice选择x,其中1 签名方案是上述的签名方案(二),额外使用一个公开的杂凑函数H, H的输出长度是160比特。设Alice欲发消息m给Bob。 (1)Alice选择秘密随机数k,满足0 (4) Bob用Alice的公钥,计算r’=gsy-e(mod p)。检验是否 e=H(r’, m)。 若是则(m,e,s)是Alice发送的签名消息。 Schnorr签名与ElGamal签名的不同点: 在ElGamal体制中, g为域GF(p)的本原元素;而在Schnorr体制中, g只是域GF(p)的阶为q的元素,而非本原元素。因此,虽然两者都是基于离散对 数的困难性,然而ElGamal的离散对数阶为p-1, Schnorr的离散对数阶为 q 在Schnorr签名中, r=gk(modp)可以预先计算,k与m无关,因而签名只需一次modq乘法及减法。所需计算量少,速度快,适用于灵巧卡采用。 (二十九) Shamir门限秘密共享方案。设:p=17;n=5;t=3; (ID(1), h(ID(1)))=(1, 8); (ID(2), h(ID(2)))=(2, 7); (ID(3), h(ID(3)))=(3, 10); (ID(4), h(ID(4)))=(4, 0); (ID(5), h(ID(5)))=(5, 11)。 当第1位~第3位参与者同时到场,解出共享的秘密 a0+a1x+a2x2 (三十)叙述Schnorr电子现金支付协议。 在Schnorr协议的初始化阶段,选择一个大素数p,一个正整数g。 p和g都被公开。 设顾客的身份秘密信息是(m, b),其中m和b都是正整数。 顾客的身份公开信息是(c, n),其中 c=gb(modp); n=gm(modp)。 Schnorr支付协议如下。 第一步:顾客出示电子现金。电子现金上有其身份公开信息(c, n)。 第二步:商家随机地选择一个正整数x,发送给顾客。(询问) 第三步:顾客用自己的身份秘密信息(m, b),计算:y=mx+b(modp-1)。顾客将y发送给商家。(回答) 第四步:商家用顾客的身份公开信息(c, n),验证是否有 gy=nxc(modp)。 若成立则接受这个电子现金;否则拒绝接受该电子现金。(检验) Schnorr电子现金支付协议怎样保证防止重复花费? 一次使用该电子现金不会暴露顾客的身份秘密信息(m, b)。 商家知道了顾客的身份公开信息(c, n),又通过询问值x得到了顾客的回答值y。商家还知道x与y的关系为: y=mx+b(modp-1)。但是商家计算出(m, b)的途径只能有两条: 第一条途径是通过方程组{c=gb(modp), n=gm(modp)}计算(m, b),该计算问题是离散对数问题。 第二条途径是通过方程y=mx+b(modp-1)来计算(m, b)。该方程无法唯一地解出(m, b)。 两次使用该电子现金将暴露顾客的身份秘密信息(m, b)。 第一次使用该电子现金,询问值/回答值为(x,y)。 第二次使用该电子现金,询问值/回答值为(u,v)。 于是商家获得了两个方程: y=mx+b(modp-1); v=mu+b(modp-1)。 这是一个“二元一次方程组”,解出的值为: m=(v-y)(u-x)-1(modp-1); b=v-mu(modp-1)。 一旦发现重复使用的电子现金,就能够追踪重复使用者的身份。未重复使用的电子现金,使用者的身份不会暴露。 (三十一)写出互联网(Internet)的5种基本服务。 电子邮件,信息浏览,文件传输,远程登录,电子公告牌. (三十二) IPsec属于(网络层)层。 IPsec的2个协议是 (认证报头协议AH)和(封装安全负载协议ESP)。 IPsec的2个数据库是(安全策略数据库SPD)和(安全关联数据库SAD)。 (三十三)邮件文本经过加密或签名,变成了非文本课文。在解决这个问题时,S/MIME采用什么方法? S/MIME处理非文本课文时,采用MIME增加非文本的对象到邮件主体中去,按照S/MIME,发送者将普通的MIME格式的消息封装成为S/MIME安全对象,并将其按照普通消息的发送方式发送出去,接收者把S/MIME安全对象解封装为普通的MIME格式消息. PGP采用什么方法? PGP利用电子邮件兼容性服务将被加密或被签名的邮件每三个字节为一组,扩充为四个字节,扩充后的每个字节都是一个ASCII字符.这种转换称为基数64变换,为消息扩展了33%. (三十四)消息认证码与对称密码的区别,与杂凑函数的区别。 消息认证码不同于对称加密函数,对称加密函数的逆函数就是解密函数,而消息认证码函数是不存在逆函数的,这就是说,消息认证码函数具有单向性,只能\"加密\不能\"解密\".即使知道密钥Z,也只能由消息M的值计算消息认证码C的值,而不能由C的值计算M的值. 消息认证码不同于杂凑函数,杂凑函数没有密钥的作用,因而是完全公开的,而消息认证码有密钥Z的参与.比没有密钥的杂凑函数具有更强的安全性,使敌方更难篡改和伪造.在相同的安全性要求下,消息认证码更容易设计.但是消息认证码需要收发双方协调一次密钥 (三十五) SET协议的双重签名的功能。 使得消费者的支付信息和消费者的订单信息被分别阅读。这就是说,商家看不到消费者的支付信息,只能阅读消费者的订单信息;而金融机构看不到消费者的交易内容,只能阅读支付和帐户信息。 (三十六) SET协议的双重签名的具体步骤。 (1)设消费者的订单信息为M1,消费者的支付信息为M2。 (2)消费者使用杂凑函数,将M1变换为订单信息摘要 h1,将M2变换为支付信息摘要 h2。 (3)消费者将消息摘要 (h1, h2)联立,并用自己的私钥对(h1, h2)进行“解密” 变为S。 S就是双重签名。 (4)消费者将订单信息M1,支付信息摘要 h2,双重签名S,联立为(M1,h2,S)。消费者使用商家的公钥,对(M1,h2,S) 加密,变为密文C1。 (5)消费者将支付信息M2,订单信息摘要 h1,双重签名S,联立为(M2,h1,S)。消费者使用金融机构的公钥,对(M2,h1,S)加密,变为密文C2。 (6)(C1,C2)就是被双重签名的消息。消费者将 (C1,C2)发送给商家。 (7)商家收到(C1,C2)后: (7.1)商家用自己的私钥对C1解密,恢复订单信息、支付信息摘要 、双重签名(M1,h2,S)。 (7.2)商家用消费者的公钥对S“加密”,并检验:①加密值的第一部分是否等于M1的杂凑值,②加密值的第二部分是否等于h2。若是则签名消息有效。 (7.3)商家将C2发送给金融机构。 (8)金融机构收到C2后: (8.1)金融机构用自己的私钥对C2解密,恢复支付信息、订单信息摘要 、双重签名(M2,h1,S)。 (8.2)金融机构用消费者的的公钥对S“加密”,并检验:①加密值的第一部分是否等于M2的杂凑值,②加密值的第二部分是否等于h1。若是则签名消息有效。 (9)商家获得了与支付信息M2有关的以下信息:C2和h2。但商家无法由C2恢复 M2。商家也无法由h2恢复M2。 (10)金融机构获得了与订单信息M1有关的以下信息:h1。但金融机构无法由 h1恢复M1。 零知识证明协议. P使用一种证明方法,使V相信他知道该秘密,而又能保证不泄露该秘密. S双重签名(h1,h2)订单信息支付信息M1散列M2h1h2 因篇幅问题不能全部显示,请点此查看更多更全内容