1

サーバーとクライアント(モバイルアプリ)間の通信にワンタイムパスワード暗号化を使用する予定です。しかし、モバイル アプリでキーをハードコーディングする必要があります。したがって、異なるユーザーがインストールしたすべてのモバイル アプリは同じキーを持ちます。

Android と iOS のビルドをリバース エンジニアリングして、ハードコードされた値を抽出するのはどれくらい簡単ですか?

私が計画しているセキュリティに関するその他の情報: 要求の署名に使用される 4 桁の番号を含む SMS を各ユーザーに送信することで、セキュリティを強化することも計画しています。このようにして、ユーザーがなりすましであることを保証できます。

ユーザーの位置、電話番号 (1 回)、名前 (1 回) をインターネット経由で送信します。

私のアイデアについてどう思いますか? また、何をお勧めしますか?

4

7 に答える 7

1

あなたの設計には多くのセキュリティ ホールがあります。真剣に、基本認証でSSLを使用してください。それは戦闘でテストされており、あなたが説明しているユースケースには十分すぎる.

于 2012-04-24T05:35:09.393 に答える
1

一般に、運用コードで独自の暗号化スキームを設計することについて質問する必要がある場合、運用コードで独自の暗号化スキームを設計するべきではありません (また、ワンタイムパスワードをアプリにハードコーディングしないでください。複数回使用されています)。

2 要素認証は優れていますが、実際に使用する暗号化はかなりよく知られているものでなければなりません。ある種のキーをアプリに埋め込む場合は、RSAなどの公開キー暗号方式を検討することをお勧めします。SSLのような暗号化スイートは、おそらくここで使用する適切なシステムです。

于 2012-04-24T05:35:35.843 に答える
0

iOS では、キーをキーチェーンに保存できます。

しかし、私はあなたの単一の鍵を全員の戦略についてよくわかりません. ユーザー名とパスワード (または SMS 認証) を使用してユーザーを認証し、その後、一意のユーザー キーを生成することはできませんか。後で参照できるように、このキーをキーチェーンに保存できます。

そして安全な接続を使用してください!(https?)

于 2012-04-24T05:47:35.660 に答える
0

Android と iOS のビルドをリバース エンジニアリングして、ハードコードされた値を抽出するのはどれくらい簡単ですか?

非常に簡単。

要求の署名に使用される 4 桁の番号を含む SMS を各ユーザーに送信する

ユーザーにとっては複雑すぎるため、本当に必要な場合にのみ使用する必要があります (強力なセキュリティ要件を持つアプリケーションの場合)。

まず、SSL 暗号化接続 (HTTPS) を使用します。

また、たとえば、接続ごとにサーバーからキーとセッション ID を取得することもできます。サーバーはセッションIDとキーをいくつかのストレージに保存します...

于 2012-04-24T05:34:49.177 に答える
0

暗号化キーがプレーン テキストのバイナリに残っている場合、アプリから暗号化キーを抽出するのは簡単です。コード内または別のファイル内にキーを隠す必要があります。

たとえば、コードで文字列を非表示にする場合、@"my secret key" のようなことをする代わりに、非標準的な方法で文字列を作成し、おそらく 10 個の文字列を保存し、それぞれから 1 文字を取り出し、それらを連結して実際のキーを形成します。

もう 1 つの方法は、画像などの別のファイル内にキーを隠すことです。暗号化キーを選択できる場合は、アプリで使用する画像から特定のバイト セットを選択します。

于 2012-04-24T05:39:48.090 に答える
0

ここに高レベルの提案があります:

1) If (keychain is empty) generate a random password, perhaps with base64 encoding
   If (keychain is not empty) you must have already generated a password from one of your apps, so just use the one in the keychain.
2) If from 1) (keychain is empty) store that new random password in the keychain
于 2015-01-08T15:45:51.053 に答える