(阅读论文Privacy Perserving Auction and Mechanism Designed)
一、摘要
前面已经写了混淆电路混淆方案的一个构造了。然而,混淆电路有什么实际作用呢?这篇博客给出了一个应用(应用来自于阅读的论文)
二、提出问题
在一个网上拍卖会上,为了是拍卖会利益最大化,采用第二高价的规则(概念后面有介绍)进行拍卖。但是如果拍卖会作弊的话,就会对竞标者很不公平。(比如:最高出价竞标者出价为10000元,拍卖会不管第二高价格是多少,都说第二高的价格为9999元),为了避免这种问题,我们能采取什么办法呢?
三、涉及到的一些基本概念
1、不经意传输协议(OT协议)
OT协议中包括两个团体,我们把它们分别称为Alice和Bob。现在Bob有两个数据,分别为
X
0
X_0
X0和
X
1
X_1
X1,Alice具有1bit信息
t
t
t。通过OT协议,则Alice只能获得
X
t
(
t
∈
{
0
,
1
}
)
X_t(t\in\{0,1\})
Xt(t∈{0,1}),但是Bob并不知道Alice选择了哪个数据。
扩展:
现在Bob有2n个数据,分别为
X
1
0
,
X
1
1
,
⋯
,
X
n
0
,
X
n
1
X_1^0,X_1^1,\cdots,X_n^0,X_n^1
X10,X11,⋯,Xn0,Xn1,Alice有
n
n
n
b
i
t
bit
bit 信息
x
1
,
⋯
,
x
n
x_1,\cdots,x_n
x1,⋯,xn。通过OT协议,Alice能获得
X
1
x
1
,
⋯
,
X
n
x
n
X_1^{x_1},\cdots,X_n^{x_n}
X1x1,⋯,Xnxn,但是Bob并不知道Alice选择了哪些数据。
2、代理人不经意传输协议(Proxy OT协议)
代理人不经意传输协议包括三个团体,我们把他们分别称为Alice,Bob,和Proxy。Bob仍然具有两个数据 X 0 X_0 X0, X 1 X_1 X1,Alice具有1bit信息t。通过这个协议代理人Proxy能够获得 X t X_t Xt,但是它并不知道这是Bob的第几个数据。换句话说:中间人并不知道Alice手中的比特t,也不了解Bob手中的另一个数据。而Alice和Bob通过这个协议都没有获得任何信息。
3、第二高价拍卖
在一个拍卖场中,所有竞标者都秘密的出一次价格。最终拍卖品由最高价竞标者获得,但是需要付的钱是为第二高的价格。这个第二高价拍卖蕴含了一些经济学以及博弈原理(百度百科有介绍)我们这里就不细讲了,主要说一个概念方便理解文章。
4、两方安全计算
两方安全计算:Alice具有x,Bob具有函数f,通过两方安全计算协议,Alice能获得f(x)的值。然而,Bob并不获得任何关于x的信息。
5、用混淆电路构造两方安全计算
Bob:
(
F
,
e
,
d
)
←
G
b
(
f
)
(F,e,d)\leftarrow Gb(f)
(F,e,d)←Gb(f),
(
X
1
0
,
X
1
1
,
⋯
,
X
n
0
,
X
n
1
)
←
e
(X_1^0,X_1^1,\cdots,X_n^0,X_n^1)\leftarrow e
(X10,X11,⋯,Xn0,Xn1)←e
然后Bob把
F
,
d
F,d
F,d发送给Alice
Alice:
(
x
0
,
⋯
,
x
n
)
←
x
(x_0,\cdots,x_n)\leftarrow x
(x0,⋯,xn)←x
然后通过OT协议,Alice获得
(
X
0
,
⋯
,
X
n
)
(X_0,\cdots,X_n)
(X0,⋯,Xn)
然后Alice可以计算
y
=
d
(
F
(
X
)
)
y = d(F(X))
y=d(F(X))。
6、用两方安全计算扩展为多方安全计算
如果我们可以引进一个中间人。中间人与每个输入者和混淆电路运用Proxy OT协议,这样就能获得所有的混淆值X,之后就可以计算
y
=
d
(
F
(
X
)
)
y = d(F(X))
y=d(F(X))。
当我们有了安全多放计算方法之后,是不是上面问题就有了解决的思路呢?
四、方案
我们就是利用安全多方计算协议来完成这个方案。
所有投标者就是安全多方计算的输入者,拍卖会就是上面的中间人,混淆电路提供者就是上面的混淆电路部分,这样我们解决问题的方案就大体ok了,
五、OT协议和Proxy OT协议的实现问题
1、离散对数问题
在一个生成元为 g g g的循环群 G G G中,假设 b = g a b = g^a b=ga,当我们已知 b , g b,g b,g的时候,求 a a a是困难的。这就是离散对数问题。
2、离散对数加密
T. ElGamal算法:
Alice在群G中选择一个随机数
r
r
r,之后计算
g
r
g^r
gr。群生成元
g
,
g
k
g,g^k
g,gk作为公钥,k作为私钥。
假设Bob要给Alice发送信息m
Bob选择随机数
r
r
r,计算
g
r
g^r
gr和
m
g
k
r
mg^{kr}
mgkr。并把他们发送给Alice
然后Alice可以通过
(
g
r
)
k
(g^r)^k
(gr)k,之后计算
(
g
r
)
k
(g^r)^k
(gr)k的逆,然后用
m
g
k
r
mg^{kr}
mgkr乘以
(
g
r
)
k
(g^r)^k
(gr)k的逆即可得到信息m。
更加详细的离散对数问题和加密可以看下面这篇博客
离散对数问题
我们的OT协议就是通过T. ElGamal算法扩展得到的(因此我们只介绍了T. ElGamal算法)。
3、OT协议的构造
首先Alice和Bob一起商量一个群G,生成元为
g
g
g,然后选择一个随机数c。
假设Alice想要获得第
i
(
i
∈
{
0
,
1
}
)
i(i\in\{0,1\})
i(i∈{0,1}) 个的信息,Alice可以在群G中选择一个随机数
k
k
k,然后计算第
i
i
i个信息的公钥
K
i
K_i
Ki为
g
k
g^k
gk,之后我们计算获得第1-i个信息的公钥
K
1
−
i
K_{1-i}
K1−i为
c
×
(
g
k
)
−
1
c\times (g^k)^{-1}
c×(gk)−1.然后发送公钥
K
0
K_0
K0给Bob。
Bob收到
K
0
之
后
K_0之后
K0之后,计算
K
1
K_1
K1 为
c
×
(
K
0
)
−
1
c \times (K_0)^{-1}
c×(K0)−1,然后利用这两个公钥加密相应的信息
E
K
0
(
m
0
)
EK_0(m_0)
EK0(m0),
E
K
1
(
m
1
)
EK_1(m_1)
EK1(m1)。把这两个密文发送给Alice。
Alice由于只有第
i
i
i个信息的私钥。因此只能获得第
i
i
i个信息。
Bob并不知道Alice解密的是哪一个信息。
OT协议的扩展:只需要多次执行上面协议即可。
4、关于OT协议的讨论
OT协议的安全性问题
我们要求Alice只能获得一个信息,那么也就要求Alice只能知道一个私钥。那么,上述协议怎么确定Alice只能知道一个私钥呢?
如果Alice能够计算出来
c
×
(
g
k
)
−
1
c\times (g^k)^{-1}
c×(gk)−1对应的私钥,即找到一个p,使得
g
p
=
c
×
(
g
k
)
−
1
g^p = c\times (g^k)^{-1}
gp=c×(gk)−1。
我们把两边都乘以
g
k
g^k
gk。
那么Alice就能解决离散对数问题了(求出c的离散对数)。
因此就保证了Alice只能了解一个私钥,也就是只能求出一个信息。
5、Proxy OT协议的构造
这个协议是OT协议的变体。我们需要加入一个Proxy。
我们把上述OT协议进行稍微的改变即可:
群G公开,生成元为g,然后他们选择一个随机数c
假设Alice想要获得第
i
(
i
∈
{
0
,
1
}
)
i(i\in\{0,1\})
i(i∈{0,1}) 个的信息,Alice可以在群G中选择一个随机数
k
k
k,然后计算第i个信息的公钥
K
i
K_i
Ki为
g
k
g^k
gk,之后我们计算获得第1-i个信息的公钥
K
1
−
i
K_{1-i}
K1−i为
c
×
(
g
k
)
−
1
c\times (g^k)^{-1}
c×(gk)−1,然后发送第0个信息的公钥
K
0
K_0
K0给Bob。把生成的私钥发送给Proxy。
Bob收到
K
0
之
后
K_0之后
K0之后,计算
K
1
K_1
K1 为
c
×
K
0
c \times K_0
c×K0,然后利用这两个公钥加密相应的信息
E
K
0
(
C
(
m
0
)
)
EK_0(\mathcal{C}(m_0))
EK0(C(m0)),
E
K
1
(
C
(
m
1
)
)
EK_1(\mathcal{C}(m_1))
EK1(C(m1))。之后把这两个加密发送给Proxy。其中
C
\mathcal{C}
C表示错误检测码。
Proxy然后利用私钥分别解密两个密文,得到两个明文。其中错误检测码显示正确的就是需要的信息。
四、一些细节问题
但是还有部分细节问题需要解释一下。
首先,就是我们投标者输入价格的是正整数,但是我们混淆电路的输入是二进制bit数。我们解决这个问题的基本思路就是我们限定投标者的输入价格在0~
2
l
2^l
2l之间,然后我们就利用
l
l
l
b
i
t
bit
bit长的二进制数来表示,把一个输入变成
l
l
l个混淆电路的输出即可。
其次,我们要求中设定的是投标者只能和拍卖会进行交流,但是在Proxy OT协议中,投标者需要跟混淆电路进行沟通。我们解决办法就是让拍卖会作为一个中间桥梁。但是为了不泄露信息,混淆电路设置一个公钥加密,用混淆电路的公钥加密这个信息,防止泄露信息。