Artigo

Transcrição

Artigo
Trabalho Prático nº 1 (Protocolo XMPP) / Comunicações de Dados
1
XMPP
“Extensible Messaging and Presence Protocol”
José Gonçalves Nº 7830, Nuno Oliveira Nº 7836 e Paulo Lopes Nº 6510

Resumo: Este artigo tem como objectivo a apresentação,
implementação e utilização do Protocolo XMPP, amplamente
difundido no seio das comunidades de software open-source. Trata-se
de um protocolo de comunicações aberto, baseado em XML. Este
protocolo foi desenvolvido com o objectivo principal de fortalecer a
área das comunicações instantâneas. Actualmente, o desenvolvimento
exponencial inerente às suas características permite a sua aplicação
em inúmeras áreas que requerem interacção em tempo real.
publicamente fazendo parte do conjunto de protocolos
apresentado pela RFC – Request for CommentsIII contribuiu
decisivamente para a possibilidade de estudo.
Este documento pretende apresentar, resumidamente um
pouco da sua história, a sua constituição e método de
funcionamento, segurança, vantagens e desvantagens em
relação a outros protocolos e a configuração de um servidor
XMPP.
Palavras-chave: XMPP, Instant Messaging, IM, Chat
II. HISTÓRIA
I. INTRODUÇAO
N
o âmbito da UC de Comunicação de Dados do segundo
semestre do segundo ano da Licenciatura em Engenharia
de Sistemas Informáticos – pós laboral, foi-nos proposto a
realização de um trabalho sobre um protocolo de
comunicação. A escolha recaiu sobre o protocolo XMPP –
Extensible Messaging and Presence Protocol.
A importância deste protocolo para as comunicações atuais
quer ao nível da sociedade como também ao nível empresarial
foi a base principal da escolha.I
Há anos atrás as comunicações entre pessoas eram todas
elas realizadas através de contactos telefónicos.
Posteriormente, as comunicações digitais evoluíram para
sistemas de envio e resposta de emails mas o tempo que era
necessário para enviar e receber emails não permitiam a
realização de uma conversa rápida e fluida como seria por
vezes necessário para troca de pequenas, mas muito
importantes, informações de trabalho.
O contacto telefónico passou para segundo plano pois por
intermédio desse meio de comunicação, além de não ser tão
prático, também tornava a conversa mais extensa e por isso o
rendimento do trabalho tornava-se menor.
Por outro lado, a sua facilidade de comunicação associada à
possibilidade de comunicação com várias pessoas mas
também a possibilidade de realização de várias tarefas ao
mesmo tempo (trabalhar num determinado projeto e tirar
dúvidas sequencialmente sobre a realização do projeto por
exemplo) permitiu a sua difusão exponencial pelos meios
empresariais, estudantis e a sociedade em geral.
Este protocolo de mensagens instantâneas (IM – Instante
Messaging) é dos mais utilizados ao nível mundial quer ao
nível das aplicações publicas que o usam (comunicações na
internet) como também ao nível privadoII.
O facto de ser um protocolo open-source, definido
Nos anos 60 do século passado surgiu a primeira mensagem
instantânea (IM). Uma simples troca de mensagens de
impressão entre terminais veio a ser anos mais tarde uma
grande revolução nas comunicações de informações e de
dados.
Só nos anos 90 é que as comunicações IM surgiram
associadas à internet e permitiram uma maior facilidade de
comunicação entre os utilizadores. A grande vantagem
relativamente ao e-mail era a possibilidade de receber e enviar
mensagens instantâneas sem demora.
O ICQ veio revolucionar as comunicações pois foi o
primeiro software do género a ser utilizado em larga escala,
seguido um pouco mais tarde pelo MSN. Assim, o universo
das IM ficou dominado por dois polos, o ICQ e o MSN.
Com o mercado dominado por estes dois grandes polos,
havia um enorme problema ao nível das comunicações pois
era impossível estabelecer-se comunicações entre os dois
softwares pois cada um deles utilizava protocolos de
comunicação privados e específicos de cada software.
Em Janeiro de 1999 Jeremie Miller anunciou o Jabber, uma
tecnologia aberta para registo de presença e envio de
mensagens instantâneas. Esta tecnologia rapidamente se
difundiu em virtude da sua interoperabilidade entre sistemas
de comunicação.
Ainda em 1999, apareceu primeiro o percursor do XMPP
validado pela IETFIV.
Inicialmente designado por Jabber, rapidamente se difundiu
por todos os tipos de softwares devido à sua simplicidade e
facilidade de comunicação e implementaçãoV.
Mais tarde este projeto passou a designar-se de XMPP
(Extensible Messaging and Presence Protocol)
Atualmente, fruto da sua interoperabilidade, este
protocolo é utilizado por grande parte dos softwares de
comunicação IM.
Abril de 2013 / EST IPCA - Engenharia de Sistemas Informáticos (PL)
Trabalho Prático nº 1 (Protocolo XMPP) / Comunicações de Dados
2
<iq type="set" id="an_id"
from="[email protected]"
to="sxmo.net">
<query xmlns="jabber:iq:roster"/>
</iq>
III. FUNCIONAMENTO
A facilidade de comunicação, pública ou privada, é a sua
principal “arma”. Por ser um protocolo público e utilizar a
tecnologia XML, a sua utilização passou a ser quase universal.
Os clientes encontram-se ligados a um servidor XMPP.
Cada cliente registado possui um JID (Jabber Identifier). Este
ID funciona como um endereço de correio electrónico que se
encontra
ligado a
um
servidor.
Por
exemplo
[email protected], ou seja, o “utilizador” está ligado a
um “servidor.com”.
A comunicação é realizada entre um utilizador e os seus
contactos presentes na sua “lista de contactos” Os contactos
de um utilizador poderão estar localizados no mesmo servidor
ou em servidores totalmente distintos – de onde advém a
grande vantagem deste protocolo relativamente aos protocolos
privados que existiam até ao momento.
A comunicação é realizada quando o cliente, através da
camada da aplicação envia um conjunto de instruções, em
XML para o servidor pela camada de transporte através do
protocolo TCP pedindo a sua subscrição.
Ao estabelecer a conexão, o utilizador irá definir o seu
estado, indicando a sua presença, assim como a possibilidade
de envio de IM – o que é uma das grandes vantagens deste
protocolo.
No caso da instrução
acima,
Análise de soluções
abertasestamos
para M2M requisitando ao
servidor XMPP a lista de contactos do utilizador Paulo..
6]
Assim
sendo, de
o dados
XMPP
faz deuso
XML
parao protocolo
a trocaXMPP
de
Figura
5.10: Publicação
por parte
umado
entidade
utilizando
<presence from="[email protected]">
<status>trabalhar...</status>
</presence>
informação. No XMPP, a informação XML está organizada
como um par de “streams”, um para cada direcção da
5
<pubs ub x ml ns =’ ht t p: / / j abber . or g/ pr ot oc ol / pubs ub’ >
comunicação. Cada um desses “streams”, consiste num
6
<s ubs c r i be
de
7
node=’ pr i nc
el yabertura
_mus i ngs ’ seguido de XMPP “stanzas”, terminando
A instrução de presence tem a função de notificar os elemento
8
j i d=’um
f r anc
i s c o@denmarde
k . l fecho.
it’/>
com
elemento
servidores e a lista de contactos sobre o estado de um
9
</ pubs ub>
utilizador na rede XMPP.
10 </ i q>
O envio de mensagens entre utilizadores é iniciado com a
indicação de <message> onde o cabeçalho tem definidos os A mensagem que o servidor envia como resposta ao pedido inicial (em caso de sucesso) é
utilizadores intervenientes (remetente e destinatário) e o tipo apresentada apresentada a seguir. É função do servidor informar a entidade que realizou o pedido
de subscrição que se encontra subscrita (o que pode incluir um sub identificador gerado pelo
de mensagem a enviar.
serviço). Para mais informações consultar [MSAM12].
<message to="[email protected]"
from="[email protected]"
type="chat" >
<body>Como estas?</body>
</message>
1
<i q t y pe=’ r es ul t ’
As Stanzas utilizadas podem ser de diferentes tipos:
Presença, Mensagem e Info/Query (IQ).
2
f r om=’ pubs ub. s hak es pear e. l i t ’
3
t o=’ f r anc i s c o@denmar k . l i t / bar r ac k s ’
4
i d=’ s ub1’ >
5
<pubs ub x ml ns =’ ht t p: / / j abber . or g/ pr ot oc ol / pubs ub’ >
6
<s ubs c r i pt i on
7
node=’ pr i nc el y _mus i ngs ’
8
j i d=’ f r anc i s c o@denmar k . l i t ’
O servidor não notifica o utilizador de se a mensagem foi ou
não entregue ou se este se encontra ou não on-line. Se o
destinatário se encontrar offline a mensagem é guardada no
servidor para ser entregue posteriormente quando o
destinatário se encontrar on-line.
O cabeçalho da mensagem pode conter alguns comandos
que permitam outras funcionalidades adicionais, como por
exemplo a possibilidade de se saber quem se encontra on-line
e assim saber-se se as mensagens são entregues ou
armazenadas no servidor para serem entregues posteriormente.
49
O Cliente conecta-se com servidor XMPP através de um
protocolo cliente-servidor.
A função do Servidor XMPP é encaminhar as “stanzas”,
quer estas sejam internas (entre dois clientes no mesmo
servidor), quer sejam entre um cliente local e um cliente
localizado num servidor remoto. De entre os servidores XMPP
Abril de 2013 / EST IPCA - Engenharia de Sistemas Informáticos (PL)
Trabalho Prático nº 1 (Protocolo XMPP) / Comunicações de Dados
mais populares, destacam-se sobretudo dois: o Ejabberd e o
Openfire.
Os Componentes aumentam o comportamento do servidor
através da adição de um novo serviço. Possuem a sua própria
identidade e endereço dentro do servidor mas executam
externamente e comunicam de um protocolo de componente.
Os Plug-Ins estendem as funcionalidades dos servidores
XMPP.
IV. UTILIZAÇÃO
Em virtude de ser um protocolo cliente-servidor e
também devido a ser um protocolo open-source, é possível
conectar plataformas de software de diversos fabricantes e
assim resolver um problema que surgiu aquando do domínio
das duas principais marcas de IM que surgiram no mercado, a
ICQ e a MSN.
Devido à facilidade de utilização, juntamente com o
aumento de produtividade, assim como a sua
interoperabilidade, este sistema de comunicações foi muito
difundido ao nível dos utilizadores informáticos. Não só
estava garantida a comunicação em tempo útil (instantâneo)
mas também a partilha rápida, fácil e eficaz de dados entre um
grupo restrito de utilizadores. Mas para além destas vantagens,
a possibilidade de, em caso de ausência, permitir que as
mensagens ou dados fossem entregues posteriormente também
não deixou de ser um importante ponto a favor da sua
utilização.
Com o aumento de extensões que passaram a ser possível
utilizar com esta tecnologia, a sua utilização ainda mais se
difundiu.
Assim, atualmente é possível encontrar uma série de IM que
utilizam como meio de comunicação o protocolo XMPP, tais
como:
• Google Talk,
• Live Journal Talk,
• Nimbuzz,
• Ovi
• Facebook (chat)
Fruto da sua constante evolução, existem já outras
utilizações desta arquitetura que são por exemplo:
- Jogos
- Edição colaborativa de documentos
- Controlo remoto de sistemas
- Geolocalização
- Cloud computing
- etc.
V. SEGURANÇA
Não existe sistemas totalmente seguros. Todos são
susceptíveis de possuir fragilidadesVIAo nível das mensagens
instantâneas (IM) neste protocolo, e desde 1999, que não há
registo de ataques significativos de qualquer espécie. Os
ataques de spam, phishing, malware ou outros são quase
3
insignificantes, tendo em conta que ao nível do email, cerca de
90% da informação é atribuída a spam. 6
As questões de segurança estão mais ou menos acauteladas
em virtude da forma de autenticação e de conecção com uma
rede de contactos que podem já existir na lista de contactos há
muito tempo. Por força disso e por força da forma como é
estabelecido a atribuição do utilizador, a comunicação entre
utilizadores irá ser quase fidedigna, ou seja, se o utilizador X
ontem era um utilizador conhecido e que fazia parte da rede de
contactos do utilizador A, em todas as comunicações que o
utilizador A realizar com o utilizador X irá manter-se os
mesmos dados de acesso e por isso está salvaguardada a sua
identidade.
A segurança está assegurada por dois processos que, em
conjunto, permitem obter um compromisso muito eficaz.
O primeiro sistema de segurança é assegurado pelo
protocolo TLS (The Transport Layer Security) que estabelece
a transmissão das mensagens criptografadas entre o clienteservidor. No entanto não assegura a trocas das mensagens
criptografadas entre os dois utilizadores criando assim uma
vulnerabilidade neste protocolo pois o administrador do
servidor possa ter acesso ao conteúdo das mensagens trocadas
entre o cliente-servidor. A solução poderia passar por um
sistema end-to-end, ou seja assegurar o envio da mensagem
criptografada entre os dois utilizadores no entanto também é
um problema a sua implementação – atualmente há quem
procure estender o protocolo TLS entre clientes, o que tem
sido de certo modo difícil de implementar até ao momento e
ainda não se encontra validade esta hipóteseVII.
A identidade e autenticação é outro sistema de segurança
que leva a que somente tendo conhecimento dos dados de
autenticação de uma conta é que se torna possível o acesso ao
envio de mensagens – protocolo SASL (Simple Authentication
and Security Layer protocol).
VI. CONFIGURAÇÃO DE UM SERVIDOR
JABBER/XMPP
Com o objectivo académico de exemplificar a
aplicabilidade do protocolo XMPP, é apresentado em seguida
o processo de configuração de um “Chat Server” dedicado
(servidor de mensagens instantâneasVIII).
A implementação de um servidor local de mensagens
instantâneas foi realizada num “Windows Server 2008 R2
Standard”, instalado numa máquina virtual (VM VirtualBox).
A máquina foi configurada com o nome “Server2008” que
será o Domínio. O objectivo será criar uma série de clientes
locais que utilizarão como identificador (“Jabber ID” ou
“JID”) um endereço do tipo:
[nome_do_utilizador]@server2008
Antes de se instalar o Servidor XMPP propriamente dito,
procedeu-se à configuração do servidor XAMPP, o qual
fornece, gratuitamente, uma plataforma simplificada para
Abril de 2013 / EST IPCA - Engenharia de Sistemas Informáticos (PL)
Trabalho Prático nº 1 (Protocolo XMPP) / Comunicações de Dados
4
trabalhar com Apache, que funcionará como “reverse proxy”
para o “connection manager”. Além do Apache, o XAMPP
server já possui MySql, necessário para a implementação da
base de dados.
Após concluída a instalação do XAMPP, tem-se acesso a
um layout de controlo onde se pode verificar que já existe
activos a correr no sistema criado, o Apache nas portas 80 e
443 e o MySql na porta 3306.
O próximo passo passa pela instalação de uma aplicação de
desenho e gestão de bases de dados. A opção recaiu sobre o
“MySql Workbench”, igualmente disponível para download
gratuito no site do MySql (www.mysql.com). Dentro da
instância, isto é, através da conexão, o localhost (127.0.0.1
porta 3306), criou-se uma nova base de dados à qual se deu o
nome de xmppDB.
Após a instalação do Openfire, lançou-se a ferramenta de
administração do mesmo, na qual se configurou, entre outros
aspectos, o domínio (“Server2008”), a base de dados criada
(“xmppDB”), o administrador, etc.
Concluídas estas configurações, o servidor encontra-se
pronto para receber novos utilizadores clientes, os quais se
poderão registar através de um XMPP Client Software.
De referir que neste caso se trata apenas de um exercício
académico, logo utilizou-se como base o localhost, contudo
poderia-se perfeitamente configurar, exactamente da mesma
forma, um servidor real através de um qualquer endereço IP.
Um Cliente XMPP é um software que possibilita a conexão
com um servidor XMPP. Existem diversas aplicações cliente
que permitem essa conexão. De entre estas optou-se por
exemplificar a conexão ao Chat Server com dois softwares
cliente XMPP bem conhecidos:
- PandionIX - PidginX
Apresenta-se em seguida alguns exemplos relativos aos
clientes XMPP.
Pode-se começar por criar um utilizador directamente no
painel de administração do servidor XMPP (Openfire) e
utilizar esse utilizador no Pidgin, por exemplo, para se poder
enviar mensagens instantâneas para outros utilizadores.
Foi então criado um utilizador (“user1”) no servidor
(“Server2008”) directamente a partir do painel de
administração do Openfire. Esse utilizador terá como
identificador o seguinte Jabber ID (JID):
user1@server2008
Depois de criada a base de dados, passou-se à instalação do
servidor XMPP. Trata-se de um dos componentes mais
importantes de todo o processo. Existem, como referido
anteriormente, diversas opções à disposição (Ejabberd,
Prosody, Tigase, etc). Optou-se pelo Openfire, disponível em
www.igniterealtime.org/projects/openfire.
Abril de 2013 / EST IPCA - Engenharia de Sistemas Informáticos (PL)
Trabalho Prático nº 1 (Protocolo XMPP) / Comunicações de Dados
Em seguida adicionou-se a conta anteriormente criada ao
Pidgin, mencionando o protocolo utilizado (XMPP), o nome
do utilizador (user1), o domínio (server2008) e a respectiva
password, e verificou-se que a ligação foi efectuada com
sucesso.
5
A partir deste momento basta então adicionar o contacto do
outro utilizador num dos clientes para que seja enviado um
pedido. Depois de aceite esse pedido, é possível aos dois
utilizadores enviarem mensagens instantâneas um ao outro.
VII. CONCLUSÃO
Alternativamente, e porque o XMPP é um protocolo aberto,
pode-se criar utilizadores directamente a partir do Cliente
XMPP. Para o exemplificar e para comprovar que não existe
necessidade de utilizar o mesmo software cliente, procedeu-se,
desta feita a utilizar o Pandion como aplicação cliente XMPP.
Depois de definidos os campos necessários, foi criado no
servidor um novo utilizador mas desta vez esse processo foi
realizado directamente a partir da aplicação cliente (Pandion).
O novo utilizador terá o seguinte JID:
user2@server2008
Com este artigo pode-se concluir que o protocolo XMPP é
uma alternativa poderosa aos protocolos privados de tempo
real. Apesar de ser de simples implementação, oferece
características que permitem levar a cabo aplicações de
elevada complexidade. Na sua génese esteve, sobretudo, o
desenvolvimento da área das mensagens instantâneas,
contudo, dadas as suas capacidades inerentes, permite ser
utilizado, por exemplo, em jogos online com interatividade em
tempo real, edição colaborativa de documentos ou, numa área
que se considera particularmente interessante, no controlo
remoto de sistemas.
Este protocolo é um exemplo de que processos informáticos
simples podem vingar, contrastando com a evolução da
informática e o nível de complexidade de alguns softwares
tem aumentado, mas existem alguns processos que ainda se
baseiam em protocolos simples, como é o caso do XMPP.
Ao nível da segurança, este protocolo respeita até mais que
Abril de 2013 / EST IPCA - Engenharia de Sistemas Informáticos (PL)
Trabalho Prático nº 1 (Protocolo XMPP) / Comunicações de Dados
os padrões mínimos de segurança, quer ao nível da
transmissão de mensagens instantâneas, como também ao
nível da validação de clientes utilizadores.
Por outro lado, a implementação de servidores XMPP de
natureza privada são de fácil implementação permitindo assim
uma utilização também ao nível de redes empresariais
relevantes.
VIII. REFERÊNCIAS
I
Luis Cipriani, computer scientist [Internet]
http://talleye.com/post/21361278423
II
XMPP Standards Foundation [Internet]
http://xmpp.org/about-xmpp/history
III
XMPP Standards Foundation [Internet]
http://xmpp.org/xmpp-protocols/rfcs/
IV
Internet Engineering Task Force
V
XMPP: Definitive Guide / Peter Saint-Andre, Kevin Smith,
Remko / O'Reilly Media / 2009
VI
Extensible Markup Language
VII
P. Saint-Andre, K. Smith, and R. ronçon, “XMPP: he
Definitive Guide”. O’Reily
VIII
Getting to Know XMPP - Adrian's Findings & Learnings
IX
www.pandion.im
X
www.pidgin.im
Abril de 2013 / EST IPCA - Engenharia de Sistemas Informáticos (PL)
6

Documentos relacionados

abordagem e implantação do protocolo xmpp

abordagem e implantação do protocolo xmpp médio porte está preocupada com as informações que seus funcionários permutam através deste mecanismo de comunicação.

Leia mais