리버스엔지니어링의 의미와 개념에 대해 알아봅시다.
리버스엔지니어링의 의미와 개념을 이해한다.
리버스엔지니어링은 제품을 역으로 분석하고 해석하여 구조, 재료, 회로 및 디자인을 밝혀내는 것을 의미합니다. 리버스 엔지니어링은 시스템을 연결하는 통신 절차입니다. 생산 중단으로 인해 사용 중인 부품의 분석이나 교체, 제품의 안전성 테스트, 타사 제품의 분석 등을 위해 실시하는 프로세스입니다. 리버스 엔지니어링은 “리버스 엔지니어링”이라고도 합니다. 엔지니어링은 소프트웨어 엔지니어링의 한 분야입니다. 기존 시스템을 추적하여 대상 시스템을 이해함으로써 활용이 가능합니다. 리버스엔지니어링 역시 개발도상국에서 산업화를 위해 주로 사용하는 방법이다. 개발도상국이 선진국의 제품과 프로그램을 뒤집어 기술을 이해하고 재설계하는 기법이다. 리버스 엔지니어링을 통해 제품을 분석하고 해석하는 것은 합법적이지만, 분석 및 해석 결과를 바탕으로 동일한 중복 제품을 만드는 것은 불가능합니다. 재판매는 지적 재산권을 침해할 수 있습니다.
리버스 엔지니어링 의미 및 개념 설명
리버스 엔지니어링(Reverse Engineering)은 시스템 개발이 완료되고 운영 및 유지보수가 수행되는 시스템에 대해 시스템의 구성요소를 처음부터 재발견하고, 구성요소 간의 관계를 식별 및 분석하는 과정을 말한다. 리버스엔지니어링은 완성된 시스템이나 프로그램의 내부 구조를 알 수 없을 때 이를 역으로 분석해 동일한 기능을 갖는 새로운 시스템과 프로그램을 만드는 것을 말한다. 아무런 지식베이스도 없이 처음부터 직접 개발하려고 하면 많은 비용과 시간이 소요되지만, 리버스엔지니어링을 활용하면 비용과 시간을 크게 줄일 수 있습니다. 리버스엔지니어링은 하드웨어 분야에서 완제품을 제품으로 변환하는 방법이다. 프로세스는 디자인 콘텐츠 추출과 디자인 사양 재개발을 목적으로 샘플 하드웨어 시스템을 분석하는 것부터 시작되었습니다. 하지만 이제는 컴퓨터공학, 소프트웨어공학 분야에서도 활용되면서 활용 범위가 확대됐다. 리버스 엔지니어링과 구별되는 개념은 포워드 엔지니어링(Forward Engineering)입니다. 포워드 엔지니어링은 처음부터 표준입니다. 실제 제품을 시작하고 획득하는 과정을 거쳐 제품이나 시스템을 만들어 내는 방식이다.[리버스 엔지니어링과 포워드 엔지니어링 비교]
리버스 엔지니어링을 통해 분석된 결과는 신제품 개발에 활용됩니다. 리버스 엔지니어링은 제품이나 시스템을 분해하고 분석하여 내부 구조, 재료, 작동 원리 및 기술 세부 사항을 조사하고 드러냅니다. 시스템 자체를 분해하고 해석하는 것은 합법이지만 이를 기반으로 복제품을 만들어 판매하는 것은 사실상 불법이다. 국내에서는 컴퓨터 프로그램의 리버스엔지니어링을 상업적으로 이용하는 것을 엄격히 금지하고 있습니다. 리버스엔지니어링은 기존 제품을 해석하고 활용해 더 좋은 제품을 만든다는 점에서 모방적인 측면도 있지만 긍정적인 측면으로도 볼 수 있다. 평가할 수도 있습니다. 소프트웨어의 역공학은 특수한 소프트웨어를 사용하여 0과 1로 구성된 프로그램으로 되돌리는데, 처리를 거쳐 복원된 프로그램은 원래의 프로그램과 동일하지 않을 수 있다. 리버스 엔지니어링은 원래 제품 및 시스템의 생산 또는 개발에 사용됩니다. 완성된 최종 제품과 시스템을 아무런 지식이나 기술력 없이도 분석하고 해석함으로써 새로운 제품과 시스템을 만들어 낼 수 있다는 점에서 매우 긍정적인 측면이 있습니다. 리버스 엔지니어링은 시스템을 이해하고 적절한 변경을 수행하는 소프트웨어 유지 관리 프로세스의 일부이기도 합니다. 리버스 엔지니어링은 시스템 설계 문서의 분실, 제품 분석, 안전성 점검 등의 이유로 수행될 수 있다. 리버스 엔지니어링은 구조 분석을 통해 시스템이나 소프트웨어의 기술적 원리를 찾아내는 과정이다. 기계 장치, 전자 부품, 소프트웨어 프로그램 등이 대상이 될 수 있습니다. 시스템을 분해하고 분석함으로써 시스템의 원리를 이해할 수 있습니다. 리버스 엔지니어링은 이미 완성된 시스템을 추적하고 원본 문서나 설계 기술과 같은 데이터를 얻는 데에도 사용됩니다. 한편, 악의적인 리버스엔지니어링을 방지하기 위해 소프트웨어의 주요 알고리즘, 데이터 구조 등 지적재산권은 보호된다. 저작권소프트웨어를 보호하기 위해 많은 연구가 동시에 진행되고 있습니다. 악의적인 리버스 엔지니어링을 방지하기 위해 소프트웨어를 보호하는 기술도 있습니다. 리버스 엔지니어링으로부터 소프트웨어를 보호하는 기술에는 암호화, 워터마킹, 변조 방지, 서버 측 실행, 원본 코드 신뢰, 자체 확인, 바이너리 수정 및 난독화가 포함됩니다. 그리고 그 중에서도 블러링(blurring)이 가장 많이 사용됩니다.
[역공학을 방지하기 위한 기법들]
① 암호화 ② 워터마킹 ③ 변조 방지 ④ 서버측 실행 ⑤ 신뢰할 수 있는 네이티브 코드 ⑥ 자체 검사 ⑦ 바이너리 변경 수정 ⑧ 난독화