리버스 엔지니어링(reverse engineering, RE) 또는 역공학(逆工學)은 장치 또는 시스템의 기술적인 원리를 그 구조분석을 통해 발견하는 과정이다. 이것은 종종 대상(기계 장치, 전자 부품, 소프트웨어 프로그램 등)을 조각내서 분석하는 것을 포함한다. 그리고 유지 보수를 위해, 또는 같은 기능을 하는 새 장치를 원본의 일부를 이용하지 않고 만들기 위해 대상의 세부적인 작동을 분석하는 것을 포함한다.
리버스 엔지니어링의 기원은 상업적 또는 군사적으로 하드웨어를 분석한 것에서 시작되었다. 목적은 원본 생산의 절차에 관한 지식이 거의 없는 상태에서, 최종 제품을 가지고 디자인 결정과정을 추론하는 것이다. 같은 기술이 레거시 소프트웨어 시스템을 응용하기 위해 현재 연구되고 있는데, 산업이나 국방이 아니고, 오류, 미완성, 접근 불가인 문서를 수정하기 위함이다.
소프트웨어 리버스 엔지니어링을 위해 IDA Pro나 OllyDbg 등의 도구들이 사용된다. 이 도구들은 어셈블리 언어들을 분석하기 쉽게 하도록 분석하는 기능과 코드를 변형하는 기능등을 제공한다
Reverse Engineering
역설계(逆設計)/역공학(逆工學)
특정한 기능을 내는 기계, 혹은 프로그램의 라이브러리를 만들어보고 싶은데 내부 구조를 알 수 없을 때, 뜯어서 아무튼 동일한 기능을 하도록 새로운 것을 만들어 내는 것이다. 인류역사상 전쟁과 수반된 기술발전 중에는 적국에게서 노획한 (혹은 동맹국에게서 공여받은) 발전된 전쟁병기를 역설계 해서 자국의 신무기로 응용하는 식의 리버스 엔지니어링 역시 심심찮게 있었다. 또한 현대에는 개발도상국들이 산업화를 위해 주로 사용하는 방식이다. 7-80년대의 한국이나 90년대 이후의 중국이 그 예다. 이미 실전에 쓰이며 검증되고 있는 물건을 토대로 개발하는것이기 때문에 무에서부터 시작하는것보다는 비교도 할수 없을 정도로 나은 방식이다. 현대 전쟁병기도 예외가 아니며, 이 분야에서는 중국이 잘 알려져 있다 . 2000년대 초반까지 중국의 모든 무기체계는 소련제를 카피한 것이다. 물론 초반제품은 정식라이센스였으나, 중소결렬 이후는 모두 지적재산권을 무시한 것인데, 애당초 소련은 사회주의국가였기 때문에 지적재산권에는 무지했다.
중국이 유명하지만, 군사분야를 보면 선진국 대부분이 처음에 무기를 개발할 때는 상대방이나 우방의 국가의 무기를 베끼면서 시작했다. 그러니까 자신이 부족하다 싶은 분야는 무조건 베꼈다. 예를 들어 나치독일의 V2같은 경우는 소련 뿐만 아니라 미국, 영국, 중국 이 모두 베끼면서 이를 기반으로 탄도미사일 개발을 축적해 온 예가 있으며, 비교적 기술이 앞서있던 나치 독일도 남이 앞선 분야는 베끼는데 거리낌이 없어서, 소련의 카츄샤 로켓을 베껴서 자신들의 지상로켓병기를 만들었고, 바주카를 베껴서 판처슈렉을 만들었다. 당연히 한국도 여기서 자유롭지 않다.
단, 리버스 엔지니어링도 무작정 제품을 입수해 뜯어본다고 해서 만사OK인것이 아니라 해당 제품에 대해 어느정도는 그 기술에 대한 이해가 있어야 하며, 나아가 리버스 엔지니어링을 시행하고자 하는측의 기술이 충분히 받쳐줘야만 한다. 소말리아 같은 나라에 F-22 한대 던져준다고 해서 갑자기 F-22 복제품이 튀어나올수는 없다는 말. 가공전기나 대체역사물에서 미래에서 가져온 무기보고 베껴서 뚝딱 양산하는 것은 거의 판타지적인 상황인 것이다.
소말리아와 F-22 같은 극단적 예를 들 것도 없이, 2차대전때 일본군은, 할힌골 전투 당시의 참패한 전선에서 긁어모은 소련 전차들에 대한 단편적인 부품들과, 동남아전선에서 숱한 충격과 공포을 불러온 연합군의 M4 셔먼 전차를 노획하여 어찌어찌 본국으로 보냈다. 정작 적국의 병기를 받아본 제국 전차 조병창 기술자들은 복제는 커녕 기술력의 향상도 이루지 못했고, 그들이 할 수 있었던 것은 연합군, 특히 미군의 놀라운 기술력에 경악하는 것 뿐이었다. 그 악명높은 97식 전차의 개량을 위해 지속적인 기술적 보완과 개량이 있었지만, 종전때까지 그들이 만들어낸 기기괴괴한 고철덩어리들은 훌륭한 표적이자 관짝이 되었다.
2. 불법인가?
대한민국 법률에서는 컴퓨터 프로그램의 리버스 엔지니어링에 대해 다음과 같이 규정하고 있다.
제101조의4(프로그램코드역분석)
① 정당한 권한에 의하여 프로그램을 이용하는 자 또는 그의 허락을 받은 자는 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우에는 해당 프로그램의 호환에 필요한 부분에 한하여 프로그램의 저작재산권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.
② 제1항에 따른 프로그램코드역분석을 통하여 얻은 정보는 다음 각 호의 어느 하나에 해당하는 경우에는 이를 이용할 수 없다.
1. 호환 목적 외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우
2. 프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발ㆍ제작ㆍ판매하거나 그 밖에 프로그램의 저작권을 침해하는 행위에 이용하는 경우
[본조신설 2009.4.22]
(출처 : 저작권법 일부개정 2013.12.30 [법률 제12137호, 시행 2014.07.01] 문화체육관광부 > 종합법률정보 법령)
|
위 조문을 보면 알 수 있듯이, 대한민국에서는 리버스 엔지니어링의 상업적 이용에 대해 엄격하게 금지하고 있으나, 비상업적 범위 내에서는 일정 부분 허용되고 있음을 알 수 있다.
몇몇 비디오 게임에서는 불법복제 등의 목적으로 프로그램 내부를 변경하려고 하면 프로그래밍 된 경고메세지로 "님은 리버스 엔지니어링 하려고 하고 있음" 운운하는 경우도 간혹 있다.
컴퓨터 프로그램의 리버스 엔지니어링에 사용되는 도구에는 ollydbg, IDA 등이 있다. 각종 디컴파일러를 사용해서 실행 바이너리로부터 소스를 역추출하기도 한다. 마인크래프트의 모드 로더들은 마인크래프트의 자바 실행 바이너리를 리버싱해서 만들어졌다. Java는 디컴파일시 거의 소스 코드 그대로 나오기 때문에 리버싱이 쉬운 편.각종 스크립트 언어는 소스 코드가 곧 실행 프로그램이 되는 특징 때문에 리버싱을 할 필요가 별로 없다. 굳이 있다면 난독화시킨 소스 코드를 재포맷하는 정도.
하드웨어 리버스 엔지니어링은 제품을 부품 단위로 분해해 각 부품의 제조사 홈페이지를 찾아가 데이터시트를 찾아보는 방법으로 리버싱한다. 만약 분석하고자 하는 부품이 따로 판매되는 물건이 아닌 경우, 엑스레이나 초음파 등 각종 비파괴검사 도구를 사용해서 내부를 분석한 후 해당 부품을 분해(파괴)해서 내부 구조를 알아낸다. 때문에 리버싱을 방해하기 위한 각종 트릭들이 고안돼 있다. 예를 들어 회로기판을 접착제로 케이스에 붙여버려 케이스 분해 시 기판 일부가 뜯겨나가 고장나게 만들거나 엑스레이가 투과하지 못하는 레진을 회로의 중요한 부분에 부어 굳혀서 레진 제거시 부품도 같이 파괴되게 만드는 등이다. 물론 이런 방법으로 악착같이 기술을 숨겨도 뜯을 놈은 다 뜯어보기 때문에 리버싱을 기술적으로 막을 방법은 사실상 없다고 봐야 한다.
3.1. 클린룸 리버스 엔지니어링
Clean-room Reverse Engineering
제품을 리버스 엔지니어링하여 저작권이나 기업 비밀에 관한 부분을 회피하면서 그 제품의 디자인을 모방하는 방법. 클린룸 설계(Clean room design) 또는 차이니스 월 테크닉(Chinese wall technique)이라고도 한다. 한국 서적 등에서는 '청정실 기법'이라고 번역되기도 한다.
"클린룸"이라는 말은 업계의 독자적 기술에 관한 지식으로부터 영향을 전혀 받지 않는 환경에서 작업한다는 데서 나온 표현이다. 좀 더 자세하게 이야기하면, 리버스 엔지니어링 팀과 재셜계 팀을 전적으로 격리한 상태에서 계획을 진행한다는 것으로, 리버스 엔지니어링을 통해 정보를 얻어서 진행하지만 결과물 자체는 다른 기술을 구현하는 것이다. 이것은 리버스 엔지니어링의 대상이 되는 기술과 완전히 똑같지 않은 이상 독립적인 개발로 간주되므로 저작권이나 기업 비밀 저촉으로부터 자유롭게 된다. 하지만 특허 회피는 어려운 것이 함정. 하지만 이것도 나름 남는 장사인게, 특허를 침해받는 회사가 고소한다고 쳐도 왠만하면 카피를 한 회사의 국가에서 심리를 여는데. 아무리 사법부는 공정함을 요구한다지만 현실은 자국 법인에게 시간을 끌어줘서 판결이 나올때면 이미 해당 제품은 구식으로 단물이 다 빠진 상태이고, 판결도 자국 법인에게 관대한 판결이 나온다. 7~80년대 일본, 한국, 홍콩, 대만, 싱가포르가 이런식으로 기술력을 쌓아올렸으며, 지금도 중국이 악명을 떨치고 있다.
클린룸 설계는 보통 아래의 3단계를 거친다.
모방할 제품을 분석하여 사양서를 작성한다.
이 사양서의 저작권 등 침해 여부에 대한 법률 자문을 받는다. 이때 침해가 확인되면 저작권 문제를 회피하는 방향으로 사양서를 수정한다.
분석팀과 연계점이 없는 제작팀에서 사양서대로 제품을 제조한다.