Estou procurando uma maneira de fazer uma autenticação por SSH, igual o que o github faz.
O cliente terá a possibilidade de fazer conexões de uma aplicação instalada no desktop no servidor. Porém, como isso envolve dados sigilosos, gostaria de aumentar a segurança.
Alguém conhece algum material bom sobre o assunto?
Desculpa subir o tópico…
Mas estou precisando bastante disso, e não sei como procurar…
gomesrod
Olá,
Se precisa apenas proteger os dados que trafegam pela rede, basta criptografá-los antes de enviar pelo Socket, e decriptografar no lado receptor. Pode usar chaves simétricas para simplificar o processo.
Procure no google por Criptografia Java que aparece bastante coisa.
Se, por outro lado, é necessário adicionar uma camada de segurança a mais com autenticação (o Server ter certeza que é seu client que está conectando, e vice-versa), é preciso implementar um “handshake” onde ambos os lados trocam certificados. Não sei se existe algo mais ou menos pronto para isso, infelizmente essa área não é minha especialidade, mas para ter uma idéia aqui tem uma descrição do algoritmo:
O
oyama
Não conheço o este esquema que você citou de SSH do github, mas sei que existe um esquema de fazer uma VPN usando SSH. Se for isto, você não precisa mudar o seu programa, mas tem que configurar o seu computador para usar este canal de VPN para que a conexão entre a máquina do cliente e o servidor seja através desta VPN. Se não nada disto, deixo a dica de usar uma VPN para garantir a parte de confidencialidade dos dados sem ter que mudar o seu programa. Agora se o seu objetivo é a parte de autenticação e autorização, então teria que entender o que você precisa…
gomesrod
Deixar essa parte por conta de ferramentas externas (como a conexão por VPN) também é uma excelente idéia.