3

私は、潜在的なクライアントが私と話し合っている可能性のあるプロジェクトについて、いくつかの調査と開発を行っています。

Web 経由でアクセスされ、かなり機密性の高い情報を保持する asp.net 4.5 Web アプリケーションの作成を検討しています。情報は webApp を介してアップロードされ、ファイルはサーバーに保存され、後で表示/取得できます。情報が安全にアップロードされ、保存されていることを確認したい。これを行うために、アプリケーション全体で EV SSL 証明書を常に使用し、ファイル (jpeg、pdf、txt) に何らかの暗号化を適用して、誰かがサーバー レベルでアプリケーションにアクセスした場合に、ファイルもアプリケーションなしでは直接表示できません。ここで提案や改善を探しています。

私の調査では、ファイルを AES 暗号化することにしましたが、これでもファイルを保護するのに十分でしょうか? OS レベル (win2008) で暗号化を適用する必要がありますか? ファイルをデータベースに保存する必要がありますか?

ファイルは、webApp でユーザーが読み取り可能で、ブラウザーで表示できる必要があります。

さらに情報が必要な場合は、お問い合わせください。

4

3 に答える 3

1

私は、非常に機密性の高い情報/ファイルも処理するプロジェクトに参加しています。私たちはすることにしました

  1. httpsを利用する
  2. すべての機密データ/ファイルを SSL 証明書で暗号化する

現在、可能ですが、データベース内にファイルを保存していません。しかし、それをデータベースに保存することの大きな利点はわかりません(ファイルのバックアップは個別に行われます-これはアプリケーションのポイントかもしれません)。ファイルをデータベースに保存することに関する賛否両論については、StackOverflow でこの質問を参照してください。

MSDNHow to encrypt using a X509に証明書の例があり、このトピックに関する優れた記事が Web にたくさんあります ( codeproject.comSO、...)。

これは私たちのアプローチですが、より良い解決策があるかもしれません。どのようなアプローチを選択したかお聞きしたいです。

于 2012-09-22T19:28:18.747 に答える
0

SSL を使用しているため、データの転送は既に暗号化されています。基本的に、SSL ハンドシェイクが行われた後、データは AES などのアルゴリズムで対称的に暗号化されます。これは主に速度のために行われます。公開鍵暗号化は非常に遅いため、RSA などのアルゴリズムを使用してファイルを暗号化することはおそらく良い考えではありません。また、最近の多くの Intel プロセッサでは AES がチップでサポートされているため、非常に高速に使用できます (これが BitLocker のベースです)。

あなたが抱えている問題は、セキュリティを損なうことなく安全にキーを保管および配布する方法という、古典的なキー管理の問題です。できることの 1 つは、ユーザーのパスワード + ソルトに基づいてキーを作成し、アプリケーションが (ユーザーの認証後に) パスワード + ランダムなソルト値に基づいてアルゴリズムを使用してキーを再生成し、それをセッションに保持することです。システムにアップロードしたデータを解読できるのは、ユーザーだけです。これの良い副作用は、ユーザーが他のユーザーのデータを読み取ることができなくなることです。ただし、これには欠点があり、ユーザーがパスワードを紛失した場合、キーとファイルを回復できなくなります。通常、そのような状況では、マスターパスワードを使用してすべてのキーを保存および暗号化できる信頼できるサードパーティが存在する、ある種のキーエスクローを用意するか、信頼できる当事者であり、マスターキーを使用してすべてのキーを暗号化します。アプリケーションの一部ではなく、別の安全なシステムに保存されます。もう 1 つの欠点は、ユーザーがパスワードを変更すると、ファイル システム上のすべてのデータを復号化して再暗号化する必要があることです。保存されているデータの量によっては、これは長いプロセスになる可能性があります。

これらすべてに関係なく、鍵が盗まれた場合に備えて、何らかの緊急時対応計画を立てておく必要があります。アプリケーションの設計を開始するには、設計要素について OWASP (Open Web Application Security Project) を参照することをお勧めしますhttps://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet

于 2012-10-14T18:52:47.817 に答える
0

ファイルを保護するために秘密鍵暗号を使用する場合でも、鍵がソースのどこかになければならないという問題があります。私に発生する2つの選択肢は次のとおりです。

  1. 公開鍵暗号化 - dll に埋め込まれた公開鍵でデータを暗号化し、マシンに秘密鍵を持ちません。次に、復号化する前にファイルを別の場所に移動します。
  2. DPI 関数を使用して、ユーザー レベルのキーでデータを暗号化します。次に、管理する明示的なキーはなく、データはそのユーザーとして実行されているプロセスによってのみ読み取られます (そのため、おそらくアプリ プールをマシン アカウントで実行するように変更します)。
于 2012-09-22T19:31:04.240 に答える