ATS  (App Transport Security)  应用安全通讯

一、ATS 是什么?

ATS (App Transport Security 应用通讯安全)是一个提升APP网络服务连接安全性的特性,默认网络连接必须执行安全链接的最佳实践,工作在iOS9及OSX 10.11版本之后。App可以重写默认行为来关闭安全传输特性。
(默认ATS,现关闭ATS,在info.plist 按如下修改:
(1)添加 App Transport Security Settings
(2)给其添加 子项Allow Arbitrary Loads ,并改为位YES

![](/var/folders/f0/b0zpq_x938s25_zgzy01_y780000gn/T/com.evernote.Evernote/WebKitDnD.5haHFH/屏幕快照 2016-01-17 上午4.52.12.png)

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

ATS必须遵循以下要求:

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

例外

可以在Info.plist中对app或extension声明一些例外来避免使用ATS,使用列表中的特定key可以声明特定的例外。或者你可以通过特定的声明来完全关闭ATS。

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

二、为什么HTTPS?

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

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

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

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

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

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

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

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

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

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

推荐阅读更多精彩内容