KR20120138582A - 소프트웨어 난독화 장치 및 소프트웨어 보안처리 시스템 - Google Patents

소프트웨어 난독화 장치 및 소프트웨어 보안처리 시스템 Download PDF

Info

Publication number
KR20120138582A
KR20120138582A KR1020110058164A KR20110058164A KR20120138582A KR 20120138582 A KR20120138582 A KR 20120138582A KR 1020110058164 A KR1020110058164 A KR 1020110058164A KR 20110058164 A KR20110058164 A KR 20110058164A KR 20120138582 A KR20120138582 A KR 20120138582A
Authority
KR
South Korea
Prior art keywords
obfuscation
file
hard disk
code
software
Prior art date
Application number
KR1020110058164A
Other languages
English (en)
Other versions
KR101226615B1 (ko
Inventor
오은진
Original Assignee
주식회사 터보테크
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 터보테크 filed Critical 주식회사 터보테크
Priority to KR1020110058164A priority Critical patent/KR101226615B1/ko
Publication of KR20120138582A publication Critical patent/KR20120138582A/ko
Application granted granted Critical
Publication of KR101226615B1 publication Critical patent/KR101226615B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation

Abstract

본 발명은 소프트웨어 보안 시스템에 대한 것이다. 본 발명에 의한 소프트웨어 보안 시스템은, 소스 코딩이 수행되는 적어도 하나의 개발자 컴퓨터와; 소스 코딩 및 기계어번역이 완료된 원본파일을 받아서 코드 난독화를 수행하여 반환하며, 권한없는 제 3자의 접근이 불가하며, 난독화 프로그램이 내장된 하드디스크를 떼내어 다른 장치에서 실행시키는 경우에는 상기 하드디스크에 저장된 난독화 프로그램을 깨뜨리고 상기 하드디스크를 포맷하는 난독화장치와; 상기 각 개발자 컴퓨터로부터 소스 코딩이 완료된 파일을 수집하여 상기 난독화장치로 입력하며, 상기 난독화 장치에서 난독화 완료된 파일을 수신하는 보안관리서버를 포함하는 것을 특징으로 한다

Description

소프트웨어 난독화 장치 및 소프트웨어 보안처리 시스템{A Device For Software Obfuscation And A System For Software Security Treatment}
본 발명은 소프트웨어 보안처리 시스템에 대한 것으로, 더욱 상세하게는 자가 보안기능을 가지며 개발자의 컴퓨터와 독립적인 장치로 네트워크에서 동작하는 난독화장치 및 이를 포함하여 시스템 구성이 되어 강화된 소프트웨어 보안을 제공하는 소프트웨어 보안처리 시스템에 대한 것이다.
해커들은 보안의 취약점을 찾기 위하여 역공학(reverse engineering)이라는 기술을 적극 활용하여 소스코드 없이 원본 파일 즉, 윈도우의 실행파일을 직접 분석하여 프로그램이 어떤 기능를 수행하는지 파악하여 취약점을 찾게 된다.
경우에 따라 프로그램의 취약점이 분석되면 해커는 실행프로그램의 바이너리 코드를 수정하여 실행 프로그램의 제어흐름을 바꾸어 자신의 의도대로 실행 프로그램이 동작하도록 하기도 한다.
예컨대, 해커는 인터넷뱅킹 공인인증서의 비밀번호 비교코드를 역공학으로 찾아서 해당루틴을 수정하여 비교부분을 건너뛰게 하면 공인인증서 비밀번호는 그 의미를 상실하게 되며, 공용 PC 보안 및 불법 소프트웨어 설치 방지를 위해 재부팅시 하드웨어를 리셋시키는 시스템 관리자의 모드 비밀번호 검사 루틴을 찾아 건너뛰게 하면 보안기능이 상실된다.
이와 같은 해커들의 역공학을 이용한 소프트웨어 분석에 대한 대응을 위해 보안 전문가들은 실행프로그램의 소스코드를 알아보기 힘들게 하는 코드난독화(code obfuscation) 기술을 적용하고 있다.
도 1a는 종래의 소프트웨어 코드 난독화 전후를 예시한 개요도이고, 도 1b는 종래 소스트웨어 난독화를 수행하는 소프트웨어 보안방법의 각 단계를 보여준다.
종래의 소프트웨어 코드 난독화는 실행파일의 원본코드가 기계어로 번역되어 있는 것을 디컴파일 하고(제1단계), 각 코드 블럭별로 암호화하고(제2단계), 다시 전체코드에 대한 암호화가 수행된다(제3단계). 다시 암호화된 파일을 기계어로 번역하고(제4단계), 암호를 복호하는 복호화 실행 파일을 난독화하여(제5단계), 암호화된 원본파일과 난독화된 복호화 실행 파일을 함께 서비스 수여자에 온오프라인으로 배포한다(제6단계).
또한 도 2에 도시된 바와 같이 종래에는 개발자 컴퓨터(10)마다 난독화 프로그램 CD를 설치하고 난독화 시스템을 동작시켜서 난독화 및 테스트를 수행한 후에 난독화가 완료된 파일을 배포서버(20)로 전송하는 구성에 의하며, 따라서 난독화 프로그램 자체가 CD를 통하여 광범위하게 배포가 이루어질 수밖에 없었다.
하지만 종래의 상기와 같은 구성의 소프트웨어 보안방법에는 다음과 같은 문제점이 있어왔다.
난독화 프로그램 CD의 광범위한 배포에 의하여 해커들에 의한 난독화 알고리즘이 거의 분석이 되기에 이르렀고, 실제 원본 프로그램 코드에 대해서는 난독화를 하지 않고 원본코드에 대해서는 암호화만 하므로 악의의 제 3자는 쉽게 원본코드를 암호화한 파일(즉 원본파일을 포함한 파일들을 서비스 제공시 기본으로 제공되는 것이므로) 온오프라인을 통하여 손쉽게 얻을 수 있게 된다는 문제점이 있다. 이 경우 복호화를 수행하는 프로그램을 얻게 되면 원본파일은 고스란히 악의의 제 3자에게 원형 그대로 제공되어 버린다. 특히 난독화 프로그램의 광범위한 배포에 의하여 역난독화 프로그램이 악의의 제3자들에 의하여 인터넷상에 상당히 배포되기에 이르렀다.
본 발명의 목적은, 자가 보안기능을 가지며 네트워크상에서 개발자의 컴퓨터로부터 독립적인 장치로 동작하는 난독화장치 및 이를 포함하여 강화된 소프트웨어 보안을 제공하는 소프트웨어 보안처리 시스템을 제공하는 것이다.
상기 목적을 달성하기 위한 본 발명에 의한 소프트웨어 난독화장치는, 소스 코딩 및 기계어번역이 완료된 파일을 네트워크를 통해 받아서 코드 난독화를 수행하여 반환하는 난독화수단과; 상기 난독화수단이 내장된 내부 파일시스템에 권한 없는 제 3자의 접근을 사전 차단하는 프로그램보안수단과; 상기 난독화 수단을 구성하는 프로그램이 내장된 하드디스크를 떼내어 다른 장치에서 실행시키는 경우에는 그 하드디스크에 저장된 난독화 프로그램을 깨뜨리고 상기 하드디스크를 포맷하는 장치보안수단과; 접속 권한 있는 컴퓨터에 네트워크를 통하여 접속되어 난독화 대상파일을 수신하여 상기 난독화수단으로 제공될 수 있게 하며, 상기 난독화 수단에서 난독화 완료된 파일을 네트워크를 통하여 수신 권한 있는 컴퓨터로 제공하기 위한 파일송수신수단을 포함하여 구성되어 네트워크에서 독립한 장치로 동작하는 것을 특징으로 한다.
상기 난독화장치의 최초 세팅시 상기 난독화장치에서 수행되는 난독화의 방식?종류?회수의 조합을 추가 선택하여 설정할 수 있는 것을 특징으로 한다.
상기 난독화장치는, 개발자 컴퓨터에서 개발자가 마킹한 기계어의 특정부분에 대하여는 코드 가상화 및 특수코드에 의한 고도의 난독화 과정을 추가로 수행하는 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명에 의한 소프트웨어 보안처리 시스템은, 소스 코딩이 수행되는 적어도 하나의 개발자 컴퓨터와; 소스 코딩 및 기계어번역이 완료된 원본파일을 받아서 코드 난독화를 수행하여 반환하며, 권한없는 제 3자의 접근이 불가하며, 난독화 프로그램이 내장된 하드디스크를 떼내어 다른 장치에서 실행시키는 경우에는 상기 하드디스크에 저장된 난독화 프로그램을 깨뜨리고 상기 하드디스크를 포맷하는 난독화장치와; 상기 각 개발자 컴퓨터로부터 소스 코딩이 완료된 파일을 수집하여 상기 난독화장치로 입력하며, 상기 난독화 장치에서 난독화 완료된 파일을 수신하는 보안관리서버를 포함하여 구성되는 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명에 의한 소프트웨어 보안처리 시스템은, 소스 코딩이 수행되는 적어도 하나의 개발자 컴퓨터와; 상기 각 개발자 컴퓨터로부터 소스 코딩이 완료된 파일을 수집하는 보안관리서버와; 상기 보안관리 서버로부터 소스 코딩의 완료된 원본파일을 수신하여 코드 난독화를 수행하여 반환하며, 권한없는 제 3자의 접근이 불가하며, 난독화 프로그램이 내장된 하드디스크를 떼내어 다른 장치에서 실행시키는 경우에는 상기 하드디스크에 저장된 난독화 프로그램을 깨뜨리고 상기 하드디스크를 포맷하는 난독화장치와; 상기 난독화장치로부터 난독화 완료된 파일을 수신하며 난독화 완료된 파일에 대한 테스팅이 수행되는 테스팅서버를 포함하여 구성되는 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명에 의한 소프트웨어 보안처리 시스템은, 소스 코딩을 수행하는 적어도 하나의 개발자 컴퓨터와; 상기 각 개발자 컴퓨터로부터 소스 코딩 및 기계어번역이 완료된 원본파일을 받아서 코드 난독화를 수행하며, 권한없는 제 3자의 접근이 불가하며, 난독화 프로그램이 내장된 하드디스크를 떼내어 다른 장치에서 실행시키는 경우에는 상기 하드디스크에 저장된 난독화 프로그램을 깨뜨리고 상기 하드디스크를 포맷하는 난독화장치와; 상기 난독화 장치로부터 난독화 완료된 파일을 수신하며, 난독화 완료된 파일에 대한 테스팅이 수행되는 테스팅서버와; 상기 테스팅 서버에 의하여 테스트가 완료된 소프트웨어를 클라이언트에 배포하는 배포서버를 포함하여 구성되는 것을 특징으로 한다.
상기 난독화장치는, 네트워크의 내부망에 구비되는 것을 특징으로 한다.
본 발명은 상기와 같은 구성에 의하여 자체 보안이 유지되는 난독화 장치를 구비하여 난독화를 수행하므로 권한없는 제 3자의 난독화 프로그램에 대한 접근자체가 불가하며, 상기 난독화 장치에 의하여 난독화가 완료된 파일 및 난독화장치 자체에 대해 해커의 공격전 사전 행위인 내부시스템 파악 및 소스코드 분석을 방해하여 해킹시도를 무력화시킴으로써 보다 강화된 소프트웨어 보안을 유지하는 것이 가능해진다.
도 1a는 일반적인 소스코드 난독화의 이전과 난독화 이후 상태를 예시한 개요도.
도 1b는 종래의 코드 난독화 과정을 예시한 흐름도.
도 2는 종래의 난독화 시스템을 예시한 개요도.
도 3a는 본 발명의 일 실시예의 소프트웨어 보안처리 시스템의 바람직한 실시예의 구성을 예시한 개요도.
도 3b는 본 발명의 일 실시예의 소프트웨어 보안처리 시스템에 의한 보안처리의 각 과정을 예시한 개요도.
도 4는 본 발명의 일 실시예의 소프트웨어 보안처리 시스템의 바람직한 실시예의 구성을 예시한 개요도.
도 5는 본 발명의 일 실시예의 소프트웨어 보안처리 시스템의 바람직한 실시예의 구성을 예시한 개요도.
도 6는 본 발명의 실시예의 난독화장치의 구성을 예시한 개요도.
도 7a는 본 발명의 실시예의 난독화장치에 의하여 코드 가상화에 의한 난독화 전후 상태를 예시한 개요도.
도 7b는 본 발명의 실시예의 난독화장치에 의하여 코드 가상화에 의한 난독화 전후 상태를 예시한 개요도.
도 8은 본 발명의 실시예의 난독화장치의 장치보안수단의 동작상태를 예시한 흐름도.
이하 상기와 같은 구성을 갖는 본 발명에 의한 소프트웨어 난독화장치 및 소프트웨어 보안처리 시스템의 바람직한 실시예의 구성을 첨부된 도면을 참조하여 상세하게 설명한다.
도 3a에서, 본 발명의 실시예의 소프트웨어 보안처리 시스템은, 소스 코딩이 수행되는 개발자 컴퓨터(110)와, 코드 난독화를 수행하는 난독화장치(120)와, 각 개발자 컴퓨터(110)로부터 소스 코딩이 완료된 파일을 수집하여 상기 난독화장치(120)로 입력하며 상기 난독화 장치(120)에서 난독화 완료된 파일을 수신하는 보안관리서버(130)와, 난독화 완료된 파일을 수신하며 난독화 완료된 파일에 대한 테스팅이 수행되는 테스팅서버(160)와, 테스트가 완료된 소프트웨어를 클라이언트에 배포하는 배포서버(180)를 포함하여 구성된다.
본 실시예의 개발자 컴퓨터(110)에서는 소스 코딩을 수행하며, 이를 기계어로 전환을 하여 보안관리서버(130)로 전송한다. 이때, 해당 프로그램이 EXE, DLL, OCX, BPL 등 32Bit 실행파일인 경우에 기계어에서 외부에 노출되서는 안되는 중요한 부분 즉 고도의 난독화를 필요로 하는 부분을 마킹하여 보안관리 서버로 전송한다(도 7a 및 도 7b 참조).
이 경우 마킹은 난독화장치(120)에서 식별가능한 방식과 수단에 의해 행해지며, 마킹의 방식과 수단에 따라 난독화의 종류와 정도를 차등화할 수 있도록 설정하는 것이 가능하며, 실시예에 따른 변형이 있을 수 있다.
본 실시예에서 개발자 컴퓨터(110), 보안관리 서버(130), 난독화장치(120) 테스팅서버(160) 및 배포서버(180)는 TCP/IP 프로토콜 소켓통신에 의하여 파일 송수신이 이루어질 수 있으며, 예컨대 소켓은 본 실시예의 보안시스템에서 제공되는 DLL 파일에 의해서만 난독화장치(120)에 접근 가능하며 보안관리서버(130)와 난독화장치(120)는 오직 난독화대상 파일 및 난독화가 완료된 파일의 교환만이 가능하도록 구성되며, 네트워크에서 난독화장치(120)에 대한 다른 목적의 접근은 불가하도록 난독화장치(120)의 시스템 세팅이 이루어진다.
본 발명의 실시예의 보안관리서버(130)는 네트워크 내 다수의 개발자 컴퓨터(110)에 연결되어 소스코딩 및 기계어번역이 된 파일을 수신하여 이를 난독화장치(120)로 입력하며, 난독화가 완료된 파일을 난독화장치(120)로부터 반환받으며, 반환받은 파일을 테스팅서버(160)로 입력하여 정상동작여부에 대한 테스팅이 수행되게 할 수 있다.
또한, 보안관리서버(130)는 테스팅 서버(160)로부터 난독화 및 테스팅 완료된 파일을 수신하여 배포서버(180)로 전송하며, 수정/보완이 필요한 파일은 해당 개발자 컴퓨터(110)로 반환한다.
도 4에 도시된 바와 같이, 본 발명의 다른 실시예에서는 난독화장치(120)에서 반환받은 난독화 완료된 파일 테스팅이 직접 보안관리서버(130)에서 수행되도록 구성되는 것이 가능하며, 보안관리서버(130)는 난독화 및 테스팅이 완료된 파일을 직접 배포서버(180)로 전송하는 구성에 의할 수 있다.
또한, 도 5에 도시된 바와 같이,본 발명의 또 다른 실시예에서는 네트워크상에서 개발자 컴퓨터(110)와 난독화장치(120)가 소켓통신에 의하여 연결되어 있으며, 개발자 컴퓨터(110)에서 소스코딩 및 기계어번역과 마킹이 이루어진 난독화대상 파일은 시스템에서 제공하는 dll 파일에 의하여 난독화장치(120)로 전달되며, 난독화장치(120)는 난독화가 완료된 파일을 해당 개발자컴퓨터(110)나 테스팅서버(160)로 전달하여 테스팅이 이루어지고 다시 배포서버(180)로 전달되는 구성에 의할 수 있다.
본 발명의 실시예의 보안관리서버(130)와 난독화장치(120)는 보안이 유지될 수 있는 내부망에 위치하는 것이 바람직하다.
본 실시예의 난독화장치(120) 소켓은 보안시스템에서 제공된 DLL 파일을 통하여 보안관리서버(130), 테스팅서버(160) 또는 개발자 컴퓨터(110)와 통신을 하며 난독화 대상 파일을 수신하거나 난독화 완료파일을 송신한다.
도 6에서 본 실시예의 난독화장치(120)는, 메인 프로세서(121)와, 자체보안수단(122) 및 난독화프로그램(123)을 저장하는 저장장치(125)와, 난독화 대상 파일 및 난독화 완료된 파일을 저장하는 데이터베이스(126)와, 보안관리서버와의 소켓통신을 위한 통신수단(127)과, 난독화프로그램 수정 또는 업데이트를 위한 데이터입출력수단(128) 및 디스플레이수단(129)을 포함한다.
본 실시예의 자체 보안수단(122)은 상기 난독화장치(120)에 내장된 내부 파일시스템에 권한 없는 제 3자의 접근을 사전 차단하는 프로그램보안수단(122a)과, 상기 난독화 프로그램이 내장된 하드디스크를 떼내어 다른 장치에서 실행시키는 경우에 그 하드디스크에 저장된 난독화 프로그램을 포함한 파일시스템을 깨뜨리고 해당 하드디스크를 포맷하는 장치보안수단(122b)을 포함한다.
본 실시예의 난독화장치(120)의 프로그램보안수단(122a)은, 고도의 보안알고리즘에 의해 생성된 암호에 의하여만 난독화장치(120)에의 접근이 가능하므로 난독화장치 관리자 이외에는 난독화장치(120)에 대한 어떠한 조작도 불가하며, 파일시스템에 대한 역공학 등에 의한 접근시 난독화 장치(120)는 서비스를 거부하며 경우에 따라 시스템을 재부팅하거나 파일시스템을 삭제하는 등의 동작을 수행할 수 있다.
한편, 본 발명의 실시예에서 장치보안수단(122b)은 물리적인 분해에 의해 난독화장치(120)의 저장장치(인 하드디스크를 꺼내어 제3의 장치에서 동작시키는 경우 기존 난독화장치의 CPU 및 네트워크 카드를 포함한 구성요소 하드웨어들의 고유번호와 개발자 고유의 알고리즘 및 보안표에 의해 장치를 식별하게 되므로 원래의 장치 이외의 제 3의 장치에서는 하드디스크를 동작시키는 것 자체가 불가능하도록 구현된다.
예컨대, 도 8에 도시된 바와 같이 하드웨어를 동작시키는 경우 1차적으로, 동작시키는 시스템의 CPU 고유번호 및 네트워크 카드 등의 하드웨어들의 고유번호로부터 시스템의 키 값(Key value)을 생성하며, 이를 하드웨어에 설치된 소프트웨어 보안처리 시스템 프로그램 설치본의 키 값과 비교하여 같은 경우에만 서비스가 개시될 수 있다(제60단계 내지 제63단계).
또한, 해당 키 값에 대응하는 권한 그룹 데이터 값(Admin Group Data Value) 및 권한 사용자 데이터 값(Admin User Data Value)을 저장하며, 권한 그룹의 변경이나 유저 권한에 대한 정보 변경을 감시하며, 변경이 발생하여 상기 저장한 값과 불일치가 발생하는 경우에는 시스템 침입 대응시스템을 구동한다(제64단계 내지 제80단계). 예컨대, 해당 서비스를 종료하고, 하드디스크의 모든 파일시스템을 삭제하며, 시스템을 재부팅하게 된다. 또한, 파일시스템을 삭제하기 이전에 파일시스템을 파괴하여 파일시스템의 복원을 방지함으로써 권한 없는 제 3자에 의하여 하드디스크의 보안알고리즘 및 난독화 프로그램에 대한 접근을 사전에 차단한다(제81단계 내지 제83단계).
본 실시예의 난독화 장치(120)에는 기계어코드에 대한 난독화를 수행하는 난독화수단이 구비되며, 본 실시예의 난독화수단은 난독화된 실행파일에 대하여 원본코드 추적방해기능과, 안티디버깅기능, 안티패치기능, 암호화기능 등을 부가하도록 하기 위한 난독화 프로그램을 구비하며, 상기 난독화 프로그램에 의해 난독화를 거친 파일에 대한 제3자의 역공학 등 부당한 접근시에는 난독화에 의해 구현된 상기 기능들에 의하여 제 3자의 시스템 해독을 사전에 방지하므로 강화된 소프트웨어 보안을 유지할 수 있게 된다.
예컨대, 본 실시예에서 원본코드 추적방해기능은, API 래퍼(Wrapper) 기능과, API 주소 숨기기, IAT 테이블 파괴, Flow 수정기능을 포함한다.
본 실시예에서 API 래퍼(Wrapper) 기능은 디버거를 통한 분석 및 추적을 어렵게 만들기 위해 정상 API 코드에 여러 가지 더미코드를 삽입하는 것을 의미한다. API 주소 숨기기는 디버거가 메모리에 존재하는 주소값 중 위도우 API를 가르키는 경우 문자열값으로 치환해서 코드 분석을 용이하게 할 수 있기 때문에 디버거가 아예 주소를 인식하지 못하도록 주소값을 변경해버리는 것을 의미한다.
IAT 테이블 파괴는 디스어셈블을 통한 역추적이 불가능하도록 디스어셈블러가 윈도우 API를 찾기 위해 참조하는 IAT 테이블을 파괴시킴으로써 윈도우 API를 찾을 수 없게 하는 것을 의미한다. Flow 수정기능은 코드분석을 어렵게 하기 위해 실행 코드의 흐름을 변경하여 간단한 코드의 흐름도 복잡하게 수정하는 것을 의미한다.
본 실시예에서 안티디버깅기능은, 디버거를 통한 소프트웨어 분석을 차단하기 위해 각종 디버거 툴의 동작자체를 감지 및 차단하는 디버거탐지기능, 모니터링 도구를 통한 소프트웨어 분석 차단을 위한 모니터링 도구 탐지기능, 가상환경에서 소프트웨어를 복사한 후, 구동하여 분석하는 행위를 감지 및 차단하는 가상환경 탐지기능을 포함한다.
본 실시예의 안티패치기능은 소프트웨어 제품을 구성하는 각종 파일들을 수정하여 제품의 보안기능을 우회하는 것을 차단하기 위해 파일 변형 유무 인지를 수행하는 파일변형 검사와, 실행된 소프트웨어의 메모리를 해킹하여 코드의 실행 구조를 변경하는 행위 감지를 하는 메모리 변형검사를 포함한다.
본 실시예의 암호화기능은 소프트웨어의 코드영역을 암호화하여 디스어셈블을 통한 역추적을 사전에 차단할 수 있도록 하는 암호기능을 의미하며, AES, ARIA등의 다양한 알고리즘을 탑재하며, 사용자가 원하는 알고리즘을 선택할 수 있도록 구성된다.
한편, 본 실시예의 난독화장치는, 소프트웨어 난독화의 다양한 기존 기술 예컨대, 구획난독, 데이터 난독, 집합난독, 제어난독 등의 난독화 기법을 구비하고 있어서 더미코드를 삽입하거나, 가변코드를 생성하거나, 제어흐름을 변환시키고, 코드를 가상화시키는 등의 방식으로 실행파일을 난독화한다.
또한, 본 실시예의 난독화장치(120)은 상기 개발자 컴퓨터에서 개발자가 마킹한 기계어의 특정부분에 대하여는 코드 가상화 및 고유의 특수코드에 의한 고도의 난독화 과정을 추가로 수행한다.
예컨대, 도 7a, 도 7b에 도시된 바와 같이 개발자에 의해 마킹된 영역의 기계어 부분은 해당 장치 또는 업체에 고유한 특수코드로 구성된 명령어들로 변환시키며, 이를 해석할 수 있는 가상 CPU를 구성하며, 경우에 따라 다수개의 가상 CPU에 의하여 구성을 하여 해커가 특수코드 및 가상 CPU의 전체 의미를 분석하기 전에는 프로그램의 해독 자체가 불가하도록 구성되므로, 해커의 시스템 분석을 매우 곤란하게 하며 해커에 의한 공격을 사전에 차단할 수 있게 된다.
한편, 본 발명의 바람직한 일 실시예에서는 난독화장치(120)에 내장되는 난독화 프로그램들은 권한 없는 제 3자의 무단 접근에 대응하여 상기 난독화 프로그램에 의해 난독화된 실행파일에 구현된 것과 동일한 난독화 기법 및 기능들에 의하여 난독화 처리가 되는 것이 가능하다.
다음은 상기와 같은 구성을 갖는 본 발명에 의한 소프트웨어 보안처리 시스템의 바람직한 실시예의 작용을 설명한다.
본 실시예에 의하는 경우는 난독화 장치(120) 자체가 네트워크의 내부망에 설치되며, 고도의 보안알고리즘에 의해 보호되는 ID 및 암호에 의하여만 난독화장치(120)에의 접근이 가능하며, 최상위 권한자인 난독화장치 관리자(보안업체의 관리자) 이외에는 난독화장치 저장수단(125)에 저장된 파일시스템에 대한 어떠한 접근과 조작도 불가므로, 난독화 프로그램의 무작위 배포 자체가 불가능해진다.
한편, 난독화장치(120)로부터 난독화 프로그램 등이 저장된 저장장치인 하드디스크 등이 이탈되어 타 장치에서 실행시키는 경우에는 하드디스크 동작 자체가 되지 않음은 물론 하드디스크 파일시스템에 대한 자폭기능이 수행되므로, 난독화 프로그램에 대한 우회적인 접근도 거의 불가능한 구성이므로 악의자에 대한 난독화 알고리즘의 노출을 사전에 차단하는 것이 가능하다.
또한, 본 실시예의 난독화장치(120)에 의하여 난독화된 실행파일은 원본파일 자체를 난독화한 것이므로 이에 대한 역공학이 성공적으로 수행된다고 하더라도 원래 원본파일이 아니라 파일자체가 변형된 형태이므로 제 3자에게는 어떠한 경우에도 온오프라인 서비스에 제공되는 원본파일이 그대로 제공되지는 않으며, 파일의 중요부분은 코드 가상화에 의한 고도 난독화를 수행하여 실행파일 자체가 깨진 상태로 인식되므로 역공학에 의한 원본재생이 거의 불가능해진다.
따라서, 온오프라인 서비스제공을 위한 원본코드가 제 3자에게 확보되기 어렵고, 역공학에 의하는 경우에도 원본을 재생하는 것이 곤란하므로 제3자가 시스템의 구성을 파악하는 것을 사전에 차단할 수 있어서 해킹시도를 무력화시키는 것이 가능해진다.
본 발명의 권리범위는 상기 실시예에 한정되는 것이 아니라 특허청구범위에 기재된 사항에 의해 정해지며, 특허청구범위 기재사항과 균등범위에서 당업자가 행한 다양한 변형과 개작을 포함함은 자명하다.
110.........개발자 컴퓨터 120........난독화장치
122.........자체보안수단 122a.......프로그램 보안수단
122b........장치 보안수단 123........난독화 프로그램
125.........저장장치 130........보안관리서버
160.........테스팅 서버 180........배포서버

Claims (7)

  1. 소스 코딩 및 기계어번역이 완료된 파일을 네트워크를 통해 받아서 코드 난독화를 수행하여 반환하는 난독화수단과;
    상기 난독화수단이 내장된 내부 파일시스템에 권한 없는 제 3자의 접근을 사전 차단하는 프로그램보안수단과;
    상기 난독화 수단을 구성하는 프로그램이 내장된 하드디스크를 떼내어 다른 장치에서 실행시키는 경우에는 그 하드디스크에 저장된 난독화 프로그램을 깨뜨리고 상기 하드디스크를 포맷하는 장치보안수단과;
    접속 권한 있는 컴퓨터에 네트워크를 통하여 접속되어 난독화 대상파일만을 수신하여 상기 난독화수단으로 제공될 수 있게 하며, 상기 난독화 수단에서 난독화 완료된 파일만을 네트워크를 통하여 수신 권한 있는 컴퓨터로 제공하기 위한 파일송수신수단을 포함하여 구성되어 네트워크에서 독립한 장치로 동작하는 것을 특징으로 하는 소프트웨어 난독화 장치.
  2. 청구항 1에 있어서, 상기 난독화장치의 최초 세팅시 상기 난독화장치에서 수행되는 난독화의 방식?종류?회수의 조합을 추가 선택하여 설정할 수 있는 것을 특징으로 하는 소프트웨어 난독화장치.
  3. 청구항 1에 있어서, 상기 난독화장치는,
    개발자 컴퓨터에서 개발자가 마킹한 기계어의 특정부분에 대하여는 코드 가상화 및 특수코드에 의한 고도의 난독화 과정을 추가로 수행하는 것을 특징으로 하는 소프트웨어 난독화장치.
  4. 소스 코딩이 수행되는 적어도 하나의 개발자 컴퓨터와;
    소스 코딩 및 기계어번역이 완료된 원본파일을 받아서 코드 난독화를 수행하여 반환하며, 권한없는 제 3자의 접근이 불가하며, 난독화 프로그램이 내장된 하드디스크를 떼내어 다른 장치에서 실행시키는 경우에는 상기 하드디스크에 저장된 난독화 프로그램을 깨뜨리고 상기 하드디스크를 포맷하는 난독화장치와;
    상기 각 개발자 컴퓨터로부터 소스 코딩이 완료된 파일을 수집하여 상기 난독화장치로 입력하며, 상기 난독화 장치에서 난독화 완료된 파일을 수신하는 보안관리서버를 포함하여 구성되는 것을 특징으로 하는 소프트웨어 보안처리 시스템.
  5. 소스 코딩이 수행되는 적어도 하나의 개발자 컴퓨터와;
    상기 각 개발자 컴퓨터로부터 소스 코딩이 완료된 파일을 수집하는 보안관리서버와;
    상기 보안관리 서버로부터 소스 코딩의 완료된 원본파일을 수신하여 코드 난독화를 수행하여 반환하며, 권한없는 제 3자의 접근이 불가하며, 난독화 프로그램이 내장된 하드디스크를 떼내어 다른 장치에서 실행시키는 경우에는 상기 하드디스크에 저장된 난독화 프로그램을 깨뜨리고 상기 하드디스크를 포맷하는 난독화장치와;
    상기 난독화장치로부터 난독화 완료된 파일을 수신하며 난독화 완료된 파일에 대한 테스팅이 수행되는 테스팅서버를 포함하여 구성되는 것을 특징으로 하는 소프트웨어 보안처리 시스템.
  6. 소스 코딩을 수행하는 적어도 하나의 개발자 컴퓨터와;
    상기 각 개발자 컴퓨터로부터 소스 코딩 및 기계어번역이 완료된 원본파일을 받아서 코드 난독화를 수행하며, 권한없는 제 3자의 접근이 불가하며, 난독화 프로그램이 내장된 하드디스크를 떼내어 다른 장치에서 실행시키는 경우에는 상기 하드디스크에 저장된 난독화 프로그램을 깨뜨리고 상기 하드디스크를 포맷하는 난독화장치와;
    상기 난독화 장치로부터 난독화 완료된 파일을 수신하며, 난독화 완료된 파일에 대한 테스팅이 수행되는 테스팅서버와;
    상기 테스팅 서버에 의하여 테스트가 완료된 소프트웨어를 클라이언트에 배포하는 배포서버를 포함하여 구성되는 것을 특징으로 하는 소프트웨어 보안처리 시스템.
  7. 청구항 4 내지 6 중 어느 하나의 청구항에 있어서, 상기 난독화장치는, 네트워크의 내부망에 구비되는 것을 특징으로 하는 소프트웨어 보안 처리 시스템.

KR1020110058164A 2011-06-15 2011-06-15 소프트웨어 난독화 장치 및 소프트웨어 보안처리 시스템 KR101226615B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110058164A KR101226615B1 (ko) 2011-06-15 2011-06-15 소프트웨어 난독화 장치 및 소프트웨어 보안처리 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110058164A KR101226615B1 (ko) 2011-06-15 2011-06-15 소프트웨어 난독화 장치 및 소프트웨어 보안처리 시스템

Publications (2)

Publication Number Publication Date
KR20120138582A true KR20120138582A (ko) 2012-12-26
KR101226615B1 KR101226615B1 (ko) 2013-01-28

Family

ID=47905360

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110058164A KR101226615B1 (ko) 2011-06-15 2011-06-15 소프트웨어 난독화 장치 및 소프트웨어 보안처리 시스템

Country Status (1)

Country Link
KR (1) KR101226615B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018174901A1 (en) * 2017-03-24 2018-09-27 Visa International Service Association Authentication system using secure multi-party computation
KR20200142754A (ko) * 2019-06-13 2020-12-23 경희대학교 산학협력단 반환 명령어 난독화 방법 및 난독화된 반환 명령어 실행방법
KR20210099880A (ko) * 2020-02-05 2021-08-13 라인플러스 주식회사 컴파일러를 이용한 난독화 방법 및 시스템

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0836530A (ja) * 1994-07-25 1996-02-06 Casio Comput Co Ltd 記憶装置並びに該記憶装置を適用した通信装置
GB2405958A (en) 2003-08-20 2005-03-16 Macrovision Europ Ltd Code obfuscation and controlling a processor by emulation
JP2010517449A (ja) 2007-01-26 2010-05-20 セーフネット インコーポレイテッド 信頼できない受信者における秘密の保護
JP2010244261A (ja) 2009-04-03 2010-10-28 Canon Electronics Inc 情報処理装置、情報処理方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018174901A1 (en) * 2017-03-24 2018-09-27 Visa International Service Association Authentication system using secure multi-party computation
US11431504B2 (en) 2017-03-24 2022-08-30 Visa International Service Association Authentication system using secure multi-party computation
KR20200142754A (ko) * 2019-06-13 2020-12-23 경희대학교 산학협력단 반환 명령어 난독화 방법 및 난독화된 반환 명령어 실행방법
KR20210099880A (ko) * 2020-02-05 2021-08-13 라인플러스 주식회사 컴파일러를 이용한 난독화 방법 및 시스템

Also Published As

Publication number Publication date
KR101226615B1 (ko) 2013-01-28

Similar Documents

Publication Publication Date Title
KR101265099B1 (ko) 소프트웨어 보안 처리방법 및 기록매체
CN109923548B (zh) 通过监管进程访问加密数据实现数据保护的方法、系统及计算机程序产品
Tan et al. A root privilege management scheme with revocable authorization for Android devices
US20210294879A1 (en) Securing executable code integrity using auto-derivative key
US10050982B1 (en) Systems and methods for reverse-engineering malware protocols
KR101176646B1 (ko) 상태 검증을 사용하는 보호된 오퍼레이팅 시스템 부팅을 위한 시스템 및 방법
US8271790B2 (en) Method and system for securely identifying computer storage devices
CN109815698B (zh) 用于执行安全动作的方法和非暂时性机器可读存储介质
US20070180509A1 (en) Practical platform for high risk applications
US20120216242A1 (en) Systems and Methods for Enhanced Security in Wireless Communication
EP1055990A1 (en) Event logging in a computing platform
US20100235647A1 (en) Hardware Security for Software Processes
US20110060915A1 (en) Managing Encryption of Data
CN104991526A (zh) 工业控制系统安全支撑框架及其数据安全传输和存储方法
JP2019057167A (ja) コンピュータプログラム、デバイス及び判定方法
KR101226615B1 (ko) 소프트웨어 난독화 장치 및 소프트웨어 보안처리 시스템
CN112749383A (zh) 软件认证方法和相关产品
Pourali et al. Hidden in plain sight: exploring encrypted channels in android apps
Jarvis et al. Inside a targeted point-of-sale data breach
Ozga et al. Chors: Hardening high-assurance security systems with trusted computing
CN112654986A (zh) 启用软件分布
RU2159953C1 (ru) Способ защиты программного обеспечения
CN116436681B (zh) 一种基于TrustZone的安全隔离系统、方法、终端及存储介质
CN114338245B (zh) 一种基于人工智能的数据防泄密方法及系统
US20240163264A1 (en) Real-time data encryption/decryption security system and method for network-based storage

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee