《唐巧 聊聊 iOS 安全和 ATS》直播筆記

回顧了一下唐巧的一個直播 圣誕節(jié)之夜,聊聊 iOS 的安全和 ATS ,對 iOS 的這塊的安全有了新的了解,特此筆記。

疑問:iOS Vs Android 誰的安全性更高?

大部分情況下,Android的安全性確實沒有 iOS 高,但是有兩個點需要注意下:

  • 平臺統(tǒng)一性帶來的單點風險
    例如某個問題黑客攻破了,對于 iOS 來說就是全部攻破啦,但是對 Android 來說卻是有可能只針對某種類型的安卓手機,畢竟不同的廠商都有這自己的定制,各有各的問題。

  • 用戶安全意思更加薄弱
    iOS 用戶的安全意思更加薄弱,不會注意這塊,至少很少看到 iOS 手機上裝一些 手機安全的 App。
    iOS 開發(fā)者也是一樣,安卓開發(fā)者通常會涉及一些反混淆,加殼之類的,安全性意識自然不同。

iOS 安全的三個層面

  • iOS 用戶平臺的安全
  • iOS 用戶升級時軟件的安全
  • iOS 開發(fā)者安全
iOS 安全的三個層面 -源自直播中圖片

一、平臺安全

  • 芯片級的安全邏輯
  • 數據層面的保護
  • 代碼簽名
  • 沙盒
  • 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 的使用頻率,它的安全自然是需要注意的。

蘋果官方統(tǒng)計
  • 指紋采集器
  • 安全通道
  • 安全模塊識別
指紋的工作流程

整個通訊都是在硬件上執(zhí)行,所以這一點保護我們指紋信息是安全的。

二、用戶升級的安全

先不說升級的安全,但是在iOS 9的升級的時候發(fā)現其體積變小了,對于像我這種 16 G 的用戶還是很高興的。

  • 減少操作系統(tǒng)的體積
體積的減小
  • 大版本的升級是上面那樣的,小的升級確是用增量的方式升級的,畢竟升級包沒那么大的。

而安全這塊,則是蘋果通過升級,可以將一些已知的漏洞可以很快解決掉,安全性自然就高啦。
所以此處也給了我們多一個升級的理由。

三、開發(fā)者的安全

開發(fā)者的安全 -源自直播中PPT
App Transport Security

它本質上就上說要我們開發(fā)者直接用 HTTPS 請求。

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

    • 什么是 Security(SSL/TLS) ?
      它們是在傳輸層上數據的加密, SSL 是以前的版本的協議,TLS 是現在版本的協議,蘋果也是要求其 TSL 1.2 版本之后的 HTTPS。


      SSL/TLS

對于我們開發(fā)者來說,需要做什么呢?

  • 服務端
    買證書,買權威認證的證書
  • 客戶端


    客戶端的工作-源自直播中PPT

此處先了解一下 NSExceptionDomains 這塊的例外,之前沒用到過,還不太清楚...

NSExceptionDomains-源自直播中PPT

另外注意下對 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 的視頻。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 很可能你的應用是與一個支持HTTPS傳輸數據的服務器交互,但是并沒有使用TLS 1.2或更高。在這種情況下,你定義...
    Www劉閱讀 3,279評論 0 5
  • iOS 10 適配 ATS 一. HTTPS 其實HTTPS從最終的數據解析的角度,與HTTP沒有任何的區(qū)別,HT...
    made_China閱讀 1,799評論 0 12
  • 一直在和你說回家的事情,有時候晚上睡不著,就會想象我們一起回家的樣子,一起慢慢地坐火車,在火車上看著窗邊大片的麥田...
    老胡Boba閱讀 171評論 0 0
  • 我還記得那是夏天 我左手持煙右手扶著杯子 你叫我坐你旁邊教我看手相 那個時候真的很美好 躲著你前男友 坐在他包間隔...
    寫給盛夏的你閱讀 258評論 0 0
  • 01 Angie和她的時間管理特訓營 2016年12月中下旬,一個非常偶然的機會,看到Angie老師的一篇公眾號文...
    富蘭克劉閱讀 382評論 4 11

友情鏈接更多精彩內容