# Alderantzizko ingeniaritza

Alderantzizko ingeniaritza (ingelesez: Reverse engineering edo Back engineering), prozesu bat da non objektua erauzten den eta bere diseinua, arkitektura edo objektuaren ezagutza erauzteko ezagutza ematen den. Ikerketa zientifikoaren antzeko prozesua da, baina ezberdintasun bakarra ikerketa zientifikoa fenomeno natural bat dela da.$^{:3}$ Alor hauetan aplika daiteke alderantzizko ingeniaritza: ingeniaritza mekanikoa, ingeniaritza elektronikoa, software ingeniaritza, ingeniaritza kimikoa, eta sistemen biologian.

## Ikuspegi orokorra

Alderantzizko ingeniaritza komertzial edo militar abantailak lortzeko hardwarearen analisia da.$^{:13}$ Hala ere, alderantzizko ingeniaritza-prozesua ez da kopia egitea ezta artefaktua aldatzea; produktuaren diseinuaren ezaugarriak azaltzeko analisi bat baino ez da, jatorrizko produkzioaren prozedurari buruz ezagutza gutxi dagoenean erabiltzen dena. Batzuetan, honen helburua dokumentazioa berridaztea izan daiteke oinordekotza sistematik,$^{:15}$ edota analisi lehiakorrak egitea.
Arrazoi ugari daude hainbat alorretan alderantzizko ingeniaritza erabiltzeko. Alde batetik, software alderantzizko ingeniaritzak lagun dezake azpiko kode iturria mantentzen eta softwarea hobetzen, software-errore edo ahultasunen bat detektatzen eta zuzentzen ere lagun dezake. Beste aldetik, softwarea garatzen den heinean, diseinuaren informazioa eta hobekuntzak denboran zehar galdu egiten dira, baina alderantzizko ingeniaritzari esker berreskuratu daiteke. Prozesu honek lagundu dezake iturburu-kodea ulertzen, softwarearen garapenaren kostu orokorrak murrizten. Alderantzizko ingeniaritzak softwarean idatzitako kode kaltegarria detektatzen eta ezabatzen lagun dezake kode detektagailu hobeekin.
Malware garatzaileek askotan sistema eragileen ahultasunak zeintzuk diren aurkitzeko alderantzizko ingeniaritza erabiltzen dute, horrela birus bat sortzen dute sistemaren ahultasun guztiak ustiatzeko. Horrez gain, kriptanalisiak egiteko ere erabiltzen da, ahuleziak aurkitzeko ordezkapen-zifretan, gako simetria algoritmoan eta gako publikoko kriptografian.

## Ohiko egoerak
#### Makinen alderantzizko ingeniaritza

Ordenagailuz lagundutako diseinua (CAD) gero eta ezagunagoa da, alderantzizko ingeniaritzan parte fisiko baten 3D eredu birtualak sortzeko metodo bideragarria bihurtu da. Alderantzizko ingeniaritza prozesuak objektu bat neurtu eta 3D modelo gisa berreraikitzen du. Bakarka neurtutako datuak, normalean puntu hodeiak bezala adieraziz, informazio topologiko falta dute, beraz, prozesatu eta formatu erabilerraza baten modelatu ohi dira, sare triangeluar bat, NURBS gainazal multzo bat edo CAD eredu batean.
NURBS eta modelaketa parametrikoa elkarrekin garatzen direnean modulazio hibridoa erabili ohi da. Gainazal geometrikoen eta forma libreen konbinazio baten erabilerak 3D modelatze-metodo indartsua zuzkitu dezake. Forma libreko datuen eremuak gainazal geometriko zehatzekin konbina daitezke, hibrido eredua sortzeko.
Enpresek ere alderantzizko ingeniaritza erabiltzen dute 3D produktuen erregistro digitala sortzeko edo lehiakideen produktuak ebaluatzeko. Aztertzeko erabiltzen da, adibidez, produktu baten funtzionamendua, zer egiten duen eta zer osagai dituen, kostuak kalkulatzen ditu, hutsegindako patenteak identifikatzen ditu, etab.

#### Software alderantzizko ingeniaritza

1990ean, definitu zen Elektrizitate eta Elektronika Institutuko Ingeniariak (IEEE) alderantzizko ingeniaritza bezala "sistemaren osagaiak eta haien elkarrekintzak identifikatzeko eta sistemaren irudikapenak beste modu batean edo goi mailako abstrakzioan sortzea aztertzeko prozesua da", non" subjektu sistema "softwarearen garapenaren amaierako produktua den. Alderantzizko ingeniaritza berrikuspen-prozesua baino ez da: jotzen den software-sistema ez da aldatzen. Alderantzizko ingeniaritza produktuaren zikloaren edozein fasetan egin daiteke.
Alderantzizko ingeniaritzan bi osagai daude: dokumentazioaren berridazketa eta diseinuaren berreskurapena. Bitartean, diseinuaren berreskurapena produktuaren ezagutza orokorra edo esperientzia pertsonalaren dedukzioa edo arrazoiketa erabiltzen da, produktuaren funtzionalitatea guztiz ulertzeko. "Garapen zikloan atzeraka" ere ikus daiteke. Eredu honetan, inplementazio faseko (iturri-kode forman) emaitza alderantzizko ingeniaritzako azterketa fasera igarotzen da, inbertsio-eredua turrusta tradizional batean. Teknika honen beste zehaztapen bat programa ulertzea da.
Inverse Engineering Work Conference (WCRE) urtero egiten da alderantzizko ingeniaritzako teknikak aztertu eta zabaltzeko. Ordenagailuz lagundutako software ingeniaritza (CASE) eta kode generazio automatikoek asko lagundu dute alderantzizko ingeniaritzaren alorrean.

#### Iturburu kodea

Hainbat UML tresnek inportazio prozesua eta iturri kodea aztertzen dute UML diagramak sortzeko “alderantzizko ingeniaritza” bezala. Ikusi UML tresnen zerrenda. Nahiz eta UMLren ikuspuntua “alderantzizko ingeniaritza” eskaini, nazioarteko jardueren azken aurrerapenak metamodel jakintza aurkikuntzaren Knowledge Discovery Metamodel (KDM) garapena eman du emaitza gisa. Estandar honek programazio-lengoaien eraikuntzako eta haien arteko elkarrekintzarako bitarteko (edo abstraktu) baten ontologia eskaintzen du.

#### Protokoloen alderantzizko ingeniaritza

Protokoloak mezuen formatua deskribatu eta mezuak trukatzen dituzten arau multzoak dira. Ondorioz, protokoloaren alderantzizko ingeniaritzaren arazoa bi azpi arazoetan banatu daiteke: mezuen formatu eta alderantzizko ingeniaritzaren egoera makina.
Tradizionalki, mezuen formatuak alderantzizko ingeniaritzaren bidez aldatu dira prozesu nekagarri baten bidez, eta inplementazio protokoloak mezuak nola prozesatzen diren aztertzen du, baina ikerketa berriek irtenbide automatiko batzuk proposatu dituzte. Normalean, ikuspegi automatiko horiek klusterretan ikusitako mezuak multzokatzen dituzte multzokatze analisi batzuk erabiliz, edo mezuak prozesatzen dituzten protokoloak ezartzen dituzte.
Hainbat protokolo-makinen alderantzizko ingeniaritzan lan gutxiago egon da. Oro har, protokoloko estatu makinak lineaz kanpoko ikaskuntza prozesu baten bidez ikasi daitezke, komunikazioa pasiboki aztertzen du eta egoera makina orokorrena eraikitzen saiatzen da ikusitako mezuen sekuentzia guztiak onartuz. Esanak esan, jakina da lineako ikaskuntza denbora polinomialean egin daitekeela.
Beste protokolo tipikoen osagaiak, hala nola, enkriptatzea eta hash funtzioak, automatikoki aldatu daitezke. Horren haritik, ikuspegi automatikoek protokoloen inplementazioen exekuzioa jarraitzen dute eta memorian bufferrak detektatzen saiatzen dira enkriptatuta ez dauden paketeetatik.

## Erreferentziak

* ↑ ISBN 978-0-7645-7481-8..
* ↑ doi:10.1098/rsif.2013.0505..
* 1 2 doi:10.1109/52.43044..
* 1 2 A Survey of Reverse Engineering and Program Comprehension. Michael L. Nelson, April 19, 1996, ODU CS 551 – Software Engineering Survey.Txantiloi:Arxiv
* ↑ ISBN 978-0-262-29446-1..
* 1 2 doi:10.1109/52.43044..
* ↑ doi:10.1016/S0010-4485(96)00054-1..
* ↑ W. Cui, J. Kannan, and H. J. Wang. Discoverer: Automatic protocol reverse engineering from network traces. In Proceedings of 16th USENIX Security Symposium on USENIX Security Symposium, pp. 1–14.
* ↑ W. Cui, M. Peinado, K. Chen, H. J. Wang, and L. Irún-Briz. Tupni: Automatic reverse engineering of input formats. In Proceedings of the 15th ACM Conference on Computer and Communications Security, pp. 391–402. ACM, Oct 2008.

## Kanpo estekak

* Datuak: Q269608
* Multimedia: Reverse engineering / Q269608