Se segura malandro !

Quarta-feira, 29/Agosto/2007

DRM, que direito é este ?

Arquivado em: DRM — leonardo @ 9:50 pm

Uma questão bastante presente hoje é o gerenciamento digital de direitos autorais. Mas que direito é este ?

Parece-nos óbvio com nossa cabeça de sociedade cristã ocidental do início do século XXI que uma obra pertence a seu autor. Mas porque será que é assim ?

“Porque é justo, ora bolas.” você me dirá.

E o que é justo ? Quanto você utilizou da cultura da sociedade onde vive, de anos de pensamento, teorias científicas, interações sociais para se construir como uma pessoa ? E quanto desta mesma fonte você utilizou para dar sua contribuição. Quando Newton disse: “Se eu vi mais longe foi porque eu estava sobre os ombros de gigantes” ele estava apenas dando o devido valor ao trabalho dos seus predecessores.

Então como pode ser justo você acrescentar seus dois centavos a esta herança milionária e chamar de sua ? Mas os direitos autorais, patentes e cia estão ai, e não é a toa que foram criados.

A mesma sociedade que te fornece toda a matéria-prima também percebeu há um tempo atrás que ela se beneficia do produto do seu trabalho, principalmente se ele for inovador. E portanto é interessante criar instrumentos para incentivar a produção cultural (direitos autorais), e evolução científica(patentes), permitindo que você coloque uns caraminguás no bolso além da satisfação por um bom trabalho realizado. Mas não podemos perder de vista que a verdadeira função econômica da patente e dos direitos autorais é promover o desenvolvimento cultural e social.

Então o que é o movimento do software livre ? Apenas alguns malucos que acham que se todo mundo compartilha seu código-fonte a computação como ciência, e os produtos gerados por ela tendem a se desenvolver mais rápido.

A grande questão é saber então pesar como estes direitos tem que ser concedidos, sob quais condições, por quanto tempo, etc, etc, etc. A sociedade muda, as relações mudam e os direitos autorais também tem que mudar.

Mas para sair da discussão filosófica que não é o foco primário deste blog e voltar para a “segurança” que aí está eu deixo a melhor apresentação que já vi sobre o assunto que foi feita pelo Cory Doctorow, que é um escritor de livros, “embaixador” da EFF na Inglaterra e escreve em um dos blogs mais famosos do mundo o BoingBoing. Uma palestra que ele ministrou na Microsoft na versão em português ou inglês (aqui tem até o vídeo).

Voltamos a parte técnica. Já que existe o direito e já que no mundo digital é assim tão fácil copiar surgiu a idéia de proteger o conteúdo através da tecnologia. Mas que tecnologia ?

Que tal criptografar o conteúdo ?

A criptografia é uma tecnologia que serve para enviar uma mensagem da pessoa A para a pessoa B (Alice e Bob ? ) sem que outra pessoa E (Eve ? ) no meio do caminho consiga ler. Para tal existem algoritmos que em geral requerem uma chave para individualizar a sessão. O conhecimento da chave por Alice e Bob é que garante o entendimento. Mas pensa bem, quem é o Eve nesta história ? Não é o Bob ? Hmmm… então eu quero te vender um DVD e você pagou pelo conteúdo, logo tem que ver. E eu encripto o conteúdo para protegê-lo de você ? Já deu para entender sem entrar em detalhes técnicos que isto não vai dar certo. Bom… isto é de uma forma simples o motivo pelo qual eu acho que ele não funcionou e nem nunca funcionará.

Deixa eu ficar por aqui hoje.

Terça-feira, 28/Agosto/2007

Ainda sobre DOS

Arquivado em: Segurança — leonardo @ 11:12 pm

Como prometi vou continuar o post anterior sobre negação de serviço. Desta vez vamos falar de quais recursos podemos exaurir para tirar um serviço online do ar.

Já falamos da rede, que pode ser entupida. Mas do outro lado da linha temos computadores. E computadores utilizam CPU e memória para trabalhar. Logo outra forma de tornar o sistema indisponível é utilizar o sistema de forma a gastar mais memória e/ou capacidade da CPU do computador. Isto é fazendo o sistema rodar o que tem de mais complexo. E quem sabe um pouco de computação é capaz de avaliar o quão custosa uma certa funcionalidade pode ser.

Aqui temos um paradoxo interessante. Muitas vezes pode-se tentar acrescentar funcionalidades complexas de forma a “proteger” um sistema. E esta funcionalidade é que pode permitir que se derrube o mesmo.

No computador também temos um Sistema Operacional rodando, (Windows, Unix, MacOS…) e dentro deste também temos recursos finitos. Por exemplo temos uma tabela onde se controla quais são as conexões de rede estabelecidas por este computador, afinal de contas ele tem que saber com quem está conversando. A medida que eu abro conexões eu vou preenchendo esta tabela, mesmo que eu não troque quase nada de dados. Eu posso chegar a um ponto de utilizar todas as conexões do computador, não estar trocando dado nenhum, não consumir portanto CPU, memória e rede, mas o Sistema Operacional não ser capaz de armazenar nenhuma nova conexão, ignorando todo mundo que deseja conversar com ele. Uma variação deste ataque já foi muito comum no passado. Hoje em dia já há mecanismos para controlar este tipo de ataque quando feito sob certas condições.

Por fim existe aquele tipo de negação de serviço que já citei no exemplo do carro no post anterior. que consiste em achar algum bug no software que roda no servidor e utilizá-lo para fazê-lo parar. Bugs existem para todos os gostos. Alguns permitem coisas muito danosas como executar código de um atacante, roubar uma sessão autenticada de um usuário, etc. Também existem bugs que simplesmente fazem o programa capotar, isto é parar de executar. É fácil ver que esta última classe não é das mais difíceis de ocorrer, porque ela simplemente requer que o programa se perca, de uma forma mais ou menos “genérica”, apenas suficiente para que não consiga mais executar naquele estado, sem dar qualquer facilidade a mais para o atacante.

Acho que com isto dei um panorama geral do que são os tipos de ataque de DOS. Eu deliberadamente omiti o chamado DDOS que é a negação de serviço distribuída.

Segunda-feira, 27/Agosto/2007

O Santo Graal da Autenticação

Arquivado em: Autenticação, Segurança — leonardo @ 11:16 am

Autenticação é um requisito de sistemas com mais de um usuário em que se queira personalizar a utilização. Ou seja, praticamente todos. Mas nossa cabeça limitada de seres humanos não consegue armazenar um sem número de logins e senhas de cada sistema.

Quem trabalha com segurança sabe que este é sempre um ponto difícil de gerenciar. Pois os usuários tem coisas mais importantes para gastarem seus neurônios do que ficar armazenando senhas complexas. E cometem todo tipo de pecadilhos. Senhas de palavras de dicionário, muitas vezes relacionadas com seus dados biográficos, repetidas entre sistemas. Isto para não falar de quem anota no Post-It e cola na tela do computador a mostra de todos.

Por isto mesmo já se tentaram várias soluções, algumas delas bastante eficientes para gerenciar multiplas senhas. Eu particularmente utilizo o PasswordSafe. Assim reduzo meu problema a lembrar de uma senha apenas, para o bem ou para o mal. Mas como mantenho meu banco de dados de senha em um pendrive a segurança está baseada em dois elementos de proteção (que costumamos chamar de 2 fatores): ter a posse do meu pendrive e saber a senha mestra, que obviamente não é das mais fáceis.

A questão das múltiplas identidade no entanto tem muito mais aspectos do que simplesmente a senha. Se você é uma pessoa só porque sua identidade é diferente em cada lugar ?

É comum se falar de sistemas de SSO, ou Single Sign On nas empresas que consiste em ter uma conta única para tudo e só se autenticar uma vez, passando de um sistema para o outro já logado. Mas não é disto que estou falando. Estou falando da nossa vida online, com esta multitude de portais e serviços. Sem uma administração centralizada.

Porque você tem que se cadastrar múltiplas vezes ?

Eu particularmente odeio ter que preencher um cadastro para ler um artigo apenas, ou baixar um programa uma única vez. (Mas como para tudo tem solução existe o BugMeNot que provê senhas pré-cadastradas para sites não-pagos). Não resolve no entanto o problema de postar um comentário em um blog de um amigo onde não sou cadastrado.
Ninguém expressou isto tão bem qual é a nossa necessidade nesta Web2.0 como a famosa palestra do Dick Hardt na Oscon 2005 sobre Identidade 2.o . Tirando o lado marketeiro é isto mesmo que nós queremos.

E a questão dos relacionamentos ? Porque eu não posso carregar meus amigos do Orkut para o Myspace, Flixter, Facebook ?

E meu perfil, meus gostos tudo mais. Porque a minha autenticação não pode ser algo mais que simplesmente um login e senha cadastrado, mas representar minha identidade na rede, como um Netizen ? Quebrar a barreira entre os sites, mudar o paradigma. Eu passo a ter um ponto único que provê minha identidade de uma forma muito mais ampla. E me afilio aos sites que me interessam, ou utilizo-os apenas uma vez.

Isto existe ? Bom… é o que o pessoal do OpenID propõe. Muito bem apresentado pelo Simon Willison na palestra abaixo.

Domingo, 26/Agosto/2007

Negação de serviço

Arquivado em: Segurança — leonardo @ 12:59 pm

A negação de serviço (denial of service ou simplesmente D.o.S) é um conceito muito simples: utilizar um serviço além da capacidade que este tem com o objetivo de atrapalhar quem realmente gostaria de utilizá-lo.

Quando dizemos além da capacidade podemos nos referir a qualquer recurso que seja fundamental.

Imagine uma pequena mercearia. Ela tem um espaço físico limitado, porém adequado para atender seu público. Possui também uma equipe de funcionários e um estoque de produtos.

Em um determinado dia um grupo de pessoas, alguma vezes maior que o movimento diário da lojinha, resolve prejudicar seu dono. Basta estas pessoas fazerem uma fila na frente da loja, uma a uma entrar e perguntar a respeito de um produto, para em seguida deixar a loja sem nada comprar, reingressando no fim da fila. É fácil imaginar que os legítimos clientes teriam que esperar um tempo significativo na fila. Muitos desistiriam no meio do caminho, outros talvez nem conseguiriam ser atendidos dentro do horário de funcionamento. Eventualmente algum cliente esperaria na fila e faria a compra. Negar serviço não significa impedir totalmente o funcionamento.

Neste exemplo eu citei a forma mais comum de DoS que é a chamada força bruta. Ou seja o atacante faz um esforço proporcional aos recursos utilizados pelo prestador para torná-los inúteis. Existe uma outra variação que é pegar um ponto fraco que torna um recurso indisponível. Vamos supor que o único funcionário da lojinha vá trabalhar de carro todos os dias ? E se o seu carro for sabotado ? (Esqueçamos para efeito do exemplo que ele pode pegar um táxi, ônibus ou outros mecanismos de contorno que a vida real já nos proporciona). A lojinha também não abre negando aos seus clientes o serviço.

No fim das contas ataques de negação de serviço provocam prejuízos temporários, ou seja o movimento de vendas que deixou de acontecer. Também podem ser de longo prazo quando parte dos clientes passa a freqüentar a concorrência. Ou porque deixa de confiar no serviço da loja, ou porque se encanta com o serviço de outra que nunca havia experimentado.

E quais são os recursos necessários para um serviço online ? Basicamente rede e recursos computacionais.

O serviço de rede que é fornecido por uma empresa de telecomunicações. Este é limitado e medido em bits por segundo. Em geral é dimensionado para atender a demanda legítima do serviço com alguma folga, mas não muito mais que isto, porque afinal de contas é custo. Para torná-lo indisponível basta gerar tráfego. Ou seja, basta acessar o serviço muitas vezes ao mesmo tempo. E nisto os computadores são bons fazer coisas repetitivas rapidamente. Ou seja, um só computador pode fazer o papel de vários clientes.

Qual o limitante deste ataque ? Em geral a rede disponível para um usuário caseiro é algumas ordens de grandeza menor que um grande site. E grandes sites monitoram seus circuitos e mesmo se o atacante tiver grande disponibilidade de rede como ele vem de uma origem única(um único endereço ip) é possível “filtrar” o ataque, ainda que muitas vezes tenha que ser feito pela operadora de telecomunicações em algum outro ponto da rede.

No próximo post falo dos recursos computacionais e dos ataques que não são de força bruta…

Blog no WordPress.com.