头图

【隐私计算笔谈】MPC系列专题(十二):比特比较

比特或

上次的科普介绍了共享随机数和比特分享,通过共享随机数来实现比特分享,再通过比特分享来实现本次要介绍的比特串比较。

在介绍比特比较之前先简单介绍一下比特的或。比特异或的实现方法较为简单,利用之前介绍过的𝐹2下Shamir共享机制的加法就能实现。而比特或则无法直接通过Shamir共享机制的加法或者乘法实现。

图片

注意之前介绍过,在算数电路上实现乘法和加法即可实现任意函数,而在布尔电路上实现异或和与即可实现任意函数。安全多方计算就是为了在保护隐私信息下共同计算目标函数,如果把比特与通过使用加法和乘法的函数表示,那么即可通过加法和乘法实现与门的功能。 

图片

思考一下与的特点,当多个比特相或时,其中只要有一个比特的值为1,或的结果就是1,因此可以统计出现1的个数,只要超过0次,最后的值就为1。可以设计出这样一个函数:若函数有个𝑙输入,分别为𝑥1,…,𝑥𝑙,则让\( g=1+\sum{_{i=1}^{l}} x_{i} \),让实现与的函数为𝑓(𝑥1,…,𝑥𝑙): 
图片
将\( g=1+\sum{_{i=1}^{l}} x_{i} \),是因为当\( \sum{_{i=1}^{l}} x_{i}=0 \)时会泄露信息。回忆一下,在Shamir秘密分享机制中,当秘密分享函数的输入为0时,得到的就是秘密,因此需要避免输入为0。让\( g=1+\sum{_{i=1}^{l}} x_{i} \)可以使得函数𝑓(𝑔)的定义域从[0,𝑙]变为[1,𝑙+1],从而避免出现输入𝑔为0的情况。𝑓(𝑔)的具体实现则可通过有𝑛个未知系数的方程,𝑛个方程解𝑛个未知数即可,即𝑓(1)=0,𝑓(2)=⋯=𝑓(𝑙+1)=1。把\( g=1+\sum{_{i=1}^{l}} x_{i} \)和𝑓(𝑔)映射到Shamir秘密共享机制上,加法和乘法对应Shamir中的加和乘,即可实现在共享的比特上的或计算。 

比特比较(Bitwise Compare)

具体要介绍的比较为小于,即如果比特串𝑎<𝑏,则得到的结果为1,如果𝑎>𝑏,则得到的结果为0。假设有两个𝑙比特长的比特串𝑎和𝑏,分别为\( 𝑎=𝑎_0𝑎_1⋯𝑎_{𝑙-1}和𝑏=𝑏_0𝑏_1⋯𝑏_{𝑙-1} \),首先将比特串𝑎和𝑏按比特进行异或,得到比特串\( 𝑐=𝑐_0⋯𝑐_{𝑙-1} \),其中\( 𝑐_𝑖=𝑎_𝑖\oplus𝑏_𝑖,0≤𝑖≤𝑙−1 \)。再计算比特串\( 𝑑=𝑑_0⋯𝑑_{𝑙-1} \),其中\( d_{j}=\vee_{i=0}^{j} c_{i},0≤𝑗≤𝑙−1 \),即比特串𝑑的第𝑗位比特是比特串𝑐从高位起前𝑗位比特的或。

比如,如果比特串𝑎=100 101 ,比特串𝑏=101 011,比特串𝑐为比特串𝑎和𝑏按位异或的结果,比特串𝑐=001 110,比特串\( d=d_0...d_{l-1} , d_0=c_0 , d_1=c0 \vee c1 , d2=c_0 \vee c_1 \vee c_2 , d_{l-1}=c_0 \vee c_1 \vee... \vee c_{l-1} \),可以得到比特串𝑑=001 111。比特串𝑑的第𝑗位比特是比特串𝑐从高位起前𝑗位比特的或,可以观察到当比特串𝑐中某个比特是整个比特串中第一位为1的时候,比特串𝑑从那位起之后都为1。如以上举的例子中,𝑐3为比特串𝑐中第一个出现1的比特,则比特串𝑑的𝑑3以及𝑑3之后都为1,之前都为0。

再接着让\( 𝑒_𝑗=𝑑_{𝑗-1}−𝑑_𝑗 \), 1≤𝑗≤𝑙−1, 𝑒0=𝑑0,因此可以得到比特串𝑒,在上面这个例子中,得到的比特串𝑒=001 000,即比特串𝑒会保留比特串𝑑中第一位出现1的那位,其余位均为0。

最后,计算\( \sum{_{i=0}^{l}} d_{i}.b_{i} \)即为最后的结果,在上面这个例子中结果为1,和比特串𝑎<𝑏相符合。

它所使用的原理是,如果比特串𝑏>𝑎,那么比特串𝑏中第一位1出现的一定比比特串𝑎中的第一位1要早,否则比特串𝑏就小于等于比特串𝑎。

将比特串𝑎和𝑏按位进行异或得到𝑐后,比特串𝑐中第一位1出现的位置就是比特串𝑎和𝑏中最早的第一位1出现的位置。那么如果比特串𝑐中第一位1出现的位置和𝑏中最早的第一位1出现的位置相同,就说明𝑏>𝑎。而接下去做的步骤就是为了证明比特串𝑐中第一位1出现的位置和𝑏中最早的第一位1出现的位置是否相同。在上面的例子中,用橘色表示1,蓝色表示0,则𝑎、𝑏、𝑐为: 

图片

比特串𝑑是从𝑐第一位1出现起,之后都为1。比特串𝑒是除了𝑐第一位1出现的位置为1,其余位都为0。即成功将𝑐中第一位出现1的位置提取了出来。在上面的例子中,𝑑和𝑒用图形表示为:

图片

现在比特串𝑒中1的位置即为𝑐中第一位出现1的位置,将𝑐和𝑏进行按位与,如果𝑏第一位出现1的位置和𝑒中1的位置相同,那么该位按位与的结果就是1,其余位均为0,所有位相与结果之和就是1。反之,𝑏第一位出现1的位置和𝑒中1的位置不同,则为0。

将上述比较方式中的𝑎, 𝑏的各个比特都采用比特分享的方式进行分享,后续的「异或」以及「或」操作都采用我们之前介绍过的对子秘密的「比特异或」和「比特或」操作,即可实现对𝑎,𝑏的多方比较,且不向任何参与者泄露𝑎,𝑏的具体值。
图片


隐私计算与AI全解析_从技术到实战
矩阵元技术团队,⼀群专注于技术、玩转算法、追求⾼效的⼯程师。矩阵元定位于隐私计算和区块链技术服务...

PlatON技术团队,⼀群专注于技术、玩转算法、追求⾼效的⼯程师。

20 声望
154 粉丝
0 条评论
推荐阅读
【隐私计算笔谈】MPC系列专题(十九):三方复制秘密共享(五)
回顾一下,最近几次的科普我们介绍了三方复制秘密共享的秘密分享方式,其主要应用为作为隐私保护机器学习的隐私保护框架,将数据作为秘密,按机器学习对数据的操作进行安全多方计算。

PlatON技术团队阅读 318

封面图
瓴羊隐私计算产品操作过程中如何配置数据?
据需要在 LSCC 进行配置和 CSCC 加入协作项目两个模块。其中,LSCC 配置 有两个步骤:配置数据源(数据库连接符、用户名、密码)和数据表配置。CSCC 主要是把 LSCC 配置的数据表加入创建的协作空间里面,加入后才可...

阿里云开发者阅读 1.1k

瓴羊隐私计算产品的定位是什么?
随着包括新零售、汽车、金融等多行业数字化转型加速,数据的价值正在被越来 越多的企业广泛认知,国家亦出台多项政策,明确数据要素的基础性、战略性地位、 要求加强数据资源整合。

阿里云开发者阅读 952

如何使用Alchemy开发NFT智能合约(ERC721)
使用Solidity开发智能合约并在区块链上部署可能一开始听起来有些吓人:Solidity、安全性、gas优化、开发环境和gas费用,这些只是你需要了解的一些事情,才能让你的代码托管在区块链上。不用担心,我们来帮你梳理...

一只路过的小码农cxy阅读 696

超级账本与区块链应用场景
行业应用的用户是有一定的范围的,一般限制在一个市场或某一个企业内部。这就要求应用具有身份认证和许可授权的功能。其次,企业往往需要数据在传输过程中不会被窃取。要求应用具有保护交易信息传输的设计。

YOLO阅读 684

Hyperledger Fabric 使用 CouchDB 和复杂智能合约开发
在上个实验中,我们已经实现了简单智能合约实现及客户端开发,但该实验中智能合约只有基础的增删改查功能,且其中的数据管理功能与传统 MySQL 比相差甚远。本文将在前面实验的基础上,将 Hyperledger Fabric 的默...

风色幻想阅读 638

Hyperledger Fabric 1.4 环境搭建详解
虚拟机的安装与配置本教程以Vmware Workstation 16 Pro和xw版本为例进行安装与配置讲解,如果已经安装好linux系统,请跳过这一步!

Redamancy阅读 609

PlatON技术团队,⼀群专注于技术、玩转算法、追求⾼效的⼯程师。

20 声望
154 粉丝
宣传栏