2012-07-23 83 views
1

因此,當我對如何存儲加密密鑰感到困惑時,我正在開始在iPhone應用程序上實現AES加密數據。我可以使用用戶輸入的密碼(加密密鑰)輕鬆加密數據。但是,如果我將密鑰存儲在未加密的密鑰中,那麼加密是無用的,因爲具有訪問權限的任何人都可以使用容易獲得的加密密鑰輕鬆解密數據。我可以對密鑰進行加密,但是隨後會有另一個未加密的密鑰在附近浮現,並且有人可能只是沿着鏈條向下傳輸數據。看起來很清楚,我不能存儲密鑰,所以我認爲我只能在用戶的腦海中才能擁有密鑰。這將是非常安全的,但我無法檢查解密是否正常工作,並且在用戶忘記密碼的情況下所有數據都將丟失,這是不可接受的。如何在iPhone上安全地存儲AES密鑰

本質上,我該如何安全地存儲AES加密密鑰?

我確定這種情況之前曾經遇到過,就像其他問題所顯示的那樣,但它們似乎是以網絡爲中心的。我對以iPhone爲中心的解決方案感興趣,可能使用CommonCrypto?

回答

1

正如你所說,不要存儲密碼。您仍然可以單獨存儲密碼的散列,並對其進行測試以查看它是否是正確的密碼。

+0

感謝您的回答。如果用戶忘記密碼呢? – Regan 2012-07-24 22:45:03

+0

@Regan,他們將不得不刪除應用程序數據並重新開始。我認爲這是標準功能。如果您在iPhone上忘記了密碼(解鎖PIN),您知道您的選擇是什麼嗎?重置手機。你失去了任何未同步/保存在別處的東西。對於系統,您忘記密碼與不知道密碼的攻擊者相同。你在加密什麼?你能否在服務器上存儲副本? – 2012-07-25 13:23:08

1

也許你有興趣在Keychain保存此作爲一個通用的服務? Keychain服務有一個很好的Objective-C包裝,叫做SSKeychain

相關問題