Segurança em Web Services

17 respostas
Jadugar

Sou novo aqui no forum, embora ja tenha passado aqui para ler diversas dicas e tutoriais sobre Java.

Bom, estou começando meu TCC e me chamou a atenção o tema de Segurança em Web Services. Já li muitos artigos e informações sobre se trabalhar com segurança desses serviços, mas não sei a importância que esse tema tem atualmente.
Tenho lido que há um problema com o excesso de padrões de segurança que podem ser utilizados, como: SAML, WS-Security, IPSec, SSL, etc…
A idéia seria abordar as diversas tecnologias dividadas em: aplicaveis na área de rede, transporte e aplicação. Para isso eu elaborarei uma pesquisa sobre os principais mecanismos e desenvolverei uma aplicaçao (site de comprar online) para aplica-las, demonstrando seu funcionamento.

O tema tem real importância ainda hoje? Porque muito do que achei como material nas minhas pequisas são de 2003, 2004 e 2005, e em menor número de 2008 e 2009.

Desde ja agradeço a ajuda.

17 Respostas

Alexandre_Saudate

Eu diria que tem, e muita! Imagine um caso de EDI feito com Web Services, por exemplo. Não adianta nada expor o serviço ao mundo se ele vai ficar inseguro. Não tem como prever o uso que pode ser feito desses serviços, concorda?

[]´s

Jair_Rillo_Junior

Tem importância sim!
Eu mesmo trabalho em um sistema bancario, que a comunicação via WS é bastante pesada e a parte de segurança (https, certificação digital, etc) é amplamento usado (requisito inclusive do cliente)
Pode focar seus estudos nisso sem medo. Comunicação entre sistemas (SOA) é uma realidade.

Jadugar

Bom a intenção é focar em segurança mesmo. Meu orientador me sugeriu da uma olhada nos temas de Assinatura e Certificação Digital, mas fiquei receoso por não conhecer o uso da tecnologia de forma ampla a não ser nos serviços da Receita Federal, e por não encontrar muito conteúdo técnico (eu não encontrei com facilidade).

Agradeço as informações, temia que a definição de segurança já estivesse bem estabelecida atualmente, mas parece que ainda não existe nem mesmo um padrão W3C para tal (o WS-Security ainda não conseguiu ne? Me corrijam se estiver errado).

Provavelmente ficarei com o tema de Segurança em Web Services. Vocês acham que uma aplicação como um site de compras atenderia minha proposta de demonstrar a implemetação e funcionalidade das tecnologias de segurança?

Alexandre_Saudate

Jadugar:
Bom a intenção é focar em segurança mesmo. Meu orientador me sugeriu da uma olhada nos temas de Assinatura e Certificação Digital, mas fiquei receoso por não conhecer o uso da tecnologia de forma ampla a não ser nos serviços da Receita Federal, e por não encontrar muito conteúdo técnico (eu não encontrei com facilidade).

Agradeço as informações, temia que a definição de segurança já estivesse bem estabelecida atualmente, mas parece que ainda não existe nem mesmo um padrão W3C para tal (o WS-Security ainda não conseguiu ne? Me corrijam se estiver errado).

Provavelmente ficarei com o tema de Segurança em Web Services. Vocês acham que uma aplicação como um site de compras atenderia minha proposta de demonstrar a implemetação e funcionalidade das tecnologias de segurança?

Quanto ao WS-Security, com certeza é um bom padrão. Mas tem algumas coisas que devem ser levadas em conta, já que o WS-Security, por si só, não é bastante (é fortemente encorajado o uso de SSL nestes casos). E vale lembrar que WS-Security é da família WS-* . Ainda existe uma “queda de braço” entre WS-* (mais apoiada por vendors de SOA) e REST (mais apoiado por linguagens tipo Ruby). Não sei te dizer como é feita a segurança em sistemas REST (aliás, taí um bom tema pra vc se focar, também).

Quanto a uma loja de carrinho de compras, seria um ótimo exemplo. Mas tome cuidado com a forma como você for fazer seus serviços (só pra lembrar… o mundo “ideal” dos Web Services não prevê estado para eles. É possível fazer com que eles mantenham, sim, estado, mas o ideal é que eles não tenham). Talvez fosse interessante, como o Jair citou, fazer uma aplicação voltada pra serviços bancários ou algo assim.

[]´s

Jadugar

Então pessoal é o seguinte:

Reavaliei a proposta com o professor, onde meu foco estava na segurança de WS para aplicações de e-commerce. Mas na aplicação que eu estava pretendendo montar, a utilização de WS geralmente não é tão fundamental e temas como certificação e assinatura digital seriam mais importantes de serem abordados.

Pensando nisso vou continuar com a proposta de segurança em ws, mas sem o foco em e-commerce, sendo assim preciso de uma nova aplicação. Pensei em explorar o conceito básico de interoperabilidade dos WS fazendo uma aplicação provedora do WS e uma consumidora. Servidora em Java e consumidora em C#. Na parte de segurança, vou abordar as principais mecânicas de segurança pra esses serviços com explicação das vantagens, desvantagem e viabilidade de aplicação em determinadas situações. Por disponibilizar de pouco tempo, aproximadamente 6 meses, vou implementar para demontração, WS-Security e talvez outro mecanismo tipo SSL ou alguma diretiva de IPSec.

Ai venho a vocês pedir sugestões de aplicações. Que tipo de aplicação vocês me sugerem montar?

Jadugar

Postei a mensagem como editada. Minha pergunta logo acima.

Alexandre_Saudate

Jadugar:
Então pessoal é o seguinte:

Reavaliei a proposta com o professor, onde meu foco estava na segurança de WS para aplicações de e-commerce. Mas na aplicação que eu estava pretendendo montar, a utilização de WS geralmente não é tão fundamental e temas como certificação e assinatura digital seriam mais importantes de serem abordados.

Pensando nisso vou continuar com a proposta de segurança em ws, mas sem o foco em e-commerce, sendo assim preciso de uma nova aplicação. Pensei em explorar o conceito básico de interoperabilidade dos WS fazendo uma aplicação provedora do WS e uma consumidora. Servidora em Java e consumidora em C#. Na parte de segurança, vou abordar as principais mecânicas de segurança pra esses serviços com explicação das vantagens, desvantagem e viabilidade de aplicação em determinadas situações. Por disponibilizar de pouco tempo, aproximadamente 6 meses, vou implementar para demontração, WS-Security e talvez outro mecanismo tipo SSL ou alguma diretiva de IPSec.

Ai venho a vocês pedir sugestões de aplicações. Que tipo de aplicação vocês me sugerem montar?

Sugiro uma aplicação bancária. São relativamente fáceis de explicar e montar (pois os conceitos de conta, agência, saldo são conhecidos de todos) e é um tema que pode te dar bastante visibilidade (se ficar bom, talvez te abra portas no setor bancário mesmo).

[]´s

Jadugar

@asaudate
Realmente pode ser uma boa solução, até porque no meu estudo de MVC fizemos implementações de um protipo de sitema bancário em Java que pode ser um ponto de partida.

@Tópico
Alguma outra sugestão? Definirei isso essa semana ainda.

Jadugar

Voltando ao assunto que abordei aqui, meu projeto ja está definido como uma aplição no modelo de caixas eletrônicos, como o do Banco 24H que comunica com diversos sistemas bancários para suas operações.

Irei montar as bases de dados e aplicações que disponibilizarão os WS, e o sistema do caixa irá consumi-los.

Estou tentando utilizar as implementações WS-Security e SSL nesse modelo, alguem tem algum material prático para isso? Estou encontrando muita explicação teórica e quase não vejo implementação. Alguem aqui trabalha com esses modelos de segurança?

Alexandre_Saudate

Jadugar:
Voltando ao assunto que abordei aqui, meu projeto ja está definido como uma aplição no modelo de caixas eletrônicos, como o do Banco 24H que comunica com diversos sistemas bancários para suas operações.

Irei montar as bases de dados e aplicações que disponibilizarão os WS, e o sistema do caixa irá consumi-los.

Estou tentando utilizar as implementações WS-Security e SSL nesse modelo, alguem tem algum material prático para isso? Estou encontrando muita explicação teórica e quase não vejo implementação. Alguem aqui trabalha com esses modelos de segurança?

Aqui tem um tutorialzinho de como criar e fazer a segurança de um serviço com o JDeveloper. Vê se ajuda…

[]´s

Jadugar

@asaudate
Estou dando uma olhanda… e vai ajudar sim.

Como estou aprendendo sobre essa área você acha que implementar SSL/TSL juntamente com WS-S será uma boa forma de demonstrar mecanismos de segurança?
Minha pesquisa está direcionada nessa área, há pouco material acadêmico sobre segurança de WS e os livros que disponho estão em ingles (consigo ler, mas perco rendimento).

Outra pergunta é: para implementação de WS-Sec eu vou precisar de um certificado certo? Eu posso(tem como) criar meu próprio ou preciso recorrer a uma AC?

Alexandre_Saudate

Jadugar:
@asaudate
Estou dando uma olhanda… e vai ajudar sim.

Como estou aprendendo sobre essa área você acha que implementar SSL/TSL juntamente com WS-S será uma boa forma de demonstrar mecanismos de segurança?
Minha pesquisa está direcionada nessa área, há pouco material acadêmico sobre segurança de WS e os livros que disponho estão em ingles (consigo ler, mas perco rendimento).

Outra pergunta é: para implementação de WS-Sec eu vou precisar de um certificado certo? Eu posso(tem como) criar meu próprio ou preciso recorrer a uma AC?

SSL é uma boa sim… só tome cuidado porque dá um certo trabalho (tanto para implementar quanto para consumir os serviços).

Quanto ao certificado, você não precisa necessariamente de um, mas também dá pra criar o seu próprio sim. Tente dar uma olhada na ferramenta keytool, do JDK.

[]´s

nextuser

vc pode fazer SSL com autenticação mutua igual é feita no NFe!!

Jadugar

Qual a diferença de se implementar SSL/TSL em WS ou em outro tipo de aplicação? Pq me falaram que implementar SSL não era dificil.

E alguem tem material com implementação pra me sugerir?

nextuser

Transport Layer Security (TLS) and its predecessor, Secure Sockets Layer (SSL)

The TLS protocol allows client/server applications to communicate across a network in a way designed to prevent eavesdropping and tampering. TLS provides endpoint authentication and communications confidentiality over the Internet using cryptography. TLS provides RSA security with 1024 and 2048 bit strengths.

In typical end-user/browser usage, TLS authentication is unilateral: only the server is authenticated (the client knows the server’s identity), but not vice versa (the client remains unauthenticated or anonymous).

TLS also supports the more secure bilateral connection mode (typically used in enterprise applications), in which both ends of the “conversation” can be assured with whom they are communicating (provided they diligently scrutinize the identity information in the other party’s certificate). This is known as mutual authentication, or 2SSL. Mutual authentication requires that the TLS client-side also hold a certificate (which is not usually the case in the end-user/browser scenario). Unless, that is, TLS-PSK, the Secure Remote Password (SRP) protocol, or some other protocol is used that can provide strong mutual authentication in the absence of certificates.

Jadugar

nextuser:
Transport Layer Security (TLS) and its predecessor, Secure Sockets Layer (SSL)

The TLS protocol allows client/server applications to communicate across a network in a way designed to prevent eavesdropping and tampering. TLS provides endpoint authentication and communications confidentiality over the Internet using cryptography. TLS provides RSA security with 1024 and 2048 bit strengths.

In typical end-user/browser usage, TLS authentication is unilateral: only the server is authenticated (the client knows the server’s identity), but not vice versa (the client remains unauthenticated or anonymous).

TLS also supports the more secure bilateral connection mode (typically used in enterprise applications), in which both ends of the “conversation” can be assured with whom they are communicating (provided they diligently scrutinize the identity information in the other party’s certificate). This is known as mutual authentication, or 2SSL. Mutual authentication requires that the TLS client-side also hold a certificate (which is not usually the case in the end-user/browser scenario). Unless, that is, TLS-PSK, the Secure Remote Password (SRP) protocol, or some other protocol is used that can provide strong mutual authentication in the absence of certificates.

Implementação mútua nesse caso parace que vai ser obrigação. Vou pesquisar mais sobre o assunto.

Por hora, obrigado pelas dicas.

Jadugar

Ae ai pessual, estou de volta, com o trabalho já definido.
Meu foco de pesquisa vai ser o padão WS-Security, abordarei outros mecanismos mas superficialmente, somente o necessário para se compreender as tecnologias da área. Encontrei bastante conteúdo sobre WS, ja desenvolvi alguns experimentalmente e aparentemente essa parte não será proplemática pra mim.

Meu cenário de aplicaçao vai ser: um WS básico de um sistema bancário (Dados da conta, saldo, extrato) e um WS da operadora de cartao de credito(numero do cartao, consulta de limite) vinculada a conta, ambos em Java. Para consumir os 2 serviços estou desenvolvendo um site de Internet Banking em ASP.NET.

A parte de implementar a segurança no meu cenário que está me tomando um tempo bom e gostaria de indicação de materiais que abordam a implementação de WS-Security, pois isso está um pouco dificil de achar. Obrigado.

Criado 1 de março de 2010
Ultima resposta 20 de mar. de 2010
Respostas 17
Participantes 4