2012-05-10 18 views
5

私のiOS4 +アプリでは、いくつかの場所でAES暗号化を使用しており、アプリ全体が非常に安全でなければなりません。これを行うために私は何かを暗号化する必要があるときランダムに選択されるこのアプリでいくつかのキーをハードコードする必要があります...iOSで暗号化キーを保存する安全な方法

私の質問はどのようにこれらの秘密鍵を保存するのですか? NSStringを使用してハードコードするのは安全ですか?または

#define SecretKeyString @"febd9a24d8b65c1c787d50a4ed3619a9" 

このアプリがインストールされているiPhoneを脱獄すると、そのハードコードされたキーを取得できませんでしたか?どうすればそれらを最も効果的に隠すことができますか?何他のアプリのいずれかの提案を

おかげで...

答えて

4

は、彼らはアプリを使用することができます前に、「ログイン」するようにユーザーに要求しています。その後、ユーザーID /パスワードをキーとして使用して暗号化したり、セキュリティ保護されたWebサービスを使用してそのユーザーのキーを取得したりします。

#defineまたはNSStringを使用する場合は、キーを推測する方法があります。明らかに、コンパイルされたコードでそれらのキーを見つけるのに多くの時間を費やすことは本当に必要ですが、あなたが探しているセキュリティのレベルとあなたが守っている人々のレベルによっては、これが問題になるかもしれません。

+0

よく私はキーとして情報のログインに使用カント、しかし素晴らしいことだ:)私は、ハードコードされますいくつかの静的な鍵を、持っている必要があります。 ..しかし、これは本当に良い解決策になる可能性があります - もし病気が5つのキーを持っているなら、そのうちの4つは暗号化され、最初のキーでそれらを解読しなければなりません。コンパイルされたコードでそれらのキーが見つかったとしても本当のキーを見つけ出すでしょう...ありがとう!:) –

+2

あなたのハードコーディングされたキーが読み込めるかどうかについて本当に妄想があるならば、オプションの1つとして、変換されたキーを保存することもあります。その後、格納されたキーを実際のキーに変換する方法があります。例えば、簡単な変換は逆のストリングです。したがって、あなたのキーがABCなら、あなたはCBAをハードコードし、あなたのキーを使用するたびに逆のメソッドを呼び出すでしょう。もちろん、実際のアプリケーションでは、ちょうど逆より複雑なものがほしいと思うでしょう。ちょっと追加の考え... – mprivat

+0

ちょうど...これは本当にしっかりと聞こえます...そして、私はそれほど大きな問題ではないと思いますが、私は仕事でそれをやる必要があります。再度、感謝します! –

2

私は難読化によっていくつかの記事を読むことをお勧めします。難読化は本質的に達成しようとしているものであり(少なくとも、すべての勧告が言っていることです)、最終的に安全ではありません。

ただし、iOSのサンドボックス処理は、セキュリティの第一で最も効果的な形態です。

第2に、入力の検証は、アプリケーションで必要となる次の最も重要なセキュリティ機能になります。すべての入力を検証しないと、暗号化が何も意味しません(ユーザーの入力情報から、スキームを介したアプリの起動に対するネットワーク応答まで)。

結局のところ、必要な場合は、安全な暗号化は、ハードコアしない(またはハードコーディングを難読化する)場合にのみ安全です。 mprivatが正しい場合は、ユーザー生成データ(ログイン)、公開鍵暗号化(非包含の秘密鍵のみを復号化できる)、またはトランスポートにSSLを使用するサーバー側暗号化のいずれかを使用する必要があります。

あなたのセキュリティで保護されたデータが、キーチェーンAPIを使用するデバイスでのみ管理されている場合は、特に、アイテムの取得にユーザーがログインする必要があるフォームを使用していることを確認してください。

デバイス上で暗号化しているデータがデバイスと他のデバイス(サーバーなど)で復号化されている場合は、基本的なアーキテクチャ上の欠陥があります。暗号化/復号化は、クライアント・クライアント(別名、ユーザーのデバイスのみ)またはクライアント・サーバー(サーバーへのユーザー・デバイスまたはユーザー・デバイスへのサーバーとすることができます)であることが非常に重要です。 2つの結果を脆弱性に混在させる。私は具体的には同じ暗号化メカニズムをここでは意味しています。クライアントとクライアントの間に別々の暗号化を使用するのは、クライアントとサーバーの間に問題はありません。ここで

は、安全なコードを書くために必要とされている人のために読まなければならないです:http://www.amazon.com/gp/aw/d/0735617228

関連する問題