iPhoneアプリバンドルでHTMLコードを暗号化および圧縮し、最初の起動時に解凍します

StackOverflow https://stackoverflow.com/questions/612728

質問

私のクライアントは、IPを保護するために、iPhoneバンドル内の医療書のHTMLコードを暗号化/圧縮したいと考えています。

このファイルをアプリバンドル用に準備する良い方法は何ですか?また、アプリの最初の起動時にどの補完ライブラリ(C、Obj-C)を使用して復号化と解凍を行う必要がありますか?

ファイルを〜/ Documentsにコピーしてから作業するのが最良の解決策のようです。思考?

役に立ちましたか?

解決

ここにいくつかの考えがあります。

書籍のテキストがすべて英数字データの場合、データをASCIIとして保存しないでください-独自のバイナリエンコード形式で保存します(たとえば、8ではなく5ビットを使用して単語にパックします)。これにより、少しの圧縮、わずかな難読化、非常に安価な(クロックサイクルでの)圧縮解除が可能になります。その場ですぐにアクセスでき、カジュアルな好奇心の強いハッカーをテキストから除外するデータ形式があります。クロックサイクルが私の最大の関心事であり、セキュリティが2番目です。

別のアイデアは、典型的なBlowfish暗号化の解読キーを難読化された形式でアプリに保存することです。たとえば、復元するために何らかの奇妙な操作を必要とする2つまたは3つの定数に分割します。しかし、もちろん、今ではBlowfishのオーバーヘッドなどが心配になります。

完全なセキュリティを実装することはできないため(完全性は非常に高価です)、IP所有者は従来の著作権および企業秘密の手法を使用して財産を完全に保護する必要があります。あなたはハッキングを難しくしましたが、図書館の予約セクションの棚にある本だけで、まだ熱心なのは弁護士次第です(コピーはご遠慮ください!)。

乾杯

他のヒント

これは非常に注意が必要です...本当に壊れないようにすることはほとんど不可能です。合理的にやる気のある人は、それを突き通すことができます。少し難しくするだけです。いずれの場合でも、バンドル自体に秘密鍵を保存することは絶対にできません。サーバーから安全なチャネルを介して復号化キーを安全に取得し、必要に応じて使用する必要があります。それでも、ジェイルブレイクをしている人は、実行中のプログラムでGDBを実行し、RAM内の秘密キーを抽出できます。秘密キーは、アプリのすべてのユーザー間で共有されます。 、設計上本質的に欠陥があります...オフラインアクセスが必要でない限り、必要に応じて安全なサーバーからデータをプルしたい場合があります。少なくとも、「できました」。スロットル情報漏洩...

私があなただったらドキュメントを暗号化し、必要に応じて復号化するだけです。ジェイルブレイクされたデバイスで復号化されたドキュメントに簡単にアクセスできます。

「セキュリティの概要」を参照してください。ドキュメントと暗号化技術のCryptoExerciseサンプルコード

おそらく気に入らないでしょうが、最良の方法はHTMLを使用しないことです。復号化されたHTMLをUIWebViewに渡すと、悪意のあるユーザーがそのレベルでそれを盗むことは非常に簡単になり、暗号化アルゴリズムの目的を無効にします。カスタム描画コードとカスタム暗号化されたバッキング形式を持つUIViewサブクラスは、回避するのがはるかに難しくなります

Mac OSからXおよびiPhone OSセキュリティサービス

  

キーチェーンサービスを使用して、   少量の暗号化と保存   データ(キーチェーンサービスリファレンスを参照)   およびキーチェーンサービスプログラミング   ガイド)。暗号化または   Macで大量のデータを復号化する   OS X、共通セキュリティを使用できます   サービスマネージャー(CSSM)暗号化   サービスマネージャー。このマネージャーも   作成および検証する機能があります   デジタル署名、生成   暗号化キー、および作成   暗号化ハッシュ。 iPhone OSでは、   証明書、キー、および信頼   サービスAPIは以下の機能を提供します   暗号化キーの生成、作成   デジタル署名の検証   データブロックの暗号化。見る   証明書、キー、および信頼サービス   リファレンス

パフォーマンス(暗号化は無料ではありません)とセキュリティ(実際にはセキュリティとその他すべて)の間の選択です。しかし、他に新しいものは何ですか?個々のファイルを十分に小さくしておけば、復号化によってそれほど遅くなることはないでしょう。あるいは、予測復号化を検討して、特定のファイルがバックグラウンドで復号化されるようにすることもできます。たとえば、現在表示されているファイルからリンクされているファイルなどです。ライセンスの現金を落としていないので)。また、本当に必要なファイルのみを暗号化することで、パフォーマンスの向上を実現できます。コンテンツのインデックス/テーブルまたは他の頻繁にアクセスされるファイルは本当に暗号化する必要がありますか?これは、クライアントが心配しているIPとしてカウントされますか?

圧縮には、QuickLZ(私が見た最速のエンジン、優れた圧縮率)をお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top