Segurança de Dados no SQL Server – Parte 02

 

Por: Alexandre Lopes

 

Segurança a nível de dados

O próximo nivel na hierárquia, é a encriptação a nivel da dados, que fornece duas opções de encriptação: chave simétrica e chave assimétrica.

Uma chave simétrica é um mecanismo de encriptação mais rápido para encriptar e decriptar dados. Voce pode utilizar chave simétrica para dados que são constantemente acessados. A linha de código abaixo é um exemplo de criação da chave simétrica:

 

CREATE SYMMETRIC KEY WITH ALGORITHM = AES_256 ENCRYPTION BY PASSWORD = 'password'

 

O uso da senha não é obrigatório e recomendado, imagine utilizar a linha de código acima em diversas aplicações? A senha ficaria exposta o que poderia causar vulnerabilidade. Utilizarei neste artigo apenas para repassar ao leitor todas as funcionalidades disponiveis e como utiliza-las.

O algoritmo utilizado acima (AES_256) não é o unico, voce utilizar o DES e o TRIPLE_DES que fornecem uma chave mais "forte". Para maiores informações sobre algoritmos, consulte o books online do SQL Server.

A partir do momento que voce criou uma chave a nivel de dados, chegou o momento de encriptar e decriptar seus dados. Utiliza-se as funções EncryptByKey e DecryptByKey no caso de chave simétrica.

A chave assimétrica é a combinação de uma chave privada com uma chave pública. É considerada muito mais "forte" que uma chave simétrica, mas por outro lado, consome mais recursos do sistema. A linha de código abaixo é um exemplo da criação de chave assimétrica:

 

CREATE ASSYMETRIC KEY WITH ALGORITHM = RSA_2048 ENCRYPTION BY PASSWORD = ´password´

 

Os algoritmos utilizados podem ser RSA_512, RSA_1024 e RSA_2048.

Para encriptar e decriptar dados, utiliza-se as funções EncryptByAsmKey e DecryptByAsmKey.

Certificado Digital

Certificado Digital é o mecanismo mais "forte" disponivel no SQL Server. Um certificado de chave publica é assinado digitalmente e associado uma uma identidade de usuário, dispositivo ou serviço que armazena a chave privada. Ou seja, a chave publica, como o próprio nome informa é de conhecimento publico e serve para decriptar, a chave privada faz o inverso; decripta. Esse modelo é amplamente utilizado e segue as normas X.509. Por ser extremamente seguro, o impacto na performance também é sentida devido ao overhead quando se encripta e decripta os dados. A linha de código abaixo é um exemplo de criação do certificado:

 

CREATE CERTIFICATE WITH SUBJECT = 'subject_do_certificado'

 

As funções utilizadas são EncryptByCert e DecryptByCert.