Autenticação de chave pública SSH - sempre requer que os usuários gerem seu próprio par de chaves?

7

Eu estava trabalhando com um parceiro hoje e precisava enviar arquivos para o meu servidor usando scp . Eu tenho senhas desativadas na configuração SSH do servidor, então eu queria que elas usassem autenticação de chave pública. Gerei o par de chaves para eles no servidor e dei a eles a chave privada e coloquei a chave pública no arquivo authorized_keys apropriado.

Depois de um monte de problemas com eles, eles finalmente conseguiram um administrador de sistema mais experiente, e ele me repreendeu por lidar com a geração de chaves dessa maneira. Ele disse que, dando-lhes uma chave privada gerada no meu sistema, eu tinha permitido que eles fizessem um ataque de força bruta contra outras chaves geradas no mesmo servidor.

Eu até perguntei a ele "então se eu tenho uma conta em um servidor, e eu consigo logar com uma senha, mas eu quero automatizar algo e gerar um par de chaves naquele sistema, isso me dá um vetor de ataque para brute forçando chaves de outros usuários? " e ele disse sim .

Eu nunca ouvi falar disso, é verdade? Alguém pode me indicar uma discussão sobre esse ataque?

    
por schinazi 13.01.2011 / 00:52

4 respostas

8

Bem ... não, isso não está correto na grande maioria das circunstâncias devido à geração de aleatoriedade adequada em um sistema. No entanto, é teoricamente possível que um servidor gere uma aleatoriedade que tenha um viés, se não for tomado cuidado pelos desenvolvedores (no caso do Linux, os desenvolvedores do kernel) para garantir que a fonte de aleatoriedade seja "boa". Se houver um viés na aleatoriedade, um ataque pode ser executado em um tempo de força bruta maior que as chaves do servidor. No entanto, isso é muito mais uma questão teórica do que real - na prática, a fraqueza no RNG (Random Number Generator) é um ataque muito menos provável do que um ataque de canal lateral ao software criptográfico ou acesso ao servidor. de maneira diferente.

Então, resumindo, não, ele está incorreto. Além dos fundamentos criptográficos fundamentais (as chaves DSA são geradas por padrão? RSA?), Uma chave ssh não contém nenhuma informação sobre qualquer outra chave ssh gerada no mesmo sistema.

    
por 13.01.2011 / 01:03
6

O ponto principal de uma chave privada é que ela é privada para o usuário e conhecida apenas pelo usuário. Como usuário, não quero que outras pessoas gerem minha chave privada porque isso significa que outra pessoa tem acesso à minha chave privada e, portanto, tem a oportunidade de agir se elas forem eu em sistemas que tenham metade da chave pública definida como credenciais válidas.

Do seu PoV você também tem mais responsabilidade. Você não precisa apenas manter seu sistema seguro, de modo que chaves públicas inadequadas não possam ser instaladas em locais, mas você tem a responsabilidade de manter as chaves privadas geradas em segurança durante todo o seu ciclo de vida. Se houver uma ação indesejável tomada com um determinado par de chaves como autenticação e o usuário souber que outra pessoa tem (ou teve) uma cópia da chave ou a chave foi transportada de maneira menos segura que eles podem se virar (corretamente ou erroneamente) e dizer que eles mantiveram sua cópia perfeitamente segura, por isso deve ser sua cópia que foi comprometida no seu final ou em trânsito. Isso pode soar como cobertura de bunda, e isso é porque é: tanto do seu PoV quanto dos usuários, pois você está se certificando de quem é responsável pelo que está marcado corretamente.

Assim, se as preocupações levantadas pelo seu especialista são válidas ou não (pelo meu entendimento, esses ataques são teoricamente possíveis, mas, até onde eu sei, podem ser implementados na próxima geração, ou a menos que um novo buraco sério na matemática ou implementação geral é encontrada (o que é pouco provável)), tanto ao usar meu chapéu como ao usar meu chapéu de administrador eu prefiro que os usuários tenham total controle de suas chaves privadas e administradores (junto com todos os outros no planeta, é claro) para não ser permitido em qualquer lugar perto deles.

Mesmo se você não concordar com o acima, o principal problema de transporte está longe de ser trivial: como você pode ter 100% de certeza de que a chave privada foi vista pelo usuário pretendido e somente o usuário pretendido e não foi armazenado (intencionalmente ou acidentalmente) de maneira menos segura (como deixada em uma caixa de entrada de e-mail ou em um arquivo temporário que resultou do desmembramento da mesma e descriptografada). Se você usa um método de transporte seguro que requer que o usuário autentique, como você obtém os detalhes de autenticação para esse sistema para o usuário com segurança? É claro que existem maneiras de tornar o principal assunto de transporte "seguro o suficiente" (onde "bastante" depende muito do que as chaves dão acesso) para a maioria dos usos, mas se o usuário gerar suas chaves e distribuir as partes públicas, não tem um problema de distribuição de chaves para se preocupar nesse sentido (você só precisa se preocupar com os usuários que mantêm as partes privadas seguras, mas não há nada que possa impedir um usuário realmente descuidado de não ser seguro, então é um problema não importa o que você faça).

Uma nota final: uma coisa que poderia ser um problema se suas chaves privadas fossem todas geradas no mesmo lugar é se esse lugar tiver uma configuração de geração de chave ruim, como o problema encontrado no OpenSSL do Debian / Lenny. pacote no ano passado. Nesse caso, você teria um trabalho de revogação e regeneração de muitas chaves privadas. Isso pode ser parte da preocupação de seu especialista externo sobre o assunto.

    
por 13.01.2011 / 02:20
3

Tenho certeza que isso é BS. Privado deve ser gerado aleatoriamente. Portanto, enquanto não houver viés nessa aleatoriedade, não poderá haver uma conexão entre diferentes chaves privadas.

    
por 13.01.2011 / 01:12
3

A semente aleatória geralmente vem de / dev / random . A menos que você tenha de alguma forma alterado o ssh-keygen para usar outra semente aleatória (você saberia se o fez), é altamente improvável que alguém seja capaz de bater com essa chave para descobrir como gerar uma nova chave para quebrar a sua chave. sistema.

    
por 13.01.2011 / 03:28