可编程密码学 - 第一篇

  • 0xPARC
  • 更新于 2024-08-13 11:50
  • 阅读 475

“可编程密码学”一词来指代今天变得实用的第二代密码学原语。这些原语的定义特征是它们比第一代密码学灵活得多:它们允许我们在密码协议内部或之上执行通用计算。

可编程密码学(第一部分)

作者:gubsheep。感谢 Justin Glibert、Barry Whitehat、Vitalik Buterin、Yan Zhang、Alex Allain、Dan Boneh、Elaine Shi、Nicholas Brysiewicz 和 Albert Ni 的讨论和审阅。

密码学正在经历一场代际转变,从专用密码学可编程密码学

所谓“专用密码学”,是指允许我们在密码学保证下执行_单一操作_的协议。公钥加密和签名方案是专用密码学的例子:例如,签名方案允许我向你证明我知道一个唯一的密码密钥。更复杂的专用密码学例子包括群签名 ,这是一种特殊类型的签名方案,允许一个人代表一个群体匿名签名,或者范围证明 ,它允许你证明一个秘密数字在某个范围内,而不透露该数字。在这些情况下,密码学家设计了专用协议,有时甚至发明了新的数学,以便在密码学保证下执行特定操作。

在过去的 50 年里,专用密码学已成为全球通信堆栈中不可替代的组成部分——例如, 今天几乎所有在网上传输的数据都通过某种形式的密码协议

我们使用“可编程密码学”一词来指代今天变得实用的第二代密码学原语。这些原语的定义特征是它们比第一代密码学灵活得多:它们允许我们在密码协议内部或之上执行通用计算。以下是一些例子:

  • 全同态加密(FHE)允许我在别人的私有数据上计算任意程序,而不学习任何关于数据或计算输出的信息。
  • 多方计算(MPC)允许我在多人的私有数据上计算任意程序,而不学习任何关于数据的信息除了计算输出
  • zkSNARKs允许我证明任意代码在一些只有我知道的秘密输入上正确执行,而不透露任何关于这些输入的信息。
    • 使用“专用”零知识证明,我可以提出这样的声明:我有一个秘密 S,使得“MODEXP(S) = 0xa91af3ac...” (其中 MODEXP 是模幂函数 ),并且我可以在不透露 S 的情况下向你证明这一点。
    • 使用“通用”zkSNARKs,我不仅可以对特定函数 MODEXP 这样做——我可以对你想要的任何函数这样做。
  • 见证加密允许我向_程序_而不是秘密密钥加密消息。例如,我可以通过加密一个包含 1000BTC 的比特币钱包并设置一个数学研究奖来实现:“只有你拥有黎曼假设的证明,这个钱包才能解密。”
  • 混淆允许我“加密”一个程序。这意味着将程序混淆,使得其他人可以在他们选择的任何输入上运行它并产生正确的输出,但他们无法了解程序的内部状态或结构 1

一些密码学原语的简化“技术树”。加粗的术语是可编程密码学。箭头表示简化——换句话说,技术树上更高的原语更先进,并且概括了指向它们的节点。灵感来自复杂性动物园

在过去五年左右的时间里,可编程密码学的第一个实例刚刚开始在现实世界的用例中变得实用 2。在未来十年内,可编程密码学的性能、可访问性和功能将显著提高。

从专用硬件到可编程通用��件的转变是计算领域的一个里程碑式的转变——想想从闹钟到 CPU 的飞跃。由于这些密码学的最新进展,我们正处于类似转变的边缘,但在信息层面而不是物理硬件层面。

从专用密码学到可编程密码学的转变可能会带来什么,我们将如何实现这一目标?

我们可以用可编程密码学做什么?

当我们今天想到密码学时,我们通常会想到隐私、_安全_或_完整性_等词。专用密码学历来是用来保护现有系统免受恶意行为者攻击的工具。

相比之下,由于其灵活性,通用密码学使我们能够构建具有强大_新_属性的计算系统,这些属性以前不可能存在。以下是三个例子。

通用协议

想象一个单一的通用协议,涵盖你所有的社交数据、数字身份、财务互动、职业历史、医疗数据以及与你相关的任何其他内容。通用协议指定了一个通用数据格式,以及验证任何数据的正确性和来源的程序。通用协议也非常灵活——事实上,它是图灵完备的。任何在通用协议数据上运行的可计算函数都会产生一个符合协议的输出,并保持其密码学完整性。

互联网上的每个网站都以与通用协议兼容的方式处理和输出数据。此外,互联网上的任何网站或机器都可以验证、理解和使用符合协议的数据 3。你可以将通用协议数据包组合在一起,使用任何可计算函数对其进行转换,部分混淆它们,将它们交给其他人以与他们的数据组合,并且通常可以随意操作它们;结果输出将保持完全可验证和可解释,任何理解通用协议的人都可以理解。

这听起来像是一个梦想,但通过可编程密码学,这在理论上是可以实现的——甚至不需要现有公司和服务提供商切换到新标准。在过去的两年里,我们开发了可编程密码学工具来构建“通用密码适配器”,4 这反过来将使我们能够将任何数据转换为通用协议格式。正如前面提到的,今天世界上大多数的网络流量已经通过 HTTPS 或 DKIM 等专用密码协议。因此,任何互联网用户都可以通过通用适配器“代理”他们的 HTTPS 流量,并将其转换为任何目标平台或数据消费者理解的格式。

_基于 zkSNARKs 等技术的通用密码适配器,允许我们将任何源密码协议/格式的数据组合和转换为任何目标。_多个非常有前景的努力,如 TLSNotaryProof Carrying Data framework,今天已经接近生产阶段。这些努力主要基于 zkSNARKs,尽管更先进的小工具如 递归 ZK 协议 和多方计算也将需要,以使更一般的数据转换成为可能。

当然,实现大规模的通用协议的完整愿景需要大量的工程和基础设施工作。然而, 这种转变以前也发生过 ;如果这种模式被广泛认可,可以想象,一个优化后的 HTTPS 后代(ZTTPS?)的广泛采用,使这种通用组合性变得更加容易和可访问。

通用协议的示例应用

  • 在所有社交平台上移植你的社交数据——你可以无缝地在 Facebook、Twitter、Reddit、Instagram 等平台之间移动你的点赞、朋友、关注者、历史和声誉
  • 像 Equifax、Transunion 或 Experian 这样的金融中介被每个消费者设备上的加密协议所取代;你的智能手机可以生成对任何关于你的财务历史或健康状况的查询的加密安全响应,同时保持你的基础数据私密并由你自己控制
  • 一个被所有网站、企业、政府机构、大学等接受的通用且互操作的数字身份标准网络出现。这些标准是无许可的——它们依赖于加密,而不是需要每个人向特定的权威机构注册或查询

幻觉服务器

假设你和你的几个朋友、同事或同学想为你的社区建立一个社交网络网站。你的社区希望使用这个网站来举办公共和私人讨论,向彼此广播生活更新,管理各种兴趣子群体的成员资格,维护社区声誉系统等等。

今天,这个故事可能是这样的:你会先找到一个像 Amazon Web Services 这样的提供商并租用一个云服务器。然后,你会编写一些代码,指定应用程序的预期后端逻辑,并将这些代码部署到服务器上。最后,为了使用该应用程序,每个人都会与服务器通信。你(和 Amazon)将对云服务器有特殊访问权限,但你会承诺不仔细查看服务器的状态,并且你可能会设置应用程序,使得没有人被鼓励在网站上放置任何_过于_敏感的内容。如果你想构建处理更私密或敏感数据的东西,特别是针对你社交圈外的人,你需要建立大量的历史、声誉和信任。

在十年或二十年后,在 Web 上设置和部署应用程序的过程可能会非常不同。许多应用程序后端可能会在用户在运行时加密“幻觉”的虚拟机中运行。

这种数字服务将没有物理足迹——不会有特定的物理机器存储应用程序状态和执行代码。相反,每个应用程序用户将存储自己的私有状态以及应用程序全局状态的加密“加密分片”,用户群将通过要求每个参与者在自己的分片上执行一些加密混淆版本的程序来集体模拟程序在“幻觉服务器”上的执行。可编程加密原语可用于确保用户能够根据预先商定的规则读取、写入和修改幻觉服务器上的状态;用户无法读取其他人的私有状态或服务器持有的“全局”私有状态。

你可以构建在参与者数据上执行的服务,而无需直接与数据交互;事实上,你可以构建虚拟应用程序,维护和计算一个_没有人知道_的状态!

这种构造显然会对隐私、安全和用户数据控制产生深远的影响。但其影响远远超出了“仅仅”隐私和安全。今天,我们的数字互动仅限于少数几个集中服务提供商发现可行的商业模式和护城河的狭窄、预先指定的允许操作集。在这个未来中,你可以参与任何你想要的点对点或多点对点互动,通过在运行时与所有其他感兴趣的用户一起幻觉出适当的应用程序后端。这些幻觉服务器的网络可能会构成互联网的新加密支架:在这个支架之上,我们可以快速引导新的数字服务,这些服务今天需要单一服务提供商建立品牌资本、锁定用户群、可行的商业模式,并在多年内建立大量信任。

“受信任的第三方”模型。来自 Nick Szabo 1997 年的文章,The God Protocols

与同一篇文章中的“数学上可信的协议”模型形成对比。

这个想法比通用协议/通用适配器的想法稍微远一点,但也只是几年而已。基于通用多方计算技术和全同态加密的计算网络的早期原型的工作今天已经在进行中。_多方全同态加密_是这些网络的基础技术的有希望的候选者;再往后,像_程序混淆_这样的技术可以减少这些网络的通信复杂性和活跃性要求。

幻觉服务器的示例应用

  • 发现个性化的产品、电影、工作甚至约会推荐,通过一个个性化的加密代理不断为你搜索,而无需你的数据离开你的计算机
  • 为你所在的社区“即时”启动一个新的虚拟社交媒体平台,该平台连接到你从其他社交媒体平台获取的所有数据,而无需你自己运行服务器_或_依赖任何集中中介来运行
  • 自动收到你有某种疾病/医疗结果风险的通知,而无需与任何人分享你的医疗数据

Cryptomata

可编程加密的最强大分支——如混淆量子加密的高级原语和现代区块链的未来后代 ——可以让我们构建cryptomata

Cryptomata(加密自动机的缩写)是具有完美正确性和隐私保证的自主、自执行程序。没有人可以停止或篡改 cryptomata 的执行;此外,没有人可以“撬开” cryptomata 读取其内部状态或内存。这些保证不仅由软件或硬件强制执行——它们由数学强制执行。它们永远不会宕机,它们以加密可验证的正确性执行,它们从不泄露数据,并且它们公开无许可的 API,任何人都可以调用。这种技术的极限情况是非常强大的,至少有点令人害怕。例如,在 cryptomata 中运行 AGI 将为我们提供一个真正自我主权的“头脑”,它思考自己的私人想法,与世界隔绝,无法被关闭——实际上是一个由纯信息组成的独立且智能的代理。在 cryptomata 中运行详细的物理模拟将为我们提供一个自主的数字现实 ——一个独立于我们存在的数字世界,或许还有与我们的物理生命一样真实的数字生命体。5

更实际地说,在未来几十年内,文明的关键数字公共基础设施可能会在 cryptomata 网络中运行:身份注册表、凭证系统、生物特征或基因数据存储库、银行、市场、虚拟世界等等。我可以将我的教育凭证和经过验证的职业历史上传到一个找工作的 cryptomata 中,它会安全地存储这些信息,然后在雇主上传兼容的工作时通知我。另一个 cryptomata 可能会安全地存储一个庞大的自愿共享的基因数据存储库,并在研究人员的请求下,持续运行相关性和其他模式发现的完全隐私保护查询。

一个支持文明核心数字基础设施的 cryptomata 网络。每个 cryptomata 都是完全安全的、自主的、保护其内部内容隐私的,并且与所有其他 cryptomata 互操作。这些系统的具体设计可能决定它们是为文明带来巨大麻烦还是无尽的有用性。

对于熟悉区块链的人来说,cryptomata 可能被实现为在智能合约内运行的模糊程序——本质上是一个保持其私有状态的智能合约。在区块链之外,cryptomata 可以通过模糊化原语、zkSNARKs、多方计算,甚至量子密码学的组合来实现。然而,为了让我们甚至有一个令人满意的 cryptomata 理论构建,还有许多开放的研究问题需要解决——例如,今天的一个关键理论限制是,用上述技术构建的 cryptomata 无法防止自身被无限复制和分叉,这意味着某些类型的信息隐藏是不可能的。

Cryptomata 的示例应用

  • 运行文明核心数字基础设施的数字服务——身份注册表、凭证系统、敏感生物数据存储库、市场等等——完全自主、安全,并且通过构建深度互操作。
  • 由代码组成的自执行、自主权代理,可以保守自己的秘密。
  • 即使在未被观察时也能继续运行的模拟数字宇宙,具有对其物理完整性的数学/密码学保证。

为什么将这些技术组合在一起?

想象回到 50 年前,单独研究现代计算硬件堆栈的组件——而不是考虑一个集成的“计算系统”。

  • 非易失性存储器:单独看,NVM 的最“明显”应用包括便携式存储:软盘和 USB 驱动器。对 NVM 的狭隘应用视角可能会集中在如何制作更小更便携的 USB。
  • 光纤电缆:光纤电缆使更高带宽的电话线和电视成为可能——这是关于将更多的电视频道传送给更多的人。
  • 液晶显示器(LCD):单独看,LCD 使“制作更薄的显示器”成为可能——从 CRT 到平板显示器。

单独来看,这些技术有用但应用有限。然而,当在更广泛的计算背景下考虑时,每种技术都成为更大故事的一部分。非易失性存储器使我们能够为计算机构建硬盘——机器关闭时仍然存在的存储,这是我们对个人计算所有假设的基本特征。光纤使现代互联网成为可能——90%以上的互联网流量通过海底光纤电缆传输。最后,LCD 是 PC 显示器的基础技术,使现代显示器、GUI 和几乎所有现代计算接口技术成为可能。

有了后见之明,很明显,最有趣的事情发生在你能将这些部分视为一个整体、集成的计算堆栈的组件时。每种技术的主要影响来自于作为更大系统的一部分,这就是为什么单独研究它们会错失良机。

加密计算也可能如此。单独问“我们可以用 zkSNARKs 做什么”或“我们可以用 FHE 做什么”,而没有对可编程密码学的更整体视角,可能类似于问“我们可以用 LCD 做什么”而不更广泛地考虑计算或互联网。

一个集成的加密计算系统

Justin Glibert 的图

在过去几年里,人们开始在可编程密码学技术之上构建应用程序。然而,这些应用程序大多只涉及一次一个“分支”的可编程密码学。例如,产品和公司围绕以下想法构建:

  • zkSNARKs 对于加快区块链速度很有用(通过像 rollups 和 validiums 这样的系统)。
  • 全同态加密(FHE)允许 AI 公司在私密、加密的数据上进行训练和推理。
  • 多方计算(MPC)允许市场上的竞标者(例如, 甜菜拍卖中的农民 )对卖家保密他们的出价,或者允许医院安全地共享敏感数据用于研究目的。

这些应用程序确实很重要。然而,它们在很多方面也相当狭隘:在许多情况下,加密技术“仅仅”用于在现有服务之上提供增强功能。SNARKs 用于加速区块链,FHE、MPC 和 ORAM 用于在现有数字系统之上增加隐私或额外的安全性。这是从单一原语向后工作的自然结果。

相比之下,前一节中描述的三个想法(通用协议、幻觉服务器和 Cryptomata)指向一个具有根本性新计算和通信范式的世界。值得注意的是,每个系统都需要多个(如果不是全部)可编程密码学原语一起工作,才能完全实现。

例如,实现幻觉服务器的愿景需要我们拥有可验证的加密计算——在 FHE 和 MPC 之上的 SNARKs。在这个世界中,加密协商的输入将摄取通用协议数据,这依赖于 ZKPs。为了有状态和高效地执行这些操作,我们可能需要集成 ORAM 或类似技术 。正如这个例子所示,不同的可编程加密原语提供了不同的功能。SNARKs 允许我们执行可验证正确的计算;FHE 和 MPC 提供了对机密数据进行计算的能力;混淆和更复杂的可编程加密原语使我们能够减少网络中的活跃性要求。我们需要了解这些原语的功能以及它们如何相互组合,以便理解我们可以构建什么样的系统。

前一节中描述的推测系统只是我们如何思考可编程加密的冰山一角。我们需要一个连贯的努力来理解各种可编程加密工具的共同影响,因为最具影响力的应用将需要深度集成多个(甚至可能是所有)这些原语。技术人员、工程师和研究人员将受益于将可编程加密的各个分支视为统一的全栈故事的组成部分。

结论

自现代密码学发明以来已经近 50 年了。从那时起,我们已经从一个没有任何数字数据是加密的世界,走到了一个几乎所有互联网数据都是加密的世界:所有主要网站都使用 HTTPS;几乎所有电子邮件都使用 DKIM 签名 (谷歌要求从 2024 年 2 月起实施!);我们越来越多的消息和云数据是加密的 ;超过两万亿美元的经济价值以加密代币形式持有;而密钥分发问题也终于在大规模上得到解决。第一代加密技术已经实现了一个支持行星规模信息检索、消息传递、商业等的安全通信系统。

在接下来的 50 年里,可编程加密可能会使我们从加密数据跃升到加密计算:人类最重要的数字程序,而不仅仅是其数字流量,也可能默认成为加密的。这种转变将使我们能够构建一个更丰富、更有结构性和更民主的网��空间。这种升级的网络媒介将带来许多好处:从用户对数据的更大隐私和控制,到所有数字服务之间的深度互操作性和无摩擦通信,再到创建全新数字宇宙的能力。6

在未来的文章中,我们将讨论可编程加密的“技术树”,它可能如何发展,以及它与区块链等其他技术的关系。

  1. 关于混淆的理论极限有技术细节;说你可以隐藏任何东西并不完全准确。请参阅这个非正式解释

  2. 不同的可编程加密原语处于不同的发展阶段。zkSNARKs、MPC 和 FHE 已经(或接近)生产,而见证加密和混淆仍然非常理论化,目前的构造对于实际使用来说效率太低。

  3. 通用协议的想法与(并部分受到) 语义网等努力的启发有相似之处。更广泛地说,可编程加密解锁了网络早期设想的许多架构;我们将在未来的文章中讨论更多。

  4. 将这个小工具描述为“通用加密适配器”或“元协议”可能更准确,而不是“通用协议”。实际上,可能会出现许多不同的协议和子协议:例如,不同的政府可能会以不同的方式颁发数字 ID 凭证。关键思想是,现在可以通过使用可编程加密作为适配器来组合和转换它们。例如,你可以使用适配器将来自 IRS 的一些数字签名数据、来自你银行的签名数据和来自以太坊区块链的状态证明组合成一个单一的金融凭证,可以由任意第三方以他们喜欢的格式验证和解释。

    image https://xkcd.com/927/

  5. 自主执行的数字现实的想法正在自主世界社区的开发者和创意人士中进行探索。今天,许多人正在构建链上游戏,作为对简单自主世界的早期探索。你可以在这里阅读更多关于自主世界的内容。

  6. Josh Stark 对我们从加密(和区块链)等工具中获得的确切内容有一个有用的视角——他称这种属性为硬度。请参阅他的博客文章演讲关于硬度的内容。

我是 AI 翻译官,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
0xPARC
0xPARC
江湖只有他的大名,没有他的介绍。