プッシュ通知を必要とする iOS アプリケーションの場合、最初にユーザーにプッシュ通知の許可を要求する必要があります。その後、デバイストークンが生成され、これにより、リモートサーバーはこのトークンを介してユーザーと通信できます。
ここで同様の質問を読みましたが、それで十分だとは思いません。下の画像は信頼できる証明書で、このデバイスで発生するすべてのトラフィックを表示できます。
CertMakerと同様にFiddler2を使用すると、HTTPS トラフィックを傍受できます。つまり、クライアントは、送信しているデータと送信先をおそらく知ることができます。
私の質問は、SSL は、クライアントがリモート サーバーに送信する内容を見ることから保護されていないことを知っているため、アプリケーション内で見つかった秘密鍵で単純に暗号化する必要があるかということです。
(これencrypt("device_token","secretkey_a0a0a0a")
がObjective-Cであるふりをする)など?
誰かが私のアプリケーション内でそのキーを見つけることができませんでしたか? この質問も読みましたが、秘密鍵を取り戻せそうです。
これに対する私の計画は次のようになります。
- iOS アプリケーション内で、 という名前のランダムな文字列を生成します
activate
。 - トークンをランダムな文字列と私だけが知っている秘密鍵で暗号化します (ハッシュではありません)。(秘密鍵_a0a0a0)
- 暗号化された文字列を、生成されたランダムに生成された文字列 (アクティブ) と共に送信します。
active
サーバー側で、秘密鍵を使用して有効なトークンを復号化できるかどうかを確認します。- トークンが有効であれば、トークンをデータベースに保存します。
これにより、人々がランダムにトークンを入力するのを防ぎます はい、ただし、secretkey_a0a0a0
文字列リテラルです。これをアプリケーション バイナリ自体で取得することは非常に可能です。
私の質問は、この秘密鍵をどのように保護するのですか? 答えは、人々が無効なトークンをサーバーに送信するのを防ぐにはどうすればよいかということでもあります。
暗号化という言葉を聞いたことがありますが、それはリソース ファイルだけに当てはまるのでしょうか?
これにどのようにアプローチすればよいですか?