ダウンロードしたすべての*.pdf
ファイルをキャッシュに保存するiOSアプリケーションがあります。このデータが抽出されないようにする方法はありますか?暗号化か何か他のもの?前もって感謝します。
4 に答える
ファイルを暗号化する方法はたくさんありますが、誰もがそれを行うための最良の方法について意見を持っていると確信しています。
私が最近取り組んでいるプロジェクトでは、CommonCrypto(https://github.com/AlanQuatermain/aqtoolkit)を使用しています。NSDataを取得して暗号化し、ファイルに保存するだけです。その逆も同様です。NSValueTransformerをサブクラス化することで、簡単なTransformerを作成することもできます。これにより、すべての暗号化が1つの場所に抽象化され、二度と心配する必要がなくなります。
PDFファイルはパスワードで保護できます。アプリケーション内ではなく外部でPDFファイルを作成すると仮定します。たとえば、Mac OS XでPreview.appを使用して、既存のPDFファイルをパスワードで保護できます(Cmd-Pを押してから、印刷メニューで[PDF]を選択すると、セキュリティオプションを設定できます。さらに簡単に:メニューで[エクスポート...)。
iOSでは、次のようにPDFファイルを開くことができます。
CGPDFDocumentRef documentRef = CGPDFDocumentCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:filePath]);
if (!CGPDFDocumentIsUnlocked(documentRef))
CGPDFDocumentUnlockWithPassword(documentRef, password);
...
アプリがコンテンツを保存できるドキュメントフォルダは実際には2つあります。1つは抽出でき、もう1つはプライベートです。このチケットで受け入れられた回答を確認してください。
ジェイルブレイクされたデバイスでPDFファイルが抽出されないようにする場合、最も簡単なアプローチは次のようになります。
- アプリの最初の起動時にランダムな文字列を生成します
- ランダムな文字列
NSUserDefaults
を、独自のアプリのサンドボックス内の状態ファイルに保存します - このランダムな文字列を使用して、決定論的であるが理解しにくいアルゴリズムを使用して秘密鍵を作成します
- この秘密鍵を使用します。この秘密鍵はどこにも保存されませんが、常にオンデマンドで生成され、AESなどでバッファを対称的に暗号化します。
ここのソースコードはおそらく非常に役立つでしょう。