2

機密情報を含むSQLiteデータベースがあります。ですから、私の懸念は、iPhoneに保存して、安全でハッカーがアクセスできないようにする方法です。ipadが提供するハードウェア暗号化を調べましたが、その使用方法がわかりませんでした。ヘルプをいただければ幸いです...

4

3 に答える 3

2

問題を解決するために、さまざまなアプローチを検討することができます。

  • md5 + salt 暗号化を使用して CoreData に保存されている値を暗号化します。ユーザーデバイスの UUID と、データを保存するための追加の「ソルト」に基づいて、特別なキーを生成できます。注意してください。Apple は将来、デバイスの個人設定の値を減価償却する予定です。しかし一方で、ユーザー認証によって特別なキーを受け取り、このキーをポスト リクエストから受け取ることもできます。暗号化には、組み込みのフレームワークを使用できます: #import <CommonCrypto/CommonDigest.h>. ウェブ上で見つけることができる多くの例があります。

  • ドキュメントフォルダー内の sqlite ファイル全体を暗号化します。これは非常にトリッキーで、これまでこのアプローチに直面したことがありませんでした。

編集: これは、md5 データで暗号化された受信に使用できるコード サンプルです: これは .h ファイルです

#import <Foundation/Foundation.h>

@interface NSString (MyExtensions)
- (NSString *) md5;
@end

@interface NSData (MyExtensions)
- (NSString *)md5;
@end

これは .m ファイルです:

#import "MyExtensions.h" //here should be your .h file name
#import <CommonCrypto/CommonDigest.h> // Need to import for CC_MD5 access

@implementation NSString (MyExtensions)
- (NSString *) md5
{
    const char *cStr = [self UTF8String];
    unsigned char result[16];
    CC_MD5( cStr, strlen(cStr), result ); // This is the md5 call
    return [NSString stringWithFormat:
            @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
            result[0], result[1], result[2], result[3], 
            result[4], result[5], result[6], result[7],
            result[8], result[9], result[10], result[11],
            result[12], result[13], result[14], result[15]
            ];  
}
@end

@implementation NSData (MyExtensions)
- (NSString *)md5
{
    unsigned char result[16];
    CC_MD5( self.bytes, self.length, result ); // This is the md5 call
    return [NSString stringWithFormat:
            @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
            result[0], result[1], result[2], result[3], 
            result[4], result[5], result[6], result[7],
            result[8], result[9], result[10], result[11],
            result[12], result[13], result[14], result[15]
            ];  
}
@end

したがって、このファイルをコードの任意の場所に含める場合は、この関数を呼び出すだけです。

NSString *myStringToEncrypt = @"Confidential information";
NSString *myMD5 = [myStringToEncrypt md5];

ところで、 MD5関数は単なるハッシュ関数であり、データの合計を制御することを知っておく必要があります。を暗号化したい場合は、 AES256暗号化方式を見ることができます。CommonCrypto も提供しています。アプローチは目標によって異なります。

于 2012-03-02T08:41:21.047 に答える
1

http://sqlcipher.net/(AES暗号化を使用したSQLLite)を使用できますが、これには重大な影響があります(エクスポート制限のものであり、CoreDataと統合されていません)。

于 2012-03-02T10:21:17.730 に答える
0

データベースのパスワードで保護されたzipファイルを作成できると思います。必要なときに解凍できます。

于 2012-03-02T08:56:38.010 に答える