1

必要なのは、iPhone アプリからサーバー上の PHP に送信されるパラメーターを暗号化するために使用できる公開鍵暗号化スキームだけです。ライセンスが原因で GnuPG を使用できません。

要件は、ユーザーが資格情報を入力しなくても、電話のアプリがサーバーと通信できることです。ここでの私の目標は、URL のパラメーターの検査と、なりすましによるシステムの悪用を防ぐことです。したがって、暗号化のために、公開されているアプリのすべてのコピーが同じユーザーのように見える可能性があります。

HTTPS を使用する予定はありません。なぜなら (私が間違っていなければ) セッションまたは証明書が必要であり、過剰に思えるからです (そうでない場合はお知らせください)。URL のパラメーター部分を暗号化および復号化するだけです。

RSA 公開鍵で暗号化するデータは鍵よりも短くする必要があるため、標準的な手順では、対称秘密鍵を生成し、それを公開鍵で暗号化し、生成した秘密鍵でデータを暗号化し、生成した秘密鍵を送信します。キーと暗号化されたデータをサーバーに送信します。生成されたキーを暗号化するために必要なもののほとんどを持っているようです (プロセスでの RSA_size() クラッシュを除く)。しかし、Blowfish や PHP でサポートされているその他のアルゴリズムを使用して、バルク データのエンコーディングを指定および設定する方法がわかりません。

洞察をありがとう。

4

3 に答える 3

1

よくわかりませんが、送信するデータを暗号化する必要があり、HTTPS 経由で接続されていない場合は、JS 暗号化モジュールを実装してみてください。( http://www.hanewin.net/encrypt/を見つけました) ユーザー名またはクライアント PC の名前に基づいてキーを生成できます。

于 2011-05-10T11:02:13.853 に答える
0

もう 1 つの可能性は、公開/秘密鍵暗号化を使用せず、対称鍵暗号化を行うことです。おそらくやりたいことは、各セッションでクライアントアプリにキーを生成させ、単一のHTTPS接続を使用して、サーバーがパラメーターの復号化に使用できるキーを送信することです。これで、通常の接続はすべて、クライアントとサーバーだけが知っているキーを使用して暗号化されたパラメーターを持つことができます。デバイスごと、おそらくセッションごとに一意である必要があります。タイム スタンプを関連付けると、非アクティブな状態がどれだけ長く続いても、破棄されたり、無効なセッションからのものと見なされたりする可能性があることがわかります。

于 2011-05-10T11:18:46.173 に答える