일반적인 엔지니어링 작업은 아이디어를 구체화하여 제품을 설계하고 그 설계도면에 따라서 제품을 생산하는 과정을 거칩니다. 하지만 리버스 엔지니어링(reverse engineering)은 ‘역공학’이라 하여 정상적인 설계과정과 반대로, 생산된 제품을 분해하여 숨은 아이디어를 찾아내고 설계도면을 뽑아냅니다.
창의적인 공학설계와 역공학
공학설계란 주어진 공학 문제를 해결하기 위해 제품이나 시스템의 형태를 기획하고 디자인하는 일련의 의사결정 과정입니다. 해결해야 할 문제를 정확히 인식하고, 정보를 수집 분석한 후, 아이디어를 도출합니다. 그 후 모델링 작업을 통해서 해결 방안을 구체화하고, 예비설계에 대한 시험평가를 통해서 설계 개선과 최적화를 이루어 최종 설계에 이르게 됩니다.
공학설계 과정은 아이디어를 도출하고 이를 구체화하는 과정인데, 여기서 창의성은 설계 과정의 핵심이라 할 수 있습니다. 그러나 리버스 엔지니어링은 공학설계 과정과는 반대로 결과물을 뜯어보고 설계자의 아이디어와 디자인 결정 과정을 역으로 추론합니다.
설계도면의 복원과 불법 복제
리버스 엔지니어링은 기계장치나 시스템을 비롯한 눈에 보이지 않는 알고리즘이나 소프트웨어 등 모든 인공물을 대상으로 합니다. 방법론 측면에서 보면 과학과 유사하다고 할 수 있습니다. 신이 만든 자연의 숨은 섭리를 이해하기 위해 과학이 필요하다면, 리버스 엔지니어링은 남이 만든 인공물 속에 숨은 아이디어를 알아내기 위한 것입니다.
리버스 엔지니어링은 기계장치의 설계도면이 존재하지 않거나 분실되었을 때 디자인 결정 과정과 성능을 추론할 수 있도록 해줍니다. 기계 부품 외에도 고건축이나 유물의 원래 모습을 복원하는데 유용하여 널리 활용되고 있습니다. 여러 장의 사진 자료를 합성하여 노트르담 성당의 상세 정보를 복원하거나, 3D 스캐너를 이용하여 불상의 3차원 설계도면을 생성해 냅니다. 하지만 상용화된 제품을 가져가서 불법 복제품을 만들거나 유사한 제품을 제작하는 등 부정적으로 활용되는 경우도 종종 있습니다.
리버스 엔지니어링을 활용한 다양한 사례
잘 만들어진 제품을 역공학 한 대표적인 사례로 2차 세계대전 당시 인기 높았던 제리캔(Jerry Can)을 들 수 있습니다. 제리캔은 군용 지프차 뒤에 매달려 있는 20리터짜리 기름통을 말합니다. 마개 위치나 모양이 잘 설계되어 있어서 통을 기울여 내용물을 쉽게 따를 수 있고 보관할 때는 빈 공간 없이 적재할 수 있습니다. 또한, 두 사람이 함께 혹은 혼자서 두 개를 들 수 있도록 손잡이가 3중으로 달려 있습니다. 기름통 양쪽에는 커다랗게 X자 형태로 홈이 새겨져 있어 보기도 좋고 단단하여 밖으로 불룩해지지 않습니다.
제리캔은 히틀러가 전쟁을 준비하면서 연료 보급을 목적으로 비밀리에 개발해둔 것입니다. 전쟁 중 독일군에게서 노획된 제리캔은 연합군 병사들 사이에서 인기가 높아 서로 차지하려고 종종 싸움이 벌어졌다고 합니다. 제리캔은 연합군에 의해 공공연하게 제작 보급되었으며, 지금도 거리에서 군용 차량에 달린 것을 흔히 찾아볼 수 있습니다.
리버스 엔지니어링의 다른 예로 B-29 폭격기가 있습니다. 미군은 제2차 세계대전 말 보잉사가 개발한 B-29를 일본 폭격에 주로 사용하였는데, 폭격 후 소련 영토에 비상착륙 하는 일이 있었습니다. 소련은 비밀리에 그중 한 대를 억류하고 리버스 엔지니어링을 통해자신들의 고유 브랜드인 투폴레프 Tu-4를 개발했습니다. 스탈린은 볼트 하나까지도 정확하게 복사하라고 지시했다고 합니다.
70-80년대 우리나라는 리버스 엔지니어링 천국이었습니다. 가방, 의류, 술 등 생활용품은 물론 각종 전자제품에 대한 짝퉁이 만들어졌습니다. 맥킨토시 전신인 애플-II가 출시되었을 때, 얼마 지나지 않아서 청계천 일대에서 복제품이 만들어져 세상을 놀라게 했습니다. 당시 컴퓨터 설계기술은 없었지만 뛰어난 역공학 기술로 회로를 분석하고 범용전자 부품을 사용해서 어렵지 않게 복제품을 만들 수 있었습니다. 케이스도 똑같은 모양으로 만들었는데, 다만 색상을 연한 노란색에서 연두색으로 바꾸고 이름을 파인애플-II라고 명명했습니다.
소프트웨어에서도 활용되는 역공학
사실 눈에 보이는 것보다 보이지 않는 것을 역공학 하는 것이 더 어렵습니다. 화학 물질이나 합금 재료를 보고 성분을 분석하기는 쉽지 않을 뿐더러 세세한 공정이나 제조 방법까지 알아내는 것은 더욱 어렵습니다. 최근에는 컴퓨터나 스마트폰에서 돌아가는 운영체제, 응용 앱, 비디오 게임 등 각종 소프트웨어에 대한 역공학에 관심이 높아지고 있습니다. 불법 복제를 방지하고 각종 악성코드나 해킹으로부터 시스템을 보호하기 위해서입니다. 디지털 기기에서 돌아가는 실행 코드는 모두 기계어로 되어있기 때문에 기계어를 해독해서 소스 코드로 변환해야 합니다. 사람이 읽을 수 있는 소스 코드로 변환이 되어야 비로소 당초 개발자의 의도를 파악할 수 있습니다.
소프트웨어에 대한 역공학 기술은 창과 방패와 같습니다. 정보보호와 불법복제를 막기 위해서는 여러 가지 방어기술을 구사해야 합니다. 소스 코드에 아예 접근하지 못하도록 하는 암호화 기술을 사용하거나 설사 접근하더라도 알아볼 수 없도록 불필요한 코드를 삽입하여 헷갈리게 하는 난독화 기술을 적용합니다. 그런가 하면 바이러스를 차단하기 위한 백신 프로그램을 개발하려면 공격적으로 악성코드를 해독할 수 있는 강력한 해킹 기술을 필요로 합니다.
과거에 리버스 엔지니어링 기술은 주로 기계장치나 전자제품과 같은 하드웨어에 활용되었습니다. 다양한 IT 기술이 발전하고 있는 지금은 소프트웨어의 암호화 기술이나 해킹 기술 등에 활용되며 점점 그 기술이 고도화되고 있습니다. 앞으로 인공지능 시대를 맞아 앱과 정보의 중요성이 점점 높아지면서 소프트웨어의 역공학을 둘러싼 창과 방패의 싸움은 더욱 치열해질 것으로 보입니다.