簡體   English   中英

安全的圖像存儲Android

[英]Secure image storage Android

我正在開發一個Android 2.2應用程序,允許用戶從Web服務器購買和下載圖像。一旦他下載這些圖像,只有這個應用程序應該能夠查看這些圖像。 我能想到的一種可能的方法是加密並保存SD卡中的圖像。

但是,我擔心的是,即使加密后,這些文件也會顯示在文件資源管理器應用程序中(可以刪除/重命名/移動文件)。 是否可以將這些文件存儲在SD卡中,使其對其他應用程序不可見?

BlackBerry中有一個前向鎖定功能(http://www.blackberry.com/developers/docs/4.5.0api/net/rim/device/api/io/file/ExtendedFileConnection.html)。文件保存到sd卡使用這種方法,它只對相應的應用程序和設備可見。是否有類似於Android的東西?

將圖像存儲在sqlite數據庫中是否可取。手機中的其他應用程序看不到數據庫文件。(PS:會有大量圖像)

是否可以將圖像文件保存為.asec文件。 是否有任何api將文件轉換為.asec格式?我理解。文件瀏覽器不會顯示.asec文件。

請你指點我或建議一個理想的解決方案。

有一種解決方案可以將數據存儲在SD卡上,使得無法在非根電話上的設備文件查看器中查看文件。

解決方案是將數據保存在apps數據文件夾中,並激活清單中應用程序的自動位置選擇。 這允許用戶選擇將應用程序保存在外部或內部的位置,並且所有圖像都在應用程序擁有的私有文件夾中。

只有一個缺點。 用戶可以通過應用程序管理器刪除所有文件。 她將被警告說這可能會破壞應用程序,但如果沒有辦法重新下載圖像,如果應用程序被刪除或用戶認為刪除應用程序數據是一件好事,用戶將丟失所有購買的項目。

然而,在有根的手機上,圖像可以從私人文件夾中復制出來。 因此,您應該考慮以某種方式加密圖像。 然而,加密並不容易,因為用戶總是可以嘗試從源代碼或網絡流量中提取加密密鑰。

作為應用程序開發人員,您是用戶設備上的訪客。 用戶對設備的控制力比以往任何時候都多。 沒有地方可以隱藏加密所需的密鑰。 你被迫玩得很好,或許你正在尋找“(in)安全雖然默默無聞”。

您可以將文件存儲在數據庫中,除非數據庫大小有限制。

或者您可以將圖像存儲在一個容器中(例如,我們的SolFS虛擬文件系統)並從該容器中提取它們。 用戶仍然可以將容器復制出去。 這里的選項之一是使用某些設備ID(例如IMEI代碼)加密容器作為加密密鑰的一部分。

如果手機已經扎根,那么用戶幾乎可以做任何事情,就像魯克指出的那樣,默默無聞成為這個等式的重要組成部分。

另一種選擇是為圖像創建自定義文件格式,以便只有您的應用程序才能加載圖像數據。 同樣,您可以使用設備ID對這些文件進行加密,以將圖像“綁定”到設備。

請注意,現在知識產權(包括圖像)被許可給用戶,而不是設備。 或者至少用戶有權在他的幾個系統之間移動IP(比如不超過3個設備)。 您也可以通過使用隨機密鑰加密圖像來處理此問題,然后使用IMEI + salt為每個設備加密隨機密鑰(因此您將對隨機密鑰加密說3次)。 然后用戶可以在他的系統之間移動文件。 當然,這不是讓用戶在他的設備之間移動文件的唯一方法。

您可以將圖片包裝到一個文件中,然后將其加密並對其他程序無用,然后在您的應用程序中解密圖像文件並顯示它。 其他技術在存儲在SD上時插入水印,然后在程序中顯示時刪除水印。

您可以加密圖像文件,然后將它們保存在SD卡中。 這不會阻止用戶定位/復制/刪除文件。 您可以使用File類並使用File.setReadOnly()但我認為它需要root訪問權限。 在任何情況下,用戶都將擁有與您的應用相同的權限。

最安全的方法是創建一個完整的在線查看器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM