Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Encryption in SQL Server - Cleveland, OH .NET S...

Encryption in SQL Server - Cleveland, OH .NET SIG January 10, 2012

From the Cleveland, OH .NET SIG on January 10, 2012.

Your data at rest is at risk. We take great pains to write secure applications that prevent bad guys from snooping around and stealing confidential information, but what about when we finally write to the database? In this session you will learn to protect your data by leveraging the built in encryption functionality in SQL Server 2005/2008. We will walk through a brownfield application and transparently secure all of the sensitive data it stores without frustrating the overworked developers. Topics covered will include column level data encryption, providing lookups of encrypted data, basics of key management and the transparent data encryption capabilities of SQL Server 2008.

Joe Kuemerle

January 10, 2012
Tweet

More Decks by Joe Kuemerle

Other Decks in Programming

Transcript

  1. Background of Joe Kuemerle • Lead Developer at BookingBuilder Technologies

    • Over 15 years of development experience with a broad range of technologies • Focused on application and data security, coding best practices and regulatory compliance • Presenter at community, regional and national events.
  2. What Is Encryption • Encryption is the process of mathematically

    altering data in a consistent, reversible fashion. It should be used to store sensitive information that will need to be retrieved later. Encryption relies on a secret that is the only viable way to reverse the mathematical process • Encryption can be Symmetric where a single value (the encryption key) is used to both encrypt and decrypt the data • Or Encryption can be Asymmetric where there are two values in that data encrypted with Value 1 can only be decrypted with Value 2 and vice versa. This is also know as Public Key Encryption
  3. What Is Encryption “Encryption is the process of substituting a

    small secret in place of a large secret”
  4. Certificates • Certificates are used to store asymmetric keys and

    consist of a private key and public key. • SQL Server provides built in management of certificates • Do not use use certificates to encrypt data, it is slow and can be vulnerable when storing lengthy values. Use a symmetric key to encrypt the data and a certificate to encrypt the symmetric key.
  5. Hashes • Hashes are not an encryption method. A hash

    takes an input value and transforms it to a unique value that is infeasible to convert back to the original value. • Hashes are not for storing data that needs to be re- read but are for proving knowledge of a secret without the actual secret being revealed. • Hashes are ideal for verifying passwords. The actual password is unimportant we just need to have the user prove that they know the password.
  6. Hashes • Best practices call for the use of SHA256,

    SHA384, SHA512 or higher functions • Bcrypt is a “Future-Adaptable” open source hashing algorithm • Do not use MD5 or SHA1as there are proven methods for undermining the hash results. • SQL Server 2005/2008 only support MD5 & SHA1, Denali supports SHA256 SHA384 and SHA512
  7. Demos • Yay! No more bullet points. All source code

    is available on CodePlex: http://sqlcrypto.codeplex.com/
  8. References • Laurentiu Christofor: http://blogs.msdn.com/lcris/ • Raul Garcia: http://blogs.msdn.com/raulga •

    Bruce Schneier: http://www.schneier.com/ • http://blogs.msdn.com/b/sqlsecurity/archive/2010/06/14 /database-encryption-key-dek-management.aspx • Cryptography: o http://www.garykessler.net/library/crypto.html o http://www.cacr.math.uwaterloo.ca/hac/ • BCrypt: o http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow- tables-what-you-need-to-know-about-s.html o http://codahale.com/how-to-safely-store-a-password/ o http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password- hashing-for-dotnet-and-mono.ashx • Demo source: http://sqlcrypto.codeplex.com
  9. Photo Credits • http://www.flickr.com/photos/wwworks/4612188594 • http://www.flickr.com/photos/joyosity/3358614462 • http://www.flickr.com/photos/jmrosenfeld/31582581 5 •

    http://www.flickr.com/photos/23258385@N04/22258 09637 • http://www.flickr.com/photos/chelseamcnamara/4 058966236 • http://xkcd.com/538/