6

読み取り専用データベースが事前設定された Core Data ベースの iPhone アプリがあります。著作権侵害の可能性を減らすためにデータベースにどのような保護を適用できますか (ある場合)、ジェイルブレイクされた iPhone からデータベースが読み取られますか?

事前入力された sqlite データベースを使用するためのほとんどのコード例は、データベースがアプリ バンドルから iPhone 上のアプリのドキュメント ディレクトリにコピーされることを示しており、これはジェイルブレイクされた iPhone で完全に表示されます。代わりに、次のようにアプリ バンドルからデータベースを直接使用することを考えました。

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {

    if (persistentStoreCoordinator != nil) {
        return persistentStoreCoordinator;
    }

    NSURL *storeUrl = [NSURL fileURLWithPath: 
        [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
             @"MyDatabaseName.sqlite"]];

    <... followed by standard persistentStoreCoordinator code ...>

ストアの URL にブレークポイントを設定すると、別のファイルの場所が返されます。これは、ジェイルブレイクされた iPhone のドキュメント ディレクトリと同じように見えると思います。

<CFURL 0x139610 [0x38388ff4]>{type = 15, string = file://localhost/var/mobile/Applications/6ACD76F0-396D-4DB1-A46B-B2459A084063/MyiPhoneApp.app/MyDatabaseName.sqlite, base = (null)}

上記が正しいかどうか、および/またはこの問題に対処する他の方法があるかどうかを誰かが確認できますか (私は暗号化などを検討していません...迅速な保護ソリューションを望んでいます) ? 断固たるハッカーが彼らの望むものを手に入れることに感謝します -- できることなら、少なくとも抵抗を示したいと思います。

ありがとう

4

2 に答える 2

9

まず、はい、アプリバンドル内に読み取り専用データベースを保存し、そこから直接アクセスできます。

次に、データを保護する唯一の方法は、データをディスク上で暗号化し、メモリ内で暗号化しないようにすることです。これは、現在の形式のCoreDataを使用して簡単に行うことはできません。あなたができることは、データベースの特定の列を暗号化し、それらをメモリ内でのみ復号化することです。これは、列をバイナリデータとして保存することで実現されますが、これらの列を検索できないことも意味します。

アップデート

ジェイルブレイクされた電話を避けようとしても(これは、その人が犯罪者であることを100%保証するものではありません。開発者は正直な理由で頻繁に電話をジェイルブレイクすることに注意してください)。データは保護されません。データはデスクトップコンピューターのzipファイル内にあり、実行したり、CocoaTouchデバイスに触れたりすることなくアクセスできます。

データがそのプライベートである場合は、それをWebサービスに配置し、デバイスに保存しないようにする必要があります。 デバイス上のすべてのもの(またはそのことについては任意のデバイス)にアクセスでき、リバースエンジニアリングの対象となります。

于 2010-05-18T15:41:14.580 に答える
2

これを試すことができます: https://github.com/calebmdavenport/encrypted-core-data 開発の初期段階に見えますが、単純なデータ モデルがあれば動作させることができるかもしれません。sqlcipher を使用します。

Encryption Transformer クラスを試すこともできます。述語を壊すことができます。nspredicates を使用し、セキュリティの必要性に応じて、相対的なアルファベット順を保持する暗号化アルゴリズムを選択できます (必要に応じて自分で作成してください)。これにより、述語を使用できるようになります。 このページの下部では、コード サンプルを使用してその方法を説明しています (ただし、述語が壊れているため、適切な暗号化アルゴリズムを見つける必要があります): http://blog.artlogic.com/tag/encryption/データベース全体。

脱獄を停止/検出しても、何も停止しません。ジェイルブレイクや特別なことをしなくても、Finder で Mac のアプリ パッケージ ファイルを開くことができます。itunes に同期すると、アプリの .ipa ファイルが取り出されるので、そのファイルに移動して開くだけで、アプリのパッケージ データを取得できます。

于 2012-11-28T17:47:53.523 に答える