Expondo a rede Skype

Linux 10 Comentários

Recentemente, o Skype trouxe a videoconferência também para a plataforma GNU/Linux. Usuários do pinguim sempre sofreram com a falta de uma alternativa de bate-papo com voz e vídeo com usuários do Windows. Por já ser bastante popular entre usuários do Bill Gates, essa nova versão do Skype deve aumentar rapidamente a sua base de usuários também no ambiente linux. Esse artigo lança uma luz sobre o ainda desconhecido protocolo utilizado pelo Skype e alerta que o programa usa ciclos de CPU mesmo quando o usuário não o está utilizando. Também, apresenta-se uma técnica recentemente descoberta que permite a uma aplicação secretamente utilizar ciclos da CPU indefinidamente mesmo sem ter privilégios de super-usuário. Por último, o artigo lembra que a empresa criadora do Skype já foi acusada de estar usando indevidamente ciclos de CPU e até espaço em disco dos usuários, alertando para os malefícios que podem ser causados se a mesma atitude for aplicada a rede Skype.

Popularização do Skype

Um dos principais motivos pelos quais as pessoas usam computador é a troca de mensagens. Hoje em dia, acredito que, de uma forma geral, o tipo de programa mais utilizado seja os de bate-papo. Além disso, a simples troca de mensagens de texto já não está satisfazendo a maioria dos usuários. O bate-papo por voz e vídeo já é utilizado diariamente por diversas pessoas. Acredito que isso afasta muita gente do Linux, pois os programas mais populares de bate-bapo (MSN, Yahoo e Skype) não possuem equivalentes na plataforma GNU/Linux que suportem voz e vídeo. Geralmente, quando o usuário sabe que a alternativa mais madura para videoconferência no Linux é o Ekiga, segue uma grande decepção. Isto porque o Ekiga é praticamente desconhecido dos usuários Windows. Então, vem a pergunta: “Com quem vou conversar através do Ekiga?”.

Normalmente, Linuxers usam soluções híbridas como, por exemplo, usar o aMSN para ver o vídeo e o Skype para o áudio. Contudo, esta situação deverá mudar, pois, no dia 7 de novembro de 2007, foi lançada uma versão beta do Skype com suporte a voz e vídeo. Desde que o Skype é uma das plataformas mais populares para videoconferência, esta versão deve torna-se bastante popular entre os usuários do pinguim. Para comprovar isso, basta passear pelos fóruns Skype e Ubuntu para ver a repercussão entre os usuários e seus gritos de alegria. Já existe até um artigo no Wiki do Ubuntu com a lista de câmeras já testadas e que funcionam com o novo Skype.

O principal motivo para a popularização do Skype é a sua fácil instalação, sua qualidade de áudio superior (quando comparada as do MSN e Yahoo) e a capacidade de funcionar em qualquer tipo de rede. Assim, o usuário não terá problema mesmo se estiver atrás de um firewall, um servidor proxy ou mesmo em uma rede tipo NAT.

A empresa criadora do Skype também criou o KaZaA, um dos software mais populares de compartilhamento de arquivos. Assim, não é surpresa saber que o Skype foi a primeira aplicação VoIP a fazer uso da tecnologia de descentralização conhecida como peer-to-peer. A própria Skype não esconde isso, mas o que isso realmente significa? Quais as implicações disso para o usuário?

O misterioso protocolo Skype

Alguém já se deu ao trabalho de ler os arquivos de licença do Skype? Vejam um pequeno trecho a seguir.

Skype Software may utilize the processor and bandwidth of the computer (or other applicable device) you are utilizing, for the limited purpose of facilitating the communication between Skype Software users. Skype Software will use its commercially reasonable efforts to protect the privacy and integrity of the computer resources (or other applicable device) you are utilizing and of your communication, however Skype cannot give any warranties in this respect.

Em poucas palavras, você dá direito ao Skype de utilizar parte dos seus ciclos de CPU e de sua banda. As pessoas esquecem que a Skype está montando uma rede peer-to-peer e que todos os usuários Skype estão dentro dela. Isto pode não parecer importante, mas suponha, por exemplo, uma empresa com uns 4.000 funcionários. Digamos que (não seria uma exagero) que 10% desses usuários utilizem o Skype regularmente. Isto dá um total de 400 computadores. Se a empresa tiver uma conexão de 100 Mbps (nada incomum para grandes empresas), isto poderá torna-la um super-nó da rede Skype. Agora, eu pergunto… Será mesmo razoável a Skype utilizar a rede de uma empresa e os recursos dos seus computadores, simplesmente, porque seus usuários não escolheram uma outra solução para VoIP? Isto já tirou o sono de vários administradores de rede [1,2].

Este cenário fica ainda mais nebuloso levando em consideração que toda a comunicação dos clientes Skype é feita de forma criptografada. Isto, somado ao fato do Skype ter um protocolo fechado, torna muito difícil entender como o Skype realmente faz o que faz. Mesmo assim, muito esforço tem sido feito para tentar compreender o protocolo Skype [3,4].

Sabe-se que apenas a autenticação é feita de forma centralizada, ou seja, existe um servidor central que armazena o login e a senha de todos os usuários do Skype. Até hoje, a parte do protocolo Skype mais desconhecida é o seu sistema de busca. Acredita-se que ele usa um sistema periódico e controlado de flood para obter informações dos usuários online.

O fato do protocolo Skype ser desconhecido, mas bastante popular, difícil de rastrear e da empresa ter a permissão do usuário para usar seus ciclos de CPU e sua banda, pode ser muito perigoso se a proprietária do software for mal-intencionada. Veja a seção a seguir.

Monopolizando secretamente a CPU

O simpósio anual da USENIX é o local perfeito para conhecer-se todos os tipos idéias relacionadas a segurança. No evento desde ano um artigo em especial, intitulado “Secretly Monopolizing the CPU Without Superuser Privileges” de Tsafrir, Etsion e Feitelson, chamou-me a atenção. Como o título sugere, descobriu-se um meio de um processo roubar ciclos da CPU indefinidamente e sem privilégios de super-usuário [5]. Para entender o problema, é necessário compreender como o sistema operacional distribui os ciclos de CPU.

A CPU é um recurso compartilhado, ou seja, existem vários processos querendo usar ciclos de CPU e apenas uma CPU para fornecer tais ciclos. Como todo recurso compartilhado, é o sistema operacional que decide quantos ciclos de CPU cada processo pode usar. Quando um processo não está usando a CPU é dito que ele está dormindo. Por outro lado, um processo acorda quando o sistema decide que é a vez dele usar a CPU. Evidentemente, isto é feito para que nenhum processo monopolize a CPU.

A contagem dos ciclos de CPU é baseada em “ticks” do relógio do sistema. A maioria dos sistemas operacionais conta os ciclos de CPU que um determinado processo utilizou contanto quantos ticks de relógio se passaram enquanto o processo está usando a CPU. Então, se um processo acordar exatamente após um tick do relógio e ele mesmo se colocar para dormir antes do próximo tick, não haverá forma do sistema operacional saber quantos ciclos de CPU o processo utilizou. Então, (em tese) ele poderá usar a CPU para sempre. De fato, o processo não poderia nem mesmo ser identificado através de utilitários como o top do Linux. Acontece que, até a publicação do artigo de Tsafrir, não se conhecia uma forma de um processo fazer com que o sistema operacional lhe desse controle da CPU exatamente após um tick do relógio e fosse dormir exatamente antes de outro. Contudo, no artigo em questão, Tsafrir e seus colaboradores dão diversas formas de fazer isso. Mais ainda, um código para sistemas UNIX é apresentado como prova de conceito da funerabilidade que está sendo chamada de “cheat attack“. Contudo, evidentemente, a técnica pode ser aplicada a qualquer sistema operacional multitarefa. (Apesar de haver indícios que o MacOS está imune ao problema.)

Agora, imaginem uma aplicação com o Skype, que a cada dia torna-se mais popular, usando o código do cheat attack. Ela poderia usar sua CPU o tanto que quisesse, com o seu consentimento (através do user agreement) e ainda seria difícil de detectar devido as características do próprio cheat attack e do fato do protocolo Skype ser criptografado.

Lembro-me que o KaZaA foi muito acusado de (secretamente) instalar um aplicativo que parecia estar usando espaço em disco e ciclos de CPU ociosos do computador do usuário [6,7]. O receio era que a empresa do Kazaa pudesse estar vendendo nossos recursos para terceiros. Esta foi uma das motivações para o surgimento do KaZaA Lite.

Eu li que as projeções financeiras da Skype é ganhar USD$ 1,56 por usuário por ano. Eu gostaria de saber quanto desse montante é devido a venda de créditos do sistema VoIP e quanto é devido ao uso (roubo) de ciclos de CPU e banda.

Pense nisso!

Referências

  1. Is Skype (mis)using your computer?
  2. Skype client may steal your bandwidth
  3. An Experimental Study of the Skype Peer-to-Peer VoIP System
  4. An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol
  5. Security paper shows how application can steal CPU cycles
  6. Parasite Programs; Adware, Spyware, and Stealth Networks
  7. Your KaZaA experience isn’t quite as free as it looks!

Changelog

2007.11.11 – Publicação do artigo

Tópicos Relacionados

10 Comentários sobre “Expondo a rede Skype”

Trackbacks / Pingbacks

Deixe um comentário

XHTML: Você pode usar essas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Os direitos autorais de todas as ilustrações pertencem aos respectivos autores e essas são reproduzidas na intenção de atender ao disposto no art. 46 da Lei 9.610. Contudo, se ainda assim alguma delas infringe direito seu, entre em contato para que eu possa removê-la imediatamente.

Icons by N.Design Studio. Designed By Ben Swift. Powered by WordPress, Search Optimization and Free WordPress Themes