仰望星空MAL
2016年美國聖博娜迪諾發生恐怖襲擊案,嫌犯被當場擊斃,但他在現場遺留下的iPhone 5c則成了FBI始終無法攻破的難題。想要獲得更多線索與細節就必須解鎖這臺iPhone,但FBI自身不具備如此強大的技術,於是要求蘋果公司提供相關破解信息。
FBI示警
時任蘋果公司CEO的庫克毫不猶豫地發表了一封公開信,表示:蘋果是一家以用戶為本的公司,不具備任何執法權,不會幫助任何人或機構破解蘋果產品,不會以任何方式洩露用戶隱私。最後FBI將蘋果告上法庭,專業律師分析,一旦蘋果敗訴,不但要面臨拖延一天25萬美元的罰款,庫克也有可能因此入獄。
庫克拒絕向FBI提供技術解決方案
然而案件正在審理階段時,FBI突然撤訴了。難道是蘋果公司妥協了嗎?並沒有,而是美國政府找到了另一個救星——Cellebrite。Cellebrite是一家以色列的技術安全公司,提供的服務包括解鎖iPhone設備、破解iOS系統等。最終這臺命途多舛的iPhone 5c還是被FBI的外援設法破解了。
iPhone 5c
日前,Cellebrite又搞事情,竟然宣佈他們的最新舉證裝置已經可以完全破解任何搭載iOS 12.3的蘋果設備(此處破解是指直接繞過蘋果設備,從內部入手,獲取設備上的各項信息與數據)。另一家技術安全巨頭Gray Key最近也表示已經完成了對iOS 12.3的解鎖工作,準備投入服務階段。
多家技術安全公司均稱已破解蘋果iOS
其實不僅是Cellebrite、Gray Key,幾乎凡是頂尖的技術安全公司或者是技術人員都以破解蘋果一直引以為傲的iOS系統當做一項成就,甚至是業界榮譽。面對如此窘境,蘋果公司只能完善技術防禦團隊,不斷修補解鎖漏洞。不過這場關於蘋果iOS的攻防拉鋸戰得以持續至今,也足以見到以Cellebrite、Gray Key為首的技術安全公司有多麼強大,有消息支出Cellebrite的高管中就包含蘋果前安全工程師。
網上流傳的破解工具截圖
雖然如此,但是大家不必過度緊張。類似Cellebrite、Gray Key這種大公司的服務對象一般是各個國家的政府以及執法部門,所提供的破解裝置和破解服務也大多用於打擊犯罪。不過細心的同學也發現在ebay等網絡交易平臺上有時竟然也可以購買到由第三方提供的Cellebrite破解服務。確實,蘋果也在此前多次被曝出iPhone用戶信息洩露事件,深陷輿論泥沼。
ebay網絡交易平臺
可以預見到的是,關於iPhone設備的破解與反破解一直是一場曠日持久又異常詭譎的拉鋸戰。蘋果公司會不斷優化iOS系統、杜絕設備解鎖漏洞;而另一方技術安全公司則會針對前者的調整不斷進行測試,直到攻破目標。不管未來蘋果走勢如何,恐怕這場貓鼠遊戲都將會一直持續下去。
魔金石科技
1.蘋果不是完全不能破解,這點大家要清楚,記得FBI那次和蘋果紛爭解密事件,最後FBI和一些安全組織測試5s以下版本是可以破解的。這個估計是iOS軟件層面上的漏洞,跟加密機制沒雞毛關係。再根據iOS版本和手機發行對比,5s以下應該是包括iOS8和8以前的系統。9-10是破不鳥得。
2.回到問題根本,為什麼蘋果手機相對安全,記得是蘋果手機,因為iOS閉合的,官方不開放API,也禁止任何APP調用官方私有API,被發現直接就會下架,360就幹過這事,所以早期版本被下了,那版本各種逆向各種系統級別讀取用戶信息,蘋果要求每個開發者申請證書,上架必須提交所有原始代碼,不準APP熱更新,得重新下新版本,這些點蘋果從APP這點就能保證很大的安全給用戶。
還有就是iOS的BootLoader這個玩意和emcc讀取權限是關閉的,所以經常有越獄失敗變成白蘋果甚至變磚,白蘋果還有的救,只能更新或者刷最新系統,更新系統後也得用原來ID激活,不會因為刷機而沒有ID保護了。這個方面也保證了設備物理硬件上的安全。
還有一個就是開機密碼,這個和ID沒毛關係的,開機密碼也沒用什麼證書亂七八糟的,簡單點估計就是類似於,我只是猜測,aes1024,aes2048這樣的算法,加密了開機密碼字符,而且輸入次數過多還會鎖定,這也是也沒法破解蘋果系統最重要的一點。aes算髮是Linux獨有的機制,iOS是基於Linux開發的,相必應該用了甚至高於aes複雜機制的內部算法。
3.最後說下,ID,這年頭ID經常被盜,第一iCould被人攻破過,數據庫外洩,這個和蘋果官方ID系統不安全有關係,蘋果這幾年也一直在ID被盜上加大安全機制,甚至誤鎖手機也在所不惜,本人就有經歷,被蘋果鎖了手機,資料準備審核經過了半年,才解鎖了。還有途徑就是拿數據庫和其他數據庫對比撞褲,破解你的ID密碼,iD途徑破解手機跟手機本身安全沒關係,是蘋果的問題。
1.所有隻要ID不被盜取,開啟二級兩步認證,開啟密碼保護。
2.系統升級最新。
3.手機掉了緊急鎖定。
4.關掉蘋果下拉欄,為什麼呢?這個還是一個的士司機給我說的,撿到你的手機,下拉欄先關流量,你就定位不了,然後他們也可以賣錢,只要不鎖定,還是客戶賣錢的
滿足四點,你的蘋果手機相對安全,但不是百分之百的安全,如果對方有目的的偷你手機,知道你詳細資料,就算你解鎖,他們去找蘋果也能騙官方給解鎖。
廈門方根科技有限公司
我知道的不多,蘋果手機,軟件與硬件同時都被加密啦,估計你的問題是id鎖。蘋果手機你要知道,需要開機激活通過網絡來驗證手機,驗證通過發送給你的手機解鎖密匙,這些都存儲在蘋果服務器上。一旦鎖id軟解是沒辦法的,因為基帶與cpu兩者是鎖定捆綁的套件,一下子板子就廢了,鎖定的是硬件同時驗證通過網絡來激活,所以難以破解,
鼎盛達人
數字簽名基於非對稱算法實現
所謂的對稱算法就是加密和解密都用一份秘鑰
而非對稱算法使用的是一對公鑰和私鑰
公鑰加密的數據只有私鑰才能解密 而私鑰加密的數據也只有公鑰才能解密
2.所謂的數字簽名 就是簽名者對原始數據的摘要(例如MD5特徵值)用私鑰進行加密後得到的文件
用戶擁有簽名者公佈的公鑰
在用戶接收到簽名和原始數據之後 用公鑰解密簽名 可以得到簽名者的摘要
再對傳過來的原始數據用相同的算法(例如MD5特徵值)得到摘要
將兩個摘要對比即可知道這份傳過來的數據是否被篡改過
3.最簡單的簽名方式就是講app當做原始數據 蘋果公司將公鑰內置於iOS系統
然後對appStore上的所有app用公司內部的私鑰進行加密(簽名)
但是實際上 iOS設備安裝app的方式除了appStore 還有從xcode上安裝 in-house企業內部分發等方式
所以這種簡單的方式就行不通了
4.從xcode安裝的app不需要上傳到apple服務器
而且蘋果對這裡的安裝也需要有控制權 包括只有經過蘋果允許的app才能安裝 非開發app不能安裝
為此蘋果提供了一種雙層簽名的機制
5.iOS中所謂的證書其實是對MAC開發機的【公鑰】進行簽名後得到的文件
我們將MAC開發機生成的密鑰對成為私鑰L 公鑰L (L = Local)
而由蘋果掌控的密鑰對稱為 私鑰A 公鑰A (A = Apple)
6.首先將公鑰L上傳到蘋果服務器 蘋果用私鑰A對公鑰L簽名 得到證書
在編譯app的時候 用私鑰L對app進行簽名
將證書和簽名後的app打包安裝到iOS設備中
此時 iOS先用私鑰A對證書(也就是公鑰L的簽名)進行解密
我們知道簽名可以保證被簽名數據的可靠性 所以這裡保證公鑰L是可靠的
再用這個可靠的公鑰L對app簽名進行解密 以此保證app是可靠的
通過這一系列流程 我們保證了app可以直接通過xcode安裝 也保證了app沒有經過篡改
但是還沒有解決安裝的控制權的問題
7.我們在實際打包應用的時候 有一個Provisioning Profile
這個文件除了包含上面提到的證書外 蘋果還加入了一些其他用於控制安裝權的東西
比如說appID 設備IDs Entitlements權限控制等
由於這些打包進去的文件是在蘋果後臺進行的 也就是說是經過蘋果允許的
這樣也就保證了蘋果對於安裝的控制權
不過為了區分起見 證書和 appId 設備ID entitlements是分開簽名的
他們打包在一起才叫做Provisioning Profile
簽名後的Provisioning Profile稱為embedded.mobileprovision
在iOS設備中用公鑰A解密後 iOS就會用裡面的設備IDs等進行驗證 保證安裝的控制
8.如果我們想別的電腦也能編譯我的app代碼怎麼辦
按照上述流程 別的電腦需要下載Provisioning Profile 並且需要擁有私鑰L對app進行簽名才行
所以需要原來的電腦那邊導出私鑰L 給別的電腦用
這個私鑰L 導出後是.p12文件
9.總結下專有名詞之間的對應關係:
證書:內容是公鑰或私鑰,由其他機構對其簽名組成的數據包。
Entitlements:包含了 App 權限開關列表。
CertificateSigningRequest:本地公鑰。
p12:本地私鑰,可以導入到其他電腦。
Provisioning Profile:包含了 證書 / Entitlements 等數據,並由蘋果後臺私鑰簽名的數據包。
兩對鑰匙對:MAC生成的公私鑰L 蘋果的公私鑰A
各自的作用:
①MAC的私鑰L:加密app
②MAC的公鑰L:用來解密app
③蘋果的私鑰A:加密MAC的公鑰L(和其他相關文件) 加密後的公鑰L稱為證書 他和其他同樣用私鑰A加密後的文件一起構成Provisioning Profile
④蘋果的公鑰A:解密Provisioning Profile --> 解密得到的公鑰L用來繼續解密app
走在路上的煩惱
要講清楚,為什麼無法破解,那就要了解加密的基本概念。如何才能對明文進行加密,就得依賴算法和秘鑰,古典(經典)加密往往都是算法和秘鑰是合一的,比如說字母移位加密,這種算法和秘鑰都是要保密的,才能達到安全通信的目的,而且加密和解密的秘鑰都是一樣的。而這樣的加密方式,是無法滿足普遍的商業加密需求的。經過研究,現代密碼學一致認為至少符合如下兩條件的加密方式才是可普遍商用的可信的加密方式:①加密算法必須是公開的,任何人都可以通過研究公開的算法來信任或挑戰確認其安全性,確認其算法強度;②秘鑰是嚴格保密的,確保私密。也就是說,徹底改變了古典加密依賴密碼和算法都保密才能保證通信安全的情況。符合以上兩條,加密和解密秘鑰相同的叫對稱加密(典型的如des算法,加密解密效率高),加密和解密秘鑰不同的叫非對稱加密(典型的如rsa算法,一個是私鑰,一個是公鑰,公鑰加密只有私鑰能解,私鑰加密只有公鑰能解,加密解密效率低)。現在一般是綜合使用兩種加密方式,用對稱加密來加密傳輸的大量信息,用非對稱加密來傳輸對稱加密的秘鑰。蘋果手機採用的也應該是兩種的綜合,加密大量數據的對稱加密秘鑰應該是隨機生成的,然後使用非對稱加密方式保存,只有你的個人秘鑰能解密對稱加密的秘鑰。你說的蘋果加密無法破解也不是絕對的,只是在當前的計算機算力下,理論上要花上百年才能完成破解(不知解密秘鑰情況下),以後量子計算機出來可能又得設計新的算法。
時間在這
在大多數iOS應用在開發者看來,封閉的iOS系統很安全,iOS應用也很安全,但事實上,iOS應用沒有我們想象中的安全。如同安卓應用,iOS應用也面臨著被破解的威脅,存在大量盜版情況,所以開發者對此一定要重視起來,應用在上市場之前還是要多做些相關的防護,例如:
1.本地數據加密
對NSUserDefaults,sqlite存儲文件數據加密,保護帳號和關鍵信息。
2. URL編碼加密
對程序中出現的URL進行編碼加密,防止URL被靜態分析
3. 網絡傳輸數據加密
對客戶端傳輸數據提供加密方案,有效防止通過網絡接口的攔截獲取
4. 方法體,方法名高級混淆
對應用程序的方法名和方法體進行混淆,保證源碼被逆向後無法解析代碼
5. 程序結構混排加密
對應用程序邏輯結構進行打亂混排,保證源碼可讀性降到最低
心中那遙遠的天空
iOS底層是Unix內核,蘋果只是拿來在其上封裝了界面層和應用接口而已,Unix是老牌的操作系統,其安全和技術都很成熟。因而漏洞比較少,所以很難破解。蘋果封裝的iOS其實也有很多漏洞,只是因為系統封閉和沙盒機制,應用開發要審核,導致在其上的破解門檻較高。但眾多黑客其實已經掌握了一定的iOS漏洞,只是看是否有價值的收益才會動用。另外涉及到支付NFC和指紋,蘋果都是採用硬件芯片級別加密,從另一個角度來說,也是擔心iOS被破解後讀取核心隱私信息,而硬件加密是軟件破解不能解決的。