Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Artigo SQL Magazine 50 - Criptografando dados no Microsoft SQL Server 2005
Artigo da revista SQL Magazine edição 50.
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?
Mão na Massa
Criptografando dados no Microsoft SQL Server 2005
Garantir o sigilo das informações é um dos principais papéis do administrador de banco de dados, e a criptografia se encaixa nesse contexto como um poderoso artifício para assegurar que as informações sejam acessadas somente por pessoas autorizadas. Pensando nisso, a Microsoft incluiu na versão 2005 do SQL Server um conjunto de funcionalidades que permitem criptografar e decriptografar dados, de forma prática, através de comandos Transact-SQL. Neste artigo serão utilizados os recursos de criptografia do SQL Server 2005, para implementar o banco de dados de uma aplicação de gerenciamento pessoal de senhas.
A arquitetura de criptografia do SQL Server 2005
No SQL Server 2005 é possível criptografar e decriptografar dados através de quatro técnicas: senhas fornecidas pelo usuário, chaves simétricas, chaves assimétricas e certificados digitais.
A criptografia através de senhas é a mais simples, pois transfere ao usuário toda a responsabilidade de armazenamento e manutenção da senha. Isso permite que o usuário utilize senhas fracas e armazene a senha em locais inadequados como uma folha de papel, agenda ou um arquivo em texto plano. No modelo de chaves simétricas uma única chave é utilizada para criptografar e decriptografar os dados. Esse modelo possui um custo baixo de processamento, mas não é tão eficaz quanto o modelo de chaves assimétricas. As chaves assimétricas utilizam um modelo de chave pública e privada. Os dados podem ser criptografados com a chave privada e quem possuir a chave pública poderá decriptografar a informação, garantindo assim a autenticidade do autor. Outra opção é criptografar os dados com a chave pública e somente aquele que possuir a chave privada poderá decriptografar a informação, garantindo o sigilo da informação. Já os certificados digitais são mecanismos de identificação que associam uma chave pública a uma pessoa, serviço ou dispositivo que possui a chave privada correspondente. A autenticidade do dono do certificado é garantida através de autoridades certificadoras (AC), da mesma forma que um documento de identificação pessoal (RG) é emitido e garantido pela Secretaria de Segurança Pública.
A arquitetura de criptografia do SQL Server 2005 se baseia em um conjunto de chaves e certificados organizados de forma hierárquica, conforme ilustra a Figura 1. Isso significa que cada camada da arquitetura utiliza chaves simétricas, assimétricas ou certificados digitais, para criptografar o nível imediatamente inferior.

Figura 1. Hierarquia de chaves do SQL Server 2005.
O elemento raiz da estrutura apresentada na Figura 1 é a service master key, uma chave de criptografia criada automaticamente através de uma API do Windows chamada DPAPI (Data Protection API). A service master key é criptografada usando a senha da conta de serviço do Windows utilizada para execução do SQL Server 2005. Usando o algoritmo Triple DES, a service master key permite criptografar a database master key, chave utilizada pelo SQL Server 2005 para armazenar, de forma segura, em cada banco de dados, as chaves assimétricas e certificados criados pelo usuário. Ao contrário da service master key, a database master key precisa ser criada manualmente, em cada banco de dados, conforme será apresentado neste artigo. Na camada inferior da arquitetura estão as chaves simétricas, assimétricas e certificados digitais utilizados para criptografar os dados do usuário ou criptografar outras chaves de criptografia. Analisando novamente a Figura 1 é possível realizar as seguintes afirmações:
· Chaves simétricas, assimétricas ou certificados podem ser utilizados para criptografar os dados do usuário ou para criptografar outras chaves simétricas;
· As chaves simétricas precisam ser criptografadas utilizando um certificado ou uma chave assimétrica. Isso reforça a segurança do mecanismo de criptografia;
· As chaves assimétricas e os certificados digitais dependem somente da database master key para serem utilizadas;
· A criptografia através de senha fornecida pelo usuário não depende dos elementos descritos na Figura 1.
Essas considerações serão fundamentais durante a execução dos exemplos deste artigo.
"
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Leandro Coelho Correia
É Analista de Tecnologia Sênior da CPMBraxis, profissional certificado pela Microsoft (MCTS: SQL Server 2005) com 9 anos de experiência com bancos de dados, Bacharel em Sistemas de Informação pela Universidade Católica do Salvador (UCSal), Especialista em Sistemas Distribuídos, professor das discipl...



