機密情報を含むSQLiteデータベースがあります。ですから、私の懸念は、iPhoneに保存して、安全でハッカーがアクセスできないようにする方法です。ipadが提供するハードウェア暗号化を調べましたが、その使用方法がわかりませんでした。ヘルプをいただければ幸いです...
3 に答える
問題を解決するために、さまざまなアプローチを検討することができます。
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 も提供しています。アプローチは目標によって異なります。
http://sqlcipher.net/(AES暗号化を使用したSQLLite)を使用できますが、これには重大な影響があります(エクスポート制限のものであり、CoreDataと統合されていません)。
データベースのパスワードで保護されたzipファイルを作成できると思います。必要なときに解凍できます。