0

我正在開發安全的SMS消息應用程序,並且所有數據都使用從RSA密鑰派生的AES密鑰進行加密。我想讓應用程序密碼受到保護,因此這些密碼密碼受到保護,因此,即使設備根深蒂固等,也不可能在沒有密碼的情況下提取密鑰。因此,我計劃讓用戶在應用程序啓動時輸入密碼/恢復,如果密碼正確,提取密鑰,存儲在內存中,使用密鑰;當應用程序關閉/銷燬時,請刪除密鑰。在Android應用程序中使RSA/AES密鑰密碼受保護的最佳做法

我以爲使用密鑰庫,但不明白它是多麼安全。

它用https://developer.android.com/training/articles/keystore.html在於: 如果某個應用的過程被破壞,攻擊者可能能夠使用該應用的密鑰,但不能夠提取他們的密鑰材料(例如,要在Android設備外使用)。 和 如果Android操作系統被破壞或攻擊者可以讀取設備的內部存儲,攻擊者可能能夠使用Android設備上的任何應用程序的Android密鑰存儲鍵,但不能從該裝置提取它們。

這是什麼意思?

什麼是正確和安全的方式來解決我的問題?

回答

1

簡而言之,Keystore允許您的應用程序像黑匣子一樣對待加密和解密;您的應用程序可以指定操作,算法,甚至是密鑰ID,但不能觀察或干擾操作本身。這可以防止攻擊者(即使是控制應用程序的攻擊者)竊取您的密鑰;它們可以在設備上執行任意加密/解密,但不能看到正在使用的實際密鑰。當然,足夠的資金充裕和積極進取的攻擊者能夠最終提取密鑰,但是你的用戶是不太可能面對這樣的攻擊,除非他們已經提出了一個相當規模的政府的憤怒。

在您的情況,您存儲在鑰匙串鑰匙將減輕大多數攻擊者,甚至那些直接訪問設備,竊取你的應用程序使用的密鑰的風險的有效途徑。它比將文件存儲在文件系統中或對其進行硬編碼更安全。對於你描述的場景,它應該綽綽有餘。

+0

謝謝。我可以使用密碼加密密鑰庫嗎(與解鎖密碼不同)? – Mykolas777

+0

據我所知,你不能。 –