2009-07-15 15 views
11

最近このRSA JavaScriptライブラリが見つかった:http://www.ohdave.com/rsa/。ただし、キーをあらかじめ生成する必要があります。ここに私の質問/問題は、次のとおりです。(私は、コードに私は新しい鍵ペアをしたいすべての時間を変更する必要がないように。)JavaScriptでRSA鍵ペアを生成する

  1. 私はJavaScriptでRSA鍵ペアを生成したい

  2. 私はこれを安全なデータを送信するためにどのように使うことができるのか理解していますが、間違っていないと、このライブラリをクライアントがサーバーから安全なデータを受け取るために使用することはできません(公開およびプライベート指数、サーバからのプレーンテキスト)。私は間違っていますか?

私はこれについていくつかの議論が大好きです。私はセキュリティの専門家ではありませんが、私は非対称暗号化についてかなり確かな理解を持っています。

+0

SSLを使用してデータを送信できませんか?安全で、重要なのはあなたにとって透過的なので、どのような種類の暗号化/復号化も必要ありません。 – RaYell

+2

おそらく私はSSLを行うことができました。しかし、もし私がそれをサポートしていないホストを使用していたら?個人的にはSSLの設定方法がわかりません。私がオンラインで見つけたものはすべて順調ではありません。 SSLに関係なく、私の質問には関係ありません。 –

答えて

1

鍵ペアを生成するには、強力な乱数ジェネレータ(私はあなたがJavaScriptで持っているとは思わない)とかなりの計算(素数検査用)が必要です。その後、あなたがあなたのペアを持っていれば、あなたの公開鍵を反対側に送信するときに、中間者攻撃の機会があります。なぜなら公開鍵送信の完全性チェックがないからです。

秘密鍵を持っている人には安全な通信ができます。あなたの質問から、それがクライアントかサーバーかは明らかではありません。共有秘密鍵を初期化するには、公開鍵だけを持つ人に共有秘密鍵を生成させ、それを暗号化して公開鍵を持つ人に送ります。

同様の機能セット(乱数ジェネレータ、MITMへの脆弱性、セッションキーとして使用する共有秘密情報を作成する能力に依存する)を得ることはできますが、代わりにDiffie-Hellmanキー交換を行うことで計算量は大幅に減ります。

おそらく、サーバーでSSLを構成する方法を検討する方がよいでしょう。

+0

Diffie-Hellman鍵交換が面白く聞こえるように、私はそれを調べます。私はjavascriptの実装に見つかったリンクを見つけました:http://enanocms.org/News:Article/2008/02/20/Diffie_Hellman_key_exchange_implemented 非対称キーペアのポイントでは、強力な乱数ジェネレータをかなり簡単に移植することができます他の言語。素数検査と同じです。私はこれが完全に時間がかかるとは思わない、特にバックグラウンドスレッドを実行している(ユーザーがページの残りの部分を使用している間に)javascriptで禁止されている。あなたが使用できるCスタイルのRSA鍵生成コードを知っていますか? –

+0

私は、Simson GarfinkelのPGPに関する本は、素数テスターを含むコードのかなり良い説明を持っていると聞いています.Fermat's Little Theoremに基づいたコードでいくつかの最終的なパスを行います。そして、あなたは古いPGPソースやOpenPGPやgpgの実装でそれを見つけることができるはずです。しかし、私はあなたがJavascriptで実行するには遅すぎることがわかると思います。 –

関連する問題