建筑精神分裂症 Facebook Libra

两年后,我回到博客上发表了一篇与通常有关 Haskell 和数学的无聊讲座不同的帖子。 过去几年我一直在欧盟研究金融科技,现在似乎是时候写一个很少受到科技媒体关注的话题了。

Facebook 最近发布了一个名为 Libra 的“新金融服务平台”。 它被定位为基于一篮子国际货币的数字结算系统,这些货币在“区块链”上管理并存储在瑞士管理的资金池中。 该项目的目标雄心勃勃,并会产生大规模的地缘政治后果。

В “金融时报” и “纽约时报” 有很多关于拟议金融体系背后不健全的货币和经济假设的明智文章。 但能够从技术角度进行分析的专家还不够多。 没有多少人致力于金融基础设施并公开谈论他们的工作,因此该项目在科技媒体上没有得到太多报道,尽管它的内部结构向世界开放。 我的意思是存储库中的开源 天秤座 и 校准组织.

向世界开放的是一个建筑上精神分裂的工件,声称是全球支付基础设施的安全平台。

如果您深入研究代码库,系统的实际实现会完全偏离既定目标,并且以最奇怪的方式偏离。 我确信这个项目有一段有趣的公司历史。 因此,可以合理地假设它是经过一番精心设计的,但实际上我看到了一组非常奇怪的架构决策,它们破坏了整个系统并使用户面临风险。

我不会假装对 Facebook 这家公司有客观的看法。 IT界很少有人用同情的眼光看她。 但将其声明与已发布的代码进行比较,清楚地表明其所声明的目的从根本上是具有欺骗性的。 简而言之,这个项目不会赋予任何人权力。 他仍将完全处于一家公司的控制之下,该公司的广告业务深陷丑闻和腐败,以至于该公司别无选择,只能尝试使其支付和信用评分多样化以求生存。 明确的长期目标是充当消费者基于个人社交媒体数据获得信贷的数据经纪人和中介。 这是一个绝对可怕和黑暗的故事,没有得到应有的关注。

这个故事唯一的优点是,他们创造的神器非常不适合手头的任务,只能被视为傲慢的行为。 该项目存在几个主要的架构错误:

解决访问控制网络中的拜占庭将军问题是一种不一致的设计

拜占庭将军的问题是分布式系统研究的一个相当狭窄的领域。 它描述了网络系统承受随机组件故障同时采取对系统运行至关重要的纠正措施的能力。 一个有弹性的网络必须能够抵御多种类型的攻击,包括重启、中断、恶意负载和领导选举中的恶意投票。 这是Libra架构的主要决定,在这里完全没有意义。

这个额外结构的时间复杂度开销取决于算法。 有很多关于解决拜占庭将军问题的 Paxos 和 Raft 协议变体的文献,但所有这些结构都会带来额外的通信开销 建筑精神分裂症 Facebook Libra 以维持法定人数。 对于Libra,他们选择了一种通信成本尽可能最高的算法 建筑精神分裂症 Facebook Libra 如果领导失败。 跨多种类型的网络故障事件可能会重新选举领导者,从而产生额外的开销。

对于在高度监管的跨国公司联盟内运行的系统来说,所有用户都有 Facebook 签名的代码,并且对网络的访问也由 Facebook 控制,因此在共识层面考虑恶意参与者根本没有意义。 目前还不清楚为什么这个系统甚至可以解决拜占庭将军的问题,而不是简单地维护一致的审计跟踪来检查合规性。 万事达卡或 Andressen Horrowitz 运行的 Libra 节点突然开始运行恶意代码的可能性是一个奇怪的计划场景,只需确保协议完整性和非技术(即法律)手段即可更好地解决这一问题。

国会证词将该产品称为微信、支付宝和 M-Pesa 等新国际支付协议的竞争对手。 然而,这些系统都不是为了在验证者池上运行来解决拜占庭将军问题而设计的。 它们只是在传统的高带宽总线上设计的,该总线根据一组固定的规则进行布线。 这是设计支付系统的自然方法。 设计精良 支付系统根本不会遇到双花和分叉的问题。

共识算法的开销并不能解决任何问题,只是限制了系统的吞吐量,除了公共区块链的货物崇拜之外,没有任何原因,这不适用于此用例。

Libra没有交易隐私

根据文档,该系统的设计考虑到 假名,即协议中使用的地址是从椭圆曲线上的公钥获得的,不包含有关帐户的元数据。 然而,在组织治理结构的描述或协议本身中,没有任何地方表明交易中涉及的经济数据将如何对验证者隐藏。 该系统旨在将交易大规模复制给一系列外部各方,根据现有的欧洲和美国银行保密法,这些外部各方不应了解经济细节。

各国的数据政策很难协调,特别是考虑到不同司法管辖区的法律法规不同,对数据保护和隐私的文化观点也不同。 该协议本身默认对联盟成员完全开放,这是一个明显的技术缺陷,不符合其设计要求。

Libra HotStuff BFT 无法达到支付系统所需的吞吐量

在英国,BAC 等清算系统每月能够处理约 580 亿笔交易。 与此同时,Visa 等高度优化的系统每天可以处理 000 笔交易。 性能因事务大小、网络路由、系统负载和 反洗钱检查 (反洗钱、洗钱计划)。

随着民族国家在过去十年中对其清算基础设施进行了现代化改造,Libra 正试图解决对国内转账来说并不是真正问题的问题。 对于欧盟的零售消费者来说,转移资金根本不是问题。 在传统基础设施上,这可以通过标准智能手机在几秒钟内完成。 对于大型企业转账,存在与转移大量资金相关的各种机制和规则。

除了相关司法管辖区之间的规则和要求存在差异之外,没有任何技术原因导致跨境支付无法即时处理。 如果在交易链的不同阶段多次执行必要的预防措施(客户尽职调查、制裁检查等),则可能会导致交易延迟。 然而,这种延迟纯粹是监管立法和合规性的结果,而不是技术的结果。

对于消费者来说,英国的交易没有理由不会在几秒钟内清算。 欧盟的零售交易确实正在放缓 KYC 检查 政府和监管机构施加的(了解你的客户)和反洗钱限制,同样适用于 Libra 支付。 即使 Facebook 要克服跨境传输和私人数据传输的障碍,所提出的模型距离全球交易吞吐量还有数百人年的距离,并且可能需要从头开始重新设计。

Libra Move 语言不正确

该白皮书大胆宣称一种名为“Move”的新的、未经测试的语言。 从编程语言理论(PLT)的角度来看,这些陈述是相当可疑的。

Move 是一种新的编程语言,用于在 Libra 区块链上实现自定义交易逻辑和智能合约。 由于 Libra 的目标是有一天为数十亿人服务,因此 Move 的设计将安全性作为首要任务。

Move 的一个关键功能是能够使用受线性逻辑启发的语义来定义任意资源类型。

在公共区块链中,智能合约面临公共网络的逻辑,存在托管账户、洗钱、OTC 代币发行和赌博等问题。 所有这一切都是通过一种名为 Solidity 的设计极其糟糕的语言完成的,从学术的角度来看,这使得 PHP 的作者看起来像个天才。 奇怪的是,Facebook 的新语言似乎与这些技术无关,因为它实际上是一种脚本语言,旨在用于模糊的企业目的。

在私人分布式账本中,智能合约是顾问抛出的术语之一,而不太考虑明确的定义或目的。 企业软件顾问通常通过模糊性赚钱,而智能合约是企业蒙昧主义的典范,因为它们实际上可以被定义为任何东西。

在声明其安全性之后,我们需要查看该语言的语义。 编程语言理论中的正确性通常由两个不同的证明组成:“进步”和“保存”,它们决定了语言评估规则的整个空间的一致性。 更具体地说,在类型论中,如果函数恰好使用其参数一次,则该函数是“线性”的;如果最多使用一次,则该函数是“仿射”的。 线性类型系统通过为所有函数子表达式分配类型并跟踪调用位置,提供静态保证,确保声明的线性函数是真正线性的。 这是一个需要证明的微妙属性,并且对于整个程序来说并不容易实现。 线性类型仍然是一个非常学术的研究领域,受到 Clean 中类型唯一性实现和 Rust 中类型所有权的影响。 有一些初步建议将线性类型添加到 Glasgow Haskell 编译器中。

Move 关于使用线性类型的声明似乎是对编译器的无根据的深入研究,因为 没有这样的类型检查逻辑。 据了解,白皮书引用了Girard和Peirce的经典文献,而实际实施中并没有类似的内容。

此外,所谓的安全语言的形式语义在实现或文档中都没有出现。 该语言足够小,可以在 Coq 或 Isabelle 中找到正确语义的完整证明。 实际上,使用过去十年发明的现代工具很有可能实现将证明转移到字节码的端到端完整转换编译器。 我们知道该怎么做,首先 乔治·内库拉和彼得·李的作品 早在1996年。

从编程语言理论的角度来看,不可能检验 Move 是一种可靠且安全的语言的说法,因为这些说法纯粹是摆手和营销,而不是实际证据。 对于一个需要处理数十亿美元交易的语言项目来说,这是一个令人震惊的情况。

Libra 密码学存在缺陷

构建安全的密码系统是一个非常困难的工程问题,最好以健康的偏执态度来处理危险代码。 这个领域有重大突破,比如微软珠穆朗玛峰项目,它正在构建一个可验证的安全平台 TLS 堆栈。 已经存在创建可验证原语的工具。 虽然这很昂贵,但显然并没有超出 Facebook 的经济能力。 然而,该团队决定不参与该项目,该项目被宣布为全球金融体系的可靠基础。

天秤座项目 这取决于 来自几个相当新的库,用于创建最近几年才出现的实验性密码系统。 不可能说对以下工具的依赖是否安全,因为这些库都没有经过审计,也没有标准的披露政策。 特别是,对于一些核心库来说,对于侧信道攻击和定时攻击的防护并不确定。

  1. ed25519-dalek
  2. curve25519-dalek

Libra 库变得更具实验性并且超越 标准型号,应用非常新技术,例如可验证随机函数(VRF)、双线性对和阈值签名。 这些方法和库可能是合理的,但将它们全部组合到一个系统中会引起对攻击面区域的严重担忧。 所有这些新工具和技术的结合大大增加了证明安全性的复杂性。

应该假设整个加密堆栈容易受到各种攻击,除非另有证明。 Facebook 著名的“快速行动,打破常规”模型无法应用于处理客户财务数据的加密工具。

Libra 未能落实消费者保护机制

该支付系统的一个显着特征是,如果支付因诉讼而取消或导致意外或系统故障,则能够回滚交易。 Libra 系统被设计得“完整”,不包含支付取消的交易类型。 在英国,所有 100 英镑至 30,000 英镑之间的付款均须遵守《消费者信贷法》。 这意味着,如果所购买的产品出现问题或付款接收方不提供服务,支付系统将与卖家共同承担责任。 类似的规则也适用于欧盟、亚洲和北美。

Libra 目前的设计不包括遵守这些法律的协议,也没有创建协议的明确计划。 更糟糕的是,从架构角度来看,基于 Merkle 驱动器状态的内核已验证数据结构的最终性不允许任何机制在不重新设计内核的情况下创建此类协议。

在对该项目进行技术审查后,我们可以得出结论,它根本无法通过任何受人尊敬的分布式系统研究或金融工程期刊的审查。 为了尝试改变全球货币政策,需要做大量的技术工作来创建公众和监管机构可以信任的可靠网络和安全处理用户数据。

我认为没有理由相信 Facebook 在设计中做了必要的工作来克服这些技术问题,或者它比当前的基础设施有任何技术优势。 说公司需要监管灵活性来探索创新并不能成为不首先进行创新的借口。

来源: habr.com

添加评论