Term
분석의 꽃, 리버스 엔지니어링은 합법일까
2017 04 24
  • Facebook
  • Twitter
  • Copy URL

리버스 엔지니어링은 다른 말로 역공학이라고도 하는데 객체를 복제하거나 향상시키기 위해 어떻게 작동하는 것인지 살펴보는 과정을 말한다.[1] 즉, 리버스 엔지니어링이란 사람이 인공적으로 만들어 낸 것에서 지식이나 디자인 정보를 추출하고 이 정보를 바탕으로 어떤 것을 다시 생산하는 과정을 말한다.[2] 리버스 엔지니어링은 많은 분야에서 다양한 목적으로 사용되고 여러 도움을 주지만 이 모든 사용에 있어서 항상 옳은 것만은 아니다. 실제로 리버스 엔지니어링, 그 과정이 옳은 것인지에 대한 합법적인 논란은 계속해서 따라왔다.

이미지를 불러오는데 실패했습니다.

리버스 엔지니어링의 사례 중 하나를 이야기 하면 피닉스 테크놀로지의 BIOS를 말할 수 있다. 1980년대 중반 IBM은 PC와 호환되는 BIOS를 독점하다시피 하고 있었다. 피닉스 테크놀로지(Phoenix Technologies)는 IBM이 독점하고 있는 PC용 BIOS를 생산하고 싶어했지만 합법적으로 BIOS를 가져오기에는 상당히 복잡한 일이었다. 때문에 피닉스 테크놀로지는 이를 위해 한가지 꾀를 내었다. 먼저 첫 번째 개발자팀이 IBM의 BIOS를 리버스 엔지니어링하여 실제 코드를 사용하지 않고 모든 것이 완벽하게 작동할 수 있는 설명 자료를 만들게 하였다. 이 후, BIOS에 대한 사전 지식도 없고 IBM의 BIOS를 한 번도 보지 못한 개발자들로 이루어진 두 번째 개발자 팀을 데려와 첫 번째 팀이 만든 자료만 보며 BIOS를 만들게 했다. 그 결과, Phoenix Technologies와 IBM의 BIOS는 각각의 그 코드는 다를지언정 BIOS의 기능은 그대로 작동할 수 있었다.[3]

미국 사무용 복합기 제조회사인 제록스(XEROX)는 경쟁업체인 일본 캐논사의 제품을 리버스 엔지니어하여 모조리 분해한 후, 구조와 기술을 분석하여 이를 벤치마킹했다. 삼성도 소니, 파나소닉 등 일본 업체의 가전 제품을 분해하여 분석했다고 한다. 특히 TV는 나사에서 못까지 부품 각각의 특징과 장점을 살피기 위해 모조리 분석했다고 한다.[4]

 AMD와 인텔 사이에서도 리버스 엔지니어링은 존재했다. AMD는 설립 초기부터 세컨스 소스 업체로 오리지널 반도체 칩이 있으면 그대로 카피를 떠서 저렴한 제품으로 내놨었다. 그만큼 성능은 그대로 가져오고 가격은 더 저렴하게 제품을 구입할 수 있어서 많은 곳에서 AMD의 카피 칩을 많이 찾곤 했다. 이후, AMD는 Intel8080을 리버스 엔지니어링하여 똑같이  AMD9080을 내놓기에 이른다. 당시에는 라이센스라는 것도 없어서 거의 무단이라고 해도 무방했고 세컨드 소스라는 것도 생소했다. 뭐 그 이후에는 정식적으로 인텔의 라이센스를 받아 AMD9080을 생산했다고 한다. 하지만 아이러니하게도 오리지널인 인텔의 것보다 AMD의 것이 몇몇 기능면에선 더 두각을 보이게 되고 이로써 AMD도 반도체 시장에서 뚜렷한 기업으로 나타나게 된다. 이 시장에 IBM도 끼어들게 되면서 인텔에서 IBM과 AMD는 사이좋게 제조과정을 받으며 생산해냈지만 어느 순간 인텔에서도 세컨드 소스를 제공하지 않게된다. 이를 계기로 IBM은 나가떨어지게 되고 AMD는 자신들만의 독자적인 CPU를 내놓게 되는데 이것이 인텔의 제품인 486 프로세서와 비슷한 성능을 보여준다. 더욱이, 기존 제품들과 호환도 되고 가격도 인텔에 비해 저렴하여 엄청나게 인기를 끌게 되지만 인텔의 마이크로 코드 사용에 대한 특허권 침해로 AMD를 제소하게 된다. 결국, 이로 인해 AMD는 기존의 인텔 제품과 호환이 되지 않는 제품을 내놓게 된다. 아무튼 이 이야기에서는 이렇게 회사에서 내놓는 각각의 제품도 결국엔 리버스 엔지니어링을 통해 분석하여 카피제품을 내놓았다는 것이다.[5][6][7]

라이센스라는 개념도 희박했던 세 번째 예시와 달리, 첫 번째와 두 번째는 더 늦은 시대라 그렇게 리버싱을 통해 분석하여 생산하는 것만으로도 불법적으로 복사한 혐의를 받을 수 있었다.[8] 하지만 그들이 이를 피해갈 수 있었던 이유는 클린룸 엔지니어링이라 불리는 기법을 사용하였기 때문이다. 클린룸 엔지니어링이란 저작권이나 기업의 비밀과 관련한 부분을 피하면서 그 제품의 디자인을 모방하는 방법으로 다른 말로 차이니스 월이라고도 한다. 좀 더 자세히 이야기하면 ‘클린룸’이라는 말은 한 기업의 독자적 기술에 관한 지식으로부터 전혀 영향을 받지 않는 상태와 환경에서 작업을 한다는 것에서 나온 표현이다.[9] 이렇게 클린룸을 기법을 사용하면 리버스 엔지니어링을 통해 정보를 얻어서 진행하더라도 결과물 자체에는 다른 기술을 구현하는 것이다. 이것은 리버스 엔지니어링의 대상이 되는 기술과 완전히 똑같지 않은 이상 독립적인 개발로 간주되므로 저작권이나 기업 비밀 저작권으로부터 자유롭게 된다.[10]

그만큼 리버스 엔지니어링은 기업과 사람에게 직결되는 문제로 리버스 엔지니어링에 관한 법률이나 지침은 각 나라별로 가지고 있기도 하다. 유럽 같은 경우는 컴퓨터 프로그램의 복사본이 사용할 수 있는 코드 형태로 무단 복제하거나 번역, 개작 또는 변형을 하더라도 작성자의 배타적 권리를 침해하는 것으로 간주된다.[11] 그럼에도 독립적으로 작성된 프로그램과 다른 프로그램의 연동을 위한 필요한 정보를 얻으려면 코드의 유사성과 형식 변환이 반드시 필요했다. 따라서 이처럼 제한된 상황에서는 프로그램의 복사본을 사용할 권리로대신하여 복사 및 번역 행위를 ​​수행하는 것에 정당하고 합법적으로 수행될 수 있는 것으로 간주된다. 컴퓨터 역시 다른 제조업체의 구성 요소를 포함하여 컴퓨터 시스템의 모든 구성 요소를 연결하여 함께 작동 할 수있다. 제작자의 배타적 권리에 대한 예외는 권리 소유자의 정당한 권리를 침해하거나 정상적인 프로그램 개발과 상충되는 방식으로 사용될 수 없다. 즉, 리버스 엔지니어링을 통해 저작자에 권리를 침해하거나 정상적인 프로그램 개발과 상충되는 수정은 제한한다는 것이다.[12]

미국에서는 이런 분야에서는 확실하게 아래와 같은 컴퓨터 소프트웨어의 리버스 엔지니어링에 관한 법률을 가지고 있다.[13]

(f) 리버스 엔지니어링

(Reverse Engineering)- 컴퓨터 프로그램의 사본을 사용할 권리를 합법적으로 얻은 사람은 액세스를 효과적으로 제어하는 ​​기술적 수단 독립적으로 생성 된 컴퓨터 프로그램과 다른 프로그램의 상호 운용성을 달성하는 데 필요한 프로그램 요소를 식별하고 분석하기위한 목적으로 만 해당 프로그램의 특정 부분에 액세스 할 수 있다. 그러한 식별 및 분석 행위가이 소유권하에 침해 행위를 구성하지 않는 범위 내에서 우회하는 행위.

개인은 기술 수단을 회피하거나 기술적 조치에 의해 제공되는 보호를 우회하여 제 (1) 항에 의거 한 식별 및 분석을 가능하게하거나 독자적으로 생성 된 컴퓨터의 상호 운용성을 가능하게하기위한 목적으로 기술 수단을 개발하고 사용할 수 있다. 그러한 상호 운용성을 달성하기 위해 그러한 수단이 필요한 경우, 다른 프로그램과 함께 프로그램을 개설 할 수 있다.

허용 된 수단을 통해 취득한 정보는 타인에게 제공 될 수 있다. 아마도, 독립적으로 생성 된 컴퓨터 프로그램과 다른 프로그램의 상호 운용성을 가능하게하는 목적 및이 조항에 의거하여 침해 행위가 아니거나 이 절 이외의 적용 가능한 법률을 위반하지 않는 범위 내에서 그러한 정보 또는 수단을 제공한다.

여기서 사용되는 '상호 운용성'이란 용어는 컴퓨터 프로그램이 정보를 교환 할 수있는 능력을 말하며 그러한 프로그램은 상호 교환 된 정보를 상호간에 사용할 수있는 능력을 의미한다.

그렇다면 국내는 어떤가. 국내는 리버스 엔지니어링에 대해 아래와 같은 법률을 가지고 있다.[14]

제12조의 2(프로그램코드역분석)

①정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호환에 필요한 부분에 한하여 프로그램저작권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.

②제1항의 규정에 의한 프로그램코드역분석을 통하여 얻은 정보는 다음 각호의 1에 해당하는 경우에는 이를 사용할 수 없다.

호환 목적외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우
프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발·제작·판매하거나 기타의 프로그램저작권을 침해하는 행위에 이용하는 경우

정리하자면 호환성과 관련된 부분에서는 리버스 엔지니어링은 합법이다. 하지만 그 외의 목적으로 사용하는 것은 불법이다. 저작권을 보호하기 위해 1998년 재정된 DMCA(Digital Millenium Copyright Act)를 검색해보면 리버스 엔지니어링 법에 관한 여러 가지 정보를 얻을 수 있다.

리버스 엔지니어링 과정은 한 프로그램의 보안 허점과 개인 정보를 노출시키거나 취약한 부분을 찾아낼 수 있는 기술이다. 예를 들어, Convergence 회사의 CueCat 스캐닝 장치를 리버싱하면 각 스캔 한 코드와 사용자가 등록한 데이터를 결합하여 사용자의 습관을 추적 할 수있고 이를 통해 고유한 일련 번호를 찾아낼 수도 있다. 하지만 반대로 리버스 엔지니어링을 통해 여러 대형 소프트웨어나 하드웨어 제조업체 등 여러 업계에서 프로그램을 수행 할 능력을 약화시키고 있다는 것도 사실이다.[15]

캘리포니아 주 팔로 알토에있는 스탠포드 로스쿨 (Stanford Law School)의 법률 및 기술 클리닉 책임자인 제니퍼 그닉(Jennifer Granick)은 리버스 엔지니어링이 합법적이지만 이를 위반하는 두 가지 요소가 있다고 말했다. 하나는 아직 상용화 되지 않은 프로그램을 리버스 엔지니어링을 이용하여 소프트웨어를 열어보거나 사용한 사람을 명시적으로 제한한다는 점에서 비롯된다고 덧붙였다.[16]

또 다른 위협으로는 앞서 말한 디지털 밀레니엄 저작권법 (Digital Millennium Copyright Act, DMCA)에서 나온 것으로 소프트웨어를 복제하지 못하게 하는 보호 장치를 깰 수있는 도구나 정보의 생성이나 보급을 금지한다는것이다.[17] 이 법률에 근거한 사례도 있다. 산호세에 본사를두고있는 어도비 시스템즈 (Adobe Systems)가 러시아 프로그래머인 드미트리 크리 야로프 (Dmitry Sklyarov)를 미국의 컨퍼런스에서 체포하도록 FBI에 요청하기도 했다. Dmitry Sklyarov는 Adobe의 전자 북 파일 암호화를 해독하는 소프트웨어를 연구했다.[18]

사실, 종종 리버스 엔지니어링은 그러한 안전 장치를 깨고 호환성 목적으로 리버스 엔지니어링을 허용한다. 하지만, 제니퍼 그닉은 이에 대해 제작자가 아닌 제 3자가 소프트웨어가 해야 할 일을 소프트웨어가 수행하는지 여부를 알 수 없고 과학적 탐구를 위해 소프트웨어를 살펴볼 수도 없다며 차에 대한 비유를 덧붙였다.[19] 만약 당신이 차를 가지고 있을지언정 차 안에 있는 모든 것을 다 끄집어내서 볼 수 없다는 이야기다. 

정리해서 말하자면 캐나다에서는 자기도 모르게 다른 이의 코드를 사용하여 유사한 코드가 나올까 개발자들 사이에서도 서로의 코드를 보는 것을 엄격하게 금하고 있다. 행여 개발하는 곳에 있어서 다른 이의 비슷한 코드를 봤다면 그는 그 자리에서 프로젝트에 손을 떼야 한다. 이렇게 칼 같은 점은 미국 역시 마찬가지다. 국내에서도 제작자의 동의가 없고 권리에 침해하는 리버스 엔지니어링은 금하고 있다. 어렵게 생각할 거 없이 간단하다. 결국, 상용화되고 있는 것은 리버스 엔지니어링 금지인 것이다. 코드의 제작자에게 권리가 있다는 것은 맞는 이야기지만 생각해보면 인터넷 상에서 이것이 어느정도 통할지 의문이 드는 것도 사실이다.

 

분석의 꽃, 리버스 엔지니어링

=> 분석의 꽃, 리버스 엔지니어링은 합법일까

유성경 yuopboy@grayhash.com