Efficient and Secure Multiparty Computation from Fixed-Key Block Ciphers 部分翻译

这篇论文探讨了在安全计算协议中使用固定密钥AES的实践,发现多数实现存在安全隐患。研究提出了哈希函数的安全属性,如相关性鲁棒性和循环相关性鲁棒性,并在随机置换模型中提供了可证明安全的哈希函数结构。工作成果为基于固定密钥分组密码的安全计算协议提供了端到端的安全证明,同时实现了性能提升。
摘要由CSDN通过智能技术生成

Efficient and Secure Multiparty Computation from Fixed-Key Block Ciphers

Chun Guo
Universite Catholique de Louvain
chun.guo.sc@gmail.com

Jonathan Katz
University of Maryland
jkatz@cs.umd.edu

Xiao Wang
MIT & Boston University
wangxiao@northwestern.edu

Yu Yu
Shanghai Jiao Tong University
yuyu@cs.sjtu.edu.cn

2021.3.25翻译

摘要

许多安全计算的实现使用固定密钥的AES(模型为随机排列);由于现有的硬件对AES的支持以及避免重新计算AES密钥调度的能力,这将带来显著的性能优势。然而,研究这些实现后,我们发现大多数以启发式方式使用AES;在最好的情况下,这在安全性证明中留下了一个缺口,但在许多情况下,我们表明它允许显式攻击。

由于这种不令人满意的状态,我们开始全面研究如何使用固定密钥分组密码进行安全计算,特别是对OT加密和混淆电路的有效和安全。特别地:

  1. 我们考虑了哈希函数的几个伪随机概念(例如,相关性鲁棒性),并展示了基于满足这些概念的哈希函数的OT扩展、加乱和其他应用的可证明安全方案。
  2. 在随机置换模型中,我们提供了满足伪随机不同概念的哈希函数的可证明安全结构。

总之,我们的结果为基于固定密钥分组密码(模型为随机排列)的安全计算协议的实现提供了端到端的安全证明。也许令人惊讶的是,与此同时,我们的工作也导致了显著的性能改进——超过了最先进的水平。

1.引言

在过去的几年中,安全计算已经从纯理论领域过渡到在多个软件库中实现(参见[HHNZ19]最近的一项调查),由不同的政府机构资助,许多初创公司推销,并在几个实际应用程序中使用[BCD+09, BKK+16, LJA+18, HLOI16]。这就使得理解安全计算协议的实现所提供的安全性变得至关重要。实际上,尽管发布的协议通常附带了可以由社区独立验证的安全性证明,但发布的协议描述经常忽略或忽略重要的底层细节。在实现这些协议时,研究人员经常以一种随意的方式应用性能优化。

在这项工作中,我们研究了固定密钥AES(或更普遍的固定密钥块密码)在安全计算实现中的使用。在这种情况下使用固定键AES可以追溯到Bellare等人[BHKR13]的工作,他们认为用于混淆电路的固定键AES是其JustGarble框架的一部分。在此之前,大多数乱码电路的实现都使用SHA-256之类的散列函数,它被建模为随机oracle。但是Bellare等人的研究表明,由于现代处理器提供了对AES的硬件支持,使用固定密钥AES比使用加密哈希函数要快50倍。(虽然也可以在每个门上使用带有不同密钥的AES来使电路乱码,但是当AES密钥发生变化时,密钥调度的开销是相当大的。)Bellare等人设计了几个基于固定密钥分组密码的可证明安全的乱码方案,并在此过程中证明了显著的性能改进。事实上,在他们工作之前,CPU时间是基于电路乱码的协议的主要瓶颈;引入JustGarble之后,network throughput(网络吞吐量)成为影响误码率的主要因素,固定密钥的AES在后续的误码法电路实现中几乎被普遍采用。

当固定密钥分组密码被建模为随机排列时,Bellare等人证明了其结构的安全性。这个随机排列模型(RPM)类似于randomoracle模型,并假设所有各方都具有对一个公共的随机排列π:{0,1}*k→{0,1}*k及其逆的oracle访问权限。将固定密钥分组密码建模为随机排列比将分组密码建模为理想密码(这也是常见的)弱;在特定的。在固定密钥设置中,相关密钥攻击不相关。

受Bellare等人工作的启发,许多关于高效安全计算的后续工作都依赖于固定密钥AES用于其他目的,尤其是无关传输(OT)扩展。然而,不幸的是,在这种情况下,安全性的证明通常缺失。让我们澄清一下。通常,发布的OT-extension协议基于哈希函数H,并通过将H建模为随机oracle来证明其安全性。然而,当协议实现时,H不会使用加密哈希函数实例化,而是随机地从固定密钥块密码实例化。在最好的情况下,这会在安全证明中留下一个缺口,但在最坏的情况下,正如我们在第2节中所展示的那样,它会使已实现的协议容易受到显式攻击。

即使是Bellare等人的工作也有缺点,那就是它不是模块化的。也就是说,他们并不基于对每个门使用的“加密方案”的一些假设来证明他们的加码方案的安全性; 相反,它们在随机排列模型中直接证明了安全性。
这使得将他们的想法应用到新开发的混淆方案中变得困难,因为方案中的任何变化都需要重新做整个证明。例如,在分析随后的半门混淆方案[ZRE15]时就这样做了。在介绍该方案的论文中,Zahur等人采用了一种更模块化的方法:他们基于哈希函数H构造自己的混淆方案,然后证明当H满足特定于其方案的某个性质时,他们的方案是安全的。他们还声称,在没有证据的情况下,当H以基于固定密钥密码的特定方式实例化时,H满足他们的定义。这是一个进步,但仍然在整体安全性证明上留下了一个缺口。

我们认为这种情况是不能令人满意的。简而言之,问题在于,密码学家通常基于被视为随机oracle的哈希函数H来分析协议,但当实现这些协议时,H是从固定密钥块密码以某种无原则的(通常是不安全的)方式实例化的。在本文中,我们尝试解决这种不匹配,如下所述。

1.1 我们的贡献

当前实现的不足。正如上面已经提到的,我们的第一个贡献仅仅是识别问题。我们检查了所有先进的安全计算平台,发现大多数使用固定密钥AES的平台都没有正确使用它;其中许多人容易受到明确攻击。我们参阅第2节以获得详细信息。

面对这种混乱的现状,我们开始了一个全面的研究如何安全和有效地使用固定密钥分组密码进行安全计算。我们提出了一种模块化的方法:我们首先确定哈希函数需要满足的各种性质,以证明不同协议的安全性,然后展示如何在随机置换模型中有效地构造可证明满足这些性质的哈希函数。更详细地:

识别抽象安全属性。我们考虑了哈希函数的几个伪随机概念,其中一些是在以前的工作中确定的(例如,相关性鲁棒性[IKNP03]和循环相关性鲁棒性[CKKZ12]),其他一些是新的。然后,我们将展示实现这些不同概念的哈希函数如何以一种可证明安全的方式用于不同风格的OT扩展(第4节)、电路混淆(第5节)和其他应用(第6节)。

从固定密钥块密码实现。在RPM中,我们展示了满足我们考虑的概念的哈希函数的可证明安全结构(第7节)。重要的是,在我们的分析中,我们还提供了具体的安全边界,这在之前的工作中常常是缺乏的。
我们还讨论了如何有效地利用现有的CPU指令集和流水线来实现我们的结构(第8节)。
总之,我们的工作为基于固定密钥分组密码的安全计算协议(OT-hybrid模型)提供了端到端的安全证明。
有点令人惊讶的是,与此同时,我们的工作还使OT扩展和各种其他协议的性能比目前的最先进水平提高了3-4x:我们参考第8节进行进一步的讨论。

1.2替代的方法

回想一下,我们要解决的问题是,假设访问一个随机的oracle H,那么协议就被证明是安全的,但随后实现时,H是不正确地从固定密钥块密码实例化的。我们提倡的方法(在前一节中概述)是,使用关于H的较弱假设(特别是可证伪的假设)来证明协议是安全的,然后在随机排列模型中可证明地实现这些假设。但是大家可以想象出其他的方法来解决这个问题;;这里将简要讨论这些问题。

一种选择是使用加密哈希函数(如SHA-256或SHA3)简单实例化H,将它们视为随机oracle。这种方法的缺点是这种散列函数比使用固定密钥的AES至少慢15-50倍;见表3。

或者,人们可以希望基于固定密钥块密码实例化H,这样H从随机oracle是不可微分的[MRH04]。这个问题已经引起了广泛的关注[Lucoo, DRRS09, MPN10, MP15, DHT17, Lee17, BN18],但是,正如我们现在讨论的,现有的解决方案并不令人满意。

我们知道,在随机排列模型中,只有两种方法可以构造随机oracle H:

第一种方法大致对应于设H(x)为π的(k- o (k))位截断(0*0(k)||x)(这里我们把k视为安全参数),第二种方法称为XORP方法——定义H(x)= a, T(x),其中{π_i}代表独立随机排列。第一种方法产生的哈希函数的域和范围比π的域和范围短得多,如果应用于128位块长度的AES,将导致不切实际的糟糕安全边界。第二种方法可用于构造一个随机oracle映射,k位输入到k位输出,给定{0,1}*k上的多个随机排列,因此原则上可用于实现我们考虑的一些安全定义。然而,这种方法的缺点包括:

  1. 我们的一些定义需要压缩,我们不知道如何从{0,1}*k上的随机排列获得既有效又具有可接受的具体安全边界的压缩随机oracle。
  2. XORP方法需要两个独立的排列,并对这些排列进行两次调用;在某种意义上,这是固有的[BCS09。LMPW151。我们在这里展示的结构只使用一种随机排列(在某些情况下只调用一次该置换),而且比XORP更有效:我们将在第8节进一步讨论。

1.3论文提纲

在第2节中,我们将调查安全计算协议的现有实现,特别关注它们如何实例化基于固定密钥AES的底层哈希函数。我们展示了在许多情况下,选择的实例化允许显式攻击。鉴于此,我们将在第3节中介绍哈希函数的各种安全性定义,其中一些之前已经考虑过(例如,相关性鲁棒性),而另一些则没有考虑过(例如,可调整的相关性鲁棒性)。在以下部分中,我们将探索应用哈希函数满足这些定义不扩展(第四节)的half-gates精选方案(5节),和其他协议(6节),地址在第7节的问题构造哈希函数满足的各种定义从fixed-key块密码,当那块密码被建模为一个随机排列。最后,在第8节中,我们将评估我们的结构的性能,并将它们与之前的工作进行比较。

2.目前的事态

正如第1节中所讨论的,尽管许多用于安全计算的现有平台都依赖于固定密钥的AES,但很少有平台能够正确地利用它。这里我们讨论一下我们发现的一些问题。在公开我们的工作之前,我们已经联系了相关作品的作者,确认我们发现的问题。

2.1Oblivious-Transfer扩展

我们首先描述一些关于OT扩展的背景。在高层次上,最先进的OT扩展协议分为两个阶段:

假设第一阶段安全进行,可以看出当H为随机oracle时,上述OT extensioh协议在半诚实和恶意设置下都是安全的。Ishai等人[IKNP03]表明,在半诚实设置中,它足以使H对随机输入具有相关性鲁棒性(在这种情况下,不需要H的额外输入i)。Asharov等人[ALSZ15]证明了如果H具有强相关鲁棒性(cf. Def. 1),即即使对于对手选择的输入,协议在恶意设置下也是安全的。

不幸的是,在我们的工作之前,我们并不清楚如何从一个固定密钥块密码构造一个(强)相关性鲁棒哈希函数;由于这个原因,现有的实现做出了看似任意的选择(见下文和表1)。下面我们展示了针对这些OT协议的显式攻击。但是由于各种原因,它可能并不总是导致对整个实现的明确攻击。接下来使用的分组密码总是AES-128。但是我们写这篇文章是为了和论文的其他部分保持一致。

APRICOT and libscapi. APRICOT[Unil6a],也是libscapi内部使用的[Bar16]设置 H(x,i) =π(x)。这是不安全的,即使在半诚实的情况下,因为H是可逆的。特别地,假设接收者同时知道m1^0和m1^1。然后它可以推断出ai;和ai⊕△;因此,它可以恢复△,并学习所有其他发送者的输入。)

我们认为,它们的目的是实例化H(x,i) =π(x)⊕x,APRICOT的作者已经证实了这一点。他们还指出在新版本的SPDZ-2中已经改变了。然而,如下一段所述,这仍然是不安全的。

SPDZ-2, MP-SPDZ, and MASCOT. SPDZ-2 [Uni16b]实现,也被MP-SPDZ使用,使H(x,i) =π(x)⊕x。MASCOT论文[KOS161]证明了这一选择是合理的,因为它受到了matyas - everol - seas (MMO)结构的启发,在理想密码模型中可以证明这种结构具有抗碰撞性。由于许多原因,这种推理是无效的,尤其是因为抗碰撞并不意味着相关鲁棒性。在任何情况下,这个实例化承认一个简单的攻击,在恶意设置中利用H不依赖于i的事实:通过使用x1 = x2 = 1和强制b1 = b2 = b,接收者可以学习m1^1, m1^2,和,这是不允许的。

注意,任何不依赖于i的H实例化都会在恶意设置中承认这种攻击。

libOTe. libOTe [Rin]提供了两个实例化H(x,i)的选项。第一个选项与刚才讨论的选项相同。第二个选项实例化H(x,i) = SHA-256(x)。除此之外,这个选项不再受益于固定密钥的AES。由于不依赖i,它也会遭受同样的攻击。

Unbound Tech and EMP. 由Unbound Tech [Unb18]设置的区块链MPC实现。虽然H现在依赖于i,但如果恶意接收者选择b1, b2,使b1⊕1 = b2⊕2,上述攻击的一种变体仍然有效。

EMP [WMK16]使用,类似的攻击仍然适用。

The ABY framework.

ABY框架[DSZ15]也设置了,但由于ABY的目标是半诚实的安全,上述攻击不再适用。但是,ABY实现的是correlated-OT extension和random-OT extension,而不是standard-OT extension。对于前者的现有安全性证明[ALSZ13],即使在半诚实的设置中,也要求H是一个随机的oracle(见第4节的进一步讨论);不难证明H的ABY实例化不是随机oracle不可微的。

2.2 Garbling

正如引言中提到的。JustGarble [BHKR13]是一个在随机置换模型中被证明是安全的置换方案。然而,证明是非模块化的,因此很难将这些技术应用到更新的混淆方案中。在分析基于抽象哈希函数的半门构造时,H. Zahur等[ZRE15]引入了一个定义“自然派生键的循环相关鲁棒性”(见第5节),该定义针对他们的方案,过于复杂,难以处理。然后他们实例化H为,并声称这满足他们的定义。

Zhu等人[ZH17]使用了一个自定义的混淆方案,哈希函数实例化为。由于Zhu等人的混淆方案包含了free-XOR优化[KS08],安全性证明需要H满足circular correlation robustness(循环相关鲁棒性)的概念[CKKZ12]。然而,我们在7.3节中证明了相关的哈希函数H(x) = π(x)⊕x不是循环安全的(Zhu等人的哈希函数也是如此)。

2.3 其他协议和实现

尽管我们在本文中主要关注的是OT扩展和乱码,但我们观察到在其他场景中也出现了对固定密钥AES的无原则依赖。

TinyLEGO. Frederiksen等人[FJNT15]表明,如果H{0,1}对随机输入具有相关性鲁棒性,TinyLEGO中的线路认证协议是安全的。在TinyLEGO [NST17]的实现中,他们用一个额外递增的计数器作为输入实例化哈希函数,形式为H(x,i) = π(2x⊕i)⊕2x⊕i,但没有证据证明这满足所需的定义。

Free hash. Fan等人[FGK17]提出了一种“承诺”乱码电路的新方法。其构造的安全性证明假设所使用的哈希函数H不仅具有相关性鲁棒性,而且具有抗碰撞性。不幸的是,很容易看出他们使用的实例化H(x,i) = π(2x⊕i)⊕2x⊕i不是防碰撞的,这导致了对他们方案的绑定属性的显式攻击。

3 Hash-Function Definitions

这里我们为哈希函数定义了几个“伪随机性”的概念,其中一些以前已经明确考虑过了。我们的定义是为具体的安全处理而量身定做的,但我们的定义的渐近版本可以通过适当的修改轻易获得。在下文中,我们让F_k,l表示从0,1}*k到{0,1}*l的所有函数的集合,并为F_k,k写作F_k。

我们的定义都是用最强烈的意义来表述的——具体地说,它们允许攻击者自适应地选择输入到它的oracle,因为我们的结构满足他们。对于某些应用程序,较弱的概念(例如随机输入或非自适应输入选择)可能就足够了,定义可以针对这些情况进行适当的调整。
我们的定义的一个显著特征是,它们允许对键R的非均匀选择。这很有用,例如,在分析半门garbling [ZRE15]等方案时,R的最小有效位被设置为1。

Correlation robustness (cr). 相关性l鲁棒性的概念最早由Ishai等人[IKNP03]在OT扩展的背景下提出。粗略地说,定义是如果密钥函数是伪随机的,则H是相关鲁棒的。在Ishai等人的工作中,这只需要对随机输入保持,给出了类似于弱伪随机函数的定义;在其他研究中[ALSZ15],允许攻击者选择任意输入,但只能以非自适应的方式。这里我们考虑最强的概念,即攻击者可以自由地自适应地选择其oracle的输入。

Circular correlation robustness (ccr). Choi等人[CKKZ12]扩展了相关鲁棒性的概念,以允许一种“循环性”的形式来证明用于电路乱码的free-XOR技术[KS08]的安全性。Zahur等人[ZRE15]使用了这个定义的较弱(但更复杂)版本,也是在garbling的语境中; 关于它们的定义的更多细节在第5节中给出。

Tweakable correlation robustness (tcr) and circular correlation robustness (tccr).

可调相关鲁棒性(tcr)和循环相关鲁棒性(tccr)。通过类比可调整分组密码的概念[LRW11],我们扩展了(循环)相关鲁棒性的概念,也包含一个调整。正如我们在第4节中讨论的,添加一个调整对于恶意设置中的某些协议的安全性至关重要。

我们的定义允许攻击者重复任意多次调整。对于某些应用程序。较弱的概念(如要求非重复调整)可能就足够了。对于这些情况,可以适当地修改定义。

Definitions in the random-permutation model. 随机排列模型中的定义。在本文中,我们构造了满足上述随机排列模型中定义的哈希函数H。也就是说,我们假设一个公共的随机排列,以及H的结构如何赋予oracle访问π的权限。然后,安全定义随后被修改为(1)对均匀选择T的概率和(2)让区分者D oracle同时访问π及其逆π^-1。在这种情况下,我们可以无条件地证明我们的结构的安全性,只要我们将D的查询次数限制在π/π^-1和它其他的oracle上。因此,如我们说随机置换模型中的构造H是(p,q,p,)-相关鲁棒的,如果对所有的D使得最多p个查询达到,q个查询到,并且所有的R具有最小熵,则认为

Relations between the de nitions.很容易看出,任何H是ccr(resp., tccr)也是cr (resp., tcr).。也很容易看出,任何H是tcr (resp., tccr)可以构造一个哈希函数H',即cr (resp.,ccr)。

我们在7.2节给出的结构是cr而不是ccr。我们没有发现从cr(resp,.ccr)到tcr(resp,.tccr)的通用转换,然而,在第5节中,我们(隐式地)展示了对于随机输入和非重复调整,任何一个是ccr的H都可以用来构造满足tccr的哈希函数H'。
我们证明了这种较弱的概念可以用来分析半门混淆方案。

4 Oblivious-Transfer Extension

正如第2.1节所讨论的,基于固定密钥密码的OT扩展的许多现有实现都是不安全的,或者至多不能被证明是安全的。部分问题似乎是由于一些OT-extension协议在random-oracle模型中被证明是安全的。一个固定密钥密码的随机oracle实例化是未知的。为了解决这个问题,我们在本节中介绍了各种ot扩展协议,这些协议基于满足上一节定义的散列函数。在这样做的过程中,我们改进了之前几项工作中使用的假设,如表2所示。这里我们考虑标准ot扩展和相关ot扩展:我们将随机ot扩展的情况推迟到附录A。

因为我们的重点是实例化的第二阶段中使用的哈希函数H不扩展(参见2.1节)的开始,我们现在所有的协议在模型(见图1)。这种理想的功能抽象的第一阶段无法扩展,和高效的协议实现它是已知的在semi-honest [ALSZ13]和恶意[KOS15]设置。

4.1 Standard-OT Extension

图2描述了标准OT功能。在图3中,我们展示了在模型中,在半诚实和恶意设置下,实现标准OT的协议。我们注意到半诚实安全的结果已经来自Ishai等人的研究[IKNP03]

定理1(非正式的)。当H为cr(resp., tcr)时,协议模型中半诚实(resp., malicious)敌手下安全地实现了

这个定理有些不正式,例如,我们没有定义H成为cr意味着什么,而只定义了它为意味着什么。从证明中可以得到一个包含具体安全边界的正式声明。

Proof. 对于一个已腐败的PA, FA-ROT-hybrid模型的安全性,无论是半诚实的还是恶意的,都是完美的,而且是微不足道的。因此,我们关注的是对手A腐败PB的情况。

半诚实的PB的情况很简单。(如前所述,这也隐含在[IKNP031]中。)在这种情况下,模拟器将Pb的输入从功能的输入中提取出来,将这些发送到功能以获得,然后对所有i设置并选择一致的。很明显,H的相关性鲁棒性意味着这将导致PB的视图与实际执行中的视图无法区分。

在恶意的情况下,模拟器几乎和以前一样,但证明更复杂。为了完整性,我们完整地描述模拟器S:

1-2. S获取A发送给FA-ROT的输入和值
       S发送给FS-oT, FS-oT返回
       S选择一个统一的△,用△回答A的全局密钥查询(如果有的话)。

3.对于所有i,S设置并选择均匀的。他发送给PB。

如果A不做全局键查询,那么很直观地,如果H是-可调的相关性鲁棒,则对于任何运行时间最多t的A,  A区分模拟视图和真实视图的优势最多为(第二项表示概率)。

假设对所有,它认为H是-可调相关鲁棒。假设A的全局键查询P满足。然后,在概率为时,攻击者将△的最小熵降低到,但在剩余概率下,功能中止。因此,A的最大区别优势是

4.2 Correlated OT

相关OT由Asharov等人提出[ALSZ13],是OT的较弱形式,发送者只能指定其“消息”的异或(否则由功能统一选择),图4给出了相关的理想功能。之前的研究表明,相关的ot扩展协议[ALSZ13, ALSZ15]需要一个可编程的随机oracle,即使是为了半诚实的安全,因为模拟器需要对H的输出进行编程,以确保与理想功能的输出一致。事实上,如果没有可编程的随机oracle,似乎很难有效地实现Asharov等人定义的理想功能,因此我们削弱了理想功能,让对手选择其输出。

(有趣的是,我们注意到之前的工作[ALSZ15]实际上并没有实现Asharov等人[ALSZ13]的理想功能,而是实现了我们在这里定义的较弱版本。详见附录B。)这个理想的功能仍然足以保证应用程序的计算安全。在图5中,我们展示了在半诚实和恶意设置中实现此功能的协议。

定理2(非正式的)。如果H是cr(resp., tcr),则协议模型中安全地为半诚实(resp., malicious)对手实现了

定理1后面的注释在这里也适用。

证明。在定理1的情况下,对手A腐败PA的安全是完美的,并且很容易显示。因此,我们将重点关注PB腐败的情况。我们考虑恶意设置;半诚实的设置也类似。

1 - 2. S获取输入以及A发送给FA-ROT的值
           S也选择一个均匀的△并使用△回答A的全局键查询(如果有的话)。

3.        S选择统一的并将其发送给PB。它设置并发送给Fc-oT。

不可区分性的证明(对于PA的输出和PB的视图的联合分布)类似于定理1的证明。

5. 重访半门混淆方案

Zahur等人[ZRE15]介绍了基于抽象哈希函数H的半门garbling方案。为了分析该方案,Zahur等人引入了一个称为“自然导出kevs的循环相关鲁棒性”的定义,并证明了当H满足该定义时,他们的garbling方案的安全性。
然后,在没有证明的情况下,声称哈希函数H(r,i)=(2rei2rea满足他们的定义。我们不清楚情况是否如此(但见脚注5)。

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值