Como controlar com segurança o acesso a um servidor de chaves de back-end?

1

Eu preciso criptografar dados com segurança em meu banco de dados para que, se o banco de dados for descartado, os hackers não consigam descriptografar os dados.

Estou planejando criar um servidor de chaves simples em uma máquina diferente e permitir o acesso do servidor de banco de dados a ele (restrito por endereço IP no servidor de chaves para permitir o servidor de banco de dados). O servidor principal deve conter a chave necessária para criptografar / descriptografar dados.

No entanto, se um hacker conseguir um shell no servidor de banco de dados, ele poderá solicitar a chave do servidor de chaves e, portanto, descriptografar os dados no banco de dados.

Como eu poderia evitar isso (assumindo que todos os firewalls estão no lugar, DB não está conectado diretamente à internet, etc)? Ou seja, existe algum método que eu poderia usar que poderia garantir uma solicitação do servidor de banco de dados para o servidor de chaves para que mesmo se um hacker tivesse um shell no servidor de banco de dados eles seriam incapazes de fazer essas mesmas solicitações? Solicitações assinadas do servidor de banco de dados poderiam tornar menos triviais essas solicitações - suponho que isso ajudaria a aumentar o tempo que levaria para comprometer o servidor principal, algo que um hacker provavelmente não teria muito.

Tanto quanto eu posso ver, se alguém conseguir um shell no servidor de banco de dados, tudo será perdido de qualquer maneira. Isso poderia ser mitigado usando uma chave por item de dados no banco de dados, de modo que pelo menos não há uma única chave "mestre", mas várias chaves que o hacker precisaria acessar.

Qual seria um método seguro de garantir que solicitações do servidor de banco de dados para o servidor de chaves fossem autênticas e confiáveis?

    
por andy 20.09.2012 / 12:10

1 resposta

0

However, if a hacker were able to get a shell on the DB server, they could request the key from the key server and therefore decrypt the data in the database.

How could I prevent this[...]?

Basicamente, você nunca poderia, a menos que você tenha projetado um sistema para mitigar esse tipo de ataque desde o começo. A arquitetura atual do PC não permite esse tipo de aplicativo. Esforços como o Base de Computação Segura da Próxima Geração foram projetados para lidar com um tipo semelhante de tarefa, restringindo a capacidade de executar caminhos de código apenas para os "necessários".

Criptografia de ponta a ponta, onde as chaves de criptografia / descriptografia são gerenciadas pelos clientes e o servidor de banco de dados não tem nenhum conhecimento das chaves, pode apresentar outra opção. Apesar de não deixar o servidor de banco de dados, informações suficientes para trabalhar (como índices) podem reduzir significativamente sua capacidade de pré-processar dados e, assim, reduzir seu valor para seu aplicativo.

    
por 20.09.2012 / 22:43