As chaves de registro dos serviços do Windows são armazenadas com segurança - criptografadas no disco, protegidas por uma ACL por padrão ou similar?
A chave sendo em HKLM\System\CurrentControlSet\Services\{SERVICE_NAME}
ou similar.
Por exemplo, digamos que eu tenha um aplicativo java que é executado no Windows como um serviço e precisa de senhas/frases secretas específicas do ambiente na inicialização. É seguro colocá-las no registro como parâmetros de inicialização no serviço?
Meu palpite é que não, eles são texto não criptografado no disco em algum lugar nas entranhas c:\windows
e que as ACLs não se aplicam a chaves de registro normais, mas não consigo encontrar nenhuma informação de uma forma ou de outra.
Pergunta de acompanhamento - qual é uma boa abordagem para passar segredos para um serviço quando ele é iniciado?
O registro não pode ser acessado por não administradores, portanto, os segredos do registro estão protegidos contra eles.
A
HKEY_LOCAL_MACHINE\SYSTEM
seção do registro está localizada fisicamente no arquivoC:\Windows\System32\config\SYSTEM
e não pode ser acessada quando o Windows está em execução. Um usuário sempre pode inicializar o Linux e montar o arquivo, mas alguém com esse nível de conhecimento nunca pode ser bloqueado se tiver acesso físico ao computador.Um serviço de sistema malévolo pode fazer qualquer coisa no computador, então não faz sentido manter segredos dele.
A única proteção possível é criptografar os dados, mas isso também não pode bloquear alguém que tenha a capacidade de desmontar seu programa e extrair o algoritmo.
Não há maneiras seguras de proteger os dados. Tudo o que você pode esperar fazer é tornar muito difícil para alguém que não tenha um certo nível de conhecimento ou que não esteja disposto a investir pessoalmente o tempo necessário.