每周转载:汇市的三个咒符(人民币汇率、官方外汇储备、中国持有的美国国债)

★引子

  最近几个月,人民币持续贬值,幅度还挺大。关于汇率会否“破7”,引发了很多人的关注。昨天(2018年10月30日),人民币兑美元跌到十年来的最低点。虽然还没有“破7”,但也是一个标志性事件。
  所以,今天转载一篇文章,标题是《汇市的三个咒符》,谈谈朝廷方面(尤其是央行)在金融方面进退失踞的困境。
  顺便说一下:
  同样是在这个10月,股市大盘【跌破2500点】,当时俺发了一篇博文:《每周转载:这轮股灾到底有多惨,看了你就知道了》。
  从股市到汇市,再加上美国发起的贸易战。几个方面都表现出——天朝经济很不妙。

★温克坚:汇市的三个咒符

  (注:此文写于10月21日,原始出处在“这里”,以下是原文)

  “如果数学是上帝的符号,那有些数字则是魔鬼的咒符。”

“2018年10月21日,人民币兑美元中间价报 6.9290”
“2018年10月7日,央行公布最新数据显示,截至2018年9月末,中国外汇储备规模为 30870亿美元,较8月末下降 227亿美元,降幅为 0.7%”
“2018年10月16日,美国财政部公布的数据显示,8月中国所持美国国债降至 1.1651万亿美元。”

  上述三段消息分别对应:人民币汇率、官方外汇储备、以及中国持有美国国债规模。

  人民币汇率信息每天公布,牵动市场情绪,影响资产价格,无数双眼睛紧紧盯着;外汇储备数据每月公布一次,往往也会引发广泛关注;至于美国财政部定期公布的中国所持美国国债数额,技术上有些时滞,公众关切度显著降低。

不见图 请翻墙

  毫无疑问,“汇率,外汇储备、中国持有美国国债”是三个深刻关联的数值。2018年5月以来,人民币汇率快速走低,外汇储备在 3万亿 附近死扛,而中国持有美国国债则小幅下降。这三个数值背后,是一场公众模模糊糊感知,市场隐隐约约显示征兆的正在生成中的一场中国汇率危机。

  目前为止,对这场危机是否存在是有争议的,对其全貌的刻画是粗浅的隐晦的。但有意思的是,经过“政策层,舆论发酵和市场参与者”的互动过程,似乎分别形成了一个敏感心理点位,也就是三个重要疑问:

人民币/美元汇率是否突破 7?
外汇储备是否跌破 3万亿?
中国持有美国国债的数额何时少于 1万亿美元?

◇1. 汇率“破7”?

  这三个数值当中,人民币汇率是否“破7”最受关注。人民币汇率关系到几乎所有以人民币定价的资产价格,利益相关者众多,具有最广泛的和强烈的信号特征,因此最容易激发公众关注热情,人们讨论也最为热烈。很多朋友都会时不时的问我对汇率走势的看法,我数个熟悉的朋友也为此设立了一个象征性赌局,一方认为年底之前人民币汇率不可能“破7”,另一方认为年底之前必然“破7”,输家要请很多朋友到沙县小吃大快朵颐。

  人民币汇率是否应该“保7”?这个话题的形成过程,已经很难梳理清楚。不过卷入这个争议话题的部分人士的表述提供了一些解释。

不见图 请翻墙

  刘世锦认为,社会上对人民币贬值的担忧和守住某个“关口”的主张,重要的不是具体“点位”,关键是汇率机制要正确。只要机制正确,不怕“点位”不回来。他还说,无论是“破7论”还是“保7论”,都忽略了均衡是动态的,这一点至关重要。人民币的均衡水平并非一成不变,应该适应人民币均衡水平的动态调整,增强汇率的灵活性,发挥市场自动均衡的基础性作用,保持人民币在合理均衡水平上的基本稳定。

  余永定认为,在美联储加息、人民币贬值压力上升情况下,不要对汇率市场进行干预,没有必要守住“7”这个所谓的心理关口。破 7 不破 7、什么时候破,没什么意义,也不重要。重要的是再也不能像过去那样大量损耗外汇储备了。他说,对货币当局而言,这意味着即使美元兑人民币汇率跌至 7 以下也必须坚持不干预政策。只要有了这种忍耐,汇率制度改革就可能最终大功告成。

  余(永定)曾经是央行货币委员会成员,刘(世锦)目前还是货币委员会成员。两人的声音都有某种影响力,然而显然不能代表货币当局的立场。

  另外一方,汇率要“保七”的声音同样强烈。吴晓求早在两年前演讲中就表示,“对于人民币而言,7 元应该是最基本的底线,我想汇率在达到这一位置的时候,应该让它稳定下来,不应该让它出现大幅度贬值。

  沈建光认为,稳汇率就是“稳预期”。人民币大幅贬值会削弱国内购买力和消费者信心,并向房市、债市、股市传导,加大系统性风险。因此,避免“破7”对于稳定汇率预期至关重要,央行应当会采取各种措施保持汇率稳定,年内人民币汇率大概率不会“破7”。

  赵庆明的表态最直接了当,他认为,破不破 7 并非无关紧要,6.9999 与 7.0001 有本质的区别。因为人民币外汇市场很“浅”,人民币汇率并不具备自动调节机制,没有一个有深度广度、成熟完善的外汇市场,汇率就不可能具有自动调节机制,汇率容易暴涨暴跌。

  汇率是否“破7”,显然不仅仅是经济账本,或者起码不是一个能算得清楚的经济账本。因为牵涉到公众预期,牵涉到社会反应,牵涉到金融安全,就变成了一场复杂博弈。

  最终官方会如何做出选择?从财经官僚公开言论来看,很难看出倾向性的立场表述。但事实上,市场参与者可以很明显的感觉到官方有守护 7 的政策意图。要求外汇远期合约提交 20% 的保证金,重新推出汇率中间价的逆周期因子,在离岸市场发行人民币债券挤压人民币卖空能力,都是这种政策意图的反应。

  某种意义上,这是一个典型的自我实现的游戏。各方关切程度相关越高,越认为这是一个心理关口,心理关口失守的后果就越严重,官方也就越有捍卫这个关口的迫切性。

  不过央行要稳定人民币汇率,就必须向外汇市场提供流动性,消耗外汇储备,捍卫汇率底线的代价是巨大的。根据余永定的研究,2015年和2016年,为稳定人民币汇率,央行不断干预外汇市场。在不到两年的时间里,中国花掉约 1万亿美元 外汇储备。

  2008年5月份以来,央行为捍卫 7 的底线而干预市场投入外汇的准确数据并不透明。不过考虑到“贸易顺差本应带来的外汇储备增加”和“现实外汇储备数据的递减”,保守估计每个月消耗 400~500亿美元 左右的外汇储备才能捍卫目前底线。

  让官方忧心的是,在贬值趋势无法逆转的情况下,在汇率上这种且战且退的做法拉长了战线。在社会心理意义上,等于缓慢而持续的动员,会刺激大部分原来并不敏感的人群,让公众对人民币资产的汇率风险感知越来越强烈,也就滋生更大的动能来进行资产腾挪,这会导致更强的资本外流压力和贬值压力。

  从微观层面来说,货币当局护盘人民币汇率,提供了一个难得的资产美元化(虽然要克服很多障碍)的机会窗口,那些捕捉住机会的少数人群将在未来会表达对货币当局的感激。

  作为一种替代性政策选项,在舆论中被经常讨论的做法是官方选择一次性大幅度贬值,释放贬值压力,然后坚守底线。问题是如何才算贬值到位,才算达到市场均衡水平,根本不是理性计算能达到的。长期的僵化控制让汇率信号严重扭曲,市场均衡水准需要一定时间的剧烈震荡才能调整到位。决策层对这种震荡前景也心知肚明,不敢冒险采取一次性大幅贬值的策略,因此才逐步深陷这个汇率心理节点上。

不见图 请翻墙

  不过在未来某个时间点回头看,当下纠结于是否“破7”其实是非常荒诞的——人民币“破7”是迟早的事。有论者参照美国 M2/GDP 的数值,每万亿 GDP 对应的 M2 为 0.719 万亿美元,推算出来人民币汇率应该为 19.77。这个或许有点耸人听闻,不过如果有一天,人民币汇率跌破 10,那意外不意外?意外不意外?

◇2. 储备知多少?

  捍卫人民币汇率需要消耗外汇储备,而问题的另一端是,外汇储备本身更需要捍卫。2015年8月以来的资本管制政策表明,官方对捍卫 3万亿美元 的外汇储备用心之巨,用心之苦,远非寻常人能理解。

  官方拥有的外汇储备数值,和公众日常经济行为有所隔阂,公众对此并不甚关注。不过对投资机构和投机人群,这却是一个重要的关切点,通过这个数值可以确定央行捍卫汇率底线的能力和意愿。如果外汇储备不充分,将影响中国的国际贸易,影响国际融资能力和主权信用。简单的说,外汇储备不足,就容易引发国际支付危机。

  目前来看,根据 IMF 外汇储备充足率的评估公式,中国外汇储备充足率下限是 2.67 万亿。和目前官方拥有的外汇储备相比,还有 4000 亿美元的缓冲量。IMF 的指标考量涵盖贸易冲击、债务偿还、资本外逃等在内的一系列风险,并根据不同汇率制度和资本账户安排设定不同的风险权重。

  也有机构根据 IMF 测算指标和中国实际情况得出了:最优外汇储备 = 30% × 短期外债余额 + 20% × 其他组合债务余额 + 5% × 广义货币供应量 + 10% × 出口总额的计算等式。结果显示,2004~2016年,中国的实际外汇储备始终高于最优外汇储备规模的上限,但近两年的实际外汇储备规模越来越接近于最优规模上限。

不见图 请翻墙

  不过根据公开信息进行的理论推算,往往会因为信息污染而导致结论失真。(注:截至2018年9月末)官方宣布的最新外汇储备数值是 30870 亿美元。不过中国外汇储备构成结构,目前并不透明。根据我此前的跟踪了解,其中大约有 7000亿美元 左右作为对各类金融机构的资本金投入,另外有 3千亿美元 服务于外交和政治目标的政府间长期贷款。30870亿美元 外汇储备中,有很大一部分变成了流动性很差的资产和债权。

  另外一个值得警醒的数据是:2015年8月份启动汇率改革之际,中国外债总规模是 1.1万亿美元;而到2018年9月底则增加到了 1.8万亿美元,债务增加了 7000亿美元,但外汇储备几乎一直在 3万亿 附近波动。这里除了印证余永定先生长期研究的贸易顺差变成资本外逃通道的结论之外,还透露了另外一个重要的信息,那就是通过借外债来维护 3万亿 美元储备的数值,这就是典型的拆东墙补西墙。有资格在国外发债的往往都是大型国企和大型不动产开发商,如果人民币大幅度贬值,外债压力显然会把他们压垮,这也是一次性贬值被排斥在政策选择之外的重要政治经济考量。

  另外,随着对人民币汇率的担忧,会有更多投资者有资产多元化配置和资产离岸的需求。中国房地产总市值 400万亿人民币,只要其中 5% 的资产转换为美元,就是不可承受的压力。目前官方采取的应对措施是强化资本管制,无论是居民和企业,要想通过正常渠道把资金汇到境外,其难度是越来越高了。高净值家庭来说,要想配置部分美元资产或资产离岸,正常渠道几乎已经全部堵死。从这些现象来看,中国根本不像看起来拥有那么多的外汇储备,IMF 宣称的外汇充足率并没有经受过任何压力测试,听起来十分空洞。

  中美贸易纠纷带来的短期后果之一,就是大量外资机构的撤资,这也产生了很多资本汇出的需求。曾经在中国大量投资的日资企业和韩国企业目前正在资本管制的狭窄通道里挣扎。这个时候,李嘉诚提早撤退的先见之明就被当成段子一样传颂了。

不见图 请翻墙

  而中美贸易纠纷的长期后果显然更为严重。长期以来,来自美国的贸易顺差一直在全部顺差的七成以上。今年前三季度,中国全部贸易顺差是 2118亿美元,对美顺差则是 2258亿美元,可见对美贸易在外汇储备来源的不可替代性。中美贸易纠纷显然对中国外汇储备构成重创。

  其实,即使不考虑上述预期后果,仅仅根据目前外汇储备的消耗速度,3万亿 底线的失守也是迫在眉睫的事件。“保外储”还是“保汇率”之争依旧甚嚣尘上。不过这两者本来就是枝叶相联,荣枯一体——汇率防线失守,外储防线自然也守不住。

◇3. 美债干烧?

  最后,但并非最不重要的是——中国持有美国国债的数据。这其实是一个特别重要的信号载体。

  中国的外汇管理体制限制了居民和企业按照市场化方式参与外汇市场自主交易的空间,外管局事实上承担着数万亿美元资产的管理任务。根据公开信息,外汇局旗下拥有“华新公司、华安公司、华欧公司、华美公司”等4家投资公司,负责中国外汇储备的投资和管理。

不见图 请翻墙

  美国国债作为安全性高、流动性好、容量大的资产类别,几乎是无风险资产,长期受到投资者青睐。随着中国外汇储备从2001年1月的 1686亿美元 增长至2018年1月的 3.1614万亿美元,中国大陆地区的美国国债持有量也从 615亿美元 增长至峰值 1.2万亿美元。

不见图 请翻墙

  中国实际持有的美国国债其实比这个数值还要高,外管局下属的几大境外资产管理平台曾经通过分散化平台持有美国国债,某个注册在比利时的被认为归属于外管局的机构就曾经持有 2000多亿美元 的美国国债。不过根据外媒报道,那些美债已经在2017年前被抛空,用来填补在2015~2017年外汇市场干预过程的外汇储备消耗。现在官方公布的美债数据或是中国真实的持有量。

  从2018年6月份以来,中国持有美国国债规模连续3个月下跌,8月环比减少 59亿美元,创下去年6月以来的新低;此前6月减持 44亿美元,7月环比减少 77亿美元。如何理解这几个月的减持美债行为?目前看来,由于数额不够巨大,时间延续性还不足,因此难以形成一个明确的结论。

  但如果中国官方被迫需要抛售美国国债来进行外汇支付,可以被认为是其他资产或支付手段基本穷尽,也就是外汇储备进入“干烧”的阶段,那样会给市场带来强烈的刺激和震荡。中国持有的美国国债是市场信心真正的定海神针,一旦这个数据出现大幅度下滑,也就等于宣布中国外汇危机的开始。

  顺便说一句,在中美贸易纠纷中,民族主义话语推动的政策建议认为,中国可将减持美国国债作为“贸易战”中反制美国的措施。通过减持美国国债不能作为贸易战的制衡手段,这种说法既不了解美国国债的市场现状,也不清楚中国官方外汇储备的不便言说的寡人之疾!

◇总结

  总结一下,“人民币汇率,外汇储备,中国持有美国国债”三个数值,对经济体的健康程度有强烈的寓意。当然,除此之外,“GDP、股市、债市、M2、通胀率”也都是相互纠缠的达摩克利斯之剑……过去数年的市场过程客观上把货币当局逼迫到某个角落。要同时达成多个相互冲突的目标,祛除魔咒,化解危机,就看决策层如何大显神通了。

  2018年10月20~21日

★俺补充一些数据来源

  针对温克坚这篇文章,俺补充若干数据出处。

◇外汇储备数据

  《中华人民共和国外汇储备 @ 维基百科
  (截止俺写本文时,此页面的数据更新至2018年8月)
  从上述页面的数据看,2014年6月是外汇储备的顶峰(39932亿美元)。到2016年末,快速下降至 30105亿美元。如转载的文章所说——央行那几年在外汇市场进行干预,导致美元储备骤降(接近【一万亿美元】)。

不见图 请翻墙
(此柱状图出自报道:《外汇占款突然消失1293亿?买外汇发人民币的条件正在失去 @ 凤凰网》)

◇人民币/美元汇率

  截止俺写本文的前一天(10月30日),人民币兑美元中间价报【6.9574】。这个数字创2008年5月21日以来最低。换句话说,这是【十年来最低点】。30日当天的“离岸即期汇价”,盘中一度跌破 6.97。

不见图 请翻墙

  相关报道参见:《在岸人民币兑美元跌破6.97关口 创逾10年来最低 @ 网易财经

◇外债数据

  所谓【外债】,通俗地说就是:某个国家对国外的负债。更严谨的说法可以参见“国际货币基金组织”的定义:外债总额是指——在任一时点上的目前的实际负债总额,该负债要求债务人在未来某一时点偿还本金和/或利息,并且是某一经济体居民对非居民的欠债
  下面这篇报道出自官方喉舌“中新网”,介绍了【天朝外债的规模】。虽然天朝的外汇储备【3万亿美元】,看上去好像很多;但如果扣掉外债【1万8千多亿美元】,你算算还剩多少?
  《外汇局:中国6月末全口径外债余额为18705亿美元 @ 中国新闻网
  另外需要注意的是:上述报道针对的是【6月底】的外债数据。考虑到最近几年来,中国的外债水平处于【快速增长】的趋势。如今(10月底)很可能要【大于】1万8千亿美元。

◇国内债务数据

  既然分享了“外债”的数据,再顺便分享一下“国内债务”的情况。

不见图 请翻墙
(趋势图出自《“习式经济学”能否让债务问题软着陆? @ 日经中文网》)

俺博客上,和本文相关的帖子(需翻墙)
从量变到质变——中美关系40年
每周转载:这轮股灾到底有多惨,看了你就知道了
相当奇葩的天朝,【劫贫济富】的国度

基于安全性考虑,如何选择及切换 Firefox 版本?

  今天这篇,可以视作《弃用 Chrome 改用 Firefox 的几点理由》一文的后续和补充。

★本文所说的【安全性】,包括哪些层面?

  为了避免歧义,也防止有人来抬杠,俺先界定一下:
  本文以下内容提及的【安全性】,主要包括:“安全加固”和“隐私保护”,另外也会顺便谈到“隐匿性”。

★本文只针对桌面系统(PC)

  有一句话,俺唠叨了很多年(今天再唠叨一次):
如果你很在意安全性,就【不要】基于移动设备(手机、平板)进行各种【敏感操作】

  具体的原因,可以参见俺之前写的三个系列:
如何保护隐私
如何防止黑客入侵
如何隐藏你的踪迹,避免跨省追捕

  有鉴于此,你应该把【所有的】敏感操作都放到桌面系统中进行。而本文也只讨论:【桌面环境】中如何选择 Firefox。

★强烈建议:【不要】使用【中国版】

◇两种不同的 Firefox

  对于天朝的读者而言,你首先要搞清楚:“国际版”与“中国版”是【完全不同】滴!
  “国际版”——由 Mozilla 官方开发并维护,面向【全球用户】。
  “中国版”——由“谋智中国”在“国际版”的基础上进行定制(二次开发),面向【墙内用户】。

◇中国版的【劣迹】

  虽然这个“谋智公司”是 Mozilla 下属的公司,但由于它是在咱们天朝运营滴,多多少少会沾染上一些【中国特色】。据俺所知,“谋智中国”搞过好几次不光彩的破事儿。比如下面这个新闻曝光了“中国版 Firefox 擅自篡改用户设定的书签”:
  《谋智中国被发现 “do some evil” @ solidot

  关于这两个版本的差异,俺再随便聊几点:
  数据同步的差异
  “国际版”使用的是 Mozilla 官方的服务器;而“中国版”使用的是【国内服务器】。
  “服务器放在国内”意味着什么,大伙儿心知肚明。
  插件与扩展的差异
  “中国版”内置了一些恶心的东西(比如“支付宝控件”之类的东西)。
  搜索引擎的差异
  “国际版”内置的搜索引擎是“Google、Bing、duckduckgo、Wikipedia”这些。
  “中国版”内置的搜索引擎是“百度”这种非常人渣的公司。

◇如何避免下载到中国版?

  下载 Firefox 的时候,要看清楚网站的【域名】——
如果域名是以【firefox.com.cn】结尾,那就是流氓的“谋智中国”的网站;
而 Mozilla 官网的域名,是以【mozilla.org】结尾滴。

  注:聊完“中国版”的话题之后。本文后续部分的讨论,全都是针对【国际版】。

★扫盲一下 Firefox 的开发周期

  根据 Firefox 的开发流程,每个版本会经历如下几个阶段:

  Nightly(每夜构建阶段)
  在这个阶段,每天晚上会编译一个版本,包含当天加入的新代码(Nightly 由此得名)。

  Beta(β 测试阶段)
  在软件工程中,“β 测试”指的是——把软件提供给外部真实用户进行【试用】,以此来发现一些开发环境中未能发现的 bug。
  那么,这些用于外部测试的 Beta 版本是从哪里来的捏?实际上是从 Nightly 版本中筛选出内部测试比较 OK 的,然后作为 Beta。
  对这个阶段的版本,Mozilla 的软件工程师只进行 bug 修复,【不会】增加新功能。
  如今,“Beta 版本”也被称做“开发者版本”(洋文叫“Developer Edition”)。
  注:
  历史上曾经有过一个叫“Aurora”的阶段(位于 Nightly 与 Beta 之间)。当时的“开发者版本”指的是 Aurora。从“54版本”之后,为了简化开发周期,这个 Aurora 就废除了。所以“54版本”之后,“Developer Edition”就是指 Beta。

  Release(发布阶段)
  经历了“β 测试”之后,就正式发布。
  那么,这些用于发布的 Release 版本是从哪里来的捏?实际上是从 Beta 版本中挑选出外部测试比较 OK 的,然后用作发布。
  对这个阶段的版本,Mozilla 的软件工程师只进行“大 bug”(关键 bug)的修复工作。对“小 bug”,会留到下一个版本。
  Release 的版本号规则如下:
  (截止俺写本文时)最新版本是【63.0】——这是刚发布时的版本号。
  过了一段时间后,如果修复了一些关键 bug,会再出一个版本叫【63.0.1】,然后再下一个是【63.0.2】,以此类推…

  举例:
  在俺写这篇博文时,Firefox 的几个版本处于如下状态:

65 64 63 62
  Nightly     Beta     Release    
    Nightly     Beta     Release  


  你可以通过如下几个链接,查看并下载 Firefox 历史上的【所有版本】。
https://archive.mozilla.org/pub/firefox/releases/
https://ftp.mozilla.org/pub/firefox/releases/

  如果你熟悉 Web 相关技术的话,还可以通过如下链接,查看历史上【每一个版本】的技术性发布说明(相当于写给程序猿看的 Release Notes):
https://developer.mozilla.org/docs/Mozilla/Firefox/Releases

★Firefox 的两种【发布版本】

  Firefox 的版本迭代周期大约是6~7星期。当下一个版本进入 Release 阶段,之前那个版本就不再维护了(不再修复 bug)。
  但是为了照顾到【企业用户】,Mozilla 还搞了一个【长期支持版本】(洋文叫“Extended Support Release”,缩写为 ESR)。
  每隔7到8个版本,就有一个版本被选作 ESR 版本。ESR 的维护周期比较长(一年左右)。只有当下一个 ESR 版本出现之后,才会结束对上一个 ESR 版本的维护。

  下面是最新的 ESR 版本下载页面(包含:不同平台,多个语种):
https://www.mozilla.org/firefox/organizations/all/

★【不要】使用“Nightly”和“Beta”

  如果你理解了 Firefox 的开发流程和发布规则,自然也就理解了——为啥【不应该】使用“Nightly”和“Beta”。
  因为这两个版本的质量【尚未】达到“可发布”的水平,会有比较多的 bug。有些 bug 可能会是【安全漏洞】。
  如果你关注安全性,当然不应该用这两个版本。

★为啥“长期支持版”(ESR)要【优于】“普通发布版”?

  对于 Firefox,每个新版本都会引入一些【新功能】。要增加新功能,就要增加软件代码(source code),也就增加了攻击面,也就【有可能】出现新的安全漏洞。
  由于“普通 release”的维护周期比较短(6~7星期),过了这个时间段之后就变成【旧版本】,即使发现 bug 也不会再修复了。
  相比之下,ESR 的好处就很明显。ESR 维护的时间长达一年左右,而且 ESR 是【只修复 bug,不增加新功能】。所以在 ESR 的维护周期内,它的代码质量会【越来越好】。

★扫盲一下 ESR 的版本号

  前面介绍了“普通发布版”的版本号规则。再来说一下 ESR 的版本号规则。
  (俺敢说:即使是 Firefox 的发烧友,也不一定清楚 ESR 版本号的规则)
  为了简明起见,俺以【52】这个 ESR 版本来举例。(因为 52 ESR 已经走完它的生命周期)。

时间 ESR
版本号
普通发布
版本号
备注
2017-03-07 52.0 52.0 ESR 与普通版同步发布
2017-03-17 52.0.1 52.0.1 同步修复 bug
2017-03-28 52.0.2 52.0.2 同步修复 bug
2017-04-19 52.1.0 53.0 52 结束,53 发布
ESR 版本号跳到 52.1.0
2017-04-27 52.1.1 53.0.1 修复若干 bug,含 52 版本的【旧】bug
2017-05-05 52.1.2 53.0.2 修复若干 bug,含 52 版本的【旧】bug
2017-05-19 N/A 53.0.3 修复若干 53 版本的【新】bug
由于【不含】52 版本的 bug,ESR 版本不变
2017-06-13 52.2.0 54.0 53 结束,54 发布
ESR 版本号跳到 52.2.0
2017-06-29 52.2.1 54.0.1 修复若干 bug,含 52 版本的【旧】bug
2017-08-08 52.3.0 55.0 54 结束,55 发布
ESR 版本号跳到 52.3.0
2017-08-10 N/A 55.0.1 修复若干 53 或 54 版本的【新】bug
由于【不含】52 版本的 bug,ESR 版本不变
2017-08-16 N/A 55.0.2 修复若干 53 或 54 版本的【新】bug
由于【不含】52 版本的 bug,ESR 版本不变
2017-08-25 N/A 55.0.3 修复若干 53 或 54 版本的【新】bug
由于【不含】52 版本的 bug,ESR 版本不变

★聊聊 ESR 的【滞后升级】策略?

◇Bug 递减模型

  在聊这个话题之前,先简单说一下:“Bug 递减模型”。
  对于正规的软件开发流程,在【正式发布】之后,就只是修复 bug,而不会再加新功能(要加也是加到下一个版本)。
  在这种情况下,bug 通常是一个【递减】的过程(极少数情况会出现递增,这不在本文讨论之列)。而且这个“递减过程”并不是【匀速】的,而是一个【先快后慢】的过程(如果画一条“bug 数变化曲线”,其形状有点类似于倒数函数那样)。
  为啥 bug 的递减过程是【先快后慢】捏?道理很简单——
软件在刚刚发布时,会被大量使用(“实际用户数”远远多于软件公司的“测试人员数”)。所以,在刚发布的初始阶段,会有比较多的 bug 暴露出来。
但是随着时间的推移,容易发现的 bug 都已经被发现了,剩下的都是比较隐蔽的 bug(比较难发现)。所以 bug 递减的趋势会变慢。

  为了增加说服力,俺稍微整理了一下 52 ESR 生命周期内的 bug 修复情况:
(简洁起见,只列出那些修复了【高危安全漏洞】的 52 ESR 版本)。

时间 ESR
版本号
CRITICAL 级别
bug 数
HIGH 级别
bug 数
2017-03-07 52.0 N/A N/A
2017-03-17 52.0.1 2 0
2017-04-19 52.1.0 9 20
2017-04-27 52.1.1 0 2
2017-06-13 52.2.0 2 3
2017-08-08 52.3.0 4 10
2017-09-28 52.4.0 2 5
2017-11-14 52.5.0 3 1
2017-12-07 52.5.2 2 1
2018-01-23 52.6.0 3 8
2018-03-13 52.7.0 3 3
2018-03-16 52.7.2 3 0
2018-03-26 52.7.3 0 2
2018-05-09 52.8.0 2 5
2018-06-06 52.8.1 1 1
2018-06-26 52.9.0 3 4

  (注:上表数据是从 Mozilla 官网的“这个链接”整理的)

◇切换 ESR 的时间点——滞后一段时间

  花了这么多口水来描述“bug 递减模型”。俺无非是想得出一个结论——软件刚发布的时候,先不要急着用,稍等片刻再说。
  俺所说“片刻”是多长捏?取决于具体的“软件类型”和“用户群体”。对于 Firefox 的 ESR 而言,俺建议【至少】等一两个月。
  以 52 ESR 为例:
  当该版本刚发布时,先别用。等到 54(甚至 55)发布的时候,你再开始用 52 ESR。

★“滞后升级”策略的【例外】情况

  说完了“滞后升级策略”,再来说说该策略的例外情况。

◇什么情况下应该立即升级 ESR?

  刚才说的是“滞后升级”的策略。但存在一种【例外情况】,需要你【立即】升级——
如果前一个 ESR 结束维护之后,又发现了一个新的高危漏洞(该漏洞对你有显著影响,并且无法通过“配置项”进行规避)。在这种情况下,前一个 ESR(由于维护已结束)不会再修复了,那么你就应该立即升级到下一个 ESR。

◇通过配置项规避高危漏洞,是啥意思?

  刚才提到“通过配置项规避高危漏洞”,估计很多同学不明所以,俺简单解释一下。
  Firefox 提供了很丰富、很全面的配置选项(Preference)。可以通过它,对 Firefox 进行各种定制,也包括【禁用】某些功能。Mozilla 官网的介绍在“这里”。
  如果某个高危漏洞所在的模块,可以通过配置项禁用;那么你就【不需要】升级 ESR 版本,只需通过“about:config 界面”或“user.js 文件”禁用这个有问题的模块。
  根据俺的观察,相当比例的 Firefox 高危漏洞,对俺的 Firefox【毫无影响】。因为漏洞所在的模块,老早就已经被俺禁用了。
  以俺的习惯,凡是“用不到”或“很少用”的功能,统统禁掉。套用信息安全的行话,叫做【降低攻击面】。

★全程【加密】的必要性

  如果你很在意安全性,上网的时候应该【全程加密】(这又是俺唠叨了很多年的老话题)。
  “全程加密”的好处【至少】包括:
1. 防止上网流量被嗅探(被第三方偷窥)
2. 防止上网流量被劫持(被第三方篡改)

  上述所说【第三方】是指谁捏?稍微解释一下:
如果你通过公司的网络上网,“第三方”可能是你公司的网管;
如果你通过公共场合(比如:餐厅、酒吧)的 wifi 热点上网,“第三方”可能是 wifi 热点的管理员;
另外,不管你通过哪一种方式上网,电信运营商(ISP)都是潜在的“第三方”。

★全程走【匿名网络】的必要性

◇为啥“全程加密”还不够?

  如果你很在意安全性,光搞“全程加密”是【不够】滴!还需要更进一步,做到【全程走匿名网络】。
  为啥捏?简单举2个例子:

  举例1——为啥“全程 HTTPS”是不够滴?
  假设你访问某个网站,该网站已经实现【全站 HTTPS】。那么你对该网站的访问,就可以算是【全程加密】了。这种情况下,刚才提到的“嗅探”和“劫持”的风险,基本上可以规避掉了。
  但是(俺要开始说“但是”了),依然存在另外几个风险点:
  其一,
  在这种情况下,该网站还是可以看到你的【真实公网 IP】。如果网站把所有访问者的信息记了日志(web log),日后追查起来,还是可以查出,某年某月某日,某个公网 IP 访问了该网站。
  其二,
  如果你在公司里面上网,即便你全程 HTTPS;公司的网管虽然无法解密 HTTPS 的流量数据,但还是可以看出——你访问的是【哪个网站】。

  举例2——为啥“全程翻墙”是不够滴?
  全程走翻墙通道,可以避免“例1”中提到的两个弊端——
1. 目标网站即便记录了访问者日志(web log),里面包含的公网 IP 也是翻墙服务器的 IP,而【不是】你个人的公网 IP。
2. 公司网管只知道你连接了某个服务器,但不知道你最终访问了哪个网站。
  但这样依然是【不够】滴!为啥捏?因为翻墙工具的设计初衷是为了“突破 GFW”,而【不是】为了“匿名化”。
  如果你非常在意“匿名化”(比如:想在网上发表敏感的政治言论),那么你还需要使用专门的【匿名网络】。

◇啥是“匿名网络”?

  “匿名网络”,洋文叫做“anonymity network”。顾名思义,是用来帮助你实现【匿名化】的手段之一。通过匿名网络进行各种操作(比如在网上发布言论),可以让【网络层面】的【逆向追溯】变得极端困难。
  注:很多人把“匿名网络”与“暗网”混为一谈,其实这是两个不同维度的概念。之所以会有这种混淆,是因为几个知名的工具(Tor、I2P)既是“暗网”,也是“匿名网络”。
  如果你想了解“匿名网络的原理”,可以参见俺的几篇旧博文(里面包含若干示意图):
“如何翻墙”系列:关于 Tor 的常见问题解答
“如何翻墙”系列:简单扫盲 I2P 的使用

◇为啥选择 Tor?

不见图 请翻墙

  名气比较大的“匿名网络”有两个,分别是 Tor 与 I2P。俺个人推荐 Tor。主要原因如下:
1. 在性能方面,I2P【严重不如】Tor——这与协议设计有关(参见“这张对比图”),也与用户数量有关。
2. I2P 客户端更适合用来访问它自己的暗网,而【不】适合用作访问公网的代理;而 Tor 两者都适合。
3. Tor 客户端可以完美地搭配 Firefox 浏览器(参见下面介绍的 Tor Browser)

★Tor Browser(TBB)——不仅仅是 Tor + Firefox

  Tor Browser,还有另一个叫法是 TBB(Tor Browser Bundle)。为了打字省力,以下都称之为 TBB。
  之前没接触过 TBB 的同学,先看另一篇扫盲教程《“如何翻墙”系列:扫盲 Tor Browser 7.5——关于 meek 插件的配置、优化、原理》,熟悉一下。

  很多人对 TBB 有一个【误解】,以为它只是简单地把“Firefox ESR”与“TOR 客户端”拼凑在一起。其实不然!
  Tor 社区发布的 TBB 至少包括如下几项主要工作:
1. 对 Firefox ESR 的修改(代码层面)
2. 基于 Preference 对 Firefox 进行定制(基于 Preference 的定制,本文前面提到过)
3. 内置了若干安全相关的扩展(比如:NoScript、HTTPS Everywhere ……)
4. 整合 TOR 客户端

  通过上述这些工作,不光让 Firefox 可以走 Tor 的匿名网络,而且还把 Firefox 本身的“隐私保护”与“安全加固”提升到一个新的高度。
  说到这里,再次夸奖一下 Tor 社区——在信息安全方面非常成熟且牛逼。比如在上个月的博文中,俺还提到了 Tor 社区对 Firefox 的很多改进(比如:第一方隔离、防范指纹追踪),已经被 Mozilla 官方接纳,成为 Firefox 的标准功能。

★面向极客的高级玩法——自己组合 ESR + Tor

  在本文的最后部分,聊一个比较阳春白雪的话题——自己组合“ESR 与 Tor”。
  可能有些读者觉得:既然已经有了 TBB,为啥还要自己折腾“ESR + Tor”?所以俺先来谈一下必要性。

◇必要性

  如果你是个技术能力和动手能力都比较强的极客,同时对安全性的要求【非常非常高】,那就可以考虑自己折腾一下“ESR + Tor”。这种玩法的好处包括如下:

  1. 实现【更小颗粒度】的隔离
  对于使用 TBB 的场景,浏览器(Firefox)与 Tor 客户端运行在【同一个用户环境】中。但“浏览器”的重要性显然要高于“Tor 客户端”。
  把两个重要程度【不同】的进程放在同一个环境中运行,这本身就违背了安全加固的原则。
  打个比方:
  假如某一天,Tor 客户端曝出某个高危的安全漏洞,使得攻击者可以利用该漏洞在本地执行代码;由于浏览器与 Tor 运行在同一个环境,那么攻击者就可以借助此漏洞,攻击浏览器。严重的话,可能导致你的 Web 帐号沦陷。
  而如果是自己组合 ESR + TOR,就可以把这两者隔离在不同的环境(不同的操作系统用户 或 不同的虚拟机)。如此一来,(相比 TBB)安全性提升了一大截。

  2. 满足个性化需求
  TBB 是面向大众用户的。很多时候,“大众的需求”与“极客的需求”是不太匹配滴。

◇可行性

  之所以能够自己折腾 ESR + Tor,得益于——Firefox 本身是【高度可定制】的。
  比如俺曾经写过一篇博文《无需任何插件或扩展,定制 Firefox 外观》,介绍“如何折腾 userChrome.css”。类似 userChrome.cssuser.js 之类的定制,还只是 Firefox 的【高层定制】。
  另外,Firefox 还支持一些【底层定制】,可以实现比【高层定制】更多的效果。举个例子:你可以不安装任何插件或扩展,修改 Firefox【所有的】默认快捷键。
  有些同学可能会问:既然可以用扩展的方式定制快捷键,为啥还要折腾【无扩展方案】?
  因为,如果你对安全性的要求非常非常高,每一个额外的插件或扩展,都将被视作一个潜在的攻击面。而且你无法验证这些插件或扩展的作者,是否足够靠谱。所以,不用插件或扩展就能搞定的方案,总是让人心情愉悦 🙂

  最后俺还想说的是:
  虽然折腾一些东西(比如本文所说的“ESR + Tor”)很花时间,但这些时间值得付出。具体原因请看:《聊聊【折腾】的重要性》。

俺博客上,和本文相关的帖子(需翻墙)
如何保护隐私(系列)
如何防止黑客入侵(系列)
如何隐藏你的踪迹,避免跨省追捕(系列)
弃用 Chrome 改用 Firefox 的几点理由
“如何翻墙”系列:关于 Tor 的常见问题解答
“如何翻墙”系列:扫盲 Tor Browser 7.5——关于 meek 插件的配置、优化、原理
“如何翻墙”系列:简单扫盲 I2P 的使用
无需任何插件或扩展,定制 Firefox 外观
聊聊【折腾】的重要性

每周转载:这轮股灾到底有多惨,看了你就知道了

  本来想写另外一个话题。正好看到今天股市又一次大跌,沪指跌破【2500点】,也算是一个标志性事件了。
  对不了解股市的读者,俺稍微介绍一下:从“跌破2600点”到“跌破2500点”,只用了短短一周(5个交易日)。上证指数2018年的最高点出现在今年1月份(3587点)。从“3587”到“2500之下”,你自己算算跌幅有多么惊人。
  今天转发一篇网上的文章,让大伙儿了解一下:咱们天朝股市到底有多么悲凉。
  眼下贸易战正打得火热。那些高喊着“不惜一切代价打赢贸易战”的愤青们,也应该清醒一下啦!

★原文

  以下这篇文章的来源是“恒丰资本研究院”。原文标题就是:【这轮股灾到底有多惨,看了你就知道了】。

  这段时间和同事一起,跑了很多券商的分公司和营业部,有些是我们自己挖掘的,有些是对方主动联系的。

  跑下来的感触很深,许多营业部老总反映,他们以前以为2015年是资产消灭速度最快的一年,其实不然;因为2015年股灾后许多人手里损失的一部分是浮赢,所以信心有所坍塌但是并没有那么惨烈;而且打板、连涨、送转、妖股等模式虽然难度加大,但是总归一年还有一两波行情,手快的人还能混口饭吃。

  但是2018年这一年,在许多营业部老总眼里,是资产消灭速度最快的一年:

  首先,是指数的估值和点位已经处于低位数年,所以许多人的仓位是越加越重,结果一有大跌,受伤更为惨重;

  第二,今年以来下跌的驱动因素很多来自于政策、货币、外围、贸易战、美元、美联储加息等自上而下的逻辑。这些逻辑,许多精选个股穿越牛熊的自下而上投资者以及游资大户,是经验不足的,所以很多时候打成措手不及的遭遇战,多杀多最为凶险;

  第三,今年的去杠杆过程也很痛苦,而直到现在才爆仓的,往往是最后一批、实力最为坚挺的账户。一个老总描述的极为形象:2015-2016年,以某位大户为例,是几千万的账户加杠杆赚到2个亿,又跌回一千万的过程,但是今年以来,则是从一千万,逐步跌到200万、彻底绝望的过程;

  第四,许多营业部监控的两融账户,最开始是几十万几百万的补仓,到了最后,都是每隔一天几万几万的补仓,灯尽油枯的那种感觉。包括许多上市公司的杠杆和质押,也在持续的爆仓。我听过比较夸张的案例是:有上市公司如果爆仓,考虑到它的表外负债,实际控制人可能1分钱也剩不下,还倒欠别人钱;

  第五,打板流等趋势交易模式,快速的失效,许多在营业部自成小体系的中小游资,也都非常辛苦,进二退三,而且市场的交易量也在快速萎缩;

  第六,一部分产品和账户,都在警戒线和清仓线附近,变成了所谓的 DEAD MONEY,暂时失去了加仓和进攻的能力。

  市场的生态起码可以说,离良性循环还很远,这是目前的一个现状。——这也是熊市为什么对利好麻木的原因,不全是人们丧失信心的原因,还有一部分原因是,即使大家有信心了,但是也暂时失去了加仓和买入的能力了。

  非不愿,而是不能。

  从市场的两融数据来看,自今年8月以后一直处于下行态势,不管是否反弹,都在下行,就是不计成本的卖股票。

  2018年以来,上证综指从高点到低点回撤幅度高达30%,在去杠杆、贸易战的技术性熊市背景下,A股市场跌跌宕宕,成为投资者的不堪回首的“战场”。而相对于15年的股灾和16年的熔断危机,更多的资本市场信息,让我们似乎感觉到,传统行业民营企业的春天,似乎很难等来了。

  汇信援引 Wind 数据显示,2018年至今已有近160家上市公司的大股东签署了股权转让协议,其中22家接盘方均为国资,接盘总市值已超过1330亿元。由此,国资被称为2018年最积极的“买壳人”。

  国资进场的时间点主要分布在6~9月份,仅9月上半月,便有6家上市公司计划向国资转让股份、控制权。

  因为自6月份之后,沪指跌破3000点,进入2时代,众多中小市值个股下跌得尤为惨烈,这一波下跌中不断传出大股东股票质押爆仓危机。

  国资此时入场,无疑将获得很好的收购机会。

  堪比“90后跳槽率”的“董事长离职率”

  汇信援引统计,截至9月中旬,今年已有350位上市公司的董事长离职。

  按照年代分布来看,40后10人,50后70人,60后189人,70后68人,80后13人;从交易所分布上看,属于沪市主板有157人,创业板35人,深主板85人,中小板73人。

  据 Wind 统计,2017年全年共有478位上市公司董事长离职。而今年至今不到9个月已有350董事长离职,根据现有股权质押比例和超过平仓线的企业数量,显然后面在被迫排队离职的董事长。预计两年时间,上市公司董事长将有超过千位“离职”,超过A股上市公司数量三成。

  而据统计,自2015年股灾以来不到四年时间,已有近2000名上市公司董事长离职,超过A股上市公司数量五成。

  股灾、熔断,经济上供给侧改革、去杠杆和环保督察,中美贸易战的艰难背景下,“换帅如换刀”,董事长的频繁更迭不利于上市公司经营的持续性和稳定性,大批上市公司业绩不堪入目。

  截至8月21日收盘,当前正常交易公司中,共766家公司股价接近预警线,其中跌破预警线公司共707家,涉及质押市值共4586.22亿元;接近平仓线公司共568家,其中500家公司股价跌破平仓线,涉及质押市值共2993.12亿元。这让数百家老板瑟瑟发抖中。

  目前跌破平仓线的公司主要集中在机械设备、医药生物、化工等行业,这也是质押规模前三的行业。而轻工制造,电气设备、纺织服装是股权质押市值占行业市值比最大,占比分别为36.4%,29.2%,25.0%,23.3%,21.8%。

  轻工制造,电气设备、纺织服装三大传统行业,是绝大部分中国中小民营企业集中从事的行业,尤其在长三角和珠三角地区。

  如此多的企业家将股权以大比例质押,如今面临强制平仓的风险而放弃补仓。为什么?或是经营困难已没有资金补充质押,只能眼睁睁看着爆仓而失去企业所有权;或是质押股权早早套现投资其他领域,已经对传统企业经营失去信心,“天要下雨,娘要嫁人”,任由他去。

  但无论如何,近3000亿的民营企业家个人财富,在当前的熊市背景下,随时幻灭,更令人惋惜的是,辛苦经营数十年的企业,也将易手他人。

★俺的点评

  很庆幸俺一直没有炒股,省了不少时间,也省了不少钱 🙂
  话说今年上半年的时候,很多股民断定3000点是【铁底】;讽刺的是,到了下半年,很多股民已经意识到——3000点很可能是【铁顶】。
  虽然官方媒体(比如《证券时报》之流)不断忽悠说,A股已经出现价值投资的大好机会。但俺强烈建议那些喜欢炒股的同学,近期【不要】企图去抄底(小心“抄底抄到天花板”)。
  别忘了,2015年股灾之前,《人民日报》专门写了篇社论,忽悠说“4000点才是牛市的开端”(链接在“这里”)。当年听信官媒的股民,下场如何,大家都看到了。
  另外再建议大伙儿重新读一下前几个月那篇《从量变到质变——中美关系40年》。在那篇博文中,俺提到了:2018年是【历史性分水岭】。那篇博文刚发布时,可能有些读者还觉得俺故意耸人听闻。但最近3个月的事态,再次说明了:中美关系已经发生了【根本性变化】。当全球的大环境出现深刻变化,天朝的宏观经济也将深受影响。

俺博客上,和本文相关的帖子(需翻墙)
从量变到质变——中美关系40年
股市点评:为啥大多数散户必定亏钱?——心理学层面的分析
股市点评:一头伪装成“改革牛”的“杠杆牛”
思维的误区:幸存者偏见——顺便推荐巴菲特最著名的演讲

对比4种强化域名安全的协议——DNSSEC,DNSCrypt,DNS over TLS,DNS over HTTPS

不见图 请翻墙

★引子

  俺在写前一篇博文(也就是 Firefox PK Chrome 那篇)的时候,碰巧看到 Mozilla 官方博客提到说:目前最新的 Firefox 62 版本开始支持【DNS over HTTPS】这一特性(链接在“这里”)。
  本来想顺便聊一下“DNS over HTTPS”这个玩意儿。但是查了一下,发现它的 RFC 目前还只是【草案】,尚未正式发布。
  所以俺就把本文的主题改成——对比4种强化 DNS 安全的网络协议(顺便也普及一些信息安全知识)。

★传统的 DNS 有啥问题?

  传统的 DNS 是一个【比较古老】的协议。最早的草案可以追溯到1983年。1987年定稿之后,基本上没啥变化。算起来,它的年龄比俺博客的很多读者都要大。
  设计 DNS 的时候,互联网基本上还是个玩具。那年头的互联网协议,压根儿都没考虑安全性,DNS 当然也不例外。所以 DNS 的交互过程全都是【明文】滴,既无法做到“保密性”,也无法实现“完整性”。
  缺乏“保密性”就意味着——任何一个能【监视】你上网流量的人,都可以【看到】你查询了哪些域名。直接引发的问题就是隐私风险。
  缺乏“完整性”就意味着——任何一个能【修改】你上网流量的人,都可以【篡改】你的查询结果。直接引发的问题就是“DNS 欺骗”(也叫“DNS 污染”或“DNS 缓存投毒”)
  关于“域名欺骗/域名污染”,可以参见俺的另一篇博文《扫盲 DNS 原理,兼谈“域名劫持”和“域名欺骗/域名污染”》(注:4年前的那篇博文,不光讲了“域名欺骗”,还扫盲了 DNS 的基本原理)

  为了解决传统 DNS 的这些弊端,后来诞生了好几个网络协议,以强化域名系统的安全性。俺今天挑选其中4个来介绍。除了这4个,其它一些协议的名气和影响力太小,不值一提。
  下面俺以出场时间的先后,分别介绍这4个协议。

★DNSSEC

◇历史

  这玩意儿是“Domain Name System Security Extensions”的缩写。在今天介绍的4个协议中,DNSSEC 是最早诞生的(1997)。从最先的 RFC 2065 进化为 RFC 2535,再到 RFC 4033RFC 4034RFC 4035
  在今天介绍的4个协议中,DNSSEC 也是最早大规模部署的。在2010年的时候,所有根域名服务器都已经部署了 DNSSEC。到了2011年,若干顶级域名(.org 和 .com 和 .net 和 .edu)也部署了 DNSSEC。

◇协议栈

--------
DNSSEC
--------
UDP
--------
IP
--------

◇安全性的原理

  当初设计 DNSSEC 的一个考虑是“尽可能兼容 DNS 协议”。所以 DNSSEC 只是在 DNS 协议的基础上增加了一个【数字签名机制】。
  有了数字签名,如果域名查询的结果被人篡改了,DNSSEC 客户端就可以通过【校验签名】,判断查询结果是假的。套用信息安全的行话——DNSSEC 实现了【完整性】(也叫“不可篡改性”)。
  由于 DNSSEC 引入了【数字签名】,就需要有【公私钥对】。私钥是保密的,用来生成签名;公钥是公开的,用来验证签名。DNSSEC 客户端可以向 DNSSEC 服务器发出请求,获得一个 DNSKEY 记录,里面含公钥;然后用这个公钥校验每次的查询结果。

◇信任链的实现

  有些聪明的读者会问了:DESSEC 客户端在向服务器请求公钥的过程中,如果被攻击者篡改了,得到一个假的公钥,那该如何是好?
  为了解决此问题,DNSSEC 体系要求【上级域】来担保。比如想要证明 program-think.blogspot.com 这个域名的公钥是否可信,就依靠 blogspot.com 这个域名的公钥来验证。通过层层追溯,最后达到【根域名服务器】。而“根域名服务器的公钥”是事先就部署在客户端的——这玩意儿就是整个信任链的根源,称之为“信任锚”(洋文叫“Trust Anchor”)。

◇优点

  在今天聊的4个协议中,DNSSEC 应该是最成熟的。除了前面提到的广泛部署,大多数公共的域名服务器也都支持它。维基百科上有一个对照表(链接在“这里”),对比了有名气的几个公共域名服务系统。在今天聊的4个协议中,支持 DNSSEC 的最多。

◇缺点

  虽然 DNSSEC 最成熟,但它有个天生的缺陷——【没有】考虑到【保密性】。
  DNSSEC 虽然对传输的数据做了数字签名,但是【没有】进行加密。这就意味着——任何能监视你网络流量的人,也可以看到你通过 DNSSEC 查询了哪些域名。隐私风险大大滴!
  Chrome 曾经在 14 版本支持过 DNSSEC,后来又【移除】了;而 Firefox 官方从未支持过 DNSSEC 协议。俺猜测:大概就是这个缺点给闹的。

★DNSCrypt

◇历史

  第2个出场的是 DNSCrypt。这个协议是由 Frank Denis 和 Yecheng Fu(付业成)两人设计的。
  这个协议从来【没有】提交过 RFC(征求意见稿),要想看它的协议实现,只能去它的官网(链接在“这里”)。
  历史上有过两个版本,分别称:Version 1 和 Version 2。如今主要使用“版本2”

◇协议栈

----------------
DNSCrypt
----------------
TCP or UDP
----------------
IP
----------------

◇安全性的原理

  前面俺提到 DNSSEC 协议强调兼容性。而 DNSCrypt 则完全是另起炉灶搞出来的协议。在这个协议中,域名的“查询请求”与“响应结果”都是加密的。这就是它比 DNSSEC 高级的地方。
  换句话说,DNSCrypt 既能做到【完整性】,也能做到【保密性】;相比之下,DNSSEC 只能做到【完整性】。

◇信任链的实现

  DNSCrypt 的信任链比较简单——客户端要想使用哪个 DNSCrypt 服务器,就需要预先部署该服务器的公钥。
  另外,DNSCrypt 还支持客户端认证(作为可选项)。如果需要的话,可以在服务器上部署客户端的公钥。此时,服务器只接受可信的客户端的查询请求。

◇优点

  如前所述,DNSCrypt 同时支持【完整性】与【保密性】。在隐私方面完胜 DNSSEC。
  在下层协议方面,DNSCrypt 同时支持 TCP 和 UDP,显然比 DNSSEC 灵活(DNSSEC 只支持 UDP)。
  顺便提醒一下:虽然 DNSCrypt 协议默认使用 443 这个端口号,但该协议与 HTTPS 毫无关系。

◇缺点

  (俺个人认为)DNSCrypt 最大的缺点就是前面提到的:从未提交过 RFC。没有 RFC 也就无法通过 IETF(互联网工程任务组)进行标准化。一个无法标准化的协议,其生命力要打很大的折扣。
  另一个比较小的缺点是——虽然 DNSCrypt 协议是加密的,但可以被识别出来。换句话说:如果有人监控你的流量,可以识别出哪些流量属于 DNSCrypt 协议。为啥说这是个缺点捏?在本文末尾讨论 “DNSCrypt 与 TLS 的安全性对比” 的时候,会详细加以说明。
  再来说说【公共 DNS 系统】。截至俺写本文时,Google 和 Cloudflare 的公共域名系统【尚未】支持 DNSCrypt(参见这个页面的对照表)。这也是一个缺点。

★DNS over TLS

  “DNS over TLS”有时也被简称为【DoT】。为了打字省力,本文以下部分用 DoT 来称呼之。

◇历史

  DoT 已经正式发布了 RFC(参见 RFC 7858RFC 8310)。
  从时间上看,RFC7858 是2016年发布的,RFC8310 是今年(2018)发布的;显然,这个协议出现得比较晚(相比前面提到的 DNSSEC 和 DNSCrypt)。

◇协议栈

--------
DoT
--------
TLS
--------
TCP
--------
IP
--------

◇安全性的原理

  顾名思义,DNS over TLS 就是基于 TLS 隧道之上的域名协议。由于 TLS 本身已经实现了【保密性】与【完整性】,因此 DoT 自然也就具有这两项特性。
  至于 TLS 协议是如何实现完整性与保密性滴?可以参见俺的系列博文:《扫盲 HTTPS 和 SSL/TLS 协议

◇信任链的实现

  DoT 的信任链依赖于 TLS,而 TLS 的信任链靠的是 CA 证书体系。
  关于 CA 证书体系,可以参见8年前的博文:《数字证书及 CA 的扫盲介绍

◇优点

  相比 DNSSEC,DoT 具备了【保密性】;相比 DNSCrypt,DoT 已经标准化。
  另外,由于 DoT 协议是完全包裹在 TLS 里面,即使有人监视你的上网流量,也无法判断——哪些 TLS 流量是用于域名查询,哪些 TLS 用于网页传输。换句话说,DoT 协议的流量无法被【单独识别】出来。

◇缺点

  支持 DoT 的客户端还不够多。尤其是主流的浏览器还没有计划增加 DoT 的支持。

★DNS over HTTPS

  “DNS over HTTPS”有时也被简称为【DoH】。为了打字省力,本文以下部分用 DoH 来称呼之。

◇历史

  在今天介绍的4个协议中,DoH 是最新的(最晚出现的)。RFC 方面,它已经有了相应的草案,但还【没有】正式发布。截至俺写本文时,DoH 的草案已经发了 15 个版本(从 00 到 14),最新版的链接在“这里”。
  很多人把 DoH 与 DoT 混为一谈,实际上这是两种不同的协议。你可以对比这两者的协议栈,(只要你眼睛不瞎)就可看出其中的差别。

◇协议栈

--------
DoH
--------
HTTP
--------
TLS
--------
TCP
--------
IP
--------

◇安全性的原理

  顾名思义,DNS over HTTPS 就是基于 HTTPS 隧道之上的域名协议。而 HTTPS 又是“HTTP over TLS”。所以 DoH 相当于是【双重隧道】的协议。
  与 DoT 类似,DoH 最终也是依靠 TLS 来实现了【保密性】与【完整性】。
  至于 TLS 协议是如何实现完整性与保密性滴?可以参见俺的系列博文:《扫盲 HTTPS 和 SSL/TLS 协议

◇信任链的实现

  DoH 类似于 DoT,最终是靠 TLS 所使用的“CA 证书体系”来实现信任链。
  关于 CA 证书体系,可以参见8年前的博文:《数字证书及 CA 的扫盲介绍

◇优点

  基本上,DoT 具备的优点,DoH 也具备。
  相比 DoT,DoH 还多了一个优点:
  由于 DoH 是基于 HTTP 之上。而主流的编程语言都有成熟的 HTTP 协议封装库;再加上 HTTP 协议的使用本身很简单。因此,要想用各种主流编程语言开发一个 DoH 的客户端,是非常容易滴。

◇缺点

  如前所述,DoH 目前还只有 RFC 的草案,尚未正式发布。这算是一个缺点。
  相比 DoT,DoH 还有一个小缺点——由于 DoH 比 DoT 多了一层(请对比两者的协议栈),所以在性能方面,DoH 会比 DoT 略差。为啥说这是个【小】缺点捏?因为域名的查询并【不】频繁,而且客户端软件可以很容易地对域名的查询结果进行【缓存】(以降低查询次数)。所以 DoH 比 DoT 性能略差,无伤大雅。

★4种协议的综合对照表

  为了给列位看官一个直观的印象,放一个综合的对照表。

协议类型 标准化 完整性
(防篡改)
保密性
(防偷窥)
抗协议识别 主流的
浏览器支持
知名的
公共服务器
DNSSEC Google
Cloudflare
Quad9
DNSCrypt OpenDNS
Quad9
DNS over TLS Cloudflare
Quad9
DNS over HTTPS 进行中 Google
Cloudflare
Quad9

★为啥 DNS over HTTPS 更有前途?——谈谈俺个人观点

  接着来聊一下:4个协议中,谁的前景看好。(以下是俺个人观点,供参考)

◇首先排除 DNSSEC

  如果要讨论这4种协议的优劣,首先出局的是 DNSSEC。因为这玩意儿连【保密性】都不具备,无法保护网民的隐私。
  相比之下,另外三种协议都具备了“保密性”。

◇DNSCrypt 与 TLS 的对比

  DoT 与 DoH 这两个协议,本质上都是依赖 TLS 来保证安全性(完整性 及 保密性)。所以剩下三种协议的对比,实际上是 DNSCrypt 与 TLS 之间的 PK。
  俺认为 TLS 具有如下几个优势:
  优势1——关于“标准化”
  SSL/TLS 老早就已经标准化了,距今已超过20年。(关于 SSL/TLS 版本的演变历史,可以参见这篇博文
  而 DNSCrypt 发布这么多年,连 RFC 都没有提交过——这玩意儿看来【没希望】成为互联网标准了。

  优势2——关于“客户端部署”
  TLS 的公钥体系(CA 证书体系)早就已经普及。所有主流的操作系统都内置了一系列 CA 根证书。
  相比之下,DNSCrypt 另起炉灶搞了一套公钥机制,只有它自己在用。
  所以,在【部署客户端】的时候,DNSCrypt 会比 TLS 麻烦。虽然某些 DNSCrypt 的客户端已经内置了一些知名的公共服务器的公钥,但如果你要切换到另一个 DNSCrypt 服务器,并且该服务器的公钥没有内置在客户端里面,那你就需要手动部署。

  优势3——关于“协议识别”
  这个话题前面已经谈过了。此处再重复唠叨一下。
  如果网络流量被监控,监控者可以根据协议特征,把 DNSCrypt 识别出来;而 DoT 与 DoH,在流量外观上,与其它的 TLS 流量【毫无差异】。也就是说,监控流量的人,无法判断某个 TLS 流量是否属于 DoT 或 DoH。
  以咱们天朝为例:
  天朝的国际出口被 GFW 严密监视。如果 GFW 愿意的话,它完全可以根据协议特征,把 DNSCrypt 协议的流量识别出来并阻断掉。
  再来看 TLS,该协议已经被广泛应用于 HTTPS,GFW 不可能把所有 TLS 流量都阻断;再加上 TLS 协议设计严密,GFW 无法判断 TLS 承载的【上层协议】是啥。所以,对于流经国际出口的 DoT 或 DoH,GFW 是判断不出来滴。

  综上所述,TLS 完胜 DNSCrypt。所以,剩下的协议就只有 DoT 与 DoH。

◇DoT vs DoH

  前面谈 DoH 优缺点的时候,其实已经可以看出这两者谁更有前途了。
  DoT 因为协议栈少了一层,性能会比 DoH 更好。但是俺前面也说了,域名查询的频度是比较低的,而且还可以利用客户端软件的 DNS 缓存,进一步减少域名查询的频度。所以 DoT 虽然性能更好,但优势不明显。

  DoH 的强项体现在如下几方面:
  1. 编程接口更简单
  (关于这点,前面提到过)这是个很重要的优势——有助于让更多软件切换到 DoH 之上。
  2. 可以利用 HTTP 协议已有的特性
  由于 DoH 是基于 HTTPS 之上,可以无缝地支持 Proxy;
  DoH 可以充分利用 HTTP 2.0 的特性(HTTP/2 在 HTTP/1.1 基础上加了很多功能)。

  正是因为 DoH 的这些优势,浏览器厂商对 DoH 的支持更积极。对比一下就可以看出来——DoT 在两年前正式发布 RFC,主流的浏览器没一个支持;而 DoH 目前才仅仅是 RFC 草案,Firefox 与 Chrome/Chromium 都开始支持了。

◇小结

  经过层层淘汰,目前看下来最有前途的应该 DoH(DNS over HTTPS)。
  DoH 未来的发展势头取决于如下几点:
1. 标准化的时间进度(看目前的架势,正式发布应该快到了)
2. 其它浏览器跟进的速度

★对 DoH 的进一步讨论

◇引申阅读

  分享几篇 DoH 相关的文章:

A cartoon intro to DNS over HTTPS
(这是 Mozilla 官方博客的一篇文章,深入浅出地扫盲了 DNS 和 DoH 的原理)

The Benefits of HTTPS for DNS
(这是某个老外写的技术文章,讨论 DoH 可以借助 HTTP 协议的哪些好处)

◇关于浏览器的说明

  Firefox 从 62 版本开始支持 DoH,具体参见 Mozilla 官方博客(链接在“这里”)。
  Chrome/Chromium 从 66 版本开始支持 DoH。具体参见 Chromium 官网的 issue(链接在“这里”)。

  虽然 Firefox 和 Chrome/Chromium 都已经开始支持 DoH,但大伙儿别急着用。
  按照历史经验,刚加入的新功能,可能还不够稳定,没准儿还存在未曝光的安全漏洞。多等几个版本之后再说。

◇对翻墙的好处——无缝整合

  常规的翻墙软件,无非就是“代理软件”与“VPN 软件”。
  对于“VPN 软件”
  由于 VPN 具有【全局代理】的性质,DoH 当然可以无缝地整合到 VPN 翻墙中。
  对于“代理软件”
  常见的代理软件,要么是 HTTP 代理,要么是 SOCKS 代理。只要这些代理能支持 HTTPS,也就天然地支持 DoH。
  注:GAE 没有原生支持 HTTPS 代理。所以基于 GAE 的翻墙软件,就不能走 DoH 协议啦 🙁

◇相关的客户端工具

  在 curl 官方的代码仓库,有一个关于 DoH 的 wiki 页面,里面列出了一些 DoH 的客户端小工具。
  喜欢折腾技术的同学,可以先去玩一玩。

  因为 DoH 的标准还没有正式发布,关于它的讨论就到此为止。等到啥时候发布了,俺再专门发一篇 DoH 如何使用的博文。

俺博客上,和本文相关的帖子(需翻墙)
扫盲 DNS 原理,兼谈“域名劫持”和“域名欺骗/域名污染”
扫盲 HTTPS 和 SSL/TLS 协议(系列)
数字证书及 CA 的扫盲介绍
如何保护隐私(系列)