Password Hash Synchronization – Como funciona?

MD4+salt+PBKDF2+HMAC-SHA256

Não é anormal ver varios profissionais com duvidas de como funciona o Hash Synchronization, nesta postagem vou mostrar detalhadamente, de acordo com a documentação da @microsoft, como que o hash synchronization funciona!

Como bons profissionais não podemos executar nada sem planejamento, então, antes de tudo planeje seu ambiente

Entendendo a sincronização de hash de senha

O serviço de domínio Active Directory armazena senhas na forma de uma representação de valor hash da senha de usuário real. Um valor hash é resultado de uma função matemática (o algoritmo de hash). Não há nenhum método para reverter o resultado de uma função unidirecional para a versão de texto simples de uma senha. Você não pode usar um hash de senha para fazer login na sua rede no local.

Para sincronizar sua senha, o Azure AD Connect faz o extrato do hash da senha da instância do Active Directory no local. O processamento de segurança extra é aplicado ao hash de senha antes de ser sincronizado com o serviço de autenticação do Azure Active Directory. As senhas são sincronizadas por usuário e em ordem cronológica. O fluxo real de dados do processo de sincronização de hash da senha é semelhante à sincronização de dados de usuários, como DisplayName ou Endereços de E-mail. No entanto, as senhas são sincronizadas com mais frequência do que a janela de sincronização do diretório padrão para outros atributos. O processo de sincronização de hash da senha é executado a cada 2 minutos. Você não pode modificar a frequência deste processo. Quando você sincroniza uma senha, ela substitui a senha de nuvem existente.

Na primeira vez que você habilita o recurso de sincronização de hash por senha, ele realiza uma sincronização inicial das senhas de todos os usuários no escopo. Você não pode definir explicitamente um subconjunto de senhas de usuário que deseja sincronizar. Quando você altera uma senha no local, a senha atualizada é sincronizada, na maioria das vezes em questão de minutos. Se ocorrer um erro durante uma tentativa de sincronizar uma senha, um erro será registrado no visualizador de eventos. A sincronização de uma senha não tem impacto no usuário que está atualmente conectado. Sua sessão de serviço em nuvem atual não é imediatamente afetada por uma alteração sincronizada de senha que ocorre enquanto você está conectado a um serviço de nuvem. No entanto, quando o serviço de nuvem exige que você se autentique novamente, você precisa fornecer sua nova senha.

Um usuário deve inserir suas credenciais corporativas uma segunda vez para autenticar no Azure AD, independentemente de estar conectado à sua rede corporativa. Esse padrão pode ser minimizado, no entanto, se o usuário selecionar a caixa de seleção Keep me (KMSI) no login. Esta seleção define um cookie de sessão que ignora a autenticação por 180 dias. O comportamento do KMSI pode ser ativado ou desativado pelo administrador do Azure AD. Além disso, você pode reduzir os prompts de senha ligando o SSO Seamless que assina automaticamente os usuários quando eles estão em seus dispositivos corporativos conectados à sua rede corporativa.

Descrição detalhada de como funciona a sincronização de hash por senha

O proximo passo e descrever em profundidade como funciona a sincronização de hash de senha entre o Active Directory e o Azure AD.

  1. A cada dois minutos, o agente de sincronização de hash de senha no servidor AD Connect solicita hashes de senha armazenados (o atributo unicodePwd) de um DC através do protocolo padrão de replicação MS-DRSR usado para sincronizar dados entre DCs. A conta de serviço deve ter Alterações de Diretório de réplica e replicação de alterações de diretório Todas as permissões de AD (concedidas por padrão na instalação) para obter os hashes de senha.
  2. Antes de enviar, o DC criptografa o hash de senha MD4 usando uma chave que é um hash MD5 da tecla de sessão RPC . Em seguida, ele envia o resultado para o agente de sincronização de hash de senha sobre RPC. O DC também passa o hash para o agente de sincronização usando o protocolo de replicação , para que o agente seja capaz de descriptografar o envelope. Depois que o agente de sincronização de hash de senha tiver o envelope criptografado, ele usa o MD5CryptoServiceProvider e o salt para gerar uma chave para descriptografar os dados recebidos de volta ao seu formato MD4 original. Em nenhum momento o agente de sincronização de hash de senha tem acesso à senha de texto clara. O uso do MD5 pelo agente de sincronização de hash de hash por senha é estritamente para compatibilidade de protocolo de replicação com o DC, e ele só é usado em locais entre o DC e o agente de sincronização de hash de senha.
  3. O agente de sincronização de hash de senha expande o hash de senha binária para 64 bytes, convertendo primeiro o hash em uma sequência hexabrimal de 32 bytes e, em seguida, convertendo esta sequência de volta em binário com codificação UTF-16. O agente de sincronização de hash de senha adiciona um sal, consistindo de um sal de comprimento de 10 byte, ao binário de 64 byte para proteger ainda mais o hash original. O agente de sincronização de hash por senha combina então o sal de hash do MD4 e o inseri na função PBKDF2. 1000 iterações do algoritmo de hashed hmac-SHA256 são usadas. O agente de sincronização de hash de senha pega o hash de 32 byte resultante, concatena tanto o sal quanto o número de iterações SHA256 para ele (para uso pelo Azure AD), então transmite a sequência do Azure AD Connect para Azure AD sobre SSL. Quando um usuário tenta fazer login no Azure AD e digita sua senha, a senha é executada através do mesmo processo MD4+salt+PBKDF2+HMAC-SHA256. Se o hash resultante corresponder ao hash armazenado no Azure AD, o usuário digitou a senha correta e é autenticado.
  4. O agente de sincronização de hash de senha expande o hash de senha binária para 64 bytes, convertendo primeiro o hash em uma sequência hexabrimal de 32 bytes e, em seguida, convertendo esta sequência de volta em binário com codificação UTF-16.
  5. O agente de sincronização de hash de senha adiciona um Salt, consistindo de um Salt de comprimento de 10 byte, ao binário de 64 byte para proteger ainda mais o hash original.
  6. O agente de sincronização de hash por senha combina então o Salt de hash do MD4 e o inseri na função PBKDF2. 1000 iterações do algoritmo de hashed hmac-SHA256 são usadas.
  7. O agente de sincronização de hash de senha pega o hash de 32 byte resultante, concatena tanto o Salt quanto o número de iterações SHA256 para ele (para uso pelo Azure AD), então transmite a sequência do Azure AD Connect para Azure AD sobre SSL.
  8. Quando um usuário tenta fazer login no Azure AD e digita sua senha, a senha é executada através do mesmo processo MD4+salt+PBKDF2+HMAC-SHA256. Se o hash resultante corresponder ao hash armazenado no Azure AD, o usuário digitou a senha correta e é autenticado.

Vantagens adicionais

  • Em geral, a sincronização de hash de senha é mais simples de implementar do que um serviço de federação. Ela não exige quaisquer servidores adicionais e elimina a dependência de um serviço de federação altamente disponível para autenticar usuários.
  • A sincronização de hash de senha também pode ser habilitada além da federação. Ela pode ser usada como um fallback se seu serviço de federação sofrer uma interrupção.

Bibliografia

https://docs.microsoft.com/pt-br/azure/active-directory/hybrid/how-to-connect-password-hash-synchronization

https://sparxsystems.com/resources/gallery/diagrams/software/sw-integrate-on-premises-ad-domains.html

https://docs.microsoft.com/en-us/azure/architecture/example-scenario/wvd/multi-forest


Um comentário sobre “Password Hash Synchronization – Como funciona?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s