Skip Navigation Links



Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de UsuĆ”rios
»CĆ©lulas AcadĆŖmicas«
intcontpiada : 118
Os 3 Porquinhos
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
FaƧa um pequeno teste com 10 questƵes de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programaĆ§Ć£o com nosso treinamento on-line de lĆ³gica de programaĆ§Ć£o
.:.
Veja nosso calendƔrio de treinamentos
Gostou da PƔgina?
Então

para um amigo!

Pesquisa personalizada
Pesquisar Dicas:

 








Criptografia no SQL Server 2005

O SQL Server 2005 ganhou novos recursos para criptografia de dados, melhorando a capacidade de proteção dos dados.

Para que seja realizada a criptografia de dados é necessário criar chaves para criptografia. Essas chaves ficarão armazenadas dentro do banco de dados.

As chaves de criptografia precisarão elas próprias estarem criptografadas. A criptografia de uma chave pode ser feita por um certificado digital, que também é 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 também 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 hierárquica (masterKey->Certificado->Chaves) gera maior segurança 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 produto (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 necessário 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 necessário incluir uma senha

 

4o Passo : Incluir uma coluna para a criptografia

alter table products add ProductEnc varbinary(300)

Estamos trabalhando com uma alteração 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 através das aplicações.

6o Passo : Criptografar os dados

Update products set productEnc=encryptbykey(key_guid('sk_produtos'),productname)

Neste ponto é feita a atualização da nova coluna aplicando-se a função encryptbykey.

Existe ainda uma opção de aumentar ainda mais a segurança fazendo o vinculo da informação criptografada com um campo da tabela, em geral a chave primária.

É feito então 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 informação 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 binário, criptografados.

8o Passo : Teste a descriptografia

select productid,
convert(nvarchar, decryptbykey(productenc)) as Produto
from products

Neste exemplo utilizamos a função decryptbykey para descriptografar as informações.

Observe que é necessário converter a informação de volta para o seu tipo de dados original para que seja legível. No nosso exemplo, nvarchar.

Caso tivessemos utilizado uma chave adicional, como citei anteriormente, teríamos 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 função decryptbykeyautocert em uma view. Esta função irá fazer a abertura da chave de criptografia automaticamente - ou retornar um valor alternativo caso não 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 usuário não possa por algum motivo acessar o certificado de produtos.

 

Atribuindo Acesso

Experimente criar um usuário novo, com permissão de leitura na base de dados. Faça um select na view e verá que este usuário não consegue visualizar os dados.

Atribua permissões a este usuário para acessar a chave de criptografia e o certificado. O usuário 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 usuário com o banco Northwind, role db_datareader

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

Faça um Select na view Produtos

Na aba security do banco northwind, clique em propriedades do UsuarioTeste

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 irão aparecer, Produtos e sk_Produtos

Defina as permissões em cada um como control, references e view definitions

Faça novamente o select na view produtos, desta vez o usuário conseguirá visualizar os dados.

Conclusão

Com estes recursos você pode criptografar dados críticos em sua base de dados, tal como valores de salários e números de cartões de crédito e determinar, através das permissões nas chaves e certificados, quem poderá fazer a descriptografia.





Envie seus comentįrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentįrios nesta pįgina

Veja abaixo os comentários já enviados :

Nome : Manuela Fadigas E-Mail : manu_fadigas@yahoo.com.br
A matéria é bastante interessante e bem explicativa.
Parabenizo o autor pela linguagem simples e objetiva utilizada.
Nome : LUIZ E-Mail : lcppb@yahoo.com.br
Excelente...Parabéns!
Luiz.
Nome : E-Mail :
Nome : o5MVKv8oX E-Mail : jf8yb3ot@outlook.com
What a joy to find sooenme else who thinks this way.
Nome : yeezy boost 350 E-Mail : tadcfl@gmail.com
Good post. I learn something tougher on different blogs everyday. It is going to all the time be stimulating to read content from other writers and apply a little bit one thing from their store. I? desire to use some with the content material on my weblog whether you don? mind. Natually I?l give you a hyperlink in your web blog. Thanks for sharing.
yeezy boost 350 https://42.herber.pl/yzyinc
Nome : adidas ultra boost uncaged E-Mail : bqmgirlgfu@gmail.com
I must point out my passion for your kind-heartedness for folks who have the need for help on in this niche. Your special dedication to getting the solution all over had become pretty helpful and has without exception enabled workers like me to reach their targets. Your entire important guide means much a person like me and much more to my peers. Warm regards; from each one of us.
adidas ultra boost uncaged https://42.herber.pl/ultraus
Nome : boston celtics jersey E-Mail : ydnfhudlaa@gmail.com
I want to voice my love for your kind-heartedness giving support to visitors who actually need help with the question. Your very own commitment to passing the solution up and down turned out to be especially important and has constantly empowered people much like me to achieve their goals. Your personal valuable help and advice can mean this much to me and further more to my peers. With thanks; from each one of us.
Nome : nike air huarache E-Mail : iywwukujwb@gmail.com
I must show some thanks to this writer for rescuing me from this type of condition. As a result of searching through the search engines and finding solutions which were not productive, I figured my life was done. Existing devoid of the strategies to the difficulties you have sorted out as a result of your blog post is a crucial case, as well as ones which may have badly affected my entire career if I had not come across your blog post. Your good training and kindness in handling all the stuff was invaluable. I'm not sure what I would have done if I had not come upon such a thing like this. I'm able to at this point relish my future. Thanks a lot very much for this expert and sensible guide. I will not hesitate to endorse your site to anybody who will need guide on this subject matter.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Conheça mais sobre o nosso site :

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Quer saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e
Prepare-se para o Mercado!
Veja o que a Búfalo tem para você.

ļæ½ BĆŗfalo InformĆ”tica, Treinamento e Consultoria - Rua Ɓlvaro Alvim, 37 Sala 920 - CinelĆ¢ndia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br