23

私の会社は、顧客のために機密データを保存し、マネージ .NET 暗号化アルゴリズム クラスの 1 つを使用してデータを暗号化する予定です。ほとんどの作業は完了しましたが、鍵を保管する方法/場所がわかりません。簡単な検索と読み取りを行ったところ、ハードウェア ソリューションが最も安全なようです。キーストレージのソリューションまたは方法に関する推奨事項はありますか?


皆様、ご回答ありがとうございます。

スポールソン、問題は実際にはあなたが言及した両方の「スコープ」です。もっとはっきり言うべきだったと思います。

データ自体と、データを暗号化および復号化するロジックは、ASP.NET プロファイル プロバイダーに抽象化されます。このプロファイル プロバイダーは、暗号化されたプロファイル プロパティとプレーン テキストのプロファイル プロパティの両方を許可します。暗号化されたプロパティ値は、暗号化されているという明白な例外を除いて、プレーン テキストのものとまったく同じ方法で保存されます。

とはいえ、鍵は次の 3 つの理由のいずれかで召喚できる必要があります。

  1. 承認されたサーバー上で実行される承認された Web アプリケーションは、データを暗号化する必要があります。
  2. #1 と同じですが、データを復号化します。
  3. ビジネス チームの承認されたメンバーは、暗号化されたデータを表示する必要があります。

私が想像しているのは、実際には誰もキーを知らないということです。データの実際の暗号化と復号化を制御するソフトウェアが存在するでしょう。とはいえ、鍵はどこかから来る必要があります。

完全な開示 - まだわからない場合は、これまでにこのようなことをしたことがないので、これがどのように機能するかについての私の認識が完全にずれている場合は、ぜひお知らせください.

4

9 に答える 9

9

この問題 (の技術的側面) に対する真の解決策は 2 つしかありません。キーにアクセスする必要があるのはアプリケーション自体だけだと仮定します...

  1. ハードウェア セキュリティ モジュール (HSM) - 通常はかなり高価で、実装が簡単ではありません。専用アプライアンス (nCipher など) または特定のトークン (Alladin eToken など) を指定できます。そして、そのハードウェアの処理方法を定義する必要があります...

  2. DPAPI (Windows データ保護 API)。System.Security.Cryptography (ProtectedMemory、ProtectedStorage など) には、このためのクラスがあります。これにより、キー管理が OS に渡されます。OS はそれを適切に処理します。"USER_MODE" で使用すると、DPAPI はキーの復号化を暗号化した単一のユーザーにロックします。(あまり詳しく説明しなくても、ユーザーのパスワードは暗号化/復号化スキームの一部です。いいえ、パスワードを変更しても問題は発生しません。)

追加: DPAPI を使用してマスター キーを保護し、アプリケーションのデータを直接暗号化しないことをお勧めします。そして、暗号化されたキーに強力な ACL を設定することを忘れないでください...

于 2008-09-16T09:15:49.717 に答える
1

OPからのこの回答の#3に応えて

許可されたメンバーが暗号化されたデータを表示できるようにする1つの方法ですが、実際にキーを知らない場合は、キーエスクロー(rsa labs)を使用することです (ウィキペディア)

要約すると、キーは別々の部分に分割され、「トラスティ」に渡されます。秘密鍵の性質上、各セグメントはそれ自体では役に立たない。ただし、データを復号化する必要がある場合は、「トラスティ」がそれらのセグメントをキー全体にまとめることができます。

于 2008-09-20T10:14:28.037 に答える
1

私たちは同じ問題を抱えており、同じプロセスを経てきました。
1 台のコンピューター (クライアント) でプロセスを開始し、2 台目のコンピューター (データベース サーバー) にログインする必要があります。

現在、ベスト プラクティスは次のようになると考えています。

  • オペレータは、クライアント PC でプロセスを手動で開始します。
  • クライアント PC は、オペレーターに個人のログイン資格情報を要求します。
  • オペレーターは資格情報を入力します。
  • クライアント PC は、これらを使用してデータベース サーバーにログインします。
  • クライアント PC は、データベース サーバーから独自のログイン資格情報を要求します。
  • データベース サーバーは、オペレータのログイン資格情報がクライアント プロセスの資格情報を取得する権限を持っていることを確認し、それらをクライアント PC に返します。
  • クライアント PC がデータベース サーバーからログアウトします。
  • クライアント PC は、独自の資格情報を使用してデータベース サーバーに再度ログインします。

事実上、オペレータのログイン パスワードが鍵となりますが、それはどこにも保存されません。

于 2008-09-30T15:05:57.803 に答える
0

ハードコーディングされたキーを使用して、生成されたキーを書き出す前に暗号化します。そうすれば、どこにでも書き込めます。

はい、ハードコードされたキーを見つけることができますが、対称キーをどこにでも保存できると想定している限り、安全性が低下することはありません。

于 2008-09-08T21:06:00.170 に答える
0

アプリケーションによっては、Diffie-Hellman方式を使用して 2 つの当事者が対称キーについて安全に合意することができます。

最初の安全な交換の後、キーが合意され、残りのセッション (または新しいセッション) がこの新しい対称キーを使用できるようになります。

于 2008-09-08T21:07:18.280 に答える
0

私はあなたの質問を誤解したと思います。あなたが求めているのは、アプリケーションがそのキー ストレージを処理する方法ではなく、会社がそれを保存する方法です。

その場合、2 つの明白な選択肢があります。

  • 物理的: USB ドライブへの書き込み、CD への書き込みなど。物理的に安全な場所に保管してください。しかし、再帰的な問題に遭遇します。Vault の鍵をどこに保管するのでしょうか? 通常、2 人以上の人 (またはチーム) に鍵の保持を委任します。

  • ソフトウェア: Cyber​​-Ark Private Ark は、私の会社が秘密のデジタル情報を保存するために使用するものです。すべての管理者パスワード、ライセンス キー、秘密キーなどを保存します。ドメインに参加していない Windows の「ボールト」サーバーを実行することで機能し、独自のポートを除くすべてのポートをファイアウォールで保護し、暗号化されたすべてのデータをディスクに保存します。ユーザーは、最初にユーザーを認証する Web インターフェイスを介してアクセスし、次にエクスプローラーのようなインターフェイスを介してボルト サーバーと安全に通信します。すべての変更とバージョンが記録されます。しかし、これにも同じ再帰的な問題があります... マスター管理者アクセス CD。これは、アクセスが制限された物理的な保管庫に保管されます。

于 2008-09-08T20:09:06.797 に答える
0

Microsoft Rights Management Server (RMS)にも同様の問題があります。マスターパスワードで構成を暗号化することで解決します。...もしそうなら、パスワードのパスワード。

于 2008-09-08T17:01:15.500 に答える
0

最善の策は、キーが搭載されているハードウェアを物理的に保護することです。また、決してディスクに書き込まないでください。メモリのそのセクションがディスクにページングされないようにする方法を見つけてください。キーを暗号化/復号化するときはメモリにロードする必要があり、安全でないハードウェアでは常にこの攻撃の場が存在します。

あなたが言ったように、ハードウェア暗号化デバイスがありますが、それらはスケーリングしません-すべての暗号化/復号化はチップを通過します.

于 2008-09-08T18:07:59.257 に答える
0

You can encrypt the symmetric key using another symmetric key that is derived from a password using something like PBKDF2.

ユーザーにパスワードを提示してもらい、データの暗号化に使用する新しいキーを生成し、そのパスワードを使用して別のキーを生成してから、データ暗号化キーを暗号化して保存します。

ハードウェアトークンを使用するほど安全ではありませんが、それでも十分であり、非常に使いやすいです.

于 2008-09-08T18:33:12.113 に答える