iOS9 App Transport Security 如何应对?

ATS

本文描述了iOS Apple新增的 ATS 相关政策研究和解读。

一、ATS 是什么?


ATS (App Transport Security)是一个提升APP网络服务连接安全性的特性,默认网络连接必须执行安全链接的最佳实践,工作在iOS9及OSX 10.11版本之后。App可以重写默认行为来关闭安全传输特性。1

所有使用NSURLConnection,CFURL或者NSURLSession APIs的连接在iOS9及OSX 10.11版本之后都会默认遵循ATS(包括UIWebView)。

ATS必须遵循以下要求

  1. App服务端必须支持TLS1.2或以上版本。
  2. 加密算法仅限于正向加密。证书必须使用SHA256或更好的签名散列算法署名,伴随一个2048位或更高位的RSA密钥或者256位或更高位的Elliptic-Curve密钥。
  3. 非法的证书配置会导致不能建立连接返回失败。
  4. 说白了,非知名CA的证书比如自签名的证书,ATS不认可。

ATS工作的四种模式: 2

  1. HTTPS Only(全部HTTPS)
  2. Mix & Match(管理部分不走HTTPS的特例)
  3. Opt Out(全部不走HTTPS)
  4. Opt Out With Exceptions(管理部分走HTTPS的特例)

至于如何配置,请参考苹果文档。

二、为什么HTTPS?


在没有大面积普及HTTPS的情况下,大家一般都是使用自有方式来努力保证传输加密。但是HTTP的天生特性导致,总会暴露一些参数在外。所以HTTPS的优势不需多说。

HTTPS是更安全的HTTP协议,它在TCP(负责网络数据传输)和HTTP层之间,增加了一个SSL层。这一层通过数字证书和加密算法对HTTP请求进行加密。已经采用HTTP协议的网站要过渡到HTTPS,将在技术改造、服务器资源、流量资源上付出更多成本。

HTTPS TLS是什么关系?

HTTP+SSL/TLS+TCP = HTTPS

目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。目前主流浏览器都已经实现了TLS 1.2的支持。

常用的有下面这些:

  1. SSL 2.0
  2. SSL 3.0
  3. TLS 1.0 (SSL 3.1)
  4. TLS 1.1 (SSL 3.1)
  5. TLS 1.2 (SSL 3.1)

SSL/TLS协议希望达到:

  1. 所有信息都是加密传播,第三方无法窃听。
  2. 具有校验机制,一旦被篡改,通信双方会立刻发现。
  3. 配备身份证书,防止身份被冒充。

为什么中国绝大多数都没有使用HTTPS?

  1. 开发者向证书管理机构申请证书需要付费,这无可厚非因为证书管理和升级需要成本。但对于中小型网站而言,这会成为障碍。

  2. 网页引入的资源如JS、CSS和图片文件均需要采取HTTPS,这些资源可能来自不同部门或者公司,需要进行对应处理,需要大量时间和人力成本。

  3. HTTPS会增加服务器的计算和带宽成本。SSL层在TCP协议的握手流程上增加了几次握手,另外每一次请求都需要进行RSA校验计算,这都会给服务器造成更多计算压力。缓存效率的变低,支持HTTPS的CDN(内容发布网络)节点更少,这会增加流量成本。网络规模越大,计算和流量成本越高。

  4. HTTPS握手次数增加则会让发起请求者有一定程度的延迟。虽然在光纤网络普及的今天,用户基本无感知,但是在手机 2G 网络状态下,可能会带来较明显延迟。

  5. 为了避免重复加密,减少服务端和用户端的加解密资源和时间耗费,HTTP下已有的安全加密方案需要做调整。

研究报告称,HTTPS会让页面加载时间增加了50%,增加10%到20%的耗电,此外,HTTPS还会影响缓存,增加数据开销和功耗,已有安全措施也会受到影响。 3

但是我们还是如此迫切需要HTTPS,因为这是迄今为止最为成熟和高效的数据安全传输方式。这也是Apple力推ATS的最大原因。

三、怎么做


ATS会涉及APP的两个方面:

  1. 服务器 API 调用。
  2. WebView 展示的HTML。

因此,如果想完全启用ATS,需要做以下改变:

  1. 服务器所有API调用迁移HTTPS。
  2. APP 内 所有HTML的服务器均迁移为HTTPS。
  3. HTTPS必须支持 TLS 1.2,并使用支持forward secrecy协议的密码,同时采用知名CA颁发的证书。

最佳方案

在时间和人力成本允许的情况下,全部迁移HTTPS。这是最佳方案。

但除非APP的服务足够封闭和自给自足,否则完全ATS不大可能,因为有太多第三方网页或者服务存在。

渐进方案

  1. 使用Opt Out With Exceptions模式:关闭ATS,但是设置遵循ATS的例外列表,并逐步增加。
  2. 从部分服务开始,进行服务端HTTPS迁移实验,观察HTTPS对服务端压力和客户端耗时的影响,及时做方案优化和调整。并逐步扩大。
  3. 整理收编各个服务的Api host,做到同类服务同一个 host,方便ATS管理各种例外。
  4. 催促各种第三方服务商迁移HTTPS。

最后方案

彻底关闭ATS。把改进工作放在Apple发出最后通牒的时候在做。但这真的不是好方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值