安全双方计算
杂谈 | 共 11032 字 | 2023/6/7 发表 | 2023/6/7 更新
刚开始做研究的学习笔记,仅供参考
基本知识
不经意传输(Oblivious Transfer 或 OT)
1-out-of-2
我们主要关注1-out-of-2 oblivious transfer,写作。发送方Alice有两条消息 ,而接受方Bob想知道其中的一个。不经意传输的目的是使接受方得知,却不知道另一个,而发送方不能得知。
我们可以借助离散对数问题来实现OT,原理类似Diffie–Hellman。双方已知大质数(第三步需要 bitwise XOR)以及原根x_0,x_1 \in \Z_p$。
-
Alice 随机生成,发送给Bob
-
Bob 随机生成,发送给 Alice
-
Alice 计算 ,把都发给Bob
-
Bob 根据 解密
-
:
-
:
-
这里由于离散对数问题没有高效解法,中间发送的并不会泄露。证明暂略。
还有很多其他实现,比如The Simplest Protocol for Oblivious Transfer,wiki上还有用RSA的实现。另外,我们也可以使用OT传输密钥,再用对称加密(如AES)加密消息,来实现跟搞效率传输长信息。
1-out-of-n
有了 1-out-of-2 我们就可以实现 1-out-of-n 的OT,这里我们介绍一种简单的需要次实现。
- Alice 对随机生成,并令。
- Alice 向 Bob发送次,第次Alice提供和,Bob只在第次选择前者,其他情况下都选择后者。
- Bob通过前次OT获取,结合第次的得到。
此外还有的算法
OT-Extension
TODO
Corrlated OT
TODO
混淆电路(Yao's Garbled Circuits Protocol)
混淆电路可以让双方在不知晓对方输入的情况下,共同计算一个电路的输出。协议在semi-honest也就是honest-but-curious环境下是安全的,攻击者会在遵守协议的情况下尽可能的多获取信息。我们之后介绍到的应用场景下,协议双方很可能是在公司或政府机构,所以比较适合semi-honest环境。我们也可以通过加入零知识证明等工具改进协议,实现对恶意攻击的安全性。
同样我们需要一个发送方Alice和接受方Bob,各自拥有输入的一部分,而电路(也就是我们要计算的函数)对双方是公开的。
我们需要为电路中的所有“线”(wire)编号,比如图中是输入,是输出,而是中间值。Alice可能持有的值而Bob持有的值,而我们的目的是在Alice不知道,Bob不知道的情况下,让双方合作算出。
混淆电路的协议分为以下几步:
-
Alice生成混淆电路,并发送给Bob。
Alice对于每个生成随机密钥,代表每条线可能的取值。对于电路中的每个门,把输入替换为对应随机密钥,把输出对应的随机密钥用输入加密。比如图中的OR,本来是
0 0 0 0 1 1 1 0 1 1 1 1 我们需要替换为
Alice对每个逻辑门这么做,然后把行的顺序打乱,全部发给Bob。
-
Alice把持有的输入发送给Bob。
比如Alice已知,那么就发给Bob。Bob只知道密钥对应的线,但不知道原始值。
-
Alice通过不经意传输把Bob持有的输入对应的密钥发送给Bob。 Alice每次发送,而Bob选择接受对应的值。
-
Bob计算混淆过的电路的输出。 选择Bob有了所有输入对应的密钥,可以计算电路的结果。
-
Alice和Bob交换结果。 要么Alice把对应的输入发送给Bob,要么Bob把计算结果发给Alice。
GMW
TODO: 搞懂
SHADE (Secure HAmming DistancE Computation )
SHADE是一种基于(1-out-of-2 Oblivious Transfer) 计算汉明距离(Hamming Distance)的协议,我们这里介绍一种基本版的协议(The Basic Scheme),同样在semi-honest环境下是安全的。
文中还介绍了另一种较为复杂的Fully Secure Scheme,在恶意环境下也是安全的。暂略。
一对一
Alice和Bob各自有长度为的位串,我们的目的使一方得到和的汉明距离而另一方什么都不得到。
- Alice随机生成个整数 并计算。
- 对于每个, Alice和Bob进行一次 :
- Alice发送
- Bob选择 并得到
- Bob 计算
- Bob把发送给Alice或Alice把发送给Bob,接受方可以得到 。
TODO:证明
一对多
类似地,我们可以高效地用SHADE计算一个和多个的汉明距离。
-
Alice对每个随机生成个整数 并计算。
-
对于每个, Alice和Bob进行一次 :
- Alice发送并列的
- Bob选择 并得到
- Alice发送并列的
-
Bob 计算
-
Bob把发送给Alice或Alice把发送给Bob,接受方可以得到 。
GSHADE
为了统一风格,这里用了和原论文不同的符号和公式。
目的
GSHADE协议的目的是在双方在不泄露输入的情况下,在其私有输入上交互计算一些距离量(distance metrics),包括汉明距离、欧氏距离和点积等。 GSHADE可用于生物识别。服务器持有生物识别信息的数据库,而用户拥有个人数据。他们可以计算距离量,判断是否小于给定阈值来检查用户是否已经注册(存在于数据库中),而不透露他们的数据。
协议
我们可以推广SHADE到,所有可以被表示为
的函数,其中的定义域为长度为n的位串,而的定义域不受限制。可以简单理解为,可以分别用再通过的每一位和做计算,并最终求和来得到结果的函数。
-
我们前面提到的汉明距离可以表示为 ,所以属于。
-
点积(Scalar Product) 对于, 以及, 。我们有
-
平方欧几里得距离(Squared Euclidean Distance) 对于, 以及, 。我们有
一对一
GSHADE协议是在SHADE基础上改进的:
Alice和Bob各自有长度为的位串,我们的目的使一方得到而另一方什么都不得到。
-
Alice随机生成个整数 并计算。
-
对于每个, Alice和Bob进行一次 :
- Alice发送
- Bob选择 并得到
-
Bob 计算
-
Bob把发送给Alice或Alice把发送给Bob,接受方可以得到
一对多
类似地,我们可以高效地用GSHADE计算一个和多个的距离量。
-
Alice对每个随机生成个整数 并计算。
-
对于每个, Alice和Bob进行一次 :
-
Alice发送并列的
-
Bob选择 并得到
-
-
Bob 计算
-
Bob把发送给Alice或Alice把发送给Bob,接受方可以得到
比较
虽然GSHADE本身是用来计算数值而非比较,但由于Alice持有而Bob持有,我们很容易就可以利用混淆电路或者GMW来让两者合作计算比较电路。
应用与实验
一些生物识别算法是基于汉明距离或欧式距离的,所以我们可以应用GSHADE。
我使用GSHADE论文中提供的代码在两台2核4G的AWS Lightsail环境中进行了测试,GCC的版本为7.3.1。我使用了nethogs
进行流量统计。另外原版的Makefile中编译器使用了-O3
,我编译后运行时卡死,我改成-O2
以后得到了正常的数据。
TODO: 虽然论文中说他们用了GMW表格中也写了GMW,但是他们提供的代码里似乎并没有GMW的部分?
SCiFi
SciFi是一个基于汉明距离的人脸识别算法,他将人脸照片提取为长度900的位串,两个照片的汉明距离就是两张脸的差异大小。
原论文是通过同态加密计算汉明距离,再通过OT得到是否距离是否小于阈值。由于同态加密是公钥加密,速度比较慢。这里是原文在Java环境下对于100张图片测试的结果
Offline preprocessing at the client took about 213 sec. Of this time, 38 seconds were spent on preparing 900 homomorphic encryptions, 71 seconds were used to send these encryption to the server, and 92 seconds were spent on running the preprocessing phase of the 1-outof-180 OT (which is used since we set dmax = 180).
而 Huang 提出了一种基于GC的协议,不仅计算更快,而且计算电路后直接加入比较电路得出结论,而不需要再进行OT。
Computing the Hamming distance between two 900-bit vectors took 0.019 seconds and used 56 KB bandwidth in the online phase (including garbled circuit generation and evaluation), with 0.051 seconds (of which the OT takes 0.018 seconds) spent on off-line preprocessing (including garbled circuit setup and the OT extension protocol setup and execution). For the same problem, the protocol used in SCiFI took 0.31 seconds for on-line computation, even at the cost of 213 seconds spent on preprocessing. 3 The SCiFI paper did not report bandwidth consumption, but we conservatively estimate that their protocol would require at least 110 KB.
TODO: 并没太看懂这里为什么是For the same problem
,一个是两张图片对比而另一个是一个和一百个图片对比?但就算也比小很多。
42使用了GMW,得到了如下的数据:
最后就是本论文用GSHADE的数据:
我实际测试后得到了以下的数据:
Required time for computing the 1-vs-100 Hamming distance on 900-bit elements: 0.016897s
0.124 MB
Required time for computing the 1-vs-320 Hamming distance on 900-bit elements: 0.060546s
0.366 MB
Required time for computing the 1-vs-50000 Hamming distance on 900-bit elements: 6.69268s
53.851 MB
可以看到时间和流量都比原文要少,推测是因为少了GMW对比的部分?
IrisCodes
IrisCodes 是一种基于 Normalized Hamming Distance 的虹膜识别协议。虽然计算过程中有除法 GSHADE 并不直接支持,但我们可以使用 GSHADE 分别计算分子和分母,再利用混淆电路或者GMW进行比较。
虽然论文中给出了如下的对比数据,但代码的README中提到The Normalized Hamming distance is currently not implemented, due to problems with the internal program structure.
,所以我也无从测试。
FingerCodes
FingerCodes 是一种基于欧式距离的指纹识别算法。作者对比的论文中采用了同态加密进行计算并使用混淆进行匹配
文中给出了如下的数据:
我实际测试后得到了以下的数据:
Required time for computing the 640-dimensional 1-vs-128 Euclidean Distance with 8-bit coordinates: 0.103081s
1.273 MB
Required time for computing the 640-dimensional 1-vs-1024 Euclidean Distance with 8-bit coordinates: 0.586264s
10.046 MB
可以看到时间和流量都比原文要少,推测是因为少了GMW对比的部分?
Eigenfaces
如图,Eigenfaces 需要在Projection用到点积在Distance Computation欧式距离,这两种算法都是GSHADE支持的。
最初的[18]中使用了同态加密,而[25]使用了同态加密和混淆电路(便于比较),再之后是[42]使用GMW。
文中给出了如下的数据:
我实际测试后得到了以下的数据:
Required time for computing the Eigenfaces of a 10304 pixel image with 8-bit pixels and a 320-element database: 0.250193s
3.217 MB
Required time for computing the Eigenfaces of a 10304 pixel image with 8-bit pixels and a 1000-element database: 0.327062s
4.974 MB
可以看到时间和流量都比原文要少,推测是因为少了GMW对比的部分?
总结
可以看到我实验的时间和流量都比原文要少,推测可能是因为没有GMW比较的部分,如果加上GMW和原文提供的数据还是比较相符的。
参考
- 混淆电路介绍(一)不经意传输: https://zhuanlan.zhihu.com/p/126396795
- 混淆电路介绍(三)混淆电路原理: https://zhuanlan.zhihu.com/p/138371497
- GMW Protocol 介绍: https://zhuanlan.zhihu.com/p/237061306
- How to Exchange Secrets with Oblivious Transfer: https://eprint.iacr.org/2005/187.pdf
- More Efficient Oblivious Transfer and Extensions for Faster Secure Computation: https://eprint.iacr.org/2013/552.pdf
- SHADE: Secure HAmming DistancE Computation from Oblivious Transfer: https://eprint.iacr.org/2012/586.pdf
- GSHADE: Faster Privacy-Preserving Distance Computation and Biometric Identification: https://encrypto.de/papers/BCFPSZ14.pdf
- SCiFI – A System for Secure Face Identification: https://ieeexplore.ieee.org/document/5504789
- Faster secure two-party computation using garbled circuits: https://www.usenix.org/legacy/event/sec11/tech/full_papers/Huang.pdf