1

MS SQL データベース (name, ssn ...) のいくつかの列を暗号化する必要があり、次のようないくつかのサイトで説明されているように、列の暗号化を検討しています: Encrypting Column Level Data in SQL Server and Introduction to SQL Server Encryption and対称鍵暗号化のチュートリアル.

挿入時にトリガーを使用して列を暗号化することができ、次を使用して SQL Studio 内で列を復号化できます。

OPEN SYMMETRIC KEY TestTableKey
DECRYPTION BY PASSWORD = 'Pa$$w0rd'
CONVERT(VARCHAR(50),DECRYPTBYKEY(EncryptSecondCol)) AS DecryptSecondCol
FROM TestTable

しかし、アプリケーションからデータにアクセスするにはどうすればよいでしょうか? 名前を検索できるようにしたいです。私が考えることができる唯一のことは、ストアド プロシージャを使用し、復号化パスワードを LINQ ステートメントのパラメーターとして送信して、ストアド プロシージャがデータを復号化し、クエリを実行できるようにすることです。

私は正しい軌道に乗っていますか?

私はこれに慣れていないので、他の有用な提案を歓迎します。

4

2 に答える 2

1

はい、暗号化されたテキストを復号化するストアド プロシージャを見てきました。また、テキストを暗号化するためのストアド プロシージャも見てきました。これは、トリガーが好きではないため、トリガーよりも好きです。これらの回答を参照してください。

ただし、暗号化ロジックをアプリケーション レイヤーに配置することを好みます。たとえば、Enterprise Library Encryption Codeを使用します。パスフレーズとソルトは、Enterprise Library コンソールを使用して構成ファイルで簡単に暗号化できます。

データベースでこの作業を行う特定の理由はありますか? そのようにする必要がある場合は、EL を使用してパスフレーズを保護し、それを作成したストアド プロシージャに渡すことができます。

于 2013-01-30T16:28:39.777 に答える