クライアントは、IP を保護するために、iPhone バンドル内の医療書籍の HTML コードを暗号化/圧縮したいと考えています。
アプリ バンドル用にこのファイルを準備する適切な方法は何ですか? また、アプリの最初の起動時に復号化と解凍を行うには、どの補助ライブラリ (C、Obj-C) を使用する必要がありますか?
ファイルを ~/Documents にコピーしてから作業するのが最善の解決策のようです。考え?
クライアントは、IP を保護するために、iPhone バンドル内の医療書籍の HTML コードを暗号化/圧縮したいと考えています。
アプリ バンドル用にこのファイルを準備する適切な方法は何ですか? また、アプリの最初の起動時に復号化と解凍を行うには、どの補助ライブラリ (C、Obj-C) を使用する必要がありますか?
ファイルを ~/Documents にコピーしてから作業するのが最善の解決策のようです。考え?
ここにいくつかの考えがあります。
書籍のテキストがすべて英数字データである場合は、データをASCIIとして保存しないでください。独自のバイナリエンコード形式で保存してください(たとえば、8ビットではなく5ビットを使用して単語にパックします)。これにより、少しの圧縮、わずかな難読化、および非常に安価な(クロックサイクルでの)解凍が可能になります。その場ですばやくアクセスできるデータ形式があり、カジュアルな好奇心旺盛なハッカーをテキストから遠ざけることができます。クロックサイクルが私の主な関心事であり、セキュリティが2番目です。
もう1つのアイデアは、一般的なBlowfish暗号化の復号化キーを難読化された形式でアプリに保存することです。たとえば、復元するために奇妙な操作を必要とする2つまたは3つの定数に分割します。しかしもちろん、Blowfishのオーバーヘッドなどが気になります。
完全なセキュリティを実装することはできないため(完全には非常に費用がかかります)、IP所有者は、従来の著作権および企業秘密の手法を使用して、所有物を完全に保護する必要があります。あなたはハッキングを難しくしましたが、それでも勤勉であるかどうかは弁護士次第です。図書館の予約されたセクションの棚にある本だけです(コピーはご遠慮ください!)。
乾杯
これは非常にトリッキーです...本当に壊れないようにすることはほとんど不可能です。合理的な動機を持つ人なら誰でも、それを突き抜けることができます。少し難しくするだけです。いずれにせよ、バンドル自体に秘密鍵を保存することは絶対にできません。サーバーから安全なチャネルを介して復号化キーを安全に取得し、必要に応じて使用する必要があります。それでも、脱獄を行っている誰かがおそらく実行中のプログラムで GDB を実行し、RAM で秘密鍵を抽出することができます + 秘密鍵はアプリのすべてのユーザー間で共有されます...あなたは本質的に DRM スキームを実装しようとしています、これは設計上本質的に欠陥があります...オフラインアクセスが必要でない限り、必要に応じて安全なサーバーからデータを取得することをお勧めします...少なくとも、情報漏洩を「抑制する」ことができます...
Mac OSXおよびiPhoneOSセキュリティサービスから:
キーチェーンサービスを使用して、少量のデータを暗号化して保存できます(キーチェーンサービスリファレンス およびキーチェーンサービスプログラミングガイドを参照)。Mac OS Xで大量のデータを暗号化または復号化する場合は、Common Security Services Manager(CSSM)CryptographicServicesManagerを使用できます。このマネージャーには、デジタル署名の作成と検証、暗号化キーの生成、および暗号化ハッシュの作成を行う機能もあります。iPhone OSでは、Certificate、Key、and Trust Services APIは、暗号化キーの生成、デジタル署名の作成と検証、およびデータのブロックの暗号化のための機能を提供します。証明書、キー、および信頼サービスのリファレンスを参照して ください。
それは常にパフォーマンス(暗号化は無料ではありません)とセキュリティ(セキュリティと他のすべて、本当に)の間の選択です。しかし、他に何が新しいのでしょうか?個々のファイルを十分に小さくしておけば、復号化によってそれほど遅くなることはないかもしれません。または、特定のファイルをバックグラウンドで復号化するような予測復号化を検討することもできます。たとえば、現在表示されているファイルからリンクされているファイルなどです。ただし、iPhoneでの同時実行はかなりむらがある可能性があります(わかりません)。ライセンスのために現金を落としていなかったので)。また、本当に必要なファイルを暗号化するだけでパフォーマンスの向上を実現できます。索引/目次または他の頻繁にアクセスされるファイルは本当に暗号化する必要がありますか?それはあなたのクライアントが心配しているIPとしてカウントされますか?
圧縮については、QuickLZ (私が見た最速のエンジン、優れた圧縮率) をお勧めします。
私があなたなら、文書を暗号化しておき、必要に応じて復号化します。ジェイルブレイクされたデバイスで復号化されたドキュメントに簡単にアクセスできます。
暗号化技術については、「セキュリティの概要」ドキュメントと CryptoExercise サンプル コードを参照してください。