1

クライアントのブラウザとベンダーの間に「安全な」チャネルが存在することを保証するために、データクライアント側を暗号化する必要があります。

基本的な前提は次のとおりです。ベンダーはパブリック/プライベートキーペアを生成します:VendorPubとVendorPriv

クライアントは機密データを入力します。フォームのJavaScriptを送信すると、データの機密部分が暗号化され、サーバーに送信されるのはVendorPub(SensitiveData)です。

そのパッケージをVendorPub(SensitiveData)としてベンダーに送信しますが、ベンダーのみがそのデータを利用できます。

キーの長さと承認されたアルゴリズム(それぞれRSAと4096)に関係なく、もちろんすべてがSSL接続を介して行われます...

実行可能に見えますが、まだモックアップしていません...何か提案はありますか?落とし穴?

私たちの開発環境は、Visual Studio 2k5 / 2k8 /ASP.net2.0または3.0です。

ありがとうございました

4

4 に答える 4

3

他の回答は現在、この点を見逃しているようです。「そのパッケージをベンダーにVendorPub(SensitiveData)として送信しますが、そのデータを利用できるのはベンダーだけです」。言い換えれば、あなたはデータをブラックボックスとして扱うリレーです。

あなたが説明していることは、データの量がそれほど多くない場合に実行可能です。JavaScriptが動き出すのをユーザーに待たせることはできないことを忘れないでください。

ちなみに、 RSA4096はとてつもなく巨大です。2048は現時点ではハイグレードであり、3000は30年以上にわたって有効であると思われるものは何でもです。しかし、あなたにもっと力を。公開鍵の費用を回避する通常の方法は、RSAを使用して対称(DSA)鍵を暗号化することです。これにより、実際のデータの暗号化が高速になり、遅い部分は(短い)鍵の復号化だけになります。非対称鍵暗号化は、対称鍵暗号化よりもはるかに低速です。

実装することに決めたものが何であれ、JSコードで暗号化が正しく行われていることを確認してください。

また、これは実際にはユーザーをあなたから保護する方法ではないことにも注意してください。Webサーバーを制御するので、ユーザーが制御するキーを使用してプライベートデータを配信するJavaScriptをユーザーに送信できます。ユーザーが気付くことはほとんどありません。

于 2010-07-28T16:57:37.617 に答える
2

それは間違いなく実行可能です。少し遅いかもしれませんが。

JSでのRSA実装は次のとおりです。http ://www.ohdave.com/rsa/

于 2010-07-28T16:36:48.213 に答える
0

さて、最終的な答えは次のとおりです。実行可能で、適度に高速で、適度に安全です。ただし、これは環境のスコープを解除することを目的としたPCI要件であったため、暗号化方式を引き続き所有しているため失敗しました。つまり、暗号化を行うJavaScriptがシステムから提供されます。

チャイムをしてくれたみんなに感謝します。

ゲイリー

于 2010-07-30T19:34:56.463 に答える
0

SSL接続を使用する場合(TLSを使用したいのですが)、これを行う理由は(あるとしても)ほとんどないようです。

とにかくそれを行うことにした場合、PK暗号化の最大の落とし穴はMITM攻撃です。つまり、サーバーのキーを受け入れてそれを使用してデータを暗号化するだけでは不十分です。これにより、サーバーのみがデータを読み取ることができるようになりますが、サーバーのIDを確認してない場合は、サーバーを他の誰かに完全に送信している可能性があります。これが、1)SSL / TLS接続のセットアップが遅く、2)SSL/TLSライブラリが大きくて複雑である理由のほとんどです。暗号化は認証よりもはるかに簡単です。

ただし、自分で暗号化する以外に自分でこれを行う理由はありません。SSL/TLSはすでに認証暗号化の両方を行っています。

于 2010-07-28T16:52:12.653 に答える