回顧了一下唐巧的一個直播 圣誕節(jié)之夜,聊聊 iOS 的安全和 ATS ,對 iOS 的這塊的安全有了新的了解,特此筆記。
疑問:iOS Vs Android 誰的安全性更高?
大部分情況下,Android的安全性確實沒有 iOS 高,但是有兩個點需要注意下:
平臺統(tǒng)一性帶來的單點風險
例如某個問題黑客攻破了,對于 iOS 來說就是全部攻破啦,但是對 Android 來說卻是有可能只針對某種類型的安卓手機,畢竟不同的廠商都有這自己的定制,各有各的問題。用戶安全意思更加薄弱
iOS 用戶的安全意思更加薄弱,不會注意這塊,至少很少看到 iOS 手機上裝一些 手機安全的 App。
iOS 開發(fā)者也是一樣,安卓開發(fā)者通常會涉及一些反混淆,加殼之類的,安全性意識自然不同。
iOS 安全的三個層面
- iOS 用戶平臺的安全
- iOS 用戶升級時軟件的安全
- iOS 開發(fā)者安全

一、平臺安全
- 芯片級的安全邏輯
- 數據層面的保護
- 代碼簽名
- 沙盒
- Touch ID
iOS 上的平臺安全可以從上述五個部分來說明。
1.1 芯片級的安全邏輯
將所有的安全邏輯全放在芯片中,里面有一個Apple Public Key 放在硬件中,每一次啟動時都需要對這個公鑰進行如下圖中一層一層的驗證。

這樣的話,要修改這個邏輯是相當麻煩的,同時 蘋果還做了以下處理,保證其驗證的安全性。
- Public Key 由蘋果提供,并不可偽造。
- 設備的每次軟件升級,都需要蘋果的獨立認證。
1.2 數據層面的保護
將內容進行加密,用戶數據不是簡單的通過passcord 加密的,而是把 passcode 作為種子,加上硬件信息共同生成的加密密鑰。
這個密鑰自然很長,這個密鑰還和設備相關,當換一個手機時這個手機信息自然不同的,所以暴力破解還只能在同一個手機上。超過 10 次失敗,會被拒絕再嘗試。
1.3 沙盒
將應用數據隔離
獨立存在,無法感知其他應用的信息所有權限獲得,需要經過用戶同意
所有權限都被沙盒擋住啦
有沙盒的存在,大部分的應用是無法做壞事的。
1.4 代碼簽名
聲明下:我們所有開發(fā)的應用,都是需要簽名的。
包括整個操作系統(tǒng),以及所有應用,都在 code signing 的檢查下運行。
另外想想當初被 簽名證書這塊麻煩事還是印象很深刻的,現在理解了為什么啦。
1.5 Touch ID
反正現在涉及到支付這塊的安全,我一般都是直接使用指紋密碼的,下圖是蘋果官方的統(tǒng)計,也說明了 Touch ID 的使用頻率,它的安全自然是需要注意的。

- 指紋采集器
- 安全通道
- 安全模塊識別

整個通訊都是在硬件上執(zhí)行,所以這一點保護我們指紋信息是安全的。
二、用戶升級的安全
先不說升級的安全,但是在iOS 9的升級的時候發(fā)現其體積變小了,對于像我這種 16 G 的用戶還是很高興的。
- 減少操作系統(tǒng)的體積

- 大版本的升級是上面那樣的,小的升級確是用增量的方式升級的,畢竟升級包沒那么大的。
而安全這塊,則是蘋果通過升級,可以將一些已知的漏洞可以很快解決掉,安全性自然就高啦。
所以此處也給了我們多一個升級的理由。
三、開發(fā)者的安全

App Transport Security
它本質上就上說要我們開發(fā)者直接用 HTTPS 請求。
-
HTTPS == HTTP + Security(SSL/TLS)
-
什么是 Security(SSL/TLS) ?
它們是在傳輸層上數據的加密, SSL 是以前的版本的協議,TLS 是現在版本的協議,蘋果也是要求其 TSL 1.2 版本之后的 HTTPS。
SSL/TLS
-
對于我們開發(fā)者來說,需要做什么呢?
- 服務端
買證書,買權威認證的證書 -
客戶端
客戶端的工作-源自直播中PPT
此處先了解一下 NSExceptionDomains 這塊的例外,之前沒用到過,還不太清楚...

另外注意下對 nscurl 的使用,我們搭建完HTTPS服務器之后,可以使用nscurl命令來進行檢測,查看建立的HTTPS服務器是否能通過ATS特性。
nscurl --ats-diagnostics --verbose https://example.com
如果HTTPS服務器能通過ATS特性,則所有測試案例都是PASS;如果某一項的Reuslt是FAIL,就找到ATS Dictionary來查看,就能知道HTTPS服務器不滿足ATS哪個條件。
開發(fā)者這塊的安全主要是指 App Transport Security, 通過 HTTPS 更好的保護我們數據的安全性。
整個下來,感覺對 我們 iOS 這塊的安全,確實有了新的認識,同時再次提醒了我們 iOS 開發(fā)者還是要多看看 WWDC 的視頻。

