スニッフィングの問題を解決する方法は、WebサービスでHTTPS経由で通信することです。 NSURLConnectionはこれを簡単に行い、私が知っているすべてのWebサービスエンジンは問題なくHTTPSを処理します。これはすぐにあなたの問題の多くを取り除くでしょう。
どのマシンで100-1000xのボトルネックを解読しますか?あなたのサーバは忙しくてasym解読はできませんか?あなたは電話でそれほど頻繁にこれを行うべきではないということを無関係でなければなりません。私はasymがここの答えだと言っていません。そのパフォーマンスオーバーヘッドは、一度解読された単一の文字列を確保するための問題であってはならないということだけです。
サービスでは、すべてのユーザーが電話番号を提供する必要があるためSMSが必要ですか?あなたは電話番号をつかむことを自動化しようとしていますか、またはユーザーがそれを自分自身で入力できるようにしますか?プライベートAPI(またはプライベートではないがドキュメント化されていない構成データ)を介して電話番号を自動的に取得し、それをサーバーに送信することは、サービス条件に悪影響を及ぼす可能性があります。これは、Appleがユーザーを保護したい特定のユースケースです。あなたは間違いなくあなたがこれをやっていることをあなたのUIで明確にする必要があり、明示的なユーザ許可を得る。
次のように個人的に私が認証したい:
- サーバーに送信チャレンジバイト
- クライアントがUUID、日付、およびハッシュ(UUID +チャレンジ+のuserPassword + obfuscationKey +日付)を送信します。
- サーバは同じように計算し、日付が合法的な範囲(30-60sが良い)であることを確認し、検証します。
- この時点で、私は一般に、サーバが、この「セッション」の残りの部分(次の数分から翌年のどこか)でクライアントが再認証するのではなく、長い、スパースでランダムなセッションIDを生成するようにしますすべてのメッセージに
ObfuscationKeyは、第三者が偽のクライアントを作成するのを難しくするために、プログラムとサーバーにハードコードします。可能であれば、は使用できませんは、クライアントだけがサーバーと通信できることを確実に保証します。しかし、特に逆アセンブルが難しいiPhoneではobfuscationKeyが役立ちます。 UUIDを使用すると、電話番号よりも第三者にはあまり知られていないため、役立ちます。
「userPassword」はそこにあります。ユーザーは、ユーザーが知っているだけのものを使用して認証する必要があります。 UUIDも電話番号もそのようなものではありません。
上記のシステムとHTTPSは、実装するのが簡単で(多くの言語で何度もやったことがあります)、優れたパフォーマンスを持ち、さまざまな "適切な"適切なレベルに安全でなければなりません。
電話番号の代わりにデバイスIDを使用することを検討しましたか?一意のIDだけが必要な場合は、その仕事を行います。 –
いくつかの追加SMSサービスがあるので、phonenumberを使用する必要があります。 – slatvick