I'd encrypt the column data with a symmetric key and protect the symmetric key with an asymmetric key or a cert.
The encryption / decryption operations with a symmetric key are much faster then the same operations with an asymmetric key or cert.
I'd use AES_128 | AES_192 | AES_256 for the algorithm if the hosted OS supported it.
HTH,
-Steven Gott
SDE/T
SQL Server
Steven Gott - MS wrote:
I'd encrypt the column data with a symmetric key and protect the symmetric key with an asymmetric key or a cert.
The performance of encrypting by certificates will be very bad for large amounts of data. Certificates are better for signing things than encrypting them.
You can also look at Raul's blog for insight into cryptography in SQL Server here is an entry involving indexes and encrypted columns http://blogs.msdn.com/raulga/archive/2006/03/11/549754.aspx
I'd encrypt with a symmetric key.
HTH,
-Steven
SDE/T
SQL Server
Does your dba has any rationale for not letting you use a symmetric key encrypted with a certificate That is a best practice for encryption, if there ever was one.
You can also encrypt the symmetric key with a password, instead of using a certificate, but then you'll have to pass that password around, whenever you'll need to open the key.
Certificates are much slower at encryption than symmetric keys and they have some additional limitations on how large a piece of data they can encrypt, hence it's not recommended to use them for encrypting data directly. I second Steven's suggestion to look at Raul's blog for additional details on this.
Thanks
Laurentiu