6

データベース内の「機密」データを暗号化する単純な暗号化アプリケーションがあります。アクセス権を持つ人だけが、これらのデータを復号化された形式で見ることができます。私はそれを行う方法に関する詳細情報を探し回っていますが、これが私のプロジェクトアプローチです:

  1. AES 暗号化アルゴリズムを使用しています。
  2. RNGCryptoServiceProvider で AES キーを生成します。AES キーで情報を暗号化します。
  3. AES キーを RSA 公開キーで暗号化します。
  4. 秘密鍵を USB ファイルに保存し、アクセス権を持つことができる人だけに渡します。
  5. 正当な人が復号化された情報を見る必要がある場合、彼らは秘密鍵を提供します。アプリは秘密鍵を使用して AES キーを復号化し、それによって情報が復号化されます。

さて、私の質問は、その秘密鍵を安全に保管するにはどうすればよいですか? 私が読んでいることから、FromXMLString を使用して秘密鍵を取得できます。でも、どうにかして USB ファイルと XMLFile を手に入れたら、同じように FromXMLString を使って秘密鍵を見つけられるのではないかと考えていました。では、たとえばパスフレーズを使用して、そのファイルを保護するにはどうすればよいでしょうか? そのために使用できるc#の関数はありますか?

また、キー ペアを変更した場合は、公開キーを変更し、新しい公開キーで AES キーを再度暗号化する必要があります。そのために、この記事「RSA を介して一意の公開鍵と秘密鍵を生成する方法」が非常に役立つことがわかりました。しかし、作者がそれをどのように実装したかはわかりません。彼は秘密鍵ファイルにも鍵コンテナー名を保管しますか? または、ToXMLString が自動的にそれを行いますか?

ありがとう〜

4

3 に答える 3

5

どういうわけか、復号化キーまたは復号化RSAキーを取得するためのキーは、プレーンテキストとして保持する必要があります。USBドライブではない場合は、ユーザーの頭の中にある必要があります。

そのため、できることは、多要素認証を使用することです。ユーザーだけが知っているパスワード (彼はそれを頭に入れておくか、付箋に書き留めます。あなたの呼び出しではありません) と、他の復号化キーを含む USB ドライブ。

そのため、攻撃者は暗号化された情報にアクセスするために、パスワードと USB ドライブの両方を入手する必要があります。

ユーザーが入力したパスワードから暗号的に安全なキーを取得する方法については、 PBKDF2を参照してください。

于 2012-12-19T08:00:34.917 に答える
3

秘密鍵を復号化する際の問題は、鍵がそのままコンピューターのメイン メモリに転送され、場合によってはストレージ内のスワップに転送されることです。メモリに入れずに秘密鍵を使用するには、いくつかのオプションがあります。

  • スマート カードを使用し、PIN の背後にある秘密鍵を使用します (PIN は通常「再試行回数」で保護されているため、パスワードよりも安全です (したがって、ブルート フォース アクセスを試みることはできません)。
  • 基本的にスマート カードとスマート カード リーダーを組み合わせたセキュリティ トークンを使用する

使用するのが難しいその他のオプション:

  • コンピューターのマザーボード上のオンボード Trusted Platform Module (TPM) を使用します。これは基本的にオンボードのスマート カードです。
  • オペレーティング システムによって提供されるある種の保護されたキー ストアを使用する

さらに、PIN またはパスワードで保護できる USB ドライブを使用するオプションもあります。Ironkey は、USB キー自体のハードウェアで実行される AES 暗号化を使用して認定済みの USB ドライブを作成します。もちろん、これにより秘密鍵がメモリに移動されます。

メモリ内の秘密鍵を使用する必要がある場合は、システムが適切に強化されていることを確認してください。たとえば、スワップを暗号化する、アクセス権を維持するシステムがあることを確認するなど.

鍵管理の領域へようこそ :)

于 2012-12-19T19:06:47.160 に答える
2

PKCS と互換性のあるコンテナー (*.pfx) に秘密鍵と共に証明書を格納することをお勧めします。C# では、これは Bouncy Castle ライブラリで実行できます。

ペアを作成する方法は次のとおりです。

C# のみを使用してプログラムで X509 証明書を生成することは可能ですか?

そして、これはコンテナに保存する方法です(ステップ3):

http://web.archive.org/web/20100504192226/http://www.fkollmann.de/v2/post/Creating-certificates-using-BouncyCastle.aspx

于 2012-12-19T10:54:45.170 に答える