一部のデータをAESで暗号化する必要があるプロジェクトがあります。ただし、プロジェクトでAESキーを次のようにハードコーディングします。
NSString *passwd = @"someStringAsKey";
NSData *encryptedData = [Encrypter encrypteData:unencryptedData];
誰かが私のバイナリをハックして、ハードコーディングしたAESキーを見つけたい場合、それは簡単でしょうか?もしそうなら、AESキーを保存するためのより良い方法は何ですか?
編集: キーは、データのチャンクを暗号化および復号化し、サーバーからデータをアプリでダウンロードしてから、アプリで暗号化して暗号化されたデータをディスクに保存するために使用されます。このキーはデバイスごとに使用されます。つまり、アプリが実行されるたびにキーを生成する方法を知っている限り、すべてのデバイスが独自のキーを持つことができます。
EDIT2: データのダウンロード手順は次のように保護されています。クライアントはログインするたびにランダムな秘密鍵と公開鍵のペアを生成します。公開鍵をサーバーに送信し、サーバーは公開鍵を使用してAES鍵を暗号化してから、暗号化されたAES鍵をクライアントに送信します。クライアントはAESキーを復号化し、メモリに配置します。次に、クライアントとサーバーは、そのAESキーで暗号化されたデータを転送します。
私は、ディスク上のデータをハッカーによって復号化されないように保護することを目的としています。ハッカーが取得できるのは、ディスク上のバイナリイメージとデータだと思います。また、ハッカーは自分のデバイスで私のアプリを実行し、メモリを分析することができます。
この種の攻撃を保護する必要はありません。ハッカーは非常に賢いので、ジェイルブレイクされたデバイスでウイルスが実行され、ウイルスはアプリの実行中のメモリを分析してメモリ内のキーを検索できます。したがって、ネットワーク転送の安全性について心配する必要はありません。