Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é o melhor método para usar/armazenar chaves de criptografia no MySQL


Não tenho certeza se usar o MySQL build em criptografia seria a melhor solução para o seu problema.

M_CRYPT do PHP O pacote é considerado muito bom e oferece a flexibilidade de escolher o algoritmo mais adequado às suas necessidades.

Armazenar sua chave em algum outro servidor tem uma grande vantagem:a chave não está na mesma máquina que os dados criptografados. Portanto, enquanto o invasor não tiver controle suficiente sobre a máquina comprometida, ele não poderá acessar a chave.
Se o invasor obtiver controle total da máquina em que os dados estão armazenados, provavelmente poderá consultar o serviço web para a chave.

No entanto, transmitir a chave de uma máquina para outra abre toda uma nova área que precisa ser protegida. Provavelmente envolvendo mais chaves e mais camadas de criptografia, aumentando assim a chance de erros.

A outra opção é digitar a senha na inicialização do servidor e mantê-la apenas na memória.

Solução possível
Se viu uma solução empregada que usou o seguinte método para criptografar arquivos para usuários com acesso à web (não tenho certeza do seu ambiente, mas pode ser útil):
  • Na criação do usuário, uma chave aleatória longa é atribuída ao novo usuário.
  • Esta chave aleatória é armazenada em uma coluna criptografada no registro do usuário.
    (somente esta coluna é criptografada para não afetar o desempenho do restante do registro! )
  • A criptografia da coluna de chave aleatória é feita com 1 senha mestra, armazenada em um arquivo ou na memória.
    (A melhor opção é digitar a senha ao abrir seu servidor web e apenas armazená-la na memória. )
    (Outra abordagem seria deixar o usuário digitar uma senha e usá-la para criptografar/descriptografar a coluna de chave aleatória, mas não tenho certeza se isso aumentaria ou diminuiria a segurança )
  • Todo documento que precisa ser criptografado é criptografado com a chave aleatória para esse usuário e, em seguida, armazenado em disco.
  • Os documentos são armazenados com permissões mínimas no sistema de arquivos.

As vantagens dessa abordagem são:
1. A chave aleatória é criptografada no banco de dados. Assim, você ainda tem a segurança adicional do servidor de banco de dados, em combinação com a coluna criptografada.2. Os documentos são armazenados com chaves diferentes, se o invasor conseguir uma chave, apenas parte dos documentos será comprometida.

No entanto:
Se o invasor se apossar da senha mestra e tiver acesso de leitura à tabela de usuários, todo o sistema está, mais uma vez, quebrado.