关于iOS启用ATS安全标准的说明

什么是ATS?

App Transport Security,即ATS,是苹果公司在iOS 9和Mac OS X 10.11(El Capitan)操作系

统中推出的一个新的安全标准。尽管苹果公司没有提到watchOS和tvOS,我们可以推测App

Transport Security也同样适用于watchOS 2和tvOS。App Transport Security的目标是提高苹

果iOS及Mac操作系统的安全性以及在此操作系统上运行的任何应用的安全性。

基于HTTP传输数据的网络请求都是明文传输。很明显,明文传输会引起相当大的安全风险。

苹果公司强调每个开发者都应该保证客户的数据安全,尽管那些数据可能看起来并不是很重要

或者很敏感。

App Transport Security通过强力推行一系列的安全标准来积极地促进安全性,最重要的一个

就是要求网络请求必须在一个安全的链路上传输。开启App Transport Security后,网络传输

自动通过HTTPS传输而不是HTTP。

还有一系列其他的要求来进一步提高安全性能。例如,App Transport Security要求TLS

(Transport Layer Security)是1.2版本或者更高。TLS是SSL的改进和替代,它是一系列加密

协议的集合用来加强在网络连接上的安全性。

ATS安全标准的要求

ATS(App Transport Security)是为了提高App与服务器之间安全传输数据一个特性,这个特性从iOS 9和Mac OS X 10.11开始使用,它默认需要满足以下几个条件:

服务器必须启用HTTPS,且TLS版本至少是1.2版本连接加密只允许几种先进的加密算法 证书必须使用SHA256或者更好的哈希算法进行签名,要么是2048位或者更长的RSA密钥,要么就是256位或更长的ECC密钥。

如果想了解哪几种加密算法是被允许的,详情请见官方文档App Transport Security Technote(https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistK

eyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW57)

ATS带来的影响

苹果公司要求,从2017年1月起,所有新上线或更新的应用,都应该支持ATS安全标准。

苹果公司会在开发商提交iTunes Connect/App Store审核时核应用对ATS的支持。对于无法完全支持ATS,需要在应用内连接非ATS安全标准的服务,可以添加例外,但在审核时需要提供合理的理由。

对于大部分公司而言,采用HTTPS/TLS并使用安全的服务器证书已是目前的标准配备。启用ATS安

全标准,一般只需要排查服务器和客户端的配置。

测试与排查

服务端排查

我们需要借助第三方工具来测试服务端是否支持ATS。

首先,我们要取得客户端直接连接的服务端域名及端口,例如mob.com.cn,端口443,即HTTPS默认端口。测试的对象一般是行里的Web服务器、反向代理机或SSL服务器,无需直接对应用服务器进行测试。

针对公网可访问的生产环境地址,我们建议使用QUALYS SSL Labs的在线监测工具。操作步骤

如下:

访问QUALYS SSL Labs的网址:https://www.ssllabs.com/ssltest/index.html

输入域名和端口,如mob.com.cn。默认端口443可省略。并开始测试。

等待几分钟后,就会出现测试结果。

Summary部分显示的是总体评分,显示绿色的A即为安全。如果评分低于A,则需要具体分析减分项。

在Authentication部分,需要确认如下内容:

–Key中的算法为RSA、秘钥长度大于等于2048位,或者算法为ECC、秘钥长度

大于等于256位。

–Signature algorithm中的签名算法为下列支持的算法之一:

SHA256WithRSA

SHA384WithRSA

SHA512WithRSA

ECDSAWithSHA256

ECDSAWithSHA384

ECDSAWithSHA512

在Configuration部分,需要确认如下内容:

–Protocols下,TLS 1.2必须为Yes,TLS 1.0、1.1可以为Yes(为了兼容旧设备),

SSL 2/3必须为No。

–Cipher Suites必须包含如下算法中的一个或多个:

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384

TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256

TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

确认过以上内容,即表示服务端符合ATS安全标准。

客户端排查

客户端从iOS 9 SDK起默认开启ATS,一般无需进行代码改造。需要注意如下几点:

客户端需要以域名的方式连接服务器,IP地址形式的连接,是不符合ATS要求的。

客户端如果需要访问第三方服务器,或者内嵌了第三方提供的SDK,则需要确认第三方的服务端开启了ATS支持。

客户端工程中的Info.plist中,不能包含NSAllowsArbitraryLoads键及其他NSAllowsArbitrary*键。

注意以上几点,即可保证客户端支持ATS。

有时,客户端内嵌入了第三方的SDK,不容易得知第三方服务是否开启ATS支持。检查的方式是,在开启确认客户端ATS支持后,进行功能测试,确认第三方提供的功能在ATS开启后还能正常运转。

如果第三方提供的功能在ATS模式下无法正常运转,则表明其不支持ATS。如果必须使用这

类功能,则需要给客户端设置ATS例外。

在Info.plist中添加例外键值对,含义如下:

NSExceptionDomains为特定域名设置例外

NSAllowsArbitraryLoadsInWebContent为WebView设置例外,允许UIWebView访问不

支持ATS的服务器。仅iOS 10有效。

NSAllowsArbitraryLoadsInMedia允许加载不支持ATS的媒体内容,音频、视频等等

注意,在添加了例外之后,会触发额外的审核,请在提交App Store审核时附上合理的原因,否则会导致审核失败。

具体的配置信息,可参照苹果公司官方开发文档:

https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKey

Reference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW35

常见问题

1.是否需要采购额外硬件,才能开启ATS?

不用。银行系统中常用的Web服务器/反向代理服务器,如Apache Web Server、Nginx、HAProxy等均支持ATS所需的安全技术,常用的VeriSign、Symantec签发的服务器证书,一般也符合要求,无需另行采购硬件。对于SSL服务器等硬件,需要和厂商确认是否支持及如何配置。

2.应用服务器及后台应用是否需要改造?

不用。部署在内网的应用服务器无需进行改造,只要其前方的Web服务器或反向代理经过正确配置,符合ATS要求即可。

3.如果在2017年1月前未完成ATS相关改造,我的现有应用是否会受到影响?

已经在App Store上线的应用,还可以继续使用。

4.如果在2017年1月前未完成ATS相关改造,还可以提交新的版本吗?

不可以。在iTunes Connect/App Store审核过程中,会核查ATS支持情况,对于不支持的应用会拒绝上线。

5.既然可以添加ATS例外,把银行的生产服务器添加进去是否可以?

不可以。任何添加的ATS例外,都会触发额外的审核,需要附上合理的理由,否则会被拒绝上线。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容