4

状況:リモートデータベースとc#アプリケーションの間で暗号化を実行する必要があります。私は自分が何をしているのかわかりません(これまで暗号化を行ったことがありません)。Webで見つけたものはすべてasp.net用であり、web.configファイルを処理していました。

いくつかの関連データ:私の接続文字列にはSQLサーバー認証のパスワード情報が含まれており、selectステートメントとdeleteステートメントがあります。これらの3つは暗号化する必要があります。

SQL Server 2008、Visual Studio 2008、およびC#を使用しています。

これが適切かどうかは疑問ですが、これはWindowsサービス内で行われています。これまでのところ、winFormsで機能するSQL関連のものはすべてサービスで機能しているので、winForms関連のヘルプもありがたいです。

私が助けを必要としていること:

  1. asp.netに制限されていない暗号化に関する参照をいただければ幸いです。:)

  2. MSDNページが表示され、開始するのに適切な場所のようですが、少し混乱しています。これは、暗号化されたものをSQL Serverに送信するのではなく、2つのアプリケーションが相互にファイルを送信する方法のようです。これを使用すると、SQL Serverがそれを復号化する方法をどのように知っているのかわかりませんか?

  3. System.Security.Cryptographyを見て、左翼手に出て行きますか?System.Data.SqlClient内で暗号化を指定する方法はありますか、それともリモートサーバーでストアドプロシージャを作成することに頼る必要がありますか?

前もって感謝します!!!:)

まとめ:

私を正しい道に導いてくれてありがとう、ただ一つの答えを選ぶのは難しかったです!:)

SSLを使用する必要があると結論付けました。ハウツーについてはまだ多くの混乱がありますが、これには証明書が必要であり、証明書が設定されると、クライアントは次のように要求して暗号化を要求できることを知っています。接続文字列の「Encrypt=yes」の場合。幸いなことに、私はすでに使用できるものを持っていると信じています。

もう1つの注意点-TDEは、データベースにあるデータの暗号化に何が適しているかについてのコンセンサスですが、SSLは、暗号化されたデータの送信に使用するものです。

これが私が最も役立つと思ったいくつかのリンクです:

http://blogs.msdn.com/b/sql_protocols/archive/2005/10/04/476705.aspx

http://support.microsoft.com/default.aspx?scid=kb;en-us;316898

4

3 に答える 3

5

アプリとDBの間の暗号化には、SQLServerレベルでSSL証明書を使用するのが最善の策です。これは、Microsoft KBの記事です(古いバージョンのSQL Serverの場合)。 http://support.microsoft.com/kb/316898 これにより、スニファーから保護されます。

これはクレジットカードの申し込みフォームで行いましたが、非常に簡単でした。

このMicrosoft.com検索は、SQLServerの新しいバージョンで役立ちます。

そして、この記事はSQL Server 2008に役立ちます。http ://msdn.microsoft.com/en-us/library/cc278098.aspx

于 2010-06-07T21:07:19.687 に答える
4

必要なのは、アプリケーションとSQLServer間のトラフィックを保護することです。これを行うには、 SQLServerへの接続の暗号化で説明されている手順に従うだけです。

次に、機密データを保存する場合は、偶発的なメディアの損失から保護するために、暗号化してデータベースに保存する必要があります。最善の解決策は、これまでのところ、透過的データベース暗号化を使用することです。

これらのソリューションはどちらも、アプリケーションで1行のコード変更を必要としません。これらは両方とも展開時間であり、管理者が制御する設定です。暗号化のための独自のソリューションを展開しようとすると、どこにも速くなりません。暗号化で王室を台無しにすることは非常に簡単であり、あなたはそれを知らないでしょう。SQLが提供する暗号化機能(接続TLS、ストレージTDE)を利用するだけで、アプリケーションを変更せずに要件を満たすことがはるかに簡単になり、はるかに優れています。

于 2010-06-07T21:34:20.927 に答える
1

私はあなたの要求について少し混乱しています。データをローカルで暗号化する必要がありますか、それともアプリとサーバー間の接続を暗号化しますか?または、データベーステーブルに保存されているデータですか?またはそれらの組み合わせ?

とにかく、接続の暗号化(認証を含む)については、SQLServerのチャネル暗号化機能を確認することをお勧めします。http://blogs.msdn.com/b/sql_protocols/archive/2005/10/04/476705.aspx

ローカルファイルまたは接続文字列、およびバイナリデータ暗号化(DBに暗号化された形式で保存される場合もあります)の場合は、System.Security.Cryptography名前空間を調べるのがよい方法です。

于 2010-06-07T21:11:42.037 に答える