Por que a Amazon libera chaves privadas em vez de chaves públicas?

19

Meu cérebro está enrolado no eixo em chaves públicas e privadas. Quando você cria um servidor de nuvem (instância) no serviço EC2 da Amazon e, em seguida, deseja se conectar a ele via SSH, a Amazon exige que você baixe uma chave privada para fazer a conexão. A ideia por trás da chave pública / privada não sugere que a Amazon exija que você baixe uma pública?

Além disso, se eu configurar um servidor SFTP para um cliente usar, devo instalar a chave no servidor ou fornecer a eles uma chave do servidor? Em ambos os casos, deveria ser uma chave pública ou privada?

    
por Seth 20.08.2012 / 23:44

4 respostas

35

Pensando mais profundamente sobre o processo de autenticação, o que precisa ser mantido em segredo? A Amazon conhece a metade pública da chave e qualquer pessoa pode conhecer a metade pública. A metade pública do par de chaves, quando combinada com a metade privada, denota que a metade privada foi usada para autenticar.

Sua chave privada que é fornecida quando a Amazon gera um par de chaves para você é útil somente se você for o único que a possui. Se não é um segredo, então qualquer outra pessoa que o conheça também pode se autenticar a qualquer um que detenha a metade pública do par de chaves.

Quem quer que esteja sendo autenticado deve manter a metade privada . Tudo bem se todos no mundo puderem autenticar você segurando a metade pública da chave, mas somente você deve estar no controle da metade privada.

    
por 21.08.2012 / 00:09
17

A Amazon fornece serviços de geração de chaves porque alguns sistemas operacionais (tosse, Windows, tosse) podem não facilitar a geração de pares de chaves SSH.

Com o SSH (e o SFTP), a chave pública é instalada no arquivo authorized_keys do usuário à medida que a instância do EC2 é inicializada. A chave privada é mantida apenas pelo usuário e é apresentada para autenticar no servidor.

Da documentação em:

link

parece que a Amazon gera o par de chaves em seus servidores e envia a chave privada via HTTPS. Isso talvez seja menos que perfeito (idealmente, você e mais ninguém terão a chave privada), mas provavelmente não muito, já que tudo isso ocorre no contexto de sua sessão autenticada e somente você (e a Amazon temporariamente) a chave privada. Você também pode gerar e enviar sua própria chave pública para uso no EC2, mantendo a chave privada estritamente privada.

Para configurar usuários SFTP para autenticação de chave, eles devem gerar chaves SSH em suas máquinas. Uma vez que eles geram um par de chaves, eles só devem enviar a chave pública para você instalar no arquivo autorizado_keys relevante. A chave privada, como o nome indica, é privada.

    
por 20.08.2012 / 23:58
1

A autenticação de chave pública funciona na direção inversa à que você provavelmente está pensando. A chave pública criptografa as mensagens e a chave privada as descriptografa. O servidor armazena a chave pública do titular da conta e a usa para criptografar uma mensagem. Apenas o detentor da chave privada pode descriptografar essa mensagem.

Se você enviar a alguém um segredo criptografado com sua chave pública, se ele puder dizer qual é esse segredo, você sabe que ele possui a chave privada correspondente. O usuário é então autenticado.

A AWS exige que você baixe e salve sua chave privada porque ela não a armazena por motivos de segurança. Como a chave privada não é armazenada em nenhum lugar na AWS, você pode ter certeza de que sua instância do EC2 é segura.

    
por 16.11.2012 / 04:36
0

Em um sentido, isso não importa. Um par de chaves privada / pública consiste em duas partes, e qual delas é a pública é com você. Se algo estiver criptografado com uma chave, você precisará da outra para descriptografá-la. Se você publicou uma chave publicamente e não a outra, a chave privada é aquela que você não publicou.

Como chegar à sua pergunta real: presumivelmente, a chave que a Amazon lhe oferece é permitir que você controle seus próprios recursos, de modo que ela não deva ser dada a outras pessoas. Nesse contexto, você precisa confiar na Amazon para ter sua chave privada, pelo menos por tempo suficiente para configurar.

Se você deseja que seu cliente faça o login dessa maneira, precisará que ele forneça uma chave que ele está preparado para compartilhar com você, portanto, a chave pública. Você instala isso no servidor em authorized_keys, que está efetivamente dizendo "qualquer pessoa que possua a chave privada correspondente a essa pública pode acessar este recurso".

    
por 21.08.2012 / 00:02