Executando verificação de segurança...
1

Onde salvar chave de criptografia

Ola pessoal!

Estou trabalhando em uma aplicação simples em Spring, com um front bem básico usando JQuery mesmo e MySQL de banco.

Nessa aplicação, o usuário cria uma senha e estou usando o AES pra criptografia para guardar no banco. O algoritmo, assim como outros de criptografia, utiliza uma chave e uma string inicial para realizar a criptografia.

Como eu posso guardar essas duas informações de forma a se garantir a segurança do sistema?

Carregando publicação patrocinada...
2
1
1

Algumas pessoas vão dizer para você armazerar no .env, .ini, etc.

Outras vão dizer para você confiar no painel do gestor de aplicações e por ela lá no banco de dados deles.

A chave de criptografia de um banco de dados é umas das proteções que ele deve ter, mas não a única. Você tem que proteger seu banco de dados se houver vazamento dessa chave, sempre estar um passo à frente. Nestes casos é comum você deixar teu banco de dados em outro servidor, mas na mesma rede (para diminuir a latência), para quando um for comprometido, não comprometer o outro.

Não coloque todos os ovos na mesma cesta.

Já se perguntou: o que você está encriptando com essa chave? O acesso ao sistema? Senhas? Tudo? Dados confidenciais? Isso é importante você saber, porque talvez esteja fazendo de forma errada, a ponto de tornar desnecessário o uso de uma senha mestra para o banco de dados.

Eu tenho um projeto que optei usar chaves assimétricas. As senhas dos usuários são geradas a partir de saltos gerados na hora, e o salto é armazenado junto ao hash criado da senha. Na criação do usuário, uma chave privada é criada para ele, e arquivada no banco de dados.

Para armazenar algo criptografado, o usuário combina sua chave privada + a chave pública do aplicativo e encripta as informações dentro do banco de dados.

Dessa forma, para quem acessou o banco de dados e roubou as chaves privadas, ainda vai precisar da chave pública, e olha só, tá em outro lugar, com outra proteção. Dificulta o processo do invasor.

A chave pública do serviço é gerada na primeira inicialização do mesmo e armazenada em um local temporário do sistema operacional. Cada ambiente tem uma chave pública.

Isso tudo dificulta o acesso do invasor, mas com engenharia social, o que é a maior de todas as vulnerabilidades (o ser humano), pode conceder ao invasor o acesso que ele precisa. Uma vez que o invasor acessou um servidor, ele sempre irá conseguir entrar no mesmo. Sempre.

Resumo

Você pode dificultar, mas se alguém estudar bem seu aplicativo, ela poderá invadir. Contrate profissionais de cibersegurança para lidar com isso.

Proteger acessos é o seu primeiro passo.

1

Única forma segura é o chip TPM (Trusted Platform Module), porém ainda é algo muito novo e vai demorar para os softwares começarem a usá-lo.
No momento não importa onde você guarde sua chave, sempre poderão encontrar onde ela é armazenada e fazer engenharia reversa da proteção.

HACKING: Como EXTRAIR senhas salvas no gerenciador de senhas do Google (Google Chrome)
https://www.tabnews.com.br/Axiomatic/hacking-como-extrair-senhas-salvas-no-gerenciador-de-senhas-do-google-google-chrome

Se nem o Google consegue, imagine nós.