0

Tópicos quentes de pesquisa na área de Internet – Parte III: Cloud Computing

Daremos continuidade a série de postagens sobre os tópicos quentes de pesquisa na área de Internet, na qual já foi falada sobre CDNs e Internet das coisas. Falaremos sobre Cloud Computing ou Computação em Nuvem.

A computação em nuvem é hoje uma realidade e muitos usuários já a usam mesmo sem saber. Por exemplo, quando um usuário coloca um arquivo em um serviço do tipo Dropbox ou Google Drive, ele está fazendo uso de uma infraestrutura de computação em nuvem. Quando usa um serviço de formulários online, como SurveyMonkey ou Typeform para suas pesquisas, também está.

Apesar disso, para muitas pessoas o conceito de nuvem é um tanto quanto etéreo e abstrato. Afinal, se um usuário coloca um arquivo em um serviço em nuvem para onde isso vai? Para entender melhor é preciso voltar um pouquinho na história da computação. No início apenas grandes empresas tinham a possibilidade de possuir os mainframes, que nada mais são que computadores de grande porte com a capacidade de oferecer serviços de processamento a milhares de usuários conectados através de milhares de terminais. Nessa época, os terminais em si não tinham praticamente nenhum poder de processamento, sendo que os mainframes centralizavam todas as operações.

Com o advento dos PCs muitas das tarefas que antes eram executadas em um mainframe passaram a ser possíveis de ser realizadas localmente e assim o poder de processamento se tornou um pouco mais distribuído. Nesse contexto, o modelo cliente-servidor, que ainda hoje é o mais utilizado, tornou-se predominante. O servidor roda um ou mais serviços ou programas que compartilham recursos com os clientes. Já um cliente (que normalmente é uma máquina de usuário) inicia uma comunicação através de uma rede de computadores, solicitando conteúdo ou serviços de um servidor. Há vários exemplos de aplicações que seguem esse paradigma como o e-mail, a Web e as impressoras em rede. Inicialmente nesse modelo o servidor possuía um endereço lógico conhecido, além de se conhecer sua localização física (muitas vezes, no data center da própria empresa).

Pode-se pensar na computação em nuvem como uma evolução desse modelo no sentido de que o servidor não tem necessariamente uma localização conhecida. Além disso, os serviços prestados pelo servidor são geralmente terceirizados e executados de forma distribuída. Um usuário não é capaz de saber se apenas um servidor é responsável por toda a execução de um processamento ou se há vários envolvidos. Há a possibilidade de coordenação entre vários servidores em diferentes localidades para a “entrega” do serviço solicitado pelo cliente. Por isso, a ideia de nuvem aparece.

A computação em nuvem se baseia na virtualização de servidores, que nada mais é do que emular um servidor de forma virtual, configurando em um software de virtualização quanto de memória RAM, espaço de armazenamento, processador e sistema operacional aquela máquina vai ter. O interessante é que numa máquina real é possível ter quantas máquinas virtuais forem desejadas, com diferentes configurações que atendam o que for necessário. Basicamente esses servidores virtuais compartilham o mesmo hardware e podem rodar simultaneamente de forma otimizada. Para ajudar na compreensão analisemos um exemplo: imagine um servidor real com um processador Intel i7, 10GB de memória RAM e 1TB de espaço de armazenamento (HD). Nele foi instalado um software de virtualização e com isso foram configuradas 2 máquinas virtuais, sendo que uma roda Windows e tem disponível 8GB de RAM e 500MB de HD, enquanto a outra roda um Linux e tem disponível 4GB de RAM e 800MB de HD. Somando as capacidades das máquinas virtuais notamos que o valor é maior do que o existente na máquina real. Mas isso não é um problema porque os valores configurados são os máximos a serem atingidos no caso da outra máquina virtual estar ociosa ou superdimensionada. Quando uma máquina virtual não for mais necessária, ela pode ser simplesmente apagada da memória da máquina real.

Há várias vantagens em se usar a computação em nuvem, sendo que dentre as principais estão a alta disponibilidade dos serviços, a alta capacidade de processamento, os custos reduzidos em comparação a uma solução interna e a grande flexibilidade para ampliar ou diminuir a capacidade de processamento ou de armazenamento (o que se conhece como elasticidade). Por outro lado, há desvantagens que devem ser consideradas na hora de se adotar a nuvem como a redução de desempenho, o esforço de portabilidade de aplicações já existentes internamente para a nuvem, o atendimento a regulamentação de países específicos e os riscos de segurança, especialmente em relação ao vazamento de informações e violação à privacidade.

Hoje existem 3 categorias de serviços de computação em nuvem. O mais conhecido é o SaaS (Software as a Service) em que o provedor de serviços fornece um programa que fica em um servidor remoto e as aplicações são acessíveis por meio de dispositivos do cliente, com uso de interfaces simples, como a Web. O usuário não gerencia ou controla nenhum item da infraestrutura que hospeda o software, sendo somente possível ajustar configurações específicas a nível de usuário. Exemplos desse tipo de serviço são o Google Drive, Dropbox, SurveyMonkey e Typeform.

Ainda existem as categorias conhecidas como PaaS (Platform as a Service) e IaaS (Infrastructure as a Service) que no geral são mais voltadas para equipes de desenvolvimento de software. Uma das empresas mais conhecida que fornece esses tipos de serviço é a Amazon Web Services (AWS).

Apesar da computação em nuvem já ser uma realidade e estar sendo comercializada, ainda há muitos desafios a serem superados, os quais são tópicos relevantes de pesquisa na área da Internet e de redes de computadores. Um dos mais relevante concerne às questões de segurança, em como minimizar o vazamento de informações. Isso porque há a possibilidade de explorar vulnerabilidades em relação ao incorreto isolamento entre os servidores virtuais.

No próximo post continuaremos falando sobre tópicos quentes de pesquisa na área de Internet. Até lá!

Anúncios
1

O blockchain veio para ficar?

(Imagem: allanlau2000)

A tecnologia blockchain tem sido comentada em diversas notícias na imprensa e na maior parte das vezes atrelada ao uso de moedas digitais como o bitcoin. Porém, ela tem potencial para muitos outros usos, podendo auxiliar no desenvolvimento de estruturas sociais e econômicas mais transparentes e distribuídas. Mas afinal, o que é esse tal de blockchain?

O blockchain é um tipo de banco de dados descentralizado que guarda um registro de transações de modo permanente e à prova de violação. Ele possui a função de criar um índice global para todas as transações que ocorrem em uma determinada área. Pode-se pensar no funcionamento similar ao dos livros de registro de um cartório, só que de forma pública, compartilhada e universal, que cria confiança na comunicação direta entre duas partes, ou seja, sem o intermédio de terceiros.

Há dois tipos de registros no blockchain: transações individuais e blocos. Um bloco é a parte atual do blockchain na qual são registradaas algumas ou todas as transações mais recentes e, uma vez concluído, é guardado de modo linear e cronológico no blockchain como um banco de dados permanente. Assim que um bloco é concluído um novo é gerado, existindo um número infinito de blocos, que são linkados uns aos outros através de uma referência para o bloco anterior.

Além de ser um banco de dados descentralizado, o blockchain também é uma rede peer-to-peer (P2P). Essa rede consiste em uma série de computadores e servidores que atuam como nós na rede. Quando uma nova transação ocorre na rede, a informação dela é propagada entre todos os nós da rede P2P, normalmente criptografada, não havendo como rastrear quem adicionou a informação na rede e sendo possível apenas verificar sua validade. Cada nó obtém uma cópia do blockchain após o ingresso na rede.

O blockchain tem sido aplicado a situações em que é necessário manter a informação de propriedade e o histórico das interações. Já existem diferentes usos sendo explorados em pesquisas científicas e até algumas soluções já chegaram ao mercado.

O uso mais difundido é o de moedas digitais ou criptomoedas. O bitcoin é considerada a primeira moeda digital descentralizada e permite executar transações financeiras sem intermediários, sendo que estas transações são verificadas por nós da rede P2P e gravadas em um banco de dados distribuídos, usando a tecnologia blockchain. A transferência de bitcoins se dá através do seguinte processo:

  1. O usuário que fará o pagamento precisa saber o endereço destinatário que pode ser informado através de texto, ou através de um código de barras do tipo QR code, que será escaneado pelo dispositivo do usuário pagador;
  2. O programa de carteira do usuário pagador criará a transação, sendo que o usuário precisa apenas informar a quantia de bitcoins que enviará e qual o endereço de destino;
  3. Para transmitir a transação à rede bitcoin, o usuário precisa apenas conectar-se à Internet. Não é possível cancelar ou reverter uma transação após ela ter sido enviada pela rede. Para ter os bitcoins associados ao seu próprio endereço, o destinatário não precisa estar online no momento da transação e não precisa confirmá-la.

Uma carteira bitcoin armazena as informações que são necessárias para se fazer transações com bitcoin, utilizando criptografia de chave pública. A chave privada é responsável pelo acesso aos fundos da carteira, enquanto que a chave pública pode ser espalhada para receber fundos.

Vários países já estão atentos a esse movimento das moedas digitais e estudam a possibilidade de adotá-las, como é o caso da Estônia que pretende ser o primeiro país a criar uma moeda digital estatal, o EstCoin. Nesse mesmo sentido, a empresa R3 lidera um consórcio de mais de 80 instituições financeiras no mundo para a pesquisa e o desenvolvimento usando blockchain para esse mercado. Um dos estudos vai no sentido de facilitar o processo de transferência internacional de valores entre diferentes instituições financeiras, o que hoje é um processo bastante burocrático e demorado.

Porém, há muitos outros exemplos interessantes de aplicações usando blockchain. O MIT desenvolveu uma prova de conceito em que o blockchain é usado para disponibilização de certificados de conclusão de curso, possibilitando a verificação da autenticidade dos mesmos sem a necessidade de cartório. Uma startup inglesa desenvolveu uma solução em que se rastreia a origem, a qualidade e outras várias características dos diamantes encontrados no mercado com o uso de blockchain. Na mesma linha de rastreamento de objetos, a empresa londrina Deloitte, especializada em prestação de serviços financeiros e assessoria de riscos, desenvolveu uma prova de conceito em que o blockchain é usado para o rastreamento de obras de arte e empréstimo entre museus, sendo possível verificar a autenticidade de determinada obra. Na área de benefícios sociais, o blockchain já vem sendo empregado pelo governo da Finlândia na concessão de ajuda financeira para refugiados.

Apesar de já existir alguns usos comerciais do blockchain, ele ainda é um tema quente de pesquisa, pois há várias questões a serem respondidas: será que ele veio para ficar? em quais casos é vantajoso usá-lo em detrimento a soluções já bem estabelecidas? ele irá acabar com a estrutura financeira atual do mundo? e com os cartórios? será que ele irá auxiliar no desenvolvimento de estruturas sociais e econômicas mais transparentes e distribuídas? Essas e tantas outras são perguntas que só o tempo e muita pesquisa poderão responder.

3

Desmistificando a criptografia

Desde as revelações do Snowden sobre o programa de espionagem do governo americano, a criptografia tem sido tema de debate em diversos espaços e não mais apenas dentro do círculo de especialistas em segurança da informação. Em muitos desses debates, a criptografia é tratada como a única solução possível tanto para a garantia da privacidade no uso da Internet quanto para se proteger da espionagem. Porém, ainda há muitas dúvidas sobre o que ela seria e o quais são as suas limitações.

A palavra criptografia vem de palavras gregas que significam “escrita secreta”. O primeiro esquema de criptografia data de antes de Cristo e é conhecida como a cifra de César. Nessa cifra, cada letra era substituída por outra que estivesse algumas posições a frente. Por exemplo, todas as letras “As” do texto eram substituídas por “Ds”, todos os “Bs” por “Es”, e assim por diante. É um algoritmo bastante simples e descobrindo-se a regra é facilmente desvendada a mensagem.

Pode-se dizer que a criptografia é o estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário (detentor da “chave secreta”), o que a torna difícil de ser lida por agentes não autorizados. Assim sendo, só o receptor da mensagem pode ler a informação com facilidade.

De acordo com Tanembaum e Wetherall (2011), as mensagens a serem criptografadas, denominadas como texto simples, são transformadas por meio de uma função parametrizada por uma chave. Em seguida, a saída do processo de criptografia, conhecida como texto cifrado, é transmitida. Stallings (2015) diz que o processo de converter um texto claro em um texto cifrado é conhecido como cifração ou encriptação, enquanto a restauração do texto claro a partir do texto cifrado é chamada de decifração ou decriptação.

Atualmente, existem diversas técnicas e algoritmos para cifração. Uma das formas de classificar sistemas criptográficos se refere ao número de chaves utilizadas no processo. Se tanto o emissor quanto o receptor utilizarem a mesma chave, o sistema é classificado como encriptação simétrica; já se o emissor e o receptor usarem chaves diferentes, o sistema é classificado como encriptação assimétrica ou de chave pública (STALLINGS, 2015).

Stallings (2015) afirma que não existe algoritmo de encriptação que seja incondicionalmente seguro. O que se pode obter é um esquema de encriptação considerado computacionalmente seguro, em que o algoritmo atende a pelo menos um dos critérios: (1) o custo para quebrar uma cifra ultrapassa o valor da informação encriptada e (2) o tempo exigido para quebrar a cifra supera o tempo útil da informação. Ou seja, em princípio se você tiver tempo e poder computacional infinitos é possível quebrar qualquer algoritmo criptográfico e descobrir a informação.

Uma das formas mais conhecidas para se descobrir uma informação cifrada de forma não autorizada, como por exemplo senhas de usuários, é o ataque por força bruta. Esse ataque consiste em utilizar o processamento computacional para descobrir a informação por meio de tentativas e erros. O tempo necessário para a descoberta pode variar de acordo com a quantidade possível de tentativas por segundo (capacidade computacional) e a probabilidade de acerto (número de combinações diferentes possíveis) (CERT.BR, s.d.).

Apesar do que se possa pensar inicialmente, Tanembaum e Wetherall (2011) enfatizam a importância do caráter não sigiloso do algoritmo de encriptação a ser utilizado. A estratégia, conhecida como “segurança pela obscuridade”, em que se tenta manter o algoritmo secreto, não é aconselhada. Ao tornar o algoritmo público, inúmeros criptólogos podem tentar decodificar o sistema e caso muitos tenham tentado isso durante cinco anos após a sua publicação e nenhum tenha conseguido, há uma grande probabilidade de que o algoritmo seja sólido (TANEMBAUM E WETHERALL, 2011). Na verdade, o sigilo deve estar na chave, e seu tamanho é uma questão muito importante no projeto de um algoritmo de encriptação. De forma geral, quanto maior for o tamanho da chave, mais segura estará a informação cifrada.

Outra vantagem do algoritmo criptográfico ser aberto é a de que se pode verificar que não há a existência de backdoors. Uma backdoor é um método, muitas vezes secreto, de transpor a autenticação normal para um produto, sistema de computador, criptosistema ou algoritmo etc. Backdoors são freqüentemente usadas para assegurar acesso remoto não autorizado a um computador ou obter acesso a textos em sistemas criptográficos. Um cenário em que pode ser útil é na espionagem de pessoas e/ou instituições. Porém, a sua utilização fragiliza o mecanismo de segurança da informação e é desencorajada, pois pode ser explorada por atacantes para diversos fins, como roubo e alteração de dados, etc.

Com o advento de aplicativos de comunicação via celular, o uso de algoritmos criptográficos migrou para essa plataforma a fim de garantir uma comunicação sigilosa ponta a ponta. Nesse cenário, há um grande desafio que é a distribuição segura das chaves através da Internet. Segundo Stallings (2015), a força de qualquer sistema criptográfico está na técnica de distribuição de chave, um termo que se refere aos meios de entregar uma chave a duas partes que querem trocar dados, sem permitir que outros vejam a chave. Isso porque para que a encriptação simétrica funcione, as duas partes precisam compartilhar a mesma chave, que precisa ser protegida contra o acesso por outras partes sem permissão.

A distribuição de chave pode ser feita de várias maneiras, sendo que o uso de um centro de distribuição de chaves (CDC) tem sido bastante adotado (STALLINGS, 2015). Ele é responsável por distribuir chaves a pares de usuários conforme a necessidade. Cada usuário precisa compartilhar uma chave exclusiva com o CDC, para fins de distribuição delas. De acordo com Stallings (2015), a utilização de um CDC é baseada no uso de uma hierarquia de chaves com, no mínimo, dois níveis. A comunicação entre as pontas é encriptada usando uma chave temporária, normalmente referenciada como uma “chave de sessão”, que normalmente é usada pela duração de uma conexão lógica e depois descartada. Cada chave de sessão é obtida a partir do CDC e transmitida em formato encriptado, usando uma chave mestra exclusiva, que é compartilhada pelo centro e o usuário final (STALLINGS, 2015). Pode-se adicionar mais um nível na hierarquia de chaves, em que a encriptação de chave pública é usada apenas para atualizar a chave mestra entre um usuário e o CDC. O acréscimo dessa camada oferece um meio seguro e eficiente de distribuir chaves mestras. Esse esquema de CDC é usado, por exemplo, em aplicativos como o WhatsApp.

Apesar da criptografia ser uma área de estudo consolidada, ela é bastante dinâmica. A todo momento são lançados novos algoritmos criptográficos para serem testados por criptólogos a fim de descobrirem falhas, enquanto algoritmos já consolidados se tornam obsoletos devido ao aumento do poder de processamento dos computadores. Os estudos mais atuais dentro dessa área são os de criptografia pós-quântica que se refere a algoritmos criptográficos considerados seguros contra um ataque de um computador quântico.

Os algoritmos de chave pública mais populares atualmente podem ser quebrados de modo eficiente por um computador quântico grande o suficiente. A segurança dos algoritmos atuais se baseia em um dos três problemas matemáticos difíceis de serem solucionados pelos computadores eletrônicos: o problema de fatoração de inteiros, o problema de logaritmo discreto ou o problema de logaritmo discreto de curva elíptica. Porém, todos eles podem ser facilmente resolvidos em um computador quântico potente o suficiente executando o algoritmo de Shor, que é um algoritmo para fatoração de números inteiros (informalmente ele resolve o seguinte problema: dado um número inteiro N, encontre os fatores primos dele). Ainda que os computadores quânticos atuais conhecidos sejam muito pequenos para atacar qualquer algoritmo criptográfico real, muitos criptólogos estão projetando novos algoritmos para se preparar para quando a computação quântica se torne uma realidade e uma ameaça.

Bibliografia

CERT.BR. Cartilha de Segurança para a Internet. Disponível em: < http://cartilha.cert.br/ataques/ >. Acessado em 26 mar. 2017.

STALLINGS, W. Criptografia e Segurança de Redes: Princípios e Práticas – 6ª edição. São Paulo: Pearson. 2015. ISBN 978-8543005898.

TANENBAUM, A. S.; WETHERALL, D.  Redes de Computadores – 5ª Edição. São Paulo: Pearson. 2011. ISBN  857605924X.

WIKIPEDIA. Criptografia. Disponível em: < https://pt.wikipedia.org/wiki/Criptografia >. Acesso em: 26 mar. 2017.

WIKIPEDIA. Post-quantum cryptography. Disponível em: < https://en.wikipedia.org/wiki/Post-quantum_cryptography &gt;. Acesso em: 26 mar. 2017.

0

Reflexões acerca da adoção de franquias de dados na Internet fixa

Um assunto que está em debate atualmente e que tem gerado muita polêmica é a limitação por franquia de dados na Internet fixa. Tudo começou ano passado, quando uma grande empresa anunciou que adotaria esse modelo até o final de 2016. Esse anúncio provocou uma reação muito negativa entre os internautas. Em seguida, o presidente da Anatel fez algumas declarações polêmicas dizendo que a era da Internet Ilimitada chegou ao fim, que quem joga online gasta um volume de banda da Internet e ainda que a propaganda do ilimitado e do infinito acabou desacostumando o usuário.

Um dos principais argumentos utilizados pelas empresas para a instituição da franquia de dados na Internet é o de que as pessoas já estão acostumadas ao pagamento baseado no consumo como água, luz e gás, e que esse modelo seria justo, pois quem consome mais dados pagaria mais. Outro argumento bastante falado é de que a rede encontra-se congestionada hoje em dia e que não é possível mantê-la sem o uso de franquia.

De fato, a Internet nunca foi ilimitada: sempre houve a limitação por velocidade. Se fizermos a conta da quantidade de dados por segundo que é possível de ser baixada na velocidade contratada, é possível chegar ao valor máximo de dados por mês. O engenheiro Rubens Kuhl fez esse cálculo para alguns planos existentes de uma empresa. Por exemplo, para um plano com velocidade de 15Mbps, é possível baixar até 4147 GB, enquanto que um plano de 4Mbps esse valor é de apenas 1192 GB.

Quando se fala em pagamento por consumo, normalmente compara-se a Internet com a água, o que não é uma boa comparação. A ideia de que a franquia de dados insere um medidor é falsa, tendo em vista que esse medidor já existe (a velocidade). Além disso, a água é um recurso natural esgotável, enquanto dados podem ser gerados. Uma outra questão complicada nessa comparação é a medição do “consumo”. É relativamente simples medir o consumo de água, enquanto fazer isso no tráfego de dados não o é. Existem diversos fatores complicantes, como em que ponto da rede colocar o medidor, já que essa escolha pode influenciar na medida. Outra questão também é o que entra nessa “conta”. Para o recebimento de um fluxo de dados são necessários diversos pacotes para estabelecer conexão na comunicação; também pode haver necessidade de retransmissão de pacotes devido a congestionamento na rede. Tudo isso pode ser visto como dados de certa forma “inúteis” para os usuários finais e pagar por eles pode ser difícil de justificar.

Já sobre o congestionamento da rede, há diversas técnicas e tecnologias que podem ser utilizadas para lidar com esse problema. Hoje, com o uso cada vez mais comum da fibra óptica para ligar os provedores de acesso a Internet e os clientes, é possível chegar a grandes velocidades e a tráfegos maiores de dados. No protocolo TCP, há dois mecanismos utilizados para lidar com o congestionamento da rede, conhecidos como congestion avoidance e slow start. Porém, o projeto atual deles tem o efeito indesejável de não ser possível usar todo o potencial proporcionado pela fibra óptica em termos de tráfego. Inclusive hoje há estudos na área de redes de computadores sobre como melhorar esses mecanismos. Tendo isso em vista, é complicado afirmar que a rede esteja chegando a um patamar de congestionamento tal que justifique o uso de franquias.

Além da fibra, muitas redes têm adotado o uso de CDNs. Com o seu uso, os conteúdos mais utilizados tendem a estar mais próximos ao usuário, sendo desnecessário o tráfego destes dados por toda a rede sempre que solicitados. Isso ajuda no controle do congestionamento da rede. Também existem os Pontos de Troca de Tráfego ou IXPs (Internet Exchange Points), que nada mais são do que pontos concentradores em que diversas redes podem se interligar diretamente e trocar dados entre elas. Por exemplo, em São Paulo há um ponto em que as redes de várias empresas grandes (como Google, Facebook, Netflix, UOL, etc) se conectam, evitando que diversos conteúdos tenham trafegar por um longo caminho até chegar aos usuários.  Uma das principais vantagens do uso dos IXPs, é a racionalização dos custos, uma vez que os balanços de tráfego são resolvidos direta e localmente e não através de redes de terceiros, muitas vezes fisicamente distantes. Sendo assim, também ajudam nesse problema de congestionamento.

O modelo de franquia de dados na Internet fixa traz dificuldade para os usuários contabilizarem o uso de dados em sua rede. Diversos softwares, como o antivírus, e o sistema operacional, fazem atualizações automaticamente, sendo muitas dessas necessárias para a segurança dos usuários. Em um cenário com franquia de dados implementada, eles podem gastar uma grande quantidade delas nessas atualizações e, por isso, ficarem tentados a desativar esses recursos para gerar economia. Isso deixaria os dispositivos mais vulneráveis a ataques e vírus. Falando nesse assunto, também é possível que dispositivos infectados por vírus consumam dados sem que os usuários saibam, além de gerar ataques a outras redes.

Com o uso crescente de aplicações na nuvem, é comum os usuários fazerem download e upload de arquivos com uma maior frequência. Também com o advento da Internet das coisas, através da qual a conexão de diversos dispositivos na rede mundial tornou-se realidade, há maior necessidade de tráfego de dados. Todo esse cenário acaba tornando a franquia de dados um grande inconveniente na Internet fixa.

Segundo o relatório “Measuring the Information Society Report” da UIT, dos 190 países monitorados, 130 deles oferecem prioritariamente planos de banda larga fixa com Internet ilimitada. Na tabela abaixo há um comparativo entre diversos países no quesito velocidade e franquia de dados por mês.

tabelafranquia

Vale notar que os países que adotam franquia de dados possuem limites bem mais generosos do que os propostos a serem adotadas no Brasil. Rubens Kuhl calculou que em um plano de 4 Mbps e com uma franquia 50 GB, haveria uma redução no consumo de dados da ordem de 95,8% (sem a franquia o usuário poderia atingir até 1192 GB).

Por isso, o debate acerca dessa questão tem sido tão acirrado no país. Além disso, as justificativas técnicas para a sua implantação são controversas, não obtendo consenso nem mesmo dentro da comunidade técnica.

Na semana passada, o Ministro Kassab do MCTIC, fez uma declaração que a Internet fixa deve continuar sem limitação por franquia de dados. Se isso encerra esse debate ainda não se sabe, mas com certeza dá uma apaziguada nos ânimos dessa grande polêmica.

0

As computadoras

programmers

A história da computação possui muitos personagens que contribuíram para o seu desenvolvimento.Na sua grande maioria, os personagens conhecidos dessa história são homens, dentre os quais podemos citar Babbage, Boole, Turing, Von Neumann dentre outros. E aonde ficam as mulheres nessa história toda? Será que não houve nenhuma contribuição feita por uma mulher? Não digo daquelas mulheres que são tidas como “a primeira mulher engenheira de computação do mundo”, ou seja, a primeira mulher a fazer uma atividade que antes era dominada apenas por homens. Digo uma mulher que tenha sido o primeiro indivíduo, seja homem ou mulher, que contribuiu originalmente com alguma coisa para a computação.

Já nos primórdios da computação moderna houve a primeira contribuição de uma mulher. Seu nome é Ada Byron, filha do conhecido poeta inglês Lord Byron. Também é conhecida como Ada Lovelace, por ter se casado aos 20 anos com o conde de Lovelace. Sua grande contribuição para a história da computação é ter sido a primeira pessoa a descrever completamente o processo que hoje é conhecido como programação de computador [1] [2].

Na época de Ada, também viveu um outro grande contribuinte no desenvolvimento da computação, o cientista Charles Babbage, que é tido como o pai dos computadores modernos. Ada conheceu o trabalho de Babbage e, traduzindo uma de suas teorias, acrescentou notas nas quais descrevia como alimentar a máquina analítica de Babbage com cartões perfurados, sendo tidos como os primeiros programas de computadores. Ada também previu a possibilidade da música computadorizada, afirmando que a música é matemática e, portanto, poderia ser adaptada para ser composta por uma máquina [1].

A máquina descrita por Babbage foi reconhecida como um primeiro modelo de computador e as notas de Ada como a descrição de um software, ainda que não tenha sido possível construir a máquina naquela época por restrições da tecnologia [2].

Mas as contribuições das mulheres na computação não pararam por ai. Na década 40, foi desenvolvido pelo exército um projeto ultrassecreto, o ENIAC. Depois da segunda guerra, foi divulgada a existência dessa máquina que é tida como o primeiro computador digital eletrônico de grande escala. O ENIAC foi criado pelos cientistas norte-americanos John Eckert e John Mauchly. Porém, uma parte dessa história foi obscura durante muitos anos: quem haveria programado esse máquina para computar trajetórias balísticas? Na década de 80, a pesquisadora Kathy Kleiman decide ir atrás de algumas pistas nesse sentido e descobre que o ENIAC havia sido programado por seis matemáticas mulheres. Seus nomes eram: Betty Jean Jennings, Ruth Lichterman, Kathleen McNulty, Betty Snyder, Marlyn Wescoff e Fran Bilas [3].

Elas foram escolhidas entre um grupo de 100 mulheres que trabalhavam na Universidade da Pensilvânia calculando manualmente as equações diferenciais necessárias para as trajetórias balísticas durante a guerra [3]. O exército chamava a função destas mulheres de “computers” ou computadoras (em uma tradução livre, já que esse termo não existe com a flexão feminina na língua portuguesa).

O ENIAC era programado através da conexão de fios, relês e sequências de chaves para que se determinasse a tarefa a ser executada. Havia milhares de chaves, podendo cada uma delas assumir o valor 1 ou 0 conforme estivessem ligadas ou desligadas. [4] A cada tarefa diferente o processo deveria ser refeito. A resposta dos cálculos era dada por uma sequência de lâmpadas.

Essas mulheres não tinham permissão de ver o ENIAC por ele ser um projeto secreto, mas mesmo assim elas o programaram. E para fazer isso, tiverem que estudar os diagramas esquemáticos da máquina e entender como ela poderia ser programada, isso em uma época que não existiam livros que se ensinasse a programar. Ao fazer isso elas fundaram as bases para os programadores e engenheiros de software do futuro [3].

Mas elas não pararam por ai. Após esse projeto, Jean liderou a equipe que transformou o ENIAC em um dos primeiros computadores eletrônicos com memória de armazenamento do mundo. Já Betty continuou trabalhando na computação ao longo de toda a sua vida profissional, sendo uma pioneira na área ao desenvolver o primeiro conjunto de instruções de máquina, a primeira rotina de ordenação e a primeira aplicação de software [3].

Apesar do papel pioneiro dessas mulheres como primeiras programadoras da computação moderna, elas foram reconhecidas tardiamente pelo que fizeram, sendo que a maioria tinha cerca de 70 anos. Elas receberam prêmios da IEEE Computer Society, do Museu da História da Computação, da associação Women in Technology International e outras organizações [3].

As programadoras do ENIAC foram seguidas por várias mulheres pioneiras na área da ciência da computação, mas essa é uma das áreas em que a representatividade das mulheres ainda é muito baixa. Segundo Moreiras et al (2014), apenas 20,1% dos alunos do curso de Ciência da Computação no Brasil são mulheres. Que essas mulheres da história possam servir de inspiração para as novas gerações, mostrando que lugar de mulher é onde ela quiser, inclusive programando!

Bibliografia

[1] Rolka, G. M. 100 Mulheres que Mudaram a História do Mundo. Editora Nova Fronteira, 2004.

[3] http://eniacprogrammers.org/

[4] https://pt.wikipedia.org/wiki/ENIAC

[5] Moreiras, J. A. et al. Um Panorama da Presença Feminina na Ciência da Computação. 18º REDOR, 2014. Disponível em: < http://www.ufpb.br/evento/lti/ocs/index.php/18redor/18redor/paper/viewFile/1935/853 >.

2

Tópicos quentes de pesquisa na área de Internet – Parte II: Internet das Coisas

Na texto anterior foi iniciada uma série de postagens sobre os tópicos quentes de pesquisa na área de Internet, falando sobre uma visão sobre CDNs. Nesse texto, será abordado outro tópico que está em alta no momento: Internet das coisas.

Apesar do seu nome, não se trata de uma outra Internet no senso estrito da definição. Segundo Whitmore [1], mesmo não havendo uma definição universal para Internet das coisas, o conceito básico é o de que objetos do cotidiano podem ser equipados com funcionalidades de identificação, sensoriamento, roteamento e processamento que permitam a comunicação entre eles e com outros dispositivos e serviços através da Internet para atingir algum objetivo útil. Um exemplo engraçado e até mesmo assustador é explorado por Demi Getschko em sua coluna, onde a geladeira, sabendo a data de aniversário de seu dono, encomenda a comida para uma festa surpresa e convida seus amigos.

As ideias em que se baseiam a Internet das coisas não são novas. Por muitos anos, tecnologias como RFID e rede de sensores têm sido usadas no contexto industrial para rastreamento de itens. A Internet das coisas representa uma evolução no uso dessas tecnologias em termos de quantidade e variabilidade de dispositivos, assim como da comunicação entre eles através da Internet [1].

O universo da Internet das coisas é bastante heterogêneo devido ao uso de vários dispositivos, com diferentes capacidades. Por exemplo, uma das aplicações possíveis da Internet das coisas seria o monitoramento de certas propriedades do meio ambiente para averiguar se estão adequadas para a plantação de uma espécie específica em uma determinada região. Através desse monitoramento, seria possível tomar as atitudes cabíveis a fim de tornar a área mais propícia para a plantação. Além disso, o próprio dispositivo poderia ser capaz de tomar tais providências. Nesse exemplo específico, são necessários diferentes sensores, como de luminosidade, de umidade, de temperatura, etc, para monitorar o ambiente. E então, dependendo da umidade do solo e da temperatura, os sensores poderiam acionar um outro dispositivo que garantisse a irrigação dessa plantação. Todos esses aparelhos devem ser capazes de se comunicar através da rede para enviar e receber as informações pertinentes.

De uma forma resumida, Salman [2] coloca que a Internet das coisas ainda tem vários desafios a enfrentar para que possa se popularizar, como mobilidade, confiabilidade, escalabilidade, gerenciamento, disponibilidade, interoperabilidade, segurança e privacidade.

Quanto à mobilidade, os dispositivos da Internet das coisas precisam se mover livremente e mudar de rede e o seu endereço IP baseadas em sua localização. Assim, o protocolo de roteamento tem que lidar com muita sobrecarga para refazer as rotas cada vez que um dispositivo se conecta ou se desconecta de uma rede. Além disso, a mobilidade pode resultar em uma mudança de prestador de serviços, o que pode adicionar outra camada de complexidade devido à interrupção do serviço e mudança de rede [2].

A confiabilidade significa que um sistema deve estar trabalhando perfeitamente e entregando tudo o que foi especificado para que ele faça de forma correta [2]. É um requisito crítico em aplicações que requerem respostas de emergência, como por exemplo, sistemas de healthcare nos quais há alguma vida assistida. Normalmente, são colocados sensores nos equipamentos de monitoramento utilizados pelos pacientes. A informação recolhida por estes sensores é disponibilizada através da Internet para médicos e membros da família, a fim de melhorar o tratamento e a capacidade de resposta a incidentes [1]. Em casos como o exemplificado, o sistema deve ser altamente confiável e rápido na coleta de dados, comunicando e tomando decisões, visto que eventuais erros podem levar a cenários desastrosos, como a morte de uma pessoa.

A escalabilidade é outro desafio de aplicações de Internet das coisas. Uma vez que há milhões de dispositivos conectados em uma mesma rede, gerenciar sua distribuição não é uma tarefa fácil. Além disso, as aplicações de Internet das coisas devem ser tolerantes a novos serviços e à adesão constante de outros dispositivos na rede e, portanto, devem ser projetadas para permitir a extensão de serviços e de operações [2].

Mais um desafio na Internet das coisas é o gerenciamento desse grande número de dispositivos interconectados, mantendo o controle das falhas, das configurações, da contabilidade, do desempenho e da segurança, conhecido como FCAPS na área de redes [2]. As soluções convencionais de gerenciamento como o Simple Network Management Protocol (SNMP) podem não ser suficientes para dar conta de toda essa complexidade e também podem ser “pesadas” demais para alguns dispositivos.

A questão de disponibilidade em Internet das coisas envolve questões de software e hardware. A disponibilidade de software significa que o serviço é prestado para quem está autorizado a recebê-lo, enquanto a disponibilidade de hardware significa que os dispositivos existentes são de fácil acesso e são compatíveis com a funcionalidade e protocolos da Internet das coisas. Além disso, esses protocolos devem ser compactos para serem capazes de ser inseridos em dispositivos restritivos em termos de memória e uso de energia [2].

A interoperabilidade, por sua vez, é a ideia de que os dispositivos e protocolos heterogêneos precisam ser capazes de trabalhar uns com os outros. Este é um desafio devido ao grande número de diferentes plataformas utilizadas no universo da Internet das coisas. A interoperabilidade deve ser tratada tanto pelos desenvolvedores de aplicativos quanto pelos fabricantes de dispositivos, a fim de que os serviços funcionem, independentemente da especificação da plataforma ou do hardware utilizado pelo cliente [2].

Na referência [2] é apresentado o cenário de protocolos usados no universo da Internet das coisas, conforme pode ser observado na tabela abaixo.

protocolosiot

Dentre eles, há ainda um uso grande de protocolos proprietários. O seu uso dificulta a interoperabilidade entre os diversos dispositivos, ou seja, torna-se mais difícil a comunicação entre eles. Além disso, os protocolos usualmente utilizados em computadores e servidores nem sempre são adequados às necessidades dos dispositivos da Internet das coisas. Comumente há restrições em relação à memória e ao consumo de energia neles. O cenário é bastante complexo e têm suscitado muitas pesquisas sobre o tema.

Na parte de protocolos de rede, há um grupo do Internet Engineering Task Force (IETF) chamado 6Lo trabalhando na padronização de alternativas mais enxutas do IPv6 para o uso com as diferentes tecnologias do universo da Internet das coisas. A padronização do 6LowPan, que é um protocolo usado para redes com o padrão IEEE 802.15.4, é um resultado desse grupo. O IEEE 802.15.4, por sua vez, é um padrão que especifica a camada física e efetua o controle de acesso para redes sem fio pessoais de baixas taxas de transmissão.

A criptografia é vista como uma questão chave para garantir a segurança da informação no universo da Internet das coisas [1]. Porém, muitos dispositivos dentro desse cenário não são poderosos o suficiente para aguentar criptografia robusta. Para permitir criptografia no universo da Internet das coisas, os algoritmos precisam ser mais eficientes e usar menos energia, além de ser necessária uma forma eficiente de distribuição das chaves criptográficas.

Finalmente, quanto mais objetos tornam-se rastreáveis através da Internet das coisas, mais sérias tornam-se as ameaças à privacidade. É importante que esteja bem clara e definida para os usuários de quem é a propriedade dos dados coletados pelos dispositivos. Uma ideia é interessante é a de que os objetos inteligentes na Internet das coisas sejam equipados com políticas de privacidade. Quando dois objetos entram em contato, eles podem verificar a política de privacidade um do outro para checar a compatibilidade entre elas antes de se comunicarem [1].

Uma visão de futuro para a Internet das coisas é o da Web das coisas, que propõe o uso de padrões web para integrar objetos inteligentes com a World Wide Web. Através do uso dessas tecnologias será mais fácil para os desenvolvedores construírem aplicações utilizando objetos inteligentes, uma vez que os protocolos atuais podem permitir a interoperabilidade e comunicação mais facilmente de diferentes dispositivos [1].

Outra visão de futuro que envolve a integração de ainda mais dispositivos na Internet das coisas é a Internet das nano-coisas. A Internet de nano-coisas pode ser descrita como a interligação de dispositivos em nanoescala com redes de comunicação e a Internet. Embora a proposta seja de que estes dispositivos se comuniquem através sinais eletromagnéticos, existem inúmeros desafios técnicos que devem ser superados antes que a ideia se torne viável [1].

Continuem acompanhando essa série de posts, onde continuarei a falar sobre os tópicos quentes de pesquisa na área de Internet!

Bibliografia:

[1] Whitmore, A. et al. The Internet of Things–A survey of topics and trends. Information Systems Frontiers 17, 2 (April 2015), 261-274. Disponível em: &lt; http://dl.acm.org/citation.cfm?id=2750627 &gt;. Acesso em: 24 out. 2016.

[2] Salman, T. Internet of Things Protocols and Standards. Disponível em &lt; http://www.cse.wustl.edu/~jain/cse570-15/ftp/iot_prot/ &gt;. Acesso em: 14 out. 2016.

3

Tópicos quentes de pesquisa na área de Internet – Parte I: Uma visão sobre CDNs

digital-1647000_1280

A Internet é vista por muitos como algo posto e imutável. Mas o que poucos sabem é que ela suscita debates acadêmicos acalorados sobre como deve ser o desenvolvimento de sua arquitetura daqui para frente. A arquitetura da Internet e seus protocolos não foram desenvolvidos pensando no uso atual da rede e todas as aplicações que foram criadas desde o surgimento .

Apesar da arquitetura flexível que permitiu com que ela se desenvolvesse até o momento atual, há várias limitações que advém dessa mesma arquitetura e do conjunto de protocolos utilizados.

Um exemplo é a numeração IP, que identifica cada um dos dispositivos que se conecta à Internet. Atualmente é usada a versão 4 do protocolo IP que que permite a conexão de quase 4,3 bilhões de endereços e, por incrível que pareça essa quantidade praticamente já se esgotou.

Só não se esgotaram ainda mais rápido devido a algumas mudanças emergenciais que foram implementadas na arquitetura da Internet, como o NAT e o uso de IPs dinâmicos. O NAT permite que um único endereço IP possa ser utilizado por toda uma rede de computadores, sendo que essa passa a ter endereços privados que não podem ser acessados de fora dela. Já o uso de IPs dinâmicos permite que as operadoras do serviço de conexão à Internet possam usar os mesmos IPs para vários clientes: em um dado momento, um IP pode estar atribuído a um cliente, assim que ele desconecta, esse IP fica livre para ser usado em outro cliente.

A ideia inicial da Internet era a de que cada dispositivo tivesse o seu próprio IP e de que ele não fosse compartilhado com outros dispositivos. Então, o NAT e o uso de IPs dinâmicos contrariam a arquitetura inicial prevista para a Internet. Além disso, esses artifícios adicionam uma complexidade no gerenciamento da rede não prevista inicialmente.

Apesar desses mecanismos, chegou-se a um nível em que o gerenciamento está bastante complexo e que algumas aplicações não funcionam tão bem com todas essas camadas. Por isso, foi proposta uma nova versão do protocolo IP conhecida como IPv6, em que há um aumento significativo no número de endereços disponíveis e que não necessitará do uso desses artifícios.

Casos como esse suscitam debates sobre como a arquitetura da Internet deve evoluir daqui para frente. Há basicamente duas linhas de pensamento entre os pesquisadores da área: os defensores da linha evolutiva e os da linha clean-slate. Os primeiros acreditam que a arquitetura atual da Internet deve evoluir conforme as necessidades e que as mudanças devem ser bem pensadas para que se mantenha a compatibilidade dos equipamentos já funcionando na rede. Os adeptos ao clean-slate são mais radicais e acreditam que para resolver as questões que existem hoje na Internet seria necessário pensar em uma nova arquitetura para ela, basicamente reconstruindo uma nova rede mundial com base nos aprendizados do que deu certo e errado com a atual. Para conhecer mais sobre essas duas linhas, veja [1].

Dentro dessas duas linhas de pensamento há diversos tópicos quentes de pesquisa na área. Esse texto pretende fazer um breve resumo, de forma didática, de um dos tópicos quentes de pesquisa na área de Internet. Textos no futuro se debruçarão em outros tópicos.

CDNs

Uma CDN (Content Delivery Network) é um sistema distribuído de larga escala constituído por muitos servidores implantados em diversos data centers espalhados na Internet. O objetivo dela é tornar acessível conteúdo aos usuários com alta disponibilidade e um bom nível de qualidade de serviço. Existem diversas empresas globais dedicadas a fornecer esse tipo de solução aos provedores de conteúdo, sendo a maior delas a Akamai.

Para deixar mais claro como uma CDN funciona, analisaremos um exemplo na prática. Existe um grande provedor de conteúdo em vídeo que tem usuários em diferentes países. Ele tem um data center com vários servidores em sua sede. Todos os usuários que desejam assistir vídeos desse provedor terão que acessar a esses servidores. Porém, alguns desses usuários passam a experimentar uma demora e lentidão nesse acesso. Um dos fatores a se considerar é a própria distância física entre esses usuários e esses servidores na Internet. Se os servidores de alguma forma pudessem estar mais próximos aos usuários, eles acessariam esse conteúdo de forma mais rápida e teriam uma experiência mais satisfatória. Então, esse provedor de conteúdo faz um acordo com algumas operadoras de Internet para que possa colocar na rede delas servidores com cópias do conteúdo mais acessado naquela região e assim os usuários terem acesso mais rápido. Isso é basicamente o que é uma CDN.

Sintetizando, as vantagens no uso das CDNs são:

  • A carga do servidor “central” é reduzida, uma vez que as solicitações de conteúdo são distribuídas para vários servidores;
  • Como os usuários são atendidos pelos servidores mais próximos, o atraso é reduzido; e
  • As CDNs oferecem aos provedores de conteúdo um grau de proteção a ataques externos (por exemplo, DDoS) usando sua infraestrutura de servidores em larga escala para absorver o tráfego de ataque.

Além disso, as empresas que fornecem soluções de CDN acabam por ter uma rede de servidores em todo o mundo, gerando um grande volume de tráfego, o que lhes permite realizar análises sofisticadas do seu serviço de conteúdo que, por sua vez, pode ser usado para proporcionar uma maior segurança e confiabilidade.

Existem empresas que tem seus próprios serviços de CDN. A NetFlix é um exemplo disso. Os provedores de conexão à Internet podem entrar em contato com a empresa para pedirem um servidor com conteúdos da NetFlix. Todos os custos são cobertos pelo NetFlix, que faz monitoramento em tempo integral do funcionamento das CDNs. O provedor de conexão necessita apenas prover tráfego para atualização dos conteúdos no servidor. Essa atualização é feita diariamente durante o horário de menor uso (das 2h às 14h).

Apesar das CDNs já serem algo comercial e estarem implementadas, ainda há muito o que se pesquisar em relação a isso, como, por exemplo, melhor desempenho durante a cópia de conteúdos entre a CDN e o data center “central”, gerenciamento distribuído de CDNs e protocolo de comunicação entre CDNs federadas. As CDNs federadas são operadas por empresas regionais de telecomunicação. As empresas de diversas regiões fazem parcerias, tendo em vista que têm uma atuação limitada regionalmente, para que possam aumentar a sua abrangência e competirem com as CDNs conhecidas como tradicionais. Na referência [2] encontra-se disponível um estudo sobre a divisão de mercado entre os dois tipos de CDNs.

No próximo post irei continuar a falar sobre os tópicos quentes de pesquisa na área de Internet, acompanhem!

Bibliografia:

[1] Jennifer Rexford and Constantine Dovrolis. 2010. Future Internet architecture: clean-slate versus evolutionary research. Commun. ACM 53, 9 (September 2010), 36-40. DOI=http://dx.doi.org/10.1145/1810891.1810906

[2] Hyojung Lee, Dongmyung Lee, and Yung Yi. 2014. On the economic impact of Telco CDNs and their alliance on the CDN market. IEEE ICC 2014 – Next-Generation Networking Symposium. DOI=http://dx.doi.org/10.1109/ICC.2014.6883773

*imagem retirada do Pixabay (CC0 Public Domain, Free for commercial use, No attribution required).