quinta-feira, 1 de julho de 2010

Reflections on Trusting Trust by Ken Thompson

Ken Thompson recebeu o prêmio Turing pela ACM (Association for Computing Machinery) em 1983 pelo desenvolvimento da teoria de sistemas operacionais e pela implementação do sistema operacional UNIX. O autor se auto-denomina um programador, e em três etapas descreve a criação de um trojan. Um programa que se auto-replica, através de um compilador

Na primeira etapa o autor descreve a criação de um programa que se auto-replique. Na segunda etapa, o autor utiliza o exemplo do compilador C, desenvolvido em liguagem C para demonstrar que existem falhas sobre como compilar em C um novo compilador com instruções diferentes. Haveria inconsistências, uma vez que o compilador original não reconhecerá as novas instruções, o que leva a alterações em mais baixo nível no compilador original, possibilitando que ele seja compilado. Na etapa 3, o autor apresenta a introdução de código malicioso no novo compilador, o qual descompila o comando “login” e o compila novamente para aceitar uma senha mestra, além da senha correta. Se o código malicioso for auto-replicante e atacar o código-fonte de um compilador, é possível utilizar o binário malicioso como original e apagar o código fonte malicioso, não deixando rastros. Desta forma, teríamos um código-fonte limpo e um binário malicioso, que se auto-replicaria a cada compilação.

O autor chega à conclusão de que não se pode confiar em códigos não escritos por você mesmo, não importando o nível de verificação de códigos-fonte podem nos assegurar quando se utiliza códigos não confiáveis. À medida que o nível dos códigos abaixa (compilador, assembler, liguagem de montagem, carregador ou mesmo microcódigo de hardware), mais difícil é a detecção de possíveis “bugs”.

Por fim, o artigo conclui que a segurança fica comprometida quanto mais dependermos de códigos de terceiros. Ken afirma que apenas um código desenvolvido por você mesmo pode ser dito como um código confiável. O autor também enfatiza que o acesso não autorizado a computadores alheios é crime e deve ser levado a sério.

Pontos Principais do Artigo

  • Não existe código confiável, exceto o de sua autoria;
  • À medida em que o nível dos códigos-fonte diminui, mais difícil é a detecção de código malicioso;
  • Ainda no ano de 1984 o autor já alertava sobre as falhas nos códigos penais a respeito de crimes digitais, e ainda alertava sobre a gestação de uma “situação explosiva”.


Referência


[1] Thompson, Ken. Reflections on Trusting Trust.Communications of the ACM, 1984, vol. 27, n. 8, 761-763. Disponível em: http://portal.acm.org/citation.cfm?id=358210.

Nenhum comentário: