2013-02-13 114 views
1

Android應用程序SQLCipher的工作原理是什麼? http://sqlcipher.net/design/SQLCipher安全性

據我所知,這一切都取決於PRAGMA鍵,這個鍵應保存在應用程序,可能是二進制。

但是,這是不安全的,因爲每個人都可以反編譯根植手機上的.apk文件。 也許我錯過了什麼?

謝謝。

回答

1

是的,保護鑰匙是棘手的部分。理想情況下,它(部分)由用戶在登錄應用時輸入的密碼提供,但這並不總是理想的,所以有時您不得不求助於「晦澀的安全性」方法,並將密鑰從位和碎片藏在這裏和那裏。

+0

那麼我發佈了沒有100%安全的解決方案來保存敏感數據。我不能讓用戶輸入密鑰,因爲我想隱藏用戶自己的數據。感謝您的時間。 – Streetboy 2013-02-14 10:08:10

2

據我所知,這一切都取決於PRAGMA鍵,這個鍵應保存在應用程序,可能是二進制。

也許我錯過了什麼?

的關鍵來自於用戶,在用戶類型。在SQLCipher爲Android,這個密碼被傳遞到對SQLiteOpenHelper修訂版一樣getReadableDatabase()方法密碼的形式。

1

SQLCipher團隊普遍建議不要在應用程序二進制文件中嵌入固定鍵。無論應用程序如何使嵌入式密鑰模糊不清,充分確定的攻擊者都可以從應用程序包中提取它並打開數據庫。

不幸的是,一些應用程序仍然選擇使用帶嵌入式密鑰的SQLCipher作爲DRM的基本形式,即使臨時用戶難以查看數據。但是,這不提供任何實質性的安全性。

如果您需要保護敏感數據,最佳方法是使用由用戶輸入的強密碼導出的密鑰。 SQLCipher自動提供強大的密鑰派生,因此您只需通過PRAGMA密鑰或SQLCipher包裝器庫中提供的一種等效密鑰機制來提供用戶密碼。

0

我生成密鑰表單secureRandom,然後將密鑰存儲在KeyStore(BKS)上。 對於KeyStore,我使用隨機,用戶信息,設備信息和密碼生成密碼。