2010-08-24 113 views
53

我們希望使用iPhone上的證書來驗證MS Exchange Sync。我們不確定如何實施安全概念來保護這些證書。iOS鑰匙扣安全

例如如果沒有啓用ScreenLock,是否有可能在iPhone上獲得「完整」鑰匙串訪問權限? (或使用Jailbroken iPhone)。

有沒有人有關於此的一些鏈接?

+1

這個問題適用於http://security.stackexchange.com – 2011-03-02 10:29:13

+8

不過,與我們所有iOS開發人員頻繁堆棧溢出非常相關。也許我們都應該更頻繁地訪問security.stackexchange.com? :) – 2012-06-14 19:10:54

回答

2

我可以回答你的問題的一部分,但由於其他部分仍然是未知的,我現在投票的問題,因爲我也渴望知道答案。

我可以回答的部分是:'如果沒有啓用屏幕鎖定,應用程序是否可以獲得完整的鑰匙串訪問權限'。不,每個應用程序在iphone上都有自己的鑰匙串區域,這意味着應用程序只能訪問自己的祕密。這些祕密並未針對應用本身進行鎖定,因此無法隱藏應用本身的鑰匙串條目。所以總結一下:一個應用程序可以讀取自己的條目,沒有其他條目。

我有興趣知道,但是在越獄設備上會發生什麼。一旦設備發生越獄,所有應用程序的鑰匙鏈是否都會暴露?

4

通常,鑰匙串是推薦的方式來存儲這樣的證書。但是,已經發現越獄可以用來繞過鑰匙鏈的安全性(article)。

+3

我的理解是,只有具有特定保護等級的鑰匙鏈項目才能使用所描述的技術進行訪問。這些類是'kSecAttrAccessibleAlways'和'kSecAttrAccessibleAlwaysThisDeviceOnly'。有關詳細信息,請參閱http://forum.agile.ws/index.php?/topic/2003-security-question-ios-keychain/page__view__findpost__p__20369。 – 2011-03-08 09:58:56

+0

是的,該文章只是確認您不應該存儲具有屬性kSecAttrAccessibleAlways的敏感項目,請參閱http://developer.apple.com/library/ios/#DOCUMENTATION/Security/Reference/keychainservices/Reference/reference.html – gheese 2013-01-21 14:30:08

45

弗勞恩霍夫協會在iOS鑰匙扣安全研究:

據我所知,iOS鑰匙扣使用兩種加密級別。第一級使用鎖屏密碼作爲加密密鑰。第二級使用由設備生成並存儲在設備上的密鑰。

弗勞恩霍夫研究人員已經想出瞭如何繞過第二層。由於加密密鑰存儲在設備上,因此這是「容易」的級別。因此,在iOS4上,它們的方法僅適用於不使用kSecAttrAccessibleWhenUnlocked或kSecAttrAccessibleWhenUnlockedThisDeviceOnly的密鑰鏈條目,因爲這些條目駐留在第一級解密的內存中 - 即使手機已鎖定。

  • 從iOS 4的開始,與kSecAttrAccessibleWhenUnlocked和kSecAttrAccessibleWhenUnlockedThisDeviceOnly密鑰由加密
  • 額外水平在iOS 3保護。x和更早版本,所有的鍵可以使用夫琅和費的方法進行解密,無論可訪問性屬性的使用
  • 設備根本不需要做任何通行碼仍然是脆弱
  • 設備與弱口令代碼(小於六位數字)仍然將是比較容易受到

≈50ms每密碼試試; →≈20次/秒;對於基數爲36的6位字母數字 代碼,猜測正確的密碼的50% →≈1.7年。標準簡單代碼4位數字 將在不到9分鐘內被強制強制。在此基礎上 在iOS的錯誤嘗試計數器可以被繞過,因爲它不是 基於硬件的

蘋果公司在WWDC 2010,核心操作系統,會話209「保護應用程序數據」,幻燈片24

假設

底線: 如果您必須存儲敏感數據,最好使用自己的加密。並且不要將密鑰存儲在設備上。

編輯: 有許多news articles其中援引德國弗勞恩霍夫研究和安撫他們的讀者不要着急,除非他們的設備被盜,因爲這種攻擊只能對設備的物理訪問來完成。

我有點懷疑。研究人員通過物理訪問手機進行測試似乎只是簡化問題的一種方式,而不是一種限制。這是他們的,他們沒有解密鑰匙串項是怎麼樣描述:

使用越獄工具,以訪問命令shell後,我們 運行一個小腳本訪問和解密在 發現密碼鑰匙扣。解密是通過操作系統自身提供的功能 來完成的。

至於誰使用jailbreak.me的人都知道,越獄不需要物理訪問設備。從理論上來說應該是微不足道的修改jailbreak.me代碼,並將它自動執行以下操作:

  1. 執行越獄爲正常(這一切需要的是爲用戶打開一個惡意製作的PDF)
  2. 運行弗勞恩霍夫的腳本越獄完成後
  3. 發送密碼在網絡上的位置,攻擊者可以從

所以再次閱讀,謹慎看待你放什麼在鑰匙串。

+0

物理訪問該設備是必需的,因爲有一個密鑰存儲在主板上的某個地方,根本無法通過任何方式進行訪問或讀取。該密鑰對每個製造的iOS設備都是唯一的,這意味着*只有該特定設備*才能夠解密設備的數據。因此,物理訪問需要解密,因爲您必須實際指示設備解密。以任何其他方式解密設備實際上是不可能的(例如,數十億年的強力攻擊)。這不適用於未使用設備上密鑰進行加密的備份 – 2012-04-08 07:05:35

+1

@AbhiBeckert:我認爲您誤解了物理訪問的含義。這篇新聞報道說:「這次攻擊,需要擁有電話...」。但事實上,沒有任何理由說明爲什麼在設備上運行的遠程攻擊**不能做同樣的事情。 – pepsi 2012-04-08 14:38:45

+0

遠程代碼利用(不可能在完全打過補丁的手機上)仍然以與被攻擊的應用程序相同的權限運行,並且所有應用程序都在沙箱中運行 - 操作系統專門爲其創建的單個目錄之外的文件無法讀取訪問權限(空默認)。對於遠程代碼利用來獲得任意文件系統訪問權限,將需要一個植根電話(整個生根點)或特權升級漏洞的用戶。再一次,如果你使用補丁,你很安全。兩個零日漏洞是一段時間。沒有監獄破壞,只有USB允許完整的文件系統訪問。 – 2012-04-08 21:46:55