Applications of Secure Multiparty Computation(2015)阅读翻译

安全多方计算的基本构造

摘要

在本章中,正式定义了多方计算任务以及实现它们的协议的安全性。我们对安全多方计算(SMPC)协议的现有结构进行了广泛介绍,并结识了它们的正确性和安全性。我们讨论SMPC协议的不同环境方面,并解释其存在的必要和充分的要求。

引言

有几本密码学教科书严格涵盖了安全多方计算的基本定义和构造,例如[1,2,3]。在本介绍性章节中,我们不打算重复这种严格的处理方法。相反我们将给出SMPC的基本安全定义,并介绍不同SMPC协议背后的主要思想,足以理解本书其余部分中的算法和协议。我们参考其他来源,对这些结构进行彻底的证明和讨论。

1 定义

函数f的SMPC协议允许多个参与方根据其提供的输入评估f得到它的输出,而得不到任何超出自身输入和输出的东西。几乎所有的SMPC技术都希望f被表示为布尔或算术电路,并逐个门进行处理,我们可以使用以下定义指定多方计算任务。

  1. 定义1:在环R上的算术电路是一个4元组 C = ( G , V i n , V o u t , λ ) C=(G,V_{in},V_{out},λ) C=(G,Vin,Vout,λ),其中:

    • G = ( V , E ) G=(V,E) G=(V,E)是一个有向无环图,其中每个顶点的入度边都是线性有序的;

    • V i n = { v ∈ V ∣ d e g → ( v ) = 0 } V_{in}=\{v∈V|\overrightarrow{deg}(v)=0 \} Vin={vVdeg (v)=0} V o u t ∈ V V_{out}∈V VoutV表示电路的输入和输出顶点(此处 d e g → ( v ) \overrightarrow{deg}(v) deg (v)表示顶点 v v v的传入边数量(入度));

    • λ λ λ为每一个 v ∈ V v∈V vV分配一个操作: R d e g → ( v ) → R R^{\overrightarrow{deg}(v)}→R Rdeg (v)R

      布尔电路可视为定义1的特例,其中 R = Z 2 R=Z_2 R=Z2。电路 C = ( G , V i n , V o u t , λ ) C=(G,V_{in},V_{out},λ) C=(G,Vin,Vout,λ)的语义是将映射 V i n → R V_{in}→R VinR扩展到映射 V → R V→R VR,从而为 V o u t V_{out} Vout中的所有顶点分配值。

  2. 定义2:一组参与方 P = { P 1 , P 2 , … … , P n } P=\{P_1,P_2,……,P_n\} P={P1,P2,,Pn}的多方计算任务是一个3元组 f = ( C , T i n , T o u t ) f=(C,T_{in},T_{out}) f=(C,Tin,Tout),其中 C = ( G , V i n , V o u t , λ ) C=(G,V_{in},V_{out},λ) C=(G,Vin,Vout,λ)是一个算术电路, T i n : V i n → P T_{in}:V_{in}→P Tin:VinP确定哪一个参与方提供输入, T o u t ⊆ V o u t × P T_{out}⊆V_{out}×P ToutVout×P说明哪些输出由哪一个参与方获得。

    为了解决多方计算任务,参与方执行一些协议Π,其中参与方 P i P_i Pi有一个交互(图灵)机器 M i M_i Mi,该机器 M i M_i Mi实现了 P i P_i Pi在该协议中的步骤。首先,机器 M i M_i Mi接收来自参与方 P i P_i Pi的输入 x i x_i xi,最后将输出返回给参与方 P i P_i Pi,这里的 x i x_i xi是一个从集合 T i n − 1 ( P i ) 到 R T_{in}^{-1}(P_i)到R Tin1(Pi)R的映射。我们让 x : V i n → R x:V_{in}→R x:VinR表示各参与方输入的串联。让 x [ P i ] x[P_i] x[Pi]表示 x i x_i xi。对于所有参与方的一个子集 P ′ ⊆ P P'⊆P PP,我们让 x [ P ′ ] x[P'] x[P]表示所有 x [ P ] x[P] x[P] P ∈ P ′ P∈P' PP的元组。

    在SMPC的恶意模型中,一些参与方可能被腐化,但诚实的参与方不知道是哪些参与方。必须保护诚实参与方输入的机密性,以防止腐败参与方的联合。另外尽管有腐败参与方的行为,但诚实的参与方仍然应该获得正确的输出。我们可以通过理想/现实模型范式将这两种需求形式化。在这个范式中,我们通过一个协议来指定我们所需要的属性,该协议包含一个理想的组成部分,使这些属性"明显成立"。对于SMPC,这个理想的第三方 F S M P C f F_{SMPC}^f FSMPCf收集所有参与方的输入,计算函数 f f f,并将输出返回给各参与方。正确性和保密性是显而易见的,因为 F S M P C f F_{SMPC}^f FSMPCf确实计算函数 f f f,而且每个参与方只得到自己的输出。这个理想协议的执行会为诚实的参与方以及控制所有腐败参与方的敌手(以图灵机为模型)产生一定的输出。敌手的输出可能反映了它对诚实参与方输入和输出的猜测。在现实世界的协议中,理想的可信第三方是不存在的,而且交换的信息也是不同的,但所有诚实的参与方和敌手都会产生一些输出。如果现实世界协议产生的任何输出也可能是由理想世界协议产生的,那么该协议就是安全的——对于任何现实世界的敌手,都有一个理想世界的敌手与之对应,因此它们的输出在某种意义上是相同的,即使考虑到诚实参与方的输出。我们将这些概念形式化如下:

  3. 定义3:由n个参与方安全多方计算函数f的理想组件是一个交互式图灵机 F S M P C f F_{SMPC}^f FSMPCf,其工作原理如下:

    • 对于来自第i个参与方的输入 x i x_i xi,其中 x i x_i xi具有正确的类型(即它把 T i n − 1 ( P i ) T_{in}^{-1}(P_i) Tin1(Pi)映射到环 R R R),它存储 x i x_i xi并忽略了来自第i个参与方的进一步输入。
    • 在收到 x 1 , x 2 , … … , x n x_1,x_2,……,x_n x1,x2,,xn之后,它计算出 z = f ( x ) z=f(x) z=f(x),其中 z z z是从 V o u t 到 R V_{out}到R VoutR的映射。让 z i z_i zi成为 z z z T T T的限制。
    • 对于所有的i,机器 F S M P C f F_{SMPC}^f FSMPCf向第i个参与方发送 z i z_i zi
  4. 定义4:令 P c ⊂ P P_c⊂P PcP是腐败参与方的集合, S S S是控制这些腐化参与方集合的对抗性图灵机, f = ( C , T i n , T o u t ) f=(C,T_{in},T_{out}) f=(C,Tin,Tout)是各参与方集合 P P P的多方计算任务, x x x是该任务的可能输入。腐败参与方 P c P_c Pc和敌手 S S S在输入 x x x的基础上计算 f f f的理想模型结果是一个概率分布 I D E A L f , S P c ( x ) IDEAL_{f,S}^{P_c}(x) IDEALf,SPc(x)采样方式如下:

    • x [ P c ] x[P_c] x[Pc]发送给 S S S。敌手 S S S返回 y y y——一个从 T i n − 1 ( P c ) 到 R T_{in}^{-1}(P_c)到R Tin1(Pc)R的映射,指定腐败参与方对 F S M P C f F_{SMPC}^f FSMPCf计算 f f f的实际输入。

    • 每个诚实的参与方 P i P_i Pi F S M P C f F_{SMPC}^{f} FSMPCf发送 x i x_i xi。每个腐败的参与方 P i P_i Pi F S M P C f F_{SMPC}^{f} FSMPCf发送 y i y_i yi。每个参与方 P i P_i Pi F S M P C f F_{SMPC}^{f} FSMPCf那里收到 z i z_i zi,让 z c z_c zc P i ∈ P c P_i∈P_c PiPc收到的值 z i z_i zi的串联。( z c z_c zc是腐败参与方从 F S M P C f F_{SMPC}^{f} FSMPCf收到的 z i z_i zi值的串联)。

    • z c z_c zc发送给敌手 S S S。敌手 S S S返回( P h ′ , r A P_{h'},r_A Ph,rA),其中 P h ′ ⊆ P ∖ P c P_{h'}⊆P\setminus P_c PhPPc r A r_A rA R R R上的元素的一个元组。

    • 对于每一个诚实的参与方 P i ∈ P h ′ P_i∈P_{h'} PiPh,让 r i r_i ri是值 z ( v ) z(v) z(v)的元组,其中( v , P i v,P_i v,Pi)∈ T o u t T_{out} Tout。对于每一个诚实的参与方 P i ∉ P h ′ P_i∉P_{h'} Pi/Ph,让 r i = ⊥ r_i=⊥ ri=

    • 为所有的诚实参与方 P i P_i Pi输出 r A r_A rA r i r_i ri

      我们看到在 I D E A L f , S P c ( x ) IDEAL_{f,S}^{P_c}(x) IDEALf,SPc(x)的采样中,敌手实际上只了解被腐败参与方的输入。但由于敌手控制了这些参与方,它可以通过自己选择被腐坏的参与方的输入,在一定程度上影响计算 f f f的结果。这是一种我们显然必须要容忍的权利,因为在现实模型中的敌手也可以这样做(如定义5所述)。敌手收到腐败参与方的计算函数 f f f的输出,并能够影响哪些诚实参与方实际收到它们的输出。同样,这也与现实世界模型敌手提前停止协议执行的能力相对应,如接下来定义的那样。

  5. 定义5:令 P c ⊂ P = { P 1 , P 2 , … … , P n } P_c⊂P=\{P_1,P_2,……,P_n\} PcP={P1,P2,,Pn}是腐败参与方的集合, A A A是控制这些腐败参与方的对抗性图灵机, Π = ( M 1 , M 2 , … … , M n ) Π=(M_1,M_2,……,M_n) Π=(M1,M2,,Mn)是任务 f f f的一个多方计算协议( M i 是 P i M_i是P_i MiPi执行的机器), x x x是协议的可能输入。腐败参与方 P c P_c Pc和敌手 A A A在输入 x x x的基础上计算 Π Π Π的现实模型结果是一个概率分布 R E A L Π , A P c ( x ) REAL_{Π,A}^{P_c}(x) REALΠ,APc(x)采样方式如下:

    • 并行执行机器 M i ( x [ P i ] ) M_i(x[P_i]) Mi(x[Pi]),计算各参与方 P i ∈ P ∖ P c P_i∈P\setminus P_c PiPPc的信息(诚实参与方),计算所有在 P c P_c Pc中各参与方的信息 A ( x [ P c ] ) A(x[P_c]) A(x[Pc])(被腐化参与方的信息)。在执行过程中,发给 P c P_c Pc中各参与方的所有信息都被转发给 A A A,并且允许 A A A代表任何 P ∈ P c P∈P_c PPc发送消息。令 r A 为 A r_A为A rAA的输出, r i 为 M i r_i为M_i riMi的输出。诚实的参与方之间发送的消息不会被 A A A知道。

    • 为所有的诚实的参与方 P i P_i Pi输出 r A 和 r i r_A和r_i rAri

      在定义了理想世界和现实世界协议执行的结果之后,SMPC协议的安全性就可以直接定义了。通常情况下,不针对任何一组腐败的参与方 P c P_c Pc提供安全性,而只是针对某些联盟。有可能精确地跟踪容忍联盟[4],但是在这本书中,我们简化了陈述,只考虑了允许某些 t < n t<n tn的情况下腐败参与方多达 t t t个的门限敌手。

  6. 定义6:若一个 n n n方协议 Π Π Π对于一个函数 f f f是一个安全的多方计算协议,则有:如果对于所有 P c ⊆ P P_c⊆P PcP ∣ P c ∣ ≤ t |P_c|≤t Pct和所有敌手A,存在一个敌手 S S S,那么对于函数 f f f的所有可能的输入 x x x

    R E A L Π , A P c ( x ) = d I D E A L f , S P c ( x ) REAL_{Π,A}^{P_c}(x)\overset{d}{=}IDEAL_{f,S}^{P_c}(x) REALΠ,APc(x)=dIDEALf,SPc(x) (1).

    公式(1)中的符号 = d \overset{d}{=} =d表示符号两边的两个分布必须非常接近对方。这种接近性可以同不同的方式来解释。

    • 可以要求这两个分布相等
    • 在实践中,同样可以接收的要求是两个分布的统计学上的 ε ε ε-紧密性,其中 ε ε ε是一个可接受的故障概率(通常在 2 − 80 2^{-80} 280或更少)。
    • 或者,我们可以要求这两个分布仅仅是计算上不可区分的[5],也就是说,没有有效的(即概率上的多项式时间)算法能够以非负数的概率优于 1 2 \frac{1}{2} 21的成功率将它们区分开来。在这种情况下,我们实际上有两个系列的分布,由安全参数 η η η决定 Π Π Π中加密密钥的长度等。 Π 、 A 和 S Π、A和S ΠAS(作为 η η η的函数)的运行时间也必须是 η η η的多项式。区分算法的成功概率必须最多为 1 2 + α ( η ) \frac{1}{2}+α(η) 21+α(η),其中 α α α是一个可以忽略的函数(即对于所有的 c c c lim ⁡ η → ∞ η c ⋅ α ( η ) = 0 \lim_{η\to \infty}η^c·α(η)=0 limηηcα(η)=0)。如果加密构造是 Π Π Π的一部分,那么这就是等式(1)中的自然接近程度。

    在定义6中,敌手被赋予对它控制的各参与方的完全控制权。在实践中,敌手可能无法改变这些参与方的执行,但仍然能够观察它们的内部状态以及它们与其他参与方交换的信息。因此我们也定义了针对半诚实参与方的安全。我们通过对定义4、定义5和定义6做如下修改来获得这个定义。

    • 在定义4的第一步中,敌手 S S S的输出 y y y必须等于 x [ P c ] x[P_c] x[Pc]
    • 在定义4的第三步中,参与方集合 P h ′ P_{h'} Ph必须等于 P ∖ P c P\setminus P_c PPc
    • 在参与定义5的第一步协议时,敌手 A A A必须使用实际的机器 M i M_i Mi(对于 P i ∈ P c P_i∈P_c PiPc各腐败参与方)来计算 P i P_i Pi发送的信息。
    • 在定义6中,必须使用修改后的理想和现实模型结果的定义。

在文献中,恶意的参与方也被称为"主动",半诚实的参与方被称为"被动"。相应地,有人谈到主动与被动安全,以及主动与被动安全协议。这些同义词也将在本书中互换使用。

2 不经意传输

不经意传输(OT)是一个两方计算任务。第一个参与方(称为发送方)的输入是两个相同长度的比特串 m 0 , m 1 m_0,m_1 m0,m1。第二个参与方(称为接收方)的输入是一个比特b。接收方的输出是 m b m_b mb,而发送方没有输出。不经意传输被用作多个SMPC协议中的子协议。

2.1 基本构造

以下结构首次出现在[6]中。它需要一个循环群 G G G,其中Diffie-Hellman问题是困难的,例如,群 Z P ∗ Z_P^* ZP。令 g g g是群G的生成元。计算Diffie-Hellman问题(CDH)是对于随机整数 x , y ∈ { 0 , 1 , … … , ∣ G ∣ − 1 } x,y∈\{0,1,……,|G|-1\} x,y{0,1,,G1} g , g x , g y g,g^x,g^y g,gx,gy来构造 g x y g^{xy} gxy。可能更容易的决策性Diffie-Hellman问题(DDH)同样是对于随机整数 x , y , z x,y,z x,y,z区分元组( g , g x , g y , g x y g,g^x,g^y,g^{xy} g,gx,gy,gxy)与元组( g , g x , g y , g z g,g^x,g^y,g^z g,gx,gy,gz)。如果没有有效的算法能够以不可忽略的成功概率(在决策性问题中成功概率不可忽略地优于 1 2 \frac{1}{2} 21)来解决这个问题,那么这个算法就是困难的。因此,在CDH和DDH的定义中,群 G G G实际上取决于安全参数 η η η

H H H是一个加密哈希函数,将 G G G的元素映射为长度为 ∣ m 0 ∣ = ∣ m 1 ∣ |m_0|=|m_1| m0=m1的比特串。对于 b ∈ { 0 , 1 } b∈\{0,1\} b{0,1},让 b − = 1 − b \overset{-}{b}=1-b b=1b。以下协议安全地实现了不经意传输。

  • 发送方生成一个随机的 C ← G C←G CG,并将其发送给接收方;
  • 接收方选择 a ← { 0 , 1 , … … , ∣ G ∣ − 1 } a←\{0,1,……,|G|-1\} a{0,1,,G1},设置 h b = g a 和 h b − = C ⋅ h b − 1 h_b=g^a和h_{\overset{-}{b}}=C·h_b^{-1} hb=gahb=Chb1。然后将 h 0 , h 1 h_0,h_1 h0,h1发送给发送方。
  • 发送方检查 h 0 h 1 = ? C h_0h_1\overset{?}{=}C h0h1=?C。如果相等:发送方生成 r 0 , r 1 ← G r_0,r_1←G r0,r1G并发送 g r 0 , g r 1 , c 0 = H ( h 0 r 0 ) ⊕ m 0 和 c 1 = H ( h 1 r 1 ) ⊕ m 1 g^{r_0},g^{r_1},c_0=H(h_0^{r_0})⊕m_0和c_1=H(h_1^{r_1})⊕m_1 gr0,gr1,c0=H(h0r0)m0c1=H(h1r1)m1到接收方。如果不相等,发送方就中止协议。
  • 接收方计算 m b = c b ⊕ H ( ( g r b ) a ) m_b=c_b⊕H((g^{r_b})^a) mb=cbH((grb)a).

我们看到,在这个协议中,发送方基本上把 h 0 和 h 1 h_0和h_1 h0h1当做ElGaml加密的公钥[7]。它用 h 0 加 密 m 0 h_0加密m_0 h0m0,用 h 1 加 密 m 1 h_1加密m_1 h1m1。接收方能够用其中一个密钥解密,但不能用另一个密钥解密。该协议在信息理论上对发送方是安全的(即使它是恶意的),因为( h 0 , h 1 h_0,h_1 h0,h1)在 G G G的元素对中是单式分布的,其乘积是 C C C。针对半诚实接收方的安全性来自DDH问题的难度。一般来说,针对恶意接受者的安全性是很难证明的。然而如果假设哈希函数 H H H是一个随机预言机[8],即 H ( x ) H(x) H(x)是一个独立于任何其他 H ( x ′ ) H(x') H(x)(或其中几个)的随机比特位串,它将从CDH中得到。

我们看到,这种 O T OT OT构造的计算复杂度类似于公钥操作。事实上由于密钥交换可以建立在 O T OT OT上[9],因此不太可能使用更cheaper的对称密钥原语[10]来实现。

2.2 随机不经意传输

随机不经意传输( R O T ROT ROT)是不经意传输( O T OT OT)的一个变体,我们在此提出以利于第2.3节提高不经意传输的实用性。 R O T ROT ROT是一个随机的两方计算任务,发送方和接收方都不输入任何东西,发送方获得两个均匀的、独立采样的、预先确定长度的随机消息 r 0 , r 1 r_0,r_1 r0,r1,接收方获得一个随机位 b b b和消息 r b r_b rb

显然,在 O T OT OT的帮助下,我们可以建立 R O T ROT ROT——发送方和接收方将只是用随机输入来运行 O T OT OT。我们也可以用 R O T ROT ROT来构建 O T OT OT,如下所示。让发送方有两个消息 m 0 和 m 1 m_0和m_1 m0m1,而接收方有随机位 b b b

  1. 发送方和接收方运行 R O T ROT ROT,发送方接收 r 0 , r 1 r_0,r_1 r0,r1,接收方接收 b ′ 和 r b b'和r_b brb
  2. 接收方将 c = b ⊕ b ′ c=b⊕b' c=bb发送给发送方;
  3. 发送方发送 m 0 ′ = m 0 ⊕ r c , m 1 ′ = m 1 ⊕ r c − m_0'=m_0⊕r_c,m_1'=m_1⊕r_{\overset{-}{c}} m0=m0rc,m1=m1rc给接收方;
  4. 接收方计算出 m b = m b ′ ⊕ r b ′ m_b=m_b'⊕r_{b'} mb=mbrb

事实上, m b ′ ⊕ r b ′ = m b ⊕ r b ⊕ c ⊕ r b ′ = m b m_b'⊕r_{b'}=m_b⊕r_{b⊕c}⊕r_{b'}=m_b mbrb=mbrbcrb=mb。该协议对接收方来说是安全的,因为 c 与 b c与b cb是独立的。对发送方也是安全的,因为 m b 被 r b ′ m_b被r_{b'} mbrb掩盖了,而接收者没有。如果 R O T ROT ROT协议对恶意敌手是安全的,那么产生的 O T OT OT协议也具有相同的安全级别。

2.3 扩展不经意传输

尽管公钥加密代价昂贵,但它通过混合机制被广泛使用——加密长消息 m m m,生成对称密钥 k k k,在 k k k下加密 m m m,在公钥加密原语下加密 k k k(它短的多)。正如我们接下来所展示的: O T OT OT也存在类似的结构——少量的 O T OT OT实例可以在对称密钥密码的帮助下转换为大量的 O T OT OT实例。

首先,可以将用于从发送方向接收方传输短消息的 O T OT OT实例转换为用于大消息的 O T OT OT实例,方法是将这些短消息视为加密真实消息的密钥。如果发送方有两个长消息 m 0 和 m 1 m_0和m_1 m0m1,接收方有一位 b b b,则发送方可以生成两个密钥 k 0 , k 1 k_0,k_1 k0,k1,发送 E n c ( k 0 , m 0 ) 和 E n c ( k 1 , m 1 ) Enc(k_0,m_0)和Enc(k_1,m_1) Enc(k0,m0)Enc(k1,m1)给接收方,并使用 O T OT OT向接收方传输 k b k_b kb。第二,长度为 n n n的消息的 m 个 O T m个OT mOT实例其中 m < < n m<<n m<<n,可以转换为长度为 m m m的消息的 n 个 R O T n个ROT nROT实例。如下面的[11]所示。这样一个 O T OT OT扩展结构是使 O T OT OT在各种协议中可行的主要工具。 s [ i ] s[i] s[i]表示位串 s s s的第i位,其构造如下:

  1. 接收方随机生成长度为 n n n的信息 r 0 1 , r 0 2 , … … , r 0 m , c r_0^1,r_0^2,……,r_0^m,c r01,r02,,r0m,c,它定义 r 1 i = r 0 i ⊕ c r_1^i=r_0^i⊕c r1i=r0ic对所有的 i = { 1 , 2 , … … , m } i=\{1,2,……,m\} i={1,2,,m}
  2. 发送方产生一个长度为 m m m的位串 b b b
  3. 接收方和发送方使用 m 个 O T m个OT mOT实例(角色相反),将 q i = r b [ i ] i q^i=r_{b[i]}^i qi=rb[i]i从接收方转移到发送方,其中 i = { 1 , 2 , … … , m } i=\{1,2,……,m\} i={1,2,,m}
  4. 对于每个 j ∈ { 1 , 2 , … … , n } j∈\{1,2,……,n\} j{1,2,,n},发送方将 m m m位字符串 s 0 j s_0^j s0j定义为由位 q 1 [ j ] , q 2 [ j ] , … … , q m [ j ] q^1[j],q^2[j],……,q^m[j] q1[j],q2[j],,qm[j]组成。发送方还定义了 s 1 j = s 0 j ⊕ s_1^j=s_0^j⊕ s1j=s0jb。
  5. 对于每个 j ∈ { 1 , 2 , … … , n } j∈\{1,2,……,n\} j{1,2,,n},接收方将 m m m位字符串 s j s^j sj定义为由位 r 0 1 [ j ] , r 0 2 [ j ] , … … , r 0 m [ j ] r_0^1[j],r_0^2[j],……,r_0^m[j] r01[j],r02[j],,r0m[j]组成。
  6. R O T ROT ROT的第 j j j个实例中,对发送方的输出是 H ( j , s 0 j ) , H ( j , s 1 j ) H(j,s_0^j),H(j,s_1^j) H(j,s0j),H(j,s1j),而对接收方的输出是 c [ j ] , H ( j , s j ) c[j],H(j,s^j) c[j],H(j,sj)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值