Eu tenho um serviço de rede Linux que precisa ler um segredo para descriptografar alguns dados. O aplicativo também permite que os usuários alterem a senha de criptografia durante o tempo de execução. O aplicativo será executado em uma conta de usuário separada e o segredo está atualmente em um arquivo de propriedade desse usuário. Estou tentando pensar em maneiras de melhorar essa situação, já que a senha está em texto sem formatação em um arquivo.
O aplicativo pode ser iniciado como root e, em seguida, descartar privilégios para o usuário do aplicativo. Dessa forma, o arquivo secreto pode ser de propriedade de root, mas, em seguida, o cenário de alteração de senha é interrompido, a menos que eu esteja executando outro daemon como root.
Estou basicamente procurando evitar que o segredo esteja em texto puro no disco, e sem um ser humano no loop para iniciar o processo de criptografia, o melhor que pode ser feito é dificultar a obtenção do segredo mesmo se alguém obtém execução de código.
Alguém pode compartilhar alguma sugestão sobre como posso melhorar a situação atual? O keyctl é algo que é aplicável aqui ou é normalmente usado apenas para armazenar segredos do kernel?
Qualquer sugestão será apreciada!
Esta questão foi considerada ampla para este site. Para reduzi-lo, o keyring do kernel (usando keyctl) é um local apropriado para os segredos do aplicativo?