O fim dos LulzSec

LulzSecA segurança é, cada vez mais, um ponto fulcral de qualquer sistema informático. Os ataques multiplicam-se, os prejuízos são cada vez maiores e, com os nossos dados espalhados por inúmeros serviços na internet, todos estamos vulneráveis. Muitas entidades não têm qualquer mecanismo de segurança e estão à mercê de hackers que agem por maldade. A possibilidade de existirem backdoors ocultas e activamente usadas é algo que deveria provocar arrepios e noites em branco a qualquer sysadmin ou responsável de sistemas.

O fim está a chegar rapidamente para os membros dos LulzSec. Estão a ser feitas apreensões todas as semanas e os cabecilhas começam a ser apanhados. Esta telenovela dos tempos modernos já dura há alguns meses e gerou muita discussão sobre os métodos utilizados pelo grupo de “hacktivistas”. De certo modo, foi algo completamente novo no mundo da tecnologia: a mediatização da verdadeira anarquia digital.

A minha opinião divide-se um pouco entre os dois lado da barricada.

Por um lado, este tipo de acontecimentos costumam provocar rupturas de comportamento. Por exemplo, o surgimento do Firesheep em 2010 apressou o ritmo da implementação de ligações seguras por SSL no Facebook e outros sites de grande porte. Só quando sentimos na pele as consequências é que tomamos acções drásticas. Existem entidades que não têm qualquer respeito pelos dados dos seus utilizadores. Quantas bases de dados terão dados confidenciais em plain-text? O caso da Sony foi flagrante e deverá servir de exemplo para qualquer um. Ao menos este grupo teve a “decência” de fazer um grande alarido da situação e não ficou a utilizar os dados pela calada, o que teria sido ainda mais grave.

Por outro lado, milhares de inocentes foram apanhadas nesta situação. Os LulzSec divulgaram os dados de cartões de crédito, e-mails e passwords, provocando prejuízo na vida das pessoas. Este tipo de ataques sem regras tem consequências reais graves, razão pela qual não consigo apoiar totalmente esta ideologia.

A fama, a vaidade e o poder subiram-lhes rapidamente à cabeça. Afinal de conta, não é todos os dias que se tem os olhos do mundo concentrados em cada passo que damos, para além do medo incutido nos cibernautas. Este excesso de confiança foi, na minha opinião, a morte do artista. Deixaram pegadas por todo o lado e não acredito que consigam sair incólumes depois de tudo o que fizeram.

As acções dos LulzSec ficarão marcadas na história da internet. Espero que toda a situação não tenha sido em vão e que haja uma mudança de hábitos radical. A cultura da segurança deveria ser a primeira prioridade de qualquer entidade com presença na web. Cada vez mais piratas navegam nestes mares: quem não se proteger, mais cedo ou mais tarde acaba saqueado.

LulzBoat

Podcasts de Tecnologia e Programação

Uma das minhas fontes de aprendizagem e entretenimento passa por ouvir alguns podcasts de excelente qualidade. Caso estejam interessados, aqui ficam algumas recomendações:

This Week In Tech

This Week in Tech

Provavelmente o mais famoso podcast sobre tecnologia, This Week in Tech (TWIT) é um programa semanal que consiste num painel liderado por Leo Laporte. Em cada episódio é feita uma análise dos acontecimentos tecnológicos da semana com opiniões informadas e interessantes. É um podcast bem humorado que proporciona bastantes momentos divertidos e o mais “leve” dos que compõem esta lista.

Security Now

Security Now

Para quem tem interesse no mundo da segurança informática, Steve Gibson não deverá ser um nome estranho: este senhor foi responsável pelo primeiro anti-spyware e pelo conhecido software de recuperação de discos rígidos SpinRite. Há dois tipos de episódios que são intercalados semanalmente: perguntas de ouvintes e aprofundamento de um tópico em específico. Este podcast é uma excelente fonte de informação e o Steve faz um trabalho notável ao explicar pormenores por trás de assuntos bastante complexos como criptografia e vulnerabilidades de segurança.

Herding Code

Herding Code

O mundo do Open Source está minado de frameworks e bibliotecas e por vezes é difícil mantermo-nos actualizados, bem como sabermos o que realmente nos interessa. Em cada episódio um autor é convidado a divulgar e explicar em que consiste o seu projecto perante um painel com alguns programadores de renome, que conduzem a entrevista. Apesar de muitas vezes o assunto me ser totalmente alheio, é interessante estar a par do que se faz actualmente e quais são as tecnologias que estão na moda.

This Developer's Life

This Developer’s Life

O meu favorito de todos é, sem dúvida, o This Developer’s Life. Em vez de se focar no aspecto técnico, foca-se nas experiências e vivências de programadores. Em cada episódio Rob Conery e Scott Hanselman dão-nos a conhecer narrativas de várias pessoas ligadas à tecnologia sobre um tema em específico. Estas participações são acompanhadas por música bastante alternativa que dá uma aura especial ao programa. É como se fossemos transportados para um mundo diferente e que nos envolve completamente nestas histórias de vida. Um podcast inspirador.

Hanselminutes

Hanselminutes

Também apresentada por Scott Hanselman, uma figura prominente no mundo das tecnologias Microsoft, este podcast consegue ser o mais generalista no que toca a assuntos directamente relacionados com programação. Apesar de também ter episódios semelhantes aos do Herding Code, centrados em projectos no mundo do Open Source, muitos dos episódios são sobre assuntos variados: boas práticas de desenvolvimento, padrões, entrevistas a personalidades, tecnologias, etc. Recomendo esta pela constante capacidade do Scott de produzir conteúdo de qualidade e de interesse.

Software Engineering Radio

Software Engineering Radio

O SE-Radio destaca-se dos outros por ser exclusivamente dedicado à informação (e não ao entretenimento) sobre os mais variados tópicos da engenharia de software. Tudo o que possam imaginar sobre técnicas de desenvolvimento de software provavelmente já foi analisado pelos senhores responsáveis por este podcast. Este podcast semanal já conta com 175 episódios de elevada qualidade, dura há mais de 5 anos e tem como objectivo ser uma fonte duradoura de conhecimento para todos os programadores profissionais. Sem dúvida a não perder caso queiram aprender mais sobre esta arte, que é o desenvolvimento de software.

Caso conheçam mais podcasts interessantes, por favor indiquem-nos nos comentários 🙂

Certificados SSL – o que são e como funcionam

CadeadoNota: Este artigo foi escrito originalmente para o blog da PTWS Alojamento Web. Aqui encontra-se uma transcrição completa para efeitos de arquivo.

É frequente ouvir-se falar em certificados de segurança quando o assunto são páginas onde o sigilo dos dados trocados é da mais extrema importância. Sites de eBanking ou Lojas Online têm frequentemente este sistema de forma a proteger os dados dos clientes.

Para além de protegerem realmente informação trocada, estes certificados dão confiança aos utilizadores no momento de colocarem os seus dados sensíveis na Internet, como informação do seu cartão de crédito.

Neste artigo, explicarei como funciona este sistema de segurança com duas abordagens: uma mais simples, acessível a todos, e uma mais complexa, para os mais curiosos.

Keeping it Simple

Um certificado SSL é utilizado para estabelecer um “túnel” seguro entre 2 pontos: o utilizador e o site. Quando colocamos informação importante num website, é necessário tornar essa troca de dados segura e privada.

As mensagens são codificadas de forma a que quem esteja à escuta não consiga ter acesso aos dados, sendo estes descodificados ao chegar ao destino. Esta codificação é feita utilizando processos matemáticos de tal modo complicados quer seriam necessários milhares de anos para descodificá-los.

A atribuição de certificados válidos é realizada por Entidades de Certificação, como a Verisign (existem cerca de 36 em todo o mundo), mas é normalmente revendida por terceiros de confiança. Assim, vai sendo criada uma árvore de confiança, liderada pelas Entidades de Certificação.

Depois de se fazer a instalação do certificado no site, todas as comunicações passam a ser seguras. Normalmente os browsers identificam estes websites através de um ícone na barra de endereço, ou alterando a cor da mesma.

Como funciona

O sistema de certificados SSL utiliza uma codificação baseada em 2 pares de chaves públicas e privadas. Os websites com certificados têm uma chave privada que apenas eles conhecem e uma chave pública, conhecida por todos. O mesmo acontece para o browser de quem acede através de https a estes sites.

Uma mensagem ao ser codificada com uma das chaves públicas só poderá ser descodificada com a chave privada correspondente. O inverso também acontece: uma mensagem codificada com uma chave privada só pode ser descodificada com a chave pública correspondente.

Isto permite uma coisa muito interessante: ao codificarmos uma mensagem com a chave pública do destinatário, apenas o destinatário a poderá descodificar com a sua chave privada. Asseguramos o sigilo, desde que a chave privada não seja comprometida.

Imaginando que um cliente se chama Alice e o website é do Bob, uma interacção utilizando SSL seria assim:

-Alice obtém a chave pública de Bob, e Bob obtém a chave pública de Alice
-Alice codifica uma mensagem com a chave pública de Bob
-Bob recebe a mensagem codificada e descodifica-a utilizando a sua chave privada
-Bob lê o pedido de Alice e responde, codificando a sua resposta com a chave pública de Alice
-Alice recebe a resposta e descodifica-a utilizando a sua chave privada

Supondo que havia alguém a tentar escutar a comunicação, seria impossível descodificar qualquer uma das mensagens, pois só podem ser descodificadas com as chaves privadas de cada interveniente.

O algoritmo descrito é o RSA e é utilizado para iniciar a comunicação (handshake). Visto que a codificação/descodificação utilizando o RSA é um processo mais lento que outros algoritmos, a partir dessa primeira comunicação é escolhido um protocolo menos pesado de chave simétrica. Utilizando a técnica dos 2 pares de chaves (chaves assimétricas) é partilhada uma nova chave que será utilizada doravante para codificar e descodificar as mensagens utilizando um algoritmo de codificação mais rápido (DES, DSA, etc).

Complicando um pouco: Mecanismo de Encriptação

Mas se a mensagem que é codificada pela chave pública consegue ser descodificada pela sua chave privada, e vice-versa, significa que há uma ligação entre elas. E conhecendo o algoritmo que gera uma chave, em teoria seria possível descobrir as chaves privadas sabendo as públicas, certo? Actualmente não.

Tal como mencionado anteriormente, são utilizados processos matemáticos complexos que impedem a descoberta de uma chave a partir do seu par:

  1. São escolhidos 2 números primos pq com, pelo menos, 100 algarismos
  2. É calculado n = p * q
  3. É calculado z = (p-1) * (q-1)
  4. Encontra-se um valor para e, primo relativo de z e menor que o próprio z
  5. Calcular d tal que d.e = 1 mod n

Após descobertos todos estes números, obtém-se a chave pública e privada:

-Chave pública: (e,n)
-Chave privada: (d,n)

Cada chave consiste num par de números e podem agora ser usadas para cifrar e decifrar as mensagens, da seguinte maneira (exemplo para cifra com chave privada e decifra com chave pública):

-Cifra = Mensagem^d mod n
-Mensagem =  Cifra^e mod n

A complexidade aqui está no uso de números extremamente grandes e no ser necessário factorizar os mesmos para conseguir inverter o algoritmo, chegando à chave privada através da pública. Este é um processo computacionalmente intensivo, que demoraria milhares de anos a efectuar com a tecnologia actual.

Protecção para o Futuro?

De acordo com a Lei de Moore, o poder computacional duplica a cada dois anos. Esta “lei” tem-se vindo a comprovar com o passar do tempo, o que significa que cada vez se vai tornando mais realista a quebra deste tipo de algoritmos em tempo útil. Para ajudar, especialistas dizem que a chegada da Computação Quântica tornará estes processos triviais.

Todos estes factores implicam uma alteração nos algoritmos existentes (por exemplo o uso de chaves maiores) ou a criação de novos, que tornem as comunicações seguras por mais algum tempo.

Apesar destes futuros desafios, nos tempos que correm esta é, sem dúvida, uma maneira totalmente segura de garantir o sigilo e a autenticidade na troca de dados, pelo que deverá ser ponderado o uso desta tecnologia na protecção de sites abordem questões onde a segurança da informação é importante.

ZCE: Certificação Zend PHP5

Zend Certified EngineerA Zend, para quem não conhece, intitula-se “The PHP Company“. São os autores da Zend Framework e alguns dos seus empregados são os criadores originais da linguagem de scripting PHP. Como parte dos seus serviços, a Zend oferece certificações tanto em PHP como na Zend Framework.

Este verão frequentei uma formação de PHP organizada pela Caixa Mágica Software: a PHP Summer School. Uma das componentes da formação era a preparação e oferta de um voucher para nos podermos tornar um ZCE – Zend Certified Engineer.

Quando a formação acabou, comecei a pensar na certificação e nas suas vantagens. Seria enriquecedora para o curriculum, apesar de haver muitas opiniões negativas em relação a estes pedaços de papel. Não tenho a noção do valor de uma certificação no mercado de trabalho português, e só por ter uma não significa que seja melhor que alguém que não a tenha: existem programadores muito bons que não pensam sequer nestes assuntos. A maior parte das vezes os projectos passados falam por si.
Encarei a situação como um desafio e, como não gosto de perder, achei que era melhor preparar-me bem.

O ESTUDO

Existem algumas referências no que toca ao estudo para esta certificação. Após alguma pesquisa, encontrei um livro que prometia preparar o candidato para enfrentar o exame: “php|architect’s Zend PHP5 Certification Study Guide” . São cerca de 250 páginas que cobrem todo um leque de assuntos como funções, programação orientada a objectos, design patterns, streams, XML, segurança, etc. Achei o livro bem estruturado e bastante rico em termos de conteúdo. Os assuntos são abordados de uma forma objectiva, sucinta e direccionada para os conteúdos que constam na prova.

Após a leitura do livro, há sempre a dúvida: “Será que estou pronto?”. Existem algumas maneiras de saber, umas melhores e outras piores. A primeira que tentei foi um outro livro com perguntas similares à do exame, “The Zend PHP Certification Practice Test Book“. O meu conselho é o seguinte: fujam! Apesar do livro ter uma grande quantidade de perguntas com um grande grau de semelhança às do exame, algumas respostas não estão correctas e podem influenciar pela negativa a aprendizagem de certos conceitos base.

A alternativa que arranjei foi a compra de um pack de 5 exames no site da Zend. Perdi o amor a 17€ e tive a hipótese de testar em primeira mão o meu conhecimento. Penso que o preço é comparativamente baixo à perspectiva de ter que repetir o exame de certificação: 125€. Acabei por fazer apenas 4, visto que muitas das perguntas se repetem de exame para exame. Recomendo esta abordagem, apesar de se poder encontrar muitas das perguntas que estão nestes exames com algum google-fu. A mais valia de usar os testes oficiais é que no fim podemos ver quais são as nossas áreas mais fracas para podermos intensificar o estudo das mesmas.

O EXAME

O próximo passo foi marcar o exame num dos centros Pearson Vue em Lisboa. A escolha acabou por recair pela Rumos, devido à proximidade com o ISCTE. Foi uma experiência tranquila: entrar, fazer o exame e sair. 70 perguntas de 3 tipos: resposta múltipla, resposta única e resposta por extenso.
Na minha opinião, há determinadas perguntas que são ridículas. Um bom programador não precisa de saber de cor todas as funções de uma linguagem, ou o 4º argumento de uma determinada função. Não é necessário ser-se um dicionário de funções para se ser eficaz e competente, pelo que penso que estas perguntas só constam do exame para inflacionar a dificuldade do mesmo e dar credibilidade à certificação. Por outro lado, concordo totalmente com a existência de outras que abordam boas práticas, generalidades e alguns casos específicos da sintaxe e comportamento da linguagem. Também achei que o grau de dificuldade era ligeiramente superior ao dos testes de treino.

A RETROSPECÇÃO

Após ter passado na certificação, tive algum tempo para pensar no que mudou desde que decidi tomar este caminho. O mais importante foi, sem sombra de dúvida, o que aprendi durante o estudo. Sinto-me muito mais confiante e mais produtivo em relação a programação em PHP. Também considero que será uma boa adição ao meu curriculum, principalmente nesta fase inicial em que a maioria da experiência é académica, fortalecendo as minhas competências profissionais.

Se estão a pensar em fazer esta certificação, o conselho que vos deixo é que estudem até estarem confiantes de que vão passar. Penso que não vale a pena o risco de fazer a certificação sem um estudo sólido. O livro que mencionei é um excelente guia de estudo, mas há certas perguntas nos exames que abordam conteúdo que não é apresentado directamente, pelo que não é suficiente. Se tiverem oportunidade, façam um ou dois testes para praticar. É o melhor benchmark que se pode ter.

Segurança na Internet – Aprenda e Proteja-se

Segurança na Internet

Nota: Este artigo foi escrito originalmente para o blog da PTWS Alojamento Web. Aqui encontra-se uma transcrição completa para efeitos de arquivo.

Com o evoluir da tecnologia e a sua consequente banalização, o número de internautas disparou nos últimos anos. Este aumento exponencial de utilizadores (390 milhões no ano 2000 contra 1700 milhões no ano 2009) é um chamariz para os chamados “predadores da net“. O facto é que a grande maioria dos utilizadores não tem conhecimentos suficientes, o que os torna potenciais alvos de fraude ou roubo.

Apesar das campanhas informativas serem actualmente bastante divulgadas, apenas uma minoria dos internautas conhece verdadeiramente os perigos a que estamos sujeitos ao navegar por estas águas. Mas se alguns têm conhecimento dos piratas, outros têm medo de sequer molhar os pés.

A realidade é que há certas precauções que podemos tomar de maneira a tornar a nossa vida informática mais segura, não tendo medo de usufruir de tudo o que a tecnologia tem para nos oferecer. Mesmo não sendo “experts” na matéria, todos os internautas deveriam ter alguns conhecimentos sobre aquilo que pode estar à espreita por trás de cada clique.