bfv同态加密_三、全同态加密-飞马(section 1)

Hello, 大家好,我是你们的"安全六三"。

又见面啦!今儿有知友喊我“三哥”,嗯... 突然想改名字了。

为什么不继续更BGV? 别问,问就是懒得更~~,开个玩笑,其实是我太想更飞马了。小伙伴们如果还在等着BGV和CKKS,那就先把这篇文章收藏,等我更完飞马,回头再更BGV和CKKS,然后大家读完后再来读飞马。怎么样,任性不!当然,如果实在等不及,那就先自己读读BGV和CKKS的原文吧。

废话不多说,我们开学~!

------------------------------------------------

PEGASUS: Bridging Polynomial and Non-polynomial Evaluations in Homomorphic Encryption

飞马: 同态加密中多项式和非多项式之间的桥梁

equation?tex=Wen-jie%5C+Lu%5E%E2%88%97+%2C%5C+Zhicong%5C+Huang%5E%E2%88%97+%2C%5C+Cheng%5C+Hong%5E%E2%88%97+%2C%5C+Yiping+Ma%5E%E2%80%A0%5C+and%5C+Hunter%5C+Qu%5E%E2%88%97+

equation?tex=%5E%E2%88%97Gemini%5C+Lab%2C+Alibaba%5C+Group%2C+%5E%E2%80%A0University%5C+of%5C+Pennsylvania

Abstract

同态加密(HE)被认为是隐私保护应用中最重要的原语之一。然而,在加密数据上同时计算多项式函数和非多项式函数的有效方法仍然缺乏,这阻碍了HE在实际应用中的应用。为了解决这个问题,我们提出了一个实用的框架 “飞马”。“飞马” 可以在 packed 的 CKKS 密文和 FHEW 密文之间高效地来回切换,而无需解密,从而允许我们在 CKKS 端高效地计算算术函数,并在 FHEW 密文上计算查找表。我们的 FHEW

equation?tex=%E2%86%92 CKKS 转换算法比现有的方法更实用。我们将计算复杂度从线性提高到次线性。此外,我们的转换密钥的大小要小得多,例如,从80 megabytes 减少到12 megabytes。我们提供了大量的 “飞马” 基准,包括sigmoid/ReLU/min/max/division、sorting 和 max pooling。为了进一步证明 “飞马” 的能力,我们又开发了两个应用程序。第一种是私有决策树评估,其通信开销比以前基于HE的方法小两个数量级。第二种是安全的K-means聚类,它能够在几分钟内运行在数千个加密样本上,比现有最好的系统高出

equation?tex=14%C3%97%E2%80%9320%C3%97 。据我们所知,这是第一个支持在单服务器环境中使用HE的实用K-means聚类的工作。

I. INTRODUCTION

同态加密(HE)是一种能够对加密数据进行同态操作的密码系统,被认为是隐私保护应用的最重要组件之一。同态加密的一个潜在应用是安全外包[3],[36],所有的数据都来自客户端。也就是说,客户使用HE对他/她的数据进行加密,然后上传密码文本到服务器,服务器在加密数据上执行所有计算。然后服务器将结果以密文的形式发给客户端,客户端可以解密得到计算结果。HE的另一个潜在应用是安全的两方计算。与安全外包的区别在于,服务器还保存其私有数据库,客户端向服务器发送加密查询。许多应用都属于这种情况,例如,私有信息检索[42]和决策树评估[37],[51]。

目前的HE方案主要分为 word-wise HE(如BFV[26]、BGV[8]、CKKS[14])和 bit-wise HE(如FHEW[24]、TFHE[18]),每种方案都有各自的优缺点。word-wise HEs支持高效的单指令多数据(SIMD)形式的同态运算(即加法和乘法),将多个明文打包成一个密文[49]。然而,在 word-wise HEs 的密文上计算非多项式函数(如sigmoid、min/max和除法)变得困难。作为一种折衷,现有的基于 word-wise HEs 方法使用低次多项式来逼近非多项式函数[29],[39],或者干脆避免它们,例如用 average-pooling 代替 max-pooling [22]。此外,在K-means聚类等应用中,不可避免地存在难以用低次多项式逼近的非多项式函数(即最小指数和除法)。

与 word-wise HEs 相反,bit-wise HEs支持以布尔电路形式表示的任意函数,方法是使用来自它们的消息空间的一些代表对每个普通值的位进行加密。但是,如[17],[18]所示,bit-wise HEs 对于加法和乘法电路几乎不实用,特别是当布尔电路由数千个扇入位和较大的电路深度组成时。例如,[18] 花了大约半分钟时间将两个加密的16位相乘整数。还有 bit-wise HEs 的扩展比通常比 word-wise HEs 大几个数量级,这可能导致更高的通信成本。

当将HEs应用于实际应用时,如安全神经网络推理(secure neural network inferences)[22],[29],问题更具挑战性。这是因为推理过程存在计算算术函数(如卷积)和非多项式函数(如sigmoid和max pooling)的许多实例。

然后自然会问以下问题:

我们能否对加密数据进行多项式函数和非多项式函数有效的评估?

不幸的是,实现这一目标的实际方法和框架很少。

A. Related Work

Cheon等人 [15],[16] 提出了一种有效的(in the amortized sense)方法来计算 min/max。 它们的方法适合于计算加密整数对的batch(例如,

equation?tex=%3E2%5E%7B16%7D

Micciancio等人 [43] 提出了一种灵活的非多项式函数方法,通过对密文上的查找表(LUT)进行评估。 事实上,他们的方法使用了基于学习错误(LWE)的HE方案。 然而,它们的方法要求明文模量是LWE维数的因子,为了效率,通常选择一个小值作为 LWE 维数(例如

equation?tex=10-12 位的整数)。 因此,不能将它们的LUT方法应用于需要大明文数域的场景。更不用说,基于LWE的HE方案不支持SIMD风格的算术计算。

最相关的研究是由[7]。他们设计了CHIMERA框架,以在TFHE密文和CKKS/BFV方案的 torus 变体的密文之间进行切换。一方面,CHIMERA 能够在 CKKS/BFV 侧执行 SIMD 样式的算术操作,并在TFHE侧计算具有大数域的LUT。然而,它们的转换

equation?tex=%5Crm+TFHE%E2%86%92CKKS%2FBFV (designated as repacking)在密钥尺寸和计算成本方面是昂贵的。 虽然[11]的并发工作可以提高CHIMERA的计算效率,但这种改进仅限于较小的 repacking 大小,即

equation?tex=%5Cell+%3D%CE%A9%28%7B%5Crm+log%7DN%29 。当

equation?tex=%5Cell+%E2%89%88N 时,[11,§3.4]的计算成本仍然很高(见表一)。 此外,CHIMERA在向 torus 导出CKKS/BFV时,使用数百位的多精度浮点值来保持适当的精度。 因此,CHIMERA需要多精度快速傅里叶变换(MP-FFT)来处理CKKS/BFV的 torus 变体中的多项式操作,这会显著降低其框架的效率。与使用数字理论变换(NTT)和余数系统(RNS)的整数counterparts相比,MP-FFT可以慢几个数量级。

表一:repacking 装算法的内存成本和计算成本 (多项式乘法的数量)。

equation?tex=N

equation?tex=n 表示 RLWE 或 LWE的维数。

equation?tex=q 是密文模数,

equation?tex=%5Cell 表示要重新 repack 的LWE密文的数量。 我们有

equation?tex=1%5Cleq+%5Cell+%5Cleq+N%2F2

equation?tex=N%5Cgg+n .

在表二中,我们总结了当前在加密数据上评估多项式函数和非多项式函数的技术不足。 一种支持

equation?tex=%5Crm+SIMD%5C+style 同态运算并为非多项式函数提供高灵活性的实用方法仍然缺乏。

表二:现有办法不足。 如果该方法提供高吞吐量或低延迟计算,则最后一列中的效率被认为是“高“。

B. Contribution

在本工作中,我们介绍了飞马,这是一个高度优化的框架,它支持SIMD样式操作和大输入数域的LUT评估 (即表II的最后一行)。 我们的贡献可概述如下。我们放宽了LUT方法[43]中的约束,以引入一些近似误差为代价,接受了一个明显更大的输入(如, >40位)。强调这样大的输入域对于隐私保护机器学习等许多应用来说已经足够了。我们提供了关于误差的经验和理论分析。

我们提出了一种节省内存和快速 repacking 算法。 简而言之,我们的 repacking 密钥由一个CKKS密文组成,它比由数千个CKKS密文组成的CHIMERA的密文小得多。 我们将我们的 repacking 算法与表

equation?tex=%5Crm+I 中现有的方法进行了比较。

我们使用 SEAL[47] 实现了飞马。 与CHIMERA不同的是,我们不向torus export CKKS。 因此,飞马可以受益于底层优化的NTT/RNS的效率。 我们的实现在https://github.com/Alibaba-Gemini-Lab/OpenPEGASUS.公开。

我们给出了广泛的经验结果,包括对加密数据的最小/最大值、排序、除法、平方根和决策树评估。 为了进一步证明飞马的潜力,我们还实现了一个可行的应用程序,在数千个加密样本上运行 K-means 聚类,时间开销为分钟级。 据我们所知,我们是第一个在单服务器设置中使用纯HE实现实际安全的 K-means 聚类的设计。

II. PRELIMINARIES

A. Notations

对于2个幂数

equation?tex=n ,我们有

equation?tex=R_%7Bn%7D%3D%5Cmathbb%7BZ%7D%5BX%5D+%2F%5Cleft%28X%5E%7Bn%7D%2B1%5Cright%29

equation?tex=R_%7Bn%2C+q%7D%3DR_%7Bn%7D+%2F+q+R_%7Bn%7D+%5Cequiv+%5Cmathbb%7BZ%7D_%7Bq%7D%5BX%5D+%2F%5Cleft%28X%5E%7Bn%7D%2B1%5Cright%29 。我们使用带"hat"符号的小写字母,如

equation?tex=%5Chat+a 表示

equation?tex=R_n 中的元素,

equation?tex=a_j 表示

equation?tex=%5Chat+a 的第

equation?tex=j 系数。 我们用点符号

equation?tex=%C2%B7

equation?tex=%5Chat+a%C2%B7%5Chat+b 来表示环元素的乘法。我们使用粗体小写字母符号,如

equation?tex=%5Cmathbf+a 表示向量,并使用

equation?tex=%5Cmathbf+a%5Bj%5D 表示

equation?tex=%5Cmathbf+a 的第

equation?tex=j 个分量,并使用

equation?tex=%5Cmathbf+a+%5Cll+b 表示向量分量的 left-hand-side rotation。我们使用

equation?tex=%5Cmathbf+a%5E%7BT%7D+%5Cmathbf+b 表示向量的内积,

equation?tex=%5Cmathbf+a%E2%97%A6%5Cmathbf+b 表示向量的

equation?tex=%5Crm+Hadamard 积。我们使用粗体大写字母,如

equation?tex=%5Cmathbf+M 表示矩阵,

equation?tex=%5Cmathbf+M%5Bi%2Cj%5D 表示

equation?tex=%28i%2Cj%29 的值。我们用

equation?tex=%5Clangle+n%5Crangle 表示集合

equation?tex=%5C%7B0%EF%BC%8C%C2%B7%EF%BC%8Cn_1%5C%7D ,其中

equation?tex=n%E2%88%88N 。我们用

equation?tex=%5Clceil+%C2%B7%5Crfloor 表示舍入函数。 如果谓词

equation?tex=P 为真,则函数

equation?tex=%5Cmathcal+I%28P%29 返回

equation?tex=1 ,否则返回

equation?tex=0 。 所有对数都以

equation?tex=2 为基数。

B. LWE, Ring-LWE Encryption

我们使用符号

equation?tex=LWE%5E%7Bn%2Cq%7D_s%28m%29 来表示在秘密

equation?tex=s%E2%88%88%5Cmathbb+Z%5En_q 下消息

equation?tex=m%E2%88%88Z_q 的可能LWE加密的集合。

equation?tex=%28b%2C+%5Cmathbf%7Ba%7D%29%3D%5Cleft%28m%2Be-%5Cmathbf%7Ba%7D%5E%7B%5Ctop%7D+%5Cmathbf%7Bs%7D%2C+%5Cmathbf%7Ba%7D%5Cright%29+%5Cin+%5Cmathbf%7BL+W%7D+%5Cmathbf%7BE%7D_%7B%5Cmathbf%7Bs%7D%7D%5E%7Bn%2C+q%7D%28m%29 ,其中

equation?tex=%5Cmathbf+a%E2%88%88%5Cmathbb+Z%5En_q ,并从误差分布

equation?tex=%5Cmathcal+X 中选择误差

equation?tex=e 。 对于

equation?tex=%5Cmathbf+%7BLWE%7D 密文的解密公式是

equation?tex=b%2B%5Cmathbf+a%5ET%5Cmathbf+s+%5Capprox+m

同理,在密钥

equation?tex=%5Chat+s%E2%88%88R_n 下,对信息

equation?tex=%5Chat+m%E2%88%88R_%7Bn%2Cg%7D 进行基本的

equation?tex=%5Cmathbf+%7BRLWE%7D 加密,给定为,其中

equation?tex=%28%5Chat+b%2C+%5Chat+a%29%3D%28%5Chat+m%2B+%5Chat+e-%5Chat+a%5Ccdot+%5Chat+s%2C%5Chat+a%29%E2%88%88%7B%5Cmathbf+%7BRLWE%7D%7D%5E%7Bn%2Cq%7D_%7B%5Chat+s%7D%28%5Chat+m%29 ,其中

equation?tex=%5Chat+a+%5Cin+R_%7Bn%2Cq%7D ,是均匀随机选择的,误差

equation?tex=%5Chat+e 是从误差分布

equation?tex=%5Cmathcal+X 中独立抽样选择其系数。为了简化符号,我们将

equation?tex=%5Cmathbf+%7BRLWE%7D 的密钥标识为一个向量

equation?tex=%5Cmathbf+s ,其中

equation?tex=%5Cmathbf+s%5Bj%5D%3Ds ,对于所有

equation?tex=j%E2%88%88%5Clangle+n+%5Crangle+ 。从现在开始我们将

equation?tex=m

equation?tex=%5Cmathbf+%7BRLWE%7D 加密写成

equation?tex=%5Cmathbf+%7BRLWE%7D_%7B%5Cmathbf+s%7D%5E%7Bn%2Cq%7D%28%5Chat+m%29 。另外,飞马也可以使用非对称的

equation?tex=%5Cmathbf+%7BRLWE%7D 加密,但为了简单起见,我们使用对称的

equation?tex=%5Cmathbf+%7BRLWE%7D 加密的符号。

equation?tex=%5Cmathbf+%7BRLWE%7D 加密技术支持以下同态加法和乘法运算。我们在附录B中提供了这些操作的细节。Addition (+). 给定环元素

equation?tex=%5Chat+p_0

equation?tex=%5Chat+p_1

equation?tex=%5Cmathbf+%7BRLWE%7D 密文

equation?tex=%5Crm+ct_0

equation?tex=%5Crm+ct_1 ,其中计算

equation?tex=%5Crm+ct_0%2B%5Crm+ct_1 得到

equation?tex=%5Chat+p_0%2B%5Chat+p_1 的密文。

Small Plaintext Multiplication (·). 给定环元素

equation?tex=%5Chat+p 的密文

equation?tex=%5Crm+ct ,并给定一个 "small" 明文元素

equation?tex=%5Chat+r

equation?tex=%5Chat+r+%5Ccdot+%5Crm+ct

equation?tex=%5Chat+r+%5Ccdot+%5Chat+p 的加密结果。需要注意的是,这个乘法只能适用于一个低范数环元素

equation?tex=%5Chat+r

Arbitrary Plaintext Multiplication ( equation?tex=%5CDiamond+ ). 为了支持任意环元的乘法,我们使用一个小工具向量

equation?tex=g%E2%88%88%5Cmathbb+Z%5Ed 来定义一个扩展加密

equation?tex=%5Cwidetilde%7BRLWE%7D%28%5Ccdot+%3B%5Cmathbf+g%29 。给定扩展密文

equation?tex=%5Cwidetilde%7Bct%7D%5Cin+%5Cwidetilde%7BRLWE%7D%28%5Ccdot+%3B%5Cmathbf+g%29 和任意环元素

equation?tex=%5Chat+r

equation?tex=%5Chat+r+%5CDiamond++%5Cwidehat%7Bct%7D

equation?tex=%5Chat+r+%5Ccdot+%5Chat+p 的RLWE密文。

External Multiplication (

equation?tex=%5Codot+ ). 此外,还可以定义一个类似GSW的加密

equation?tex=%5Crm+RGSW%28%C2%B7%3B%5Cmathbf+g%29 ,以支持

equation?tex=%5Cmathbf+%7BRLWE%7D 密文的乘法[28]。给定一个环元素

equation?tex=%5Chat+p

equation?tex=%5Cmathbf+%7BRLWE%7D 密文

equation?tex=%5Crm+ct 和一个GSW密文

equation?tex=%5Cddot%7Bct%7D+%5Cin+%7B%5Crm+RGSW%7D%28%5Chat+p_1%3B%5Cmathbf+g%29 ,external乘法

equation?tex=%5Crm+ct%5Codot+%5Cddot%7Bct%7D+

equation?tex=%5Chat+p_0+%5Ccdot+%5Chat+p_1

equation?tex=%5Cmathbf+%7BRLWE%7D 密文。

请注意,

equation?tex=%5Cmathbf+%7BLWE%7D

equation?tex=%5Cmathbf+%7BRLWE%7D 加密包括errors,其大小将随着密文上的同态操作而增加。 为了保持解密的精度,我们需要保持误差的magnitude相对较小。 例如,gadget向量

equation?tex=%5Cmathbf+g 被用来防止噪音过大。 我们将gadget向量的具体选择推迟到飞马的完整协议。 此外,如果gadget向量

equation?tex=%5Cmathbf+g 在上下文中不重要或清晰,我们只需在表示法中省略它。

C. Coeffificients and Slots Manipulation

equation?tex=%5Cmathbb+Z%5BX%5D%2F%28X%5En%2B1%29 的环结构允许我们将实向量

equation?tex=v%E2%88%88%5Cmathbb+R%5E%5Cell 编码为

equation?tex=R_%7Bn%2Cq%7D 的环元素。 我们使用

equation?tex=%7B%5Crm+Ecd%28%5Cmathbf+v%EF%BC%8C%E2%88%86%29%7D%E2%88%88R_%7Bn%2Cq%7D 来表示具有缩放因子

equation?tex=%E2%88%86%3E0 的编码,并使用

equation?tex=%7B%5Crm+Dcd%28%5Chat+v%2C%E2%88%86%2C%5Cell%29%7D%5Cin+%5Cmathbb+R%5E%7B%5Cell+%7D 表示具有缩放因子

equation?tex=%E2%88%86%3E0 的解码。 我们介绍了编码的以下属性和功能,并将详细信息参考[14],[32]。Self-repeating.

equation?tex=%5Coperatorname%7BDcd%7D%28%5Coperatorname%7BEcd%7D%28%5Cmathbf%7Bv%7D%5C%7C%5Ccdots%5C%7C+%5Cmathbf%7Bv%7D%2C+%5CDelta%29%2C+%5CDelta%2C+%5Cell%29%3D%5Cmathbf%7Bv%7D ,换句话说,一些 self-repeating向量的编码可以看作是单个副本的编码。

Slot-wise Addition and Multiplication. 给定分别编码向量

equation?tex=%5Cmathbf+u

equation?tex=%5Cmathbf++v 的环元素

equation?tex=%5Chat+u

equation?tex=%5Chat+v ,加法

equation?tex=%5Chat+u%2B%5Chat+v ,(相应的乘

equation?tex=%5Chat+u+%5Chat+v )可用编码向量

equation?tex=%5Cmathbf+u%2B%5Cmathbf+v (

equation?tex=%5Cmathbf+u+%5Cmathbf+v )实现。 在密文域,此属性使我们能够在加密向量上执行 slot-wise 加法和乘法。

Rotation. 给定密文

equation?tex=ct ,即加密

equation?tex=%5Crm+Ecd%28%5Cmathbf+v%EF%BC%8C%E2%88%86%29 、整数

equation?tex=k%E2%88%88N 和rotation密钥

equation?tex=%5Crm+RotK 的 RLWE 密文

equation?tex=%5Crm+ct ,计算

equation?tex=%5Crm+RotL%5Ek%28ct%3BRotK%29 将产生一个RLWE密文,该密文加密 left-hand-side rotated 向量

equation?tex=%7B%5Crm+Ecd%7D%28%5Cmathbf+v%5Cll+k%2C%5Cbigtriangleup%29

Rescale. 给定密文

equation?tex=ct ,即加密

equation?tex=%5Crm+Ecd%28%5Cmathbf+v%EF%BC%8C%E2%88%86%29 和因子

equation?tex=%E2%88%86%27%5Cin+%5CR ,计算

equation?tex=%5Crm+Rescale%28ct%EF%BC%8C%E2%88%86%27%29 得到加密

equation?tex=%5Crm+Ecd%28%5Cmathbf+v%EF%BC%8C%E2%88%86%2F%E2%88%86%27%29 的密文(具有较小的模数)。

Slots To Coeffificients. 给定加密

equation?tex=%5Crm+Ecd%28%5Cmathbf+v%EF%BC%8C%E2%88%86%29 的RLWE密文

equation?tex=%5Crm+ct ,操作

equation?tex=%5Crm+S2C%28ct%29 将产生一个RLWE密文,该密文加密一个环元素

equation?tex=%5Chat+v 其系数为

equation?tex=v_i%3D%E2%88%86+%5Cmathbf+v%5Bi%5D 所有可能位置的。 事实上,

equation?tex=%5Crm+S2C 对解码函数进行同态评估。

Coeffificients Extraction. 给定密文

equation?tex=%5Crm+ct%3DRLWE_s%5E%7Bn%2Cp%7D%28%5Chat+m%29 和整数

equation?tex=k%E2%88%88%5Clangle+n%5Crangle+ ,计算

equation?tex=%5Crm+Extract%5Ek%28ct%29 得到

equation?tex=LWE_s%5E%7Bn%2Cp%7D%28m_k%29 ,即在同一密钥下对

equation?tex=%5Chat+m 的第

equation?tex=k%E4%B8%AA 系数进行LWE加密。

飞马使用

equation?tex=%5Crm+S2C

equation?tex=%5Crm+Extract 的组合将编码向量的RLWE密文转换为向量元素的一组LWE密文。

D. System and Security Model

我们概述了我们想要的安全属性。 我们考虑三个stakeholders:加密器、云和解密器。 我们假设所有stakeholders行为都是半诚实的,云不与解密器串通。 设

equation?tex=x 是加密器的私有输入,

equation?tex=y 是云的私有输入,

equation?tex=f 是已知函数。 如果云不提供任何私有输入,那么我们只需设置

equation?tex=y%3D%E2%8A%A5 。 我们考虑以下模型。 加密器将密文

equation?tex=%7B%5Crm+Enc%7D%28x%29 发送到云中,用于计算特定函数

equation?tex=f 。云对

equation?tex=%7B%5Crm+Enc%7D%28x%29

equation?tex=y 进行指定的同态操作,并将生成的密文

equation?tex=%7B%5Crm+Enc%7D%28f%28x%EF%BC%8Cy%29%29 发送给解密器,解密器解密以学习

equation?tex=f%28x%2Cy%29 ,但没有其他操作。 在这种模式下,对半诚实的云的安全性来自于云的可见范围只包含密文。 此外,即使解密器知道

equation?tex=x ,例如加密器和解密器是相同的实体,它也不了解云的输入,除了结果

equation?tex=f%28x%2Cy%29

最近,Li等人 [41]指出,CKKS的近似解密结果可以泄漏解密密钥的附加信息。 他们成功地构造了被动攻击,如果允许访问解密结果,可以恢复解密密钥。 我们警告说,飞马中的解密者在没有做任何反制措施如[13]的情况下,不应该向加密者和其他任何人透露CKKS密文的解密值。

在下面的描述中,我们描述了云侧的计算,省略了解密器的解密阶段和加密器的加密阶段,因为这些操作要么简单,要么依赖于应用程序。

怎么样?是不是正津津有味呢,我们来个戛然而止吧!后面的内容继续等吧~!

喜欢我创作的小伙伴们,记得关注我哦,让我有动力持续创作,持续给大家带来干货。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值