HTTPS加密无处不在

HTTPS已经在现实中给用户带来更安全、更好隐私保护的体验,各大浏览器都在怎样地积极推进并开始实施 HTTPS 的普及

一、苹果已明确宣布自2017年1月1日起, App Store上的所有App应用需强制开启ATS安全特性,使App及网页通讯以HTTPS加密传输连接网络服务。
这样能够通过加密来保障用户数据安全,并且要求非常严格,包括只使用TLS1.2协议,必须使用RSA2048位或ECC256位的公钥算法及SHA256签名算法等。 因此APP开发者应部署好SSL证书, 启用HTTPS加密,否则APP应用将遭到屏蔽, 用户无法正常获得相关资讯。

二、苹果的iOS 10中,对webkit定位权限进行了修改,所有定位请求的页面必须是HTTPS协议。
如果web站没有及时支持HTTPS协议,当多用户在iOS 10下访问很多网站时,用户将会发现无法进行正常精确定位,导致部分网站的周边推荐服务无法正常使用。 因为采用不安全的HTTP连接访问用户位置信息并发送,可能造成用户信息的泄漏。因此,苹果也在逐步推进自家产品的安全性。

三、拥有50% 以上市场占有率的Chrome浏览器,从2017年起,直接把含有用户密码或交易支付等信息敏感内容的HTTP页面,在地址栏上直接显示【不安全】的网站提醒字样
Chrome55开始版本中,已把所有的HTTP网站标记为直接显示【不安全】的红色警告字样。


四、Google域名支持HSTS机制,强制访问定向到HTTPS安全协议。
HSTS是一种帮助网站将用户从不安全的HTTP版本重定向到安全的HTTPS版本的机制。如访问的网站启用了HSTS,那么浏览器将会记住这一标记,确保未来每次访问该网站都会自动定向到HTTPS,不会在无意中访问不安全的HTTP。 HSTS可以很大程度上解决SSL剥离攻击,因为只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP。

五、Mozilla也宣布了将在即将 发布的Firefox 52上,正式默认启用当前仍处于开发阶段的TLS 1.3安全协议的消息。
TLS 1.3是安全传输层协议的最新版本,是通过https连接网站的一个重要组成部分。负责在用户浏览器端和web服务器端建立加密通讯的安全操作,它比TLS1.2更快。

六、HTTP/2协议只支持HTTPS加密连接。
HTTP/2 通过引入二进制分帧层,将 HTTP 的请求和响应报文拆分为二进制帧,从而实现了多路复用、优先级、Server Push 等诸多新特性,大大提升了 WEB 性能。 使用HTTP/2有一大堆的好处,但是在这篇文章里我们需要关注的关键点就是:所有主流浏览器只支持使用TLS1.2协议安全连接的HTTP/2协议。Chrome、火狐、Safari、Opera、IE和Edge都要求使用HTTPS加密连接,才能使用HTTP/2协议。这对网站所有者来说是另一个有利的推动因素。


有了 HTTPS 的保障,无论是客户端还是浏览器,都可以得到更好的用户体验。

有了 HTTPS 的保障,无论是客户端还是浏览器,都可以得到更好的用户体验。但是在往 HTTPS 迁移的过程中,大家普遍有一些担心,那么我们接下来也来讨论下这个问题。

① HTTPS 会增加系统复杂性?
首先,部署 HTTPS 确实会引入很多新工作,例如证书、SSL 配置、全站资源替换等等,确实会给开发和运维同学增加工作量。
从 HTTP 切换到 HTTPS 的过程是会有一点点麻烦,但一旦完成了切换,之后就不需要投入太多精力在这上面。
并且在我们也会有专业的技术人员负责全面的SSL证书咨询安装等完善的售后服务,这一点,大家是无须担心的。

② HTTPS 证书会增加成本?
对于企业级网站来说,需要付费申请企业级以上的SSL证书,如OV SSL证书或EV SSL证书等。 这相比企业其他开销,HTTPS 证书采购成本基本可以忽略不计。 任何新站点或新的web应用都应该上线前启用HTTPS加密,这也是是最经济有效的方式。
对于个人博客站点等来说,也可以低成本或者零成本实现HTTPS加密,经济实惠。

③ HTTPS 会导致性能下降?
由于技术的创新和进步,现在已有很多大型网站和工具可以展示HTTPS加密使网站的加载速度更快。
并且随着服务器、浏览器以及 SSL 库在性能上的大幅提升,经过良好优化后 HTTPS 带来的性能损耗是可以忽略不计的。
更重要的是,部署了 HTTPS 意味着可以使用 HTTP/2,从而带给用户更好的性能体验。

④ 非敏感内容不需要 HTTPS?
在这很多人觉得只有银行、电商等跟钱打交道的网站才需要部署 HTTPS,其实不然。
首先,非 HTTPS 网站很容易被劫持并插入广告,影响用户体验;
其次,即使你的网站上没有交易支付等敏感功能,但只要有用户登录,帐号密码被第三方盗取也可以用来社工或撞库;
最后,一些流量很大的网站,如果不部署 HTTPS 很容易被别有用心的人利用,例如 2015 年某大型网站的 JS 就被人劫持用来 DDoS 攻击 Github。

事实上,在安全要求越来越严格的今天,未来的中大型网站,都会慢慢过渡到全站HTTPS 的时代,这个趋势是不可阻挡的。如果你的网站依然是全站 HTTP 的,是时候改变了。

目前,谷歌、腾讯、百度、阿里、银联、Paypal 等国内外一流互联网公司都采用了全站 HTTPS。并且去年在双11流量巨大的访问中,阿里电商在启用全站HTTPS后,性能不降反升,用户访问网站和移动端更为流畅。2016年7月,国内首家直播网站-斗鱼直播,全站由 HTTP 协议升级到了 HTTPS,也是目前唯一全站升级到 HTTPS 的网络直播平台。这种做法同样是为了保证直播用户的数据安全和隐私安全。

可见HTTPS早就不是锦上添花的可有可无项,它已经逐渐是互联网Web服务的大势所趋,逐渐成为Web服务的标配,各大网站都已陆续部署了 HTTPS,所以大家应该尽早升级。

Mozilla将在明年一月对 SHA-1证书展示连接不可信的错误

SHA-1算法签名的证书已经不再安全,它很快就能被一个有足够动机和资源的实体伪造。为了加快淘汰SHA-1证书,Mozilla将从明年初其对 SHA-1证书展示连接不可信的错误信息。

由于 SHA-1 算法已经被安全研究人员证明不再安全,因此全球证书颁发机构也都在今年一月停止签发基于 SHA-1 算法的数字证书。根据 Mozilla Firefox 的遥测数据显示从今年 5 月份到现在全网使用 SHA-1 证书的比例已经由 3.5%降到了 0.8%。为了保证用户的访问安全 ,Mozilla 计划在明年一月份发布 Firefox v51 版,也就是从这个版本开始实行新的安全政策。

Mozilla Firefox v51 的开发者版本预计会在今年十一月份发布,届时开发者们可以提前测试这些新的措施。 Mozilla 也提醒使用 SHA-1 证书的网站尽快升级到 SHA-2,避免网站出现访问问题。同时,如还有需要升级到SHA-2证书的客户,可以直接联系亚洲诚信客服免费升级。

为什么iOS 10下无法自动获取精确定位

苹果的iOS 10已经正式对外推送,相信很多用户已经更新到了最新的系统。然而,如果web站没有及时支持https协议的话,当很多用户在iOS 10下访问很多网站时,会发现都无法进行正常精确定位,导致部分网站的周边推荐服务无法正常使用。

我们尝试在iOS 10系统下通过微信公众号和Safari打开了去哪儿、和百度外卖等常用网站的预定服务,点击获取附近服务,结果都是显示定位失败。但是在iOS 9系统下是可以正常自动获取位置和周边推荐的服务。

非https网站被限制获取位置信息
为何在iOS 10下无法获取当前位置信息。这是因为在iOS 10中,苹果对webkit定位权限进行了修改,所有定位请求的页面必须是https协议的。如果是非https网页,在http协议下通过html5原生定位接口会返回错误,也就是无法正常定位到用户的具体位置,而已经支持https的网站则不会受影响。
通过浏览器调试控制台我们可以看http访问报错的详细信息:

采用不安全的http连接访问用户位置信息并发送,可能造成用户信息的泄漏。Apple的这一举措,也是在逐步推进自家产品的安全性。早先在2016全球开发者WWDC大会上,Apple就宣布了自2017年1月1日起, App Store上的所有App应用需强制开启ATS安全特性,使App及网页通讯以https加密传输连接网络服务。

强制启用ATS安全功能的好处
在启用 ATS 之后,它会强制应用自动通过 https(而不是 http)连接网络服务,这能够通过加密来保障用户数据安全。并且要求非常严格,包括只使用TLS1.2协议,必须使用RSA2048位或ECC256位的公钥算法及SHA256签名算法等。否则应用将遭到屏蔽, 用户无法获得相关资讯。

如何部署https加密
加密App及网页通讯可确保使用者信息安全,越来越多的网站已经开始使用更安全的https加密传输协议。因此任何新站点或新的web应用都应该上线前启用https加密, 确保用户体验和业务未受影响。使用https协议就意味着需要在服务器上部署SSL证书。

为你的网站和应用启用https加密,需要使用全球信任的SSL证书,即根证书内置在所有平台的证书,并且选择国际化的CA,可以保证长久提供稳定、可靠、安全的SSL数字证书服务。

百度优先收录HTTPS:HTTPS工作原理及TCP握手详解

近日,百度在全站实现HTTPS加密搜索后,再次开放收录HTTPS网站,在互联网界引起巨大轰动。已经实现HTTPS的网站喜笑颜开,奔走相告,终于守得云开见月明!而传统HTTP网站则若惊弓之鸟,寻找良机,恐网站受到新算法影响!甚至很多站长并不十分了解HTTPS,本文借此机会给大家介绍HTTPS工作原理和TCP握手机制。

【HTTPS工作原理】
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的具体描述如下:

  1. 浏览器将自己支持的一套加密规则发送给网站。
  2. 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
  3. 浏览器获得网站证书之后浏览器要做以下工作:
    1. 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,EV SSL证书还会显示绿色地址栏,否则会给出证书不受信的提示。
    2. 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
    3. 使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
  4. 网站接收浏览器发来的数据之后要做以下的操作:
    1. 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
    2. 使用密码加密一段握手消息,发送给浏览器。
  5. 浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据,为后续真正数据的传输做一次测试。另外,HTTPS一般使用的加密与HASH算法如下:

非对称加密算法:RSA,DSA/DSS
对称加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256 HTTPS对应的通信时序图如下:

【HTTPS协议和HTTP协议的区别】
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的 。
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

【TCP3次握手,4次挥手过程】

  1. 建立连接协议(三次握手)
    1. 客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。
    2. 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。
    3. 客户必须再次回应服务段一个ACK报文,这是报文段3。
  2. 为什么需要三次握手
    在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。这两种不用的表述其实阐明的是同一个问题。

    谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”。 主要目的防止server端一直等待,浪费资源。

  3. 连接终止协议(四次挥手)
    由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

    1. TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段4)。
    2. 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
    3. 服务器关闭客户端的连接,发送一个FIN给客户端(报文段6)。
    4. 客户段发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。
  4. 为什么需要“四次挥手”
    那可能有人会有疑问,在tcp连接握手时为何ACK是和SYN一起发送,这里ACK却没有和FIN一起发送呢。原因是因为tcp是全双工模式,接收到FIN时意味将没有数据再发来,但是还是可以继续发送数据。
    握手,挥手过程中各状态介绍(详见wiki:TCP)
  5. 次握手过程状态
    LISTEN: 这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了。

    SYN_SENT: 当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。(发送端)

    SYN_RCVD: 这个状态与SYN_SENT遥想呼应这个状态表示接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,除非你特意写了一个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态时,当收到客户端的ACK报文后,它会进入到ESTABLISHED状态。(服务器端)

    ESTABLISHED:这个容易理解了,表示连接已经建立了。

  6. 次挥手过程状态:(可参考上图)
    FIN_WAIT_1: 这个状态要好好解释一下,其实FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到。(主动方)

    FIN_WAIT_2:上面已经详细解释了这种状态,实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对方,我暂时还有点数据需要传送给你(ACK信息),稍后再关闭连接。(主动方)

    TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。(主动方)

    CLOSING(比较少见): 这种状态比较特殊,实际情况中应该是很少见,属于一种比较罕见的例外状态。正常情况下,当你发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?其实细想一下,也不难得出结论:那就是如果双方几乎在同时close一个SOCKET的话,那么就出现了双方同时发送FIN报文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接。

    CLOSE_WAIT: 这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个SOCKET后发送FIN报文给自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以close这个SOCKET,发送FIN报文给对方,也即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。(被动方)

    LAST_ACK: 这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,也即可以进入到CLOSED可用状态了。(被动方)

    CLOSED: 表示连接中断。

追述泄露的数据和隐私信息

在最近几年,发生了众多的数据泄露事件,医疗、保健、电信运营商等行业和人事管理、社保、税务等政府部门成为“重灾区”。泄露的数据和信息包括:身份证、社保、电话、信用卡、医疗、财务、保险等。那么这些泄露的数据和信息都去哪里了呢?其实,信息泄露的背后已经形成了一条完整的利益链。

拖库攻击、终端木马和APP的超量采集、流量侧的信息劫持获取,已经成为数据泄露的三个主要渠道。泄露用户信息或被用于团伙诈骗、钓鱼,或被用于精准营销。相关安全部门在发布的《2015网络安全威胁的回顾与展望》中揭露了非法泄露的数据和隐私的来龙去脉。

拖库攻击窃取数据
“拖库门”事件的每一次曝光都令人关注,但实际上,依托这些数据达成的侵害往往早已存在,在其曝光时,其“价值”已经衰减。很多拖库数据都是在被攻击者充分利用、经过多手转卖后才会曝光。当前,数据泄露的地下产业链已经成熟,并且有了完整的分工协作程序。其模式往往包括:拖库、洗库、撞库和再洗库等阶段。当前,地下产业已经形成了与需求对接的一个“综合业务代理机制”,在“需求方”提出目标后,“业务代理”会找到接手的“攻击者”,“攻击者”成功拖库后拿到客户的佣金,并且将获得的数据库洗库,可以直接提取其中可变现的部分(如有预存款或虚拟货币的账户);之后,这些数据会被用来撞库,尝试登陆其他有价值的网站,再对撞库成功的数据进行层层利用。经过日积月累,和相互交换,攻击组织和黑产团伙的数据库会越来越庞大,数据类型越来越丰富,危害也就越来越严重。

终端和流量截取数据
2015年,因恶意代码导致的信息泄露事件中,XcodeGhost 事件是一个值得所有IT从业人员深刻反思的事件。截止到 2015年9月20日,各方累计确认发现共692种APP受到污染,其中包括微信、滴滴、网易云音乐等流行应用。尽管有人认为被窃取的信息“价值有限”,但一方面其数量十分庞大,随之衍生的风险也可能十分严重;另一方面,通过向开发工具中植入代码来污染其产品,这种方式值得我们警醒。同时,本次事件采用非官方供应链污染的方式,也反映出了我国互联网厂商研发环境的缺陷和安全意识薄弱的现状。

短信拦截木马截取数据
近两年在国内肆虐的短信拦截木马在2015年不断出现新变种,并结合社会工程学手段疯狂传播,窃取用户的联系人、短信、设备信息等,如“相册木马”。从 PC 侧上看,2011 年出现的 Tepfer 木马家族目前依旧活跃,且已有数十万变种,Tepfer 家族可以盗取 60 种以上的 FTP 客户端软件保存的密码、10 种以上的浏览器保存的密码、31 种比特币信息;还能获取多个邮件客户端保存的密码,是一个利用垃圾邮件传播,无需交互、自动窃密并上传的木马家族。

大量数据的泄露一方面让用户的虚拟财产受到威胁,另一方面也使各种诈骗、精准钓鱼攻击变得更简单。之前大多数的诈骗都是采用广撒网的形式,而大量数据泄露使黑客的社工库完善后,可以有针对性地利用泄露信息匹配并精确定位用户,以此进行的诈骗和钓鱼攻击将更具欺骗性。

流量侧的信息劫持
从过去来看,流量侧的灰色活动,更多用来劫持页面、骗取点击的方式来变现,但这种普遍性的流量劫持,同样具备着流量侧窃取的能力,这一点对于HTTPS尚未有效普及的国内网络应用来看,是具有高度杀伤力的。(延伸:网站安装SSL证书后,使用Https加密协议访问网站,可激活客户端浏览器到网站服务器之间的”SSL加密通道”(SSL协议),实现高强度双向加密传输,防止传输数据被泄露或篡改,所有没有部署https的网站更加容易发生数据泄露。如果要为网站部署https,可以到沃通CA等机构申请SSL证书来保护网站数据和隐私信息安全。)

人的身份几乎是永久的,关系是基本稳定的,此类数据泄露带来的影响,很难在短时间内被冲淡。一个值得关注的情况是,随着黑产的规模化,这些数据将持续汇入黑产的“基础设施”当中,从而使其可能具备超越公共安全和安全厂商的资源能力,也不排除这种地下基础设施摇身一变,以“威胁情报”的形式,同时为黑产和白帽子服务。

数据和信息泄露造成的后果是恐怖的,希望每个人和企业都要提高网络安全意识,重视数据安全和隐私信息保护,尽可能的防止数据和隐私信息被不法分子利用。