está compartilhando o mesmo TOTP em vários servidores menos seguro?

2

Há implicações de segurança ("não insignificantes") para usar o mesmo segredo OTP em vários servidores?

Na minha rede, estou executando o gitlab-ce , nextcloud e senha de autoatendimento LTB entre alguns outros serviços. GL e NC suportam 2FA via TOTP, mas como add-ons individuais e não através de uma autenticação central (como LDAP) ou outra forma compartilhada.

Estou trabalhando em um PR para SSP para habilitar 2FA para a alteração de senha, mas então eu me pergunto se seria possível ter GL usar o mesmo segredo OTP armazenado em LDAP. Eu quero sugerir apoiar isso para o GL, mas somente se ele não enfraquecer o sistema.

A consequência de não centralizá-lo não é grande: cada aplicativo / servidor armazenará seus próprios segredos 2FA, de modo que o usuário deve gerenciá-los individualmente. Ao contrário das senhas que tecnicamente não exigem um gerenciador de senhas, não conheço ninguém capaz de lembrar seu segredo de OTP e gerar códigos em sua cabeça. Assim, os usuários são forçados a usar um aplicativo de gerenciamento (como o Google Authenticator ou Autenticador FreeOTP). Reduzir de uma lista de vários segredos para um é principalmente apenas conveniência.

Da mesma forma, além da conveniência, há vantagens conhecidas em centralizar o armazenamento secreto de OTP?

    
por r2evans 07.11.2016 / 19:16

1 resposta

3

O problema é que, como apontou @HBruijn, o valor TOTP usado para fazer login em um serviço pode ser usado pelo invasor para efetuar login em outro serviço. E isso dentro de um intervalo de tempo de talvez dois minutos. Embora seu timestep possa ser apenas 30sec, o RFC especifica que o serviço de validação deve pesquisar o valor OTP para frente e para trás no tempo. Isto é recomendado devido ao desvio do relógio. link

O outro ponto é que todo o seu sistema é tão seguro quanto a parte mais semanal. Se algum dos sistemas / bancos de dados perder o segredo do OTP, todos os sistemas serão comprometidos.

Ao terminar sua pergunta, você deve pensar em usar um sistema centralizado, que armazena os segredos e realiza a validação. Dessa forma, não há possibilidade de ataques de repetição e você só precisa proteger o segredo da OTP em um só lugar.

Você pode querer dar uma olhada em privacyIDEA , que exatamente faz isso. É um sistema de autenticação que gerencia centralmente os dispositivos de autenticação, como tokens TOTP ou Apps para usuários. Todos os aplicativos autenticados contra esse serviço. (Isenção de responsabilidade: sou desenvolvedor principal do privacyIDEA)

O problema é que todos os aplicativos conectados precisam estar conectados, ou seja, cada aplicativo deve poder conversar com o privacyIDEA. Para isso, o aplicativo deve ser capaz de atuar como um cliente RADIUS ou falar com o API REST de autenticação . Existem vários plug-ins para muitos aplicativos diferentes como o OTRS, ownCloud, Wordpress, dokuwiki, Typo3 ...

    
por 08.11.2016 / 07:04