A criptografia de procedimento de armazenamento do SQL Server é segura?

2

Estou usando o SQL Server 2008 Enterprise no Windows Server 2003 Enterprise. Eu desenvolvi alguns procedimentos de armazenamento para o SQL Server e a máquina instalada com o SQL Server pode não estar totalmente sob meu controle (pode ser usada por terceiros não confiáveis).

Desejo proteger o código-fonte T-SQL do procedimento de armazenamento (ou seja, não pode ser visualizado por outra parte) usando a função de procedimento de armazenamento de criptografia fornecida pelo SQL Server. Não tenho certeza se o procedimento de criptografar armazenar é 100% seguro e se o administrador da máquina (instalado com o SQL Server) ainda tem maneiras de exibir os códigos-fonte do procedimento de armazenamento?

obrigado antecipadamente, George

    
por George2 14.12.2009 / 18:17

3 respostas

1

Tenha certeza de que, mesmo se você usar criptografia para Stored Procedures no SQL Server 2008, ela poderá ser facilmente descriptografada usando ferramentas de terceiros. Há muitas delas e uma delas é link .

Se você estiver usando software proprietário, adicionar outra camada usando criptografia NÃO será suficiente se houver um determinado usuário. Tudo o que você pode fazer é pedir-lhes para assinar um Acordo de Não Divulgação (NDA) e cumprir essas regras.

    
por 26.12.2009 / 20:08
1

É "seguro", pois o SQL Server armazenou o texto do procedimento criptografado e a chave necessária para descriptografá-lo no banco de dados, portanto, quando precisar do texto do procedimento - compilar o plano de consulta para executá-lo - ele pode descriptografar.

O máximo que o SQL Server pode fazer é ofuscar a chave, tentando ocultá-la para que ela não seja facilmente roubada.

Historicamente, houve um ataque de repetição, em que se você usasse o ALTER PROCEDURE, ele usaria a mesma chave novamente. Ao fazer uso do ALTER PROCEDURE com um texto simples conhecido, você pode comparar a saída criptografada resultante e recuperar o fluxo de chaves, depois usá-lo para descriptografar o texto original criptografado. (Ele usa a cifra de fluxo RC4, que produz uma sequência de bits pseudo-aleatória chamada fluxo de chaves, que é então XORed com o texto simples para criptografar ou XOR com o texto criptografado para descriptografar.) Não sei se ainda é o caso SQL Server 2008.

    
por 24.11.2010 / 18:02
1

Um DBA do SQl Server sempre terá uma maneira de visualizar o conteúdo de um procedimento armazenado se eles tentarem com bastante intensidade. A única maneira de tornar esse esforço mais difícil é usar um produto de terceiros como o sql-shield que usará um esquema de criptografia diferente para impedir que os ataques de descriptografia "usuais" sejam bem sucedidos. Sempre que você fornecer dados criptografados e acesso à descriptografia chave você nunca pode impedir a descriptografia dos dados (não importa o quão ofuscado o processo pode ser) .A criptografia só é realmente "boa" quando a chave de criptografia e os dados não estão disponíveis juntos.Você também pode considerar ofuscar seu código usando um CLR armazenado procedimento e qualquer um dos vários ofuscadores de .net disponíveis. Consulte Procedimentos Armazenados CLR para um exemplo.

    
por 24.11.2010 / 18:44