Archive for the ‘Software Livre’ Category

Anunciando a libestream

May 7, 2013

O algoritmo de criptografia mais importante da atualidade, o AES (Advanced Encryption Standard), também conhecido como Rijndael, faz parte de uma categoria chamada de cifradores de bloco. Eles têm esse nome porque operam sobre conjuntos de dados de tamanho fixo: os blocos. Cada bloco — de 128 bits cada, no caso do AES — é cifrado/decifrado individualmente com uma chave secreta. Cada 128 bits gerados pelo processo de cifragem pode ser revertido a 128 bits do texto original usando-se a mesma chave no processo de decifragem.

Da natureza dos cifradores de bloco deriva-se um problema imediato: e se as mensagens forem maiores que o tamanho do bloco? Com frequência, o que deve ser cifrado é maior que 128 bits, então viu-se a necessidade de se definir os modos de operação, como o CBC (cipher-block chaining) ou o CTR (counter). Ao contrário do que pode parecer a princípio, simplesmente dividir a mensagem em pedaços de 128 bits e cifrar cada um separadamente (modo de operação ECB, electronic codebook) não é uma boa ideia: toda a vez que um mesmo pedaço da mensagem é cifrado com a mesma chave, o resultado é o mesmo padrão de bits, o que pode revelar a ocorrência de padrões repetidos dentro da mensagem original.

Os outros modos de operação resolvem esse problema, ou encadeando de alguma forma os blocos, como faz o CBC, propagando a entropia dos blocos anteriores e ocultando qualquer tipo padrão, ou o modo CTR, que transforma o cifrador de blocos efetivamente em um cifrador de fluxo, onde este é utilizado para gerar uma sequência de bits arbitrariamente grande, aparentemente aleatória, de distribuição estatística normal, que quando aplicado com uma função reversível à mensagem (como a KGB fazia com os one-time pad) a oculta até que a operação inversa seja feita.

Acontece que muita gente usa o AES no modo CTR, um algoritmo grande e complexo, feito para operar em blocos e com garantia de reversibilidade, simplesmente para imitar um cifrador de fluxo, que são algoritmos muito mais simples e rápidos de se computar, especificamente desenvolvidos para operar desta maneira.

O mais conhecido dos cifradores de fluxo é o RC4, um algoritmo extremamente simples, porém antigo e com várias falhas de segurança (falhas estas que permite que redes WiFi protegidas por WEB sejam facilmente invadidas, por exemplo), mas que em muitas situações acaba sendo utilizado por falta de alternativas. Isso acontece na própria Web, nas conexões seguras HTTPS, seja por questões de performance (cifradores de bloco são mais lentos e complexos) ou por causa da falha que encontraram no modo de operação do SSL/TLS (que afeta o AES, por ser um cifrador de bloco, tornando-o inseguro), muitos sites ainda utilizam o RC4, inclusive os maiores (Goolgle, Facebook, WordPress e Wikipedia incluídos, bem como muitos bancos), já que ele é o único cifrador de fluxo disponível nesse tipo de conexão.

Mas o RC4 não é o único desta família de algoritmos de criptografia. A exemplo do que foi a competição do AES, que selecionou o Rijndael e o tornou o mais usado algoritmo de cifragem de blocos do mundo, uma outra competição, chamada eSTREAM, realizado de 2006 a 2008 por um órgão da União Européia, teve por objetivo avaliar, selecionar e recomendar para o mundo os melhores cifradores de fluxo disponíveis. Essa competição teve quatro vencedores na categoria software (isto é, excelente performance quando implementados em software): Rabbit, HC-128, Salsa20/12 e Sosemanuk.

Numa modesta tentativa de divulgar, incentivar e facilitar o uso destes algoritmos em detrimento do RC4, que é fraco, e, onde cabível, do AES, que é lento e complexo — e complexidade deve ser levada em consideração: a necessidade de se usar um modo de operação custou a segurança dos cifradores de bloco no SSL e na Web — eu desenvolvi a biblioteca libestream.

Libestream é uma pequena biblioteca de software que implementa, sob domínio público (e portanto, software livre), em C portável, os quatro algoritmos selecionados pelo eSTREAM na categoria software, além do algoritmo UMAC para autenticação de mensagem, necessário a qualquer sistema de criptografia para garantir a integridade da mensagem, mas especialmente importante no caso de cifragem de fluxo, que é particularmente suscetível a falsificações.

Com isso, espero prover um conjunto mínimo e auto-contido de ferramentas suficientes para se desenvolver sistemas criptográficos baseados em cifragem de stream. Mas se isso for trabalho demais e você só quiser se comunicar com segurança via sockets TCP, a biblioteca ainda oferece um protocolo simples, pronto para usar, que cuida de cifrar, assinar, decifrar e verificar as mensagens para você.

Amigos de Bolso™ contra o BitCoin

January 6, 2013

Após um Amigo de Bolso™ do Izzy me apontar o link [ Dossiê HBD ] Bitcoins, a moeda do futuro (no presente é só uma piada mesmo), por ser de tantas maneiras impreciso e tendencioso, resolvi publicamente discordar e replicar nos pontos pertinentes.

Sendo um conhecedor do BitCoin, logo na introdução do artigo fiquei sem entender as alusões do tipo “pífia e juvenil tentativa”, “célebre motivo de chacota” e “lorota financeira comparável a Herbalife”. A alusão a lorota financeira se fez claro mais abaixo quando o autor descreveu sua visão sobre o tema, bem como a “chacota”, já “pífia”, “juvenil” ficaram injustificados, principalmente pelo fato de o próprio autor ter admitido a importância do BitCoin para atividades ilícitas. Pode não ser idônea, mas de maneira alguma é “pífia” ou “juvenil”.

O que é BitCoin?

Um erro menor do autor nessa seção foi dizer que BitCoin é uma moeda “criptografada”. Nada no protocolo do BitCoin é criptografado, nem há nenhuma necessidade implícita de criptografia para seu uso e funcionamento. Entretanto é uma prática comum para os possuidores de BitCoin criptografarem sua carteira para impedir acesso indevido, exatamente da mesma maneira que criptografamos arquivos importantes, comunicações de email e transações bancárias, o que portanto não justificaria chamar a moeda de “criptografada”.

Mas o erro principal foi outro: implicar que o criador do BitCoin tivesse objetivos conspiratórios ocultos aos criar a moeda, sem levar em conta o adjetivo correto que deveria ter sido usado em lugar de “criptografada”: “distribuida”. BitCoin é acima de tudo, uma moeda distribuída, sem nenhuma autoridade central, sem nenhum controlador implícito ou explícito. Toda a infraestrutura de software que possibilita seu funcionamento é livre, modificável e aberto para auditoria. O que evita fraudes é o consenso gerado pela rede BitCoin, ninguém ou nenhuma instalação especial de software ou servidores tem autoridade para ditar os rumos da moeda, criá-las espontaneamente ou alterar seu valor. Nem o criador, nem ninguém. O processo de funcionamento das BitCoins é completamente aberto, auditável e consensual; não tem ponto central.

Não importa os objetivos do criador do BitCoin, porque ele não tem mais nenhum controle sobre a moeda. Ela foi criada para ser incontrolável, e só ganhou popularidade por isso: não foi um cara que disse “ela não está sujeita a ninguém, confiem em mim”, foi que cada indivíduo que analisou a fundo seu processo de funcionamento e acreditou, atestou que assim o era (e ainda hoje mais e mais pessoas o fazem e o atestam).

Como as bitcoins (não) funcionam?

Essa foi a sessão mais errada e distorcida de todo o artigo, e de certo modo justifica a visão do autor de “lorota financeira comparável a Herbalife” sobre o BitCoin.

Explicando realmente como as BitCoins funcionam: você tem BitCoins em sua carteira, que pode ser um programa no seu computador ou uma conta em alguns dos sites que oferecem serviço de carteira BitCoin. Lá estão armazenadas suas BitCoins. Quando você quiser pagar por algum bem ou serviço, você coloca o endereço do destinatário, digita o valor a ser enviado, e clica para enviar a transação pela Internet. Dentro de alguns minutos sua transação será validada e confirmada pela rede.

No caso inverso, você tem dinheiro a receber, você clica em um botão na sua carteira para gerar um endereço de pagamento (um código do tipo 13bbGCsjo5RrByDdQovxLwhquzDyTbHG7Q) que você envia ao seu pagador para que ele possa efetuar a transação.

Simples assim.

Agora, realmente existe o processo de mineração de BitCoin como mencionado no artigo do Izzy, mas dizer que “você baixa o software oficial da parada e a roda no seu computador. Dependendo da potência do mesmo […] você vai ganhar algumas frações de bitcoins após rodar o aplicativo por algumas horas” é tão preciso quanto dizer “existe um metal que vale muito dinheiro chamado ouro e tem ele enterrado. Funciona assim, você pega uma picareta e cavuca a terra, e algumas horas depois você acha alguns microgramas de ouro”.

Ainda tem um erro menor nessa afirmação, que diz que o software tem que ser o “oficial”, decorrente da mentalidade de que o BitCoin é um esquema fraudulento controlado por algum grupo restrito de pessoas. O processo de mineração de BitCoin foi criado de modo a ser matematicamente garantido de ser difícil, e portanto dar valor à moeda (lei econômica: quanto mais raro, mais caro). O processo utiliza um algoritmo padrão para este propósito, o SHA-256, projetado pela NSA. Por ser um algoritmo muito comum e conhecido (eu o aprendi pela Wikipédia), é relativamente fácil escrever um minerador, e existem dezenas deles, com zilhões de funcionalidades e propósitos específicos. Se você for se aventurar a minerar, o último que você vai querer é o “oficial” (o primeiro minerador feito; chamá-lo de lento é bondade, ele é completamente inútil na economia atual do BitCoin).

O processo de minerar BitCoin é oneroso por causa do hardware necessário, barulho e calor gerados, energia consumida (e poluição gerada, dependendo da fonte dessa energia). Acreditar que vai ganhar dinheiro fácil com isso é igual acreditar que você vai ficar rico se pegar sua picareta e ir para alguma corrida do ouro na Amazônia junto com mais zilhões de pessoas que tiveram a mesma ideia, e montam aqueles acampamentos de mineiros cheios de miséria e prostituição que as vezes passam na Globo. Minerar BitCoin não funciona assim, exige planejamento, recursos, e as contas na ponta do lápis, e isso é facilmente visível para qualquer um que não acredite em esquemas de pirâmide. Aparentemente a ira do Izzy vem do fato de isso não ser nenhuma fonte mágica de dinheiro, como ele talvez um dia quis acreditar que fosse, e agora sai atacando.

De fato, pela inexorável mão invisível do nosso amigo Adam Smith, mineração de BitCoin nunca poderá ser uma atividade mais que muito pouco rentável, por que quanto mais gente tiver minerando, mais difícil fica, atingindo um ponto de equilíbrio onde só é rentável o suficiente quando gente suficiente desiste por acreditar que não vale a pena o esforço. Certamente para mim não vale o esforço de sair numa corrida do ouro, e para muita gente não vale o de minerar BitCoin.

Como apontado no artigo, é verdade que a moeda é muito instável e tem grandes variações de preço, por isso é considerada um investimento de alto risco para especuladores (se se pode ganhar muito, se pode perder muito), mas isso é devido à sua idade e seu relativamente baixo volume de utilização.

Pera, um ex-site de Magic é o “Banco Central” dessa parada? Isso não me parece muito seguro.

O Mt.Gox não chega nem de perto a ser o “Banco Central” do BitCoin, pois a função do Banco Central é emitir e controlar artificialmente o preço da moeda, e isso não existe no BitCoin. O Mt.Gox está mais para a NASDAQ do BitCoin, pois é a maior bolsa de valores que negocia a moeda.

E sim, é insegura, volta e meia vemos sites que lidam com grandes quantidades de BitCoins são invadidos e roubados, ou então os dados são perdidos. Infelizmente isso é uma limitação do BitCoin como um conceito novo com somente 3 anos e poucos de existência: as instituições que lidam com os valores não estão acostumados com a segurança e procedimentos exigidos na atividade financeira, e não adotam procedimentos de segurança desenvolvido a duras penas ao longo dos anos pelas instituições financeiras convencionais. Essa falha não é inerente da moeda em si. A revista Forbes já apontou estes aspectos da segurança do BitCoin, e também já foi rebatido.

O mais interessante é ver o autor acusar e desconfiar das instituições que lidam com BitCoins, e principalmente explica o aspecto da “chacota” mencionada na introdução. Aparentemente, por não serem grandes e super poderosas corporações como os bancos internacionais (que já quebraram o mundo mais de uma vez) que estão por trás do BitCoin, mas sim sites simples, evoluídos de mercado de trocas de cartas de Magic, e pessoas simples e normais com os quais nos identificamos que estão lucrando com o BitCoin, o autor ataca, faz chacota e acusa de má fé e corrupção essas pessoas, quase como se tivesse inveja, e quisesse ele ter tido a ideia e lucrado com o BitCoin antes/no lugar deles.

A própria acusação de corrupção contra o sujeito Bruce Wagner (que eu nunca tinha ouvido falar, e não tem a menor importância na economia e continuada utilização do BitCoin) referencia um site dedicado a chacotas sobre o BitCoin, o ButtCoin, que a propósito, foi encerrado aparentemente por falta de ibope.

Quanto a afirmação de que o Banco Central Europeu diz que o BitCoin tem semelhanças com esquemas de pirâmide, é simplesmente falso. Segue o único trecho que a palavra “pyramid” é mencionada:

“Therefore, although the current knowledge base does not make it easy to assess whether or not the Bitcoin system actually works like a pyramid or Ponzi scheme, it can justifiably be stated that Bitcoin is a high-risk system for its users from a financial perspective, and that it could collapse if people try to get out of the system and are not able to do so because of its illiquidity.”

Preguiça de traduzir à parte, o trecho justifica o quão arriscado pode ser para uma pessoa se meter com BitCoin sem entender como ele realmente funciona (opinião de um Banco Central; claro que muita gente que já se fudeu por causa de um banco convencional poderia dizer a mesma coisa sobre eles), mas diz explicitamente que eles não tem nenhuma dado para considerar o BitCoin como um esquema de pirâmide; é quase o oposto do que o Izzy falou. Ele só levanta a possibilidade de, caso as pessoas desacreditem do BitCoin e não queiram mais comprá-lo, você não poderá mais vender o que você tem por dinheiro convencional. O mesmo risco que os investidores de ações correm caso todo mundo ache que as ações da Petrobrás não tem mais valor e param de querer comprá-la.

Mas Izzy, um broder meu que manja dessas coisas e é super politizado falou que a vantagem do bitcoin é que, ao contrário de moedas fiat, ele não desvaloriza e não inflaciona, o valor dele só sobe!

Dãã! É claro que o valor flutua, como o de qualquer ativo negociável que não seja uma bomba relógio em viés de explodir! Lembram do Avestruz Master?

O sentido real dessa frase vem do fato da moeda ser por natureza deflacionária, o que significa que, a longo prazo, se a atividade econômica em torno da moeda aumentar, seu preço só pode subir, porque não tem ninguém com poder para emitir mais BitCoins para compensar o crescimento da economia. Isso se dá por que a moeda foi planejada para ter uma taxa de produção decrescente, ou seja, a quantidade de BitCoins produzidas vai diminuir até parar de ser produzida, e só re-circular o que já existe. Isso não tem nada a ver com as flutuações locais dentro de uma bolsa de valores.

Você mencionou que é difícil mineirar bitcoins. Explique isso melhor.

Só corrobora o que eu falei sobre BitCoin não funcionar como a seção Como as bitcoins (não) funcionam? do artigo original alegar: não é pra qualquer um mineirar. Até o os primeiros hardwares dedicados à mineração de BitCoin começarem a ser entregues, que diminuiriam o consumo de energia em ordens de magnitude, o calor gerado é um efeito colateral indesejado que as pessoas tentam aproveitar.

E em quantas situações energia elétrica não é queimada para simplesmente se produzir calor? Ferro de passar, chuveiro elétrico, forno elétrico e aquecedor de ambiente em locais frios, etc. Claro que para o autor essas situações onde o calor da mineração de BitCoin é aproveitado em lugar de se queimar a mesma quantidade de energia e não produzir nada não passa de chacota. Mas considero montar essas engenhocas um hobby muito mais interessante do que, por exemplo, rebaixar carro, por luz de neon em baixo, um som gigante no porta malas e sair perturbando a paz pela cidade (só para citar um hobby geralmente reprovável).

Mas Sr. Izzy A. Nobre, se isso é uma merda, qual a real utilidade das bitcoins?

BitCoin tem sim seu grande atrativo para atividades ilícitas por ser anônimo. “Quase anonimidade” é uma afirmação meio fraca sem prova ou confirmações de casos em que pessoas são rastreadas através do BitCoin. O usuário pode ter quantas carteiras BitCoin quiser, cada uma com quantos endereços, sem relação um com o outro, quiser. E as carteiras e os endereços podem ser criados à vontade, offline no próprio computador, ninguém tem o controle sobre isso. Daí vem a afirmação que BitCoin é anônimo, porque não tem como ligar com certeza endereços — por onde passam as transações — com a identidade do dono daquele endereço. Olhando para a cadeia de blocos da rede BitCoin (tipo o livro de registro de todas as transações realizadas na moeda) você pode ver o dinheiro indo de endereço para endereço… mas não dá para saber por ali quem controla aquele endereço.

Eventualmente alguns dos seus endereços BitCoin se tornam conhecidos por alguém: se você usar seu endereço em negócios com uma pessoa, ela provavelmente terá alguma informação de contato sua que ela poderá relacionar ao seu endereço. Então ele é rastreável? Teoricamente sim, tão rastreável quanto receber uma nota de troco na padaria e tentar fazer o padeiro lembrar quem deu aquela nota para ele. Simplesmente não é uma abordagem realista, ainda mais se a quantia tiver passado por várias transações antes de levantar a suspeita.

E quanto a “essa porra” ser um “oceano de credibilidade”? Do que se duvida do BitCoin? Se for da sua robustez como moeda de troca, tem toda uma economia (ilícita) bem estabelecida e dependente do BitCoin, de modo que demanda por ele não vai faltar, garantindo sua liquidez. Se for da sua anonimidade e conveniência: bandidos usam sem medo de serem pegos. Que garantia maior você poderia querer? Eu não vejo como é possível o fato de o BitCoin ser o instrumento de negociação escolhido por criminosos cautelosos ser de alguma forma indicativo de sua fragilidade.

Quanto a negócios legítimos que aceitam BitCoin, dá uma checada nessa página: https://en.bitcoin.it/wiki/Trade. Em particular, compro jogos com BitCoins aqui: JJGames.com. Fora isso, se você for um especulador ou minerado que ganhou algum dinheiro com BitCoin, você pode simplesmente trocá-lo por outra moeda em algum dos sites de câmbio de BitCoins existentes, o único brasileiro não é lá muito ativo: Mercado Bitcoin. O tal valor “virtual” do BitCoin é tão “virtual” quanto o valor de ações da Bovespa, com a diferença que você não precisa de esperar o horário de pregão para vender — funciona direto, inclusive nos finais de semana.

E baseado na afirmação:

“bitcoins e seus entusiastas residem na mágica intersecção de

  • pessoas que não entendem o mercado financeiro,
  • pessoas que não entendem investimentos, e
  • pessoas que não entendem matemática.”

concluo que se as pessoas que fizeram e ainda fazem o BitCoin entendessem tanto de mercado financeiro, investimentos e matemática quando o Sr. Izzy A. Nobre, ele com absoluta certeza não existiria…

Para que serve o software?

August 12, 2010

Atualização: O nome desse post faz com que algumas pessoas cheguem até aqui procurando por uma explicação mais objetiva do propósito de um software, e não a baboseira pseudo-filosófica que constituem o resto desse post; se você for um desses, por favor tente este outro post: Para que realmente serve o software?

De alguma postagem que eu fiz em algum fórum a muito tempo atrás… as alternativas são:

  1. Encher a barriga do programador.
  2. Ser pirateado.
  3. Fazer o computador funcionar.
  4. Facilitar a vida das pessoas.

Todas as alternativas têm seu fundo de verdade, mas prefiro acreditar que as primordiais são 3 e 4. Veja só, o software não foi inventado para deixar o Bill Gates rico, ele nada mais é do que o acessório maior do computador, que no final das contas foi feito para aumentar produtividade/facilitar o trabalho (depende de qual ponta você está enxergando). Daí tiramos a idéia básica de que software é uma ferramenta.

Analisemos as ferramentas em geral: alguém inventa uma ferramenta. Projeta, fabrica em série e vende. O preço final cobrado é, em sua maioria absoluta, o preço da matéria prima e dos custos de produção; o preço do projeto é um investimento cujo o retorno é completamente diluído no preço do produto final. Se você vende muito caro, alguém compra sua ferramenta, copia e vende mais barato (ou mesmo lê a sua patente, que é um documento publico).

Agora ao software: o único custo em se desenvolver o software é o “projeto” (em um sentido mais amplo, não “projeto de software”), pois o custo da produção em série é nulo, ou quase nulo. Software, em sua forma básica, não pode ser vendido, pois não é físico; uma cópia do software é vendida, e seu custo é ínfimo. É desse custo que deriva o preço do software pirata vendido nas ruas. Neste contexto, pela sua natureza especial como ferramenta, um software poderia ter alguma legislação própria, algo como alguma lei de propriedade intelectual específica que regulasse sua exploração por tempo determinado por seu fabricante.

Agora o que ocorre no mundo real. Software não tinha nenhuma regulação legal até que algum infeliz conseguiu inserí-lo na lei de “Copyright” estadunidense. A partir daí, da decisão de algum juiz estrangeiro que não ponderou as diferenças cruciais entre um software e uma obra literária qualquer, a idéia se espalhou pelo mundo e impregnou a nossa consciência: a lei de propriedade intelectual desenvolvida para obras literárias e artísticas também vale para software.

Começaram os abusos amparados pela lei: um software que tem um certo custo para ser produzido e mantido passou a ser vendido muitas vezes mais caro que o seu próprio custo, de modo que mesmo que 80% do software utilizado no mundo fosse pirata, o que foi pago já era suficiente para tornar os donos das empresas de software as pessoas mais ricas do mundo.

Bem, o software livre surgiu concomitante à aplicação da lei de direito autoral ao software: era um movimento dos desenvolvedores de software que viam o absurdo do que estava sendo feito: o software, ferramenta fundamental ao progresso da humanidade, sendo tratado de forma mesquinha para a criação de fortunas particulares, tudo isso amparado pela lei.

Chegamos no estágio que é hoje: as pessoas se esqueceram dos primórdios, a maioria nem tem idade para se lembrar ou não tomou conhecimento/deu a devida importância na época. É óbvio, está na cara, todos vemos que o modo de lucrar com software é patológico. A pirataria é estrutural, necessária e economicamente inexplicável. O software livre, que antes era restrito aos desenvolvedores mais antigos e não passava de birra, na última década contagiou usuários e novos desenvolvedores, na minha humilde opinião, como indicador social da falência do modelo econômico atual do software.