IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> Fiat-to-NFT底层技术:MPC多方计算协议详解 -> 正文阅读

[区块链]Fiat-to-NFT底层技术:MPC多方计算协议详解

本文将尽可能以浅显易懂的方式介绍 MPC 及相关概念,不涉及晦涩难懂的理论技术,以便读者对 MPC 有一个整体的认识。读者如果感兴趣可以查阅相关资料。文中所举例子仅用于介绍 MPC 的功能、概念,不具有价值导向。

什么是MPC

MPC 全称 Multi-Party Computation,即多方计算,是解决某些问题的协议(或者说方案)的总称。这些问题通常涉及多个参与方(party,例如多家公司),每个参与方持有一定的隐私数据(例如公司的财产),希望不公开这些数据,但又可以利用这些数据计算某一函数(例如求最大值:哪个公司财产最多),每个参与方获得相应的计算结果(可能相同,可能不同)。

我们经常听到“安全多方计算”或者“多方安全计算”,就是要求一个 MPC 的协议是安全的,安全性的基本要求:一是隐私性,即不能泄露任何一方的隐私数据;二是正确性,即保证计算的结果是正确的。此外,还有其他要求例如公平性、输入的独立性、保证输出送达等。通常我们提到 MPC 就是指安全 MPC,显然一个不安全的协议不会受到青睐。

MPC能干什么

MPC 具有广泛的实际应用潜力,从安全的统计分析,到更特定的领域,例如,电子政务,金融监管,生物医学计算,在保护数据安全的同时,实现联合数据分析、数据安全查询、数据可信交换等。

接下来,我们通过一个“比武招亲”故事介绍一下 MPC 的几个例子及相关概念(再次声明不传播任何价值观念!)。故事是这样的,地主家有个漂亮女儿,到了适婚年龄,地主想要找一良婿,便贴出了招亲告示。

1.百万富翁问题:MPC 的经典问题

告示一经张贴,便引来了很多男士。地主设置第一关:考察各位男士的收入情况。当然这些男士并不会乐意去公开自己的收入,怎么办?借助MPC整数比较协议。在不泄漏隐私的情况下可以比较收入的高低。

这一问题最早是由计算机科学家、图灵奖获得者姚期智教授通过百万富翁问题提出的:两个百万富翁和想知道他们谁更富有,但他们都不想让对方知道自己财富的任何信息。在双方都不公开财富信息的情况下,如何比较两个人的财富多少,并给出可信证明。姚教授通过混淆电路(garbling circle)给出了一种解决办法,近年来也有一些基于同态加密的方案提出,有兴趣的读者可以查阅相关资料。

最初百万富翁问题可以看作是两方计算,当扩展到多个富翁,就是我们经常听到的拍卖问题。多个参与方分别出价,出价最高(或最低)者即为拍卖的获胜者。MPC 可以很好的解决这一问题,计算出最高(低)值,但不泄露其他出价。

2.隐私集合求交(Private Set Interp,PSI)

回到比武招亲的故事,地主给女儿招亲,当然要找一个兴趣爱好与女儿相投的男士。例如:礼、乐、射、御、书、数,等等。如何在不泄露彼此兴趣爱好的情况下,找出二人的共同爱好?这一问题可以通过 PSI 来解决。

PSI 是 MPC 的一个分支。PSI是指,参与双方在不泄露任何额外信息的情况下,得到双方持有的隐私数据的交集。在这里,额外的信息指的是除了双方的数据交集以外的任何信息。PSI 在现实场景中非常有用,比如在纵向联邦学习(机器学习)中做数据对齐,或是在社交软件中,通过通讯录做好友发现,计算广告的实际效果等。目前已有一些解决方案,例如利用不经意伪随机函数(Oblivious Pseudorandom Function),参与方利用自己的数据计算函数值,然后公开函数值进行比对即可。

3. 不经意传输(Oblivious Transfer,OT):MPC的重要组件

通过前两关,有一位候选人 Bob 挺到了最后,成为地主女婿的候选人。地主为 Bob 准备了两份生辰八字,一份是地主自己的,一份是地主夫人的。地主只能给 Bob 看其中一份,但是 Bob 并不想泄露自己看了地主还是地主夫人的生辰八字。

怎么办?可以借助 OT 协议。OT 可以保护 Bob 的隐私,Bob 选定其中一份查看,得不到关于另一份的任何信息,同时地主也不知道 Bob 到底看了哪一份。OT 是很多 MPC 方案的重要组成部分,例如前文提到的混淆电路,不经意伪随机函数。

我们给出一个解决办法。Bob 去邮局买两个带锁的邮筒,这两个邮筒除(锁)钥匙不同外,其他完全相同。请注意每个人都可以往邮筒里放信件,但是只有拥有钥匙的人才能开锁打开邮筒取出并查看信件(类似于密码里的public key加密)。

Bob 将邮筒贴上标签:一个贴“岳父”,一个贴“岳母”。如果 Bob 想要看岳父的生辰八字就把贴有岳父标签的邮筒的钥匙留下,把贴有岳母标签的邮筒的钥匙破坏扔掉。否则,如果想看岳母的生辰八字就只留下贴有岳母标签的邮筒的钥匙。然后将两个邮筒交给地主。地主收到邮筒后将自己的生辰八字放入贴有岳父标签的邮筒,将自己夫人的生辰八字放入贴有岳母标签的邮筒,然后把邮筒还给 Bob。Bob 找个没人的小树林,用自己留下的钥匙打开相应的邮筒就可以得到自己想要看的生辰八字。因为 Bob 只有一把钥匙,所以只能看到他想要看的生辰八字。对于地主来说,其不知道 Bob 留了哪一吧钥匙,当然也就不知道 Bob 到底查看了谁的生辰八字。

聪明的你一定会问如果 Bob 作弊,把两个钥匙都留下怎么办,这将是另外一个问题,密码学里会有更强的工具要求 Bob 遵守规则,此处不再讲述。

4.门限密码学:MPC的重要分支,实现权力分割、去中心化的有效工具

故事结局很美好,地主纳得良婿,Bob 抱得美人归。

那么小两口的财产归谁管呢?交给地主?交给地主女儿还是Bob自己管?如果一个人管,那么 Ta 就成了财富聚集中心,就会成为坏人的靶点。如何去中心化,实现权力分割呢?可以采用门限密码学。

门限密码学也是 MPC 的一个重要分支。在门限密码中,一项任务(如解密、签名)的完成不能一个人说了算,而是一部分共同决定的,相当于委员会共同决议。参与决议这一部分成员可能是是全体成员,也可能只是其中一部分,这个界限被称为门限(threshold),如果成员数量少于这个门限,则任务无法执行。门限密码一个重要组件叫做秘密分享 secret sharing,顾名思义,把秘密分割成多个片段分别进行保管,每次需要门限个片段才能恢复出秘密。

回到我们的故事,Bob 可以把财产存入银行卡,然后采用(2,2)的门限秘密分享,将银行卡密码进行分割成两份,两个人每人持有一份。每次花钱需要两口子共同确认,一个人取不出钱。或者可以购买一个具有两把锁的保险柜,每个人持有一把钥匙,只有两个人合作才能打开保险柜。

考虑到实际应用,(2,2)秘密分享会存在一个问题,如果有一方忘记自己的密码片段或者丢一把钥匙怎么办,那岂不是银行卡、保险柜打不开了么(当然可以去银行找回)。考虑这种情况,Bob 可以采用(2,3)的秘密分享,将密码分割成三份,两口子每人一份,放在银行一份。三份中有两份存在且正确就可以恢复出原来的密码。

我们考虑一般的(t,n)门限密码:秘密被分割成 n 个片段,只有大于或者等于 t 个片段才能恢复出原始秘密,此处要求 t 不能大于 n。在门限加密方案中,用于解密的密钥被分割成 n 个片段,每次解密时需要至少 t 个片段。在门限签名中,用于签名的密钥被分割成 n 个片段,至少需要 t 个片段才能生成一个正确的签名。这种门限方案提高了系统的安全性和可靠性。一个坏蛋要想破坏这个系统需要窃取 t 个片段。而且即使系统中有 t-1 个片段丢失也不会破坏整个系统的安全性。(当然如果t大于n的一半,t-1 个片段丢失会导致系统无法正常输出结果而停止运行,但是不会泄漏原始的秘密)。

随着区块链、数字货币的流行,MPC 也越来越受到开发者的青睐。在区块链世界里, private key (一长串无序数字,可视为一把私有的钥匙)控制着一切。 private key 完全控制你的资产,例如,比特币,NFT 等等,一旦丢失或者被盗,后果不堪设想,尤其是行业大佬(每年都会有由于 private key 丢失遗忘导致的比特币丢失),当然对于穷鬼来说后果不太严重。区块链不像中心化的可信银行机构,密码丢失可以挂失、冻结或找回。区块链网络里没有可以相信的(中心)节点,因此保护好 private key 是一件十分重要的事情

为了解决密钥管理的问题,区块链wallet应运而生。最初的wallet为了帮助用户恢复,备份 private key ,会在创建wallet时提供 12~24 个单词作为助记词,例如 apple、cat;助记词没有什么特殊意义,只是帮助用户记忆。它不像 private key 那样是一串无规律的数字。利用助记词可以导出用户的所有 private key (一个用户可以有不止一个 private key ,可以视为有多个账号)。但是实际上,记住这些助记词也不是一件容易的事情。六位数字的银行卡密码都记不住何况是十几个单词!

一个替代方法就是委托给第三方管理,例如交易平台。虽然区块链几乎不可能被破解,但是大量资金注入第三方会使其成为黑客攻击的靶点。事实上中心化交易平台是脆弱的,很容易成为目标,请看以下案例:

2016 年 8 月 2 日,Bitfinex 交易平台损失了 7200 万美元。

2018 年 1 月 26 日,日本最大的交易平台 Coincheck 损失了 5.32 亿美元。

2018 年 6 月 30 日,韩国最大的交易平台 Bithumb 损失了 3100 万美元。

MPC 技术可以一定程度上缓解密钥管理的困难问题,同时保证较好的安全性。采用 MPC 特别是门限签名技术,用户 private key 以分布式形式生成,全程不会出现完整的 private key ,从根本上降低了 private key 泄漏的风险。每个服务器只存储 private key 的一个片段,避免某一个或某几个服务器被攻击而造成的损失,同时各个服务器可以定期更新存储的片段,提高安全性。

越来越多的公司开始为用户着想,基于 MPC 构建安全的数字wallet,既可以为用户提供更加友好的体验:用户无需自己管理 private key ,无需助记词,通过已有的社交软件如微信、支付宝、邮箱等即可登录,体验区块链的乐趣;又可以提供更强的安全性, private key 分片多地存储,除用户外任何人无法获得完整的 private key (用户可以提出申请,核验身份后可以导出 private key )。

考虑这样一个情况,采用(2,3)形式的秘密分享,将 3 个片段分别存储在百度,阿里,腾讯三家的服务器上,任何两家同时参与可以生成一个合理签名。一个攻击者需要同时破坏两家的服务器才能窃取你的 private key ,这种概率还是比较低的。当然,这三家也不会为了你那几百、几千、甚至几万的资产,去合谋破坏你的 private key 。

此外,多重签名也是与门限签名很类似的一种 MPC 技术。不同于门限签名只有一个 private key ,多重签名有多个 private key ,每次签名需要一定数量的(门限个) private key 分别签署同一笔交易,验证签名需要逐一验证每个签名。可以这样理解:(2,2)-门限签名需要两个领导合作才能得到一个正确签名,(2,2)-多重签名需要两个领导分别签名,拥有 2 个签名才算有效。

类似地,还有仅采用秘密共享的方案。与门限签名十分类似。利用秘密共享,将 private key 进行分割,然后分别存储。签名时先恢复出完整 private key ,利用 private key 进行签名。而在门限签名中, private key 是分布式生成的,全程不可见,每个服务器存储一个片段,签名时每个服务器利用自己的片段进行签名,最终得到一个正确签名。门限签名不会泄漏 private key ,而秘密共享需要每次恢复 private key ,会增大泄漏 private key 的风险。

以下,我们给出一个中心化wallet方案(依赖可信中心进行 private key 保管/委托)和基于上述三种技术(门限签名,多重签名,秘密共享)的 MPC 去中心化wallet方案的对比。

  • 相比于多重签名,门限签名成本较低。现有的链上多重签名需要每个节点均支付gas费,才能将链下数据传输至链上(每个节点将外部数据上传到区块链都要支付一定的gas费用)。虽然能保障去中心化共识的安全性和可靠性,但成本高昂。如果有10个节点采集链下数据,就得支付10笔gas费;且不论在最终结算之前,gas费还有可能要多次调整。采用门限签名,节点全部反馈数据在链下聚合成单一数据点,然后会有一个节点将数据发回至链上,全程仅收取一笔gas费,成本低。

  • 安全性首先中心化的wallet相当于“把所有鸡蛋都放到一个篮子里”,例如中心化交易平台,其安全性较低,如前文所提,交易平台被攻击的事件时有发生。采用MPC技术的去中心化方案安全性有所提高, private key 分割成片段,分别进行存储,部分片段丢失不会泄露 private key 。特别是基于门限签名的方案,在整个算法周期中从来未出现过完整 private key ,安全性很高。相对而言,由于基于秘密共享的方案需要恢复出完整 private key ,这增大了泄漏完整 private key 的风险。

  • 效率,尤其是验签效率。通过秘密共享、门限签名所产生的签名信息与一次单签名(中心化签名)无差异,这意味着验签过程与单签名相同,不会产生额外的手续费。链上无需新的智能合约来提供额外的签名算法支持。而多重签名需要验证每一个签名,需要更多的计算,且需要智能合约支持以及因链而异的算法设计。

  • 匿名性,或称为交易的不可连接性。在门限签名方案中,参与签名者的信息将不可见,因为对于链上节点,每次信息都是用同一个public key进行验签;但是多重签名需要验证多个public key,会导致交易之间可以相关联(例如2个交易的签名可能出现了同一个public key)。

当然,门限签名也会有一些劣势,例如链下计算签名的效率并不是太高,需要的通信复杂度,交互复杂度都还很高。这使得门限签名距离大规模应用还有一段距离,目前已有的基于(t,n)门限签名的方案中,t和n都比较小。常见的有(2,2);(2,3);(3,5)等。

MPC 未来

MPC 在保护隐私、破除数据孤岛方面将发挥重要作用,是实现“数据可用不可见”的强大工具。

目前,我们处在数据爆炸的时代,数据发挥着越来越重要的作用。英国期刊《经济学人》(The Economist)发表封面文章称数据已经取代“石油”成为当今世界最有价值的资源,将数据的重要性提到了无与伦比的高度。与此同时,数据隐私泄漏的事件层出不穷:

2013~2014 年,雅虎遭受黑客攻击,导致至少 15 亿用户隐私信息泄露。

2013 年,斯诺登披露的棱镜计划,导致了当时美国、中国、欧盟和俄罗斯等政体间的政治危机。

2014 年 7 月,摩根大通(JPMorgan Chase)遭到黑客攻击,造成 7600 万账户信息泄露。

2018 年,剑桥分析公司涉嫌窃取 5000 万 facebook 用户的信息,操纵美国大选及英国脱欧公投。

2020 年,视频软件 zoom,已经连续发生 4 起与安全和隐私相关的数据泄露事件。

进一步地,"数据孤岛"现象普遍存在。数据流动起来,才能产生巨量的价值。但由于以下种种原因,数据无法流动,导致数据孤岛形成:

  • 个人数据和企业数据受限于法律法规要求,将不能直接用于明文交易;

  • 数据是企业的核心资产,不愿意进行明文交易;

  • 跨企业间系统、身份等无法打通;

  • 明文数据在交易后,数据价值无法保全。

因此,如何在保证数据隐私安全的前提下,让数据流动起来是难点之一。MPC 会是解决这一难点的有力工具,我们相信,随着研究的不断深入,越来越多的 MPC 项目将会落地,并发挥越来越重要的作用。

近日,Conflux 研发团队公开发布的针对使用法币进行 NFT 交易的通用解决方案 Fiat-to-NFT 中,就采用了 MPC、门限签名等密码学技术,屏蔽了区块链的技术细节,使签名、授权、转移等操作对应用层透明。

(Fiat-to-NFT 整体架构图)

Fiat-to-NFT 方案中,Conflux 提供了可信的 MPC 联盟,帮助用户进行 private key 分片托管,只有通过验证的用户本人,可以实现 private key 和资产的提取,保证了用户的资产安全性。

目前,“基础服务层”相关的密码学探索和攻关已经完成,接口服务已在开发中,不久的将来就会开放试运行。在服务开发的同时,有意向的社区应用已经开始接洽,即将有相关产品面世。

法币交易 NFT 仅是支持的场景之一,Fiat-to-NFT 未来可以作为打通区块链世界和现实世界的技术通道,让传统互联网应用可以在区块链上探索无限可能。

欢迎对 NFT 与 Fiat-to-NFT 方案感兴趣的企业或项目团队与我们联系,索要相关资料,共同合作,一起探索 NFT 未来世界。

联系方式:fiat-to-nft@confluxnetwork.org

文中部分内容参考如下链接:

[1] https://www.sohu.com/a/374251558_115128

[2] https://zhuanlan.zhihu.com/p/114531608

[3] https://zhuanlan.zhihu.com/p/339320212

END

了解最新动态

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:25:05  更:2021-09-02 11:25:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:30:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码