Jump to content

Segurança numa plataforma Servidor-Cliente


jarsantos

Recommended Posts

Boas, gostava de criar para um projecto de segurança em redes uma aplicação servidor e uma aplicação cliente que fosse o mais segura possível.

Os problemas de segurança que encontro são:

- A comunicação tem que ser segura, garantir a privacidade, integridade e autenticidade das mensagens.

- Dificultar ao máximo o acesso ao código da aplicação cliente

- Garantir de alguma forma que o servidor apenas aceite mensagens vindas da aplicação cliente e não é nenhum atacante a criar os pacotes à mão e a enviar.

- Colocar uma firewall para apenas aceitar pacotes específicos num porto específico.

A parte de cifrar as mensagens e da firewall eu sei fazer, mas as outras duas questões não faço a minima ideia de como fazer. Agradecia sugestões.

O projecto será desenvolvido em Java ou C/C++ caso o C e o C++ garantam maior segurança na visualização do código da aplicação cliente.

Link to comment
Share on other sites

O melhor para encriptação e autenticação é estabelecer uma ligação baseada em sockets TLS, com autenticação mútua (servidor e cliente) recorrendo a certificados.

O Java tem uma extensão chamada JSSE (Java Secure Socket Extension): http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html

Já agora, a página gera sobre segurança em Java é útil: http://java.sun.com/javase/technologies/security/

Quanto a dificultar o acesso ao código, bem, nada é completamente seguro, e se o programa corre no PC do cliente, não podes ter a certeza que ele não lhe vai aceder. Mas se o objectivo é apenas a segurança o código do cliente é indiferente, o que interessa é assegurar que o seu certificado único é bem guardado.

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Link to comment
Share on other sites

Obrigado pela resposta IceBrain, mas estou a ter algumas dificuldades a idealizar no papel todo o funcionamento do sistema.

Como é que protejo um certificado? mesmo que o atacante tenha acesso completo ao código da aplicação cliente?

Como é que a quando do download da aplicação do cliente lhe associo um certificado? Ou todos os clientes podem ter o mesmo certificado?

Obrigado pelos links que forneceste, foram uteis para perceber as várias etapas para estabelecer uma comunicação segura.

Link to comment
Share on other sites

É suposto cada cliente ter um certificado, visto que este tem uma chave privada que permite descodificar os dados que são destinados ao cliente.

Quanto a fornecer o certificado juntamente com a aplicação: epá, sinceramente não posso falar muito sobre isso, sempre que usei autenticação mútua foi com servidores ssh, e copiei o fingerprint da certificado do cliente à mão.

Eu diria que podes gerar um certificado personalizado para o cliente (guardando o seu fingerprint na BD), incluí-lo no zip com o programa e depois o cliente faz download do zip com o programa + certificado através de HTTPs - isto seria possível de se fazer automaticamente usado PHP com usando a extensão OpenSSL: http://php.net/manual/en/book.openssl.php

Mas não confies nisto, é melhor que perguntes a quem tenha experiência nesse caso específico.

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Link to comment
Share on other sites

  • 1 month later...

Já agora fica aqui uma descrição breve de como vou implementar a comunicação:

1 - O servidor vai ter um certificado e é através dele que um utilizador se regista no servidor

2 - Para fazer a autenticação do cliente perante o servidor vai ser utilizado o Augmented Password-Authenticated Key Agreement (A-EKE) com Diffie-Hellman.

3 - Para estabelecer chaves de sessão entre clientes, vai ser utilizado o protocolo de gestão de chaves Kerberos, com a utilização de nounces e uma extensão baseada no Needham-Schroeder revisitado para garantir a frescura das mensagens.

4 - Praticamente todas as mensagens vão ter HMAC.

Não sei se é a melhor abordagem, mas agradecia comentários e sugestões pois o prof é bastante exigente.

Link to comment
Share on other sites

  • 2 weeks later...
O projecto será desenvolvido em Java ou C/C++ caso o C e o C++ garantam maior segurança na visualização do código da aplicação cliente.

isso tá totalmente errado... sory... estás a falar de desassembly e isso é impossivel de proteger. o PC em ultima instancia cria código maquina que pode ser sempre analisado..

é curioso que ainda ontem apresentei um documento onde é efectuada uma análise desse tipo em assembley e neste caso o Flash Player

http://documents.iss.net/whitepapers/IBM_X-Force_WP_final.pdf

é por ai que o cracking (o real) se move... a unica coisa que podes fazer é fazer um código sem erros que permitam ser explorados...

e já agora... que tipo de aplicação é? que objectivo? é que acho que vai refazer a roda pois há tanta coisa já feita nesse sentido... é por necessidade ou puro prazer?

teckV

Link to comment
Share on other sites

O site dela estava cheio de falhas.

P.S: Quanto ao "deface" se é que se pode considerar, é apenas script kiddie stuff.

isto é sobre este topico da aplicação cliente/Servidor?

e se dizer que é um defaced tas errado...foi um manifesto de hacktivismo com alteração de ficheiros no servidor... hoje os blogs e tretas sanatizam contra XSS,... todos pensam que foi por ai quando na verdade até é mais rapido ir pelo servidor

e se dizes ser script kiddie stuff tas errado... falhas no site? não... como podes ver no topico respectivo... foi mesmo ao servidor e foi "owned" capiche?

e não é apenas um puto que saca um qualquer programa da net que faz aquilo... fiz uma demo no topico correcto de uma via (´havia várias) e precisas dominar determinadas áreas para o efectuar, desde conhecer bem reconhecimento remoto e identificação remota de serviços, FTP, SQL Injection, exploitation, alterar sites em PHP, aplicar exploits de kernel de linux

se achas isto script kiddie... deves ser mais que o todo

teckV

Link to comment
Share on other sites

isto é sobre este topico da aplicação cliente/Servidor?

e se dizer que é um defaced tas errado...foi um manifesto de hacktivismo com alteração de ficheiros no servidor... hoje os blogs e tretas sanatizam contra XSS,... todos pensam que foi por ai quando na verdade até é mais rapido ir pelo servidor

e se dizes ser script kiddie stuff tas errado... falhas no site? não... como podes ver no topico respectivo... foi mesmo ao servidor e foi "owned" capiche?

e não é apenas um puto que saca um qualquer programa da net que faz aquilo... fiz uma demo no topico correcto de uma via (´havia várias) e precisas dominar determinadas áreas para o efectuar, desde conhecer bem reconhecimento remoto e identificação remota de serviços, FTP, SQL Injection, exploitation, alterar sites em PHP, aplicar exploits de kernel de linux

se achas isto script kiddie... deves ser mais que o todo

teckV

Enganei-me no topic, era neste que eu pretendia postar essa mensagem. Btw, não compreendes metade daquilo que escreves. 😛

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.