22

二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

  • Upload
    others

  • View
    26

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实
Page 2: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

二次剩余的应用

本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零

知识证明中的应用. 为此, 我们需要下面的事实.

设𝑛 = 𝑝𝑞, 其中𝑝和𝑞是不同奇素数, 整数0 < 𝑎 < 𝑛且

(𝑎, 𝑛) = 1. 如果𝑥2 ≡ 𝑎 (𝑚𝑜𝑑 𝑛)有解, 那么它正好有4个解.

具体求解过程如下.

设𝑥0是𝑥2 ≡ 𝑎 (𝑚𝑜𝑑 𝑛)的一个解. 令𝑥1 = 𝑥0 𝑚𝑜𝑑 𝑝,

𝑥2 = 𝑥0 𝑚𝑜𝑑 𝑞, 则𝑥2 ≡ 𝑎 (𝑚𝑜𝑑 𝑝)和𝑥2 ≡ 𝑎 (𝑚𝑜𝑑 𝑞)分别有

两个解𝑥 ≡ ±𝑥1 (𝑚𝑜𝑑 𝑝)和𝑥 ≡ ±𝑥2 (𝑚𝑜𝑑 𝑞). 由拉格朗日定

理, 这也是它们的全部解.

2

Page 3: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

二次剩余的应用

因此, 𝑥2 ≡ 𝑎 (𝑚𝑜𝑑 𝑛)恰好有4个解, 分别由以下同余方程组给出:

(1) 𝑥 ≡ 𝑥1 (𝑚𝑜𝑑 𝑝), 𝑥 ≡ 𝑥2 (𝑚𝑜𝑑 𝑞); (2) 𝑥 ≡ 𝑥1 (𝑚𝑜𝑑 𝑝), 𝑥 ≡ −𝑥2 (𝑚𝑜𝑑 𝑞); (3) 𝑥 ≡ −𝑥1 (𝑚𝑜𝑑 𝑝), 𝑥 ≡ 𝑥2 (𝑚𝑜𝑑 𝑞); (4) 𝑥 ≡ −𝑥1 (𝑚𝑜𝑑 𝑝), 𝑥 ≡ −𝑥2 (𝑚𝑜𝑑 𝑞);

显然, 若(1)的解为𝑥, (2)的解为𝑦, 则(3)和(4)的解分别为𝑛 − 𝑦和𝑛 − 𝑥.

另外, 在仍然假设𝒙𝟐 ≡ 𝒂 (𝒎𝒐𝒅 𝒏)有解的前提下,

如果𝑝 ≡ 𝑞 ≡ 3 (𝑚𝑜𝑑 4), 那么由定理4.3.1 (1)

可以求得𝑥2 ≡ 𝑎 (𝑚𝑜𝑑 𝑝)和𝑥2 ≡ 𝑎 (𝑚𝑜𝑑 𝑞)的解

分别为𝑥 ≡ ±𝑎(𝑝+1)/4 (𝑚𝑜𝑑 𝑝)和𝑥 ≡ ±𝑎(𝑞+1)/4

(𝑚𝑜𝑑 𝑞).

进而可以利用中国剩余定理由这些解求出𝑥2 ≡ 𝑎 (𝑚𝑜𝑑 𝑛)的解.

3

Page 4: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

二次剩余的应用 例4.5.1 已知𝑥2 ≡ 860 (𝑚𝑜𝑑 103 × 107)有解, 求其全部解.

解: 由上面给出的解法知,

𝑥2 ≡ 860 ≡ 36 (𝑚𝑜𝑑 103)有解𝑥 ≡ ±36(103+1)/4 ≡ ±6 (𝑚𝑜𝑑 103);

𝑥2 ≡ 860 ≡ 4 (𝑚𝑜𝑑 107)有解𝑥 ≡ ±4(107+1)/4 ≡ ±2 (𝑚𝑜𝑑 107).

于是, 解下列同余方程组:

(1) 𝑥 ≡ 6 (𝑚𝑜𝑑 103), 𝑥 ≡ 2 (𝑚𝑜𝑑 107);

(2) 𝑥 ≡ 6 (𝑚𝑜𝑑 103), 𝑥 ≡ −2 (𝑚𝑜𝑑 107);

(3) 𝑥 ≡ −6 (𝑚𝑜𝑑 103), 𝑥 ≡ 2 (𝑚𝑜𝑑 107);

(4) 𝑥 ≡ −6 (𝑚𝑜𝑑 103), 𝑥 ≡ −2 (𝑚𝑜𝑑 107);

得𝑥 ≡ ±109,±212 (𝑚𝑜𝑑 103 × 107).

4

Page 5: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

硬币抛掷

下面的电子硬币抛掷协议是Blum在1982年给出的. 该协议的前提条件是假设Alice和Bob之间可以进行电子通信.

硬币抛掷协议

① Alice选取满足𝑝 ≡ 𝑞 ≡ 3 (𝑚𝑜𝑑 4)的两个不同的大素数𝑝和𝑞, 将𝑛 = 𝑝𝑞 发送给Bob.

② Bob随机选取一个小于𝑛的正整数𝑥, 计算𝑥2 𝑚𝑜𝑑 𝑛. 令𝑎 = 𝑥2 𝑚𝑜𝑑 𝑛, 将𝑎发送给Alice.

③ Alice求出𝑥2 ≡ 𝑎 (𝑚𝑜𝑑 𝑛)的4个解𝑥, 𝑦, 𝑛 − 𝑥, 𝑛 − 𝑦, 取其中任一个发送给Bob.

④ Bob试图分解𝑛. 若Bob能分解𝑛, 则Bob赢得硬币, 否则Alice赢得硬币.

5

Page 6: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

硬币抛掷

我们分析一下上面的协议对Alice和Bob 双方是否公正的.

事实上, 由前面的分析可以发现

𝑥 + 𝑦 ≡ 2𝑥1 ≢ 0 (𝑚𝑜𝑑 𝑝), 𝑥 + 𝑦 ≡ 0 (𝑚𝑜𝑑 𝑞) (Why?)

因此, (𝑥 + 𝑦, 𝑛) = 𝑞. 同理可得(𝑥 + 𝑛 − 𝑦, 𝑛) = 𝑝.

因为Bob知道𝑥, 如果他收到𝑦或𝑛 − 𝑦, 那么他可以利用欧

几里得算法很快求得𝑞或𝑝, 从而分解𝑛. 但是, 如果Bob收到

𝑥或𝑛 − 𝑥, 则由于他事先知道𝑥, 所以他并没有得到任何对

分解𝑛有用的信息.

因为Bob收到对分解𝒏有帮助的解和收到对分解𝒏没有帮

助的解的机会均等, 所以该硬币抛掷协议是公平的. 6

Page 7: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

零知识证明

下面来看二次同余方程的解如何应用于零知识证明.

零知识证明(zero-knowledge proof)指的是证明者能够在不

向验证者泄露任何有用信息情况下, 使验证者相信某个论断

是正确的. 零知识证明实质是一种涉及两方或多方的协议.

例如, Alice有一个公钥和一个私钥, 假设Bob知道Alice的公钥,

但Bob没有见过Alice, 而Alice见过Bob的照片. 偶然一天两人

见面, Alice认出Bob的照片, 但Bob不能确定面前的人是否是

Alice. 这时Alice需要向Bob证明自己就是Alice.

7

Page 8: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

零知识证明

Alice至少有两个证明办法.

(1) Alice把自己的私钥给Bob, Bob对某个数据先用Alice

的公钥加密, 然后用这个私钥解密, 如果正确, 则证明对

方确实是Alice.

(2) Bob随机选取数据后用Alice的公钥加密, 将加密后

的数据交给Alice, Alice用自己的私钥解密, 然后将解密

后的数据交给Bob. 如果这个数据与Bob随机选取的数

据相同, 则证明对方确实是Alice.

8

Page 9: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

零知识证明

更直观的描述: Alice要向Bob证明自己拥有某个房间的钥匙, 假设该房间只能用该钥匙打开锁. 有以下2种方法:

(1) A把钥匙出示给B, B用这把钥匙打开该房间的锁, 从而证明A拥有该房间的正确的钥匙. (注意B可以偷偷复制钥匙)

(2) B确定该房间内有某一物体, A用自己拥有的钥匙打开该房间的门, 然后把物体拿出来出示给B, 从而证明自己确实拥有该房间的钥匙. 后面这个方法的好处在于在整个证明的过程中, B始终不能看到钥匙的样子, 从而避免了钥匙的泄露. (注意此时B没机会接触钥匙)

9

Page 10: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

零知识证明

上述两个例子中的第二个方法就属于零知识证

明, 其中Alice作为证明者, 而Bob作为验证者. 零

知识证明可用于使某人相信你拥有一个秘密的

可验证的信息, 但又不用把有关的信息泄露出去,

即给外界的“知识”为 “零”. 大量事实证明,

零知识证明在密码学中非常有用.

10

Page 11: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

零知识证明

零知识证明通常要求满足下述3个条件:

完备性 – 如果证明者的陈述都是真的, 那么诚实的证明者能使严格

执行协议的验证者相信某个论断.

可靠性 – 如果证明者的陈述是假的(即他可能不知道秘密信息), 那么

证明者成功欺骗严格执行协议的验证者的概率非常小.

零知识 – 在验证过程中, 秘密不会泄露给验证者. 特别地, 验证者不可

能向第三方证实他拥有该秘密.

值得注意的是, 零知识证明不是数学意义上的证明, 因为可

靠性中允许证明者以一个非常小的概率成功欺骗验证者, 即

这种证明是以一定的概率正确, 但不是确定性正确的.

11

Page 12: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

零知识证明

下面的零知识证明协议是1985年Shamir发明的.

设𝑛 = 𝑝𝑞, 其中𝑝和𝑞是两个不同的4𝑘 + 3形的大素数, 𝐼是

正整数, 它表示证明者的某个特别的信息, 如个人身份证

号. 证明者选取一个小的正整数𝑐, 并将𝑐粘接在𝐼之后, 粘

接后的数记为𝑣. 这里𝑐的选取要求使得𝑣是模𝑛的二次剩

余. 设𝑢是𝑥2 ≡ 𝑣 (𝑚𝑜𝑑 𝑛)的一个解, 仅仅证明者知道.

Shamir的零知识证明协议的安全性是基于模平方根问题

难解假设的, 即证明者由于知道𝒑和𝒒, 容易得到

𝒙𝟐 ≡ 𝒗 (𝒎𝒐𝒅 𝒏)的解, 而其他不知道整数𝒏分解的人不可

能在合理时间内计算出𝒙𝟐 ≡ 𝒗 (𝒎𝒐𝒅 𝒏)的解.

12

Page 13: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

零知识证明 证明者Alice为了向验证者Bob证明她知道𝑝和𝑞, 他们使用如下交互式证明:

① 证明者Alice随机选取一个与𝑛互素的数𝑟, 计算𝑥 = 𝑟2 𝑚𝑜𝑑 𝑛和𝑦 = 𝑣𝑥−1 𝑚𝑜𝑑 𝑛, 其中𝑥−1满足𝑥𝑥−1 ≡ 1 (𝑚𝑜𝑑 𝑛). 将𝑥和𝑦发送给验证者Bob.

② Bob验证𝑥𝑦 ≡ 𝑣 (𝑚𝑜𝑑 𝑛), 且随机选取一个比特𝑏(即0或1)发送给Alice.

③ 若𝑏 = 0, 则Alice发送𝑟给Bob; 若𝑏 = 1, 则Alice发送𝑠给Bob, 这里𝑠 = 𝑢𝑟−1 𝑚𝑜𝑑 𝑛, 而𝑟−1满足𝑟𝑟−1 ≡ 1 (𝑚𝑜𝑑 𝑛).

④ Bob计算收到值的平方, 如果他发送的比特𝑏为0, 那么他验证这个平方关于模𝑛是否与𝑥同余[因为𝒓𝟐 = 𝒙 𝒎𝒐𝒅 𝒏]; 如果他发送的比特𝑏为1, 那么他验证这个平方关于模𝑛是否与𝑦同余[因为𝒔𝟐 = 𝒖𝟐𝒓−𝟐 = 𝒗𝒓−𝟐 = 𝒗𝒙−𝟏 = 𝒚 𝒎𝒐𝒅 𝒏].

13

Page 14: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

零知识证明

上面协议的4步形成一个循环, 完成一次验证. 值得注意的是, 如果Alice在一次验证中将𝑟和𝑠都发送给Bob, 那么Alice拥有的个人信息𝑢 = 𝑟𝑠 [因为𝒓𝒔 ≡ 𝒖𝒓−𝟏𝒓 ≡ 𝒖 (𝒎𝒐𝒅 𝒏)]将会泄露给Bob.

如果这个验证多次执行均能通过, 那么它表明Alice能按照Bob的要求发送𝑟或𝑠, 这说明Alice在每轮中都知道𝑟和𝑠, 这意味着Alice必须知道𝑢.

由于Bob发送给Alice的比特是随机的, 所以不知道𝑢的人不可能多次通过验证. 因为随机选取的𝑏是0或1的概率各1/2, 所以不知道𝑢能通过验证的概率是1/2[Alice可以一直发送𝒓]. 这样, 如果执行了𝑘次验证, 那么不知道𝑢能通过验证的概率是1/2𝑘. 因此, 为了增强安全性, 我们需要进行多次验证操作.

14

Page 15: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

零知识证明 例4.5.2 假设Alice想向Bob证实她知道𝑛 = 1891的分解

1891 = 31 × 61. 如何进行零知识验证?

解: 设𝐼 = 391.因为391

31= 1,

391

61= 1.

故391是模31和模61的二次剩余, 从而391也是模1891的二次剩余.

于是我们直接取𝑣 = 391, 不需在𝐼后粘接𝑐.

Alice容易得到𝑢 = 239满足𝑢2 ≡ 𝑣 (𝑚𝑜𝑑 1891). 下面是一次验证:

Alice随机选取与𝑛互素的𝑟, 如𝑟 = 998, 计算: 𝑥 = 𝑟2 𝑚𝑜𝑑 𝑛 = 1338,

𝑦 = 𝑣𝑥−1 𝑚𝑜𝑑 𝑛 = 391 × 1296 𝑚𝑜𝑑 𝑛 = 1839, 将1338和1839发送给Bob.

Bob验证知𝑥𝑦 ≡ 1338 × 1839 ≡ 391 = 𝑣 (𝑚𝑜𝑑 𝑛), 随机选取一个比特, 如𝑏 = 1,

发送给Alice.

Alice发送𝑠 = 𝑢𝑟−1 = 239 × 1855 𝑚𝑜𝑑 𝑛 = 851给Bob. (𝑏 = 0时发送𝑟)

Bob计算𝑠2 ≡ 8512 ≡ 1839 ≡ 𝑦 (𝑚𝑜𝑑 1891).

15

Page 16: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

Fiat-Shamir协议

下面的Fiat-Shamir协议是上述协议的一个变形, 它可以通过

零知识证明验证证明者拥有某些信息, 因此可用于智能卡的

身份验证.

设𝑛 = 𝑝𝑞, 其中𝑝, 𝑞是两个不同的4𝑘 + 3形大素数. Alice的秘

密是一序列数: 𝑣1, 𝑣2, … , 𝑣𝑚, 其中0<𝑣𝑖 < 𝑛, 𝑣𝑖 , 𝑛 = 1, 1 ≤

𝑖 ≤ 𝑚. 令𝑠𝑖 = (𝑣𝑖−1)2 𝑚𝑜𝑑 𝑛, 这里𝑣𝑖

−1满足𝑣𝑖𝑣𝑖−1 ≡ 1(𝑚𝑜𝑑 𝑛).

Alice公开𝑠1, 𝑠2, … , 𝑠𝑚. Bob仅仅知道𝑛和𝑠1, 𝑠2, … , 𝑠𝑚. 证明者

Alice想让验证者Bob相信她拥有秘密𝑣1, 𝑣2, … , 𝑣𝑚, 但不泄露

这些𝑣𝑖 .为此, 他们使用下面的交互式证明:

16

Page 17: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

Fiat-Shamir协议

Fiat-Shamir协议

① 证明者Alice随机选取数𝑟, 计算𝑥 = 𝑟2 𝑚𝑜𝑑 𝑛, 将𝑥发送给

验证者Bob.

② Bob选取𝑆 ⊆ {1, 2, … ,𝑚}, 将𝑆发送给Alice.

③ Alice计算𝑦 = 𝑟 · 𝑣𝑖 𝑚𝑜𝑑 𝑛𝑖∈𝑆 , 将𝑦发送给Bob.

④ Bob验证𝑥 ≡ 𝑦2 · 𝑠𝑖 𝑚𝑜𝑑 𝑛 . 𝑖∈𝑆

这个协议与Shamir的零知识证明协议基于同样的假设,

即不知道整数𝑛分解的人不可能在合理的时间内计算出

𝑥2 = 𝑠𝑖(𝑚𝑜𝑑 𝑛)的解, 也即得不到𝑣𝑖 (因为𝒔𝒊 = (𝒗𝒊−𝟏)𝟐 𝒎𝒐𝒅 𝒏).

17

为什么安全?

Page 18: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

Fiat-Shamir协议

Fiat-Shamir协议

① 证明者Alice随机选取数𝑟, 计算𝑥 = 𝑟2 𝑚𝑜𝑑 𝑛, 将𝑥发送给

验证者Bob.

② Bob选取𝑆 ⊆ {1, 2, … ,𝑚}, 将𝑆发送给Alice.

③ Alice计算𝑦 = 𝑟 · 𝑣𝑖 𝑚𝑜𝑑 𝑛𝑖∈𝑆 , 将𝑦发送给Bob.

④ Bob验证𝑥 ≡ 𝑦2 · 𝑠𝑖 𝑚𝑜𝑑 𝑛 . 𝑖∈𝑆

第一步中要求𝑟随机选取, 其作用是避免当𝑆 = {𝑖}为单元素子

集时Bob得到𝑣𝑖 . (Why?)

另外, 如果Alice的确知道秘密, 那么第四步中的同余式必然成

立. 这是因为: 18

Page 19: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

Fiat-Shamir协议

Fiat-Shamir协议

① 证明者Alice随机选取数𝑟, 计算𝑥 = 𝑟2 𝑚𝑜𝑑 𝑛, 将𝑥发送给

验证者Bob.

② Bob选取𝑆 ⊆ {1, 2, … ,𝑚}, 将𝑆发送给Alice.

③ Alice计算𝑦 = 𝑟 · 𝑣𝑖 𝑚𝑜𝑑 𝑛𝑖∈𝑆 , 将𝑦发送给Bob.

④ Bob验证𝑥 ≡ 𝑦2 · 𝑠𝑖 𝑚𝑜𝑑 𝑛 . 𝑖∈𝑆

𝑦2 · 𝑠𝑖𝑖∈𝑆 ≡ 𝑟2 · 𝑣𝑖2

𝑖∈𝑆 · 𝑠𝑖 𝑖∈𝑆 (因为𝑠𝑖 = (𝑣𝑖−1)2 𝑚𝑜𝑑 𝑛)

≡ 𝑟2 · 𝑣𝑖2

𝑖∈𝑆 · 𝑣𝑖−1 2

𝑖∈𝑆 ≡ 𝑟2 ≡ 𝑥 (𝑚𝑜𝑑 𝑛) ,

即𝑥 ≡ 𝑦2 · 𝑠𝑖𝑖∈𝑆 (𝑚𝑜𝑑 𝑛).

19

Page 20: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

Fiat-Shamir协议

在上面的验证协议中, 如果Alice不知道秘密𝑣1, 𝑣2, … , 𝑣𝑚,

那么她有可能使Bob相信她拥有这些秘密吗?

惟一明显的欺骗方式就是Alice在Bob提供子集𝑆之前猜

测𝑆, 进而拼凑第一步中𝑥和第三步中𝑦, 使得它们通过第

四步的验证. 但是{1, 2, … ,𝑚}的子集有2𝑚个, 猜测正确的

概率仅仅1/2𝑚. 如果这个协议被执行𝑘轮, 那么凭猜测通

过所有验证的概率仅为1/2𝑘𝑚.

20

Page 21: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

Fiat-Shamir协议 例4.5.3 假设Alice想向Bob证实她拥有秘密信息, 该信息

由下列数组成: 𝑣1 = 1144, 𝑣2 = 877, 𝑣3 = 2001, 𝑣4 = 1221, 𝑣5 = 101.

设𝑛 = 47 × 53 = 2491, Alice公开𝑛 = 2491及下面的𝑠𝑖(1 ≤ 𝑖 ≤ 5):

𝑠1 = 197, 𝑠2 = 2453, 𝑠3 = 1553, 𝑠4 = 941, 𝑠5 = 494.

则一次验证的过程如下:

(1) Alice随机选取数𝑟, 如𝑟 = 1253, 计算

𝑥 = 𝑟2 𝑚𝑜𝑑 𝑛 = 12532 𝑚𝑜𝑑 2491 = 679, 将𝑥发送给Bob.

(2) Bob选取{1, 2, … , 5}的一个子集, 如𝑆 = {1, 3, 4, 5}, 将𝑆发送给Alice.

(3) Alice计算, 𝑦 = 𝑟 · 𝑣𝑖 𝑚𝑜𝑑 𝑛𝑖∈{1,3,4,5} = 1253 × 1144 × 2001 ×

1221 × 101 𝑚𝑜𝑑 2491 = 68, 将𝑦 = 68发送给Bob.

(4) Bob验证𝑦2 · 𝑠𝑖𝑖∈{1,3,4,5} ≡ 682 × 197 × 1553 × 941 × 494

≡ 679 ≡ 𝑥 𝑚𝑜𝑑 2491 . 21

Page 22: 二次剩余的应用 - PKU · 二次剩余的应用 本节课讨论一类特殊的二次同余方程的解在硬币抛掷和零 知识证明中的应用. 为此, 我们需要下面的事实

总结

22

硬币抛掷协议

零知识证明协议

Fiat-Shamir协议