A engenharia reversa ou engenharia reversa ou reversa , é a atividade de estudar um objeto para determinar seu funcionamento interno, o método de fabricação e pode ser do interesse da mudança. Também falamos de design reverso no campo dos organismos vivos. O termo equivalente em inglês é engenharia reversa .
Pode ser:
Dependendo da natureza do objeto e do objetivo perseguido, vários métodos e técnicas são usados.
O princípio da engenharia reversa é baseado na coleta de uma nuvem de pontos da superfície do objeto a ser digitalizada (usando um scanner tridimensional ) ou palpada mecanicamente.
Esta nuvem de pontos é processada por funções CAD (Computer Aided Design) permitindo a reconstrução de superfícies a partir das quais um modelo paramétrico é definido pelo usuário e pelo sistema gerador (escolha de dimensões e relações interdimensionais, tolerância, etc.)
A árvore de construção é, portanto, redefinido em sua parte principal.
Este método é aplicável apenas para objetos CAD “fabricáveis” porque apenas as operações de design não virtual (extrusão, através do orifício ...) e de manufatura (encolhimento, tolerâncias ...) são potencialmente aceitáveis para a reprodução física do objeto.
Quais são os diferentes motivos para usar a engenharia reversa?
Consiste na reconstrução de um diagrama eletrônico funcional por meio da análise das conexões de um circuito impresso ou do desenho das máscaras de um circuito integrado. Também é possível, em certos dispositivos computadorizados, recuperar o código de montagem de seu firmware . O código-fonte é então produzido a partir da imagem da memória desses componentes. Isso é chamado de desmontagem . Às vezes é possível dialogar com um objeto através de links deixados ao critério da unidade (interfaces seriais, JTAG, ICSP, etc.).
A engenharia reversa também se aplica ao software . Isso pode ser feito usando ferramentas de análise como o desmontador ou o descompilador . Os métodos usados são semelhantes à depuração .
O projeto Samba é um exemplo típico de engenharia reversa. A equipe teve que determinar como funciona o compartilhamento de recursos de rede do sistema operacional Microsoft Windows sem ter acesso às especificações técnicas oficiais. Portanto, eles tiveram que determiná-los e, em seguida, traduzi-los em um programa de computador. O mesmo é verdadeiro para o sistema de arquivos NTFS .
A engenharia reversa de software é frequentemente aplicada a estruturas de dados : neste caso, envolve a documentação de estruturas de dados físicos insuficientemente ou mal documentadas ( aplicativos antigos). Tentamos reconstruir um modelo de dados a partir das estruturas físicas de arquivos ou tabelas .
A engenharia reversa de software foi popularizada com o uso indevido das proteções anticópia de videogames . Essa atividade é chamada de craqueamento .
Para escrever drivers para certos periféricos (webcam, scanner, etc.), os desenvolvedores de software livre muitas vezes são forçados a fazer a engenharia reversa do driver interceptando as trocas entre o chip e o driver, descobrindo assim como dialogar com o chip. É então uma questão de simular o driver, então de fazer melhor ( cf. driver da webcam do Linux spca, pwc, etc. ). Um exemplo é o projeto Nouveau para produzir drivers 3D gratuitos para placas gráficas NVIDIA ou radeonHD , um projeto semelhante para placas gráficas ATI Radeon HD.
Na criptografia , a engenharia reversa assume várias formas com ataques criptanalíticos . O objetivo é extrair informações secretas da "caixa preta" que simboliza o procedimento de criptografia. Esses tipos de ataques são chamados de ataques de canal lateral . Acredita-se também que a engenharia reversa esteja por trás do vazamento dos algoritmos RC2 e RC4 que foram lançados na Internet por meio do grupo de notícias sci.crypt . O algoritmo Arcfour também é um clone do RC4.
Muitos fornecedores de software proprietário incluem cláusulas em seus EULAs que proíbem a engenharia reversa. No entanto, em muitos países a engenharia reversa é permitida por lei, especialmente para fins de interoperabilidade . Nestes países, as cláusulas destes EULAs não são válidas ou, no máximo, estão dentro dos limites determinados por lei.
Na França, a lei estabelece um quadro jurídico restritivo para a engenharia reversa, para o qual exceções específicas são definidas no artigo L122-6-1 do Código de Propriedade Intelectual, sendo esse quadro parcialmente derivado do direito europeu ( ver abaixo ).
Linguagens de programação semi-compiladas (compiladas em código binário interpretado por uma máquina virtual), como Java e .NET, tornam a engenharia reversa mais fácil.
Assim, a engenharia reversa de arquivos binários executáveis destinados à plataforma Java pode ser realizada com o programa ArgoUML .
Para programas .NET, a Microsoft fornece ILDASM como padrão e também existem descompiladores .NET.
A engenharia reversa também é uma atividade de observação de tecnologia . É orientado para:
Diretiva do Conselho 91/250 / EEC, de14 de maio de 1991, no que se refere à protecção jurídica dos programas de computador, dispõe de um artigo 6.º, Descompilação, que será posteriormente transposto na sua maior parte para os artigos L122-6 e L122-6-1 do Código da Propriedade Intelectual , pela Lei n.º 94- 36110 de maio de 1994 implementação da Diretiva (CEE) n ° 91-250 do Conselho das Comunidades Européias datada de 14 de maio de 1991relativo à proteção legal de programas de computador e modificação do código de propriedade intelectual .
O artigo L122-6 especifica que traduzir a forma do código de um software é parte do direito de exploração pertencente ao autor de um software (incluindo, conforme indicado pelo artigo L335-3 do mesmo código, a violação por terceiros é comparável a um infracção de contrafacção), e não é possível, sem autorização e de forma não executória contratualmente, por terceiros, salvo no caso explicado pelo artigo L122-6 -1 do Código da Propriedade Intelectual, especificando um certo número de condições, incluindo que "estes atos [são] limitados às partes do software original necessárias para" "a interoperabilidade do software criado de forma independente com 'outro software', sem" As informações assim obtidas [não sendo] "" usadas para outros fins que não alcançar a interoperabilidade do software criado de forma independente "," Nem comunicado a terceiros, a menos que seja necessário para a interoperabilidade do software criado de forma independente "," Nenhum dos dois utilizados para o um desenvolvimento, produção ou comercialização de software cuja expressão seja substancialmente semelhante ou por qualquer outro ato que infrinja direitos autorais ”, enquanto relembrando que“ Este artigo não pode ser interpretado como permitindo interferir no funcionamento normal do software ou causar prejuízo indevido aos interesses legítimos de o autor ".
Além da tradução da forma do código, este artigo também afirma que "A pessoa que tem o direito de usar o software pode, sem a autorização do autor, observar, estudar ou testar o funcionamento ou a segurança deste software para determinar as ideias e os princípios que estão na base de qualquer elemento do software quando este realiza qualquer operação de carregamento, exibição, execução, transmissão ou armazenamento do software que tem o direito de realizar ".
Também estipula a possibilidade de terceiros praticarem atos de propriedade do autor “quando forem necessários para permitir o uso do software, de acordo com a finalidade a que se destina, por quem tem o direito de usá-lo. Uso, incluindo para corrigir erros ”, mas que esta possibilidade é limitada por contrato.
A diretiva europeia 2009/24 / CE substitui posteriormente a diretiva 91/250 / CEE, sem causar qualquer modificação substancial ao artigo L122-6-1 do Código de Propriedade Intelectual.
Contexto históricoA lei não especifica se as disposições relativas a "estudar ou testar a operação ou segurança [de] software" e "A reprodução do código [de] software ou a tradução da forma deste código" se sobrepõem ou se excluem, e só foi modificado em uma ocasião, a da Lei de Programação Militar de 2013 para especificar que a “segurança” do software poderia ser estudada, da mesma forma que “a operação”. Desde que a diretiva foi elaborada em 1991 , temas como código aberto não estavam muito presentes no debate público na época e projetos como a World Wide Web ou Linux ainda estavam em sua infância.
Os “legítimos interesses do autor”, mencionados no artigo L122-6-1, também não estão definidos.
Se o artigo 6 da diretiva 91/250 / CEE for intitulado "Descompilação", deve-se observar que as ferramentas para descompilar em uma linguagem como a corrente C , como Ghidra ou o plug-in Hex-Rays do IDA Pro não surgiram até cerca de vinte anos depois, assim como as linguagens de representação intermediária , como Java , para as quais os descompiladores estavam prontamente disponíveis, ainda não existiam e estavam em formação. era mais uma questão de desmontagem . O artigo transposto fala apenas em "tradução da forma do código", apagando uma possível nuance semântica que não necessariamente tinha objeto na época.
JurisprudênciaEm 2013 , a justiça francesa absolveu o criptógrafo de origem australiana Sean O'Neil, criador do algoritmo VEST (en) por ter publicado o algoritmo de geração de chaves na base do ofuscamento do então protocolo do Skype . No entanto, ele foi condenado em recurso em 2015 , os tribunais desta vez considerando que ele não deveria ter publicado seu código. Ele, entretanto, já estava preso para a criação de uma seita , envolvendo atos de corrupção de menores e estupro.
A decisão do Tribunal de Recurso é feita não obstante o parecer do Conselho de Estado de16 de julho de 2008que, respondendo a um pedido de abril de atacar o decreto que implementa a lei DADVSI , declara em relação ao artigo L122-6-1 que "estas disposições estabelecem, sob certas condições, uma exceção de descompilação destinada a permitir o desenvolvimento de software livre", este especificando e tendo em conta a disposição do artigo em questão que indica que “A informação assim obtida não pode ser [...] comunicada a terceiros, exceto se tal for necessário para a interoperabilidade do software criado de forma independente”.
Esta opinião é citada como base jurisprudencial pela associação VideoLAN para o desenvolvimento de certos componentes do software VLC media player , incluindo libdvdcss ou libbluray.
A definição do conceito de “ interoperabilidade ” é por vezes considerada precária; em 2011 , o Tribunal de Cassação contestou a decisão de um Tribunal de Recurso , decidindo , no âmbito dos objetivos prosseguidos pela reprodução não autorizada do código fonte do software para a implementação de um sistema de migração de dados, que “As operações de migração foram visando, não permitir a comunicação entre os dois softwares “Athena” e “H. Open”, mas sim a substituição de um pelo outro; que, portanto, ao afirmar que essas operações de migração eram justificadas pela interoperabilidade, o Tribunal de Recurso violou o artigo L.122-6-1-IV do Código de Propriedade Intelectual, como deve ser interpretado à luz da Diretiva 91/250 do14 de maio de 1991 "
Disposições relativas ao estudo de medidas técnicas de proteção, ou DRM (Diretiva 2001/29 / CE DADVSI)A Lei n ° 2006-961 de1 st agosto 2006sobre direitos de autor e direitos conexos na sociedade da informação transpõe a Diretiva 2001/29 / CE do Parlamento Europeu e do Conselho de22 de maio de 2001sobre a harmonização de certos aspectos dos direitos de autor e direitos conexos na sociedade da informação . Ele enquadra, entre outras coisas, o estudo e a evasão de medidas de proteção técnica (ou DRM ), alterando o Código de Propriedade Intelectual .
O artigo L. 331-5 do Código de Propriedade Intelectual define as medidas de proteção técnica da seguinte forma:
Medidas técnicas eficazes destinadas a prevenir ou limitar o uso não autorizado por proprietários de direitos autorais ou um direito relacionado aos direitos autorais de uma obra, que não seja software, de uma interpretação, fonograma, videograma, programa ou publicação impressa são protegidas nas condições fornecidas para neste título.Para efeitos do primeiro parágrafo, entende-se por medida técnica qualquer tecnologia, dispositivo ou componente que, no decurso normal do seu funcionamento, desempenhe a função prevista neste parágrafo. Estas medidas técnicas são consideradas eficazes quando uma utilização referida no mesmo parágrafo é controlada pelos titulares dos direitos através da aplicação de um código de acesso, um processo de proteção como encriptação, codificação ou qualquer outra transformação do objeto de proteção ou de um mecanismo de controle de cópia que atinge esse objetivo de proteção.Um protocolo, um formato, um método de criptografia, embaralhamento ou transformação não constitui, como tal, uma medida técnica na acepção deste artigo.E também afirma que:
As medidas técnicas não devem ter como efeito impedir a implementação efetiva da interoperabilidade , respeitando os direitos de autor. Os fornecedores de medidas técnicas facultam o acesso às informações essenciais para a interoperabilidade nas condições definidas nos artigos L. 331-6 e L. 331-7.Mas também isso:
As medidas técnicas não podem opor-se à livre utilização da obra ou do objeto protegido nos limites dos direitos previstos neste código, bem como dos concedidos pelos titulares dos direitos.As disposições deste artigo aplicam-se sem prejuízo das disposições do artigo L. 122-6-1 deste código.De acordo com o artigo L. 331-7 do Código de Propriedade Intelectual:
Qualquer editor de software, qualquer fabricante de sistema técnico e qualquer operador de serviço pode, em caso de recusa de acesso às informações essenciais para a interoperabilidade, solicitar à Autoridade Reguladora das Medidas Técnicas que garanta a interoperabilidade dos sistemas e serviços existentes, respeitando os direitos do partes, e obter do titular dos direitos sobre a medida técnica as informações essenciais para essa interoperabilidade.De acordo com o artigo L. 335-3-1 do Código de Propriedade Intelectual:
I. - A multa de 3.750 euros é punível com a violação deliberada, para fins estranhos à investigação, de medida técnica eficaz, tal como definida no artigo L. 331-5, de forma a alterar a protecção de uma obra por descodificação, desencriptação ou qualquer outra intervenção pessoal destinada a contornar, neutralizar ou remover uma proteção ou mecanismo de controle, [...] II. - É punido com pena de prisão de seis meses e multa de 30.000 euros por deliberadamente adquirir ou oferecer a outrem, directa ou indirectamente, meios concebidos ou especialmente adaptados para prejudicar uma medida técnica eficaz […] […] 4. - Estas disposições não se aplicam a atos praticados para fins de segurança informática, dentro dos limites dos direitos previstos neste código. Disposições relativas à proteção de segredos comerciais (Diretiva (UE) 2016/943)A Lei n ° 2018-670 de30 de julho de 2018sobre a proteção de segredos comerciais , que transpõe a Diretiva (UE) 2016/943 do Parlamento Europeu e do Conselho de8 de junho de 2016sobre a proteção do know-how e da informação comercial não divulgada (segredos comerciais) contra a aquisição, uso e divulgação ilícitos , permite, em certos casos, a limitação contratual da engenharia reversa: cria o artigo L151-3 do Código Comercial que estipula que "a observação, estudo, desmontagem ou teste de um produto ou objeto que foi disponibilizado ao público ou que está legalmente na posse da pessoa que obtém as informações" constitui um "[modo] de obtenção legal de um segredo comercial "," a menos que haja estipulação contratual que proíba ou limite a obtenção do segredo ". O artigo L151-1, por sua vez, fornece uma definição de segredo comercial.
O Código Comercial deve ser interpretado separadamente do Código de Propriedade Intelectual .
Uma vez que uma patente requer a publicação da invenção , pode-se dispensar a engenharia reversa para estudar os elementos patenteados. Uma das principais motivações para a engenharia reversa é determinar se um produto concorrente viola uma patente ou copyright .
Desde 1998 , o Digital Millennium Copyright Act proibiu a evasão de medidas de proteção tecnológica.