Segurança com Software Livre
Entrevista a André Gardini,
sobre Segurança de Software livre
Para reportagem na Revista ComCiência
Laboratório de Estudos em Jornalismo Científico da Unicamp
Prof. Pedro Antonio Dourado de Rezende
Departamento de Ciência da Computação
Universidade de Brasília
23 de Maio de 2004
André Gardini: 1- “Um modelo se guia por critérios sociais, enquanto o outro, por critérios capitalistas” [Software Livre, Mídia e Opiniões. Observatório da Imprensa– 27/04/04]. O movimento do software livre se dá de baixo para cima. Podemos considerar o software livre uma ameaça real ao monopólio da Microsoft?Quanto ao software livre, seria melhor considerá-lo antes como uma reação a este estado de coisas. A Microsoft, se quisesse, poderia tentar ganhar dinheiro com software livre, como fazem a IBM, a HP, e a Novell, que também fornecem software proprietário. Pelo que não seria legítimo considerar o modelo livre uma ameaça a empresa alguma, principalmente às que se dispõem a acompanhar a evolução do mundo.
Pedro Rezende: O que ameaça o monopólio da Microsoft, na verdade, são leis antitrust. Pelas leis norte americanas e européias, o monopólio em si não é crime, mas o abuso do poder econômico a partir de posições monopolistas, sim. A empresa foi condenada -- nos EUA em última instância e na Europa em primeira -- justamente por isso, mas as penas aplicadas não funcionam como desestímulo, por serem brandas em relação ao que ela pode lucrar violando-as.
O movimento do software livre pode ser considerado, em seu próprio mérito, como a fruição da mais nova etapa evolutiva das formas do saber e da propagação do conhecimento, possibilitadas pela revolução digital. Formas de se fazer software com eficiência, economia e autonomia dos interessados em seu uso. Penso, portanto, que a pergunta está invertida, e invertida só serve ao sensacionalismo. O monopólio da Microsoft é que deve ser considerado uma ameaça real. Não diretamente pelos seus negócios, mas pelo seu poder de lobby sobre Estados.
Pela forma como vem assim agindo, ela ameaça a liberdade do cidadão controlar as condições da sua própria comunicação digital, cada vez mais entranhada à sua identidade civil. Identidade esta cada vez mais refém, por isso, de um regime de propriedade intelectual cada vez mais radical, esotérico e dogmático, onde 60 mil dólares e um sofisticado discurso legalês patenteiam praticamente qualquer coisa. De idéias por trás de trechos de programas, inclusive publicadas há mais de 2000 anos, a modelos de negócio. Tal qual os indultos papais que antes vendiam proteção divina à alma contra riscos infernais, as patentes esotéricas hoje vendem proteção jurídica ao investimento especulativo, contra quem esteja no caminho dos seus lucros.
Se a Microsoft prefere manter todos os seus ovos no cesto do modelo proprietário, e bancar uma luta titânica contra a marcha do tempo, ela mesma pode ser considerada uma ameaça ao seu próprio poder no futuro.
AG: 2- A aceitação crescente de países como o Brasil ao modelo livre desperta uma discussão sobre segurança dos softwares livres. Operações do governo que produz informações sigilosas como o projeto SIPAM, bancos, empresas, etc... É seguro usar um software que tem seu código fonte aberto?
PR: Estou supondo que a pergunta se refira à segurança de quem usa, e não a de quem vende licenças de software. Se for este o sentido da pergunta, e à luz dos exemplos apresentados, comecemos por observar que o sigilo da informação manipulada por um software é independente do sigilo dos métodos que o software emprega para proteger aquele.
Métodos criptográficos rudimentares podem ligar um sigilo a outro, mas o estado atual da ciência criptográfica os tornam independentes. Todo o sigilo necessário a esta proteção pode ser concentrado em apenas uma das chaves criptográficas -- a chave privada, que não faz parte do mecanismo --, e desta, transferido à informação. Por outro lado, o dono da informação só pode ter certeza do sigilo da mesma se puder aquilatar a eficácia dos métodos empregados pelo software para proteger tal sigilo.
Como já disse, se um potencial criminoso conhecer tais métodos, isto pode em nada afetar a qualidade da proteção que o software oferece ao sigilo da informação manipulada, se os métodos forem adequados e as chaves adequadamente protegidas. Enquanto, ao revés, se o usuário não puder conhecer tais métodos, isto pode afetar a qualidade da proteção, ao promover o desleixo no fornecedor do software, tentações nele ou em quem detenha informação privilegiada acerca de eventuais vulnerabilidades na sua implementação, e outras mazelas que decorrem da obuscuridade.
Dentre elas, a tentação para lucrar ou trafegar influência com impunidade, a partir de uma posição de poder, em conluio com potenciais parceiros interessados em quebrar o sigilo dos usuários do software. Como exemplo, há o caso clássico das portas de fundo do Windows NT, que discuto em http://www.pedro.jmrezende.com.br/trabs/freesoft.htm, e as do XP, que a empresa Futurepower discute em http://www.hevanet.com/peace/microsoft.htm
Quem, no governo, especificasse o XP para o SIVAM, por exemplo, deveria ser processado por traição se a Constituição fosse levada a sério. Enquanto o marketing do status quo quer nos fazer acreditar no contrário, ou seja, que isto deveria ocorrer se a especificação resultar noutra escolha. A relação entre as dois objetos da sua pergunta, isto é, entre a segurança de quem usa e o acesso ao código fonte, precisa ser corretamente compreendida, para se evitar a continuação dos danos causados pelo medo que vem sendo insuflado no leigo pela propaganda enganosa da maioria das grandes empresas fornecedoras de software.
No sentido empregado por sua pergunta, ninguém usa software em formato código-fonte. Quem usa software nesse sentido, usa-o em formato executável. O processo de tradução do código fonte para código capaz de executar numa plataforma computacional específica, onde se pretende usá-lo, chama-se compilação. O que resulta desse processo é comumente chamado de build. De sua parte, o código fonte é inteligível a programadores e ao software compilador, enquanto o código executável é inteligível à plataforma-alvo, constituída pelo computador e outros programas que intermedeiam sua interação com o hardware.
Se tentarmos entender o processo com a ajuda de uma metáfora, veremos que a versão código-fonte de um software se assemelha ao genoma de uma espécie biológica. Um build para uma plataforma específica corresponde a uma sub espécie, ou família, adaptada ao nicho ecológico representado por este modelo de plataforma, enquanto uma instalação deste build assemelha-se a um espécimen, um exemplar ou indivíduo, desta espécie.
Assim, instalar um exemplar de software é como procriar um indivíduo de uma espécie nalgum hardware em que possa "viver". Quem precisa usar o software, o fará através de uma tal cria. Quem precisa cuidar de uma instalação, normalmente quem vai usá-la, precisa protegê-la contra "doenças". E quem precisa instalar, terá que fazer escolhas. A primeira escolha é sobre o tipo de software. A que propósito se destina o software cuja instalação se deseja? Esta corresponde à escolha de uma espécie, dentro de um gênero.
A segunda escolha é sobre o método de procriação. Instala-se "por clonagem", a partir de um build já pronto, ou "por cruzamento", compilando-se o código fonte para a plataforma alvo, gerando-se um build específico. Quem opta pelo segundo método terá acesso à lógica interna do software a ser instalado, manifesta em seu código fonte. Enquanto quem opta pelo primeiro, só terá acesso àquilo que lhe quiser manifestar a versão executável do software, através do seu funcionamento (como em sua interface gráfica, por exemplo).
Na primeira escolha, a inteligência do programador que fez o software e a de quem produz o build se cruzam. Quem constrói o build, tendo acesso ao código fonte, poderá não só tomar conhecimento do que o software estará fazendo por detrás das telas, como também selecionar, adaptar ou modificar componentes para a sua instalação, conforme as necessidades, prioridades e interesses de quem irá usá-la.
Para softwares distribuídos com licença livre, o construtor de um build -- qualquer pessoa ou empresa -- é normalmente chamado de distribuidor o usuário tem opções. Tanto de escolher seu distribuidor, quando de se tornar o seu próprio. No caso do sistema operacional GNU/Linux, existem hoje mais de 200 distribuições públicas independentes, com variados graus de comercialização. Ao escolher uma espécie livre de software da qual deseja ser usuário, quem assim escolhe terá proteção de fato, oferecida pelo monopólio da liberdade de conhecimento, contra possíveis interesses comerciais ou semiológicos que se antagonizem com os seus. E pode, não obstante, optar pela instalação por clonagem, tal qual faria no modelo proprietário, mas podendo ainda escolher entre distribuidores independentes.
Para softwares distribuídos com licença proprietária, entretanto, o método de instalação por cruzamento é terminantemente vedado. No modelo proprietário o código fonte é tratado como segredo de negócio do fornecedor, e o único método de instalação disponível é por clonagem, mesmo com acesso ao código-fonte. A clonagem é controlada por um esquema cartorial de distribuições credenciadas, e por uma licença de uso draconiana, geralmente onerosa. Ao escolher um tal software, o usuário se vincula a monolíticos interesses e ao modus negociandi do fornecedor, quase sempre um monopólio industrial que compra dos programadores os direitos de autoria, em troca de salário.
Como segurança é um conceito subjetivo, a pergunta que estou tentando responder merece permanecer irrespondida. Há quem teme a liberdade, preferindo a segurança de um cativeiro semiológico, onde confiança cega no fornecedor de software é "cobrada" por este, e a ele oferecida por clientes sem nenhuma contrapartida, com base apenas na "força da marca". A primeira pergunta desta entrevista, se o software livre pode ser considerado ameaça real à Microsoft, já conota esta cobrança. Há também os que desenvolvem a síndrome do seqüestrado: empatia pelo dominador e hostilidade irracional contra quem lhe oferece liberdade. Se o software livre for ameaça real, não será à Microsoft em si, mas ao jugo semiológico que a empresa impõe na relação com seus clientes, através dos termos em que licencia seus produtos.
A alternativa a esse jugo não deseja, como acusam alguns acomodados no cativeiro ou vitimados pela versão digital da síndrome do sequestrado, forçar usuários leigos a conhecerem a lógica do software que irá intermediar sua comunicação digital. Este conhecimento está quase sempre fora do seu alcance cognitivo. Deseja, entretanto, assegurar-lhes o direito a este conhecimento. Uma das principais razões para isso é que esse direito também funciona como eficaz controle contra abusos de poder, que este conhecimento pode proporcionar a quem o detém. Esse direito implica no do usuário poder escolher em quem confiar.
No mais, qualquer exemplar de software instalado requer cuidados contra doenças digitais, independentemente de como foi procriado. Voltando à sua pergunta: se Alice pode fazer sua própria distribuição da espécie de software da qual Bob tem um exemplar instalado em seu computador, isso não facilita a vida de Alice em relação a suas possíveis más intenções contra Bob. Pelo contrário.
Se o distribuidor de Bob, com a ajuda da sua comunidade, souber procriar builds robustos, e se Bob souber cuidar bem do seu exemplar, Alice estará em desvantagem, já que, havendo transparência e, com ela, algo a se ganhar através da cooperação, haverão mais pessoas compartilhando o conhecimento para o bem do que para o mal, nenhuma dessas com poder suficiente para desequilibrar.
Até mesmo por coerência, se não por hábito, um pingüinista não vai deixar qualquer software desconhecido sair fuçando em seu disco rígido, como aceitam passivamente, pelo menos em relação ao fornecedor, aqueles que concordam com a licença do Windows XP, ou os que o pirateiam sem se incomodar. Uma questão aqui importante é: como podem eles identificar remotamente o fornecedor, ou mesmo suas verdadeiras intenções? A assinatura digital, principalmente em ambiente promíscuo, não é nenhuma panacéia, como restou provado no caso de emissão falsa de certificado pela Verisign em nome da Microsoft, em janeiro de 2002. Daí, novamente, a importância do direito do usuário escolher em que pode confiar, como fulcro para o equilíbrio de riscos e responsabilidades na esfera digital.
Finalmente, o estado atual do mundo dos bits parece evidenciar fortemente duas conclusões. A da eficácia do poder de abuso do conhecimento, havendo oportunidade, e a da eficácia do seu controle através da transparência e da cooperação, havendo necessidade.
AG: 3- O pesquisador Dan Geer escreveu alguns artigos comparando a pouca variabilidade genética em softwares com a propagação de pragas. O software livre é pouco atacado por vírus. Isso acontece por que são livres ou por que são poucos comuns?
Isso acontece por razões que também resvalam em aspectos levantados na resposta anterior. Com ajuda da metáfora biológica, Dan Geer examina os efeitos que o sucesso da tendência, natural no modelo proprietário, -- o monopolismo econômico -- produz nas arquiteturas de software. Ele observa, por exemplo, que a diversidade decorrente do modelo livre impede a concentração de poder destrutivo no conhecimento de vulnerabilidades. Enquanto eu me atenho aos efeitos no plano semiológico, onde o software cumpre o papel de intermediador da comunicação e da inteligência humanas em meio digital.
Quanto à alternativa que você oferece, alternativa que tem sido oferecida pelo marketing do status quo como "explicação" para a crescente bandalheira no mundo digital, e, como tal, repetida mecanicamente por jornalistas preguiçosos, incautos, despreparados ou mancomunados, é preciso compreender sua natureza falaciosa.
Uma tal explicação trivializa um assunto complexo, a merecer análises muito mais elaboradas do que o tipo de estatística que se faz no jardim de infância. A partir desta infantilidade, o primeiro desdobramento demográfico com tal estatística já revela sua primeira falácia. Riscos digitais não são como gatos pardos na noite, como pode a ignorância informática sugerir. Um primeiro desdobramento da questão, de que há riscos e riscos, deve levar em conta o fato de que riscos, vulnerabilidades e métodos de ataques são específicos para distintos tipos de software.
Por isso, no contexto da análise de segurança, é falso e enganoso afirmar que softwares livres são pouco comuns. Entre os softwares que funcionam como clientes nos desktops, os softwares proprietários são de fato mais comuns, mas entre os softwares que funcionam como servidores na internet, ocorre justamente o contrário. Afinal, a internet só surgiu, e se pensarmos bem só poderia ter surgido, dentro do modelo livre.
O servidor de páginas web mais utilizado no mundo hoje é um software livre, o Apache, com cerca de 62% das instalações. O equivalente proprietário mais usado, o IIS da Microsoft, alcança hoje cerca de 20% dos servidores. Entretanto, assim como no desktop, a grande maioria dos ataques bem sucedidos a servidores web -- cerca de 80%-- vitimam o IIS, de acordo com as estatísticas compiladas pelo CERT, Computer Emergency Response Team. O Gartner Group chegou a recomendar, em 2001, que as empresas não usassem o IIS. Sua cabeça no gelo e seus pés em água fervente lhe dão uma média -- mas não uma sensação -- confortável.
GD: 4- Quais são os casos de ataques de vírus no software livre? Como foram combatidos? Que estragos fizeram?
Peço que me informe sobre tais ataques, pois os desconheço. E até onde posso saber, trata-se de lenda urbana.
Os ataques sérios a software livre de que tenho notícia são uma ou outra tentativa de se inserir instruções maliciosas em código fonte armazenado nalgum acervo-matriz, detectados em poucos dias, com seus possíveis efeitos totalmente rastreados, não causando estrago algum além da perda de tempo de mantenendores e instaladores de distribuições. Pode-se procurar pela histórico desses incidentes nos próprios repositórios, como por exemplo, no site da free software foundation (http://www.fsf.org)
No mais, os softwares livres que ganharam a corrida da seleção natural, guiada pela preferência do usuário, tem sua arquitetura projetada não só para facilitar a sua evolução modular, como também para dificultar embustes de outros softwares contra seu funcionamento, embustes que não possam ser neutralizados ou detectados.
Os vírus que você vê infernizando a internet, deitando e rolando em plataformas Windows, não infectam máquinas com GNU/Linux porque teriam ali muito mais trabalho a fazer. O Netsky por exemplo, que tem seu próprio mecanismo smtp, mesmo não precisando por isso fazer uso do cliente de email da vítima para se propagar, precisa do catálogo de endereços mantido por este, e isso ele consegue com um pequeno script em VBasic, linguagem nativa do Windows.
Quando, no meio da década passada, a Microsoft decidiu adotar um dialeto desta mesma linguagem para conteúdo ativo de suas aplicações web (Internet Explorer e Outlook Express), o que veio a chamar de Active scripting, ela derrubou com isso a fronteira entre o público e o privado nas suas plataformas. Deve tê-lo feito por razões estratégicas, ao chegar atrasada na onda da internet, em cujo sucesso não acreditou inicialmente, por ser "uma coisa sem dono".
Deve tê-lo feito pensando em proteger o seu negócio, evitando a dissipação de um contingente de cerca de 8 milhões de programadores treinados na sua plataforma DOS, que debandariam para as novas plataformas de middleware. E já de olho em mais uma dose do vício do qual parece incapaz de largar, o de adotar padrões abertos -- no caso, extensões da linguagem html -- para depois modificá-los sorrateira e gradualmente em suas implementações, levando concorrentes a asfixiarem-se sob o peso do seu "padrão de mercado". Talvez tenha menosprezado os riscos decorrentes por julgar que poderia esconder, no seu código fonte secreto, a lógica com que o Windows distingue scripts que vem de fora de instruções que vem de dentro. Idéia que seria tanto estúpida quanto indefensável.
Ou talvez tenha simplesmente desprezado a segurança do usuário, tratando-a como assunto de marketing, a ser resolvido com verba publicitária a partir da sua posição contratual dominante. Conjectura evidenciada num fato vindo à tona com a epidemia do vírus ILoveYou, mas totalmente ignorado pela grande mídia: o de que a interpretação automática desses scripts continuava saindo configurada "de fábrica" no Outlook Express, mesmo depois da epidemia do Melissa. Segundo depoimento de executivos da empresa a uma comissão do Congresso norte americano, para atender a uma funcionalidade que poderia beneficiar cerca de 4% dos seus clientes, apenas.
O efeito disso, dez anos depois, é o que está aí. Não se deve menosprezar a inteligência e a capacidade dos programadores da empresa, mas tampouco se deve desprezar a força embrutecedora com que a avareza associada ao poder atuam sobre as mesmas.
Os detalhes são tediosos, e sistematicamente ignorados na grande mídia, mas vou citar uma pingüinista que frequenta comigo uma lista de software livre, pelo didatismo. Não tendo nenhuma linguagem de conteúdo ativo na web controlando seus processos internos, máquinas com GNU/Linux não podem ser direta e automaticamente afetadas por vírus de internet. Os vírus teriam que ser implantados.
Para implantar um vírus numa máquina com GNU/Linux, seria necessário intervenção humana. Primeiro, para explorar uma falha de segurança na máquina, ganhar o status de root (administrador). E só depois disso colocar o vírus pra funcionar. Não esquecendo, é claro, de limpar os logs para apagar o rastro.
Infecção automática no GNU/Linux, da forma como acontece no Windows, ainda é lenda urbana. E é bom lembrar que as falhas de segurança em ambientes Linux, Unix, e outros semelhantes, em 99% dos casos são na verdade falta de atenção ou mesmo competência dos administradores de rede.
AG: 5- É mais fácil combater vírus em software livre do que nos proprietários? Por que?
Sim, porque, no modelo livre, os interesses que movem aqueles que programam, fazendo evoluir o software, não prosperam quando se opõem aos verdadeiros interesses dos usuários. Usuários de software livre formam redes, ou comunidades, e participam das discussões sobre como e porque o software deve ser modificado para incluir ou excluir isso ou aquilo. O debate é franco e transparente, às vezes áspero e apaixonado. Os argumentos são técnicos ou semiológicos, e neles a segurança do usuário nunca sai do foco. Se o software é ruim a comunidade em torno dele morre; e se for bom viceja, com ou sem investimentos de risco.
Além disso, o código-fonte oficial, de onde se derivam os builds, e os fontes das principais distribuições, são extremamente bem vigiados, pois o são por vários interessados. Qualquer um que participa tem a chance e a oportunidade não só de acrescentar alterações aprovadas pelo processo que coordena a evolução do software, mas também de detectar tentativas de alterações furtivas, por meio do uso e verificação de idexadores com hash criptográfico. Tentativas já ocorridas foram prontamente detectadas e neutralizadas, falhas reportadas são dissecadas e corrigidas ao vivo, geralmente (as realmente graves) em menos de uma semana.
No modelo proprietário, detalhes sobre invasões ao repositório de código-fonte são abafados, programadores fazem o que o chefe manda, remendos raramente funcionam como anunciados, alguns depois de meses ou até anos de negaceio, ou de várias tentativas. A questão da segurança é ofuscada pela confusão propositada entre a dos usuários e a do negócio do fornecedor, o debate em torno da questão é conduzido pelo marketing deste, sob as condições de submissão impostas àqueles pelos vínculos contratuais da licença de uso, e com vários truques estatísticos. Como por exemplo, escolher a dedo o tipo de vulnerabilidade sobre o qual divulgam estatísticas "provando" que o sofware deles é mais seguro. No caso da empresa em foco, com acesso a conta corrente de mais de 50 bilhões de dólares de saldo.
Doutra feita, esta empresa pode ter vários motivos para não gastar este dinheiro consertando seus produtos. Primeiro, a vulnerabilidade das arquiteturas dos mesmos decorre do acúmulo de decisões de projeto que contemplaram antes a segurança do negócio, relevando a do usuário, e que, combinadas, amplificam-se a ponto de torná-las praticamente indefensáveis. Comento isto em http://www.pedro.jmrezende.com.br/trabs/imunizando.htm
Segundo, pode não ser do seu interesse. Parece que o totalitarismo semiológico do projeto de lei CBDPTA é aposta estratégica da empresa. E as leis semiológicas que Goëbels testou e aprimorou na máquina de propaganda nazista, são conhecidas do seu marketing. Quanto mais avacalhado e perigoso estiver o ambiente digital, mais fácil convencer legisladores e opinião pública a aceitar a "solução final". A culpa, claro, será toda dos hackers, como terá sido a dos recrutas torturadores e seviciadores de Abu-Ghraib.
De acordo com o CBDPTA, que está em trâmite no Senado norte americano e cuja universalização jurisdicional vem sendo preparada, pelo lobby da propriedade intelectual "forte", nos fóruns de negociação de tratados de "livre comércio" em todo o planeta, teríamos todos que nos submeter a um regime global de controle de acesso do software ao hardware, para obtermos a tão ansiosamente aguardada solução final da segurança. Assim mesmo:"segurança" sem complemento nominal, da mesma forma como você conjuga em suas perguntas, estando já todos adestrados para confundir a própria com a do Grande Irmão.
Neste regime, será proibido fabricar e comercializar, e depois usar, hardware que não inclua mecanismo autenticatório capaz de impedir a execução de qualquer software que não tenha sido digitalmente assinado como "confiável". Assinado por quem? Ainda não está claro, nem no projeto nem no lobby. Talvez pelo Grande Irmão. O de Orwell, não o da Globo.
v 2.0 - revisada em 2.1.06