• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jarsantos

Segurança numa plataforma Servidor-Cliente

10 mensagens neste tópico

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se cifrares o conteudo do certificado em disco, ja aumentas a probabilidade de um atacante nao te conseguir decifrar o certificado sem mais uma chave/password que o cliente tenha para arrancar a aplicacao.

Boas programações,

Nuno Martins

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O site dela estava cheio de falhas.

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora