Академический Документы
Профессиональный Документы
Культура Документы
INSTITUTO DE INFORMATICA
CURSO DE ESPECIALIZA<;AO EM DESENVOL VIMENTO, SEGURAN<;A E
QUALIDADE NA INTERNET
Trabalho
Conclusao apresentado como requisito
Seguranca em
Web de
Services
parcial
para
a obtencao
do grau de Especialista
Prof.
Profa.
Dr.
Dra.
Claudio
Mara
Abel
F. R. Geyer
ADAIR JOSE
WATHIER
Portocom
Alegre,
dezembro
WS-Security
Orientadorde 2005
Coordenadora
do Curso
AGRADECIMENTOS
SUMARIO
3DES
AES
B2B
Business-to- business
DTD
ebXML
business XML
FTP
HTTP
IDE
IETF
IPSec
MIME
Mail Extension
OASIS
RPC
SAML
SGML
SMTP
SOA
SOAP
SSL
SSO
Single Sign-On
TCP
TSL
UDDI
UDP
UFRGS
URI
URL
VPN
WAN
WSDL
WSS WSSecurity
XML
LISTA DE FIGURAS
LISTA DE TABELAS
RESUMO
Uma nova tecnologia da Internet, chamada de services Web (Web Services), tern se
destacado nos iiltimos tempos no meio computacional como uma revolucao em termos de
interoperabilidade de sistemas heterogeneos. Esta tecnologia tern sido considerada como a
evolucao da arquitetura de middleware tradicionais e ganhou 0 apoio de grandes produtores de
software do mercado que a tratam como urn novo paradigma no desenvolvimento de sistemas.
Por sua infra-estrutura publica, sujeita a ataques, questoes de seguranca na Internet sao
importantes. A seguranca pode ser implementada em varies niveis de urn determinado service.
Os niveis, como de rede, transporte e aplicacao, tern caracteristicas proprias que devem ser
analisadas com muito cui dado para se adequarem aos services Web sem criar impactos
negativos que inviabilizam sua construcao.
Pel a grande complexidade na arquitetura de uma aplicacao que usa services Web em
relacao a uma aplicacao que simplesmente troca informacoes entre dois pontos, a seguranca no
nivel de aplicacao torna-se a mais viavel nestes casos. Ela permite que a seguranca esteja
presente na propria mensagem, transportada de urn ponto a outro ate chegar ao destinatario
final.
Contudo, ja existem padroes promissores para a seguranca no nivel de aplicacao, em
especial 0 padrao WS-Security, baseado em assinaturas digitais e criptografia de documentos
XML. A especificacao mais recente deste padrao, definida pelo grupo OASIS (Organization for
the Advancement of Structured Information Standards), descreve avances na mensagem SOAP
para garantir integridade e confidencialidade. 0 modelo especificado pode ser usado para
acomodar uma variedade de modelos de seguranca e tecnologias de criptografia.
Neste contexto, 0 presente trabalho contempla conceitos dos principais componentes e
mecanismos de seguranca envolvidos com os services Web. Apresenta urn estudo dos principais
padroes de seguranca disponiveis no nivel de aplicacao para services Web, realizando uma
analise desses padroes de seguranca com principais ameacas e ataques que cada padrao propoe
combater, alem de implementar urn estudo de caso onde e avaliado 0 uso do padrao de
seguranca WS-Security nos services Web.
ABSTRACT
A new technology of the Internet, call of Web Services, has if outstanding in the last times in
the computing environment as a revolution in terms of interoperability of heterogeneous
systems. This technology has been considered as the evolution of the architecture of traditional
middleware and it won the support of big producing of software of the market that treat her as a
new paradigm in the system development.
For his public infrastructure, it subjects to you attack, Internet security subjects are
important. The security can be implemented in several levels of a certain service. The levels, as
of network, transport and application, they have own characteristics that should be analyzed
with very care for if they adapt to the Web Services without creating negative impacts that make
unfeasible her construction.
For the great complexity in the architecture of an application that uses Web Services in
relation to an application that simply exchanges information among two points, the security in
the application level becomes the viable in these cases. Allows the security to be present in the
own message, transported of a point the other to arrive to the final addressee.
However, already promising standards exist for the security in the application level,
especially the WS-Security standard, based on digital signatures and encryption of documents
XML. The most recent specification of this standard, defined for the group OASIS
(Organization goes the Advancement of Structured Information Standards), it describes
progresses in the message SOAP to guarantee integrity and confidentiality. The specified model
can be used to accommodate a variety of models of security and encryption technologies.
In this context, the present work contemplates concepts of the main components and
mechanisms of security involved with the Web services. It presents a study of the main available
standards of security in the application level for Web services, accomplishing an analysis of
those standards of security with main threats and attacks that each standard intends to combat,
besides implementing a case study where the use of security's WS-Security standard it is
evaluated in the Web services.
Keywords: Security, Web Services, SOAP, WSDL, UDDI, Digital Signature, Encryption,
XML, WS-Security Standard, Internet.
1
2
1 INTRODUCAO
1
3
1 Conjunto
1
4
a) Autenticacao - que permite identificar se 0 usuario ou aplicacao cliente e quem ele diz ser;
b) Autorizacao - que permite 0 estabelecimento de direitos diferentes a usuaries diferentes;
c) Privacidade - que restringe a capacidade de leitura de mensagens por interceptacao, com 0
uso de criptografia;
d) Integridade - que permite detectar se os dados foram alterados no percurso entre a origem e
0 destino na rede;
e) Nao reptidio (auditoria) - com 0 registro dos eventos ocorridos no sistema, como transacoes
efetuadas e acessos a recursos (STALLINGS, 2000).
Para services Web, e necessario que a implementacao de requisitos de seguranca mantenha a
interoperabilidade, que e urn dos maiores atrativos da tecnologia. Alem disso, e desejavel que as
medidas de seguranca nao dificultem a implementacao dos services Web e de seus clientes
(COSTA, 2005).
A implementacao de seguranca em services Web pode ser tratada em diferentes niveis ou
camadas que sao: camada de rede, camada de transporte e camada de aplicacao, com os mais
variados padroes para cada camada.
Na camada de rede, por exemplo, existe 0 IPSec (Internet Protocol Security) que tenta
tornar 0 canal Internet seguro por si so, 0 que e feito atraves da protecao a propria rede. As redes
que implementam essa seguranca sao chamadas de VPNs (Virtual Private Networks) que
possibilitam garantir a privacidade e a autenticacao dos dados, alem da autenticacao do usuario,
em redes piiblicas (HENDRICKS, 2002).
No nivel de transporte, para garantir confidencialidade e integridade dos dados, services
Web podem utilizar 0 HTTPS, a extensao do protocolo HTTP que utiliza Secure Socket Layer
(SSL) e certificados digitais (COSTA, 2005).
No nivel de aplicacao, a seguranca e oferecida no proprio protocolo de troca de mensagens SOAP (Simple Object Access Protocol), padrao de estrutura das mensagens XML usado na
comunicacao entre aplicacoes que fazem uso de services Web. Com este recurso e possivel uma
mensagem passar por varies services Web ao longo do seu processamento (ROSENBERG,
2004).
Cada nivel de seguranca possui suas caracteristicas que contribuem para a seguranca dos
services Web. No entanto, nenhum nivel de seguranca e tao independente da integracao de
diferentes plataformas como a seguranca no nivel de aplicacao. Uma das principais vantagens
do uso de services Web nas aplicacoes web e garantir interoperabilidade entre plataformas
distintas. 0 ideal nestes casos, para aplicacoes que usam services Web e implementar a
especificacao WS-Security que garante a seguranca do service no nivel de aplicacao e
interoperabilidade entre plataformas distintas.
A especificacao WS-Security define urn conjunto-padrao de extensoes SOAP. Essas
extensoes podem ser usadas para implementar autenticacao, integridade e confidencialidade no
nivel de mensagens SOAP (COSTA, 2005).
Operacao
Provedor de
Service Web
Descricao
Publicar
11
56
Processes
Discovery, Aggregation, Choreography.
(ROSENBERG,2004).
R::r
R::r
:::I
o protocolo
SOAP define 0 formato
que as mensagens transportadas
na rede
devem ter para
B'
Descriptions
B'
M
:::I
0
S
encaminhar
Web Services
services
Web. Descriptions
Tambem (WSDL)
define 0
A
requisicoes a
formato das mensagens
de resposta a
Messages
M
P
P de urn
AI figura abaixo
ilustra a pilha de protocolos utilizados na construcao
service Web
CD
T
In
SOAP Extensions
E
Reliability,
Correlation,
Transactions
..
N
Y 2005). n
n
(W3C,
i
a
i
a
I
SOAP
Communications
HTTP, SMTP, FTP, JMS, IIOP, .
Aplicativo
Cliente do
Service
Web
SOAP/XML
3 - Usa 0 servico
1
7
2.2.2 XML
XML e urn formato de texto muito simples e flexivel derivado do SGML (Standard
Generalized Markup Language) (W3C, 2005). Originalmente projetado para encontrar chaves
em documentos eletronicos em larga escala, XML esta tambem se tomando urn importante
padrao para a troca de uma vasta variedade de dados na web.
Com 0 advento do XML tomou-se mais facil para sistemas de diferentes ambientes trocarem
informacoes. A universalidade do XML tomou-se uma maneira muito atrativa para comunicacao
entre programas. Programadores podem usar diferentes sistemas operacionais, linguagens de
programacao etc. e ter seus softwares comunicando-se com outros de uma maneira ininterrupta.
1
8
Uma sintaxe para descricao de dados, XML e uma definicao conduzida por uso de DTDs e
schemas que permitem a manipulacao de informacoes entre aplicacoes. Tags podem ser
combinadas, interfaces podem ser definidas e processamentos podem ser padronizados. Services
Web sao componentes de programas reutilizaveis que utilizam XML como padrao de
manipulacao de informacoes entre aplicacoes, este padrao se enquadra em urn framework
extensivel para facilitar a comunicacao computador-acomputador.
XML faz urn papel crucial integrando dados e coordenando a logica de negocio.
Tarefas especfficas de negocio e services, inclusive logica de workflow", logica de negocio,
logica seqiiencial de componente, logica de transacao e assim por diante, podem ser
encapsulados em documentos XML e integrados a ambientes empresariais existentes.
SOAP e uma tecnologia que deriva do padrao de formatacao de texto baseado em XML
(XML-RPC) e aponta para urn padrao emergente chamado ebXML (XML empresarial
eletronico). ebXML esta em evolucao, proven do definicoes inclusive de mensagens
empresariais compartilhadas entre parceiros comerciais. SOAP e mais modesto em extensao e
menos complexo em implementacao (CLEMENTS, 2005).
2.2.3 SOAP
protocolo SOAP foi criado para transportar mensagens XML de urn computador para
outro, via varies protocolos padroes de trans porte. HTTP e 0 mais comum destes protocolos,
obviamente porque predomina no uso da Web.
SOAP se define usando XML, que proporciona com simplicidade e coerencia uma maneira
de uma aplicacao enviar mensagem XML para outra. SOAP e 0 que faz a integracao entre
aplicacoes ser possivel, pois apos a definicao do conteiido do XML, e 0 SOAP que transfere os
dados de urn lugar para outro pela rede. Permite enviar e receber documentos XML que
suportam urn protocolo comum de transferencia de dados. Alem dis so, SOAP permite tratar
mensagens XML retomadas de urn service remoto e seu modelo possibilita de forma clara a
separacao entre os dados de processamento de infraestrutura e processamento de mensagens de
aplicacao.
A figura abaixo apresenta a estrutura basica de uma mensagem SOAP de acordo com
(ROSENBERG, 2004).
//(~crte
(HTTP~~,
Envelope SOAP
Cabecalho SOAP
Direlivas:
Autenticacao
Autorizacao
Corpo SOAP
Carga util:
Mensagem XML
(por exemplo,
,,~~ _______________________,--_or_d~!/
19
SOAP fornece urn envelope (Envelope SOAP) para a mensagem XML, este envelope e urn
container' que protege os dados XML. 0 objetivo e criar urn container uniforme para que
mensagens SOAP possam ser transmitidas por qualquer protocolo de transporte (HTTP, MQ). 0
protocolo evita que aplicacao conheca 0 protocolo de transporte e se mantem coerente com 0
envelope SOAP.
o envelope SOAP e composto por duas partes: 0 cabecalho (Cabecalho SOAP) e 0 corpo
da mensagem (Corpo SOAP).
Cabecalho SOAP (header) - contem informacoes sobre a mensagem SOAP. Estas
informacoes sao usadas para gerenciar ou prover seguranca para 0 pacote.
Corpo SOAP (body) - contem a mensagem SOAP propriamente dita (Carga iitil).
Esta informacao e enviada de uma aplicacao para outra. Poderia ser urn documento com uma
ordem de compra ou urn contrato, poderia ser uma descricao de uma classe com metodos
remotos e seus parametres.
Urn exemplo de mensagem SOAP e listado na figura abaixo (ROSENBERG, 2004):
<7xml version="l.O" 7>
<env:Envelope xmlns:env=''http://www.w3.org/2001/12/soapenvelope">
<env:Header>
<n:alertcontrol xmlns:n=''http://example.org/alertcontrol''>
<n:priority>l</n:priority> <n:expires>2004-06-22T14:00:005:00</n:expires> </n:alertcontrol>
</env:Header>
<env:Body>
<m:alert xmlns:m=''http://example.org/alert''>
<m:msg>Pick up Bobby at school at 2PM</m:msg>
</m:alert>
</env:Body>
</env:Envelope>
2.2.4 WSDL
WSDL e uma lingua gem XML que define as operacoes que urn service Web prove e a
estrutura dessas operacoes em relacao as mensagens SOAP. Isto e, define as estruturas de
entrada e saida de urn service Web, associacao entre os parametres e tipos de dados.
WSDL contem informacoes de urn service para que outros possam interagir com este
service, como a localizacao do service, 0 que 0 service pode fazer e como podera ser chamado.
3 Area
20
Urn arquivo WSDL possui tres secoes: 0 que, como e onde. Na primeira secao, urn arquivo
WSDL especifica as mensagens de entrada e saida, representando 0 que 0 service faz. A segunda
secao define como as mensagens devem se empacotadas na mensagem SOAP e como devem ser
transportadas. Alem disso, define que informacao deve estar no cabecalho do SOAP. Na terceira
e ultima secao descreve a implementacao especifica de urn service Web e onde podera ser
encontrado (ROSENBERG, 2004).
2.2.5 UDDI
Na construcao de services Web, esses services necessitam ser acessados em algum lugar na
Web por uma aplicacao cliente. Uma forma de acessar urn service Web e fazer com que a
aplicacao cliente conheca a URI (Uniform Resource Identifier) do service, desta maneira
caracteriza 0 modo estatico de localizar e acessar urn service. Entretanto, quando a aplicacao
cliente nao detem a localizacao de urn service Web, este pode ser descoberto antes de ser
acessado, caracterizando 0 modo dinamico de descobrir a localizacao de urn service.
5 Embaralhar
urn conjunto de dados com c6digo secreto, para que as informacoes deste conjunto
nao possam ser utilizadas ou lidas ate serem decodificadas (decriptografar).
6 Conjunto de instrucoes matematicas baseadas na criptografia, que permite conferir
autenticidade, privacidade e inviolabilidade aos documentos digitais e transacoes comercias
efetuadas pela Internet.
21
.:SOAF'MIlSSBgIl
in ~Iear text..
UIIIlr: Tellerl
Acc:cunt Nc.l234
B!lIBnl:8
~ntegrlly
Eavesdropping:
No confidentIality
.:5 OAPMesaBgIl in
clear text.. UBBr:
Telle.rl Account
No.l2M B!lIlanc:a
Attacker
Spoontl!J:
No 8utlrenticat.1on
poderia enviar uma mensagem SOAP modificada ao provedor de services (Bank Data
Center), enquanto finge ser urn caixa de banco (Bank Teller), acessa informacoes
confidencias ou retira dinheiro da conta de outro cliente.
ao service Web, poderia eliminar esta exposicao
de inseguranca;
entre 0 cliente (Bank Teller) e 0 servidor (Bank Data Center) do service web. 0 infrator
(Attacker) poderia modificar a mensagem, por exemplo, depositar 0 dinheiro em outra
conta mudando 0 mimero da conta. Porque nao ha nenhuma restricao de integridade,
servidor do service Web nao confere se a mensagem e valida e aceitara a transacao
modificada. Implementando urn mecanismo de integridade ao service Web, poderia
eliminar esta inseguranca;
) - urn infrator
pode interceptar a mensagem SOAP e ler toda a mensagem. Pois a mensagem nao e
criptografada, informacoes de confidenciais de clientes e do banco podem ir para
pessoas erradas. Esta exposicao existe porque as informacoes sao enviadas em texto
claro pela rede (WHALI, 2005).
2.3.1 Seguranca no
Uma das solucoes para garantir seguranca no nivel de rede sao as
(Virtual
Private Networks) que se baseiam, geralmente, em c (Internet Protocol Security), urn
framework de padroes abertos desenvolvidos pela IETF (Internet Engineering Task Force), para
garantir a privacidade e a autenticacao dos dados, alem da autenticacao do usuario, em redes
public as (HENDRICKS, 2002).
22
23
1)
urn As
service
Web
que roteia mensagens
SOAP
e e capaz deque
inspecionar
naocomo
criptografadas
VPNs
implementam
a tecnologia
de tunelamento
pode serpartes
definido
processo
de uma
mensagem
para
determinar
0
local
para
onde
a
mensagem
devera
ser
enviada,
enquanto
encapsular urn protocolo dentro de outro. 0 uso do tunelamento incorpora urn novo
outras
partes adaesta
mensagem
criptografadas.
Depois,
componente
tecnica: permanecem
antes de encapsular
0 pacote
que os
seraintermediaries
transportado,poderao
este e
adicionar
seusdeproprios
a mensagem
e assina-la durante
para fins0 seu
de registro
de 0
auditoria.
criptografado
forma acabecalhos
ficar ilegivel
caso seja interceptado
transporte.
pacote
Finalmente,
a
mensagem
protegida
podera
ser
enviada
atraves
de
varies
protocolos
diferentes,
criptografado e encapsulado viaja atraves da Internet ate alcancar seu destino onde e
como
HTML, SMTP,
PTP e TCP, sem
Que seja precjso
tar com
0 protocolo
~arantjr a
desencapsulado
e decriptografado,
retornando
ao seu con
formato
original
(IEC-para
International
se~uran~a.
Engineering Consortium, 2005).
Asfigura
VPNs abaixo
podem se
constituir
numa alternativa
segura paranotransmissao
de dados atraves
A
ilustra
a implementacao
de seguranca
nivel de mensagem,
onde de
as
redes
public XML
as ou privadas,
umatransportadas
vez que ja ofsob
ere cern
recursos
de autenticacao
e criptografia
mensagens
podem ser
qualquer
protocolo,
com informacoes
de
com
niveiscredenciais,
variados de
seguranca,
possibilitando
eliminar
os links dedicados de long a
seguranca:
assinaturas
digitais
e mensagens
criptografadas.
distancia, de alto custo,
na
conexao
de
WANs.
Entretanto,
em
aplicacoes onde 0 tempo de
Segi.l~a de Ntllel de Menssgem
. .......
.deve ser analjsado com
...............
transmjssao e crftjco 0 uso
de YPNs atraves
de
redes
extemas
ajnda
M\J!1~~")',M 'ro""mil1;lm
InIaf1TJa9~~ ~ ~UI8n.;a
mujto cujdado, pois podem ocorrer problemas
de desempenbo
e atrasos na transmjssao sobre os
C~n".~ ki'snWr4':'S
d~ls~
~q"'"'!l
l.' p<Jdr.m ~cr
quais a organizacao nao tern nenhum tipo de
gerencia
ou
controle,
comprometendo a qualidade
cr~8.&f89
)',
XMI
desejada nos services corporativos
MI (VIERA,2005).
2.3.2 Seguranca no
Seguranca no nivel de transporte significa proteger 0 protocolo de rede que 0 service Web
utiliza para se comunicar. 0 Secure Sockets Layer ( ) e urn protocolo padrao para encriptar
comunicacoes sobre TCP/IP. Neste modelo, urn cliente abre urn socket seguro para urn service
Web e entao 0 utiliza para trocar mensagens SOAP via HTTPS.
Implementacao SSL (Secure Socket Layer) e razoavelmente simples e a implementacao de
SSL garante seguranca
, mas nao se deve esquecer da sobrecarga em relacao ao desempenho do servidor
Web.
SSL accelerator card
2.3.3 Seguranca no
No contexto de services Web, chamado de seguranca no
envolve a encriptacao e decriptacao de documentos XML. 0 World Wide Web Consortium
(W3C), 0 qual man tern 0 padrao XML, tern criado grupos de trabalhos para definir padroes
para seguranca em XML, incluindo assinaturas digitais, encriptacao e gerenciamento de chaves
para XML (W3C, 2005).
As implementacoes de seguranca no nivel de mensagem podem ser usadas para garantir a
confidencialidade e a integridade das mensagens, conforme elas passam por urn mimero
arbitrario de sistemas intermediaries. As mensagens podem ser assinadas para fornecer
integridade. Para a confidencialidade, pode-se escolher entre criptografar toda a mensagem ou
parte de uma mensagem.
Ha varias vanta~ens em prote~er a mensa~em em vez de usar 0 protocolo de transporte. Em
primeiro lugar, esse metodo e , pois partes da mensagem ao inves da mensagem inteira, podem
ser assinadas ou criptografados. Isso significa que os intermediaries conseguirao ver as partes da
mensagem destinadas a eles. Urn exemplo e
.
t ....--.-- --.-- .
l'rlJl'k$po:rt~
24
o exemplo abaixo mostra uma mensagem que usa seguranca baseada em tokens,
assinaturas digitais e criptografia.
(001 <?xm1 version="1.0" encoding="utf-8"?>
<Sll:Envelope xmlns:S11=" ... " xmlns:wsse=" . . ." xmlns:wsu=" . "
)
xmlns:xenc=" . . ." xmlns:ds=" . ">
(002
<Sll:Header>
(003
)
<wsse:Security>
)
<wsu:Timestamp wsu:ld="TO">
(004
<wsu:Created> 2001-09)
13T08:42:00Z</wsu:Created>
(OOS
</wsu:Timestamp>
)
(006
<wsse:BinarySecurityToken ValueType=" ... #XS09v3"
)
wsu:ld="XS09Token" EncodingType=" ....#Base64Binary">
(007
MIIEZzCCA9CgAwIBAgIQEmtJZcOrqrKhSi ....
(011
)
</wsse:BinarySecurityToken>
)
(008
<xenc:EncryptedKey>
(012
)
<xenc:EncryptionMethod Algorithm=
)
(009
"http://www.w3.org/2001/04/xmlenc#rsa-1_S"/>
(013
)
<ds:Keylnfo>
(OlS
)
(010
<wsse:Keyldentifier EncodingType=" ... #Base64Binary"
)
(014
)
ValueType=" ... #XS09v3">MIGfMaOGCSq ...
(016
)
</wsse:Keyldentifier>
(017
)
</ds:Keylnfo>
)
<xenc:CipherData>
(018
<xenc:CipherValue>d2FpbmdvbGRfEOlm4byVO ...
)
</xenc:CipherValue>
(019
</xenc:CipherData>
)
<xenc:ReferenceList>
(020
<xenc:DataReference URI="#enc1"/>
)
</xenc:ReferenceList>
(021
</xenc:EncryptedKey>
)
<ds:Signature>
(022
<ds:Signedlnfo>
)
<ds:CanonicalizationMethod
(023
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
)
<ds:SignatureMethod
(030)
(024
)
(02S
7) /
E urn segmento de texto ou simbolos que podem ser manipulados por urn parser
(026
(interpretador
de tokens).
)
(027
)
(028
)
(029
)
25
A1gorithm="http://www.w3.org/2000/09/xm1dsig#rsa-sha1"/>
(031
<ds:Reference URI="#TO">
<ds:Transforms>
)
(032
<ds:Transform A1gorithm="http://www.w3.org/2001/10/xm1exc-c14n#"/> </ds:Transforms>
)
(033
<ds:DigestMethod
(034
A1gorithm="http://www.w3.org/2000/09/xm1dsig#sha1"/>
)
<ds:DigestVa1ue>LyLsF094hPi4wPU ...
(035
</ds:DigestVa1ue>
)
(036
</ds:Reference>
)
(037
<ds:Reference URI="#body">
)
<ds:Transforms>
(038
<ds:Transform A1gorithm="http://www.w3.org/2001/10/xm1)
exc-c14n#"/> </ds:Transforms>
(039
<ds:DigestMethod
)
A1gorithm="http://www.w3.org/2000/09/xm1dsig#sha1"/>
(042
(040
<ds:DigestVa1ue>LyLsF094hPi4wPU ...
)
)
</ds:DigestVa1ue>
(043
(041
</ds:Reference>
)
(044
</ds:Signedlnfo>
)
<ds:SignatureVa1ue>
(045
Hp1ZkmFZ/2kQLXDJbchm5gK ...
)
</ds:SignatureVa1ue>
(046
<ds:Keylnfo>
)
<wsse:SecurityTokenReference>
(047
<wsse:Reference URI="#X509Token"/>
)
</wsse:SecurityTokenReference>
(048
</ds:Keylnfo>
)
</ds:Signature>
(049
)
</wsse:Security>
</Sll:Header>
(050
)
<Sll:Body wsu:ld="body">
<xenc:EncryptedData
(051
)
Type="http://www.w3.org/2001/04/xm1enc#E1ement"
wsu:ld="enc1">
(052
)
<xenc:EncryptionMethod
(053
A1gorithm="http://www.w3.org/2001/04/xm1enc#trip1edes)
cbc"/>
(061
)
(054
<xenc:CipherData>
)
<xenc:CipherVa1ue>d2FpbmdvbGRfE01m4byVO ...
(055
</xenc:CipherVa1ue>
(062
)
</xenc:CipherData>
(056
</xenc:EncryptedData>
(063
</Sll :Body>
)
(057
</Sll:Enve1ope>
(064
)
(058
(065
)
Figura 2.7: Mensagem SOAP com WS-Security
(059
(066
)
Na sequencia estao descritas algumas secoes deste exemplo:
(060
(067
) As linhas (003)-(058) contem 0 cabecalho da mensagem SOAP.
(068
As linhas (004)-(057) representam 0 bloco <wsse:Security> do cabecalho. Este contem a
)
26
padrao XML Digital Signature especifica uma forma de criar assinaturas digitais para 0
uso em transacoes de XML. Este padrao define urn esquema para pegar 0 resultado de uma
operacao sobre uma assinatura aplicada a dados no formato XML. Da mesma forma que as
assinaturas digitais comuns, as assinaturas de documentos XML adicionam importantes
caracteristicas como a autenticacao, a integridade dos dados e a sustentacao do nao-repiidio de
dados previamente assinados.
Uma caracteristica fundamental da assinatura de XML e a habilidade de
ao inves de assinar todo 0 documento
original. Isto sera relevante quando urn iinico original de XML pode ter urn longo historico no
qual os diferentes componentes sao criados em momentos diferentes por pessoas diferentes,
cada urn assinando somente aqueles elementos relevantes para si. Esta flexibilidade tambem
sera critic a em situacoes nas quais e importante garantir a integridade de certas partes de urn
documento XML, enquanto deixa para outros a possibilidade de alterar outras partes do
documento. Exemplo: urn formulario XML assinado entregue a urn usuario para ser preenchido.
Se a assinatura for aplicada ao formulario XML completo, quaisquer alteracoes feitas pelo
usuario sobre os valores padrao do formulario invalidarao a assinatura original do documento.
Uma assinatura XML
. Por exemplo, uma
unica assinatura XML pode ser utilizada sobre dados de texto (urn documento HTMU, dados
bjnarios (uma jma~em), dados no formato XML, assim como partes especfficas de urn
documento XML.
A yaljda~ao de assjnaturas reg,uer Qye 0 objeto assjnado esteja djs12onfyel. A
assinatura, por si so, indicara onde esta 0 objeto original. Esta informacao pode:
2
7
A estrutura basica de uma assinatura XML segundo (Rosenberg, 2004) e listada na figura
abaixo:
<Signature>
<Signedlnfo> (CanonicalizationMethod)
(SignatureMethod)
Reference(URI=)?>
(Transforms)?
(DigestMethod
)
(DigestValue)
</Reference+
</Signedlnfo>
(SignatureValue)
(Keylnfo)?
(Object)*
</Signature>
9) Calculo do hash;
- em assinaturas de XML, cada recurso referenciado e especificado atraves de urn elemento
<Reference> e seu hash (calculado sobre 0 recurso identificado e nao sobre 0
elemento <Reference> em si) e colocado num elemento <DigestValue>. 0
elemento <DigestMethod> identifica 0 algoritmo usado para calcular 0 hash.
8 Algoritmo
28
devem estar
elemento
usado para
a)
b
)
29
Com XML Encryption, cada parte pode manter estado de seguranca ou nao com qualquer
das partes comunicantes. Ambos dados seguros ou nao podem ser trocados no mesmo
documento.
XML Encryption pode manusear dados no formato XML ou nao (biuario).
A tecnologia de criptografia podera ser usada para criptografar urn documento inteiro ou
partes deste. Levando em consideracao 0 consumo de tempo para 0 processo de criptografia e
olhando a perspectiva de performance, e aconselhavel que os dados nao sejam cifrados a menos
que comprometa a seguranca (GALBRAITH, 2002).
Expressado numa forma curta, 0 elemento <EncryptedData> tern a seguinte estrutura (onde
"?" significa zero ou uma ocorrencia; "+" significa uma ou mais ocorrencias; "*" significa zero
ou muitas ocorrencias; e urn elemento tag vazio ( <elemento/> significa que 0 elemento sera
vazio):
<EncryptedData Id? Type? MimeType? Encoding?>
<EncryptionMethod/>?
<ds:KeyInfo>
<EncryptedKey>?
<AgreementMethod>?
<ds:KeyName>?
<ds:RetrievalMethod>?
<ds:*>?
</ds:KeyInfo>?
<Cipher Data>
<CipherValue>?
<CipherReference URI?>?
</CipherData>
<EncryptionProperties>?
</EncryptedData>
30
2.4.3 SAML
SAML (Security Assertion Markup Language) e urn padrao de seguranca para
baseadas em XML atraves de diferentes
dominios por diferentes aplicacces. SAML nao jm120e uma solu~ao ou jnfra-estrutura
centraljzada descentraljzada ou federada, mas facilita a comunicacao de autenticacao,
autorizacao e a informacoes de atributos. Nao introduz qualquer nova forma ou metodo de
autenticacao nem uma altemativa para outros padroes de seguranca como a WSSecurity e nao e
limitada para aplicacoes legadas ou aplicacoes Web (GALBRAITH, 2002).
Este padrao prove meios para especificacao de alegacoes de seguranca, provas de
propriedade e provas de possessao. Os sao assertivas assinadas que fazem alegacoes baseadas
em uma autoridade certificada. Estas assertivas permitem as organizacoes que troquem
informacoes de seguranca de forma neutra e padronizada.
Usado principalmente para inclusao, nas mensagens SOAP, de informacoes com 0 prop6sito
de dar subsidios para que 0 receptor possa decidir sobre a validade das credenciais fomecidas
atraves de algum outro mecanismo. Normalmente as informacoes SAML sao usadas em
conjunto com 0 WS-Security.
31
3
2
2)
MlInlpul~
de
parametros
DlYulga,1o
de dadosde
configuraljiio
Espiooilgem
de rede
SelViQo
da Web
Repeti9iio de
men5i1gen5
3
3
3.1.1.1 Vulnerabilidades
As vulnerabilidades que podem causar 0 acesso nao autorizado por meio de urn
service Web incluem:
3.1.2.1 Vulnerabilidades
As vulnerabilidades que podem permitir a manipulacao de parametres incluem:
34) Mensagens que nao sao assinadas digitalmente e, portanto, nao of ere cern protecao
contra violacao;
35) Mensagens que nao sao criptografadas e, portanto, nao of ere cern privacidade e
protecao contra violacao.
3.1.2.2 Contramedidas
Para evitar a manipulacao de parametres, podem ser usadas as seguintes contramedidas:
37) Criptografar a carga da mensagem para oferecer privacidade e protecao contra violacao.
Metodo de autenticacao de rede. Deixa com 0 usuario urn "tiquete" criptografado que pode
ser utilizado para requerer qualquer tipo de service, sem que a senha do usuario precise passar
pela rede.
10
34
3.1.3.1 Vulnerabilidades
As vulnerabilidades que podem ativar a espionagem na rede com ex ito incluem:
41) U sar criptografia no nivel do transporte, como SSL ou IPSec. Isso se a.pljca somente se
bouyer controle em ambos os 12ontos de extremidade;
42) Criptografar a carga da mensagem para oferecer privacidade. Essa abordagem funciona
em situacoes nas quais a mensagem passa por rota de nOs jntermedj4rjos ate
final.
destino
3.1.4.1 Vulnerabilidades
As vulnerabilidades que podem causar a divulgacao de dados de configuracao incluem:
3.1.4.2 Contramedidas
Para evitar a divulgacao indesejada de dados de configuracao, podem ser usadas as
seguintes contramedidas:
a) Autorizar 0 acesso a arquivos WSDL atraves de permiss5es;
Ameacas e
Tipo de
Mecanismos de Seguranca
36
35
Seguran~a
Ataques
Acesso nao
Autenticacao
Autenticacao de usuaries atraves de certificados
45) Remover
arquivos
WSDL
do servidor
Web; rejeitara a solicitacao e ira sup or que esta
solicitacao
do
cliente.
Se
ela
for
diferente,
0
servidor
autorizado
Nao repiidio
digitais.
sujeito
urn ataque
repeticao.de documentacao para impedir a geracao dinamica do WSDL;
46) aDesativar
os de
protocolos
Manipulacao
Utilizacao
de criptografia
assinaturas
digitais
o invasordenao pode Privacidade
falsificar a identidade
da mensagem,
pois elaeesta
assinada.
parametres
Integridade
mensagens.
Observando que isso protege
0 nas
servidor
contra ataques de repeticao iniciados pelo
47) Capturar excecoes e somente
descartar uma excecao do tipo "SoapException" ou
cliente usando a solicitacao de mensagem e nao oferece nenbuma 12roterwao ao cljente contra
"SoapHeaderException",
que retornam
somente
minimas
e inofensivas,
de
Espionagem
na
Privacidade
Utilizacao
dainformacoes
criptografia nas
camadas
de
res120stas re12etjdas.
rede volta para 0 cliente.
transporte e aplicacao.
Divulgacao
dosdas
Autorizacao
Autorizar acessos
aos arquivos
3.1.5
Repeticao
de mensa
gem Versus Mecanismos
3.2 Analise
Ameacas
decontrolados
Seguranca
dados
de
WSDL
e tomar
cuidados com 0
As
do service
Web podemaspassar
por(configuracao)
varies
servidores
intermediaries.
Namensagens
tabela abaixo
estao relacionados
principais
ameacas
e ataques
aos services Web, 0 tipo
configuracao
tratamento
de excecoes
do
service
Web.
Com
urn ataque
de vida
repeticao
de mensagem,
urn invasor
e copia
uma
mensagem
e ae
de seguranca
envol
e os mecanismos
de seguranca
quecaptura
procuram
combater
essas
ameacas
repete
no
service
Web
assumindo
a
identidade
do
cliente.
A
mensagem
pode
ou
nao
Repeticao
de
Privacidade
Utilizacao de criptografia e assinaturas digitais ser
ataques sofridos
pelos services
Web.
modificada.
mensagem
nas mensagens,
alem de utilizar
umaWeb
Tabela 3.2: AmeacasIntegridade
e ataques versus mecanismos
de seguranca
- Services
identificacao
iinica deincluem:
mensagens para evitar
Os tipos mais comuns de ataques de repeticao
de mensagens
duplicacao.
Ataque de repeticao basico - 0 invasor captura e copia uma mensagem e, em seguida, repete
a mesma mensagem e assume a identidade do cliente. Esse ataque de repeticao nao requer que 0
usuario mal-intencionado conheca 0 conteiido da mensagem.
Ataque de interceptadores - 0 invasor captura a mensagem, altera algum conteiido, por
exemplo, urn endereco para remessa e, em seguida, a repete no service Web.
3.1.5.1 Vulnerabilidades
As vulnerabilidades que podem ativar a repeticao de mensagens incluem:
3.1.5.2 Contramedidas
Para solucionar a ameaca de repeticao de mensagens, podem ser usadas as seguintes
contramedidas:
51) U sar urn canal de comunicacao com criptografia, por exemplo, 0 SSL;
52) Criptografar a carga da mensagem para oferecer privacidade de mensagem e protecao
contra violacao. Embora nao impeca os ataques de repeticao basicos, isso impede os
ataques de interceptadores, nos quais 0 conteiido da mensagem e modificado antes de
ser repetido;
53) U sar uma identificacao de mensagem exclusiva ou urn valor de uso iinico com cada
solicitacao para detectar duplicatas e assinar digitalmente a mensagem para oferecer
protecao contra violacao.
Urn valor de uso unico e urn valor exclusivo usado criptograficamente para a solicitacao.
Quando 0 servidor responde ao cliente, ele envia uma identificacao exclusiva e assina a
mensagem, inclusive a identificacao. Ao fazer outra solicitacao, 0 cliente inclui a identificacao
com a mensagem. 0 servidor certifica-se de que a identificacao enviada para 0 cliente na
mensagem anterior seja incluida na nova
Weblogic
38
3
Server
Sequranca
WS-
Sequranca
Transporte
Security
nos papeis
SSL
Token
Permissao
~-
,o,:oe)-
4 ESTUDO DE CASO
--I
Autenticacao
I~--.
I Assinatura digital I ~
Reterencia
4.1 Apresentacao
Para implementar 0 prototipo, utilizou-se a IDE (Integrated Development Enviroment)
WebLogic Workshop, uma ferramenta completa com ambiente de desenvolvimento em java,
servidor Web compativel com as especificacoes J2EE e WSSecurity, viabilizando a
implementacao desejada.
Esta ferramenta esta disponivel11 com licen<;afree12 para desenvolvimento e criacao de
prototipos de software com fins nao comerciais. Pertence a empresa BEA Systems, empresa de
software focada em infra-estrutura para aplicacoes, fornecedora de solucoes abertas e baseadas
em padroes de mercado, 0 que permite que 0 software do usuario dessas solucoes rode na
maioria das plataformas de hardware e sistemas operacionais hoje existentes.
Alem disso, a ferramenta integra urn framework de seguranca que suporta tres categorias de
seguranca: HTTP Transport Security, seguranca na mensagem e seguranca baseada em papeis. A
figura a seguir ilustra 0 funcionamento do framework de seguranca do servidor WebLogic:
11 Disponivel
4.2 Metodologia
A ferramenta IDE WebLogic utilizada neste estudo de caso foi instalada em uma maquina
com sistema operacional Windows XP, no modo padrao de instalacao da ferramenta em questao.
Todos os arquivos e configuracoes gerados para este estudo de caso foram atraves dessa
ferramenta.
A implementacao teve como primeiro passo, a criacao de urn projeto na IDE Weblogic. Em
seguida foi codificado urn service Web no arquivo Servico.jws.
Na sequencia gerou-se automaticamente 0 arquivo ServicoControl.jcx, utilizado pela classe
cliente para acessar 0 service Web. 0 cliente por sua vez, foi codificado no arquivo
Cliente.jws.
Para configurar 0 servidor Web foram acrescentados alguns parametres de autenticacao e
seguranca para 0 protocolo HTTP nos arquivos web.xml e weblogic.xml.
Para finalizar a construcao de urn service Web seguro no padrao WS-Security, ainda
restavam a criacao dos arquivos que policiam as mensagens SOAP de entrada e saida do service
Web. Para isso, foi necessario criar urn arquivo de seguranca, chamado ServicoSeguro. wsse,
com a finalidade de protecao ao service Web, este referenciado no c6digo de Servico.jws. Para a
protecao do lado do cliente foi criado 0 arquivo ServicoControlSeguro. wsse, referenciado no
c6digo do arquivo ServicoControl.
Com a conclusao da codificacao do service Web e do cliente, foi necessario cadastrar urn
usuario no servidor Web. Foram usados como nome "UsuarioValido" e como senha
"0123456789". Os mesmos dados de nome e senha do usuario tambem foram incluidos nos
arquivos com extensao wsse, que determinam a seguranca do servico.
39
Assim, com toda a codificacao concluida e usuano cadastrado no servidor, foi executado 0
c6digo Cliente.jws, gerando uma tela que solicita 0 nome do usuario e senha. Em seguida,
submetendo para autenticacao do usuario e execucao do service web, a aplicacao gerou uma
nova tela com duas mensagens SOAP, uma de envio pelo cliente e outra de retorno do service
web. As duas telas geradas podem ser vistas no anexo B.
A comprovacao de que a transacao executou com seguranca no padrao WS-Security, foi
possivel pela utilizacao de urn aplicativo de monitoracao da rede (exemplo: tcpmon) na porta
7001 ou 7002, portas em que 0 servidor WebLogic atende as requisicoes de aplicacoes clientes,
conforme configuracao padrao dos servidores WebLogic. No anexo C, estao listados alguns
dados que trafegaram entre 0 service Web e a aplicacao cliente, ambos criados neste estudo de
caso.
4.3 Implementacao
Este estudo de caso13 procura enfatizar 0 uso do padrao de seguranca WS-Security nos
services Web. A funcionalidade simplificada implementada no service Web deste estudo de
caso, podera ser modificada para urn service que forneca uma solucao com necessidades mais
complexas, aproveitando-se a mesma infra-estrutura de implementacao usada aqui.
o service Web implementado, no arquivo Servico.jws, recebe urn determinado produto com
a quantidade de itens e 0 preco unitario do item. Retorna ao cliente do service, 0 resultado da
multiplicacao da quantidade de itens pelo preco unitario.
o
cliente do service Web, por sua vez implementado no arquivo Cliente.jws, envia
determinado produto com descricao, quantidade de itens e preco unitario ao service Web. Ap6s
a invocacao do service, 0 cliente recebe 0 preco total do produto informado.
Alem disso, 0 cliente necessita de urn arquivo gerado a partir do service Web, que viabilize
a utilizacao do service pelo cliente. Este arquivo, chamado ServicoControl.jcx, foi gerado de
forma automatic a a partir do arquivo Servico.jws. A principal funcao desse arquivo e fornecer a
interface e a descricao WSDL do service Web ao cliente.
A comunicacao entre 0 service Web e seu cliente utiliza como padrao de seguranca o WSSecurity. A implementacao deste padrao, foi realizada da seguinte forma: na necessidade de
criar urn arquivo que policia a comunicacao tanto do lado do cliente como do lado do service,
criou-se no cliente 0 arquivo ServicoControlSeguro. wsse e no servidor 0 arquivo
ServicoSeguro.wsse. Ambos definem a seguranca desejada da mensagem SOAP do service Web
em estudo.
Os elementos de saida <wsSecurityOut> do arquivo de seguranca ServicoControlSeguro.
wsse correspondem aos elementos de entrada <wsSecurityln> do arquivo de seguranca
ServicoSeguro.wsse. Igualmente os elementos de saida <wsSecurityOut> deste arquivo
correspondem aos elementos de entrada <wsSecurityln> do arquivo ServicoControlSeguro.
wsse.
Os arquivos web.xml e weblogic.xml sao utilizados pelo servidor para determinar a
autenticacao do usuario com 0 servidor Web. Em seguida, a chave e senha do usuario
13 Todos os arquivos gerados para este estudo de caso estao listados no anexo A.
40
41
Aplicacao
SMTP, HTTP
Transporte
sao c)
repassadas
para 0 service Web executar seus procedimentos de seguranca, conforme
TCP,
UDP parte dos dados para 0 computador C; Isso
B
envia
configuracao do arquivo ServicoSeguro. wsse.
gera Rede
varies problemas:
Para ilustrar
0 funcionamento, a figura a seguir mostra a arquitetura da solucao:
IP
56) Como C pode ter certeza de que os dados vieram de A?
SERVIDOR
Requisicao SOAP
HTTP - autenticacao
para Servico.jws
A arquitetura
da Internet e organizada
em camadas.
As tres camadas de protocolo
relevantes
web.xml/weblogic.xml
@jws:ws-securityCONTROLE DO SERVICO
(1
service
ServicoControl.jcx
para as tecnicas de seguranca da informacao
descritas neste trabalho sao:file="ServicoSegur
camada de rede,
T "=--) ~
o.wsse"
"
<security-contraint>
camada de trans
@jc:ws-security-service
porte e com maior detalhamento
a camada
de aplicacao.
file="ServicoControISeguro.ws
(2)
url-pattern=Servico.jws
</security-contraint>
SOAP
Ha vantagensse"e desvantagens naResposta
aplicacao
de seguranca
em cada camada. Em geral, a
de Servico.jws
aplicacao de seguranca nas camadas sU12erjores de 12rotocolo 12ermjte Que majs fun~oes de
se~uran~a
sejam executadas. A aplicacao de seguranca nas camadas inferiores de protocolo tern
WS-Security
menor imp acto sobre as aplicacoes. As comunicacoes podem ser roteadas atraves de uma Rede
Privada Virtual
IPSEC, sem modificar uma unica linha deServicoSeguro.wsse
c6digo em qualquer das aplicacoes. A
ServicoControlSeguro.wsse
seguranca pode ser obtida dessa forma, porem, ela sera limitada a decidir quem pode conectarse a rede e<!--quem
Adiciona os
tera
seguintes
0 acesso negado. Estas vantagens
<1-- Entrada
e desvantagens
da requisicao SOAP. sao apresentadas na
elmentos de sequranca na
mensagem (1) deve conter
figura a seguir.
requisicao SOP (1) -->
elementos de sequranca -->
<wsSecurityOut>
elementos de sequranca na saida
Nao-Repudio +
<wsSecurityln>
elementos de sequranca na
entrada
</wsSecurityOut>
</wsSecurityln>
<wsSecurityln>
elementos de sequranca na
entrada
<wsSecurityOut>
elementos de sequranca na saida
</wsSecurityOut>
</wsSecurityln>
o SSL permite a autenticacao do cliente por mew de uma senha ou certificado digital. No
entanto, 0
nao fornecendo
seguranca quando as informacoes sao armazenadas ou repassadas atraves de outro computador.
Esta arquitetura , no qual:
Paddies
de
Objetivo
Seguran~a
Nivel
Caracteristicas
Seguran~a
42
Ameacas
Combatidas
4.3:Garantir
Avaliacao
- padroes
de segurancaTempo
para services
Web
IPSecTabela
a demonstrativa
Autenticacao
Rede
de
Rede
privacidade e
transmissao
Privacidade
Virtual
autenticacao
consideravel.
(VPN)
atraves de
Integridade
uma VPN.
Qualquer
ameaca vinda
de fora da
rede virtual.
SSLlTLS
Todas, porem
ponto-aponto.
Transporte
de
mensagens
com
Autenticacao
Privacidade
Transporte
Integridade
Baixo
desempenho;
Seguranca fim-afim services
criptografia
Autorizacao
Web nao
SSL
XML
Digital
Signature
XML
Encryption
disponivel.
Protocolo
para
assinaturas
digitais
Autenticacao
Protocolo
para
Privacidade
Integridade
Aplicacao
Assinatura
digital de
documentos todo
/ parte.
Acesso nao
autorizado.
Aplicacao
Criptografia de
documentos todo
Manipulacao
de parametres
/ parte.
Espionagem
Integridade
Nao repiidio
criptografia
na rede
Repeticao de
SAML
Possibilitar
trocas de
credenciais
de
autenticacao
e autorizacao
WS-Security
Autenticacao
Autorizacao
Aplicacao
Uso do SSO,
onde divers as
SSLlTLS
aplicacoes
Generalidade
compartilham 0
IPSEC
mesmo login
mensagem.
Acesso nao
autorizado
Divulgacao
dos dados de
configuracao.
WSSecurity
Seguran<;a
Autenticacao
Aplicacao
Padronizacao da
Acesso nao
nas
Integridade
OASIS
autorizado
mensagens
Manipulacao
SOAP
Privacidade
Figura 4.15: Vantagens e desvantagens da seguranca aplicada em diferentes camadasde parametres
Nao repiidio
Espionagem
o desafio e implementar a maior
parte da seguranca necessaria nas camadas superiores
de
43
5 CONCLUSAO
A importancia crescente dos services Web como forma de integracao entre organizacoes,
aplicacoes e processos de negocio torn a os aspectos relacionados a seguranca destes services
foco de atencao de seus usuaries. Com 0 padrao SOAP e 0 uso do HTTP como protocolo de
transporte, houve a quebra de alguns paradigmas de seguranca importantes em ambientes
corporativos, com a possibilidade de tratar a seguranca na propria mensagem, permitindo 0
compartilhamento de informacoes de seguranca entre intermediaries, a analise do conteiido das
mensagens trocadas e a identificacao do usuario responsavel por cada uma delas.
A utilizacao de determinadas estrategias de seguranca,
. No entanto, com a evolucao das
aplicacoes distribufdas, com 0 uso da Internet e padroes abertos, determinadas estrategias,
principalmente no nivel de rede e transporte nao sao mais suficientes, necessitando das
estrategias de seguranca no nivel de aplicacao. Os principais padroes de seguranca neste nivel
fazem parte da especificacao WS-Security, que aos poucos as ferramentas de desenvolvimento
de services Web estao incorporando nos seus ambientes.
No estudo de caso foi usada a ferramenta WebLogic Workshop 8.1, que implementa a
especificacao J2EE e os principais padroes de seguranca abordados neste trabalho. 0 prototipo
criado possibilitou demonstrar a aplicacao pratica destes padroes e fazer uma avaliacao, atraves
da execucao e observacao das mensagens trocadas entre 0 service Web e a aplicacao cliente,
ambos implementados no estudo de caso deste trabalho.
A tecnologia de services Web, por sua infra-estrutura publica, sujeita a ataques, questoes de
seguranca na Internet sao importantes. Contudo, ja existem padroes e produtos promissores para
a seguranca de services Web como visto neste trabalho.
Para trabalhos futuros, 0 que nao foi abordado neste trabalho, e importante destacar a
necessidade de estudar os ataques atraves de falhas em aplicacoes ao inves de falhas em infraestrutura, exigindo que a seguranca seja encarada como urn processo de mitigar riscos, nao
apenas com 0 uso de ferramentas ou abordagens tecnicas, mas tambem, na observacao do
comportamento das aplicacoes em situacoes de excecao.
Outra sugestao para trabalhos futuros e comparar 0 desempenho das ferramentas de
desenvolvimento que implementam frameworks de seguranca WS-Security e que permitem
desenvolver services Web seguros. Alem disso, e importante realizar estudos comparativos que
apresentem 0 comportamento das tecnologias J2EE e .NET no uso dos padroes de seguranca
para os services Web, uma vez que a principal caracterfstica desses services e promover a
interoperabilidade entre aplicacoes, independente das plataformas de hardware e software
adotados.
44
REFERENCIAS
BOND, Martin et al. Aprenda J2EE em 21 dias. Sao Paulo: Pearson Education do
Brasil,2003.
CHAPPELL, David; JEWEL, Tyler. Java Web Services. [S.L]: O'Reilly, 2002.
CLEMENTS, Tom. Overview of Soap. SUN. Disponivel em: <http://developer.
java.sun.com!developer/technicaIArticles/xml/webservices/>. Acesso em: set. 2005.
COSTA, L.A.G. Seguranca e Web Services em Java. Revista MundoJava, Rio de Janeiro,
ana 2, n.9, p.50-54, 2005.
GALBRAITH, Ben et al. Professional Web Services Security. Birmingham: Wrox Press,
2002.
HENDRICKS, Mack et al. Profissional Java Web Services. Rio de Janeiro: Alta Books,
2002.
IBM. Web Services Security (WS-Security). Disponivel em: <http://www-128.ibm.
com! developerworks/we bservices/library/ws- secure/index .html>. Aces so em: ago.
2005.
IEC- International Engineering Consortium. Tutorial Virtual Private Networks.
Disponivel em: <http://www.iec.org/online/tutorials/vpn/index.html>. Acesso em: set. 2005.
MAHMOUND, Qusay H. Securing Web Services and the Java WSDP 1.5 XWSSecurity Framework. SUN. Marco 2005. Disponivel em: <http://java.sun.com!
developer/technicalArticles /WebServices/security/>. Acesso em: ago. 2005.
MICROSOFT. Modulo 10 - Seguranca de Web Services. Centro de Orientacoes de
Seguranca.
Disponivel
em:
<http://www.microsoft.com/brasil/security/guidance/
topics/devsec/secmodlO.mspx>. Acesso em: set. 2005.
45
OASIS. Web Services Security: Soap Message Security 1.0. Disponivel em:
<http://www .oasis-open.org/committees/download. php/5531/oasis- 20040 l-wss-soapmessagesecurity-1.0.pdf>. Acesso em: jun. 2005.
PAMPLONA, Vitor Fernando. Web Services. Construindo, disponibilizando e aces
sando Web Services via J2SE. Disponivel em: <http://www.javafree.org/content/ view.jf?
idContent=4>. Acesso em: set. 2005.
ROSENBERG, Jothy.; REMY, David. Securing Web Services with WS-Security. USA.
Sams Publishing, 2004.
SOUZA, Gustavo de. Assinatura Digital de Documentos XML. Disponivel
em:<http://www.inf.ufsc.br/%7Edesouza/seguranca.htm>. Acesso em: set. 2005.
STALLINGS, Willian. Network Security Essentials: applications and standards.
Upper Saddle River, NJ: Prentice-Hall, 2000.
VIEIRA, Pedro da Fonseca. Virtual Private Networks. Disponivel em:
<http://www.gta.ufrj.br/grad/OOI/pedro/vpns.htm> . Acesso em: set. 2005.
W3C. Web Services Architecture. W3C Working Group Note 11 February 2004. Disponivel
em: <http://www.w3.org/TRl2004/NOTE-ws-arch-20040211/> Acesso em: jul. 2005.
46
Arquivo Cliente.jws - este arquivo faz parte da aplicacao cliente que invoca 0 service
Web do estudo de caso, 0 arquivo nada mais e do que uma classe java que contem
basicamente uma referencia a interface publica do service Web (servicoControl) e 0
metodo submitPO. Com referencia ao service Web, a classe Cliente cria urn objeto poBean,
que faz parte do service Web, e povoa os atributos do objeto poBean e em seguida invoca 0
service Web. Toda essa implementacao descrita e realizada dentro do metodo submitPO da
classe Cliente.
package pacoteSeguro;
import pacoteSeguro.ServicoControl.Bean;
//classe cliente do servico web
public class Cliente implements com.bea.jws.WebService
(
//referencia para
/**
* @common:control
servico web
*/
private pacoteSeguro.ServicoControl servicoControl;
static final long serialVersionUID
lL;
/**
* @common:operation
*/
public double submitPO(String nomeUsuario, String senha)
Arquivo Servico.jws - este arquivo representa a classe java Servico que e service Web
propriamente dito. A classe Servico possui uma classe intema chamada Bean, classe esta
vista pela classe Cliente. Alem disso, a classe Servico implementa 0 metodo
47
submitPO publicado como interface do service Web, atraves deste metodo 0 servico Web
executa sua funcionalidade e retorna 0 resultado para quem 0 invocou.
package pacoteSeguro;
//aponta para 0 arquivo de seguranca - padrao WS-Security /**
* @jws:ws-security-service file="ServicoSeguro.wsse" */
/**
* metodo que vai ser exportado para ser chamado pelo cliente *
@common:operation
*/
public double submitPO(Bean poBean) {
//codigo que retorna 0 valor total
return poBean.itemQuantidade * poBean.itemPreco;
Arquivo ServicoControl.jcx - este arquivo e gerado ap6s a construcao da classe Servico, que
representa 0 service Web. Este arquivo contem a interface do service Web vista pela classe
Cliente, a URL do service Web e toda a descricao na linguagem WSDL do service Web.
package pacoteSeguro;
//3 linhas abaixo: localizacao do servico web, arquivo WSDL que descreve
e
// 0 arquivo de seguranca padrao WS-Security
/**
* @jc:location httpurl="https://localhost:7002/SeguroAppWeb/pacoteSeguro/Servico.jws" jmsurl="Servico.jws"
* @jc:wsdl file="#ServicoWsdl"
* @jc:ws-security-service file="ServicoControlSeguro.wsse" */
servico
48
/**
* metodo que vai ser exportado para ser chamado pelo cliente *
@jc:protocol form-post="false" form-get="false"
*/
//metodo chamado pelo cliente e invocando 0 servico web.
public double submitpO (Bean poBean);
static final long serialVersionUID = lL;
//definicao em WSDL do servico WEB.
</types>
<message name="submitPOSoapIn">
<part name="parameters" element="sO:submitPO"/>
</message>
<message name="submitPOSoapOut">
49
* ..
*/
50
<signatureRequired>true</signatureRequired>
</wsSecurityIn>
<!-- Especifica a seguran~a da mensagem SOAP de saida do servi~o web. -->
<wsSecurityOut>
<!-- Nome e senha do usuario deve acompanhar a mensagem SOAP-->
<userNameToken>
<userName>UsuarioValido</userName>
<password type="TEXT">0123456789</password>
</userNameToken>
<!-- Mensagem SOAP criptografada com a chave publica do receptor.
Somente
o receptor com a chave privada podera decriptograr a mensagem.
Com isso, gar ante a confidencialidade da mensagem SOAP -->
<encryption>
<encryptionKey>
<alias>clientl</alias>
</encryptionKey> </encryption>
privada.
51
<encryptionKey>
<alias>mycompany</alias>
</encryptionKey> </encryption>
<!-- Mensagem SOAP assinada digitalmente pelo enviador com a chave
privada.
Somente com a chave publica do enviador, validara a assinatura.
Com isso, garante a autenticidade da origem da mensagem.-->
<signatureKey>
<alias>clientl</alias>
<password>password</password>
</signatureKey>
</wsSecurityOut>
<!-- Especifica os elementos de seguran~a na mensagem SOAP que retorna do
servi~o web-->
<wsSecurityIn>
<!-- Mensagem SOAP deve acompanhar urn username e senha validos-->
<token tokenType="username"/>
<!-- Encripta a mensagem SOAP com a chave publica de Servico.jws. o alias e
password sao usados para acessar a chave privada de Servico. jws
em Keystore, sao elementos de decryptionKey-->
<encryptionRequired>
<decryptionKey>
<alias>clientl</alias>
<password>password</password>
</decryptionKey>
</encryptionRequired>
52
<role-name>GoodRole</role-name>
<lauth-constraint>
<user-data-constraint> <transportguarantee>CONFIDENTIAL</transport-guarantee> </user-dataconstraint>
</security-constraint>
<security-role>
<description>Role description</description> <rolename>GoodRole</role-name> </security-role>
<!-- fim seguranca ao nivel de transporte de HTTP E HTTPS -->
5
3
ANEXO B TELAS
Test operations
m
Messa e Lo
Refresh
Lo is em t
Resultado da execucao - ap6s submeter 0 nome e senha do usuario ao servidor Web, visto na
figura acima, 0 servidor Web retorna no padrao SOAP 0 resultado da execucao do service Web
implementado no estudo de caso.
submitPO
ervicoControl.ubrnitPO ..
Clear Lo
<SOAP-EN\.': Envelope xmlns: SOAP-ENC="http: rschemes. xmlsoep. orqrsoeprencodinqr" xmlns: SOAPENV=''http://schem-3s .xmlsoep. orqrsoeprenveloper" xmlns: xsd=''http://www .wa. ororzun l/XMLSchema" xmlns:
<
een>
i,org/,,>
54
5
5
<dsig:SignedInfo>
<dsig:CanoniealizationMethod
Algorithm=''http://www.w3.org/2001/10/xml-exe-
e14n#"/>
<dsig:SignatureMethod Algorithm=''http://www.w3.org/2000/09/xmldsig#rsa-sha1''/>
<dsig:Referenee URI="#Id-FRvBBqzkzp27T8MIOBAwunHg">
<dsig:Transforms>
<dsig:Transform
e14n#"/></dsig:Transforms>
<dsig:DigestMethod Algorithm=''http://www.w3.org/2000/09/xmldsig#sha1''/>
<dsig:DigestValue>kTKQ8N+fLAMnqQFNzDp60alJjLQ=</dsig:DigestValue>
A listagem abaixo uma mensagem SOAP usando 0 padrao WS-Security, capturada
</dsig:Referenee>
em
tempo de execucao da aplicacao cliente e 0 service Web. Especificamente e uma mensagem
</dsig:SignedInfo>
de requisicao do service Web.
<dsig:SignatureValue>E/W8kk2f4s/1BqZYxejRxN9xeiKwE1bE7oqFCJZ9miBUa06mvaS9h3spg
LLMrBQm+FeeT/pj7Bf6ZoIfP8j4CCv2zNeyBm8IHaWg7yP+diVZtUezrK9meuf6RQsmxtwo1S3HgYC
<SOAP-ENV:Envelope
xmlns:SOAP-ENC=''http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi=''http://www.w3.org/2001/XMLSchema-instance''
OEATQ3/SAnsJvVp+GWnmjufOkGYf7Ee1xN/s=</dsig:SignatureValue>
xmlns:xsd=''http://www.w3.org/2001/XMLSchema''
<dsig:KeyInfo>
ENV=''http://schemas.xmlsoap.org/soap/envelope/''>
<wsse:SeeurityTokenReferenee>
xmlns:SOAP-
<SOAP-ENV:Header>
<wsse:Referenee URI="#Id-KODO_eyXF4HeN77_hWnLtnXC"/>
<wsse:Security
xmlns:wsse=''http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-secext-l.O.xsd"
SOAP-ENV:mustUnderstand="l">
</wsse:SeeurityTokenReferenee>
<xenc:EncryptedKey xmlns:xenc=''http://www.w3.org/2001/04/xmlenc#''>
</dsig:KeyInfo>
<xenc:EncryptionMethod Algorithm=''http://www.w3.org/2001/04/xmlenc#rsa-l_S''/>
</dsig:Signature>
<dsig:Keylnfo xmlns:dsig=''http://www.w3.org/2000/09/xmldsig#''>
wsse:UsernameToken
xmlns:wsu=''http://does.oasis-open.org/wss/2004/01/oasis200401-wss-wsseeurity-utility-1.0.xsd" wsu:Id="Id-VHr3dOFmPfnDjtLYTDaICdkZ">
<dsig:KeyName>CN=MyCompany,
OU=Development,
L=Sealand,
O=MyDevTeam,
ST=WA,
<wsse:Username>UsuarioValido</wsse:Username>
C=US</dsig:KeyName>
</dsig:Keylnfo>Type=''http://does.oasis-open.org/wss/2004/01/oasis-200401-wss<wsse:Password
username-token-profile-1.0#PasswordText">0123456789</wsse:Password>
<xenc:CipherData>
</wsse:UsernameToken>
<xenc:CipherValue>NPstojvmM+RE90tVaVaxMUn3HARSQm9Wz6NI7q+XPNfZUc/SS/bQMS8coFNa
</wsse:Seeurity>
d6PtF9voIS06dAwqvPOg9hwSyT9SfKtMgA4/WcFbo73SVz9ITaPCAQ9dn8USkz7s0oza3NyIIC6VdI
mBkGu87dbmLA2AKvfob7s21nDTxSrcleg=</xenc:CipherValue>
</SOAP-ENV:Header>
</xenc:CipherData>
<SOAP-ENV:Body
xmlns:wsu=''http://does.oasis-open.org/wss/2004/01/oasis-200401wss-wsseeurity-utility-1.0.xsd"
wsu:Id="Id-FRvBBqzkzp27T8MIOBAwunHg">
<xenc:ReferenceList>
<xene: EneryptedData
xmlns: xene=''http://www . w3 . org/ 2001 /04/xmlene#"
<xenc:DataReference URI="#Id-6F7LceaMAxS3wyRRENVS3dit"/>
Id=" Id</xenc:ReferenceList></xenc:EncryptedKey>
6F7LeeaMAxS3wyRRENVS3dit"
Type=''http://www.w3.org/2001/04/xmlene#Element''>
<xene:EneryptionMethod
Algorithm=''http://www.w3.org/2001/04/xmlene#aes128ebe"/>
<wsse:BinarySecurityToken
xmlns:wsu=''http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-l.O.xsd"
<xene:CipherData>
ValueType=''http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-xS09-tokenprofile-l.O#XS09v3"
EncodingType=''http://docs.oasis<xene:CipherValue>6V1NCg8jq7U6tqSJPLYvbfjXi7f3sk64RzT6GCkxNeAeMSuUNMvymOZMKVey
open.org/wss/2004/01/oasis-200401-wss-soap-message-security-l.O#Base64Binary"
lu1MWLbFASMNSONkwnOa11olysZPHHnNuei6h6foQge24BQVLV8mJWjeOHiMrR80hJ6TCVtMEES4Np
1QmPOF/ydhPA7QTweiFUvbImp1HwjOOhYwU4jn7BZTywp+yUAVJ80DhpeaDPeMXrLI/wTFgnBbfmVq
wsu:ld="IdKODO_eyXF4HcN77_hWnLtnXC">MIICRTCCAa6gAwIBAAIEPrBeaTANBgkqhkiG9wOBAQUFADBnMQsw
lLvLTngft/IHbKP69r8IFrEUr+ZZSdlOBWj8Hr8x09jiFAgkxw73ZbYayS7wMFeM94Xj8FTXYwQSgA
KSMNiWAWxNKmGBfA38InrybSbgtWWEX4EKFHMs8901mudoNwW1JdekDNLuFmE3AVOfWHqXurplKlCa
CQYDVQQGEwJVUzELMAkGAIUECBMCTlkxFjAUBgNVBAcTDUSldyBZb3JrIENpdHkxDDAKBgNVBAoTA2
9yZzETMBEGAIUECxMKY2xpZWSOMU9yZzEQMA4GAIUEAxMHY2xpZWSOMTAeFwOwMzAOMzAyMzM4MTda
xfynzhL2WixTk7/bAJfa6ayA+70uRTXg6V+tAthaDI2AfRxYEmM31Cn46xeDZAV+W3N3RF8TDtvhId
SSU/UXoamQYpJMxh6xGA==</xene:CipherValue>
FwOwNDAOMjkyMzM4MTdaMGcxCzAJBgNVBAYTAIVTMQswCQYDVQQIEwJOWTEWMBQGAIUEBxMNTmV3IF
IvcmsgQ210eTEMMAoGAlUEChMDb3JnMRMwEQYDVQQLEwpjbGllbnQxT3JnMRAwDgYDVQQDEwdjbGll
bnQxMIGfMAOGCSqGSlb3DQEBAQUAA4GNADCBiQKBgQDF/Q/4VGVObOfdrXELYhlJzKC76eICnJLrCC
</xene:CipherData>
h6nBfpKjZUBBiDILhphBS2arGonEUIBHH09n68NlhoN/uzSj6HS/KmLRdcAlhuAIlcNoWmxC61XjCx
</xene:EneryptedData>
EDT+agvrg2D6suyzElusWCrvpIEsWEtCcCDOx/MOVcQLK3q90Mg4ihj4ewIDAQABMAOGCSqGSlb3DQ
EBBQUAA4GBAKgcU99Prrz37UgiTpSNTX4oLDPM+HBmETQB9EnQPDPZ829tsHsPymM42Pe2Qk4TNM/+
</SOAP-ENV:Body>
ZIdbrFRSft64WWHYjr8K8uBR9F7/alWyJmiNPE3wkiZ1M140HjV810fAfwR2d+cdBORvJpwLx/onTx
</SOAP-ENV:Envelope>
FcnMICzJfUUpSmFHzebkw19/WD</wsse:BinarySecurityToken>
<dsig:Signature xmlns:dsig=''http://www.w3.org/2000/09/xmldsig#''>