소프트웨어 프로그램은 통상 2진파일(binary file) 포맷인 실행파일 형태로 배포되어 소스코드를 확인할 수 없기에 저작권 침해 여부를 확인하는 것이 매우 어렵습니다. 소스코드의 확보할 목적으로 침해혐의자를 고소하여 형사절차를 통해 압수, 수색을 시도하기도 합니다.
소프트웨어 프로그램 저작권 침해 사건은 소스코드의 유출이 발단이 되는 경우가 많습니다. 이때 소스코드를 유출한 직원은 경쟁업체를 설립하고 유출된 소스코드를 기반으로 개발하여 배포, 판매로 나아가게 되므로, 결국 소송에서는 프로그램 저작권 침해뿐만 아니라 경업 및 전직금지, 영업비밀 침해 등 쟁점으로 대두됩니다. 수사절차는 대부분 피해자가 저작권 침해죄, 영업비밀 침해죄 혐의 등으로 침해 혐의자를 고소하는 것에서 시작됩니다. 여기서 영업비밀유출, 저작권침해 등에 관한 범죄혐의가 어느 정도 소명되어야 압수수색을 시도해 볼 수 있습니다. 소명은 증명에는 이르지 못한 정도이지만 적어도 그럴 개연성이 있다는 점을 보여주는 것입니다. 소스코드 없이도 어떻게 침해하였을 개연성을 보일 수 있는지 어려운 과제입니다.
1. 저작권 침해요건
저작권침해는 원칙적으로 (1) 침해자가 피해자의 저작물을 보고 베낀 사실(의거성)과 (2) 침해자의 결과물이 피해자의 저작물과 실질적으로 유사한 사실(실질적 유사성)이 인정되어야 합니다. 소프트웨어 프로그램의 경우도 침해자가 피해자의 컴퓨터프로그램의 소스코드에 접근하였다는 사실과 침해자의 컴퓨터프로그램이 피해자의 것과 유사하다는 사실을 보여야만 합니다. 실제 소송에서 주로 쟁점이 되는 것은 실질적 유사성의 문제입니다.
2. 실질적 유사성 판단
통상 비교대상 소프트웨어 프로그램들의 기능을 추상화하여 그 유사성을 살피고, 다음으로 컴퓨터프로그램을 둘러싼 주변 요소들 중 사상의 영역과 표현을 위해 사용되는 수단적 요소들을 제거하여 여과한 다음, 남는 부분들을 비교, 검토하여 유사성 여부를 가리는 과정을 거쳐 판단합니다.
또한 추상화와 여과 과정을 거친 후에 남는 구체적 표현(소스코드 혹은 목적코드)을 개별적으로 비교하는 외에도, 명령과 입력에 따라 개별 파일을 호출하는 방식의 유사도, 모듈 사이의 기능적 분배의 유사도, 분석 결과를 수행하기 위한 논리적 구조 계통 역시 검토하게 되고, 그와 같은 구조와 개별 파일들의 상관관계에 따른 전체적인 저작물 제작에 어느 정도의 노력과 시간, 그리고 비용이 투입되는지 여부도 함께 고려됩니다. 다만 이와 같은 검토 과정은 사안에 따라 유동적으로 사용됩니다.
3. 소스코드를 확보할 수 없는 경우의 유사성 소명 방법
소스코드를 확보할 수 없는 사건 초기에 실질적 유사성을 소명하기 위해서는 상대방의 제품에서 이진파일 상태인 목적코드, DLL, 실행파일 등을 추출하여 비교할 수 밖에 없습니다. 이 경우에는 역어셈블 또는 역컴파일을 통해서 어셈블리어 수준 또는 소스코드 수준에서 비교를 해야 합니다만, 디버깅 정보가 모두 제거된 상태이므로 어셈블리 수준에서는 변수와 함수 명칭 등이 모두 메모리상의 주소(숫자)로 변환되어 있고, 소스코드 수준으로 변환하여도 위 명칭 등이 모두 임의로 변경되어 있어 비교가 쉽지 않습니다.
이에 전체 구조의 유사성을 살피기 위해서는 함수 호출관계 차트를 그려서 이를 분석, 피해자의 소스코드와 비교하여 함수 간의 관계를 살피는 작업을 거치게 됩니다. 이것을 기준으로 유사한 함수 내의 기능과 내부 코드를 비교하여 유사도를 확인합니다. 여기서 먼저 분석할 함수로는 전체 컴퓨터프로그램에서 중요한 기능을 차지하고 새롭게 창작한 부분에 포함되는 것들을 선택하여야 할 것입니다.
이렇게 어느 정도 유사도가 확인되면, 이를 소명 자료로 만들어 법원 또는 검찰에 제출하여, 압수수색을 도모하거나 감정신청으로 나아갈 수 있게 됩니다. 소프트웨어 저작권 침해 또는 영업비밀 침해 사건에서 피해를 입은 회사 또는 개발자 등은 위와 같이 침해 사실의 소명이 필요하다는 점을 유념해야 합니다.