关于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密钥。
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,端⼝443,即HTTPS默认端⼝。测试的对象⼀般是⾏⾥的Web服务器、反向代理机或SSL服务器,⽆需直接对应⽤服务器进⾏测试。
针对公⽹可访问的⽣产环境地址,我们建议使⽤QUALYS SSL Labs的在线监测⼯具。操作步骤
如下:
输⼊域名和端⼝,如mob。默认端⼝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。如果必须使⽤这ssl协议未开启的危害
类功能,则需要给客户端设置ATS例外。
在Info.plist中添加例外键值对,含义如下:
NSExceptionDomains为特定域名设置例外
NSAllowsArbitraryLoadsInWebContent为WebView设置例外,允许UIWebView访问不
⽀持ATS的服务器。仅iOS 10有效。
NSAllowsArbitraryLoadsInMedia允许加载不⽀持ATS的媒体内容,⾳频、视频等等
注意,在添加了例外之后,会触发额外的审核,请在提交App Store审核时附上合理的原因,否则会导致审核失败。
具体的配置信息,可参照苹果公司官⽅开发⽂档:
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例外,都会触发额外的审核,需要附上合理的理由,否则会被拒绝上线。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论