《唐巧 聊聊 iOS 安全和 ATS》直播笔记

回顾了一下唐巧的一个直播 圣诞节之夜,聊聊 iOS 的安全和 ATS ,对 iOS 的这块的安全有了新的了解,特此笔记。

疑问:iOS Vs Android 谁的安全性更高?

大部分情况下,Android的安全性确实没有 iOS 高,但是有两个点需要注意下:

  • 平台统一性带来的单点风险
    例如某个问题黑客攻破了,对于 iOS 来说就是全部攻破啦,但是对 Android 来说却是有可能只针对某种类型的安卓手机,毕竟不同的厂商都有这自己的定制,各有各的问题。

  • 用户安全意思更加薄弱
    iOS 用户的安全意思更加薄弱,不会注意这块,至少很少看到 iOS 手机上装一些 手机安全的 App。
    iOS 开发者也是一样,安卓开发者通常会涉及一些反混淆,加壳之类的,安全性意识自然不同。

iOS 安全的三个层面

  • iOS 用户平台的安全
  • iOS 用户升级时软件的安全
  • iOS 开发者安全
《唐巧 聊聊 iOS 安全和 ATS》直播笔记_第1张图片
iOS 安全的三个层面 -源自直播中图片

一、平台安全

  • 芯片级的安全逻辑
  • 数据层面的保护
  • 代码签名
  • 沙盒
  • Touch ID

iOS 上的平台安全可以从上述五个部分来说明。

1.1 芯片级的安全逻辑

将所有的安全逻辑全放在芯片中,里面有一个Apple Public Key 放在硬件中,每一次启动时都需要对这个公钥进行如下图中一层一层的验证。

《唐巧 聊聊 iOS 安全和 ATS》直播笔记_第2张图片
芯片级的安全逻辑

这样的话,要修改这个逻辑是相当麻烦的,同时 苹果还做了以下处理,保证其验证的安全性。

  • Public Key 由苹果提供,并不可伪造。
  • 设备的每次软件升级,都需要苹果的独立认证。
1.2 数据层面的保护
  • 将内容进行加密,用户数据不是简单的通过passcord 加密的,而是把 passcode 作为种子,加上硬件信息共同生成的加密密钥。
    这个密钥自然很长,这个密钥还和设备相关,当换一个手机时这个手机信息自然不同的,所以暴力破解还只能在同一个手机上。

  • 超过 10 次失败,会被拒绝再尝试。

1.3 沙盒
  • 将应用数据隔离
    独立存在,无法感知其他应用的信息

  • 所有权限获得,需要经过用户同意
    所有权限都被沙盒挡住啦

有沙盒的存在,大部分的应用是无法做坏事的。

1.4 代码签名

声明下:我们所有开发的应用,都是需要签名的。
包括整个操作系统,以及所有应用,都在 code signing 的检查下运行。
另外想想当初被 签名证书这块麻烦事还是印象很深刻的,现在理解了为什么啦。

1.5 Touch ID

反正现在涉及到支付这块的安全,我一般都是直接使用指纹密码的,下图是苹果官方的统计,也说明了 Touch ID 的使用频率,它的安全自然是需要注意的。

《唐巧 聊聊 iOS 安全和 ATS》直播笔记_第3张图片
苹果官方统计
  • 指纹采集器
  • 安全通道
  • 安全模块识别
《唐巧 聊聊 iOS 安全和 ATS》直播笔记_第4张图片
指纹的工作流程

整个通讯都是在硬件上执行,所以这一点保护我们指纹信息是安全的。

二、用户升级的安全

先不说升级的安全,但是在iOS 9的升级的时候发现其体积变小了,对于像我这种 16 G 的用户还是很高兴的。

  • 减少操作系统的体积
《唐巧 聊聊 iOS 安全和 ATS》直播笔记_第5张图片
体积的减小
  • 大版本的升级是上面那样的,小的升级确是用增量的方式升级的,毕竟升级包没那么大的。

而安全这块,则是苹果通过升级,可以将一些已知的漏洞可以很快解决掉,安全性自然就高啦。
所以此处也给了我们多一个升级的理由。

三、开发者的安全

《唐巧 聊聊 iOS 安全和 ATS》直播笔记_第6张图片
开发者的安全 -源自直播中PPT
App Transport Security

它本质上就上说要我们开发者直接用 HTTPS 请求。

  • HTTPS == HTTP + Security(SSL/TLS)

    • 什么是 Security(SSL/TLS) ?
      它们是在传输层上数据的加密, SSL 是以前的版本的协议,TLS 是现在版本的协议,苹果也是要求其 TSL 1.2 版本之后的 HTTPS。


      《唐巧 聊聊 iOS 安全和 ATS》直播笔记_第7张图片
      SSL/TLS

对于我们开发者来说,需要做什么呢?

  • 服务端
    买证书,买权威认证的证书
  • 客户端


    《唐巧 聊聊 iOS 安全和 ATS》直播笔记_第8张图片
    客户端的工作-源自直播中PPT

此处先了解一下 NSExceptionDomains 这块的例外,之前没用到过,还不太清楚...

《唐巧 聊聊 iOS 安全和 ATS》直播笔记_第9张图片
NSExceptionDomains-源自直播中PPT

另外注意下对 nscurl 的使用,我们搭建完HTTPS服务器之后,可以使用nscurl命令来进行检测,查看建立的HTTPS服务器是否能通过ATS特性。

nscurl --ats-diagnostics --verbose https://example.com

如果HTTPS服务器能通过ATS特性,则所有测试案例都是PASS;如果某一项的Reuslt是FAIL,就找到ATS Dictionary来查看,就能知道HTTPS服务器不满足ATS哪个条件。

开发者这块的安全主要是指 App Transport Security, 通过 HTTPS 更好的保护我们数据的安全性。

整个下来,感觉对 我们 iOS 这块的安全,确实有了新的认识,同时再次提醒了我们 iOS 开发者还是要多看看 WWDC 的视频。

你可能感兴趣的:(《唐巧 聊聊 iOS 安全和 ATS》直播笔记)