2

サイトのユーザーが非対称の秘密鍵と公開鍵を作成できるようにして、次のことができるようにしたいと考えています。

  • 公開鍵をサイトにアップロードして、Web アプリケーションがアップロードするファイルを暗号化できるようにする
  • ファイルをダウンロードし、ローカル アプリケーションと秘密鍵を使用して復号化する

私の問題は、ユーザーのマシンが停止した場合、秘密鍵を失う可能性が高いということです。

私のコンセプトは、ユーザーがサイトからファイルを取得するためにダウンロードするアプリケーションによって、サイトで使用するキーを生成することもできるというものです。

私の質問は、パスフレーズに基づいて非対称の秘密鍵と公開鍵のペアを作成することは可能ですか? これにより、ユーザーは必要に応じて秘密鍵を再生成できます。

4

2 に答える 2

1

あなたが求めていることを正確に行う1つの方法は次のとおりです。

  1. セキュリティ レベル N を定義します。大きいほど安全ですが、このプロセスは遅くなります。
  2. 「ソルト」を生成し、それをユーザーの ID に関連付けます。
  3. RSA 鍵の生成には安全な乱数ジェネレーターが必要なため、ユーザーのパスワードとソルトを PBKDF2 で使用し、反復 N から開始して、安全なランダム データを生成します。

このプロセスは、公開/秘密 RSA キーのペアを決定論的に生成する必要があります。ただし、これを行わない理由は次のとおりです。

  • これは私が作成したものであり、私の知る限り、この投稿は、このプロセスが公に精査されるのは初めてです。
  • PBKDF2 が実際に RSA で使用する安全な乱数ジェネレーターとして機能するかどうかはわかりません。
  • PBKDF2 が公開/秘密 RSA キー ペアの元となるデータを生成することが保証されていることは、真実である場合とそうでない場合があります。
  • 実際には、これは機能しますが、非常に長い時間がかかり、かかる時間はユーザーのパスワードに基づいています。これは、ユーザー エクスペリエンスと、考慮が必要なセキュリティ上の露出ポイントです。

あなたがやろうとしていることを達成するためのより良い方法は次のとおりです。

  1. セキュリティ レベル N を定義します。大きいほど安全ですが、このプロセスは遅くなります。
  2. 「ソルト」を生成し、それをユーザーの ID に関連付けます。
  3. RSA 公開鍵と秘密鍵のペアを生成します。
  4. PBKDF2 を N 回繰り返して、ユーザーのパスワードとソルトに基づいて対称キーを作成します。
  5. 対称暗号化アルゴリズムを使用して秘密鍵を暗号化します。
  6. 暗号化されていない公開鍵と暗号化された秘密鍵をサーバーにアップロードします。

これは次の理由で優れています。

  • 上記のすべてのプロセスは、私の知る限り、標準的で精査済みです。
  • 公開鍵/秘密鍵の生成 (時間がかかる) は、ユーザーのアカウントを設定するときに 1 回だけ行われます。
  • キーへのアクセスは、常に一定の時間内に発生します。

これはあなたの問題を解決します:

  • サーバーには暗号化された秘密鍵しかないため、ユーザーのデータを復号化することはできません。
  • クライアント マシンが停止した場合、サーバーは秘密鍵を再発行できます。

もちろん、ユーザーがパスワードを忘れた場合、RSA をクラックする方法に関する一般知識が利用可能になるか、10 億年分の現在のコンピューティング パワーがパス​​ワードを解読するタスクに投入されるまで、すべてのデータがロックされるなどの明らかな警告があります ;-) (もちろん、N と鍵のサイズによって異なります)。また、ソルトは辞書攻撃を防ぐためにも重要です。

于 2013-07-10T16:28:50.447 に答える
0

アルゴリズムのフィールド (例: RSA http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsaparameters.aspx ) は、多かれ少なかれあなた次第です。文字列から D と P を生成するアルゴリズムを簡単に作成できます (それらから他の RSA フィールドを計算します)。ただし、StackOverflow の回答から 1 つを選択しないことを強くお勧めします (これにより、データを取得したい人に簡単に試してもらうことができます)。

RSA のようなアルゴリズムを解読するのが難しい理由は、暗号化されたデータに基づいて秘密鍵/公開鍵をリバース エンジニアリングする労力がかかるためです。パスフレーズに基づく再現可能な生成アルゴリズムのような「ショートカット」を導入すると、システムのセキュリティは、暗号化アルゴリズム自体ではなく、パスフレーズがどれだけ秘密にされているかに依存するようになります。

秘密鍵についても同じことが言えます。これが、多くの組織が秘密鍵をハード ドライブに保存せず、パスワードや生体認証情報で保護された安全な外部デバイスに保存する理由です。

パスフレーズから鍵を生成するのではなく、秘密鍵を保存および保護するための推奨される方法を使用することをお勧めします。

于 2013-03-04T15:38:15.017 に答える