Chaves de criptografia do SQL Server e banco de dados (Mecanismo de Banco de Dados)

O SQL Server usa chaves de criptografia para ajudar a proteger dados, credenciais e informações de conexão armazenados em um banco de dados de servidor. O SQL Server tem dois tipos de chave: simétrica e assimétrica. As chaves simétricas usam a mesma senha para criptografar e descriptografar dados. As chaves assimétricas usam uma senha para criptografar dados (chamada chave pública) e outra para descriptografar dados (chamada chave privada).

No SQL Server, as chaves de criptografia abrangem uma combinação de chaves públicas, privadas e simétricas, usadas para proteger dados confidenciais. A chave simétrica é criada durante a inicialização do SQL Server quando você inicia pela primeira vez a instância do SQL Server. A chave é usada pelo SQL Server para criptografar dados confidenciais que são armazenados no SQL Server. As chaves públicas e privadas são criadas pelo sistema operacional e são usadas para proteger a chave simétrica. Um par de chaves pública e privada é criado para cada instância do SQL Server que armazena dados confidenciais em um banco de dados.

Aplicativos para o SQL Server e chaves de banco de dados

O SQL Server tem dois aplicativos principais para chaves: uma SMK (chave mestra de serviço ) gerada no SQL Server para uma instância do mesmo, e uma DMK (chave mestra de banco de dados) usada para um banco de dados.

A SMK é gerada automaticamente na primeira vez que a instância do SQL Server é iniciada, e é usada para criptografar a senha, as credenciais e a chave mestra de banco de dados de um servidor vinculado. A SMK é criptografada com a chave do computador local usando a DPAPI (API de proteção de dados do Windows). A DPAPI usa uma chave derivada das credenciais do Windows da conta de serviço do SQL Server e das credenciais do computador. A chave mestra de serviço só pode ser descriptografada pela conta de serviço sob a qual foi criada ou por um principal que tenha acesso às credenciais da máquina.

A chave mestra de banco de dados é uma chave simétrica usada para proteger as chaves privadas dos certificados e as chaves assimétricas presentes no banco de dados. Ela também pode ser usada para criptografar dados, mas tem limitações de comprimento que a tornam pouco prática para os dados do que usar uma chave simétrica.

Quando é criada, a chave mestra é criptografada com o algoritmo DES Triplo e uma senha fornecida pelo usuário. Para habilitar a descriptografia automática da chave mestra, uma cópia da chave é criptografada com o uso da SMK. Ela é armazenada no banco de dados em que é usada e no banco de dados master do sistema.

A cópia da DMK armazenada no banco de dados master do sistema é silenciosamente atualizada sempre que a DMK é alterada. No entanto, esse padrão pode ser alterado com o uso da opção DROP ENCRYPTION BY SERVICE MASTER KEY da instrução ALTER MASTER KEY. Uma DMK não criptografada pela chave mestra de serviço deve ser aberta com a instrução OPEN MASTER KEY e uma senha.

Gerenciando o SQL Server e chaves de banco de dados

O gerenciamento de chaves de criptografia consiste na criação de novas chaves de banco de dados, na criação de um backup das chaves de servidor e de banco de dados, além de saber quando e como restaurar, excluir ou alterar as chaves.

Para gerenciar chaves simétricas, você pode usar as ferramentas incluídas no SQL Server para fazer o seguinte:

  • Fazer backup de uma cópia das chaves de servidor e de banco de dados para poder usá-las para recuperar uma instalação de servidor, ou como parte de uma migração planejada.

  • Restaurar uma chave salva anteriormente em um banco de dados. Isso permite que uma nova instância de servidor acesse dados existentes que ela não criptografou originalmente.

  • Excluir os dados criptografados em um banco de dados no evento improvável que você não possa mais acessar dados criptografados.

  • Recriar chaves e criptografar novamente os dados no evento improvável que a chave seja comprometida. Como prática recomendável de segurança, você deve recriar as chaves periodicamente (por exemplo, a cada poucos meses) para proteger o servidor contra ataques que tentem decifrar as chaves.

  • Adicionar ou remover uma instância do servidor de uma implantação em expansão do servidor em que vários servidores compartilham um único banco de dados e a chave que fornece criptografia reversível para esse banco de dados.

Informações importantes sobre segurança

O acesso a objetos protegidos pela chave mestra de serviço requer ou a conta de Serviço do SQL Server que foi usada para criar a chave, ou a conta do computador (máquina). Ou seja, o computador está ligado ao sistema em que a chave foi criada. Você pode alterar a conta de Serviço do SQL Serverou a conta do computador, sem perder o acesso à chave. Porém, se alterar ambos, você perderá o acesso à chave mestra de serviço. Se perder o acesso a essa chave sem um desses dois elementos, você não poderá descriptografar dados e objetos criptografados com o uso da chave original.

As conexões protegidas com a chave mestra de serviço não podem ser restauradas sem essa chave.

O acesso aos objetos e dados protegidos com a chave mestra de banco de dados requer apenas a senha usada para ajudar a proteger a chave.

Observação sobre cuidadosCuidado

Se você perder todo o acesso às chaves descritas anteriormente, perderá o acesso a objetos, conexões e dados protegidos por essas chaves. É possível restaurar a chave mestra de serviço, conforme descrito nos links aqui mostrados, ou você pode voltar ao sistema de criptografia original para recuperar o acesso. Não há nenhuma "porta dos fundos" para recuperar o acesso.

Nesta seção