Você está na página 1de 13

Criptografia no SQL Server 2005

Veja como o SQL Server 2005 ganhou novos recursos para criptografia de dados, melhorando a capacidade de proteo dos dados.

Criptografia no SQL Server 2005


O SQL Server 2005 ganhou novos recursos para criptografia de dados, melhorando a capacidade de proteo dos dados. Para que seja realizada a criptografia de dados necessrio criar chaves para criptografia. Essas chaves ficaro armazenadas dentro do banco de dados. As chaves de criptografia precisaro elas prprias estarem criptografadas. A criptografia de uma chave pode ser feita por um certificado digital, que tambm criado e armazenado na base de dados, ou por meio de uma senha que atribuida a cada chave. O uso de um certificado para a criptografia das chaves evita a necessidade de atribuir uma senha para cada chave, funciona como uma forma de agrupamento de chaves. O certificado pode ser um certificado digital auto-gerado pelo SQL Server ou um certificado digital importado de outra origem para o SQL Server. Voc pode, por exemplo, importar um certificado digital gerado por uma entidade certificadora. O certificado digital auto-gerado tambm precisa ser criptografado. Podemos fazer isso atribuindo uma senha para o certificado digital ou utilizando a masterKey do banco de dados para criptografar o certificado digital. Esta estrutura hierrquica (masterKey->Certificado->Chaves) gera maior segurana para a base de dados, fazendo com que uma nica senha, a senha da masterKey, tenha o controle sobre toda a criptografia. Para compreender melhor toda essa estrutura, vamos testar, passo a passo, a criptografia do nome do produt o (productName) da tabela products do NorthWind. 1o Passo : Criar a master key com uma senha

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe'; 2o Passo : Criar o certificado digital CREATE CERTIFICATE Produtos WITH SUBJECT = 'CertificadoProdutos' Sem o uso da masterKey seria necessrio atribuir uma senha 3o Passo : Criar a chave create symmetric key sk_produtos with algorithm = Triple_DES encryption by certificate produtos; Da mesma forma, sem o uso do certificado seria necessrio incluir uma senha

4o Passo : Incluir uma coluna para a criptografia alter table products add ProductEnc varbinary(300) Estamos trabalhando com uma alterao de dados existentes. Observe que a coluna que ir receber os dados criptografados precisa ser do tipo VarBinary. 5o Passo : Abrir a chave Para criptografar e descriptografar precisamos fazer o que chamado de "Abrir" a chave de criptografia. Open Symmetric key sk_Produtos decryption by certificate produtos Se tivessemos utilizado uma senha, sempre que utilizassemos o Open teriamos que indicar a senha. Sua senha acabaria ficando espalhada atravs das aplicaes. 6o Passo : Criptografar os dados Update products set productEnc=encryptbykey(key_guid('sk_produtos'),productname) Neste ponto feita a atualizao da nova coluna aplicando-se a funo encryptbykey. Existe ainda uma opo de aumentar ainda mais a segurana fazendo o vinculo da informao criptografada com um campo da tabela, em geral a chave primria.

feito ento o calculo de um hash e adicionado aos dados criptografados. Para que a descriptografia seja feita corretamente, o mesmo valor dever ser informado no momento da descriptografia. Com isso a informao criptografada fica sempre ligada ao registro, precisando ser informado o ID do registro para que a descriptografia seja realizada. Veja a criptografia com o autenticador : Update products set productEnc=encryptbykey(key_guid('sk_produtos'),productname,1,productid) 7o Passo : Teste o resultado select * from products Voc ver os dados em binrio, criptografados. 8o Passo : Teste a descriptografia select productid, convert(nvarchar, decryptbykey(productenc)) as Produto from products Neste exemplo utilizamos a funo decryptbykey para descriptografar as informaes. Observe que necessrio converter a informao de volta para o seu tipo de dados original para que seja legvel. No nosso exemplo, nvarchar. Caso tivessemos utilizado uma chave adicional, como citei anteriormente, teramos que novamente utiliza-la na descriptografia. Veja a descriptografia com o autenticador : select productid, convert(nvarchar, decryptbykey(productenc,1,productid)) as Produto from products 9o Passo : Crie uma view e simplifique tudo Para evitar a necessidade de abrir a chave de criptografia, podemos utilizar a funo decryptbykeyautocert em uma view. Esta funo ir fazer a abertura da chave de criptografia automaticamente - ou retornar um valor alternativo caso no consiga.

create view Produtos as select productid, convert(nvarchar, decryptbykeyautocert(cert_id('produtos'),null,productenc)) as Produto from products Observe o valor alternativo que foi indicado - null - este valor ser exibido caso o usurio no possa por algum motivo acessar o certificado de produtos.

Atribuindo Acesso Experimente criar um usurio novo, com permisso de leitura na base de dados. Faa um select na view e ver que este usurio no consegue visualizar os dados. Atribua permisses a este usurio para acessar a chave de criptografia e o certificado. O usurio passar imediatamente a visualizar os dados. Veja um passo a passo para isso : Na aba security, crie um novo login UsuarioTeste utilizando sql server authentication

Em User Mappings, ligue o usurio com o banco Northwind, role db_datareader

Clique no boto change connection (toolbox superior, a esquerda) e se conecte como UsuarioTeste

Faa um Select na view Produtos

Na aba security do banco northwind, clique em propriedades do UsuarioT este

Clique em securables, Add, Specific Objects

Clique em object Types e selecione Symmetric Keys e Certificates

Clique em browse e selecione os 2 objetos que iro aparecer, Produtos e sk_Produtos

Defina as permisses em cada um como control, references e view definitions

Faa novamente o select na view produtos, desta vez o usurio conseguir visualizar os dados.

Concluso Com estes recursos voc pode criptografar dados crticos em sua base de dados, tal como valores de salrios e nmeros de cartes de crdito e determinar, atravs das permisses nas chaves e certificados, quem poder fazer a descriptografia.

Você também pode gostar

  • AdvPl O Manual
    AdvPl O Manual
    Documento417 páginas
    AdvPl O Manual
    Leandro Diniz de Brito
    100% (2)
  • Apostila Git
    Apostila Git
    Documento45 páginas
    Apostila Git
    Horácio Dias
    Ainda não há avaliações
  • ASP Net C
    ASP Net C
    Documento151 páginas
    ASP Net C
    pecourso
    Ainda não há avaliações
  • Illustrator
    Illustrator
    Documento105 páginas
    Illustrator
    Vinicius Santos
    Ainda não há avaliações
  • Visual C#
    Visual C#
    Documento41 páginas
    Visual C#
    Anderson Luiz Silva
    Ainda não há avaliações
  • Curso Completo php1
    Curso Completo php1
    Documento205 páginas
    Curso Completo php1
    Vinicius Santos
    Ainda não há avaliações