24

暗号化されていないチャネル (HTTPS ではなく HTTP) を介して、JavaScript AJAX 呼び出しを介して機密情報を転送する必要があります。

データを暗号化したいのですが、JavaScript 側での暗号化はキーを公開することを意味し、対称暗号化はあいまいさによるセキュリティの行使にすぎません。

JavaScript の非対称暗号化はありますか? そうすれば、サーバーの復号化キーを秘密に保つことができます。(サーバー > JavaScript メッセージのセキュリティについては心配していません。特定の JavaScript > サーバー メッセージのセキュリティについてのみ心配しています)

4

5 に答える 5

15

暗号化が必要な理由は、おそらく中間者から保護するためです。攻撃者がトラフィックを変更することなく盗聴できるシナリオがあります。このソリューションはその脅威から保護しますが、トラフィックを変更できる中間者に対してはまったく保護しません。

攻撃者がトラフィックを変更できる場合、暗号化を行うスクリプトも変更できます。最も簡単な攻撃は、スクリプトから暗号化を完全に削除することです。https がなく、man-in-the-middle が可能である場合 (ほとんどすべてのシナリオでそうです)、最後に表示される html または javascript をまったく制御できません。ユーザー。攻撃者は、HTML コードと JavaScript を完全に書き換えたり、暗号化を無効にしたり、フォームに新しいフォーム フィールドを作成したりする可能性があります。Https は、Web チャネルでの安全な通信の前提条件です。

于 2011-05-25T07:54:36.827 に答える
11

やりました。この JavaScript クライアント側の非対称 RSA 暗号化を使用して、ログイン資格情報が HTTP 経由でプレーン テキストで送信されるのを防ぎます。

目標は、ネットワーク スニッフィングに基づくログイン リクエストのリプレイ攻撃を防ぐことです。もちろん、これは中間者攻撃に耐えられないため、HTTPS ほど安全ではありませんが、ローカル ネットワークでは十分です。

クライアント側の暗号化は、 JSBNに基づくTravis Tridwell の優れた成果を使用しています。Travis の Web ページでは、RSA 秘密鍵と公開鍵を生成することもできます (使用するのが面倒な場合)。キーは PKCS#1 PEM 形式で生成されます。ログインごとに暗号化されたコンテンツが変更されるように暗号化します。opensslusername+password+timeInMs+timezone

サーバー側では、私の Java コードは、 Apache JMeterorg.apache.jmeter.protocol.oauth.sampler.PrivateKeyReaderを使用して PKCS#1 PEM ファイルを読み取りました。

PrivateKey pk = (new PrivateKeyReader("myPrivateKeyFile.pem")).getPrivateKey();

次に、暗号化されたコンテンツを復号化します

byte[] enc = DatatypeConverter.parseBase64Binary(clientData);
Cipher rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.DECRYPT_MODE, pk);
byte[] dec = rsa.doFinal(enc);
String out = new String(dec, "UTF8");

次に、クライアント側のタイムスタンプ/タイムゾーンがサーバー側のタイムスタンプ/タイムゾーンと一致するかどうかを確認します。遅延が数秒未満の場合、ログイン プロセスは続行されます。それ以外の場合、リクエストはリプレイ アタックと見なされ、ログインは失敗します。

于 2014-02-03T15:24:18.583 に答える
3

この質問には、ブラウザでフォームデータに署名するためのJavascript暗号化ライブラリが必要なようですPGPリンク:http://www.hanewin.net/encrypt/ has RSA

于 2011-05-24T21:22:54.103 に答える
3

サーバー > JavaScript メッセージは HTTPS 経由で送信されますか?

そうでない場合、中間者がスクリプトを変更することを妨げるものは何もありません。暗号化されていないデータにアクセスできるコードが侵害された場合、暗号化は役に立たなくなります。

于 2011-05-24T21:23:17.497 に答える