P>

minha

Clique aqui para ler todos os artigos desta edição

Criptografia no SQL Server 2005

Leandro S. Carvalho

O SQL Sever 2005 (Yukon) traz novos recursos no que diz respeito à segurança das informações. Uma delas é a capacidade nativa de criptografar os dados, reduzindo o risco de expor informações confidenciais a pessoas não autorizadas. Este recurso já existia na versão anterior, mas era relativamente limitado e raro de ser usado. Por conta disso, o SQL Server 2005 providenciou uma significativa mudança na utilização destes recursos.

Esta matéria foi escrita tendo por base a versão Express do SQL Server 2005 que pode ser baixada no endereço http://www.microsoft.com/brasil/msdn/express/sql/default.aspx. Minha opção por esta versão se deu por conta da gratuidade; mas não se preocupe, os recursos de criptografia estão disponíveis em todas as versões da linha SQL Server 2005 (Enterprise, Developer, Standard e Workgroup).

Criptografia: um pouco de história

Criptografia é um mecanismo utilizado para proteger dados. Para isso são utilizados algoritmos específicos que têm como objetivo ofuscar o conteúdo original da informação. O uso destes algoritmos envolve a utilização de chaves de criptografia (um conjunto de caracteres) que são utilizadas no processo de criptografar /descriptografar.

A criptografia pode ser simétrica ou assimétrica. A criptografia simétrica utiliza uma única chave para criptografar e descriptografar; já a assimétrica utiliza um par de chaves – uma pública e outra privada (ver Nota 1) com um ou vários algoritmos para criptografar e descriptografar. Os algoritmos assimétricos são mais complexos, e, portanto mais seguros do que os simétricos, em contrapartida têm um impacto maior na performance. É possível tirar vantagens de métodos simétricos para criptografar os dados, e então utilizar uma criptografia assimétrica para proteger a chave de criptografia do método simétrico.

Um das grandes dificuldades no processo de criptografia é saber como as chaves pública e privada são distribuídas para os usuários e como os destinatários de uma chave pública podem ter certeza de que o que eles receberam representa realmente a identidade do proprietário da chave privada correspondente. Este problema é ainda mais relevante quando falamos da segurança da comunicação entre as aplicações web.

A solução para este problema foi dada através dos Certificados Digitais, que atestam a identidade do emissor e a integridade de um documento ou sessão. Para isso, a Microsoft adicionou um número de Autoridades Certificadoras em seu sistema operacional. Estas empresas são instituições responsáveis por verificar as requisições de certificação das organizações.

 

Nota 1. Chaves públicas e privadas.

A criptografia assimétrica utiliza um esquema de codificação com chaves pública e privada. A chave pública serve para criptografar as informações, e é de conhecimento dos usuários. Esta chave, porém,  não permite a descriptografia  -  esta tarefa é restrita àqueles que possuem acesso à chave privada.

Recursos do SQL Server 2005

As novas funcionalidades de criptografia do SQL Server 2005 habilitam a execução de complexos algoritmos de criptografia, sejam eles simétricos ou assimétricos, usando mecanismos de hash (quando não é necessário recuperar o valor original do dado criptografado), two-way (quando há a possibilidade de descriptografar a informação) e certificações digitais.

Nas versões anteriores, os certificados digitais eram utilizados para configurar as conexões via SSL (ver Nota 2). Estes certificados eram instalados manualmente no servidor de banco de dados, mas agora, com o SQL Server 2005, todos os componentes necessários estão disponíveis nativamente.

 

Nota 2. SSL

O SSL (Secure Socket Layer) é um protocolo de segurança desenvolvido com a finalidade de compensar a falta de proteção de dados da internet. Ao utilizar o protocolo SSL, você tem a segurança de que suas informações estão criptografadas.

Serviço MASTER KEY (SMK)

Foi criado um novo serviço denominado MASTER KEY para gerenciamento das chaves de criptografia. Este não é um serviço criado para o sistema operacional, e sim uma nova funcionalidade para o SQL Server. Cada instância do SQL Server 2005 tem seu serviço de MASTER KEY criado automaticamente durante o setup, que é criptografado com a API de proteção de dados (DPAPI) que usa as credenciais da conta do serviço do SQL Server.

Esta chave é usada para criptografar todas as chaves de criptografia dos seus bancos de dados. Esta é uma chave de 128 bits e que usa o algoritmo 3DES (este algoritmo foi escolhido porque está contido em todas as versões do Windows suportadas pelo SQL Server 2005). A SMK é uma das mais importantes peças do seu servidor de banco de dados.

Database Master Keys (DMK)

A DMK é utilizada para proteger as informações de segurança do banco de dados como chaves assimétricas ou as chaves privadas de um certificado. Para cada banco de dados (e não por servidor) será gerada uma única DMK, que será utilizada na criptografia de todas as informações daquele banco.

Assim como o SMK, cada DMK é também uma chave de 128 bits 3DES. As chaves DMK são criptografadas usando uma senha e, por default, uma criptografia adicional pela SMK é executada. A razão disto é permitir que o servidor possa internamente descriptografar a chave DMK sem que seja necessária a passagem de senha.

Se não quiser que a DMK seja criptografada a partir de uma senha default, você pode determinar sua senha, porém sua abertura estará condicionada à utilização da senha de forma explícita. A DMK pode ser excluída quando não for mais necessária.

Um exemplo prático

Já possuímos informações necessárias sobre criptografia, vamos visualizar na prática esses novos recursos.

Utilizarei o Express Manager (XM) para me conectar ao servidor do SQL Server. Esta é uma ferramenta  gratuita da Microsoft que auxilia na administração dos bancos de dados, sendo muito parecida com Query Analyzer (pode ser encontrada em http://www.microsoft.com/downloads/details.aspx?FamilyID=c7a5cc62-ec54-4299-85fc-ba05c181ed55&displaylang=en. Criarei um banco de dados chamado SQLMagazine e uma tabela de nome USUARIO com dados criptografados.

Primeiramente vou demonstrar como utilizar o mecanismo Hash (quando não é necessário recuperar o valor original do dado criptografado), que é um excelente mecanismo para armazenamento de senhas e números de cartões de crédito. Depois aprenderemos a criar uma Master Key, um certificado e chaves de criptografias para inserir e selecionar dados.

O primeiro passo é conectar ao servidor de banco de dados através do XM (ver Figura 1).

 Figura 1. Conectando a uma instância do SQL Server pelo Express Manager.

 

 

image002.jpg 

Uma vez conectado ao servidor, você será apresentado à tela inicial do XM (ver Figura 2).

Figura 2. Tela inicial do Express Manager

 

image004.jpg 

O próximo passo é criar o banco SQLMagazine no Query Editor (ver ...

Quer ler esse conteúdo completo? Tenha acesso completo