私はいくつかのデータをAESで暗号化する必要があるプロジェクトを持っています。しかし、私はハードコードこのような私のプロジェクトでのAESキー:誰かが私はハードコードされたAESの鍵を見つけるために私のバイナリをハックしたい場合iOS:コードでAESキーをハードコードするのは安全ですか?
NSString *passwd = @"someStringAsKey";
NSData *encryptedData = [Encrypter encrypteData:unencryptedData];
、それは簡単なことだろうか?そうであれば、AESキーを保存するにはどうすればよいでしょうか?
EDIT: キーはデータのチャンクの暗号化と復号化に使用され、アプリがサーバーからデータをダウンロードして、アプリはそれを暗号化し、ディスク上の暗号化データを保存します。 このキーはデバイス単位で使用されます。つまり、アプリケーションが実行されるたびに、キーを生成する方法を知っている限り、すべてのデバイスが独自のキーを持つことができます。
EDIT2: データのダウンロード手順は、この方法で保護されています。クライアントは、ランダムな公開鍵/秘密鍵のペアにそれがログインするたびに生成します。公開鍵をサーバに送信し、サーバは公開鍵を使用してAES鍵を暗号化し、暗号化されたAES鍵をクライアントに送信します。クライアントはAESキーを解読し、メモリに格納します。クライアントとサーバーは、そのAESキーで暗号化されたデータを転送します。
私はハッカーによって復号化されないために、ディスク上のデータを保護することを目的としたんです。私はハッカーが得ることができるのは私のバイナリイメージとディスク上のデータであると仮定します。また、ハッカーは、自分のデバイスで私のアプリを実行し、メモリを分析することができます。
私はこの種の攻撃を防御する必要はありません。ハッカーはスマートで、ウイルスがジェイルブレイクされたデバイス上で実行され、ウィルスは自分のアプリの実行中のメモリを分析してメモリ内のキーを検索できます。だから私たちはネットワーク輸送の安全性について心配する必要はありません。
を?それはその一生の間、その装置にとどまっていますか?そうであれば、最初の実行時にキーを生成して何らかの形でそれを保存することで得ることができます。誰かがアプリをハッキングしても、自分が管理しているキーは自分のデバイスでのみ役立ちます。 – cHao
@cHao質問を編集しました。ありがとうございます。 – CarmeloS