SSL必要与否(1)

王志勇 发表于 2021年02月03日 22:41

这是新建的栏目,因为SSL是建站当中很大的网站性能瓶颈,所以之前栏目的主旨仍然是不主张https的。那个SSL绿锁存在的本质不是为了网络安全,而为了广泛销售他们的SSL证书。发了《详解99.9%的网站没必要用https(续4):SSL的原始动机》之后,经过反思,终于大概分析出了某浏览器给https打上“不安全”真正的含义是什么。

那就是SSL证书相当于国外版的ICP备(隔开)案。我们国内的ICP备(隔开)案是始于哪一年?可能很多站长还有印象,是始于2005年。那时候,虽然有点麻烦,但是大部分人还是很乐于ICP备(隔开)案的,网站也多一个可信的认证,当时的ICP备(隔开)案也有一个证书文件,需要放在网站的/cert/目录。那时候有网站空间的人,99%以上的人都不会使用国外收费空间,全是国内空间,所以接近100%的网站都有ICP备(隔开)案。

但是在2009年前后,随着大量的博客、个人网站迁出了国外,大家也渐渐彻底抛弃了ICP备(隔开)案。除非使用国内主机,或者阿里妈妈(淘宝客)、百度联盟、百度推广要求网站需要有ICP备(隔开)案,很多人不得已做了备(隔开)案。

由于备(隔开)案手续一年比一年繁琐,所以这个备(隔开)案的可信度认证,稍微懂行的人,都不会认为它有可信度,是可有可无的东西。原因是手续繁琐,经常会被无故注销,限制也特别多,比如不允许开留言板、评论、论坛,博客也不允许评论,不能从事经营活动(如网页制作规定为经营活动,必须注册公司,注册资金以前是规定最低必须100万,现在可能有所放宽,并申请ICP证),申请ICP备(隔开)案期间网站需要关闭15天左右,所以现在建站、建博客大部分人已经使用非大陆空间。

SSL和ICP备(隔开)案不同的是,SSL是各种第三方收费认证;国内的ICP备(隔开)案是地方ZF机构做的免费登记。

SSL绿锁是否具有权威?
提供SSL的服务有很多平台。假设某个域名在某个SSL服务平台A购买了SSL,但后来网站的内容出现某些问题,被服务平台A封杀,那么这个域名,会换到另一家SSL服务平台B,一般情况下不会再出现同样的问题。

因为SSL的价格较高,主流价格国内SSL保护单个域名每年1000元、2000多元、4000多元、1万元人民币。

国内的SSL销售价格,大致相似。国外的SSL价格,比国内低很多,但仍然价格不菲,大约是国内的1/5~1/2。上述这些,是现行的SSL主流在售价格。

SSL服务平台能得到很多的收益,所以如果没有特殊的原因,肯定是不会轻易封杀他们的客户的。

这个绿锁就是给钱就立刻能安装,而不去考虑网站的资质,也不验证网站所有者的资质

因此,SSL绿锁不具有权威。如果这类颁发机构开发SSL时强调SSL是可信网站,那么整个SSL存在的模式,就是一个彻头彻尾的骗局,大家是被他们骗了。

这种骗局,暂时没有找到一个合适的名词来形容它,之前肯定有相同的历史典故。

如果用皇帝的新衣来形容,有80%恰当。但它的隐蔽性比皇帝的新衣高得多,皇帝的新衣是谁都能看得出来是骗局。但是SSL,需要在网站的开发实践中,才能发现它的不合理之处。

浏览的用户,可能容易把这个绿锁(可信网站)和ISO9001之类的认证等同起来。

SSL证书究竟保护什么?
SSL在技术上的原理和业务的实质,在《详解99.9%的网站没必要用https》已经分析过。SSL的销售页上,保护一个域名2100元/年。那么究竟保护什么?如果问网站的客服,他们当然都答不上来。

因为这是一种错误的描述,SSL并不会保护网站安全。如果网站有后门或漏洞,https并不防止,没有任何的检测能力;早期的网页病毒主要是用VBScript传播,当时的IE5.5、IE6.0很容易感染,在2005年以前,大家的浏览器都是IE,直到2005年出现了火狐浏览器,才彻底阻止了这类网页病毒。

这类网页病毒非常可怕,可以劫取用户的银行登录密码。不像现在的网银,有各种验证、短信验证,安全性比2005年时提高了无数倍。

这种安全性,并非是由于SSL而提升的。而是浏览器内核的功劳(如火狐浏览器),火狐浏览器屏蔽了很多病毒、弹窗。所以,真正保护网络安全的是浏览器、网银自身的安全认证技术手段、杀毒软件这3重保护。

SSL并没有起到相关的作用,反而是把别人的功劳占为己有

如果说SSL有一定的安全方面的事宜,就是多了一个加密传输,在实际应用中,大多数的网页都是不需要加密传输的。https也不能从根本上防止GF*。

这个保护,就是销售上的误导宣传,以刺激用户消费。

HTTP不安全吗?
从archive.org可以查到,国外有知名度的网站约99.5%以上在2014年年底以前都是http,甚至包括Google旗下的所有站点。

现在的Linux间的传输,也大部分是http。

HTTP“不安全”只是个别浏览器的严重误导。在上述的小标题《SSL究竟保护什么?》里,https同样无法防止网页后门、漏洞,也无法防止网页病毒,安全性和http是一模一样的

所不同的是https多了一个加密传输,但是大多数网页并不需要加密传输。

网站后门的制作是比较容易的事情。比如一些博客的皮肤,只要是任何的动态文件如php文件,都可以写入后门,这个万能的后门程序可以小到100字节以内。(这里并不是说PHP不安全,这个功能正是它的强大之处,但如果被第三方PHP开发者恶意使用,就会出现网站安全问题,比如篡改网页。目前这类事情几乎没有发生过。)

总之,http和https的安全级别几乎是一样的,HTTP“不安全”是严重误导。如果说http不安全,那么https一样不安全;如果说https安全,那么http一样安全,没有多少区别。

http/https和密码安全
这个问题是https的核心问题,所以在前面的栏目《详解99.9%的网站没必要用https》(将简称为“详解没必要”栏目),几乎每篇都谈到这个问题和替代方案。

如之前谈到的:前文1前文2前文3

在http上,可以用JavaScript等技术手段,做前后端加密(JavaScript现在是唯一的前端Web编程语言),即前端的input密码框发送前加密,并运用动态的方式,每次刷新的加密公式都不一样,存储的密码再加密,而且JavaScript完全是可以隐藏的,这种方式只要算法公式不特意公开专门讲解,任何黑(隔开)客永远都无法破解,比https+无前后端加密(密码明文存储)还安全。

前端的input密码框发送前加密,因为加密规则是保密的,即使电脑里被中了病毒,这个密码也不会被泄露。

有了这种替代方案,就不能说http不安全,也不能说https安全

这种替代方案,可以自行设计。而且,前端必须使用JavaScript来加密,因为JavaScript现在是唯一的前端Web编程语言。比如Paypal在很多年以来,一直没有使用数字证书,而且在几年前都是http。这是什么原因呢?肯定有做前后端加密。

在很长时间里,支付宝一直有数字证书。现在也有数字证书,但是我们发现即使开启了数字证书,每次重装系统之后,这时候没有安装数字证书,也能正常登录、支付。这个业务上存在一点瑕疵,但是支付宝估计应该是和Paypal一样存在类似的前后端加密。

什么是前后端加密?
前端,就是用户在注册、登录等任何需要输入密码的网页,发送的密码不是明文,无论是http、还是https,都可以实现,可以通过JavaScript编程来实现,这个编程设计并不难,密码的input一定要放在<form>之外,这样明文密码就不会发送。

之后,用JavaScript对这个密码的input进行乱码加密,并分解成多个乱码,使用onkeyup事件,以及document.all.abc.value=document.all.def.value,把这几个乱码传给<form>里的几个<input>。

后端加密,是服务器端存储的密码信息,不要存明文,同样是乱码存储。

我在2016年时花了好长时间做的项目,当时完成了这个前后端加密的设计。2019年完成了开发,应用到实际的项目中,比如Eonval帐号、Feedval单机密码的登录和存储。

依然没有使用https的大平台
截止到2021年2月4日,建行、农行的网站首页都使用http,但是登录页他们都使用https。

这种模式,才是应该倡导的。

为什么SSL证书会卖得这么贵?
除了少量SSL平台的价格很低,比如Let’s Encrypt完全免费,国内的west.cn最低有1元/年,或8元/年,腾讯有免费提供一年,均无流量限制。

国内的主流价格在上述已经提到了,是以单个域名/年计费,单个域名的SSL价格国内是1000元/年~1万多元/年,国外的SSL价格,比国内低很多,但仍然价格不菲,大约是国内的1/5~1/2。

之所以能炒得这么贵,主要是和宣传有关,特别是某些浏览器给http打上“不安全”的标签,使https成为刚需。

因为https会影响网页速度,严重增加不稳定性,即使是免费的,我个人也尽量不想用。只有注册、登录等需要输入密码的二级域名,才使用https。

13条评论:
1   wys 2021-02-03 23:39
为了鼓吹的形象,划不来。我都有点动摇了。

自由勇 2021-02-03 23:47
是的,博客的影响还暂时不大。建网站、多域名,维护比较麻烦,影响速度。

2   自由勇 2021-02-04 08:04
更新,新增副标题:
http/https和密码安全
依然没有使用https的大平台
为什么SSL会卖得这么贵?
3   自由勇 2021-02-04 08:32
更新:
原因是手续繁琐,经常会被无故注销,限制也特别多,比如不允许开留言板、评论、论坛,博客也不允许评论,不能从事经营活动(如网页制作规定为经营活动,必须注册公司,注册资金以前是规定最低必须100万,现在可能有所放宽,并申请ICP证),申请ICP备(隔开)案期间网站需要关闭15天左右,所以现在建站、建博客大部分人已经使用非大陆空间。
4   Glan 2021-02-04 09:17
我从另外一个角度看哈,其实现在很多VPS的性能和带宽足以减少掉SSL的占用“资源”

自由勇 2021-02-04 09:45
ping值100ms以内,基本看不出影响。
要是ping值在150ms,影响就明显喽。最近的网络好一些,访问会多延迟1秒~3秒,有时没有多延迟。前段时间会多延迟2秒~5秒。访问别的国外网站也一样,甚至更慢。

我刷新测试过很多次。

https,在国内访问亚洲主机,看不出影响。
在欧美访问美国主机,看不出影响。
(流量大到一定程度时,应该会有明显的影响。)

在国内访问美国主机,或者在美国访问亚洲主机,https和http的稳定性差别很大。慢主要是因为增加了握手次数,一旦出现丢包,会慢很多,同样差的网络环境,http会比https快很多。还有国内的GF*系统,使https变慢。

5   colin 2021-02-04 16:07
不太懂技术,就是看到大部分主流网站都是https了,就跟风也配置了https了。
6   老张博客 2021-02-04 21:04
我看别人都做了,我也就跟着上了SSL证书。至于为什么,反正大家都上了,错不了。
7   青山 2021-02-05 19:38
不给钱也能安装ssl

自由勇 2021-02-06 08:41
个人博客基本上都用免费的。
本文提到的收费版,指的是国内外企业应该有不少会选择收费版的,只要稍微宣传一下,企业就会投入,何况现在是特别大力地宣传。当然,也有企业会选择免费版。

8   自由勇 2021-02-06 08:45
如果在国内访问,使用美国主机,https对速度的影响还是很明显的。就是刚打开浏览器窗口的时候,会有一段网页空白的时间,这段空白时间,https比http长。
9   anonymous 2021-02-11 05:06
请问替代方案中用的是什么加密方法呢?
- 首先忽略中间人可以篡改流量,只考虑中间人可以截获流量
* 如果是对称加密,那么毫无安全性可言,如果有中间人窃听流量,那么他完全可以解密流量,你问我他怎么知道密钥?我相信如果是JS写的加密流程的话:若没有混淆,那挖出来简直是轻轻松松;若混淆,要么一步步分析,有的时候干脆直接黑盒调用,即利用node.js一类的环境直接调用你JS里的加密解密函数。
* 如果是公钥体系,你的客户端公钥私钥存在哪里?只要私钥通过某种方式向外请求了,那么就等价于对称加密的情况。
- 接着考虑中间人可以篡改流量
那就基本上就无解了,你怎么知道和你进行的通信的一方是真的服务端?我完全可以伪装成服务端,用你的那一套流程跟客户端通信,然后再发给真正的服务端。你的内容我也可以任意篡改,塞一些JS可以直接把客户端的各种东西都拿到,或者直接跳转其它页面。

所以告诉你,SSL不光保证了通信的安全,由于证书需要签发,所以CA证书链的方式保证了身份的可信。

现在完全应该提倡全站HTTPS,如果登录页上有什么资源没有走HTTPS,那么这个资源也会被中间人攻击,当然了,现代浏览器一般都设置了策略禁止HTTPS上的HTTP内容,为了防止内容被审计、篡改,HTTPS还是有必要的。

自由勇 2021-02-11 06:44
替代方案是用JS进行混淆,可以设计多种方案,如这里:http://www.auiou.com/relevant/00001513.jsp#password

需要对JS程序进行隐藏,所以混淆数据无法被逆向还原,如这里:http://www.auiou.com/relevant/00000899.jsp#2

本系列文字之所以不主张https,是因为https会影响速度,而且很普遍。

中美间访问(VPS在美国,访客在中国;或者VPS在亚洲,访客在欧美),如果使用了https,速度都会不同程度地慢,一出现丢包就慢很多。(尤其是刚打开浏览器时,窗口有一段空白的时间,使用了https,这个空白时间为0.5秒~5秒,多为1秒~3秒;如果没有使用https,这个空白时间为0.2秒~1秒,我做过很多次刷新测试。)

如果想达到速度极限,https是很大的瓶颈。

VPS和访客的距离,ping值100ms以内,几乎看不出速度的影响。ping值150ms以上,影响很大。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (41周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2021年01月(30)
2020年12月(19)
2020年11月(18)
2020年10月(15)
2020年09月(14)
2020年08月(14)
2020年07月(14)
2020年06月(16)
2020年05月(13)
2020年04月(18)
2020年03月(14)
2020年02月(15)
2020年01月(16)
2019年12月(11)
2019年11月(26)
2019年10月(25)
2019年09月(30)
2019年08月(10)
2019年07月(29)
2019年06月(30)
2019年05月(26)
2019年04月(30)
2019年03月(30)
2019年02月(30)
2019年01月(30)
2018年12月(30)
2018年11月(30)
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2021 auiou.com All rights reserved.
此Blog程序由王志勇编写