sexta-feira, 29 de janeiro de 2010

Benchmarks distribuídos para redes mesh

Daniel Caraça



Em aplicações de redes mesh [1] com muitos usuários, quando um AP [2] possui tráfego muito grande é interessante criar uma rota alternativa ou aumentar a capacidade do mesmo para o melhor aproveitamento da rede pelos usuários. Saber a quantidade de dados e sua rota em uma rede mesh possibilita ao projetista descobrir onde estão seus gargalos e eventualmente diminui-los. Para obtermos esta informação, podemos utilizar o Benchmark [3] distribuído, um método eficaz de obter a banda real, latência e outras informações de uma rede em várias condições de operação.

Na criação de Cidades Digitais [4] é interessante a utilização de redes mesh pelo menor custo de sua implantação. Se compararmos com redes Wi-Fi convencionais [5], seria possível economizar devido a não necessidade de todos os pontos terem acesso à Internet por cabo, ou seja, não é necessário levar cabos para cada AP. Mas por outro lado, como a internet cabeada não está em todos os pontos, é necessário passar por mais de um AP até chegar a internet. Isso pode criar um fluxo muito grande em um dado AP, caso este esteja em um ponto intermediário a vários caminhos para a Internet. Por isso é muito importante fazer uma análise para prever o que poderá acontecer em situações críticas.

Benckmark distribuído seria a utilização de um benchmark sendo executado em vários computadores para obter dados do funcionamento da rede, mas não apenas de um computador para outro, mas sim de vários para um ou de vários para vários, simulando assim o fluxo de dados em uma rede com muitos usuários. Como resultado deste método, obtemos, por exemplo, a taxa de tranferência de uma certa operação em uma dada máquina. Esse valor pode nos mostrar a relação entre a banda teórica e a banda real, o que nos leva ao quanto que a rede está saturada. Se compararmos os valores encontrados para vários computadores clientes, poderemos ver quais clientes estão tendo uma banda menor e assim encontrar quais pontos da rede estão com tráfego muito grande.

Os programas que fazem benchmark possuem opções para definir vários parâmetros, possibilitando criar vários cenários. Pode-se definir por quanto tempo será feita a transferência de dados, a quantidade deles que será transferida, o número de clientes, se será TCP [6] ou UDP [7], se será utilizado delays, tamanho da buffer, etc. Assim pode-se ter elementos para uma análise bastante esclarecedora sobre a situação da rede monitorada, o que possibilitará melhorá-la em muito.

Referências


[1] Redes mesh e grafos
Acessado em 28/01/2010

[2] Wireless access point
Acessado em 28/01/2010

[3] - Benchmark (computing)
Acessado em 07/01/2010

[4] - Guia das Cidades Digitais
Acessado em 15/01/2010

[5] Wi-Fi
Acessado em 28/01/2010

[6] Transmission Control Protocol
Acessado em 28/01/2010

[7] User Datagram Protocol
Acessado em 28/01/2010

sexta-feira, 22 de janeiro de 2010

Redes mesh e grafos

Hilton Garcia Fernandes



As redes sem fio do tipo mesh (a expressão em português "redes sem fio em malha" não tem sido usada no Brasil) [1] conectam entre si pontos de acesso (AP) [2] diretamente por rádio, evitando assim a necessidade de conexões cabeadas e ampliando a cobertura da rede sem fio para não apenas um AP, mas vários.

O conceito é muito amplo, mas normalmente é aplicado apenas a redes sem fio locais, as chamadas WLAN, principalmente do tipo Wi-Fi [3].

Os computadores clientes de um AP sem conexão direta à Internet podem obter essa conexão através de um outro AP que a possua, pelo processo chamado de hopping, ou pulo: o AP sem conexão com a Internet repassa os pacotes de informação para aquele que a possui. Depois, o AP conectado repassa os pacotes da resposta da Internet para aquele AP que sem conexão direta, que por sua vez, repassa ao cliente que solicitou a conexão.

As redes sem fio em malha podem ser estudadas de várias formas. Uma das mais interessantes, com certeza é a via dos grafos [4].

A teoria dos grafos é baseada em conceitos simples e poderosos. Um grafo pode ser simplesmente descrito como um conjunto de objetos que se conecta em pares. Os objetos são chamados vértices (ou nós) e as conexões entre eles são chamadas arestas.

Em termos das redes mesh, cada AP seria um nó e cada conexão entre eles seria uma aresta. Grafos que modelam redes mesh podem ser considerados não dirigidos, pois se há conexão de um primeiro AP para um segundo, com certeza há do segundo para o primeiro.

Grafos podem ser conexos, quando de um nó é possível chegar a qualquer outro, mesmo que seja necessário passar por mais de uma aresta. Grafos com o mínimo de arestas necessário para serem conexos são chamados árvores [5]. Em termos matemáticos, se n é o número de nós de uma árvore, o número de arestas dela será n - 1.

Ora, redes mesh têm como propriedade interessante a tolerância a falhas. Em outras palavras, isto significa que há vários caminhos entre um AP e outro. Por exemplo, entre um AP sem conexão com a Internet e outro conectado. Se um dos caminhos não for mais possível, haverá outra alternativa, eventualmente menos rápida, mas ainda assim capaz de permitir o acesso à Internet.

Por isso, uma rede mesh tem que ter mais do que o mínimo de conexões possível, para que haja redundância em pelo menos uma conexão. Ou seja: nestes termos, a rede mesh do grafo mencionado teria que ter pelo menos n arestas. Uma rede totalmente conectada [6] é uma rede com
n*(n - 1)/2
conexões, o que não é viável para redes maiores.

Outro ponto que favorece a qualidade de uma rede mesh é que a quantidade de conexões seja o melhor distribuída possível, sem que um único nó contenha todas conexões redundantes -- pois este nó será um ponto de falha da rede; se ele cair, cairá parte importante da rede. O número de conexões de um dado nó é chamado grau desse nó.

O programa descstat.g [7] calcula estatísticas básicas dos nós de um dado grafo -- uma das mais importantes é chamada coeficiente de variação [8], e mede a disparidade dos graus dos vértices de um grafo. Idealmente, o coeficiente de variação seria zero para uma rede onde todos nós tivessem o mesmo número de conexões.

O programa connect.g [9] avalia se um dado grafo é ou não conexo. No caso de redes mesh, identifica se todos pontos da rede se vêem ou não.

Tanto descstat.g [7] quanto connect.g [9] foram escritos usando-se o ambiente de programação gvpr, desenvolvido por Emden R. Gansner, disponível no pacote graphviz [10], um Software Livre poderoso, flexível e muito usado para visualização de grafos.

Referências



[1] Wireless mesh network

[2] Wireless access point

[3] Wi-Fi

[4] Teoria dos grafos

[5] Árvore (teoria dos grafos)

[6] Fully-connected network

[7] descstat.g

[8] Coeficiente de variação

[9] connect.g

[10] graphviz

sexta-feira, 15 de janeiro de 2010

Por que usar VPNs seguras?

Rodrigo Filipe Silva Carramate


VPN segura é uma rede virtual, que tem seu tráfego criptografado a fim de permitir a passagem deste através de redes inseguras sem que haja perda do sigilo das informações. A segurança dos dados se dá através de um processo de tunelamento criptografado, no qual se forma um túnel virtual entre cliente e servidor, onde temos os pacotes codificados em uma borda, sendo apenas descriptografados na outra borda. Com essa estrutura, mesmo que os pacotes sejam interceptados por usuários mal-intencionados, dificilmente a segurança dos dados será comprometida[1].

Dentre os usos para uma VPN segura podem ser citados três principais[2]:

  • Acesso remoto via internet: permite que um usuário acesse sua rede doméstica ou corporativa sem estar presente fisicamente na mesma, usando a Internet como intermediadora;

  • Conexão de LANs via internet: possibilita a junção de duas ou mais LANs através da internet, compondo uma WAN sem necessidade de um link dedicado;

  • Conexão de computadores numa intranet: cria dentro de uma rede corporativa uma outra rede, invisível a todos os usuários que não estiverem conectados ao servidor de VPN, permitindo a transmissão de conteúdo confidencial através da rede corporativa.



No contexto das VPNs existe um software muito interessante chamado OpenVPN[3]: trata-se de uma ferramenta multiplataforma de código aberto, muito completa, madura e robusta. O fato de possuir código aberto, além de dar ao OpenVPN portabilidade, faz com que existam versões para os principais sistemas operativos existentes, também atrai uma comunidade bastante ativa e solícita, onde sempre ocorrem discussões sobre o desenvolvimento do programa e se fornece ajuda aos que possuem dúvidas.

Após devidamente configurado, o programa cria uma interface virtual, que é responsável por estabelecer o túnel que efetua a conexão entre cliente e servidor. O OpenVPN implementa a criptografia dos pacotes através do renomado OpenSSL, o que garante a segurança do tráfego na rede virtual.

No nosso projeto de cidades digitais temos no OpenVPN a base da segurança da rede mesh[4]. Neste tipo de rede devemos tomar um cuidado muito especial devido à ausência de criptografia nativa nas redes ad hoc. Desta forma, para garantir a proteção dos dados dos usuários recorremos ao OpenVPN, que provou ser uma solução extremamente dinâmica, acompanhando eventuais modificações nas topologias de rede, sempre se adequando a necessidades específicas das diferentes localidades.

sexta-feira, 8 de janeiro de 2010

Encriptação do GSM foi quebrada ?

Hilton G. Fernandes



Um tema polêmico, que talvez agite durante este ano as listas de discussões sobre redes sem fio, é a possível quebra da encriptação do GSM [1], aberta ao público no final do ano passado, depois de apresentada em conferência técnica em abril/2009. A entidade que zela pela padronização do GSM, a GSM Association, garante que não houve quebra [2]. O pesquisador que relata a quebra garante que a GSMA está sendo omissa e dando explicações descabidas [3], que mais tentam ameaçar juridicamente os pesquisadores do que realmente responder aos problemas técnicos da quebra.

Trata-se de um problema complexo e polêmico, que não pode ser resumido em poucas palavras. Contudo, vale procurar um panorama do problema e apontar referências relevantes para entendê-lo.

O GSM usa um algoritmo de criptografia chamado A5/1 [4], inicialmente mantido em segredo, mas descoberto por engenharia reversa. Teoricamente, seria possível mapear as transformações do algoritmo em uma tabela, mas ela teria 128 petabytes, ou 128 milhões de gigabytes ! Felizmente, técnicas de compressão reduzem a tabela a apenas 2 terabytes [5], ou 2.000 gigabytes, o que é próximo do tamanho de um HD para PC de mais baixo custo oferecido atualmente.

O que os autores do texto, Chris Paget e Karsten Nohl, dizem ter conseguido foi usar estas técnicas em hardware de custo relativamente baixo (US$ 14.000) e cometer todo tipo de ataque a uma rede GSM [6]: desencriptação, Man-in-the-middle [7] etc.

Infelizmente, uma demonstração pública da quebra de uma comunicação GSM seria ilegal. Contudo, os autores se comprometeram durante a apresentação [5] a quebrar toda comunicação GSM que alguém tivesse obtido por escuta de rádio, transformada em bytes.

Os autores são reincidentes neste tipo de trabalho: já quebraram a criptografia dos telefones sem fio digitais, preparados para segurança [8]. Mas neste caso contaram com a colaboração da associação dos fabricantes desse tipo de telefone, diferentemente do GSM.

Os autores não têm pretensão à originalidade. Ao contrário, garantem que a encriptação do GSM vem sendo cotidianamente quebrada por agências do governo e criminosos. O que eles se propõem a fazer é alertar o público sobre o problema, forçando entidades de padronização, os fabricantes de celulares e as operadoras de telecomunicações a melhorar a encriptação [5].

Referências



[1] Cellphone Encryption Code Is Divulged

[2] GSMA Statement on Media Reports Relating to the Breaking of GSM Encryption

[3] Experts Break Mobile Phone Security

[4] A5/1

[5] Cracking GSM encription

[6] GSM: SRSLY?

[7] Man-in-the-middle attack

[8] Experts Break Mobile Phone Security