扫盲篇:数字签名、数字证书、域名劫持、域名欺骗

         扫盲文件完整性校验——关于散列值和数字签名

★什么是”完整性校验”?

  所谓的”完整性校验”,顾名思义,就是检查文件是否完整。那么,什么情况下会导致文件不完整捏?大概有如下几种情况。

  1. 感染病毒 
  比方说你的系统中了病毒,病毒感染了某个软件安装包或者某个可执行程序。那么该文件的完整性就被破坏了。

  2. 植入木马/后门/人为篡改 
  还有一种文件不完整的情况,是被别有用心的人植入木马或后门。比方说某些国内的软件下载站点,它们提供的 Windows 安装光盘镜像已经被安置了后门。

  3. 传输故障 
  这种情况主要发生在网络下载时。因为网络传输是有可能发生误码的(传输错误),另外还有可能下载到快结束的时候断线(下载不完整)。这些情况就会导致你下载的文件不完整。 
  如今的上网环境相比当年的Modem拨号,已经有明显改善。所以这种情况应该不多见了。

★散列算法(哈希算法)扫盲

◇什么是”散列算法/哈希算法”?

  这里所说的”散列”是一种计算机算法,洋文叫做 Hash,有时候也根据音译称为哈希。 
  散列算法可以把任意尺寸的数据(原始数据)转变为一个固定尺寸的”小”数据(叫”散列值”或”摘要”)。

◇摘要长度

  对于某个具体的散列算法,得到的散列值长度总是固定的。散列值的长度又称”摘要长度”。 
  以下是常见散列算法的摘要长度 
CRC32 32比特(4字节) 
MD5 128比特(16字节) 
SHA1 160比特(20字节)

◇散列算法的特色

  1. 不可逆性 
  从刚才的描述看,散列似乎有点像压缩。其实捏,散列算法跟压缩算法是完全不同滴。压缩算法是可逆的(可以把压缩后的数据再还原),而散列算法是不可逆的。 
  还有一些人把散列算法称为”加密算法”,这也是不对的。因为加密算法是可逆的(”加密”的逆操作就是”解密”),而散列算法是不可逆的。

  2. 确定性 
  通过某种散列算法,分别对两个原始数据计算散列值。如果算出来的散列值不同,那么可以 100% 肯定这两段数据是不同的——这就是”确定性”。 
  但反过来,如果这两段数据的散列值相同,则只能说,这两段数据非常可能相同。所谓的”非常可能”,就是说,还达不到百分百。具体原因,请看下一节”散列函数的可靠性”。

★关于散列算法的可靠性

◇什么是”散列碰撞”?

  刚才说了,存在非常小的可能性,导致两段不同的原始数据,计算出相同的散列值。这种情况称之为”散列碰撞”或”散列冲突”。

◇碰撞的类型

  散列碰撞的类型,大体上有两种:

  1. 随机碰撞 
  随机碰撞就像买彩票中大奖,完全是出于小概率的偶然因素——你碰巧遇见两个不同的数据(文件),具有相同的散列值。 
  理论上讲,任何散列算法都存在随机碰撞的可能性,只是可能性有大有小。

  2. 人为碰撞 
  人为碰撞就是说,有人(通常是恶意的攻击者)故意制造散列碰撞,以此来骗过”基于散列值的完整性校验”。

◇如何避免碰撞

  1. 对于随机碰撞 
  要避免随机碰撞,很简单,只需要选择摘要长度足够长的散列算法。 
  拿前面举的3个例子。 
  CRC32 的摘要长度是 32bit,也就说,最多可以表示 “2的32次方” 这么多种可能性(也就是几十亿,数量级相当于地球总人口)。表面上看貌似很大,其实还不够大。比如当前互联网上的页面总数就已经大大超过几十亿。如果对每个页面计算 CRC32 散列,会碰到很多重复(碰撞)。 
  而 MD5 的摘要长度是128bit,也就是 2的128次方。这个数字足够大了。通俗地说,从宇宙诞生到宇宙毁灭,你都未必有机会碰见 MD5 的随机碰撞。而 SHA1 的摘要长度是160bit,那就更不用说了。

  2. 对于人为碰撞 
  想避免人为碰撞,要同时兼顾两个因素——散列算法的摘要长度、散列算法的优秀程度。”摘要长度”刚才已经解释了。光说一下”算法的优秀程度”。 
  如果某个散列算法有缺陷(不够优秀),那么攻击者就可以比较容易地构造出两个不同的原始数据,但却拥有相同的散列值。如此一来,就可以骗过基于散列算法的完整性检查。 
  典型的例子就是 MD5,MD5算法在过去10多年里曾经非常流行,但是前几年被发现存在严重缺陷。所以,MD5 虽然随机碰撞的概率非常非常低,但人为碰撞的概率可不低。如果你比较注重安全性,尽量不要依赖 MD5 进行完整性校验。

★散列值校验的步骤

  如今,大伙儿的安全意识越来越高了。相应的,很多知名的软件,除了在官网上提供下载,还会相应提供下载软件的散列值。当你下载好某个软件之后,先在自己电脑里计算一下散列值,然后跟官方网站提供的散列值对比一下。如果散列值一样,通常就说明没问题。再啰嗦一下,尽量不要用 MD5,改用 SHA1。

  下面,介绍几个常用软件的散列值页面,便于大伙儿查询

  微软的产品 
  到”这个页面”:http://msdn.microsoft.com/zh-cn/subscriptions/downloads/default.aspx

可以查微软发布的所有产品的散列值。微软的产品很多,先根据类型或名称筛选,找到某产品后,点”详细信息”,就可以看到 SHA1 散列值。

  Firefox 浏览器 
  打开如下链接,可以看到 Firefox 某个版本的 SHA1 列表(把链接中的 XXXX 替换为版本号,比如18.0.2)。这个列表很长,包括各种语言,各个平台。为了方便起见,你可以先算好 SHA1 散列值,然后到里面搜索该散列值 
https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/XXXX/SHA1SUMS

★散列值校验的工具——FCIV

  前面说完了校验的流程,最后再说一下校验的工具。 
  考虑到大部分读者是 Windows 用户,俺介绍一下微软官方的 FCIV(全称是 File ChecksumIntegrity Verifier)。这是一个小巧、绿色、免费的命令行工具,下载页面在”这里”:http://support.microsoft.com/kb/841290/。 
  因为是命令行工具,你需要先运行 CMD,出现 Windows 的命令行界面(黑窗口)之后,在其中使用该工具。下面是 FCIV 功能简介。

◇计算单个文件

  比如你有一个微软的系统安装光盘镜像,位于C:\download\Windows.iso 那么,用如下命令可以计算该文件的 SHA1 散列值 
fciv -sha1 C:\download\Windows.iso

◇批量计算某个目录

  FCIV 支持批量计算某个目录下的文件散列值。比方说,可以用如下命令可以计算 C:\download 目录下的每一个文件的 SHA1 
fciv -sha1 C:\download\

◇批量计算并存储,供前后对比

  比如 C:\download 目录下有很多文件。俺想知道过一段时间之后,这些文件是否被改过。那么,可以先用如下命令,把该目录中所有文件的 SHA1 散列都存储到某个 xml 文件中(本例中,保存到 C:\hash.xml,你也可以保存到其它文件名) 
fciv -sha1 C:\download\ -xml C:\hash.xml

  过了一段时间后,你可以用如下命令,就可以看出哪些文件被修改过。 
fciv -sha1 C:\download\ -xml C:\hash.xml -v

★什么是”数字签名”?

 

数字签名:

报文按双方约定的HASH 算法计算得到一个固定位数的 报文摘要。在 数学上保证:只要改动报文中任何一位,重新计算出的 报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。
将该报文摘要值用发送者的私人 密钥加密 ,然后连同原报文一起发送给接收者,而产生的报文即称 数字签名

数字证书:

数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-----CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名




一篇很形象的关于数字证书的图形化介绍

1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥。


2.  鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。


3.  苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果


4. 鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。


5.  鲍勃给苏珊回信,决定采用 "数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)


6. 然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。


7. 鲍勃将这个签名,附在信件下面,一起发给苏珊。


8. 苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。


9. 苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。


10.  复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。


11.  后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。


12. 鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。


13. 苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。


14. 下面,我们看一个应用"数字证书"的实例:https协议。这个协议主要用于网页加密。


15. 首先,客户端向服务器发出加密请求。


16. 服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。


17. 客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。


18. 如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。


19 .如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。


20.如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。


总结

数字签名 就是使用个人私密和加密算法加密的摘要和报文,是私人性的。而数字证书是由CA中心派发的.



★DNS 是啥?

DNS 是洋文“Domain Name System”的缩写,直译过来就是“域名系统”。 

★DNS 有啥用?

咱们每天打交道的这个互联网,其底层的基石是“IP”。IP 是“Internet Protocol”的缩写,中文就“互联网协议”(光看名字就知道这玩意儿很重要)。咱们日常用的那些互联网软件(浏览器、聊天工具、下载工具、等等)在工作时,必须依靠【  IP地址 】才能进行网络数据传输。 
“IP地址”是设计给软件用滴——虽然软件很容易处理,但对于人类而言,却很难记忆。于是,后来又发明了 DNS。有了 DNS,人类就不需要记住长长的一串 IP地址,而只需记住“域名”(域名通常更短,也更具有可读性)。 
比如你上网的时候,只需在地址栏输入网站的“域名”,而不用输入网站的“IP地址”。然后电脑系统会利用 DNS 来把“域名”翻译成“IP地址”。这个翻译的过程术语叫“域名解析/DNS解析”。 

★域名的结构是咋样滴?

域名是按照“树形结构”组织的。不懂得啥是“树形结构”的同学,可以对照一下电脑硬盘上的目录结构。域名的结构和目录结构很类似,目录结构是用“斜杠”作分隔符,而域名是用小数点作分隔符。两者的主要区别在于:目录结构名称的形式是从左到右(上级在左,下级在右),而域名是从右到左(上级在右,下级在左)。 
以俺博客的域名为例: 
program-think.blogspot.com 的上级域名是  .blogspot.com 
.blogspot.com
 的上级域名是  .com 
这里的 .com 就被称为顶级域名(Top-Level Domain,简称 TLD),跟 .com 类似的那些 .net .org .gov 也是顶级域名。还有那些以国家/地区的代码命名的(比如 .cn .tw .hk .jp 等等)也是顶级域名。 

★“域名解析”是咋实现滴?

如果你曾经配置过电脑的网卡,应该记得上面除了有IP地址、掩码等设置,还有一项设置是“DNS服务器/域名服务器”。这项设置就是用来帮助你的电脑进行域名解析的。你可以把这个“DNS服务器”想象成114查号台。每当电脑需要翻译某个域名,就找这个域名服务器查询,然后域名服务器会告诉你的电脑,要查询的域名对应的IP地址是啥。 
下面简单说一下,你的电脑进行域名解析的过程。 
为了叙述方便,以俺博客为例。当你在浏览器的地址栏中输入  http://program-think.blogspot.com/ ,然后敲回车,这时候电脑软件会进行如下一系列事情。 
1. 首先根据输入的网址,提取出域名(在本例中,也就是  program-think.blogspot.com) 
2. 如果你在系统中配置了 Hosts 文件,那么电脑会先查询 Hosts 文件,看这个  program-think.blogspot.com 否已经在 Hosts 里面有了对应的记录。如果有,直接就可以拿到该记录中的 IP地址,过程就结束了。 
3. 如果 Hosts 里面没有这个别名,那么电脑会看你有没有设置域名服务器(DNS 服务器)。如果你的系统没有设置域名服务器,那电脑就没辙了,浏览器直接会报错,说网站的域名无法解析。过程就结束了。 
4. 如果你设置过“域名服务器”,那么电脑会向这个域名服务器发送一个域名查询(DNS query)的请求,然后等候域名服务器的回应。 
5. 如果域名服务器始终没有回应(比如域名服务器挂了,或域名服务器的IP填错了,或请求被 GFW 拦截了),那么电脑还是没辙(浏览器会报错)。 
6. 如果域名服务器回应了,那么你的电脑就可以根据域名服务器的应答信息,得到该域名的 IP地址。之后浏览器就会向这个 IP地址 对应的 Web 端口发送 HTTP 请求。 
通常情况下,电脑拿到的(DNS服务器)应答信息是正确的——也就是说,应答中的 IP地址 确实对应那个域名——这种情况下,你的网络软件就可以正常工作了。 
但是在天朝这个奇葩的国家,电脑拿到的 DNS 应答有可能是【  错的 】。为啥会这样捏,本文的后半部,俺会介绍一下“域名劫持”和“域名污染”。 

★域名服务器如何知道这些信息?

(本小节的内容偏技术化,技术菜鸟请仔细理解) 
刚才介绍了“客户端域名解析”的过程。接下来说说域名服务器是如何得到这些信息的。 

◇域名的缓存

大伙儿平时使用的域名服务器,技术术语叫“递归域名服务器”。“递归服务器”是面向普通网友的。刚才介绍“域名解析”的时候提到的服务器就是“递归服务器”。 
“递归服务器”的内部通常会有一个 DNS记录 的缓存——这个缓存是为了提高查询效率的。当某台电脑向递归服务器发起域名查询时,递归服务器首先看自己的缓存中有没有该域名的记录,如果有,直接就回复该记录给查询的电脑。 
万一对方想要查询的域名没找到,咋办捏?这时候就要进行缓存的同步。 

◇缓存的同步

下面就拿俺博客的域名为例,说说这种情况的处理流程。 
1. 对方查询 program-think.blogspot.com 这个域名,“递归服务器”发现自己的缓存中没有 
2. “递归服务器”会先去找“根域名服务器”帮忙,“根服务器”会告诉“递归服务器”说:这个域名属于 com 这个分支之下,你去找 com 这个域名的“权威服务器”,这个权威服务器的 IP地址 是 xxx。 
3. 然后“递归服务器”根据拿到的这个 xxx地址,又去找“com 域名的权威服务器”。“com 域名的权威服务器”告诉它:你应该去找“blogspot.com 域名的权威服务器”,这个权威服务器的 IP地址 是 yyy 
4. 然后“递归服务器”又屁颠屁颠地去找“blogspot.com 域名的权威服务器”。这时候“blogspot.com 域名的权威服务器”才会告诉它,program-think.blogspot.com 这个域名的 IP地址 到底是多少。 
大伙儿看到没有?整个过程如同“踢皮球”,效率是很低的。所以俺前面提到,“递归域名服务器”必须得有一个缓存,以此来优化效率(不用每次查询都来一次“踢皮球”)。 

◇同步的周期

说完了“域名的同步”,顺便提一下“同步的周期”。 
因为互联网上的域名信息是有可能发生变化的。比如增加了某个新域名,注销了某个旧域名,或者某个域名对应的 IP地址 变了。所以,“递归服务器”上保留的缓存中,每一条域名记录都有一个生命周期(可能是几分钟,也可能是几小时)。如果某条记录的生命周期过了,就会被删除,然后重新同步。 

★啥是“域名劫持”?

刚才说了,域名服务器上都会保存一大堆的域名记录(每条记录包含“域名”和“IP地址”)。当收到域名查询的时候,域名服务器会从这堆记录中找到对方想要的,然后回应给对方。 
如果域名服务器上的某条记录被【人为修改】了(改成错的),那么一旦要查询这条记录,得到的就是错误的结果。这种情况称之为“域名劫持”。 

★谁有“域名劫持”的企图?

“域名劫持”通常是电信运营商(ISP)干的好事儿。很多宽带用户用的域名服务器就是 ISP 提供给你的。而天朝的 ISP 也是很奇葩的——经常耍流氓。 
举例: 
前几年曾经出现过:某个 ISP 跟百度勾结,把谷歌的流量重定向到百度。具体搞法是:该 ISP 篡改自己的域名服务器的记录,把里面跟 google.com 相关的域名记录的 IP地址 修改为百度服务器的 IP地址。如此一来,假设你用的是这个 ISP 的域名服务器,当你在浏览器输入 www.gooogle.com 的时候,你的电脑查询到的 IP地址 其实是百度的 IP地址,所以浏览器打开的是“百度”的主页。 

★如何对付“域名劫持”?

刚才说了,“域名劫持”的根源在于:域名服务器上的记录被人给改了。要对付这种耍流氓,最直接的办法就是不要使用这种流氓 ISP 提供的域名服务器,改用国外那些比较靠谱的。目前口碑最好的,大概是 Google 提供的两个域名服务器,IP地址 分别是 8.8.8.8 和 8.8.4.4 ——这俩不光是地址好记,更重要的是,不会耍流氓。 

★啥是“域名污染”?

先提醒一下:“域名污染”这个词还有其它几个别名,分别是“域名欺骗”、“域名缓存投毒”(洋文叫:DNS cache poisoning)。今后看到这几个别名,要晓得是同一个意思。 
“域名污染”的原理,简单说来是这样滴:当你的电脑向域名服务器发送了“域名查询”的请求,然后域名服务器把回应发送给你的电脑,这之间是有一个时间差的。如果某个攻击者能够在域名服务器的“DNS应答”还没有到达你的电脑之前,先伪造一个错误的“DNS应答”发给你电脑。那么你的电脑收到的就是错误的信息,并得到一个错误的 IP地址。 

★谁有“域名污染”的企图?

从技术上讲,只要攻击者能够位于“你”和“域名服务器”的传输线路中间,那么攻击者就有机会搞“域名污染”。能够做到这点的,可能是一个黑客/骇客,也可能是 ISP。不过这些都不是本节聊的重点。本节的重点是 GFW——它是最有资源搞域名污染的,同时也最有意愿搞域名污染的。在《  如何翻墙? 》这篇全面扫盲教程中,俺提到 GFW 最有名的三板斧,其中一板斧就是“域名污染”。 
举例: 
比如某个国外网站,长年累月地抹黑咱们伟大光荣正确的党国,搞得咱们的“伟光正”很没面子,很不爽。那么朝廷的“真理部”就会给 GFW 下达封杀令——要求 GFW 全面封锁某某网站。对于 GFW 而言,要全面封掉某个网站,最简单的一个办法就是直接污染该网站的域名。用了这招之后,那些不懂翻墙的网友只要是通过【域名的方式】访问该网站,他们的电脑进行 DNS查询 之后,多半会得到错误的结果(也就是说,查到的 IP地址 是假的);既然拿到假的 IP地址,当然就无法打开这个网站的页面啦。 

★GFW 的两种“域名污染”

刚才俺解释了“域名污染”的原理,那种形式不妨称为“直接污染”。由于 GFW 的特殊性,它不但可以做到“直接污染”,还可以做到“间接污染”。而普通的骇客顶多只能做到“直接污染”,难以做到“大范围的间接污染”。 
那么这两种污染有啥区别捏?且听俺细细道来。 

◇GFW 部署在哪?

首先有必要先扫盲一下“GFW的部署位置”。咱们天朝的互联网只有少数几个国际出口(名气较大的是:北京出口、上海出口、广州出口)。如果你要访问天朝之外的网站,你的网络数据流就必定会经过其中的某个“国际出口”。而天朝的【每一个】国际出口都部署了 GFW 的设备。 
说到 GFW 的设备,顺便插一句: 
GFW 是洋文“Great FireWall”的缩写。很多同学(包括很多懂技术的同学)都望文生义,想当然地以为 GFW 就是某种“防火墙”设备。其实不然。GFW 是基于 IDS(IDS是“入侵监测系统”的缩写)打造的。有空的话,俺再来聊聊 GFW 本身的技术细节。 

◇GFW 的直接污染

因为 GFW 部署在天朝的国际出口。如果你用的是【  国外的 】域名服务器,你的“DNS请求”必定会经过国际出口;同样,域名服务器的“DNS应答”必定也会经过国际出口才能到你的电脑。这一来一回就给 GFW 提供了耍流氓的机会。 
这种污染就是俺所说的“直接污染”。 

◇GFW 的间接污染

刚才介绍了“使用国外域名服务器会被直接污染”。那如果你用的是【  国内的 】域名服务器捏?就会被“间接污染”。过程如下: 
1. 比方说你用的是电信的 DNS服务器,然后你想要访问某个(被封杀的)反共网站。因为这个反共网站在国外,所以反共网站对应的“权威域名服务器”肯定也是在国外。 
2. 当你向“电信的DNS服务器”查询反共网站的域名,这台“电信的DNS服务器”会去找这个反共网站的上一级域名对应的“权威域名服务器”去进行“域名查询”。 
3. 因为是从国外进行域名查询,相关的数据流必定要经过国际出口。一旦经过国际出口,就会被 GFW 污染。 
4. 如此一来,“电信的域名服务器”拿到的是已经被污染的域名记录(里面的IP是错的)。而且“电信的域名服务器”会把这条错误的记录保存在自己的域名缓存中。 
5. 下次如果有另一个网友也找这台“电信的域名服务”查询这个反共网站,也会查到错误的结果。 
上述过程不断重复,最终会导致:全国所有的域名服务器,它们的缓存中只要是包含了那个反共网站的记录,记录中的 IP地址 必定是错的(这个错误的 IP地址 也就是 GFW 伪造的那个)。所以说“间接污染”是很牛逼的,可以把错误的域名记录扩散到全国。 
刚才俺说了,“域名污染”也叫“域名缓存投毒”。“投毒”一词真的非常形象——就好象在某条河流的源头下毒,从而把整条河流的水都污染。在互联网时代搞“域名污染”是非常卑鄙下流的。因为 DNS 是互联网的基础设施,而“域名污染”直接破坏了互联网的基础设施。所以说,天朝是一个非常奇葩的国度;咱们面对的是一个做事情毫无底线的政府。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值