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

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

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

大部分情況下,Android的安全性確實(shí)沒有 iOS 高,但是有兩個(gè)點(diǎn)需要注意下:

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

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

iOS 安全的三個(gè)層面

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

一、平臺(tái)安全

  • 芯片級(jí)的安全邏輯
  • 數(shù)據(jù)層面的保護(hù)
  • 代碼簽名
  • 沙盒
  • Touch ID

iOS 上的平臺(tái)安全可以從上述五個(gè)部分來說明。

1.1 芯片級(jí)的安全邏輯

將所有的安全邏輯全放在芯片中,里面有一個(gè)Apple Public Key 放在硬件中,每一次啟動(dòng)時(shí)都需要對(duì)這個(gè)公鑰進(jìn)行如下圖中一層一層的驗(yàn)證。

芯片級(jí)的安全邏輯

這樣的話,要修改這個(gè)邏輯是相當(dāng)麻煩的,同時(shí) 蘋果還做了以下處理,保證其驗(yàn)證的安全性。

  • Public Key 由蘋果提供,并不可偽造。
  • 設(shè)備的每次軟件升級(jí),都需要蘋果的獨(dú)立認(rèn)證。
1.2 數(shù)據(jù)層面的保護(hù)
  • 將內(nèi)容進(jìn)行加密,用戶數(shù)據(jù)不是簡(jiǎn)單的通過passcord 加密的,而是把 passcode 作為種子,加上硬件信息共同生成的加密密鑰。
    這個(gè)密鑰自然很長(zhǎng),這個(gè)密鑰還和設(shè)備相關(guān),當(dāng)換一個(gè)手機(jī)時(shí)這個(gè)手機(jī)信息自然不同的,所以暴力破解還只能在同一個(gè)手機(jī)上。

  • 超過 10 次失敗,會(huì)被拒絕再嘗試。

1.3 沙盒
  • 將應(yīng)用數(shù)據(jù)隔離
    獨(dú)立存在,無法感知其他應(yīng)用的信息

  • 所有權(quán)限獲得,需要經(jīng)過用戶同意
    所有權(quán)限都被沙盒擋住啦

有沙盒的存在,大部分的應(yīng)用是無法做壞事的。

1.4 代碼簽名

聲明下:我們所有開發(fā)的應(yīng)用,都是需要簽名的。
包括整個(gè)操作系統(tǒng),以及所有應(yīng)用,都在 code signing 的檢查下運(yùn)行。
另外想想當(dāng)初被 簽名證書這塊麻煩事還是印象很深刻的,現(xiàn)在理解了為什么啦。

1.5 Touch ID

反正現(xiàn)在涉及到支付這塊的安全,我一般都是直接使用指紋密碼的,下圖是蘋果官方的統(tǒng)計(jì),也說明了 Touch ID 的使用頻率,它的安全自然是需要注意的。

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

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

二、用戶升級(jí)的安全

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

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

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

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

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

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

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

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


      SSL/TLS

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

  • 服務(wù)端
    買證書,買權(quán)威認(rèn)證的證書
  • 客戶端


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

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

NSExceptionDomains-源自直播中PPT

另外注意下對(duì) nscurl 的使用,我們搭建完HTTPS服務(wù)器之后,可以使用nscurl命令來進(jìn)行檢測(cè),查看建立的HTTPS服務(wù)器是否能通過ATS特性。

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

如果HTTPS服務(wù)器能通過ATS特性,則所有測(cè)試案例都是PASS;如果某一項(xiàng)的Reuslt是FAIL,就找到ATS Dictionary來查看,就能知道HTTPS服務(wù)器不滿足ATS哪個(gè)條件。

開發(fā)者這塊的安全主要是指 App Transport Security, 通過 HTTPS 更好的保護(hù)我們數(shù)據(jù)的安全性。

整個(gè)下來,感覺對(duì) 我們 iOS 這塊的安全,確實(shí)有了新的認(rèn)識(shí),同時(shí)再次提醒了我們 iOS 開發(fā)者還是要多看看 WWDC 的視頻。

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

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容