SlideShare uma empresa Scribd logo
1 de 2
Baixar para ler offline
Reflections on Trusting Trust
        Ken Thompson (Kenneth Lane Thompson) é um cientista computacional com titulo de
bacharelado e mestre, ambos em engenharia electrotécnica, na UC Berkeley. Em 1969,
enquanto trabalhava nos laboratórios Bell, Thompson e Dennis Ritchie foram os principais
criadores do sistema operacional UNIX. Enquanto Thompson desenvolvia os primórdios do
UNIX, ele decidiu que o UNIX precisava de uma linguagem de programação e também criou
a linguagem de programação B, uma precursora da linguagem C
        O texto “Reflections on Trusting Trust” foi escrito por Ken Thompson e foi publicado pela
ACM em algumas de suas publicações. A ACM cujo nome é (Association for Computing
Machinery) que em português significa (Associação para Maquinaria da Computação) é uma
sociedade cientifica da computação. Foi fundada em 1947, como a primeira sociedade cientifica
e educacional dedicada à computação.
        A ACM publica várias revistas acadêmicas e também artigos para profissionais da
computação, assim como também distribui vários prêmios, dentre eles o Prêmio Turing que é
considerado o prêmio Nobel da Computação.
        O Prêmio Turing foi dado a Ken Thompson e a Dennis Ritchie em 1983 pelo
desenvolvimento da teoria geral de sistemas operacionais e especialmente pela implementação
do sistema operacional UNIX.
        No texto “Reflections on Trusting Trust” de Thompson, ele inicia agradecendo a ACM
pelo prêmio e também nos advertindo sobre seu trabalho com o sistema operacional Unix,
alegando que não trabalhava com o sistema há alguns anos e que o estado em que o sistema
operacional Unix estava era resultado do trabalho de um grande número de pessoas e apesar
disso, ele ainda recebia merecidas honras por seus feitos.
        Entretanto o artigo cita a segurança de um programa e demonstra através de
explicações que o problema de ter um compilador criado apartir de sua própria linguagem de
programação. Ele usou a linguagem C e demonstrou como é possível criar outro compilador de
linguagem C através de sua própria linguagem, porém um compilador Alterado. Este compilador
alterado como ele mostrou pode conter um cavalo-de-tróia. Demonstrou que o compilador C
pode ser alterado para propagar este comportamento maligno mesmo quando tentar recompilar
o código-fonte (original não alterado) do compilador.
        Se a alteração que ele demonstrou for realizada em outro programa e não for deliberada,
poderá ser chamada de "bug" de compilação. Se for, poderá ser chamado de "cavalo de tróia".
        O bug implantado no compilador poderia incorporar num comando UNIX de "login". O
código modificado poderia alterar a compilação do comando de modo a aceitar uma senha
intencional ou conhecida. Se esse código for instalado em binário e o binário usado para
compilar o comando de login, poderia entrar no sistema como qualquer usuário.
        Como o compilador em si foi um programa compilado, para os usuários seria muito
improvável perceber as instruções de código de máquina que executou essas tarefas
Recentemente (Agosto de 2009) foi publicado um ataque utilizando o conceito descrito
por Thompson, um laboratório chamado Sophos Lab encontrou um arquivo infectado com o
vírus   W32/Induc-A, este arquivo executava um código que procurava por uma instalação do
compilador Delphi e, caso o encontrasse, o alterava. A partir daí todo código gerado por aquele
compilador passaria a incluir o W32/Induc-A em seu código-fonte.
          Felizmente hoje existe um grupo de empresas que criaram o (TCG) Trusting Computing
Group, cujo objetivo inicial era o desenvolvimento de um módulo de computação confiável
(trusting computing module) baseado tanto em hardware como em software, para garantir, a
integridade de código e memória, que apenas código autorizado pudesse rodar na plataforma.
Em 2009 o TCG liberou um conjunto de especificações que descrevem o protocolo para
comunicação com hard-disks auto-encriptáveis.
          As empresas que iniciaram o projeto TCG em 2003 são : AMD, Hewlett-Packard, IBM,
Intel e Microsoft, e hoje mais de 130 empresas são promotores, contribuintes, ou adotantes de
TCG especificações.

Comentários

          Se um usuário tem a preocupação de que o compilador possa estar comprometido, é
melhor evitar usa-lo por completo ao invés de rever o binário em detalhe usando ferramentas.
Um usuário que não tenha sérias preocupações de que o compilador foi comprometido não pode
ser responsabilizado a assumir o trabalho.
          Thompson cita “Não devemos confiar em compiladores que não são de criação própria,
ainda mais de empresas que empregam pessoas como ele”



Referências

http://en.wikipedia.org/wiki/Association_for_Computing_Machinery, visitado em 28/05/2010
http://en.wikipedia.org/wiki/Ken_Thompson , vistado em 28/05/2010
http://en.wikipedia.org/wiki/Reflections_on_Trusting_Trust#Reflections_on_Trusting_Trust,
visitado em 30/05/2010
http://www.acm.org/ , visitado em 30/05/2010
Thomson, K., "Reflections on trusting trust", Communications of the ACM, volume 27, issue 8,
pag. 761 - 763, 1984.

Mais conteúdo relacionado

Mais procurados (9)

So i sabel cruz
So  i sabel cruzSo  i sabel cruz
So i sabel cruz
 
Linux X Windows
Linux X WindowsLinux X Windows
Linux X Windows
 
So
SoSo
So
 
Cent os
Cent osCent os
Cent os
 
Sistemas operacionais linux
Sistemas operacionais linuxSistemas operacionais linux
Sistemas operacionais linux
 
Evolução_dos_sistemas_operativos_open_source
Evolução_dos_sistemas_operativos_open_sourceEvolução_dos_sistemas_operativos_open_source
Evolução_dos_sistemas_operativos_open_source
 
Como escolher um Sistema Operacional
Como escolher um Sistema OperacionalComo escolher um Sistema Operacional
Como escolher um Sistema Operacional
 
Apostila metasploit
Apostila metasploitApostila metasploit
Apostila metasploit
 
Apresentação Final
Apresentação FinalApresentação Final
Apresentação Final
 

Semelhante a Reflections on trusting trust

Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem corvel
 
2010 03 05 Sistemas Operacionais Aula2
2010 03 05 Sistemas Operacionais Aula22010 03 05 Sistemas Operacionais Aula2
2010 03 05 Sistemas Operacionais Aula2Universal.org.mx
 
Histórial dos sistemas operativos e Marcos históricos.pptx
Histórial dos sistemas operativos e Marcos históricos.pptxHistórial dos sistemas operativos e Marcos históricos.pptx
Histórial dos sistemas operativos e Marcos históricos.pptxXaneYT
 
Do Unix ao Linux - Carlos Santos e Fernando Massen
Do Unix ao Linux - Carlos Santos e Fernando MassenDo Unix ao Linux - Carlos Santos e Fernando Massen
Do Unix ao Linux - Carlos Santos e Fernando MassenTchelinux
 
Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01Ivaldo Cardoso
 
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430Texas Instruments
 
Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoMonike Santos
 
REVISAO GERAL DE SO- ofiicial para o simulado.pptx
REVISAO GERAL DE SO- ofiicial para o simulado.pptxREVISAO GERAL DE SO- ofiicial para o simulado.pptx
REVISAO GERAL DE SO- ofiicial para o simulado.pptxTAMARAFRANCIELLEBRIT
 
TA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdfTA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdfSandroPolizelLaurent
 

Semelhante a Reflections on trusting trust (20)

Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
2010 03 05 Sistemas Operacionais Aula2
2010 03 05 Sistemas Operacionais Aula22010 03 05 Sistemas Operacionais Aula2
2010 03 05 Sistemas Operacionais Aula2
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
Histórial dos sistemas operativos e Marcos históricos.pptx
Histórial dos sistemas operativos e Marcos históricos.pptxHistórial dos sistemas operativos e Marcos históricos.pptx
Histórial dos sistemas operativos e Marcos históricos.pptx
 
Aula 08
Aula 08Aula 08
Aula 08
 
Apostila SO
Apostila SOApostila SO
Apostila SO
 
Do Unix ao Linux - Carlos Santos e Fernando Massen
Do Unix ao Linux - Carlos Santos e Fernando MassenDo Unix ao Linux - Carlos Santos e Fernando Massen
Do Unix ao Linux - Carlos Santos e Fernando Massen
 
S.O
S.OS.O
S.O
 
Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01Introdução ao Linux - Aula 01
Introdução ao Linux - Aula 01
 
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430
 
Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a Programação
 
Apostila sobre sistema operativo
Apostila sobre   sistema operativoApostila sobre   sistema operativo
Apostila sobre sistema operativo
 
Sistemas Mac OS
Sistemas Mac OSSistemas Mac OS
Sistemas Mac OS
 
U N I X
U N I XU N I X
U N I X
 
Apostila sobre sistema operativo
Apostila sobre   sistema operativoApostila sobre   sistema operativo
Apostila sobre sistema operativo
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
REVISAO GERAL DE SO- ofiicial para o simulado.pptx
REVISAO GERAL DE SO- ofiicial para o simulado.pptxREVISAO GERAL DE SO- ofiicial para o simulado.pptx
REVISAO GERAL DE SO- ofiicial para o simulado.pptx
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
Historia Sistema Operacional Linux
Historia Sistema Operacional LinuxHistoria Sistema Operacional Linux
Historia Sistema Operacional Linux
 
TA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdfTA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdf
 

Reflections on trusting trust

  • 1. Reflections on Trusting Trust Ken Thompson (Kenneth Lane Thompson) é um cientista computacional com titulo de bacharelado e mestre, ambos em engenharia electrotécnica, na UC Berkeley. Em 1969, enquanto trabalhava nos laboratórios Bell, Thompson e Dennis Ritchie foram os principais criadores do sistema operacional UNIX. Enquanto Thompson desenvolvia os primórdios do UNIX, ele decidiu que o UNIX precisava de uma linguagem de programação e também criou a linguagem de programação B, uma precursora da linguagem C O texto “Reflections on Trusting Trust” foi escrito por Ken Thompson e foi publicado pela ACM em algumas de suas publicações. A ACM cujo nome é (Association for Computing Machinery) que em português significa (Associação para Maquinaria da Computação) é uma sociedade cientifica da computação. Foi fundada em 1947, como a primeira sociedade cientifica e educacional dedicada à computação. A ACM publica várias revistas acadêmicas e também artigos para profissionais da computação, assim como também distribui vários prêmios, dentre eles o Prêmio Turing que é considerado o prêmio Nobel da Computação. O Prêmio Turing foi dado a Ken Thompson e a Dennis Ritchie em 1983 pelo desenvolvimento da teoria geral de sistemas operacionais e especialmente pela implementação do sistema operacional UNIX. No texto “Reflections on Trusting Trust” de Thompson, ele inicia agradecendo a ACM pelo prêmio e também nos advertindo sobre seu trabalho com o sistema operacional Unix, alegando que não trabalhava com o sistema há alguns anos e que o estado em que o sistema operacional Unix estava era resultado do trabalho de um grande número de pessoas e apesar disso, ele ainda recebia merecidas honras por seus feitos. Entretanto o artigo cita a segurança de um programa e demonstra através de explicações que o problema de ter um compilador criado apartir de sua própria linguagem de programação. Ele usou a linguagem C e demonstrou como é possível criar outro compilador de linguagem C através de sua própria linguagem, porém um compilador Alterado. Este compilador alterado como ele mostrou pode conter um cavalo-de-tróia. Demonstrou que o compilador C pode ser alterado para propagar este comportamento maligno mesmo quando tentar recompilar o código-fonte (original não alterado) do compilador. Se a alteração que ele demonstrou for realizada em outro programa e não for deliberada, poderá ser chamada de "bug" de compilação. Se for, poderá ser chamado de "cavalo de tróia". O bug implantado no compilador poderia incorporar num comando UNIX de "login". O código modificado poderia alterar a compilação do comando de modo a aceitar uma senha intencional ou conhecida. Se esse código for instalado em binário e o binário usado para compilar o comando de login, poderia entrar no sistema como qualquer usuário. Como o compilador em si foi um programa compilado, para os usuários seria muito improvável perceber as instruções de código de máquina que executou essas tarefas
  • 2. Recentemente (Agosto de 2009) foi publicado um ataque utilizando o conceito descrito por Thompson, um laboratório chamado Sophos Lab encontrou um arquivo infectado com o vírus W32/Induc-A, este arquivo executava um código que procurava por uma instalação do compilador Delphi e, caso o encontrasse, o alterava. A partir daí todo código gerado por aquele compilador passaria a incluir o W32/Induc-A em seu código-fonte. Felizmente hoje existe um grupo de empresas que criaram o (TCG) Trusting Computing Group, cujo objetivo inicial era o desenvolvimento de um módulo de computação confiável (trusting computing module) baseado tanto em hardware como em software, para garantir, a integridade de código e memória, que apenas código autorizado pudesse rodar na plataforma. Em 2009 o TCG liberou um conjunto de especificações que descrevem o protocolo para comunicação com hard-disks auto-encriptáveis. As empresas que iniciaram o projeto TCG em 2003 são : AMD, Hewlett-Packard, IBM, Intel e Microsoft, e hoje mais de 130 empresas são promotores, contribuintes, ou adotantes de TCG especificações. Comentários Se um usuário tem a preocupação de que o compilador possa estar comprometido, é melhor evitar usa-lo por completo ao invés de rever o binário em detalhe usando ferramentas. Um usuário que não tenha sérias preocupações de que o compilador foi comprometido não pode ser responsabilizado a assumir o trabalho. Thompson cita “Não devemos confiar em compiladores que não são de criação própria, ainda mais de empresas que empregam pessoas como ele” Referências http://en.wikipedia.org/wiki/Association_for_Computing_Machinery, visitado em 28/05/2010 http://en.wikipedia.org/wiki/Ken_Thompson , vistado em 28/05/2010 http://en.wikipedia.org/wiki/Reflections_on_Trusting_Trust#Reflections_on_Trusting_Trust, visitado em 30/05/2010 http://www.acm.org/ , visitado em 30/05/2010 Thomson, K., "Reflections on trusting trust", Communications of the ACM, volume 27, issue 8, pag. 761 - 763, 1984.