KR20140097927A - 소프트웨어의 보안을 높이는 방법 - Google Patents

소프트웨어의 보안을 높이는 방법 Download PDF

Info

Publication number
KR20140097927A
KR20140097927A KR1020130010701A KR20130010701A KR20140097927A KR 20140097927 A KR20140097927 A KR 20140097927A KR 1020130010701 A KR1020130010701 A KR 1020130010701A KR 20130010701 A KR20130010701 A KR 20130010701A KR 20140097927 A KR20140097927 A KR 20140097927A
Authority
KR
South Korea
Prior art keywords
source file
software
file
security key
present
Prior art date
Application number
KR1020130010701A
Other languages
English (en)
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 KR1020130010701A priority Critical patent/KR20140097927A/ko
Priority to US14/143,551 priority patent/US20140215225A1/en
Priority to EP14746795.5A priority patent/EP2920728A1/en
Priority to PCT/KR2014/000825 priority patent/WO2014119915A1/en
Publication of KR20140097927A publication Critical patent/KR20140097927A/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 소프트웨어의 바이너리 소스파일에 포함된 코드섹션 일부를 미리 정해진 적어도 하나 이상의 특수 명령으로 치환하고, 상기 치환에 의한 대응관계를 나타내는 테이블을 생성하는 단계 및 상기 소프트웨어의 전처리기 실행파일 내에 상기 테이블을 삽입하는 단계를 포함하고, 나아가 상기 특수명령 및 테이블을 하드웨어 보안키를 통해 암호화 하는 단계를 더 포함하여, 바이너리 소스 파일의 일부 코드만을 치환하여 암호화 가능하며, 하드웨어 보안키를 사용함으로 인해서 암호화(복호화)에 따른 CPU에 걸리지 로드를 낮추면서도, 해킹으로부터의 소프트웨어의 보안을 높이는 방법을 제공한다.

Description

소프트웨어의 보안을 높이는 방법{The methods for increasing the security of the software}
본 발명은 소프트웨어의 보안을 높이기 위한 방법에 관한 것으로, 바이너리 소스 파일 보호 방법 및 그 방법을 수행하는 컴퓨터로 판독 가능한 기록 매체에 관한 것이다.
최근 들어 PC 및 다양한 스마트 기기들의 발전에 따라, 하드웨어뿐 아니라 그 소프트웨어의 가치 또한 높아 지고 있다. 하지만 소프트웨어는 그 형체가 없고 복제가 자유롭기 때문에, 이러한 소프트웨어를 권한 없이 사용하거나, 또는 해커들에 의해서 불법 목적으로 소프트웨어를 리버스 엔지니어링 하는 경우가 늘어나고 있는 실정이다.
따라서, 이러한 소프트웨어의 권한 없는 사용을 막기 위해서 소스 코드 유출 방지를 위한 보호기술이 요구된다. 최근에 사용되고 있는 소프트 웨어 보호 기술들 소스파일에 특정 키를 할당하는 기술, 또는 소프트웨어 암호화(복호화)를 통해서 소스코드에 접근을 막는 방법 등이 있다. 하지만 이러한 방법들은 여전히 소스코드의 해체 가능성이 있어 역 설계 해킹기술로부터 안정성이 낮으며, 또한 일부는 소프트웨어 암호화(복호화) 방식을 사용하여 그 성능이 낮은 문제점이 있었다.
본 발명은 전술한 종래 기술의 문제점을 모두 해결하는 것을 그 목적으로 한다.
본 발명은 소스 파일의 조건 및 비조건 점프를 치환하고, 치환 대응관계가 암호화 된 전처리기 실행파일을 생성하여, 소스파일에 대한 권한 없는 접근이나 리버스 엔지니어링을 막아 소스파일을 보호 하는 것을 다른 목적으로 한다.
본 발명은 소프트웨어 보호를 위해 하드웨어 보호모듈을 사용하여 암호화(복호화)에 따라 CPU에 높은 로드가 걸리는 것을 방지하는 것을 또 다른 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 실시 예에 따라 소프트웨어의 보안을 높이는 방법은 소프트웨어의 바이너리 소스파일에 포함된 코드섹션 일부를 미리 정해진 적어도 하나 이상의 특수 명령으로 치환하는 단계, 상기 치환에 의한 대응관계를 나타내는 테이블을 생성하는 단계 및 상기 소프트웨어의 전처리기 실행파일 내에 상기 테이블을 삽입하는 단계를 포함한다.
이러한 본 발명의 다른 특징에 의하면, 상기 치환되는 코드섹션 일부는 조건 및/또는 비조건 점프일 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 상기 대응 테이블은 상기 특수 명령, 상기 조건 및/또는 비조건 점프, 상기 조건 및/또는 비조건 점프의 위치 중 적어도 하나를 포함할 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 상기 생성된 테이블을 암호화 하는 단계를 더 포함할 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 상기 암호화는 하드웨어 장치에 의해서 제공될 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 상기 특수명령은 상기 치환되는 코드섹션의 위치를 나타낼 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 상기 특수명령이 상기 테이블에 포함될 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 하드웨어 보안키를 생성하는 단계를 더 포함하고, 상기 보안키를 이용하여 상기 특수명령을 암호화 하는 단계를 더 포함할 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 상기 특수명령 각각에 대응하는 적어도 하나이상의 보안키를 생성하여 상기 특수명령 각각을 암호화 할 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 하나의 보안키로 적어도 하나 이상의 상기 특수명령 전부를 암호화 할 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 상기 생성되는 보안키는 HASP, Hardlock, etoken 방식을 포함할 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 사용자가 수정된 파일을 사용하기 위한 후처리 단계를 더 포함하고,
상기 후처리가 완료되면 수정된 상기 바이너리 소스파일 및 상기 전처리기 실행파일을 저장할 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 상기 수정된 명령 전처리 파일의 상기 대응 테이블이 존재하는 코드섹션을 암호화 할 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 상기 암호화는 하드웨어 장치에 의해서 제공될 수 있다.
이러한 본 발명의 또 다른 특징에 의하면, 상기 수정된 바이너리 소스파일을 압축하는 단계를 더 포함하고, 상기 명령 전처리기 실행파일의 데이터 섹션에 상기 압축 수정된 바이너리 소스파일의 설명자를 생성하는 단계를 더 포함할 수 있다.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 상기 기술적 과제를 달성하기 위한 소프트웨어 보안을 높이는 방법을 컴퓨터에서 실행시키기 위한 컴퓨터로 읽을 수 있는 기록매체를 포함한다.
본 발명은 바이너리 소스 파일의 일부 코드만을 치환하여 암호화 가능하며, 또한 소스파일 암호화에 있어서 하드웨어 암호화 모듈을 사용하여 자동 키 생성 등으로부터 해킹 위험이 낮다. 또한 이 과정에서 하드웨어 보호 모듈을 사용함으로 인해서 암호화(복호화)에 따른 CPU에 높은 로드가 걸리는 것을 방지할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 소프트웨어의 보안을 높이는 방법을 개략적으로 나타낸 블록도 이다.
도 2는 본 발명의 일 실시 예에 따른 보안키(231)를 이용하여 대응테이블(221)를 암호화 하는 방법을 나타내는 개략도 이다.
도 3은 본 발명의 일 실시 예에 따른 소프트웨어의 보안을 높이는 방법을 개략적으로 나타낸 순서도 이다.
도 4는 본 발명의 다른 실시 예에 따른 소프트웨어 보안을 위한 수정된 바이너리소스파일과 전처리기 실행파일을 생성하는 단계를 나타낸 순서도 이다.
도 5는 본 발명의 일 실시 예에 따른 바이너리 소스파일을 수정하는 단계의 서브루틴을 나타낸 순서도 이다.
도 6은 본 발명의 일 실시 예에 따른 특수명령을 수정하는 단계의 서브루틴을 나타낸 순서도 이다.
도 7는 본 발명의 일 실시 예에 따른 전처리기 실행파일을 수정하는 단계의 서브루틴을 나타낸 순서도 이다.
도 8은 본 발명의 일 실시 예에 따른 전처리기 실행파일의 특정 부분을 암호화 하는 단계의 서브루틴을 나타낸 순서도 이다.
도 9은 본 발명의 일 실시 예에 따른 소스파일을 압축하는 단계의 서브루틴을 나타낸 순서도 이다.
도 10은 본 발명의 일 실시 예에 따른 보호된 실행파일을 생성하는 단계의 서브루틴을 나타내는 순서도 이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시 예에 따른 소프트웨어의 보안을 높이는 방법을 개략적으로 나타낸 블록도 이다.
도 1을 참조하면 소프트웨어의 보안을 높이기 위한 방법은 소프트웨어에 포함된 소스파일(110)과 명령 전처리기(120)를 구성요소로 포함한다. 또한, 소스파일(110) 보호를 위한 암호화를 수행하는 하드웨어 보안키(131)를 생성하는 하드웨어 모듈(130)도 포함한다.
먼저, 바이너리 소스파일(110)은 점프(jump)(111)을 포함한다. 점프(111)에는 조건 점프(conditional jump) 및 비조건 점프(unconditional jump)가 포함될 수 있으며, 바이너리 소스파일(110)의 역설계 또는 해킹 등을 막기 위해서 점프(111)는 특수명령(112)으로 치환된다.
여기서, 특수명령(112)은 소스파일(110)에 포함된 점프들(111)을 숨기기 위해 미리 설정된 명령어의 풀(pool)이며, 예를 들어 대체된 점프(111)의 위치에 해당하는 키(key)값 일수도 있고, 바이너리 소스파일(110)의 조건 또는 비조건 점프(111)들을 치환하도록 하는 명령어 일 수 있다. 물론 특수명령(112)은 여기에 한정되는 것은 아니며, 설계자가 임의로 설정할 수 있는 값이다.
이러한 치환에 따라 바이너리 소스파일(110)이 수정되면, 추후에 치환된 점프들(112)을 복원하기 위해 치환에 대응되는 값을 기록하는 대응테이블(table of correspondence)(121)이 필요하다.
대응테이블(121)에는 치환에 대응되는 키(key)와 값(value)이 입력될 수 있는데, 예를 들면, 치환된 점프들(111), 특수명령들(112), 치환된 점프들(111)의 위치 등이 입력될 수 있다. 따라서, 특수명령(112)이 키로 입력되고 치환된 점프(111)가 값으로 입력될 수 있다. 그러나 대응테이블(121)의 형태는 사용자가 자유롭게 설정할 수 있는 것으로 이러한 예시에 제한되는 것은 아니다.
이러한 대응테이블(121)을 통해서 사용자는 점프(111)가 치환된 소스파일을 원래대로 복원하여 처리 가능하다. ㅁ대응테이블(121)은 도 1에서 도시되듯이 명령 전처리기(preprocessor:120) 내부에 저장되며, 이는 점프들(111)을 특수명령(112)으로 치환하는 과정에서 생성되며, 구체적으로 미리 대응 테이블(121)을 생성하고 바이너리 소스파일(110)에서 검색된 점프(111)가 특수명령(112)으로 치환 될 때마다 그 대응관계를 입력하여 완성될 수 있다. 이렇게 완성된 대응테이블(121)은 후술하듯이 명령 전처리기(120) 내에 저장된다.
다음으로, 전처리기(120)란 결정표(decision table)를 이용하여 표현한 처리 순서를 COBOL의 원시 프로그램에 번역하거나 구조적 프로그래밍용의 유사 명령을 사용하여 쓴 원시 프로그램을 현존하는 프로그램용 언어의 명령문으로 변환하는 프로그램 또는 장치로써, 상기 대응테이블(121) 또한 바이너리 소스파일(110)을 처리하기 위한 결정표의 일부이다. 따라서 소프트웨어 실행시 전처리기(120)는 대응테이블(121)을 이용하여 점프들이 치환된 바이너리 소스파일을 복원할 수 있게 된다. 대응테이블(121)은 전처리기 내에 존재하도록 하기 위해서 실질적으로 명령 전처리기 실행파일(미도시)의 코드섹션에 기록될 수 있다. 또한, 후술하는 보안키를 이용하여 바이너리 소스파일(110) 및 대응테이블(121)이 암호화된 경우 이를 복호화 하기 위한 권한을 인가해 주는 보안키 테이블(미도시)를 더 포함할 수도 있다.
다음으로 하드웨어 암호화 모듈(130)은 하드웨어 보안키(131)를 생성하여 수정된 소스파일(110) 및 명령 전처리기(120)를 암호화 한다. 바이너리 소스파일이 수정되더라도 점프 치환 대응테이블(121)에 접근하게 되면 소스파일을 복원 가능하므로, 소스파일(110)에 대한 권한 없는 접근 및 역설계를 막기 위해서 암호화가 수행되어야 하기 때문이다.
본 발명의 일 실시 예에 따라 암호화를 수행하기 위해서 하드웨어 보안키(131)가 사용된다. 여기서 하드웨어 보안 키(131)는 키풀(pool of keys)또는 토큰 형태일수 있으며, 하드웨어 암호화 모듈(130)에서 생성되는 것으로써, HASP, Hardlock, eToken등의 방식이 사용될 수 있다. 물론 하드웨어 보안키 생성에 사용되는 방식은 여기에 제한되지 않으며 다른 방법도 사용될 수 있다.
도 2는 본 발명의 일 실시 예에 따른 보안키(231)를 이용하여 대응테이블(221)를 암호화 하는 방법을 나타내는 개략도 이다.
도 2를 참조하면, 생성된 보안키(131)와 대응테이블(121)이 결합되어 암호화 된 대응테이블(122)를 생성한다. 보안키(131)에 대한 권한 없는 사용자가 대응테이블(121)에 접근할 수 없도록 막기 위한 것으로 구체적으로 대응테이블(121)자체 또는 대응테이블(121)내에 소스코드에서의 점프들의 치환에 대응하는 값을 보안키(131)를 결합하여 암호화 하게 된다. 본 발명의 일 실시예에 따라 도2에 도시되듯이 하나의 보안키(131)만을 생성하여 치환에 대응하는 테이블(121)을 한번에 암호화 할 수도 있고, 본 발명의 다른 실시 예에 따라 점프(111) 치환 각각에 대응하는 적어도 두 개 이상의 보안키(131)를 생성하여 각 점프(111)들의 치환에 대응하는 값들 각각을 암호화 할 수도 있다. 전자는 후자에 보안성이 다소 낮지만 하나의 보안키(131)만을 사용하여 CPU에 걸리는 LOAD가 낮은 장점이 있다.
또한, 상기 생성된 보안키(131)는 테이블(121)에 뿐만 아니라 본 발명의 다른 실시 예에 따라 보안키(131)가 점프(111)이 치환된 바이너리 소스파일(110)에 존재하는 특수명령들(112)에 결합 또는 대체함으로써 이를 암호화 할 수 있다. 이렇게 되면, 보안키에 대한 권한 없이는 대응 테이블(111)뿐만 아니라 바이너리 소스파일의 특수명령(112)자체에 접근을 막음으로써 바이너리 소스파일(110)의 역설계 가능성을 봉쇠 할 수도 있다.
결국, 권한 있는 사용자만이 프로그램 실행 시 상기 암호화된 대응테이블을 복호화 할 수 있는 키(또는 토큰)를 부여 받게 되며, 이를 통해 대응테이블을 복원하고, 복원된 점프 치환에 대응하는 테이블을 바탕으로 바이너리 소스코드 파일의 특수명령에 접근할 수 있게 되고, 나아가 수정된 바이너리 소스파일을 복원하여 소프트웨어를 사용할 수 있게 된다.
즉, 바이너리 소스파일의 점프들(111)이 모두 특수명령(112)들로 치환되면, 해커들은 치환 대응 테이블(121)이 없는 한 소프트웨어를 역설계 하거나 소스파일에 권한 없이 접근하는 것은 매우 어렵다. 나아가 상기 치환된 점프들의 리스트가 기록되어있는 대응 테이블이 하드웨어 보안키(131)를 이용하여 암호화 되기 때문에 해커들이 이를 복호화 하는 것은 매우 어려운 반면, 실제 프로그램 실행시 하드웨어적으로 복호화가 수행되므로 CPU에 걸리는 LOAD가 줄어들어 빠른 속도로 복원하여 실행 가능한 장점이 있다.
이하에서는 발명의 일 실시 예에 따른 소프트웨어 소스파일 보호방법을 플로우 차트를 바탕으로 상술한다.
도 3은 본 발명의 일 실시 예에 따른 소프트웨어의 보안을 높이는 방법을 개략적으로 나타낸 순서도 이다.
도 3을 참조하면, 먼저 소프트웨어의 보안을 높이기 위해 단계310에서, 권한 없는 사용자가 바이너리 소스파일(110)에 접근할 수 없도록, 바이너리 소스파일(110)에 포함된 코드섹션 일부를 치환하여 소스파일(110)을 수정한다. 예를 들면, 코드섹션에서 점프들을 검색한 뒤 이를 적어도 하나 이상의 특수명령(112). 소스파일(110)의 수정과 함께, 단계 320에서는 소프트웨어 실행시 치환된 코드섹션을 복원할 수 있도록 치환 대응 테이블(121)을 생성한다. 치환 대응 테이블(121)이 완성되면, 단계 330으로 진행하여, 소프트웨어 실행시 수정된 소스파일을 복원하기 위해 전처리기 실행파일의 새로운 데이터 섹션에 대응 테이블(121)을 삽입하여, 전처리기(120) 를 수정한다.
이러한 방식으로 바이너리 소스파일(110)의 코드섹션 일부만을 치환하여, 소프트웨어의 역설계나 소스파일에 대한 권한 없는 접근을 방지할 수 있다.
도 4는 본 발명의 다른 실시 예에 따른 소프트웨어 보안을 위한 수정된 바이너리소스파일 과 전처리기를 생성하는 단계를 나타낸 순서도 이다.
도 4를 참조하면, 먼저, 단계 410에서, 바이너리 소스파일을 수정하는 단계에 진입한다. 이 단계에서 바이너리 소스파일의 코드섹션의 일부를 치환하고 대응 테이블을 생성한다.
구체적으로 도 5를 참조하면, 먼저, 단계 411에서, 본 발명의 일 실시 예에 따라 소프트웨어 파일에서 바이너리 소스파일(110)을 읽어온다. 그리고, 단계 412에서는 읽어온 바이너리 소스파일(110)에서 소스코드섹션을 분리한 뒤 단계413으로 진행하여 점프(jump)(111)를 검색한다. 예를 들면, 읽어온 바이너리 소스파일(110)에서 소스코드섹션을 분리한 뒤 조건 점프(conditional jump) 및/또는 비조건 점프(un conditional jump)(111)를 검색한다.
다음으로, 분리된 바이너리 소스파일(110)의 코드섹션에서 점프(111)가 검색되면, 단계 414에서 이를 특수명령(special command)(112)으로 치환한다. 여기서, 특수명령(112)은 대체된 점프(111)의 위치에 해당하는 키(key)값 일수도 있고, 바이너리 소스파일(110)의 조건 또는 비조건 점프(111)들을 치환하도록 하는 명령어 일 수 있다. 물론 특수명령(112)은 여기에 한정되는 것은 아니며, 설계자가 임의로 설정할 수 있는 값이다.
이러한 치환은 하나의 점프(111)를 치환하는 것에서 멈추지 않고 계속해서 바이너리 소스파일(110)의 점프들(111)을 검색하고 검색된 점프들(111) 일부 또는 전부를 특수명령들(112)로 대체한다.
검색된 점프(111)들이 특수명령(112)으로 치환되면 단계 415로 진행하여, 이에 대응하는 대응테이블(121)을 생성하고 키와 값을 채운다. 이 테이블(113)은 추후에 치환된 점프들을 다시 복원하기 위해 필요하다.
대응테이블(121)이 완성되면, 단계 416으로 진행하여, 수정인자를 사용하기 위한 후처리(postprocess)를 진행한다. 후처리는 소비자가 바이너리 소스파일을 복원할 수 있도록 하는 처리로, 파일의 내용 및 사용에 대한 규칙을 소비자에게 제공하기 위한 처리를 나타낸다.
후처리가 완료되면, 단계 217에서 수정된 바이너리 소스파일을 저장하여 바이너리 소스파일(110)의 수정을 완료한다.
다시 도4로 돌아와서, 바이너리 소스파일(110)의 수정이 완료되면, 단계 420으로 진행하여 보안키(131)를 생성한다.
본발명의 일 실시 예에 따라 상기 보안키(131)는 치환되는 점프(111)를 권한 없는 사용자가 다시 복원하지 못하도록 암호화 하는 역할을 수행하는 것으로, 하드웨어 모듈에 의해 생성된다. 하드웨어 보안 키(131)는 키풀(pool of keys)또는 토큰 형태일수 있으며, 하드웨어 암호화 모듈(130)에서 생성되는 것으로써, HASP, Hardlock, eToken등의 방식이 사용될 수 있다. 물론 하드웨어 보안키 생성에 사용되는 방식은 여기에 제한되지 않으며 다른 방법도 사용될 수 있다.
보안키(131) 생성이 완료되면 단계 430을로 진행하여 대응 테이블을 수정 한다.
구체적으로 도 2를 참조하면, 본 발명의 일 실시 예에 따라 생성된 보안키(131)와 대응테이블(121)이 결합되어 암호화 된 대응테이블(122)를 생성할 수 있다. 또한, 본 발명의 다른 실시 예에 따라 암호화 이전에 별도의 알고리즘을 이용하여 대응테이블을 좀더 복원하기 쉽거나 혹은 더욱 어려운 형태로 수정하는 것도 가능하다.
다시 도 4로 돌아와서, 대응테이블 암호화가 완료되면 단계440으로 진행하여 특수명령을 수정한다.
구체적으로 도 6을 참조하면 단계 441에서 수정된 바이너리 소스파일을 열고, 단계 442에서 코드섹션을 분리한다. 단계 443에서는 분리된 코드섹션에 존재하는 특수명령(112)들을 검색하여 보안키(131)를 추가한다. 상술했듯이, 특수명령(112)들은 바이너리 소스파일에서 치환된 점프들의 위치를 나타내는 값 또는 키(key)를 가지고 있기 때문에, 본래 소스파일을 복원하는데 사용 될 수 있다. 따라서 권한 없는 사용자의 접근을 막기 위해 특수명령(112)에 보안키(131)를 결합할 수 있다. 이때 본 발명의 일 실시 예에 따라 하나의 보안키(131)만을 생성하여 특수명령(112) 전부를 한번에 암호화 할 수도 있고, 본 발명의 다른 실시 예에 따라 점프(111) 치환 각각에 대응하는 적어도 두 개 이상의 보안키(131)를 생성하여 각 점프(111)들의 치환에 대응하는 값들 각각을 암호화 할 수도 있다. 전자는 후자에 보안성이 다소 낮지만 하나의 보안키(131)만을 사용하여 CPU에 걸리는 LOAD가 낮은 장점이 있다.
특수명령(112) 수정이 완료되면, 단계 444로 진행하여 후처리를 진행하고, 후처리가 완료되면, 단계 445에서 수정된 바이너리 소스파일을 저장하여 바이너리 소스파일(110)을 수정을 완료한다.
다시 도 4로 돌아와서, 특수명령(112) 수정이 완료되면 단계 450으로 진행하여, 전처리기 실행파일을 수정한다.
구체적으로, 도 7을 참조하면, 단계 451에서, 명령 전처리기 실행파일을 열고 단계 452에서 새로운 데이터 섹션에 대응 테이블(121)을 생성한다. 명령 전처리기 실행파일 내에 생성된 대응테이블(121)은 수정된 바이너리 소스파일을 복원하는데 사용되며, 본 발명의 일 실시 예에 따라 도 4의 단계 430에서 설명했듯이 보안키(131)와 결합되어 이미 수정된 대응테이블이 삽입 될 수 도 있다. 대응 테이블 생성이 완료되면, 단계 453으로 진행하여 명령 전처리기 이미지 파일 내에 보안키(131)의 테이블을 배치한다. 보안키 테이블은 도 4의 단계 406에서 보안키와 결합된 특수명령(112)들에 접근하기 위해 사용된다. 명령 전처리기 이미지 파일은 후처리 전 단계에서 생성되는 이미지 파일이며, 후처리는 소비자가 바이너리 소스파일을 복원할 수 있도록 하는 처리로, 명령 전처리기 이미지 파일에 배치된 보안키(131)의 테이블을 이용하여 정당한 권한이 있는 사용자는 수정된 바이너리 소스파일을 복원하여 사용가능 하게 된다.
다시 도 4로 돌아와서, 전처리기 실행파일의 수정이 완료되면 단계 460으로 진행하여, 전처리기 실행 파일의 특정 코드섹션을 암호화 한다.
구체적으로 도 8을 참조하면, 단계 461에서, 명령 전처리기 실행파일을 열고 단계 462에서 코드섹션을 분리 및 탐색하고, 단계 463에서 미리 설정된 특정 코드섹션이 검색되면 이를 암호화 한다. 여기서 암호화 되는 특정 코드 섹션은 바이너리 소스파일을 복원하기 위한 정보를 보관하고 있는 부분으로, 대응 테이블(121)이 기록되어 있는 부분 및/또는 보안키의 테이블이 저장되어 있는 부분의 전체 또는 일부가 해당된다. 이 때의 암호화 방식은 하드웨어에 의해 제공되는 것이라면 어떠한 것이라도 가능하며, 따라서 또다시 하드웨어 암호화 모듈(130)에 의한 암호화 방식이 이용 되어 복호화 시에 CPU에 걸리는 LOAD를 낮게 잡을 수 있다. 특정 코드섹션의 암호화가 완료되면 단계 464로 진행하여 후처리를 진행하고 단계 465로 진행하여 전처리기 실행 파일의 수정 결과를 저장한다.
다시 도 4로 돌아와서, 전처리기 실행파일의 수정이 완료되면 단계 470으로 진행하여, 소프트웨어의 실행파일을 생성하기 위해 수정된 바이너리 소스파일을 압축한다.
구체적으로, 도 9를 참조하면, 단계 471에서 수정된 바이너리 소스파일을 메모리로 읽어온다. 단계 472로 진행하여 수정된 소스파일을 압축(archiving)하고, 단계 473으로 진행하여 수정된 소스파일의 변화를 저장한다.
다시 도 4로 돌아와서, 수정된 바이너리 소스파일의 압축이 완료되면 단계 480으로 진행하여 보호된 스프트웨어 실행파일을 생성한다.
구체적으로, 단계 481에서 명령 전처리기 실행파일을 열고, 단계 482에서 메모리로 읽어온다. 메모리로 읽어오는 단계가 완료되면 단계 483으로 진행하여 전처리기 실행파일의 데이터 섹션에 압축된 바이너리 소스파일의 설명자를 생성하고, 단계 484에서 명령 전처리기 이미지에 압축된 바이너리 소스파일을 위치 시킨다. 단계 485에서 필요한 후처리를 행하고, 단계 486으로 진행하여 수정된 전처리기 실행파일을 저장함으로써, 최종적으로 수정된 바이너리 소스파일과 수정된 전처리기 실행파일을을 포함하는 보호된 실행 파일을 생성하게 된다.
상기 설명된 단계는 반드시 순서대로 처리되어야 하는 것은 아니며, 나아가 일부 단계는 설계자가 요구하는 보안 수준에 따라 생략되거나 또는 다른 보안성 강화를 위해 추가될 수 있다.
본 발명의 일 실시 예에 따른 소프트웨어의 보안성을 높이기 위한 방법은 특정 OS(Operating System)에 제한되지 않으며, 나아가 PC 뿐 아니라 TV, 태블릿 PC, 스마트폰 환경까지 지원하는 크로스 플랫폼(Cross-platform) 솔루션을 지원 가능하다.
본 발명의 일 실시 예에 따른 소프트웨어의 보안성을 높이기 위한 방법을 사용하여 소스파일의 일부분인 조건 및 비조건 점프들만을 치환함에도 불구하고, 소스파일 암호화에 있어서 하드웨어 암호화 모듈을 사용하여 자동 키 생성 등으로부터 해킹 위험이 낮으며. 또한 이 과정에서 하드웨어 보호 모듈을 사용함으로 인해서 암호화(복호화)에 따른 CPU에 높은 로드가 걸리는 것을 방지하면서도 소프트웨어의 보안성을 높일 수 있는 장점이 있다
소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 발명에서 인용하는 공개 문헌, 특허 출원, 특허 등을 포함하는 모든 문헌들은 각 인용 문헌이 개별적으로 및 구체적으로 병합하여 나타내는 것 또는 본 발명에서 전체적으로 병합하여 나타낸 것과 동일하게 본 발명에 병합될 수 있다.
본 발명의 이해를 위하여, 도면에 도시된 바람직한 실시 예들에서 참조 부호를 기재하였으며, 본 발명의 실시 예들을 설명하기 위하여 특정 용어들을 사용하였으나, 특정 용어에 의해 본 발명이 한정되는 것은 아니며, 본 발명은 당업자에 있어서 통상적으로 생각할 수 있는 모든 구성 요소들을 포함할 수 있다.
본 발명은 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 발명은 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 본 발명에의 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 발명은 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 발명은 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
본 발명의 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 본 발명에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 발명의 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 본 발명에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 본 발명이 한정되는 것은 아니다. 본 발명에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 본 발명을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 본 발명의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
110 : 바이너리 소스파일
111 : 점프
112 : 특수 명령
120 : 명령 전처리기
121 : 치환대응 테이블
130 : 하드웨어 암호화 모듈
131 : 하드웨어 보안키

Claims (16)

  1. 소프트웨어의 보안을 높이는 방법에 있어서,
    상기 소프트웨어의 바이너리 소스파일에 포함된 코드섹션 일부를 미리 정해진 적어도 하나 이상의 특수 명령으로 치환하는 단계;
    상기 치환에 의한 대응관계를 나타내는 테이블을 생성하는 단계; 및
    상기 소프트웨어의 전처리기 실행파일 내에 상기 테이블을 삽입하는 단계를 포함하는 소프트웨어의 보안을 높이는 방법.
  2. 제 1항에 있어서,
    상기 치환되는 코드섹션 일부는 조건 및/또는 비조건 점프인 것을 특징으로 하는 소프트웨어의 보안을 높이는 방법.
  3. 제 2항에 있어서,
    상기 대응 테이블은 상기 특수 명령, 상기 조건 및/또는 비조건 점프, 상기 조건 및/또는 비조건 점프의 위치 중 적어도 하나를 포함하는 소프트웨어의 보안을 높이는 방법.
  4. 제 1항에 있어서,
    상기 생성된 테이블을 암호화 하는 단계를 더 포함하는 소프트웨어의 보안을 높이는 방법.
  5. 제 4항에 있어서,
    상기 암호화는 하드웨어 장치에 의해서 제공되는 것을 특징으로 하는 소프트웨어의 보안을 높이는 방법.
  6. 제 1항에 있어서,
    상기 특수명령은 상기 치환되는 코드섹션의 위치를 나타내는 것을 특징으로 하는 소프트웨어의 보안을 높이는 방법.
  7. 제 6항에 있어서,
    상기 특수명령이 상기 테이블에 포함되는 것을 특징으로 하는 소프트웨어의 보안을 높이는 방법.
  8. 제 1항에 있어서,
    하드웨어 보안키를 생성하는 단계를 더 포함하고,
    상기 보안키를 이용하여 상기 특수명령을 암호화 하는 단계를 더 포함하는 소프트웨어의 보안을 높이는 방법.
  9. 제 8항에 있어서,
    상기 특수명령 각각에 대응하는 적어도 하나이상의 보안키를 생성하여 상기 특수명령 각각을 암호화 하는 것을 특징으로 하는 소프트웨어의 보안을 높이는 방법.
  10. 제 8항에 있어서,
    하나의 보안키로 적어도 하나 이상의 상기 특수명령 전부를 암호화하는 것을 특징으로 하는 소프트웨어의 보안을 높이는 방법.
  11. 제 8항에 있어서,
    상기 생성되는 보안키는 HASP, Hardlock, etoken 방식을 포함하는 것을 특징으로 하는 소프트웨어의 보안을 높이는 방법.
  12. 제 1항에 있어서,
    사용자가 수정된 파일을 사용하기 위한 후처리 단계를 더 포함하고,
    상기 후처리가 완료되면 수정된 상기 바이너리 소스파일 및 상기 전처리기 실행파일을 저장하는 것을 특징으로 하는 소프트웨어의 보안을 높이는 방법.
  13. 제 1항에 있어서,
    상기 수정된 명령 전처리 파일의 상기 대응 테이블이 존재하는 코드섹션을 암호화 하는 단계를 더 포함하는 소프트웨어의 보안을 높이는 방법.
  14. 제 13항에 있어서,
    상기 암호화는 하드웨어 장치에 의해서 제공되는 것을 특징으로 하는 소프트웨어의 보안을 높이는 방법.
  15. 제 1항에 있어서,
    상기 수정된 바이너리 소스파일을 압축하는 단계를 더 포함하고,
    상기 명령 전처리기 실행파일의 데이터 섹션에 상기 압축 수정된 바이너리 소스파일의 설명자를 생성하는 단계를 더 포함하는 소프트웨어의 보안을 높이는 방법.
  16. 소프트웨어의 보안을 높이는 방법을 구현하기 위한 프로그램을 기록한 기록매체로서,
    제 1항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020130010701A 2013-01-30 2013-01-30 소프트웨어의 보안을 높이는 방법 KR20140097927A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020130010701A KR20140097927A (ko) 2013-01-30 2013-01-30 소프트웨어의 보안을 높이는 방법
US14/143,551 US20140215225A1 (en) 2013-01-30 2013-12-30 Method for increasing the security of software
EP14746795.5A EP2920728A1 (en) 2013-01-30 2014-01-28 Method for increasing the security of software
PCT/KR2014/000825 WO2014119915A1 (en) 2013-01-30 2014-01-28 Method for increasing the security of software

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130010701A KR20140097927A (ko) 2013-01-30 2013-01-30 소프트웨어의 보안을 높이는 방법

Publications (1)

Publication Number Publication Date
KR20140097927A true KR20140097927A (ko) 2014-08-07

Family

ID=51224366

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130010701A KR20140097927A (ko) 2013-01-30 2013-01-30 소프트웨어의 보안을 높이는 방법

Country Status (4)

Country Link
US (1) US20140215225A1 (ko)
EP (1) EP2920728A1 (ko)
KR (1) KR20140097927A (ko)
WO (1) WO2014119915A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016024838A1 (ko) * 2014-08-13 2016-02-18 (주)잉카엔트웍스 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
KR20210143102A (ko) * 2020-05-19 2021-11-26 웨스턴 디지털 테크놀로지스, 인코포레이티드 보안 키에 의한 커맨드 실행 순서화를 위한 저장 시스템 및 방법

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2913772A1 (de) * 2014-02-28 2015-09-02 Wibu-Systems AG Verfahren und Computersystem zum Schutz eines Computerprogramms gegen Beeinflussung
WO2016102180A1 (en) 2014-12-22 2016-06-30 Koninklijke Philips N.V. Hiding of a program execution
DE102016009439A1 (de) * 2016-08-03 2018-02-08 Giesecke+Devrient Mobile Security Gmbh Individuelles Verschlüsseln von Steuerbefehlen
JP6907847B2 (ja) * 2017-09-14 2021-07-21 日本電気株式会社 ソースプログラム保護システム及び方法
EP3669578B1 (en) 2017-09-28 2022-07-13 Samsung Electronics Co., Ltd. Method and system for handling pdcp operation in wireless communication system
CN108446536B (zh) * 2018-02-12 2021-08-13 北京梆梆安全科技有限公司 一种基于符号执行和单点逻辑的源代码加固方法及装置
US11500969B2 (en) * 2020-01-03 2022-11-15 Microsoft Technology Licensing, Llc Protecting commercial off-the-shelf program binaries from piracy using hardware enclaves

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675645A (en) * 1995-04-18 1997-10-07 Ricoh Company, Ltd. Method and apparatus for securing executable programs against copying
US7770016B2 (en) * 1999-07-29 2010-08-03 Intertrust Technologies Corporation Systems and methods for watermarking software and other media
CN1742270A (zh) * 2003-01-27 2006-03-01 数学技术株式会社 运算处理装置、运算处理装置设计方法以及逻辑电路设计方法
US7386177B2 (en) * 2003-09-30 2008-06-10 Graphic Security Systems Corp. Method and system for encoding images using encoding parameters from multiple sources
US20060230339A1 (en) * 2005-04-07 2006-10-12 Achanta Phani G V System and method for high performance pre-parsed markup language
US7865776B2 (en) * 2007-10-25 2011-01-04 International Business Machines Corporation Adaptive prevention of data loss during continuous event tracing with limited buffer size
EP2219317A1 (en) * 2007-11-09 2010-08-18 Icon Corp. Key management device and information transmission system using the same
KR100950456B1 (ko) * 2008-03-10 2010-04-02 충남대학교산학협력단 실행프로세스와 상호작용하는 별도의 프로세스를 이용한실시간 프로그램 복호화 방법
JP5106447B2 (ja) * 2009-03-10 2012-12-26 株式会社東芝 テストケース生成装置およびその生成方法、ならびにコンピュータプログラム
US8479176B2 (en) * 2010-06-14 2013-07-02 Intel Corporation Register mapping techniques for efficient dynamic binary translation
US20120036373A1 (en) * 2010-08-05 2012-02-09 Softlog Systems (2006) Ltd. Method system and device for secure firmware programming
US9274976B2 (en) * 2010-11-05 2016-03-01 Apple Inc. Code tampering protection for insecure environments
US9250866B2 (en) * 2011-06-20 2016-02-02 Ebay Inc. Systems and methods for incremental software deployment

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016024838A1 (ko) * 2014-08-13 2016-02-18 (주)잉카엔트웍스 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
US10296728B2 (en) 2014-08-13 2019-05-21 Inka Entworks, Inc. Method and system for providing cloud-based application security service
KR20210143102A (ko) * 2020-05-19 2021-11-26 웨스턴 디지털 테크놀로지스, 인코포레이티드 보안 키에 의한 커맨드 실행 순서화를 위한 저장 시스템 및 방법
US11563570B2 (en) 2020-05-19 2023-01-24 Western Digital Technologies, Inc. Storage system and method for command execution ordering by security key

Also Published As

Publication number Publication date
WO2014119915A1 (en) 2014-08-07
US20140215225A1 (en) 2014-07-31
EP2920728A1 (en) 2015-09-23

Similar Documents

Publication Publication Date Title
KR20140097927A (ko) 소프트웨어의 보안을 높이는 방법
US20210294879A1 (en) Securing executable code integrity using auto-derivative key
KR101216995B1 (ko) 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법
US20150078550A1 (en) Security processing unit with configurable access control
CN107122634B (zh) 软件安装包的加固保护方法及装置
EP2264640B1 (en) Feature specific keys for executable code
CN106650327A (zh) 基于动态恢复so文件的Android应用加固方法
TW201732576A (zh) 用於控制有界指標的使用的設備及方法
US10922422B2 (en) Blockchain-based image processing method and apparatus
WO2020228366A1 (zh) 基于区块链的图片处理方法及装置
US20200380150A1 (en) Method of encoding and decoding memory data for software security, recording medium and apparatus for performing the method
Sebastian et al. A study & review on code obfuscation
US9003184B2 (en) Computing device and method for protecting software of the computing device
EP3844647A1 (en) System and method for providing protected data storage in data memory
US20080127078A1 (en) Method and apparatus for preventing modulation of executable program
WO2015154469A1 (zh) 数据库的操作方法及装置
KR101638257B1 (ko) 애플리케이션의 소스 코드 보호 방법 및 이를 수행하는 장치
CN102426637B (zh) 一种嵌入式数据库加密存储方法
CN111104693A (zh) 一种Android平台软件数据破解方法、终端设备及存储介质
KR20080096054A (ko) 데이터의 암호화 저장 방법 및 암호화된 데이터의 판독방법
KR101745821B1 (ko) 시큐어 부팅 방법 및 시스템
JP6215468B2 (ja) プログラム保護装置
CN111291387B (zh) 文件保护方法及其文件处理系统
CN111291389B (zh) 一种计算机核心程序全生命周期的保护方法及系统
KR101781970B1 (ko) 자가 대응 전자문서 불법 유출 방지 장치 및 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid