【iOS開發】iOS中的安全和ATS

這是唐巧(博客)圣誕節在趣直播上分享的筆記。

(一)、前面提問

1、H5是否會替代原生應用開發。
主要觀點:短時期難以替代,類比PC端的發展,到現在PC端還有大量功能還是用原生的來寫的,這樣才可以最大化的利用硬件的性能,做到更好的體驗。

(二)、iOS安全的三個層面

一、平臺安全
1、芯片級的安全邏輯
主要是講每部蘋果手機的在芯片里面都有一個不可修改的publicKey,每次運行都會通過這個publickKey經過層層驗證,這也是只有蘋果手機才能用iOS系統的原因。
<2> 第次軟件升級都會獨立認證???這個沒有聽明白

2、數據層面
<1> 蘋果的數據加密是通過 密碼+硬件信息 作為加密密鑰。所以,蘋果手機的破解只能在本機上進行。另一個就是超過10次失敗就會完全鎖死。
<2> 兩種破解方法
(1) 用一個設備連接到手機的電池模塊,每次嘗試密碼失敗時,就把電斷開。就是在設備要寫入嘗試次數前把電斷開,避免受到失敗10次限制。
ps:這個方法防止也很簡單,在嘗試打開手機前就把嘗試次數寫入。現在估計已經不行了
(2) 另一種方法,是每次嘗試前把手機保存一份鏡像,如果失敗就還用原來的鏡像換個密碼繼續嘗試。
3、sandbox
4、code signing
5、touch ID
指紋信息的傳輸和認證都是通過硬件來完成,不經過系統,所以不會被別人盜取。
二、軟件升級安全
三、開發者安全
1、應用可以使用touch ID 支付寶
2、ATS 網絡安全 TLS1.2 以上安全協議 (這個地方不是很清楚,有待研究)
ps:SSL/TLS 加密協議
https早期使用的協議是SSL,現在使用的是TLS。指的是https采用的數據加密協議,里面包含了各種允許數據加密算法。
Secure Sockets Layer
Transport Layer Security
3、ATS在各個版本的情況。喵神的博客里面有介紹:ATS問題

(三)、證書問題

一、證書透明性
沒聽明白

(四)、ATS解決問題的方法和工具

一、打印請求的詳細信息
把 CFNETWORK_DIAGNOSTICS 1 加到環境變量里面
在請求時,console里面會打印出來這個log文件的位置,還有log的內容。


添加環境變量.jpg

二、nscurl
這個是mac自帶的工具
nscurl --ats-diagnostics --verbose https://www.eoojia.com

nscurl 測試結果

這個命令會用各種配置來對一個服務器進行請求,如使用ATS,不使用ATS,使用TLS1.1,TLS1.2,看其是否能通過,幫助判斷問題是服務器的問題還是前端開發的問題。

三、TSLTool
同樣是定位請求問題的一個工具,這個工具是需要自己編譯的,但是不能使用XCode8。
有點類似telnet 命令
./TLSTool s_client -connect www.baidu.com:443 連接到服務器
GET https://www.baidu.com HTTP/1.1
(這里不是很確定,因為沒工具,沒自己試過)

(五)、問答

1、https用charls調試
2、如何快速提升
<1> 時間、精力的投入
<2> WWDC 視頻
<3> objec IO
<4> 系統學習,碎片化學習效率低(這個深有體會。。)
<5> swift advanced 喵神
<6> iOS pushing limited
3、代碼是否需要混淆(類似安卓加殼)
開源庫:iOS-guard 可能不會通過審核
4、請求是否需要雙向驗證
即服務器和客戶端收到數據時都要驗證證書
一般不需要。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容