Informações Principais
     Resumo
     Abstract
     Introdução
     Conclusão
     Download
  
  
  
 
Introdução
 
 
Acadêmico(a): Thiago Alexandre Gesser
Título: Sistema de Proteção para Servidores de Jogos On-Line contra Softwares Clientes não Oficiais
 
Introdução:
Atualmente há uma enorme variedade de jogos online disponíveis para pessoas do mundo inteiro. Eles podem variar muito em gênero, história e público alvo, mas uma coisa todos tem em comum: a necessidade da comunicação entre os jogadores. Esta comunicação é feita através da interface (cliente) desenvolvida pela empresa que mantém o jogo.
O jogador interage com a interface, que por sua vez troca mensagens com um servidor ou diretamente com outros clientes, dependendo da arquitetura de comunicação adotada pelo jogo. As mensagens servem para avisar sobre as ações de determinado jogador aos demais, permitindo que eles reajam com outras ações que também serão compartilhadas com todos. As mensagens não passam de pacotes que seguem um protocolo específico do jogo. Sendo assim, torna-se simples reproduzir estas mensagens através de uma aplicação própria. É assim que nasce um cliente não oficial.
Através de um cliente não oficial é possível trapacear o jogo de diversas formas. Uma delas é criando algoritmos que simulam um jogador de verdade ou até que vão além de um jogador normal. Assim quem utiliza esta aplicação pode deixar que ela jogue para si, poupando muito esforço que os demais jogadores terão. Este tipo de aplicação é conhecida como bot.
Ao longo dos anos surgiram varias soluções de prevenção aos clientes não oficiais. Algumas delas exigiam que o próprio jogador provasse que estava utilizando um cliente oficial através de, por exemplo, um Captcha . Mas este tipo de verificação além de ser um grande incômodo, é suscetível a vários tipos de ataques. Outros tipos de soluções funcionam sem o conhecimento do jogador, exigindo que o cliente prove que é oficial de maneira automática. Mas independente do tipo de verificação utilizado, um agressor pode tentar descobrir como ela é feita e criar uma maneira de burlar esta verificação. Sendo que a maneira utilizada para quebrar a segurança pode ser facilmente transcrita para um algoritmo e assim colocado em uma aplicação que varias outras pessoas poderão usar para explorar a mesma falha.
Diante do exposto, foi desenvolvido um sistema que consegue bloquear de forma efetiva o uso de clientes não oficiais em jogos online. O sistema funciona de forma automática, sem qualquer envolvimento do jogador. O bloqueio de clientes não oficiais é feito através da verificação da autenticidade do cliente. A verificação de autenticidade baseia-se na igualdade do arquivo executável que o jogador tenta utilizar como cliente com o arquivo executável do cliente oficial, armazenado no servidor. Além disso, o estado do software cliente em execução e o ambiente de execução em si também podem ser verificados. Ou seja, o cliente só pode se conectar no servidor de jogo online se ele provar que está usando um cliente idêntico ao oficial e que não há nenhuma alteração indevida no ambiente de execução. Depois de conectado, as verificações de autenticidade continuam acontecendo, fazendo com que clientes adulterados sejam desconectados do servidor. A comparação do conteúdo dos arquivos executáveis é feita utilizando um algoritmo de hashing . Com este algoritmo, é possível calcular os valores de hash dos conteúdos dos arquivos que se deseja comparar e apenas verificar a igualdade desses valores ao invés de comparar todo o conteúdo dos arquivos em si.
O sistema desenvolvido está dividido em dois componentes: o componente servidor e o componente cliente. O componente cliente deve ser consultado quando o jogador tenta abrir o cliente do jogo online para que a sua autenticidade seja avaliada. Este componente só irá obter as informações sobre o cliente e passá-las para o componente servidor, que fará a avaliação de fato. Se um cliente teve a sua autenticidade validada, poderá se conectar no servidor de jogo online. O servidor de jogo online deverá consultar o componente servidor quando um cliente tenta se conectar nele para verificar se o cliente realmente foi validado.
É imprescindível que a comunicação entre os componentes do sistema seja feita de maneira segura. Se a troca de informações feita entre estes componentes for escutada ou alterada por algum agressor, há chances de que o bloqueio proposto seja burlado. Por isso, são utilizadas maneiras de garantir a confidencialidade e a integridade dos dados durante as comunicações.