Sari la conținut

Inginerie inversă

De la Wikipedia, enciclopedia liberă
Procesul de inginerie inversă a modelului Mercedes-Benz W196 1954

Ingineria inversă (în engleză reverse engineering) sau ingineria de reconstrucție, este procesul de descoperire a principiilor de funcționare a unui dispozitiv, sistem sau program software, prin analiza structurii, funcției și operațiilor acestuia. De obicei, ingineria inversă implică dezasamblarea sau descompunerea sistemului sau dispozitivului respectiv și analizarea în detaliu a funcționării sale, cu scopul de a realiza un nou dispozitiv sau sistem similar, care nu copiază nimic din cel original. Industria japoneză, folosea acest proces pentru creșterea producției în condițiile unei concurențe mari a produselor și evitând astfel efortul întâmpinat la designul original.
Ingineria inversă este de asemenea utilă pentru a estima costuri și pentru a identifica posibile încălcări de patent. Hackerii o folosesc pentru eliminarea protecției programelor software împotriva copierii (cracking).

Aplicații ale ingineriei inverse

[modificare | modificare sursă]

Ingineria inversă își are originea în analiza diverselor dispozitive și sisteme în special pentru utilizare comercială sau militară. Scopul este de a lua decizii de proiectare pentru produsele finite având informații minime sau fără cunoștințe suplimentare despre procedurile implicate în producția inițială.

Ingineria inversă se aplică în multiple domenii: industrie, electronică, software, inginerie chimică, biologie etc.

Industrie, aviație, auto

[modificare | modificare sursă]

Pe măsură ce proiectarea asistată de calculator (CAD) devine mai populară, ingineria inversă este utilizată pentru a crea modele virtuale tridimensionale ale pieselor și subansamblurilor existente.Modele 3D sunt analizate în software CAE (inginerie asistată de calculator), și în final software CAM (fabricare asistată de calculator).
Pentru stabilirea dimensiunilor obiectului fizic, se mai folosesc tehnologii 3D de scanare cum ar fi mașinile de măsurat în coordonate (CMM), scaner de triangulație cu laser, scaner cu lumină structurată și tomografie industrială computerizată. Datele măsurate, sunt de obicei reprezentate ca nori de puncte.[1]

Exemple:

Generator cu motor Honda GX-200
  • Celebrele transmisii automate japoneze Aisin A130 și A140 sunt copii fără licență ușor modificate ale transmisiilor automate Chrysler din anii 1940-1950, produse de o companie americană în fabrici din Japonia după al doilea război mondial.

Ingineria inversă în electronică poate fi aplicată aproape oricărui tip de hardware: microcontrolere, microprocesoare, routere, telefoane mobile, smartphone, sisteme înglobate, console de jocuri video etc. [2][3]

Ingineria inversă hardware implică dezasamblarea unui dispozitiv pentru a identifica și analiza componentele electrice și electronice ale circuitului integrat și reconstrucția unei diagrame electronice funcționale. De asemenea, pe unele dispozitive computerizate, se poate recupera codul de asamblare firmware.

Ingineria inversă a programelor software este de obicei efectuată în scopul modificării ulterioare, copierii sau, scrierea generatoarelor cheie, al căror algoritm de operare este obținut pe baza unei analize a algoritmului lor de verificare. Studiul programelor este de asemenea folosit pentru a obține informații confidențiale despre dispozitivul intern al programului (un protocol de comunicație de rețea cu un server, hardware, o cheie de securitate sau despre interacțiunea cu alt program). Pe de altă parte, ingineria inversă este utilizată în studiul malware-ului de către companiile antivirus pentru a-și adăuga semnăturile în bazele de date ale produselor.

Unul dintre exemplele bine cunoscute de inginerie inversă a fost studiul BIOS-ului unui computer personal IBM PC, de la care s-au dezvoltat computere compatibile IBM de către producători terți. Un alt exemplu este crearea serverului Samba, inclus în sistemul de operare GNU/Linux și serverele bazate pe Windows, prin ingineria inversă a produsului Microsoft SMB.

Procesul de inginerie inversă a unui program software se desfășoară de obicei în două faze distincte:

  • la nivel de sistem: constă în analiza la scară largă a programului, a modului de funcționare, a funcțiilor acestuia, determinarea structurii generale a programului și la localizarea zonelor de interes, folosirea serviciilor oferite de program pentru a obține informații. Majoriatea informațiilor sunt furnizate de către sistemul de operare. Instrumentele de monitorizare a sistemului pot monitoriza activitatea de rețea, accesul la fișiere, accesul la regiștri, etc.
  • la nivel de cod: se analizează codul la nivel inferior, prin intermediul limbajului de asamblare și se caută detalii privind funcționarea acestuia. Instrumentele pentru deconstrucția la nivel de cod sunt: dezasambloarele (IDA-Pro, Ghidra, Hiew, PE Explorer etc), depanatoarele (Advanced Debugger, DEBUG, MacsBug etc) [4] și decompilatoarele (Hex-Rays Decompiler, DCC, Reko etc).[5]

Echipament militar

[modificare | modificare sursă]

De-a lungul anilor, conceptul de inginerie inversă a fost abordat cu mult înaintea tehnologiei moderne și datează încă din antichitate. Este folosită pentru a copia tehnologiile, dispozitivele sau informațiile altor țări, obținute prin capturare de trupe sau prin operațiuni de spionaj.

  • Carul de război din armata asiriană a fost o armă șoc din vremea sa. Egiptenii au capturat unul, și au continuat să producă în masă un design îmbunătățit. Cu această nouă armă de război, egiptenii au dominat regiunea pentru următorii mii de ani.
  • În timpul primului război punic (264 - 241 î.Hr.), flota romană până acum inferioară, a fost echipată cu nave construite după modelul vaselor capturate din Cartagina. Potrivit lui Pliniu cel Bătrân, Republica Romană a construit o escadrilă de 200 de quinquerremi în doar 60 de zile. În 241 î.Hr. flota romană a scufundat 50 de nave cartagineze în bătălia finală de la Aegates.

Ingineria inversă a fost folosită adesea în timpul celui de-al doilea război mondial și al Războiului Rece:

  • Racheta V-2: la terminarea celui de al doilea război mondial, aliații au capturat planurile tehnice împreună cu oameni de știință germani pentru racheta V-2. Sovieticii au lucrat la proiectul de rachetă R-1, iar americanii au realizat racheta PGM-11 Redstone.
  • Racheta Vympel K-13: În 1958, o rachetă AIM-9 Sidewinder a fost trasă de un avion F-86 Sabres din Taiwan asupra unui MiG-17, care nu a explodat la impact dar a rămas blocată în partea laterală a fuzelajului. Sovieticii au realizat un model al rachetei copiindu-l atât de atent încât chiar și numerele de părți au fost duplicate.
  • Operațiunea Diamond, executată de Mossad, urmărea să achiziționeze un avion sovietic MiG-21. La 16 august 1966, pilotul dezertor Munir Redfa a zburat cu un MiG-21 al Forțele Aeriene Irakiene, conducându-l în Israel. Studiul acestuia a dezvăluit secrete de care au profitat forțele aeriene ale Israelului și ale S.U.A.
  • Pușca de asalt Kalashnikov - conducerea lui Izhmash a declarat că aproximativ jumătate din AK-urile din lume sunt "contrafăcute", motiv pentru care Rusia pierde aproximativ un miliard de dolari pe an.
Dongfeng EQ2050 în Beijing
  • Regimul chinez folosind inginerie inversă, a făcut o versiune civilă a Humvee, vehicul militar multifuncțional cu mobilitate înaltă, pe care l-au numit Dongfeng EQ2050, folosit pe scară largă de poliție și armata din China.
  • La sfârșitul lui 2013, China a efectuat un test de zbor al unui elicopter Z-10, care se aseamană foarte mult cu Sikorsky UH-60, cunoscut sub numele de Black Hawk.

[6][7]

Motivațiile ingineriei inverse

[modificare | modificare sursă]
  • Interfațare - ingineria inversă poate fi folosită atunci când un sistem ar trebui să se cupleze cu un alt sistem și va trebui stabilit modul în care ambele sisteme vor lucra. Aceste cerințe există de obicei pentru interoperabilitate.
  • Îmbunătățirea deficiențelor de documentare - documentația unui sistem în ceea ce privește producția, operarea sau întreținerea are limitări și designerii originali nu sunt capabili să o îmbunătățească.
  • Analiza securității unui produs - pentru a analiza modul în care funcționează un produs, investigarea specificațiilor componentelor sale, estimarea costurilor și identificarea potențială a încălcării brevetului.
  • Corectarea erorilor - pentru a rezolva sau îmbunătăți software-ul care nu mai este suportat de către creatorii săi.
  • Crearea de duplicate fără licență.
  • Spionaj militar sau comercial - presupune investigarea inamicului în ceea ce privește cele mai recente descoperiri prin furtul sau capturarea unei unități prototip și dezasamblarea acesteia. Acest lucru poate duce la cercetarea și dezvoltarea de produse similare, sau a unor măsuri de contracarare mai bune.
  • Academică, cu scopuri de învățare - pentru a înțelege aspectele cheie ale unui design de succes.
  • Inteligență tehnică competitivă - înțelegerea concurenței, aspectele legate de evenimentele competitive care au loc în mediul de afaceri, trendul piețelor.

Etica ingineriei inverse

[modificare | modificare sursă]

Dezbaterea privind legalitatea ingineriei inverse continuă și astăzi, după mulți ani de dezbateri. De obicei se discută despre impactul pe care îl are ingineria inversă asupra societății și de scopul în care este folosită.
Directiva UE 2009/24/CE[8] privind protecția juridică a programelor informatice, care a înlocuit o directivă anterioară (1991), reglementează ingineria inversă în Uniunea Europeană.[9][10]

Referințe și note

[modificare | modificare sursă]

Legături externe

[modificare | modificare sursă]
  • Govindarajalu: Ibm PC And Clones: Hardware, Troubleshooting And Maintenance, Tata McGraw-Hill Education, 2002, ISBN: 9780070482869
  • Robert Messler: Reverse Engineering: Mechanisms, Structures, Systems & Materials, McGraw-Hill, 2014, ISBN: 9780071825160

Open source