0

SO、コードプロジェクトなどでの公開鍵暗号化の実装の例はたくさんあります。

私自身はドメインからではなく、成熟した製品に依存するので、いくつかの商用ソリューションを評価したいと思います。

シナリオ:

  • ASP .NETアプリケーションは、ファイルコンテナーを暗号化します。
  • WinFormsアプリケーションは、コンテナーを復号化します。
  • ASP .NETアプリケーションは、WinFormsの秘密鍵にアクセスできないようにする必要があります。
  • WinFormsのアプリケーションは、ASP.NETアプリケーションの秘密鍵にアクセスできないようにする必要があります。

結果:強力な暗号化、改ざん防止、ID検証。

4

3 に答える 3

0

次に、確認する必要がある唯一のライブラリは、暗号化次世代(CNG)APIです。これらはWindowsにネイティブであり、徹底的にテストされ、現在存在するほぼすべての重要なテスト済みアルゴリズムを実装しています。

このライブラリには、Windows用の暗号的に安全な乱数ジェネレータもあります。

Windows用のDPAPIとWindows証明書ストアも確認することをお勧めします。クライアントがアプリを調査するのを止めるために、クライアントでセキュリティを実装しようとするのは無駄であることに注意してください。クライアントがボックスを所有している場合、クライアントはアプリと実装したいセキュリティを所有しています。

標準のRSAアルゴリズムは、実行している作業に適していますが、証明書を使用して公開鍵/秘密鍵を登録することで、アプリの適応性と管理が容易になるため、調査することをお勧めします。

于 2012-04-26T13:20:15.953 に答える
0

公開鍵暗号は簡単に誤用される可能性があり、これは頻繁に発生します。たとえば、公開鍵暗号化は非常に低速であり、意味のある量のデータ(1024ビットRSA鍵の場合は約100バイト以上)を暗号化するには、対称アルゴリズムを使用してセッション鍵を生成する必要があることを忘れてしまいます。これはセキュリティホールが現れる場所です。

この問題に対処するために、公開鍵/秘密鍵と証明書を使用してデータを暗号化/復号化するためのいくつかの標準があります。それらは、いくつか例を挙げると、PKCS#1とPKCS#7(後のCMS)およびOpenPGPです。

SecureBlackboxコンポーネントライブラリは、多くのセキュリティスキームと標準の実装を提供する包括的なセキュリティソリューションであり、広範なサンプルとサポートを提供します

于 2012-04-26T14:37:07.163 に答える
0

あなたが考えていることに対してSSLが機能しないことを確認してください。クライアントとサーバー間で安全な通信と認証を取得しようとしているようです。これにはSSLを使用します。実際、暗号化キーを保存する場所があるため、セキュリティのためにサーバー側で取得できるのはおそらくこれが最善です。詳細な説明については、ここで私の答えを参照してください。

クライアント(ユーザーからではなく、DRM)でデータを保護する場合は、DPAPIまたはそのマネージラッパーを使用します。これは、発行されたキーストレージを解決するため、実際に購入できるものよりも安全です。クライアントで暗号化されたデータがあり、オフラインでアクセスする必要がある場合は、システムにキーを保存するか、ユーザーに何かをプラグインさせるか、別のパスワードを入力させることになります。最初のものは安全ではなく、次の2つは苦痛です。DPAPIは、ユーザーのログインパスワードから派生したキーで暗号化します(または、スマートカードまたはWindowsの生体認証がそれらを使用しています)

暗号ライブラリについて

.net公開鍵暗号化を備えたマネージコード暗号化パッケージとネイティブコードへのラッパーの両方が付属しています。そのSystem.security.cryptographyパッケージとその無料で、.netがインストールされているすべてのWindowsシステムにすでにインストールされています。

最低限、これを使用して、実際の労力なしで公開秘密鍵の部分を処理できます(たとえば、zipblackboxから鍵を暗号化するため)。

いくつかのフリー/オープンソースライブラリも、パスワードから暗号化されたコンテナを作成することをサポートしています。Truecrypt、tarsnap、および7zipが思い浮かびます(ただし、これらをインストールするには管理者権限が必要な場合があります)。暗号化を行うalosdotNetZipがあります。インストールするのに管理者権限は必要ないと思います。コピーレフト以外のライセンスの下では、無料でオープンソースです。

必要な暗号化コンテナを簡単に作成することもできますが、そうすることをためらう理由はわかります。Microsoft CLRセキュリティの担当者によって作成されたこのクラスを使用し、ファイルをそのストリームに書き込み、IVとタグを付加してから、公開鍵暗号化を使用して提供される鍵を暗号化します。もう一方の端では、キーを復号化し、ivを読み取り、データを復号化し、タグが一致することを確認してから、問題を解決します。

于 2012-04-26T16:10:30.363 に答える