2013-09-26 45 views
8

我正在加密下載的文件,並將它們保存在應用程序的文檔目錄中。存儲解密文件的位置?

讀他們必須解密這些文件和臨時存儲一些地方。

我的擔憂是:

1.如果我在doc目錄中存放,以時間,他們正在使用,該時間窗口可以得到使用工具,如IEXPLORER這些文件。

2.我的想法是將它們存儲在內存中,以便使用它們,並在使用後沖洗保管庫。 這個選項適用於小文件,但對於大文件來說,50 MB或100 MB的視頻,恐怕應用程序會收到內存警告,結果會突然終止。

我想知道這樣做的最佳方法。

+2

以任何方式將文件拆分成塊,以便您可以將一個加密塊讀入內存,並在那裏解密它? –

+0

這可能是一個選項,但這不是一件容易的工作,對於某些文件在其頁腳存儲元數據或單擊PDF頁面上的鏈接時,這無濟於事。您需要研究每種文件類型的文件結構以及讀取它們的機制。 –

+0

這個問題沒有完美的解決方案,但是即時解密是最安全的。有些方法可以在顯示時即時解密視頻,例如(雖然我不能很好地解釋它們)。 –

回答

-1

對它們進行解密,使用玩具算法對它們進行模糊處理(例如,使用常量塊的XOR),並將它們存儲在文檔中。在需要時加載和解密。

由於這個問題在理論上沒有解決方案(一個足夠確定的攻擊者可以讀取你的進程內存),它和任何解決方案一樣好。

+0

對於大多數文件格式,將數據與「常量塊」異或並不安全。 – duskwuff

+0

沒有什麼安全的是應用程序能夠解密文件。這更像是混淆。 –

0

保存之前分裂您的文件轉換成更小的尺寸,然後解密的負擔。

後來編輯:我注意到這是在評論中提到。我同意分割文件不是世界上最簡單的事情,但大概你只需要這個視頻。大約100MB是很多文字或音頻。如果您的PDF文件的權重很大,那麼可能是掃描的文本,並且您可以將其更改爲一系列圖像。

是的,分裂更好的進行服務器端的,不希望在視頻處理用戶廢舊電池。

+0

我不確定這是否可以使用iOS sdk完成,因爲當媒體文件提供給AVPlayer或MPMoviePlayerController時,首先他們處理整個文件以瞭解其元數據。隨着大塊的字節,我將如何知道需要特定的塊並在兩者之間進行解密。 –

+1

這不是微不足道的,但這是你的服務器更適合做的事情:分割文件,並提供有關塊偏移的信息。 –

+0

感謝您的建議ilya n –

1

還有沒有完美的安全存儲本地文件在安全的方式。如果一個人可以完全訪問該設備,只要您的應用程序能夠解密該文件,他總能找到解密文件的方法。

唯一的問題是:解密文件需要多少努力?

如果您唯一擔心的是一個人可能會使用iExplorer複製並打開這些文件,那麼簡單的本地對稱加密就可以解決這個問題。

只需在您的應用程序中嵌入一個隨機對稱密鑰,並在您下載時逐塊加密數據。

您可以使用舒適的「安全變換」框架做對稱加密。 Apple Documentation中有一些很好的例子。

當加載文件時,您可以使用相同的密鑰進行解密,而你從文件系統加載它們。

只是爲了說清楚:這不是一個完美的保護的文件。但要解密這些文件,可以訪問您的應用程序二進制文件。在調試器中分析此二進制文件並搜索解密部分以提取對稱密鑰。這是解密文件所需的很多努力。