KR100881733B1 - 소위 감지 및 강제 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법 - Google Patents

소위 감지 및 강제 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법 Download PDF

Info

Publication number
KR100881733B1
KR100881733B1 KR1020047000809A KR20047000809A KR100881733B1 KR 100881733 B1 KR100881733 B1 KR 100881733B1 KR 1020047000809 A KR1020047000809 A KR 1020047000809A KR 20047000809 A KR20047000809 A KR 20047000809A KR 100881733 B1 KR100881733 B1 KR 100881733B1
Authority
KR
South Korea
Prior art keywords
software
execution
protection
unit
protection software
Prior art date
Application number
KR1020047000809A
Other languages
English (en)
Other versions
KR20040026685A (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 발리디
Publication of KR20040026685A publication Critical patent/KR20040026685A/ko
Application granted granted Critical
Publication of KR100881733B1 publication Critical patent/KR100881733B1/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/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Preparing Plates And Mask In Photomechanical Process (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 하나의 유닛으로부터 데이터 처리 시스템 상에서 동작하는 취약 소프트웨어를 불법 사용으로부터 보호하는 방법에 관한 것이다. 본 방법은 하나의 유닛에서 적어도 부분적으로 모니터링될 수 있는 적어도 하나의 소프트웨어 실행 특성, 적어도 하나의 소프트웨어 실행 특성에 대해 준수될 적어도 하나의 기준, 하나의 유닛에서 구현되고 적어도 하나의 소프트웨어 실행 특성이 적어도 하나의 관련 기준을 준수하지 않는지 여부를 감지할 수 있는 감지 수단, 및 적어도 하나의 기준이 준수되지 않을 때 데이터 처리 시스템으로의 통지 및/또는 소프트웨어의 실행의 수정을 위한 하나의 유닛에 구현되는 강제 수단을 정의하는 데 있다.

Description

소위 감지 및 강제 원리를 사용하여 소프트웨어를 불법 사용으로부터 보호하는 방법{METHOD FOR PROTECTING A SOFTWARE USING A SO-CALLED DETECTION AND COERCION PRINCIPLE AGAINST ITS UNAUTHORIZED USE}
본 발명은 일반적으로 데이터 처리 시스템의 기술 분야에 관한 것으로서, 보다 상세하게는 상기 데이터 처리 시스템 상에서 실행되는 소프트웨어를 불법 사용으로부터 보호하는 수단을 목적으로 한다.
본 발명의 주제는 특히 칩 카드 또는 USB 포트 상의 필수 키에 의해 통상 구현되는 유닛 등의 처리 및 기억 유닛을 사용하여 소프트웨어를 불법 사용으로부터 보호하는 수단을 목적으로 한다.
상기 기술 분야에서, 주요 문제는 사용료를 지불하지 않은 사용자에 의한 소프트웨어의 불법 사용에 관한 것이다. 이러한 소프트웨어의 불법 사용은 소프트웨어 저작자, 소프트웨어 배포자 및/또는 이러한 소프트웨어를 제품에 통합한 자에게 명백한 손실을 야기시킨다. 이러한 불법 복사본을 회피하기 위해, 그 기술 상황에서 소프트웨어를 보호하기 위해 여러가지 해결 방안들이 제안되어 왔다.
따라서, 보호키, 즉 "동글"이라는 물리적 부품 등의 하드웨어 보호 시스템을 사용하는 보호 방안이 공지되어 있다. 이러한 보호키는 소프트웨어가 키의 존재시 에만 실행되도록 보장해야만 한다. 그렇지만, 이러한 해결 방안이 우회하기 쉽다는 불편을 제공하기 때문에 비효율적이라는 것은 인정되어야만 한다. 악의의 사람 또는 해커가 디어셈블러 등의 특수 도구의 도움으로 보호키의 제어 명령어를 삭제할 수 있다. 그러면, 보호 없이 실행될 수 있는 소프트웨어의 수정판에 해당하는 불법 복사본을 작성하는 것이 가능하게 된다. 게다가, 이 해결 방안은 2개 이상의 보호키를 동일한 시스템에 연결시키는 것이 어렵기 때문에 모든 소프트웨어에 일반화될 수 없다.
본 발명의 목적은 정확하게는 임시 처리 및 기억 유닛의 존재가 소프트웨어가 완전히 기능하는 데 필요하기 때문에 이러한 유닛을 사용하여 소프트웨어를 불법 사용으로부터 보호하는 프로세스를 제안함으로써 상기한 문제점에 대한 해결 방안을 찾아내는 데 있다.
이러한 목표에 도달하기 위해, 본 발명의 주제는 적어도 처리 수단 및 기억 수단을 포함하는 적어도 하나의 블랭크 유닛을 사용하여, 취약 소프트웨어를 불법 사용으로부터 보호하는 프로세스로서, 취약 소프트웨어는 소스로부터 생성되고 데이터 처리 시스템 상에서 동작하는 것인 보호 프로세스에 관한 것이다. 본 발명에 따른 프로세스는
-> 보호 단계 동안,
· 적어도 하나의 소프트웨어 실행 특성, 적어도 하나의 기준, 감지 수단, 및 강제 수단을 정의하는 단계로서,
- 상기 유닛에서 적어도 부분적으로 모니터링해야 하는 상기 적어도 하나의 소프트웨어 실행 특성,
- 적어도 하나의 소프트웨어 실행 특성에 대해 준수해야 할 상기 적어도 하나의 기준,
- 상기 유닛에서 구현되고 적어도 하나의 소프트웨어 실행 특성이 적어도 하나의 관련 기준을 준수하지 않는 것을 감지할 수 있는 감지 수단, 및
- 상기 유닛에서 구현되고 적어도 하나의 기준이 준수되지 않을 때 상기 데이터 처리 시스템으로의 통지 및/또는 소프트웨어의 실행의 수정을 가능하게 해주는 강제 수단
을 정의하는 단계와,
· 상기 블랭크 유닛을 상기 감지 수단 및 상기 강제 수단을 구현할 수 있게 해주는 유닛으로 변환할 수 있는 개척 수단을 구축하는 단계와,
· 보호 소프트웨어를 생성하는 단계로서,
- 모니터링되어야 하는 소프트웨어 실행 특성 중에서 모니터링할 적어도 하나의 소프트웨어 실행 특성을 선택함으로써,
- 적어도 하나의 선택된 소프트웨어 실행 특성에 대해 준수해야 할 적어도 하나의 기준을 선택함으로써,
- 취약 소프트웨어의 실행 동안 적어도 하나의 피연산자를 사용하여 적어도 하나의 결과를 획득할 수 있고 적어도 하나의 선택된 소프트웨어 실행 특성을 모니터링해야 하는 적어도 하나의 알고리즘적 처리를 선택함으로써,
- 적어도 하나의 선택된 알고리즘적 처리를 포함하는 취약 소프트웨어의 소스의 적어도 하나의 일부분을 선택함으로써,
- 보호 소프트웨어의 소스의 적어도 하나의 수정된 일부분을 획득하기 위해 취약 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하여 취약 소프트웨어의 소스로부터 보호 소프트웨어의 소스를 생성하는 것으로,
> 보호 소프트웨어의 실행 동안, 제1 실행 부분이 데이터 처리 시스템에서 실행되고 제2 실행 부분이 정보의 업로드 후에 블랭크 유닛으로부터 획득되는 유닛에서 실행되도록 하고,
> 제2 실행 부분이 적어도 하나의 선택된 알고리즘적 처리의 기능을 적어도 실행하고
> 보호 소프트웨어의 실행 동안, 적어도 하나의 선택된 실행 특성이 제2 실행 부분에 의해 모니터링되고 기준이 준수되지 않는다는 사실이 보호 소프트웨어의 실행의 수정을 가져오도록 수정하여,
생성함으로써,
- 상기 보호 소프트웨어의 소스로부터 상기 보호 소프트웨어의 제1 오브젝트 부분과 감지 수단 및 강제 수단을 구현하는 개척 수단을 포함하는 상기 보호 소프트웨어의 제2 오브젝트 부분을 생성하는 것으로서,
> 상기 제1 오브젝트 부분은 보호 소프트웨어의 실행 동안 데이터 처리 시스템에서 실행되고 그의 적어도 일부분이 적어도 하나의 선택된 소프트웨어 실행 특성이 모니터링된다는 것을 고려하는 제1 실행 부분이 나타나도록 하고,
> 상기 제2 오브젝트 부분은 블랭크 유닛으로의 업로드 후에 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 소프트웨어 실행 특성이 모니터링되고 기준이 준수되지 않는다는 사실이 보호 소프트웨어의 실행의 수정을 가져오는 데 사용되는 제2 실행 부분이 나타나도록 생성함으로써,
보호 소프트웨어를 생성하는 단계와,
· 유닛을 획득할 목적으로 제2 오브젝트 부분을 블랭크 유닛으로 업로드하는 단계와,
-> 보호 소프트웨어가 실행되고 있는 중인 사용 단계 동안,
· 상기 유닛이 존재하는 경우,
- 보호 소프트웨어의 모든 수정된 일부분의 모든 모니터링된 실행 특성에 해당되는 모든 기준이 준수되는 한, 보호 소프트웨어의 상기 일부분이 정상적으로 동작할 수 있게 하고 그 결과 보호 소프트웨어가 정상적으로 동작할 수 있게 하고
- 보호 소프트웨어의 일부분의 모니터링된 실행 특성에 해당되는 기준의 적어도 하나가 준수되지 않는 경우, 데이터 처리 시스템에의 이의 통지 및/또는 보호 소프트웨어의 일부분의 기능의 수정을 행하여 보호 소프트웨어의 기능이 수정되도록 하는 단계와,
· 상기 유닛이 없는 경우, 상기 제1 실행 부분의 일부분에 의해 상기 유닛에서 선택된 알고리즘적 처리의 기능의 실행을 트리거하라는 요청이 있음에도 불구하고, 상기 요청을 정확하게 이행할 수 없어 적어도 상기 일부분이 정확히 실행 되지 않고 그 결과 상기 보호 소프트웨어가 완전히 기능하지 못하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안에,
· 정의하는 단계로서,
- 모니터링되어야 하는 소프트웨어 실행 특성으로서 소프트웨어의 기능의 사용에 대한 측정 변수와,
- 준수할 기준으로서 각각의 측정 변수와 관련된 적어도 하나의 임계값과,
- 적어도 하나의 측정 변수의 갱신을 가능하게 해주는 구체화 수단을 정의하는 단계와,
· 상기 유닛이 상기 구체화 수단도 구현할 수 있는 상기 개척 수단을 구축하는 단계와,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 모니터링할 소프트웨어 실행 특성으로서 소프트웨어의 적어도 하나의 기능의 사용에 대한 적어도 하나의 측정 변수를 선택함으로써,
- 적어도 하나의 기능, 적어도 하나의 측정 변수, 적어도 하나의 임계값 및 적어도 하나의 갱신 방법을 선택하는 것으로서,
> 측정 변수를 사용하여 그 사용을 모니터링해야 하는 상기 보호 소프트웨어의 적어도 하나의 기능과,
> 상기 기능의 사용을 정량화하는 데 사용되는 적어도 하나의 측정 변수와,
> 상기 기능의 사용의 한계에 해당하는 선택된 측정 변수에 관련된 적어도 하나의 임계값과,
> 상기 기능의 사용에 따라 선택된 측정 변수의 적어도 하나의 갱신 방법을 선택함으로써,
- 상기 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로서, 상기 보호 소프트웨어의 실행 동안 상기 측정 변수가 상기 기능의 사용에 따라 상기 제2 실행 부분에 의해 구체화되고 적어도 하나의 임계값 교차가 고려되도록 수정함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 동안에, 상기 유닛의 존재시에, 적어도 하나의 사용 한계에 해당하는 적어도 하나의 임계값 교차가 감지되는 경우, 상기 데이터 처리 시스템으로의 이의 통지 및/또는 상기 보호 소프트웨어의 일부분의 기능의 수정을 행하여 상기 보호 소프트웨어의 상기 기능이 수정되도록 하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안에,
· 정의하는 단계로서,
- 적어도 하나의 측정 변수에 대한 몇개의 관련 임계값들과,
- 상기 임계값들 각각에 해당하는 서로 다른 강제 수단
을 정의하는 단계와,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 상기 보호 소프트웨어의 소스에서, 상기 기능의 서로 다른 사용 한계에 해당하는 몇개의 임계값과 관련되어야만 하는 적어도 하나의 선택된 측정 변수를 선택함으로써,
- 상기 선택된 측정 변수와 관련된 적어도 2개의 임계값을 선택함으로써,
- 상기 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로서, 상기 보호 소프트웨어의 실행 동안 상기 여러가지 임계값의 교차가 상기 제2 실행 부분에 의해 서로 달리 고려되도록 수정함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 동안에,
· 상기 유닛이 존재하는 경우,
- 제1 임계값의 교차가 감지되는 경우, 상기 보호 소프트웨어를 상기 해당하는 기능을 더 이상 사용하지 못하도록 금지시키는 단계와,
- 제2 임계값의 교차가 감지되는 경우, 상기 해당하는 기능 및/또는 상기 보호 소프트웨어의 적어도 하나의 일부분을 무효화시키는 단계
를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안에,
· 측정 변수에 의해 모니터링되는 적어도 하나의 소프트웨어 기능에 적어도 하나의 부가 사용을 승인할 수 있는 재충전 수단을 정의하는 단계와,
· 유닛이 상기 재충전 수단도 구현할 수 있게 해주는 개척 수단을 구축하는 단계와,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 상기 보호 소프트웨어의 소스에서 기능의 사용을 제한할 수 있고 또 적어도 하나의 부가 사용을 승인할 수 있어야만 하는 적어도 하나의 선택된 측정 변수를 선택함으로써,
- 적어도 하나의 선택된 일부분을 수정하는 것으로, 재충전이라고 하는 단계 동안 선택된 측정 변수에 해당하는 적어도 하나의 기능의 적어도 하나의 부가 사용이 승인될 수 있도록 수정함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 상기 재충전 단계 동안에,
· 기능의 적어도 하나의 부가 사용이 가능하도록 하기 위해 적어도 하나의 선택된 측정 변수 및/또는 적어도 하나의 관련 임계값을 재구체화하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 정의하는 단계로서,
- 모니터링되어야 하는 소프트웨어 실행 특성으로서, 소프트웨어 사용의 프로파일, 및
- 준수해야 할 기준으로서, 적어도 하나의 소프트웨어 실행 특징을 정의하는 단계와,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 모니터링할 소프트웨어 실행 특성으로서 적어도 하나의 소프트웨어 사용 프로파일을 선택함으로써,
- 적어도 하나의 선택된 사용 프로파일이 준수해야만 하는 적어도 하나의 실행 특징을 선택함으로써,
- 상기 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로, 상기 보호 소프트웨어의 실행 동안, 제2 실행 부분이 모든 선택된 실행 특징을 준수하도록 수정함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 동안, 상기 유닛이 존재할 시 적어도 하나의 실행 특징이 준수되지 않는다고 감지되는 경우, 상기 데이터 처리 시스템으로의 이의 통지 및/또는 상기 보호 소프트웨어의 일부분의 기능의 수정을 행하여 상기 보호 소프트웨어의 기능이 수정되도록 하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 정의하는 단계로서,
- 상기 유닛에서 실행되어야 하는 명령어를 갖는 명령어 세트와,
- 상기 명령어 세트에 대한 한 세트의 명령어 커맨드로서, 상기 명령어 커맨드가 데이터 처리 시스템에서 실행되어야만 하고 상기 유닛에서 상기 명령어의 실행을 트리거해야 하는 것인 명령어 커맨드 세트와,
- 사용의 프로파일로서, 상기 명령어의 연쇄와,
- 실행 특징으로서, 상기 명령어의 실행에 대한 예상된 연쇄와,
- 감지 수단으로서, 명령어의 연쇄가 예상된 것에 해당하지 않는다는 것을 감지할 수 있는 수단과,
- 강제 수단으로서, 명령어의 연쇄가 예상된 것에 해당하지 않을 경우 데이터 처리 시스템으로의 통지 및/또는 보호 소프트웨어의 일부분의 기능의 수정을 행할 수 있는 수단을 정의하는 단계와,
· 유닛이 명령어 세트의 명령어도 실행할 수 있게 해주는 개척 수단을 구축하는 단계로서, 명령어의 실행이 데이터 처리 시스템에서의 명령어 커맨드의 실행에 의해 트리거되는 구축 단계와,
· 보호 소프트웨어를 수정하는 단계로서,
- 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로,
> 적어도 하나의 선택된 알고리즘적 처리가 분할되어 상기 보호 소프트웨어의 실행 동안 상기 알고리즘적 처리가 명령어를 사용하여 상기 제2 실행 부분에 의해 실행되도록 하고,
> 적어도 하나의 선택된 알고리즘적 처리에 대해, 명령어 커맨드들이 상기 보호 소프트웨어의 소스에 통합되게 하여 상기 보호 소프트웨어의 실행 동안 각 명령어 커맨드가 상기 제1 실행 부분에 의해 실행되고 상기 유닛에서 상기 제2 실행 부분에 의한 명령어의 실행을 트리거하도록 하며,
> 상기 명령어 커맨드의 순서가 상기 보호 소프트웨어의 실행을 가능하게 해주는 순서 세트들 중에서 선택되도록 하고,
> 명령어의 적어도 일부가 유닛에서의 그의 실행 동안 준수해야만 하는 연쇄가 지정되도록 수정함으로써,
보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 중에 유닛의 존재 시에, 유닛에서 실행되는 명령어의 연쇄가 예상된 것에 해당하지 않는 것으로 감지된 경우, 데이터 처리 시스템으로의 이의 통지 및/또는 보호 소프트웨어의 일부분의 기능의 수정을 행하여 보호 소프트웨어의 기능이 수정되도록 하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안
· 정의하는 단계로서,
- 명령어 세트로서, 그의 일부 명령어가 레지스터를 사용하고 결과를 반환할 목적으로 적어도 하나의 피연산자를 사용하는 명령어 세트와,
- 레지스터를 사용하는 적어도 일부의 명령어에 대해,
> 명령어의 기능을 정의하는 부분,
> 명령어의 실행에 대한 예상된 연쇄를 정의하고 이하에 해당하는 비 트를 포함하는 부분,
<> 명령어의 식별 필드,
<> 명령어의 각 피연산자에 대한
* 플래그 필드, 및
* 피연산자의 예상된 식별 필드,
- 개척 수단에 속하고 명령어 세트에 의해 사용되는 각 레지스터에 대해, 상기 레지스터에 그의 결과를 반환했던 마지막 명령어의 식별을 자동적으로 기억하고 있는 생성된 식별 필드,
- 감지 수단으로서, 명령의 실행 동안 각 피연산자에 대해 플래그 필드가 출현할 때 상기 피연산자에 의해 사용되는 레지스터에 해당하는 생성된 식별 필드 및 상기 피연산자의 출처의 예상된 식별 필드의 동일성을 검사할 수 있는 수단, 및
- 강제 수단으로서, 검사된 동일성 중 적어도 하나가 거짓인 경우 명령어의 결과를 수정할 수 있는 수단을 포함한다.
양호한 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안에,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 상기 보호 소프트웨어의 실행 동안 보호 소프트웨어의 상태를 부분적으로 정의하는 적어도 하나의 선택된 알고리즘적 처리에서 사용되는 적어도 하나의 변수를 선택함으로써,
- 상기 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로서, 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 변수 또는 적어도 하나의 선택된 변수의 복사본이 유닛에 상주하도록
수정함으로써,
- 상기 보호 소프트웨어의 상기 제1 오브젝트 부분과 상기 보호 소프트웨어의 제2 오브젝트 부분을 생성하는 것으로서,
> 상기 제1 오브젝트 부분은 상기 보호 소프트웨어의 실행 동안 상기 제1 실행 부분의 적어도 하나의 일부분이 적어도 하나의 변수 또는 적어도 하나의 변수의 복사본이 유닛에 상주하는 것을 고려하도록 하고,
> 상기 제2 오브젝트 부분은 상기 유닛으로의 업로드 후에 상기 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 변수 또는 적어도 하나의 선택된 변수의 복사본도 역시 유닛에 상주하는 데 사용되는 제2 실행 부분이 나타나도록 생성함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 중에,
· 상기 유닛이 존재하는 경우, 상기 제1 실행 부분의 일부분이 출현할 때마다 상기 유닛에 상주하는 변수 또는 변수의 복사본을 사용하여 상기 일부분이 정확하게 실행되고 그 결과 상기 보호 소프트웨어가 완전히 기능하도록 하는 단계와,
· 상기 유닛이 없는 경우, 상기 제1 실행 부분의 일부분에 의해 상기 유닛에 상주하는 변수 또는 변수의 복사본을 사용하도록 하는 요청이 있음에도 불구 하고, 상기 요청을 정확하게 이행할 수 없어 적어도 상기 일부분이 정확하게 실행되지 못하고 그 결과 상기 보호 소프트웨어가 완전히 기능하지 못하게 되는 단계를 포함한다.
다른 양호한 실시예에서, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 정의하는 단계로서,
- 트리거 명령으로서, 명령어 커맨드,
- 종속 함수로서, 명령어,
- 지시로서, 해당하는 종속 함수의 실행을 트리거하기 위해 데이터 처리 시스템에 의해 유닛으로 전송되는 정보에 적어도 부분적으로 해당하는 트리거 명령에 대한 적어도 하나의 인수,
- 이름 변경된 지시를 갖는 트리거 명령을 획득하기 위해 지시를 이름 변경할 수 있는 지시의 이름 변경 방법, 및
- 사용 단계 동안, 유닛에서 사용되도록 설계되고 이름 변경된 지시로부터 실행할 종속 함수를 복구할 수 있는 복구 수단을 정의하는 단계와,
· 유닛이 복구 수단도 구현할 수 있게 해주는 개척 수단을 구축하는 단계와,
· 보호 소프트웨어를 수정하는 단계로서,
- 보호 소프트웨어의 소스에서 트리거 명령을 선택함으로써,
- 해당하는 종속 함수의 식별자를 감추기 위해 선택된 트리거 명령의 지 시를 이름 변경하여 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정함으로써,
- 보호 소프트웨어의 제1 오브젝트 부분과 복구 수단도 구현하는 개척 수단을 포함하는 보호 소프트웨어의 제2 오브젝트 부분을 생성하는 것으로,
> 상기 제1 오브젝트 부분은 보호 소프트웨어의 실행 동안 이름 변경된 지시를 갖는 트리거 명령이 실행되고,
> 상기 제2 오브젝트 부분이 유닛으로의 업로드 후에 보호 소프트웨어의 실행 동안, 제1 실행 부분에 의해 그의 실행이 트리거되는 종속 함수의 식별자가 제2 실행 부분에 의해 복구되고, 종속 함수가 제2 실행 부분에 의해 실행되도록 생성함으로써,
상기 보호 소프트웨어를 수정하는 단계와
-> 사용 단계 중에,
· 유닛의 존재시에 제1 실행 부분의 일부분에 포함된 이름 변경된 지시를 갖는 트리거 명령이 출현할 때마다 유닛에서 해당하는 종속 함수의 식별자를 복구하고 이를 실행하여 상기 일부분이 정확하게 실행되고 그 결과 보호 소프트웨어가 완전히 기능하도록 하는 단계와,
· 유닛의 부존재 시에 제1 실행 부분의 일부분에 의해 유닛에서의 종속 함수의 실행을 트리거하도록 하는 요청이 있음에도 불구하고, 상기 요청을 정확하게 실시할 수 없어 적어도 상기 일부분이 정확하게 실행되지 않고 그 결과 보호 소프트웨어가 완전히 기능하지 못하게 되는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 적어도 하나의 종속 함수에 대해 알고리즘적으로 동등하지만 서로 다른 이름 변경된 지시를 갖는 트리거 명령에 의해 트리거되는 종속 함수 계열을 정의하는 단계와,
· 보호 소프트웨어를 수정하는 단계로서,
- 보호 소프트웨어의 소스에서 이름 변경된 지시를 갖는 적어도 하나의 트리거 명령을 선택함으로써,
- 이름 변경된 지시를 갖는 하나의 선택된 트리거 명령의 적어도 하나의 이름 변경된 지시를 동일 계열의 종속 함수를 트리거하는 다른 이름 변경된 지시로 대체하여 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정함으로써, 상기 보호 소프트웨어를 수정하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안, 적어도 하나의 종속 함수에 대해 알고리즘적으로 동등한 종속 함수의 계열을 정의하는 단계로서,
- 잡음 필드를 유닛에서 실행할 종속 함수의 기능 부분을 정의하는 정보에 첨부시킴으로써, 또는
- 명령어의 식별 필드와 피연산자의 예상된 식별 필드를 사용함으로써 정의하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 정의하는 단계로서,
- 지시의 이름 변경 방법으로서, 지시를 암호화하는 암호화 방법, 및
- 복구 수단으로서, 이름 변경된 지시를 복호화하고 이에 따라 유닛에서 실행할 종속 함수의 식별자를 복구하는 복호화 방법을 구현하는 수단을 정의하는 단계를 포함한다.
다른 양호한 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 보호 소프트웨어를 수정하는 단계로서,
- 보호 소프트웨어의 소스에서 적어도 하나의 선택된 알고리즘적 처리에서 수행되는 적어도 하나의 조건 분기를 선택함으로써,
- 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로서, 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 조건 분기의 기능이 제2 실행 부분에 의해 유닛에서 실행되도록 수정함으로써,
- 보호 소프트웨어의 제1 오브젝트 부분과 보호 소프트웨어의 제2 오브젝트 부분을 생성하는 것으로서,
> 상기 제1 오브젝트 부분은 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 조건 분기의 기능이 유닛에서 실행되고,
> 상기 제2 오브젝트 부분은 유닛으로의 업로드 후 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 조건 분기의 기능을 실행하는 데 사용되는 제2 실 행 부분이 나타나도록 생성함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 중에,
· 유닛의 존재시에 제1 실행 부분의 일부분이 출현할 때마다, 적어도 하나의 조건 분기의 기능을 유닛에서 실행하여 상기 일부분이 정확하게 실행되고 그 결과 보호 소프트웨어가 완전히 기능하도록 하는 단계와,
· 유닛의 부존재시에 제1 실행 부분의 일부분에 의한 유닛에서의 조건 분기의 기능을 실행하도록 하는 요청에도 불구하고, 상기 요청을 정확하게 실시할 수 없어 적어도 상기 일부분이 정확하게 실행되지 않고 그 결과 보호 소프트웨어가 완전히 기능하지는 못하게 되는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
보호 단계 동안, 보호 소프트웨어를 수정하는 단계로서,
- 보호 소프트웨어의 소스에서 적어도 하나의 일련의 선택된 조건 분기를 선택함으로써,
- 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로, 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 일련의 조건 분기의 전체 기능이 제2 실행 부분에 의해 유닛에서 실행되도록 수정함으로써,
- 보호 소프트웨어의 제1 오브젝트 부분과 보호 소프트웨어의 제2 오브젝트 부분을 생성하는 것으로서,
> 상기 제1 오브젝트 부분은 보호 소프트웨어의 실행 동안 적어도 하 나의 선택된 일련의 조건 분기의 기능이 유닛에서 실행되고,
> 상기 제2 오브젝트 부분은 유닛으로의 업로드 후 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 일련의 조건 분기의 전체 기능을 실행하는 데 사용되는 제2 실행 부분이 나타나도록 생성함으로써,
상기 보호 소프트웨어를 수정하는 단계를 포함한다.
이처럼 본 발명에 따른 프로세스는 실행되고 있는 소프트웨어의 일부분을 포함하는 것의 특성을 제시하는 처리 및 기억 유닛을 사용함으로써 소프트웨어의 사용을 보호할 수 있다. 따라서 처리 및 기억 유닛없이 동작하도록 시도하는 임의의 도출된 소프트웨어 버전도 실행 중에 처리 및 기억 유닛에 포함된 소프트웨어의 일부분을 재생성할 것을 강요하고 그렇지 않으면 상기 도출된 소프트웨어 버전은 완전히 기능하지 못한다.
비제한적인 일례로서 본 발명의 주제의 실시예 및 구현예를 나타낸 첨부 도면을 참조하여 이하에 기술한 설명으로부터 여러가지 다른 특징이 나타난다.
도 10 및 도 11은 본 발명에 따른 프로세스에 의해 각각 보호되지 않는 소프트웨어와 보호되는 소프트웨어의 여러가지 표기를 나타낸 기능 블록도이며,
도 20 내지 도 22는 본 발명에 따른 프로세스를 실시하는 장치의 여러가지 실시예를 일례로서 나타낸 도면이고,
도 30 및 도 31은 본 발명에 따른 프로세스의 일반 원리를 설명하는 기능 블록도이며,
도 40 내지 도 43은 변수에 의해 보호 원리를 구현하는 본 발명에 따른 보호 프로세스를 나타낸 도면이고,
도 70 내지 도 74는 감지 및 강제에 의해 보호 원리를 구현하는 본 발명에 따른 보호 프로세스를 나타낸 도면이며,
도 80 내지 도 85는 이름 변경에 의해 보호 원리를 구현하는 본 발명에 따른 보호 프로세스를 나타낸 도면이고,
도 90 내지 도 92는 조건 분기에 의해 보호 원리를 구현하는 본 발명에 따른 보호 프로세스를 나타낸 도면이며,
도 100은 본 발명의 내용을 구현하는 여러가지 단계를 나타낸 도면이고,
도 110은 본 발명의 보호 단계의 구축 단계의 구현을 가능하게 하는 시스템의 일 실시예를 나타낸 도면이며,
도 120은 본 발명에 따른 보호 프로세스에서 사용되는 사전 커스터마이즈 유닛의 일 실시예를 나타낸 도면이고,
도 130은 본 발명에 따른 보호 단계의 도구 제작 단계의 구현을 가능하게 하는 시스템의 일 실시예를 나타낸 도면이며,
도 140은 본 발명에 따른 보호 프로세스의 구현을 가능하게 하는 시스템의 일 실시예를 나타낸 도면이고,
도 150은 본 발명에 따른 보호 프로세스에서 사용되는 커스터마이즈 유닛의 일 실시예를 나타낸 도면이다.
나머지 설명 부분에서, 이하의 정의가 사용된다.
· 데이터 처리 시스템(3)은 프로그램을 실행할 수 있는 시스템을 말한다.
· 처리 및 기억 유닛은 이하의 일을 할 수 있는 유닛을 말한다.
- 데이터 처리 시스템(3)에 의해 제공되는 데이터를 수신,
- 데이터 처리 시스템(3)으로 데이터를 반환,
- 데이터를 적어도 부분적으로 비밀 상태로 저장 및 이 유닛이 스위치 오프되어 있더라도 상기 데이터의 적어도 일부분을 보유,
- 데이터에 대해 알고리즘 처리를 수행하고 그 결과의 일부 또는 전부를 비밀 상태로 함.
· 유닛(6)은 본 발명에 따른 프로세스를 실시하는 처리 및 기억 유닛을 말한다.
· 블랭크 유닛(60)은 본 발명에 따른 프로세스를 실시하지 않지만 이를 유닛(6)으로 변환시키는 데이터를 수신할 수 있는 유닛을 말한다.
· 사전 커스터마이즈 유닛(66)은 그를 인에이블시키는 데이터의 일부를 수신한 블랭크 유닛(60)을 말하며, 이 데이터는 보충 데이터의 수신 후에 유닛(6)으로 전환된다.
· 블랭크 유닛(60) 또는 사전 커스터마이즈 유닛(66)으로의 정보의 업로드는 블랭크 유닛(60) 또는 사전 커스터마이즈 유닛(66)으로의 정보의 전송 및 상기 전송된 정보의 저장에 해당한다. 이 전송은 가능하게는 정보 포맷의 변경을 포함할 수 있다.
· 데이터 처리 시스템(3)에 들어 있는 변수, 함수 또는 데이터는 대문자로 표시되어 있고, 유닛(6)에 들어 있는 변수, 함수 또는 데이터는 소문자로 표시되어 있다.
· "보호 소프트웨어"는 본 발명에 따른 프로세스에 의해 실시되는 보호 원리들 중 적어도 하나에 의해 보호되는 소프트웨어를 말한다.
· "취약 소프트웨어"는 본 발명에 따른 프로세스에 의해 실시되는 보호의 어떤 원리에 의해서도 보호되지 않는 소프트웨어를 말한다.
· 취약 소프트웨어와 보호 소프트웨어 사이의 구별이 중요하지 않은 경우, 용어 "소프트웨어"가 사용된다.
· 소프트웨어는 그의 라이프 사이클 중의 고려되는 순간에 따라 이하와 같이 여러가지 표기를 갖는다.
- 소스 표기
- 오브젝트 표기
- 배포
- 또는 동적 표기
· 소프트웨어에 대한 소스 표기는 변환 후에 오브젝트 표기로 되는 표기로서 이해하면 된다. 소스 표기는 개념적인 추상 레벨로부터 데이터 처리 시스템 또는 처리 및 기억 유닛에 의해 직접 실행가능한 레벨에까지 여러가지 레벨을 제공할 수 있다.
· 소프트웨어에 대한 오브젝트 표기는 배포로의 이행 및 데이터 처리 시스 템 또는 처리 및 기억 유닛으로의 업로드 후에 실행될 수 있는 레벨의 표기에 해당한다. 이는 예를 들면 바이너리 코드, 인터프리트 코드(interpreted code) 등이 될 수 있다.
· 배포는 오브젝트 표기를 포함하는 물리적 또는 가상적 지원을 말하며, 상기 배포는 사용자의 처분에 따라 그 소프트웨어를 사용할 수 있도록 해주어야만 한다.
· 동적 표기는 소프트웨어의 배포로부터 그 소프트웨어의 실행에 해당한다.
· 소프트웨어의 일부분은 그 소프트웨어의 어떤 부분에 해당하며, 예를 들면 하나 또는 몇개의 연속적이거나 그렇지 않은 명령어, 및/또는 하나 또는 몇개의 연속적이거나 그렇지 않은 기능 블록, 및/또는 하나 또는 몇개의 함수, 및/또는 하나 또는 몇개의 서브프로그램, 및/또는 하나 또는 몇개의 모듈에 해당할 수 있다.
도 10 및 도 11은 일반적인 의미에서의 취약 소프트웨어(2v)와 본 발명에 따른 프로세스에 따라 보호되는 보호 소프트웨어(2p) 각각의 여러가지 표기를 나타내고 있다.
도 10은 취약 소프트웨어(2v)의 라이프 사이클 중에 나타나는 그의 여러가지 표기를 나타낸 것이다. 취약 소프트웨어(2v)는 따라서 이하의 표기 중 임의의 것으로 나타날 수 있다.
· 소스 표기(2vs)
· 오브젝트 표기(2vo)
· 배포(2vd). 상기 배포는 통상 CDROM 등의 물리적 배포 매체의 형태 또는 네트워크(GSM, 인터넷 등)를 통해 배포되는 파일의 형태를 가질 수 있다.
· 또는 전통적으로 적어도 하나의 프로세서(4)를 포함하는 임의의 기지의 유형의 데이터 처리 시스템(3) 상에서의 취약 소프트웨어(2v)의 실행에 해당하는 동적 표기(2ve).
도 11은 보호 소프트웨어(2p)의 라이프 사이클 중에 나타나는 그의 여러가지 표기를 나타낸 도면이다. 보호 소프트웨어(2p)는 따라서 이하의 표기 중 임의의 것으로 나타날 수 있다.
· 데이터 처리 시스템(3)용의 제1 소스 부분과 유닛(6)용의 제2 소스 부분을 포함하며, 상기 소스 부분들 중의 일부는 통상 공통 파일에 들어 있을 수 있는 것인 소스 표기(2ps),
· 데이터 처리 시스템(3)용의 제1 오브젝트 부분(2pos)과 유닛(6)용의 제2 오브젝트 부분(2pou)을 포함하는 오브젝트 표기(2po)
· 이하의 것을 포함하는 배포(2pd)
- 제1 오브젝트 부분(2pos)을 포함하는 제1 배포 부분(2pds)으로서, 이 제1 배포 부분(2pds)은 데이터 처리 시스템(3)용이며 통상적으로 CDROM 등의 물리적 배포 매체의 형태 또는 네트워크(GSM, 인터넷 등)을 통해 배포되는 파일의 형태를 가질 수 있는 것인 제1 배포 부분(2pds),
- 이하의 형태를 갖는 제2 배포 부분(2pdu)
> 제2 오브젝트 부분(2pou)의 일부가 업로드되어 있고 또 사용 자가 유닛(6)을 얻기 위해 보충 데이터를 업로드함으로써 그에 대한 커스터마이즈를 완료해야만 하는 적어도 하나의 사전 커스터마이즈 유닛(66)으로서, 이 보충 데이터는 예를 들면 네트워크를 통한 다운로드에 의해 얻는 것인 적어도 하나의 사전 커스터마이즈 유닛(66),
> 또는 제2 오브젝트 부분(2pou)이 업로드되어 있는 적어도 하나의 유닛(6),
· 또는 보호 소프트웨어(2p)의 실행에 해당하는 동적 표기(2pe). 이 동적 표기(2pe)는 데이터 처리 시스템(3)에서 실행되는 제1 실행 부분(2pes)와 유닛(6)에서 실행되는 제2 실행 부분(2peu)을 포함한다.
보호 소프트웨어(2p)의 여러가지 표기 사이의 구별이 중요하지 않은 경우, 보호 소프트웨어의 제1 부분과 보호 소프트웨어의 제2 부분이란 표현을 사용할 것이다.
도 11의 동적 표기에 따라 본 발명에 따른 프로세스의 구현에서는 링크(5)에 의해 유닛(6)에 링크되어 있는 데이터 처리 시스템(3)을 포함하는 장치(1p)를 사용한다. 데이터 처리 시스템(3)은 임의의 유형이며, 전통적으로 적어도 하나의 프로세서(4)를 포함한다. 데이터 처리 시스템(3)은 컴퓨터 또는 예를 들어 여러가지 기계, 기기, 고정형 또는 가동형 제품, 또는 일반적 의미에서의 매체의 일부일 수 있다. 링크(5)는 예를 들면 직렬 링크, USB 버스, 무선 링크, 광 링크, 네트워크 링크 또는 데이터 처리 시스템(3)의 회로에의 직접 전기적 연결 등과 같은 임의의 가능한 방법으로 실현될 수 있다. 유의해야 할 점은 유닛(6)이 가능하게는 데이터 처리 시스템(3)의 프로세서(4)와 동일한 집적 회로 내부에 물리적으로 위치할 수 있다는 것이다. 이 경우, 유닛(6)은 데이터 처리 시스템(3)의 프로세서(4)에 관한 코프로세스로서 간주될 수 있으며, 링크(5)는 집적 회로의 내부에 있는 것이다.
도 20 내지 도 22는 본 발명에 따른 보호 프로세스의 구현을 가능하게 해주는 장치(1p)의 여러가지 실시예를 나타낸 것으로서, 이는 설명을 위한 것이지 한정하는 것이 아니다.
도 20에 나타낸 실시예에서, 보호 장치(1p)는 데이터 처리 시스템(3)으로서 컴퓨터를 포함하고, 유닛(6)으로서 칩 카드(7)와 통상 카드 리더(card reader)라고 하는 인터페이스(8)를 포함하고 있다. 컴퓨터(3)는 링크(5)에 의해 유닛(6)에 링크되어 있다. 보호 소프트웨어(2p)의 실행 동안, 컴퓨터(3)에서 실행되는 제1 실행 부분(2pes)과 칩 카드(7) 및 그의 인터페이스(8)에서 실행되는 제2 실행 부분(2peu)은 모두가 보호 소프트웨어(2p)가 완전하게 기능하도록 기능해야만 한다.
도 21에 도시한 실시예에서, 보호 장치(1p)는 일반적 의미에서의 제품(9)을 설비하고 있으며, 이러한 제품(9)이 맡고 있는 기능(들)에 적합한 여러가지 컴포넌트(10)를 포함하고 있다. 보호 장치(1p)는 한편으로는 제품(9)에 내장된 데이터 처리 시스템(3)을 포함하고, 다른 한편으로는 제품(9)과 관련된 유닛(6)을 포함한다. 제품(9)이 완전히 기능하기 위해, 보호 소프트웨어(2p)가 완전하게 기능해야만 한다. 따라서, 보호 소프트웨어(2p)의 실행 동안, 데이터 처리 시스템(3)에서 실행되는 제1 실행 부분(2pes)과 유닛(6)에서 실행되는 제2 실행 부분(2peu)은 모 두가 기능해야만 한다. 따라서, 상기 보호 소프트웨어(2p)는 불법 사용으로부터 보호하기 위해 제품(9) 또는 그의 기능들 중 하나를 간접적으로 인에이블시킨다. 예를 들어, 제품(9)은 설비, 시스템, 기계, 장난감, 가전 기기, 전화 등일 수 있다.
도 22에 도시한 실시예에서, 보호 장치(1p)는 몇대의 컴퓨터 및 통신 네트워크의 일부를 포함한다. 데이터 처리 시스템(3)은 제1 컴퓨터로서, 네트워크 유형의 링크(5)에 의해 제2 컴퓨터를 구성하는 유닛(6)에 링크되어 있다. 본 발명의 실시를 위해, 제2 컴퓨터(6)는 보호 소프트웨어(2p)에 대한 라이센스 서버(license server)로서 사용된다. 보호 소프트웨어(2p)의 실행 동안, 보호 소프트웨어(2p)가 완전히 기능하기 위해서는 제1 컴퓨터(3)에서 실행되는 제1 실행 부분(2pes)와 제2 컴퓨터(6)에서 실행되는 제2 실행 부분(2peu)은 모두가 기능해야만 한다.
도 30은 본 발명에 따른 보호 프로세스를 보다 상세히 이해할 수 있게 해준다. 유의할 점은 취약 소프트웨어(2v)가 데이터 처리 시스템(3)에서 완전히 실행되고 있는 것으로 생각한다는 것이다. 반면에, 보호 소프트웨어(2p)의 실시의 경우, 데이터 처리 시스템(3)은 링크(5)에 의해 유닛(6)의 일부인 전송 수단(13)에 링크되어 있는 전송 수단(12)을 포함하여, 보호 소프트웨어(2p)의 제1 실행 부분(2pes)과 제2 실행 부분(2peu) 사이의 통신을 설정할 수 있게 한다.
고려해야 할 것은 전송 수단(12, 13)이 소프트웨어 및/또는 하드웨어 성질을 가지며 데이터 처리 시스템(3)과 유닛(6) 사이의 데이터 통신을 제공, 가능하게는 최적화할 수 있다는 것이다. 상기 전송 수단(12, 13)은 양호하게는 사용된 링크(5)의 유형에 상관없는 보호 소프트웨어(2p)를 마음대로 할 수 있도록 구성되어 있다. 상기 전송 수단(12, 13)은 본 발명의 내용의 일부가 아니며, 당업자라면 잘 알고 있는 바이므로 더 상세히 설명하지 않는다. 보호 소프트웨어(2p)의 제1 부분은 명령을 포함한다. 보호 소프트웨어(2p)의 실행 동안, 상기 명령을 제1 실행 부분(2pes)가 실행함으로써 제1 실행 부분(2pes)과 제2 실행 부분(2peu) 사이의 통신이 가능하게 된다. 나머지 설명에서, 상기 명령은 IN, OUT 또는 TRIG로 표기한다.
도 31에 나타낸 바와 같이, 보호 소프트웨어(2p)의 제2 실행 부분(2peu)의 구현이 가능하도록, 유닛(6)은 보호 수단(14)을 포함한다. 보호 수단(14)은 기억 수단(15) 및 처리 수단(16)을 포함한다.
나머지 설명에서 간명함을 위해, 보호 소프트웨어(2p)의 실행 동안 유닛(6)의 존재 또는 유닛(6)의 부존재를 고려하기로 한다. 실제로, 보호 소프트웨어(2p)의 실행이 정확하지 않을 때마다, 보호 소프트웨어(2p)의 제2 실행 부분(2peu)의 실행에 적합하지 않은 보호 수단(14)을 제공하는 유닛(6)은 없는 것으로 간주된다. 즉,
· 물리적으로 존재하고 보호 소프트웨어(2p)의 제2 실행 부분(2peu)의 실행에 적합한 보호 수단(14)을 포함하는 유닛(6)은 항상 존재하는 것으로 간주된다.
· 물리적으로 존재하지만 적합하지 않은, 즉 보호 소프트웨어(2p)의 제2 실행 부분(2peu)의 정확한 구현을 하지 못하는 보호 수단(14)을 포함하는 유닛(6)은 그것이 정확하게 동작할 때는 존재하는 것으로 간주되고, 정확하게 동작하지 않을 때는 없는 것으로 간주된다.
· 물리적으로 없는 유닛(6)은 항상 없는 것으로 간주된다.
유닛(6)이 칩 카드(7) 및 그의 인터페이스(8)로 구성되어 있는 경우, 전송 수단(13)은 2 부분으로 분할되며, 하나는 인터페이스(8) 상에 있고 다른 하나는 칩 카드(7) 상에 있다. 이 실시예에서, 칩 카드(7)의 부존재는 유닛(6)의 부존재와 동등한 것으로 간주된다. 즉, 칩 카드(7) 및/또는 인터페이스(8)의 부존재시에, 보호 수단(14)은 접근할 수 없으며 보호 소프트웨어(2p)의 제2 실행 부분(2peu)을 실행할 수 없으므로, 보호 소프트웨어(2p)가 완전히 기능하지 못한다.
본 발명에 따르면, 보호 프로세스는 <<감지 및 강제>>에 의한 보호 원리의 구현을 목적으로 하며, 이에 대해서는 도 70 내지 도 74를 참조하여 설명한다.
감지 및 강제에 의한 보호 원리의 구현을 위해, 이하의 것들이 정의된다.
· 유닛(6)에서 적어도 부분적으로 모니터링해야 하는 적어도 하나의 소프트웨어 실행 특성,
· 적어도 하나의 소프트웨어 실행 특성에 대해 준수해야 할 적어도 하나의 기준,
· 유닛(6)에 구현할 감지 수단(17)으로서 적어도 하나의 소프트웨어 실행 특성이 적어도 하나의 관련 기준을 준수하지 않는 것을 감지할 수 있는 감지 수단(17),
· 유닛(6)에 구현될 강제 수단(18)으로서 적어도 하나의 기준이 준수되지 않을 때 데이터 처리 시스템(3)으로의 통지 및/또는 소프트웨어의 실행의 수정을 할 수 있는 강제 수단(18).
감지 및 강제에 의한 보호 원리의 구현을 위해, 블랭크 유닛(60)을 적어도 감지 수단(17) 및 강제 수단(18)을 구현하는 유닛(6)으로 변환할 수 있는 개척 수단도 구축된다.
도 70은 이러한 감지 및 강제에 의한 보호 원리의 구현에 필요한 수단을 나타낸 것이다. 유닛(6)은 감지 수단(17)과 처리 수단(16)에 속하는 강제 수단(18)을 포함한다. 강제 수단(18)은 감지 수단(17)에 의해 기준이 준수되지 않았다는 통지를 받는다.
보다 상세하게는, 감지 수단(17)은 하나 또는 몇개의 소프트웨어 실행 특성을 모니터링하기 위해 전송 수단(13) 및/또는 기억 수단(15) 및/또는 처리 수단(16)으로부터 나오는 정보를 사용한다. 이러한 소프트웨어 실행 특성에 대해 준수해야 할 적어도 하나의 기준이 설정된다.
적어도 하나의 소프트웨어 실행 특성이 적어도 하나의 기준을 준수하지 않은 경우, 감지 수단(17)은 강제 수단(18)에 이를 통지한다. 상기 강제 수단(18)은 적당한 방법으로 유닛(6)의 상태를 수정하도록 구성되어 있다.
감지 및 강제에 의한 보호 원리의 구현을 위해, 이하의 것들도 선택된다.
· 모니터링해야 하는 소프트웨어 실행 특성들 중 모니터링할 적어도 하나의 소프트웨어 실행 특성,
· 적어도 하나의 선택된 소프트웨어 실행 특성에 대해 준수해야 할 적어도 하나의 기준,
· 취약 소프트웨어의 소스(2vs)에서, 적어도 하나의 소프트웨어 실행 특성을 모니터링해야 하는 적어도 하나의 알고리즘적 처리,
· 취약 소프트웨어의 소스(2vs)에서, 적어도 하나의 선택된 알고리즘적 처리를 포함하는 적어도 하나의 일부분.
보호 소프트웨어의 소스(2ps)를 얻기 위해, 이어서 취약 소프트웨어의 소스(2vs)의 적어도 하나의 선택된 일부분이 수정된다. 이 수정은 보호 소프트웨어(2p)의 실행 동안 그 중에서도 특히 다음과 같이 행해진다.
· 데이터 처리 시스템(3)에서 실행되는 제1 실행 부분(2pes)의 적어도 하나의 일부분은 적어도 하나의 선택된 소프트웨어 실행 특성이 적어도 부분적으로 유닛(6)에서 모니터링되는 것을 고려한다,
· 유닛(6)에서 실행되는 제2 실행 부분(2peu)는 선택된 소프트웨어 실행 특성을 적어도 부분적으로 모니터링한다.
감지 및 강제에 의한 보호 원리에 의해 보호되는 보호 소프트웨어(2p)의 실행 동안, 유닛(6)이 존재하는 경우,
· 보호 소프트웨어(2p)의 모든 수정된 일부분의 모든 모니터링된 실행 특성에 해당하는 모든 기준이 준수되는 한, 보호 소프트웨어(2p)의 상기 수정된 일부분은 정상적으로 동작하고, 따라서 상기 보호 소프트웨어(2p)도 정상적으로 동작한다.
· 보호 소프트웨어(2p)의 일부분의 모니터링된 실행 특성에 해당하는 기준의 적어도 하나가 준수되지 않은 경우, 데이터 처리 시스템(3)으로의 통지 및/또는 보호 소프트웨어(2p)의 일부분의 기능의 수정이 행해지며, 따라서 보호 소프트웨어(2p)의 기능이 수정된다.
자연히, 유닛(6)이 존재하지 않는 경우, 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 일부분에 의한 유닛(6)을 사용하도록 하는 적어도 하나의 요청이 정확히 수행될 수 없어 적어도 상기 일부분은 정확히 실행되지 못하고 그 결과 보호 소프트웨어(2p)가 완전히 기능하지 못하게 된다.
감지 및 강제에 의한 보호 원리의 구현을 위해, 2가지 유형의 소프트웨어 실행 특성이 우선적으로 사용된다.
제1 유형의 소프트웨어 실행 특성은 소프트웨어의 실행의 측정 변수에 해당하고, 제2 유형은 소프트웨어의 사용의 프로파일에 해당한다. 상기 2가지 유형의 특성은 독립적으로 또는 결합하여 사용될 수 있다.
실행 특성으로서 소프트웨어 실행의 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 구현을 위해, 이하의 것들이 정의된다.
· 기억 수단(15)에서, 소프트웨어의 적어도 하나의 기능의 사용을 정량화하기 위해 사용되는 적어도 하나의 측정 변수의 기억 가능성,
· 감지 수단(17)에서, 각각의 측정 변수에 관련된 적어도 하나의 임계값을 모니터링할 가능성,
· 그와 관련된 기능의 사용에 따라 각각의 측정 변수의 갱신을 가능하게 해주는 구체화 수단.
감지 수단(17) 및 강제 수단(18) 이외에 구체화 수단을 구현하는 개척 수단 도 구축되어 있다.
또한, 취약 소프트웨어의 소스(2vs)에서 이하의 것들이 선택된다.
· 측정 변수를 사용하여 그 사용을 모니터링해야 할 취약 소프트웨어(2v)의 적어도 하나의 기능,
· 상기 기능의 사용을 정량화하기 위해 사용되는 적어도 하나의 측정 변수,
· 상기 기능의 사용 한계에 해당하는 측정 변수와 관련된 적어도 하나의 임계값,
· 상기 기능의 사용에 따른 적어도 하나의 측정 변수 갱신 방법.
이어서, 보호 소프트웨어의 소스(2ps)를 획득하기 위해 취약 소프트웨어의 소스(2vs)가 수정되며, 이 수정은 보호 소프트웨어(2p)의 실행 동안 제2 실행 부분(2peu)이,
· 상기 기능의 사용에 따라 측정 변수를 구체화하고,
· 적어도 하나의 임계값 교차를 고려하도록 행해진다.
즉, 보호 소프트웨어(2p)의 실행 동안, 측정 변수가 상기 기능의 사용에 따라 갱신되고, 임계값이 교차될 때 감지 수단(17)은 이를 강제 수단(18)에 통지하고, 강제 수단은 데이터 처리 시스템(3)으로의 통지 및/또는 보호 소프트웨어(2p)의 일부분의 기능의 수정을 가능하게 해주는 처리 수단(16)에 의해 수행되는 절차의 수정을 행하는 적합한 결정을 함으로써, 보호 소프트웨어(2p)의 기능이 수정되도록 한다.
특성으로서 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 양호한 제1 변형 실시예의 구현을 위해, 이하의 것들이 정의된다.
· 적어도 하나의 측정 변수에 대한 몇개의 관련 임계값, 및
· 상기 임계값 각각에 해당하는 서로 다른 강제 수단.
또한, 취약 소프트웨어의 소스(2vs)에서,
· 소프트웨어의 적어도 하나의 기능의 사용을 정량화하기 위해 사용되고 상기 기능의 서로 다른 사용 한계에 해당되는 몇개의 임계값들에 관련되어 있어야만 하는 적어도 하나의 측정 변수, 및
· 측정 변수에 관련된 적어도 2개의 임계값이 선택된다.
이어서, 보호 소프트웨어의 소스(2ps)를 획득하기 위해 취약 소프트웨어의 소스(2vs)가 수정되고, 이 수정은 보호 소프트웨어(2p)의 실행 동안 제2 실행 부분(2peu)이
· 상기 기능의 사용에 따라 측정 변수를 구체화하고,
· 여러가지 임계값의 교차를 서로 다르게 고려하도록 행해진다.
즉, 전통적으로 보호 소프트웨어(2p)의 실행 동안, 제1 임계값이 교차될 때, 유닛(6)은 데이터 처리 시스템(3)에 통지하여 보호 소프트웨어(2p)가 상기 기능을 더 이상 사용하지 못하도록 금지시킨다. 보호 소프트웨어(2p)가 상기 기능을 사용하여 계속 실행되면, 제2 임계값에 교차할 가능성이 있다. 제2 임계값에 교차하는 경우, 강제 수단(18)은 선택된 기능을 무효화 및/또는 보호 소프트웨어(2p)를 무효화시킬 수 있다.
특성으로서 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 양호한 제2 변형 실시예의 구현을 위해, 측정 변수에 의해 모니터링되는 적어도 하나의 소프트웨어 기능에 적어도 하나의 부가의 사용을 승인할 수 있는 재충전 수단이 정의된다.
또한, 감지 수단(17), 강제 수단(18) 및 구체화 수단 이외에, 재충전 수단을 구현하는 개척 수단이 구축되어 있다.
또한, 취약 소프트웨어의 소스(2vs)에서 소프트웨어의 적어도 하나의 기능의 사용을 제한하는 데 사용되고 적어도 하나의 부가 사용을 승인받을 수 있어야만 하는 적어도 하나의 측정 변수가 선택된다.
이어서, 보호 소프트웨어의 소스(2ps)를 획득하기 위해 취약 소프트웨어의 소스(2vs)가 수정되며, 이 수정은 재충전 단계 동안 선택된 측정 변수에 해당하는 적어도 하나의 기능에 대한 적어도 하나의 부가 사용을 승인받을 수 있도록 행해진다.
재충전 단계 동안, 해당하는 기능의 적어도 하나의 부가 사용이 가능하도록 하기 위해 적어도 하나의 선택된 측정 변수 및/또는 적어도 하나의 관련 임계값의 재구체화가 수행된다. 즉, 재충전 동안 보호 소프트웨어(2p)의 적어도 하나의 기능의 부가 사용을 승인할 수 있다.
특성으로서 소프트웨어 사용의 프로파일을 사용하여 감지 및 강제에 의한 보호 원리의 구현을 위해, 상기 사용 프로파일에 대해 준수해야 할 기준으로서 적어도 하나의 소프트웨어 실행 특성이 정의된다.
또한, 취약 소프트웨어의 소스(2vs)에서,
· 모니터링할 적어도 하나의 사용 프로파일, 및
· 적어도 하나의 선택된 사용 프로파일이 준수해야만 하는 적어도 하나의 실행 특성이 선택된다.
이어서, 보호 소프트웨어의 소스(2ps)를 얻기 위해, 취약 소프트웨어의 소스(2vs)가 수정되며, 이 수정은 보호 소프트웨어(2p)의 실행 동안 제2 실행 부분(2peu)이 모든 선택된 실행 특성을 준수하도록 행해진다. 즉, 유닛(6)은 자체적으로 제2 실행 부분(2peu)이 실행되는 방식을 모니터링하여 적어도 하나의 실행 특성이 준수되지 않는 경우 데이터 처리 시스템(3)으로의 통지 및/또는 보호 소프트웨어(2p)의 기능 수정을 행할 수 있다.
이 원리에 의해 보호되는 보호 소프트웨어(2p)의 실행 동안, 유닛(6)이 존재하는 경우,
· 보호 소프트웨어(2p)의 모든 수정된 일부분의 모든 실행 특성이 준수되는 한, 보호 소프트웨어(2p)의 상기 수정된 일부분은 정상적으로 동작하고, 따라서 상기 보호 소프트웨어(2p)도 정상적으로 동작한다.
· 보호 소프트웨어(2p)의 일부분의 적어도 하나의 실행 특성이 준수되지 않은 경우, 이에 대한 데이터 처리 시스템(3)으로의 통지 및/또는 보호 소프트웨어(2p)의 일부분의 기능의 수정이 행해지고, 따라서 보호 소프트웨어(2p)의 기능이 수정된다.
예를 들어 마커를 포함한 명령어의 존재의 모니터링 또는 명령어의 적어도 일부에 대한 실행 연쇄의 모니터링과 같이 서로 다른 실행 특징의 모니터링이 고려될 수 있다.
준수해야 할 실행 특징으로서 명령어의 적어도 일부에 대한 실행 연쇄의 모니터링을 사용하여 감지 및 강제에 의한 보호 원리의 구현을 위해, 이하의 것들이 정의된다.
· 유닛(6)에서 실행되어야 하는 명령어를 갖는 명령어 세트,
· 상기 명령어 세트에 대한 명령어 커맨드 세트로서, 상기 명령어 커맨드는 데이터 처리 시스템(3)에서 실행되어야 한다. 데이터 처리 시스템(3)에서의 상기 명령어 커맨드 각각의 실행은 유닛(6)에서 그에 해당하는 명령어의 실행을 트리거한다.
· 명령어의 연쇄가 예상된 것에 해당되지 않는다는 것을 감지할 수 있는 감지 수단(17), 및
· 명령어의 연쇄가 예상된 것에 해당되지 않을 때, 데이터 처리 시스템(3)으로의 통지 및/또는 소프트웨어의 실행의 수정을 행할 수 있는 강제 수단(18).
또한, 유닛(6)이 명령어 세트의 명령어를 실행할 수 있게 해주는 개척 수단도 구축되어 있으며, 상기 명령어의 실행은 데이터 처리 시스템(3)에서의 명령어 커맨드의 실행에 의해 트리거된다.
또한, 취약 소프트웨어의 소스(2vs)에서, 유닛(6)에서 원격으로 실행되어야만 하고 또 그에 대해 명령어의 적어도 일부의 연쇄를 모니터링해야 하는 적어도 하나의 알고리즘적 처리가 선택된다.
이어서, 보호 소프트웨어의 소스(2ps)를 얻기 위해 취약 소프트웨어의 소스(2vs)가 수정되고, 이 수정은 보호 소프트웨어(2p)의 실행 동안
· 제2 실행 부분(2peu)이 선택된 알고리즘적 처리의 기능을 적어도 실행하도록 하고,
· 선택된 알고리즘적 처리가 명령어들로 분할되도록 하며,
· 명령어들 중 적어도 일부가 그의 유닛(6)에서의 실행 동안 준수해야만 하는 연쇄가 지정되도록 하고,
· 보호 소프트웨어(2p)의 제1 실행 부분(2pes)이 유닛(6)에서 명령어의 실행을 트리거하는 명령어 커맨드를 실행하도록 수정된다.
이 원리에 의해 보호되는 보호 소프트웨어(2p)의 실행 동안에, 유닛(6)이 존재하는 경우,
· 유닛(6)에서 실행되는 보호 소프트웨어(2p)의 모든 수정된 일부분의 명령어 연쇄가 예상된 것에 해당하는 한, 보호 소프트웨어(2p)의 모든 수정된 일부분은 정상적으로 동작하고, 따라서 상기 보호 소프트웨어(2p)가 정상적으로 동작한다.
· 유닛(6)에서 실행되는 보호 소프트웨어(2p)의 일부분의 명령어 연쇄가 예상된 것에 해당하지 않는 경우, 이의 데이터 처리 시스템(3)으로의 통지 및/또는 보호 소프트웨어(2p)의 일부분의 기능의 수정이 행해지고, 따라서 보호 소프트웨어(2p)의 기능이 수정된다.
도 71은 예상된 연쇄가 준수되는 경우 준수해야할 실행 특징으로서 명령어의 적어도 일부의 실행 연쇄의 모니터링을 사용하여 감지 및 강제에 의한 보호 원리의 구현의 일례를 나타낸 것이다.
데이터 처리 시스템(3)에서 실행되는 보호 소프트웨어(2p)의 제1 실행 부분(2pes)은 명령어 세트에 속하는 명령어 ii의 유닛(6)에서의 실행을 트리거하는 명령어 커맨드 CIi를 실행한다. 상기 명령어 세트에서, 명령어의 적어도 일부는 각각 명령어의 기능을 정의하는 부분과 예상된 명령어의 실행 연쇄의 확인을 가능하게 해주는 일부분을 포함한다. 이 일례에서, 명령어 커맨드 CIi는 TRIG(ii)로 표기하고, 예상된 명령어의 실행 연쇄는 in,in+1 그리고 in+2이다. 유닛(6)에서의 명령어 in의 실행은 결과 a를 제공하며, 명령어 in+1의 실행은 결과 b를 제공한다. 명령어 in+2는 피연산자로서 명령어 in과 in+1의 결과 a와 b를 사용하고, 그의 실행은 결과 c를 제공한다.
유닛(6)에서 실행되는 상기 명령어 연쇄가 예상된 것이라는 것을 고려하면, 그 결과 보호 소프트웨어(2p)가 정상적인 기능을 한다.
도 72는 예상된 연쇄가 준수되지 않은 경우에, 준수해야 할 실행 특징으로서 명령어의 적어도 한 부분의 실행 연쇄의 모니터링을 사용하여 감지 및 강제에 의한 보호 원리의 구현의 일례를 나타낸 것이다.
이 일례에 따르면, 명령어의 예상된 실행 연쇄는 아직도 in, in+1 및 in+2 이다. 그렇지만, 실행 연쇄는 명령어 in을 명령어 i'n으로 교체함으로써 수정되며, 따라서 실제로 실행되는 연쇄는 i'n, in+1 및 in+2이다. 명령어 i' n의 실행은 결과 a를 제공한다, 즉 명령어 in의 실행과 동일한 결과이다. 그렇지만, 마지막에 명령어 in+2의 실행 동안 감지 수단(17)은 명령어 i'n이 명령어 in+2의 피연산자로서 사용되는 결과 a를 생성할 예상된 명령어에 해당되지 않는다는 것을 감지한다. 감지 수단(17)은 이를 강제 수단(18)에 통지하고 강제 수단(18)은 그에 따라 명령어 in+2의 기능을 수정하고, 따라서 명령어 in+2의 실행은 c와 다를 수 있는 결과 c'을 제공한다. 자연히, 명령어 i'n의 실행이 명령어 in의 결과 a와 다른 결과 a'을 제공하는 경우, 명령어 in+2의 결과도 c와 다를 수 있다는 것도 분명하다.
유닛(6)에서 실행되는 명령어의 실행 연쇄가 예상된 것에 해당되지 않는 한, 따라서 보호 소프트웨어(2p)의 기능의 수정이 획득될 수 있다.
도 73 및 도 74는 준수해야 할 실행 특징으로서 명령어의 적어도 한 부분의 실행 연쇄의 모니터링을 사용하여 감지 및 강제에 의한 보호 원리의 양호한 변형 실시예를 나타낸 것이다. 이 양호한 변형례에 따르면, 명령어 세트가 정의되어 있으며 그의 적어도 일부의 명령어는 레지스터를 사용하고 또 결과를 반환할 목적으로 적어도 하나의 피연산자를 사용한다.
도 73에 도시한 바와 같이, 레지스터를 사용하는 적어도 일부의 명령어에 대해 명령어의 기능을 정의하는 부분 PF와 명령어의 예상된 실행 연쇄를 정의하는 부분 PE가 정의되어 있다. 부분 PF은 당업자라면 알고 있는 연산 코드에 해당한다. 예상된 연쇄를 정의하는 부분 PE는 이하의 것에 해당하는 비트 필드를 포함한다.
· 명령어의 식별 필드 CII,
· 명령어의 각 피연산자 k(k는 1부터 K까지 변함), 즉 K개의 명령어 피연산자에 대해,
- 피연산자 k의 출처를 확인하기에 적합한지 여부를 나타내는 플래그 필드 CDk, 및
- 피연산자 k의 내용을 생성한 명령어의 예상된 식별자를 나타내는 피연산자의 예상된 식별 필드 CIPk.
도 74에 도시한 바와 같이, 명령어 세트는 처리 수단(16)에 속하는 V개의 레지스터를 포함하며, 각 레지스터에는 Rv(v는 1부터 V까지 변함)의 이름이 붙여져 있다. 각 레지스터 Rv마다, 이하의 2개의 필드가 정의된다.
· 당업자라면 알고 있는 것으로서 명령어의 실행의 결과를 저장할 수 있는 기능 필드 CFv, 및
· 기능 필드 CFv의 내용을 생성한 명령어의 식별자를 기억할 수 있는 식별 필드 CIGv. 상기 생성된 식별 필드 CIGv는 기능 필드 CFv를 생성한 명령어의 식별 필드 CII의 내용으로 자동적으로 갱신된다. 상기 생성된 식별 필드 CIGv는 어떤 명령어에 의해서도 접근할 수 없고 또 수정될 수도 없으며, 감지 수단(17)에 대해서만 사용된다.
명령어의 실행 동안, 감지 수단(17)은 각 피연산자 k마다 이하의 동작을 수행한다.
· 플래그 필드 CDk가 판독된다.
· 플래그 필드 CDk가 출현하는 경우, 피연산자 k에 의해 사용되는 레지스터에 해당하는 예상된 식별 필드 CIPk와 생성된 식별 필드 CIGv 모두가 판독된다.
· 2개의 필드 CIPk와 CIGv의 동일성이 검사된다.
· 동일하지 않은 경우, 감지 수단(17)은 명령어의 실행 연쇄가 준수되지 않은 것으로 간주한다.
강제 수단(18)은 감지 수단(17)이 명령어 연쇄가 준수되지 않은 것을 통지하였을 때 명령어의 결과를 수정할 수 있다. 양호한 실시예에서는 현재 실행되는 명령어의 기능 부분 PF 또는 후속 명령어의 기능 부분 PF을 수정함으로써 수행된다.
본 발명의 다른 유리한 특성에 따르면, 보호 프로세스는 <<변수>>에 의한 보호 원리의 실시를 목적으로 하며, 이에 대한 설명은 도 40 내지 도 43를 참조하여 할 것이다.
변수에 의한 보호 원리를 구현하기 위해, 취약 소프트웨어의 소스(2vs)에서는 취약 소프트웨어(2v)의 실행 동안에 그의 상태가 부분적으로 정의되는 적어도 하나의 변수가 선택된다. 소프트웨어의 상태에 의해 상기 소프트웨어의 완전한 실행에 필요한 주어진 순간에서의 정보 세트가 이해되어야만 하므로, 이러한 선택된 변수의 부존재는 상기 소프트웨어의 완전한 실행에 장애가 된다. 또한, 적어도 하 나의 선택된 변수를 포함하는 취약 소프트웨어의 소스(2vs)의 적어도 일부분이 선택된다.
취약 소프트웨어의 소스(2vs)의 적어도 하나의 선택된 일부분은 이어서 보호 소프트웨어의 소스(2ps)를 얻기 위해 수정된다. 이 수정은 보호 소프트웨어(2p)의 실행 동안 데이터 처리 시스템(3)에서 실행되는 제1 실행 부분(2pes)의 적어도 일부분이 적어도 하나의 선택된 변수 또는 적어도 하나의 선택된 변수의 복사본이 유닛(6)에 존재한다는 것을 고려 하도록 행해진다.
도 40은 취약 소프트웨어(2v)의 실행의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서 취약 소프트웨어(2v)의 실행 동안 이하의 일이 일어난다.
· 시각 t1에서, 변수 V1에 데이터 X를 할당하며, V1←X로 표기함,
· 시각 t2에서, 변수 Y에 변수 V1의 값을 할당하며, Y←V1로 표기함,
· 시각 t3에서, 변수 Z에 변수 V1의 값을 할당하며, Z←V1로 표기함.
도 41은 변수가 유닛(6)에 존재하는 경우의 본 발명의 제1 구현 형태의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안 및 유닛(6)의 존재 시에, 이하의 일이 일어난다.
· 시각 t1에서, 데이터 처리 시스템(3)으로부터 유닛(6)의 기억 수단(15)에 위치하는 변수 v1으로 데이터 X의 전송을 트리거하는 전송 명령의 실행으로서, 이 전송 명령은 OUT(v1, X)로 표기되어 있고 종국에는 변수 v1로의 데이터 X의 할당에 해당함,
· 시각 t2에서, 유닛(6)에 존재하는 변수 v1의 값의 데이터 처리 시스템(3)으로 전송하여 이를 변수 Y에 할당하도록 트리거하는 전송 명령의 실행으로서, 이 전송 명령은 IN(v1)으로 표기되어 있고 종국에 변수 Y로의 변수 v1의 값의 할당에 해당함,
· 시각 t3에서, 유닛(6)에 존재하는 변수 v1의 값의 데이터 처리 시스템(3)으로 전송하여 이를 변수 Z에 할당하도록 트리거하는 전송 명령의 실행으로서, 이 전송 명령은 IN(v1)으로 표기되어 있고 종국에 변수 Z로의 변수 v1의 값의 할당에 해당함.
유의할 점은 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 변수가 유닛(6)에 존재한다는 것이다. 따라서, 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 일부분이 그것을 강제할 때, 유닛(6)이 존재하는 경우 유닛(6)에 존재하는 상기 변수의 값은 보호 소프트웨어(2p)의 제1 실행 부분(2pes)에 의해 사용되도록 데이터 처리 시스템(3)으로 전송되므로, 상기 일부분은 정확하게 실행되고 결과적으로 보호 소프트웨어(2p)가 완전하게 기능하게 된다.
도 42는 변수의 복사본이 유닛(6)에 존재하는 경우의 본 발명의 제2 구현 형 태의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안, 유닛(6)이 존재하는 경우 이하의 일이 일어난다.
· 시각 t1에서, 데이터 X의 데이터 처리 시스템(3)에 위치하는 변수 v1으로의 할당 및 데이터 X의 데이터 처리 시스템(3)으로부터 유닛(6)의 기억 수단(15)에 위치하는 변수 v1으로의 전송을 트리거하는 전송 명령의 실행으로서, OUT(v1, X)로 표기함,
· 시각 t2에서, 변수 v1의 값의 변수 Y로의 할당,
· 시각 t3에서, 유닛(6)에 존재하는 변수 v1의 값의 데이터 처리 시스템(3)으로 전송하여 이를 변수 Z에 할당하도록 트리거하는 전송 명령의 실행으로서, IN(v1)으로 표기함.
유의할 점은 보호 소프트웨어(2p)의 실행 동안에 적어도 하나의 변수의 복사본이 유닛(6)에 존재한다는 것이다. 따라서, 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 일부분이 그를 강제할 때 유닛(6)이 존재하는 경우, 유닛(6)에 존재하는 변수의 상기 복사본의 값이 데이터 처리 시스템(3)으로 전송되어 보호 소프트웨어(2p)의 제1 실행 부분(2pes)에 의해 사용되므로, 상기 일부분은 정확하게 실행되고 그 결과 보호 소프트웨어(2p)가 완전하게 기능하게 된다.
도 43은 유닛(6)이 없을 경우 보호 소프트웨어(2p)의 실행을 시도하는 일례 를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안
· 시각 t1에서, 전송 명령 OUT(v1, X)의 실행은 유닛(6)의 부존재를 고려하여 데이터 X의 변수 v1으로의 전송을 트리거할 수 없다.
· 시각 t2에서, 전송 명령 IN(v1)의 실행은 유닛(6)의 부존재를 고려하여 변수 v1의 값의 데이터 처리 시스템(3)으로의 전송을 트리거할 수 없다.
· 시각 t3에서, 전송 명령 IN(v1)의 실행은 유닛(6)의 부존재를 고려하여 변수 v1의 값의 데이터 처리 시스템(3)으로의 전송을 트리거할 수 없다.
따라서, 유닛(6)의 부존재시에 제1 실행 부분(2pes)의 일부분에 의한 유닛(6)에 존재하는 변수 또는 변수의 복사본의 사용에 대한 적어도 한번의 요청이 정확하게 수행될 수 없으며, 따라서 적어도 상기 일부분은 정확하게 실행되지 않고 그 결과 보호 소프트웨어(2p)가 완전히 기능하지 못한다.
유의할 점은 이전의 일례에서 나타낸 데이터 처리 시스템(3)과 유닛(6) 사이의 데이터 전송은 단지 단순한 할당만을 사용하지만 당업자라면 이들을 다른 연산과 조합하여 예를 들면 OUT(v1,2*X+3) 또는 Z←(5*v1+v2) 등의 복잡한 연산을 달성하는 방법을 알고 있다는 것이다.
본 발명의 다른 유리한 특징에 따르면, 보호 프로세스는 <<이름 변경>>에 의한 보호 원리를 구현하는 것을 목적으로 하며, 이에 대해서는 도 80 내지 도 85를 참조하여 설명한다.
이름 변경에 의한 보호 원리의 구현을 위해, 이하의 것들이 정의된다.
· 한 세트의 종속 함수. 이 종속 함수는 유닛(6)에서 제2 실행 부분(2peu)에 의해 실행되어야 하며 가능하게는 데이터 처리 시스템(3)과 유닛(6) 사이에서 데이터를 전송하기 위한 것이며, 상기 종속 함수 세트는 유한이거나 무한일 수 있다.
· 상기 종속 함수에 대한 한 세트의 트리거 명령. 이 트리거 명령은 데이터 처리 시스템(3)에서 실행되어야 하며 유닛(6)에서 해당하는 종속 함수의 실행을 트리거하기 위한 것이다.
· 각 트리거 명령마다, 해당하는 종속 함수의 실행을 트리거 하기 위해 제1 실행 부분(2pes)에 의해 제2 실행 부분(2peu)으로 전송되는 정보에 적어도 부분적으로 해당하는 지시. 이 지시는 트리거 명령의 적어도 하나의 인수의 형태를 갖는다.
· 취약 소프트웨어(2v)의 수정 동안 사용되도록 설계된 지시의 이름 변경 방법. 이러한 방법은 트리거 명령을 획득하기 위해 지시의 이름을 변경할 수 있으며 이름 변경된 지시가 해당하는 종속 함수의 식별자를 감출 수 있게 된다.
· 사용 단계 중에 유닛(6)에서 사용되도록 설계된 것으로서, 실행할 종속 함수를 복구하기 위해 이름 변경된 지시로부터 최초 지시를 복구할 수 있는 복구 수단(20).
이름 변경에 의한 보호 원리의 구현을 위해, 블랭크 유닛(60)을 복구 수단(20)을 적어도 구현하는 유닛(6)으로 변환할 수 있는 개척 수단도 구축된다.
이름 변경에 의한 보호 원리의 구현을 위해, 취약 소프트웨어의 소스(2vs)에서 이하의 것들도 선택된다.
· 적어도 하나의 피연산자를 사용하고 적어도 하나의 결과를 반환하는 적어도 하나의 알고리즘적 처리, 및
· 적어도 하나의 선택된 알고리즘적 처리를 포함하는 취약 소프트웨어의 소스(2vs)의 적어도 하나의 일부분.
이어서, 보호 소프트웨어의 소스(2ps)를 획득하기 위해 취약 소프트웨어의 소스(2vs)가 수정된다. 이 수정은 그 중에서도 특히 다음과 같이 행해진다.
· 보호 소프트웨어(2p)의 실행 동안, 데이터 처리 시스템(3)에서 실행되는 제1 실행 부분(2pes)의 적어도 하나의 일부분이 적어도 하나의 선택된 알고리즘적 처리의 기능이 유닛(6)에서 실행된다는 것을 고려하도록 수정되고,
· 보호 소프트웨어(2p)의 실행 동안, 유닛(6)에서 실행되는 제2 실행 부분(2peu)이 적어도 하나의 선택된 알고리즘적 처리의 기능을 적어도 실행하도록 수정되며,
· 각각의 선택된 알고리즘적 처리가 분할되어 보호 소프트웨어(2p)의 실행 동안 각각의 선택된 알고리즘적 처리가 종속 함수를 사용하여 제2 실행 부분(2peu)에 의해 실행되도록 수정되고, 양호하게는 각각의 선택된 알고리즘적 처리가 종속 함수 fdn(n은 1부터 N까지 변함), 즉
- 가능하게는 하나 또는 몇개의 피연산자를 유닛(6)의 처분에 맡길 수 있는 하나 또는 몇개의 종속 함수,
- 종속 함수로서, 그 일부가 피연산자(들)를 사용하고 또 이 피연산자(들)를 사용하여 선택된 알고리즘적 처리의 기능을 조합하여 실행하는 종속 함수, 및
- 가능하게는 선택된 알고리즘적 처리의 결과를 유닛(6)에 의해 데이터 처리 시스템(3)의 처분에 맡길 수 있는 하나 또는 몇개의 종속 함수로 분할된다.
· 보호 소프트웨어(2p)의 실행 동안, 제2 실행 부분(2peu)이 종속 함수 fdn을 실행하도록 수정되며,
· 보호 소프트웨어(2p)의 실행 동안, 종속 함수가 이름 변경된 지시로 명령을 트리거함으로써 트리거되도록 수정되고,
· 트리거 명령의 순서가 보호 소프트웨어(2p)의 실행을 가능하게 해주는 순서 세트 중에서 선택되도록 수정된다.
데이터 처리 시스템(3)에서 실행되는 보호 소프트웨어(2p)의 제1 실행 부분(2pes)은 유닛(6)으로 이름 변경된 지시를 전송하는 이름 변경된 지시를 갖는 트리거 명령을 실행하여 유닛(6)에서 복구 수단(20)에 의한 지시의 복구를 트리거한 다음에 제2 실행 부분(2peu)에 의한 이미 정의된 종속 함수 fdn의 각각의 실행을 트리거한다.
즉, 이름 변경에 의한 보호 원리는 이름 변경된 지시를 갖는 트리거 명령을 획득하기 위해 트리거 명령의 지시의 이름을 변경함으로써 수행되며, 이의 데이터 처리 시스템(3)에서의 실행은 실행된 종속 함수의 식별자를 결정할 수 있는 보호 소프트웨어(2p)의 검사 없이 유닛(6)에서 이름 변경되지 않은 지시를 갖는 트리거 명령에 의해 트리거될 종속 함수의 실행을 트리거한다.
도 80은 취약 소프트웨어(2v)의 실행의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서의 취약 소프트웨어(2v)의 실행 동안 어떤 순간에 피연산자 X와 Y를 사용하여 함수 F로 표기된 알고리즘적 처리의 결과의 변수 Z에의 할당에 해당하는 Z←F(X,Y)의 계산이 나타난다.
도 81 및 도 82는 본 발명의 구현의 일례를 나타낸 것이다.
도 81은 본 발명의 부분적인 구현을 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서의 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안에 유닛(6)이 존재하는 경우,
· 시각 t1, t2에서, 유닛(6)에서 제2 실행 부분(2peu)에 의해 데이터 X, Y를 데이터 처리 시스템(3)으로부터 유닛(6)의 기억 수단(15)에 위치한 기억 영역 x, y로 각각 전송하는 해당하는 종속 함수 fd1, fd2의 실행을 트리거하는 트리거 명령 CD1, CD2의 실행, 이 트리거 명령 CD1, CD2은 각각 OUT(x,X), OUT(y,Y)로 표기되어 있음.
· 시각 t3 내지 tN-1에서, 유닛(6)에서 제2 실행 부분(2peu)에 의해 해당하는 종속 함수 fd3 내지 fdN-1의 실행을 트리거하는 트리거 명령 CD3 내지 CD N-1의 실행, 이 트리거 명령 CD3 내지 CDN-1은 각각 TRIG(fd3) 내지 TRIG(fdN-1 )로 표기되어 있음. 조합하여 실행되는 일련의 종속 함수 fd3 내지 fdN-1는 함수 F와 알고리즘적으로 등가이다. 보다 상세하게는, 상기 트리거 명령의 실행은 유닛(6)에서 기억 영역 x, y의 내용을 사용하고 그 결과를 유닛(6)의 기억 영역 z에 반환하는 종속 함수 fd3 내지 fdN-1의 실행을 가져온다.
· 시각 tN에서, 유닛(6)의 기억 영역 z에 포함된 알고리즘적 처리의 결과를 데이터 처리 시스템(3)으로 전송하여 이를 변수 Z에 할당하는 종속 함수 fdN의 제2 실행 부분(2peu)에 의한 실행을 트리거하는 트리거 명령 CDN의 유닛(6)에서의 실행. 이 명령은 IN(z)로 표기되어 있음.
이 일례에서, 본 발명을 완전하게 구현하기 위해, 트리거 명령 OUT의 제1 인수와 트리거 명령 TRIG와 IN의 인수가 지시로서 선택된다. 이와 같이 선택된 지시는 지시의 이름 변경 방법을 사용하여 이름 변경된다. 이와 같이, 트리거 명령 CD1 내지 CDN의 지시, 즉 x, y, fd3 , fdN-1, z는 각각 R(x), R(y), R(fd 3), ..., R(fdN-1), R(z)를 얻기 위해 이름 변경된다.
도 82는 본 발명의 완전한 구현을 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서의 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안, 유 닛(6)이 존재하는 경우,
· 시각 t1, t2에서, 유닛(6)으로 이름 변경된 지시 R(x), R(y) 및 데이터 X, Y를 전송하는 이름 변경된 지시 CDCR1, CDCR2를 갖는 트리거 명령의 실행하여 지시, 즉 기억 영역 x, y의 식별자를 복구하기 위해 유닛(6)에서 복구 수단(20)에 의한 이름 변경된 지시의 복구를 트리거한 다음에 데이터 X, Y를 데이터 처리 시스템(3)으로부터 유닛(6)의 기억 수단(15)에 위치한 기억 영역 x, y로 각각 전송하는 해당하는 종속 함수 fd1, fd2의 제2 실행 부분(2peu)에 의한 실행이 오게 되며, 이름 변경된 지시 CDCR1, CDCR2를 갖는 트리거 명령은 각각 OUT(R(x),X), OUT(R(y),Y)로 표기되어 있음.
· 시각 t3 내지 tN-1에서, 이름 변경된 지시 R(fd3) 내지 R(fdN-1 )을 유닛(6)으로 전송하는 이름 변경된 지시 CDCR3 내지 CDCRN-1을 갖는 트리거 명령을 실행하여 유닛에서 지시, 즉 fd3 내지 fdN-1의 복구 수단(20)에 의한 복구를 트리거한 다음에, 종속 함수 fd3 내지 fdN-1의 제2 실행 부분(2peu)에 의한 실행이 오게 되고, 이름 변경된 지시 CDCR3 내지 CDCRN-1을 갖는 상기 트리거 명령은 각각 TRIG(R(fd3 )) 내지 TRGI(R(fdN-1))로 표기되어 있음.
· 시각 tN에서, 이름 변경된 지시 R(z)를 유닛(6)으로 전송하는 이름 변경 된 지시 CDCRN을 갖는 트리거 명령을 실행하여 유닛(6)에서 지시, 즉 기억 영역 z의 식별자의 복구 수단(20)에 의한 복구를 트리거한 다음에, 유닛(6)의 기억 영역 z에 포함된 알고리즘적 처리의 결과를 데이터 처리 시스템(3)으로 전송하여 이를 변수 Z에 할당하는 종속 함수 fdN의 제2 실행 부분(2peu)에 의한 실행이 오게 되며, 이 이름 변경된 지시 CDCRN을 갖는 트리거 명령은 IN(R(z))로 표기되어 있음.
도시된 일례에서, 이름 변경된 지시 1 내지 N을 갖는 트리거 명령은 연속하여 실행된다. 유의할 점은 이하의 2가지 개선이 달성될 수 있다는 것이다.
· 제1 개선은 몇개의 알고리즘적 처리가 유닛(6)에서 원격적으로 실행되고 하나의 알고리즘적 처리의 결과가 적어도 다른 알고리즘적 처리에 의해 사용되는 경우에 관한 것이다. 이 경우, 가능하게는 전송에 사용되는 이름 변경된 지시를 갖는 일부 트리거 명령은 제거될 수 있다.
· 제2 개선은 보호 소프트웨어(2p)의 실행을 가능하게 해주는 순서 세트 중에서 이름 변경된 지시를 갖는 트리거 명령의 적절한 순서를 선택하는 것을 목적으로 한다. 이 점에서, 데이터 처리 시스템(3)에서 실행되는 코드의 일부분을 이들 사이에 삽입시키고 또 다른 데이터의 결정에 사용되는 이름 변경된 지시를 갖는 트리거 명령을 포함하거나 그렇지 않음으로써 종속 함수의 실행을 일시적으로 분리시키는 이름 변경된 지시를 갖는 트리거 명령의 순서를 선택하는 것이 바람직하다. 도 83 및 도 84는 이러한 실시예의 원리를 나타낸 것이다.
도 83은 취약 소프트웨어(2v)의 실행의 일례를 나타낸 것이다. 이 일례에 서, 취약 소프트웨어(2v)의 실행 동안 데이터 처리 시스템(3)에서 2개의 알고리즘적 처리의 실행은 Z←F(X,Y)와 Z'←F'(X',Y')과 같은 Z와 Z'의 결정을 가져온다.
도 84는 도 83에서 선택된 2개의 알고리즘적 처리가 유닛(6)에서 원격적으로 행해지는 본 발명에 따른 프로세스의 구현의 일례를 나타낸 것이다. 이러한 일례에 따르면, 데이터 처리 시스템(3)에서의 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안 유닛(6)이 존재하는 경우, 전술한 바와 같이 Z의 결정에 해당하는 이름 변경된 지시 CDCR1 내지 CDCRN을 갖는 트리거 명령의 실행 및 Z'의 결정에 해당하는 이름 변경된 지시 CDCR'1 내지 CDCR'M을 갖는 트리거 명령의 실행이 나타난다. 도시한 바와 같이, 이름 변경된 지시 CDCR1 내지 CDCRN을 갖는 트리거 명령은 이름 변경된 지시 CDCR'1 내지 CDCR'M을 갖는 트리거 명령 및 코드의 다른 일부분이 삽입되어 있는 한 연속하여 실행되지 않는다. 이 일례에서는, 따라서 이하의 순서로 수행된다. 즉, CDCR1, 삽입된 코드의 일부분, CDCR'1, CDCR2 , 삽입된 코드의 일부분, CDCR'2, CDCR'3, 삽입된 코드의 일부분, CDCR'4, CDCR 3, CDCR4,...,CDCRN, CDCR'M.
유의할 점은 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 일부분의 실행 동안, 데이터 처리 시스템(3)에서 실행되는 이름 변경된 지시를 갖는 트리거 명령은 유닛(6)에서 해당하는 종속 함수의 식별자의 복구를 트리거한 다음에 그의 실행을 트리거한다. 따라서, 유닛(6)이 존재하는 경우 상기 일부분은 정확하게 실행되 고 그 결과 보호 소프트웨어(2p)가 완전히 기능하는 것으로 나타난다.
도 85는 유닛(6)이 없는 경우의 보호 소프트웨어(2p)의 실행의 시도의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서의 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안, 모든 순간에 이름 변경된 지시를 갖는 트리거 명령의 실행은 지시의 복구와 해당하는 종속 함수의 실행 어느 것도 트리거할 수 없는데, 그 이유는 유닛(6)이 존재하지 않기 때문이다. 변수 Z에 할당할 값은 따라서 정확하게 결정될 수 없다.
따라서, 유닛(6)이 없는 경우,보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 일부분에 의한 지시의 복구 및 유닛(6)에서의 종속 함수의 실행을 트리거하라는 적어도 하나의 요청은 정확하게 실행될 수 없으며, 따라서 적어도 상기 일부분은 정확하게 실행되지 않으며 그 결과 보호 소프트웨어(2p)가 완전히 기능하지 못하는 것으로 나타난다.
이러한 이름 변경에 의한 보호의 원리에 따라, 보호 소프트웨어(2p)에서의 이름 변경된 지시를 갖는 트리거 명령의 검사는 유닛(6)에서 실행되어야만 하는 종속 함수의 식별자를 결정할 수 없다. 유의할 점은 지시의 이름 변경은 취약 소프트웨어(2v)의 보호 소프트웨어(2p)로의 수정 동안에 수행된다는 것이다.
이름 변경에 의한 보호 원리의 한 변형례에 따르면, 적어도 하나의 종속 함수에 대해 알고리즘적으로는 동등하지만 이름 변경된 지시를 갖는 서로 다른 트리거 명령에 의해 트리거되는 종속 함수 계열이 정의된다. 이 변형례에 따르면, 종속 함수를 사용하는 적어도 하나의 알고리즘적 처리에 대해, 상기 알고리즘적 처리 는 그들 중 적어도 하나에 대해 동일한 종속 함수를 계속 몇번 나타나게 하지 않고 동일 계열의 종속 함수로 대체되는 종속 함수로 분할된다. 이를 위해, 이름 변경된 지시를 갖는 트리거 명령은 종속 함수를 동일 계열의 종속 함수로 대체하는 것을 고려하도록 수정된다. 즉, 동일 계열의 2개의 종속 함수는 서로 다른 지시를 가지고 그 결과 이름 변경된 지시를 갖는 서로 다른 트리거 명령을 가지며,보호 소프트웨어(2p)를 검사함으로써 호출된 종속 함수가 알고리즘적으로 등가인 것을 알아낼 수 없다.
이름 변경에 의한 보호 원리의 변형례의 양호한 제1 실시예에 따르면, 적어도 하나의 종속 함수에 대해 잡음 필드를 유닛(6)에서 실행할 종속 함수의 기능 부분을 정의하는 정보에 첨부시킴으로서 알고리즘적으로 동등한 종속 함수 계열이 정의된다.
이름 변경에 의한 보호 원리의 변형례의 양호한 제2 실시예에 따르면, 적어도 하나의 종속 함수에 대해 식별 필드를 사용함으로써 알고리즘적으로 동등한 종속 함수 계열이 정의된다.
이름 변경에 의한 보호 원리의 양호한 변형 실시예에 따르면, 지시의 이름 변경 방법으로서 이름 변경된 지시로 변환할 지시를 암호화할 수 있는 암호화 방법이 정의된다. 유의할 것은 지시의 이름 변경이 보호 단계(P) 동안에 수행된다는 점이다. 이 양호한 변형례의 경우, 복구 수단(20)은 이름 변경된 지시를 복호화하고 따라서 유닛(6)에서 실행할 종속 함수의 식별자를 복구할 수 있는 복호화 방법을 구현하는 수단이다. 상기 복구 수단은 유닛(6)에서 구현되고, 소프트웨어 또는 하드웨어 속성을 가질 수 있다. 사용 단계(U) 동안에 이름 변경된 지시를 갖는 트리거 명령이 유닛(6)에서의 종속 함수의 실행을 트리거할 목적으로 데이터 처리 시스템(3)에서 실행될 때마다 상기 복구 수단(20)에 의지한다.
본 발명의 다른 유리한 특성에 따르면, 보호 프로세스는 <<조건 분기>>에 의한 보호 원리의 구현을 목적으로 하며, 이에 대해서는 도 90 내지 도 92를 참조하여 설명한다.
조건 분기에 의한 보호 원리의 구현을 위해, 취약 소프트웨어의 소스(2vs)에서 적어도 하나의 조건 분기(BC)가 선택된다. 또한, 적어도 하나의 선택된 조건 분기(BC)를 포함하는 취약 소프트웨어의 소스(2vs)의 적어도 하나의 일부분이 선택된다.
취약 소프트웨어의 소스(2vs)의 적어도 하나의 선택된 일부분은 이어서 보호 소프트웨어의 소스(2ps)를 얻기 위해 수정된다. 이 수정은 보호 소프트웨어(2p)의 실행 동안에 그 중에서도 특히 다음과 같이 행해진다.
· 데이터 처리 시스템(3)에서 실행되는 제1 실행 부분(2pes)의 적어도 하나의 일부분이 적어도 하나의 선택된 조건 분기(BC)의 기능이 유닛(6)에서 실행되는 것을 고려하도록 수정되고,
· 유닛(6)에서 실행되는 제2 실행 부분(2peu)이 적어도 하나의 선택된 조건 분기(BC)의 기능을 적어도 실행하고 제1 실행 부분(2pes)이 선택된 지점에서의 그의 실행을 수행할 수 있게 해주는 정보를 데이터 처리 시스템(3)의 처분에 맡기도록 수정된다.
데이터 처리 시스템(3)에서 실행되는 보호 소프트웨어(2p)의 제1 실행 부분(2pes)은 조건 분기 명령을 실행하여, 선택된 조건 분기(BC)의 기능과 동등한 기능을 갖는 원격 조건 분기(bc)의 제2 실행 부분(2peu)에 의해 유닛(6)에서 실행하는 것을 트리거한다.
도 90은 취약 소프트웨어(2v)의 실행의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서의 취약 소프트웨어(2v)의 실행 동안, 어떤 순간에 취약 소프트웨어(2v)에 그의 실행을 수행할 지점, 즉 3개의 가능한 지점 B1, B2 또는 B3 중 하나를 알려주는 조건 분기(BC)가 나타난다. 조건 분기(BC)가 지점 B1, B2 또는 B3에서 소프트웨어의 실행을 수행하기로 결정한다는 것을 이해해야만 한다.
도 91은 유닛(6)에서 원격적으로 행하기로 선택된 조건 분기가 조건 분기(BC)에 해당하는 본 발명의 구현의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서의 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안 유닛(6)이 존재하는 경우,
· 시각 t1에서, 유닛(6)에서 알고리즘적으로 조건 분기(BC)와 동등한 원격 조건 분기(bc)의 제2 실행 부분(2peu)에 의한 실행을 트리거하는 조건 분기 명령 CBC1의 실행이 나타나고, 상기 조건 분기 명령 CBC1은 TRIG(bc)로 표기되어 있음.
· 시각 t2에서, 유닛(6)으로부터 데이터 처리 시스템(3)으로의 제1 실행 부분(2pes)이 선택된 지점, 즉 지점 B1, B2 또는 B3에서의 그의 실행을 수행할 수 있게 해주는 정보의 전송이 나타난다.
유의할 점은 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 일부분의 실행 동안, 데이터 처리 시스템(3)에서 실행되는 조건 분기 명령은 유닛(6)에서의 해당하는 원격 조건 분기의 실행을 트리거한다. 따라서, 유닛(6)이 존재하는 경우 상기 일부분은 정확하게 실행되고 그 결과 보호 소프트웨어(2p)가 완전히 기능하는 것으로 나타난다.
도 92는 유닛(6)이 없는 경우 보호 소프트웨어(2p)의 실행의 시도의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서의 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안,
· 시각 t1에서, 조건 분기 명령 CBC1의 실행은 유닛(6)의 부존재를 고려하여 원격 조건 분기 bc의 실행을 트리거할 수 없다.
· 시각 t2에서, 제1 실행 부분(2pes)이 선택된 지점에서 수행될 수 있게 해주는 정보의 전송이 유닛(6)의 부존재를 고려하여 실패한다.
따라서, 유닛(6)이 없는 경우, 제1 실행 부분(2pes)의 일부분에 의한 유닛(6)에서의 원격 조건 분기의 실행을 트리거하도록 하는 적어도 하나의 요청이 정확하게 수행될 수 없고, 따라서 적어도 상기 일부분은 정확하게 실행되지 않으며 그 결과 보호 소프트웨어(2p)가 완전히 기능하지 못하는 것으로 나타난다.
도 90 내지 도 92에 관한 이전의 설명에서, 본 발명의 주제는 조건 분기를 유닛(6)에서 원격으로 수행하는 것을 목적으로 한다. 자연히, 본 발명의 양호한 실시예는 그 전체 기능이 원격지에 있는 조건 분기의 모든 기능과 동등한 일련의 조건 분기를 유닛(6)에서 원격적으로 수행함으로써 실시될 수 있다. 상기 일련의 원격 조건 분기의 전체 기능의 실행에 의해 보호 소프트웨어(2p)의 제1 실행 부분(2pes)이 선택된 지점에서의 그의 실행을 수행할 수 있게 해주는 정보를 데이터 처리 시스템(3)의 처분에 맡겨진다.
도 40 내지 도 92에 관한 이전의 설명에서, 일반적으로 서로 독립적으로 4개의 서로 다른 소프트웨어 보호 원리에 대해 구체적으로 설명하였다. 본 발명에 따른 보호 프로세스는 가능하게는 하나 또는 몇개의 다른 보호 원리와 결합하여 감지 및 강제에 의한 보호 원리를 사용함으로써 구현된다. 감지 및 강제에 의한 보호 원리가 적어도 다른 보호 원리의 구현에 의해 보완되는 경우, 감지 및 강제에 의한 보호 원리는 변수에 의한 보호 원리 및/또는 이름 변경에 의한 보호 원리 및/또는 조건 분기에 의한 보호 원리에 의해 보완되면 유리하다.
또한 이름 변경에 의한 보호 원리도 구현되는 경우, 차례대로 조건 분기에 의한 보호 원리에 의해 보완될 수 있다.
양호한 변형 실시예에 따르면, 감지 및 강제에 의한 보호 원리는 변수에 의한 보호 원리에 의해서와 이름 변경에 의한 보호 원리에 의해 보완되며, 조건 분기에에 의한 보호 원리에 의해 보완된다.
감지 및 강제에 의한 보호 원리에 보완하여 보호 원리가 적용되는 경우, 앞서 기술한 설명은 그의 결합 구현을 고려하기 위해 이하의 것을 포함해야만 한다.
· 취약 소프트웨어의 개념이 기술되는 보호 원리에 대해 취약한 소프트웨어 로서 이해되어야만 한다. 따라서, 보호 원리가 이미 취약 소프트웨어에 적용되어 있는 경우, 표현 "취약 소프트웨어"는 독자에 의해 표현 "이미 적용된 보호 원리에 의해 보호된 소프트웨어"로 해석되어야만 한다.
· 보호 소프트웨어의 개념은 기술된 보호 원리에 대해 보호된 소프트웨어로서 이해되어야만 한다. 따라서, 보호 원리가 이미 적용되어 있는 경우, 표현 "보호 소프트웨어"는 독자에 의해 표현 "새로운 버전의 보호 소프트웨어"로서 해석되어야만 한다.
· 기술된 보호 원리의 구현을 위해 행해진 선택은 이미 적용된 보호 원리의 구현을 위해 행해진 선택을 고려해야만 한다.
나머지 설명은 본 발명에 따른 보호 프로세스의 구현을 보다 잘 이해할 수 있게 해준다. 본 발명에 따른 이 보호 프로세스는 도 100에 보다 상세히 도시한 바와 같이
· 먼저, 취약 소프트웨어(2v)가 보호 소프트웨어(2p)가 되도록 수정되는 중인 보호 단계(P),
· 그 다음에, 보호 소프트웨어(2p)가 사용되는 중인 사용 단계(U)로서, 이 사용 단계(U) 중에는,
- 유닛(6)이 있는 경우, 데이터 처리 시스템(3)에서 실행되는 제1 실행 부분(2pes)이 일부분이 출현할 때마다, 강요된 기능이 유닛(6)에서 실행되고, 따라서 상기 일부분은 정확하게 실행되고 그 결과 보호 소프트웨어(2p)는 완전히 기능하며,
- 유닛(6)이 없는 경우, 제1 실행 부분(2pes)의 일부분에 의한 유닛(6)에서 기능을 실행하라는 요청에도 불구하고, 상기 요청을 정확히 실행될 수 없고 따라서 적어도 상기 일부분은 정확하게 실행되지 않으며 그 결과 보호 소프트웨어(2p)가 완전히 기능하는,
사용단계, 및
· 가능하게는 재충전 단계(R)로서, 특성으로서 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 양호한 제2 변형 실시예의 구현에 의해 보호되는 기능의 적어도 하나의 부가 사용을 승인해주는 동안인 재충전 단계(R)
로 구성되어 있다.
보호 단계(P)는 2개의 보호 서브단계 P1과 P2로 분할될 수 있다. 사전 보호 서브단계 P1라고 하는 첫번째 단계는 보호할 취약 소프트웨어(2v)에 독립적으로 행해진다. 사후 보호 서브단계 P2라고 하는 두번째 단계는 보호할 취약 소프트웨어(2v)에 종속되어 있다. 주의할 점은 사전 보호 서브단계 P1 및 사후 보호 서브단계 P2는 유리하게는 2명의 서로 다른 사람 또는 2개의 서로 다른 팀에 의해 수행될 수 있다. 예를 들어, 사전 보호 서브단계 P1은 소프트웨어 보호 시스템을 개발하는 사람 또는 회사에 의해 수행될 수 있는 반면, 사후 보호 서브단계 P2는 보호될 필요가 있는 소프트웨어를 개발하는 사람 또는 회사에 의해 수행될 수 있다. 자연히, 사전 보호 서브단계 P1와 사후 보호 서브단계 P2는 동일한 사람 또는 팀에 의해 수행될 수도 있다.
사전 보호 서브단계 P1는 수행해야 할 여러가지 작업 또는 일 각각에 대해 몇개의 단계 S11,...,S1i로 이루어져 있다.
이러한 사전 보호 서브 단계 P1의 첫번째 단계는 "정의 단계 S11"라고 한다. 이 정의 단계 S11 동안,
· 이하의 것이 선택된다.
- 유닛(6)의 유형. 예시한 일례로서, 유닛(6)으로서 칩 카드 리더(8) 및 이 리더와 관련된 칩 카드(7)가 선택될 수 있다.
- 사용 단계(U) 동안 데이터 처리 시스템(3) 및 유닛(6)에서 각각 구현되도록 설계되고, 데이터 처리 시스템(3)과 유닛(6) 사이에서 데이터 전송을 할 수 있는 전송 수단(12, 13).
· 다음과 같은 것들도 정의된다.
- 유닛(6)에서 적어도 부분적으로 모니터링되어야 하는 적어도 하나의 소프트웨어 실행 특성,
- 적어도 하나의 소프트웨어 실행 특성에 대해 준수해야 할 적어도 하나의 기준,
- 유닛(6)에 구현할 감지 수단(17)으로서 적어도 하나의 소프트웨어 실행 특성이 적어도 하나의 관련 기준을 준수하지 않는 것을 감지할 수 있는 감지 수단(17),
- 유닛(6)에 구현할 강제 수단(18)으로서, 적어도 하나의 기준이 준수되지 않을 때 데이터 처리 시스템(3)으로의 통지 및/또는 소프트웨어의 실행의 수정을 행할 수 있는 강제 수단(18).
· 본 발명에 따른 보호 프로세스가 특성으로서 소프트웨어 실행의 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리를 구현하는 경우, 다음과 같은 것들도 정의된다.
- 모니터링해야 할 소프트웨어 실행 특성으로서, 소프트웨어의 기능 사용의 측정 변수,
- 준수해야 할 기준으로서, 각각의 측정 변수와 관련된 적어도 하나의 임계값, 및
- 적어도 하나의 측정 변수를 갱신할 수 있는 구체화 수단.
· 본 발명에 따른 보호 프로세스가 특성으로서 소프트웨어 실행의 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 양호한 제1 변형 실시예를 구현하는 경우, 다음과 같은 것들도 정의된다.
- 적어도 하나의 측정 변수에 대해, 몇개의 관련 임계값, 및
- 상기 임계값 각각에 해당하는 서로 다른 강제 수단.
· 본 발명에 따른 보호 프로세스가 특성으로서 소프트웨어 실행의 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 양호한 제2 변형 실시예를 구현하는 경우, 적어도 하나의 부가 사용을 측정 변수에 의해 모니터링되는 적어도 하나의 소프트웨어 기능에 부가할 수 있는 재충전 수단도 정의된다.
· 본 발명에 따른 보호 프로세스가 특성으로서 소프트웨어 사용의 프로파일을 사용하여 감지 및 강제에 의한 보호 원리를 구현하는 경우, 다음과 같은 것들도 정의된다.
- 모니터링되어야 할 소프트웨어 실행 특성으로서, 소프트웨어 사용의 프로파일 및
- 준수해야 할 기준으로서, 적어도 하나의 소프트웨어 실행 특징.
· 본 발명에 따른 보호 프로세스가 준수해야 할 실행 특징으로서 실행 연쇄의 모니터링을 사용하여 감지 및 강제에 의한 보호 원리를 구현하는 경우, 다음과 같은 것들도 정의된다.
- 유닛(6)에서 실행되어야 할 명령어를 갖는 명령어 세트,
- 상기 명령어 세트에 대한 한 세트의 명령어 커맨드, 상기 명령어 커맨드는 데이터 처리 시스템(3)에서 실행되어야 하며 유닛(6)에서 명령어의 실행을 트리거함,
- 사용의 프로파일로서, 명령어의 연쇄,
- 실행 특징으로서, 예상된 명령어 실행 연쇄,
- 감지 수단(17)으로서, 명령어의 연쇄가 예상된 것에 해당되지 않는 것을 감지할 수 있는 수단, 및
- 강제 수단(18)으로서, 명령어의 연쇄가 예상된 것에 해당되지 않는 경우, 데이터 처리 시스템(3)으로의 통지 및/또는 보호 소프트웨어(2p)의 일부분의 기능의 수정을 행할 수 있는 수단.
· 본 발명에 따른 보호 프로세스가 준수해야 할 실행 특징으로서 실행 연쇄의 모니터링을 사용하여 감지 및 강제에 의한 보호 원리의 양호한 변형 실시예를 구현하는 경우, 다음과 같은 것들도 정의된다.
- 명령어 세트로서, 이 명령어 세트의 적어도 어떤 명령어는 레지스터를 사용하고 결과를 반환할 목적으로 적어도 하나의 피연산자를 사용함,
- 레지스터를 사용하는 명령어 중 적어도 일부에 대해,
> 명령어의 기능을 정의하는 부분 PF, 및
> 다음에 해당하는 비트 필드를 포함하고 명령어의 실행에 대해 예상된 연쇄를 정의하는 부분,
<> 명령어의 식별 필드 CII, 및
<> 명령어의 각 피연산자에 대해,
* 플래그 필드 CDk, 및
* 피연산자의 예상된 식별 필드 CIPk,
- 개척 수단에 속하고 명령어 세트에 의해 사용되는 각 레지스터에 대한, 생성된 식별 필드 CIGv로서 이곳에 상기 레지스터에 그의 결과를 반환했던 마지막 명령어의 식별이 자동적으로 기억된다.
- 감지 수단(17)으로서, 명령어의 실행 동안 각 피연산자마다 플래그 필드 CDk가 출현할 때, 상기 피연산자에 의해 사용되는 레지스터에 해당하는 생성된 식별 필드 CIGv 및 상기 피연산자의 출처의 예상된 식별 필드 CIPk의 동일성을 검사할 수 있는 수단,
- 강제 수단(18)으로서, 검사된 동일성의 적어도 하나가 거짓인 경우 명령어의 결과를 수정할 수 있는 수단.
· 본 발명에 따른 보호 프로세스가 이름 변경에 의해 보호 원리를 구현하는 경우, 다음과 같은 것들도 정의된다.
- 트리거 명령으로서, 명령어 커맨드,
- 종속 함수로서, 명령어,
- 지시로서, 해당하는 종속 함수의 실행을 트리거하도록 데이터 처리 시스템(3)에 의해 유닛(6)으로 전송되는 정보에 적어도 부분적으로 해당되는 트리거 명령에 대한 적어도 하나의 인수,
- 이름 변경된 지시를 갖는 트리거 명령을 얻기 위해 지시를 이름 변경할 수 있는 지시의 이름을 변경하는 방법, 및
- 사용 단계(U) 동안 유닛(6)에서 사용되도록 설계되고 이름 변경된 지시로부터 실행할 종속 함수를 복구할 수 있는 복구 수단(20).
· 본 발명에 따른 보호 프로세스가 이름 변경에 의한 보호 원리의 변형례를 구현하는 경우, 적어도 하나의 종속 함수에 대해 알고리즘적으로 동등하지만 서로 다른 이름 변경된 지시를 갖는 트리거 명령에 의해 트리거되는 종속 함수 계열이 정의된다.
· 본 발명에 따른 보호 프로세스가 이름 변경에 의한 보호 원리의 변형례의 양호한 실시예 중 하나를 구현하는 경우, 적어도 하나의 종속 함수에 대해 알고리즘적으로 동등한 종속 함수 계열이 다음과 같이 정의된다.
- 잡음의 필드를 유닛(6)에서 실행할 종속 함수의 기능 부분을 정의하는 정보에 첨부함으로써, 또는
- 명령어의 식별 필드 CII와 피연산자의 예상된 식별 필드 CIPk를 사용함으로써, 정의된다.
· 본 발명에 따른 보호 프로세스가 이름 변경에 의한 보호 원리의 양호한 변형례를 구현하는 경우, 다음과 같은 것들도 정의된다.
- 지시의 이름을 변경하는 방법으로서, 지시를 암호화하는 암호화 방법, 및
- 복구 수단(20)으로서, 이름 변경된 지시를 복호화하고 따라서 유닛(6)에서 실행할 종속함수의 식별자를 복구하는 복호화 방법을 구현하는 수단.
사전 보호 서브단계 P1 동안, 정의 단계 S11 다음에 "구축 단계 S12 "라고 하는 단계가 온다. 이러한 단계 S12 동안, 전송 수단(12, 13)과, 정의 단계 S11의 정의에 해당하는 개척 수단이 구축된다.
이 구축 단계 S12 동안, 따라서 다음과 같은 것들이 수행된다.
· 사용 단계(U) 동안 데이터 처리 시스템(3)과 유닛(6) 사이에서 데이터를 전송할 수 있는 전송 수단(12, 13)의 구축,
· 구축으로서,
- 사용 단계(U) 동안 유닛(6)이 감지 수단(17) 및 강제 수단(18)도 구현할 수 있게 해주는 개척 수단의 구축, 및
- 가능하게는 사용 단계(U) 동안 유닛(6)이 구체화 수단도 구현할 수 있게 해주는 개척 수단의 구축, 및
- 가능하게는 사용 단계(U) 동안 유닛(6)이 재충전 수단도 구현할 수 있게 해주는 개척 수단의 구축, 및
- 가능하게는 사용 단계(U) 동안 유닛(6)이 명령어 세트의 명령을 실행할 수 있게 해주는 개척 수단의 구축,
· 이름 변경에 의한 보호 원리도 구현되는 경우, 사용 단계(U) 동안 유닛(6)이 복구 수단도 구현할 수 있게 해주는 개척 수단의 구축.
개척 수단의 구축은 전통적으로 정의 단계 S11에 개입된 정의를 고려하여 프로그램 개발 유닛을 통해 수행된다. 이러한 유닛에 대해서는 도 110을 참조하여 나머지 설명에 기술되어 있다.
사전 보호 서브단계 P1 동안, 구축 단계 S12 다음에는 "사전 커스터마이즈 단계 S13"라고 하는 단계가 올 수 있다. 이 사전 커스터마이즈 단계 S13 동안, 적어도 하나의 전송 수단(13) 및/또는 개척 수단은 적어도 하나의 사전 커스터마이즈된 유닛(66)을 얻을 목적으로 적어도 하나의 블랭크 유닛(60)에 업로드된다. 유의할 점은 개척 수단의 부분은 일단 사전 커스터마이즈된 유닛(66)으로 전송되면 상기 사 전 커스터마이즈된 유닛(66) 외부에서 더 이상 바로 접근할 수 없다. 개척 수단의 블랭크 유닛(60)으로의 전송은 적합한 사전 커스터마이즈 유닛을 통해 수행될 수 있으며, 이에 대해서는 도 120과 관련한 나머지 설명에 기술되어 있다. 칩 카드(7)와 그의 리더(8)로 구성된 사전 커스터마이즈된 유닛(66)의 경우, 사전 커스터마이즈는 단지 칩 카드(7)만 관련한다.
사전 보호 서브단계 P1 동안, 정의 단계 S11 후에 또 가능하게는 구축 단계 S12 후에, "도구 제작 단계 S14"라고 하는 단계가 행해질 수 있다. 이 도구 제작 단계 S14 동안, 보호 소프트웨어의 생성 또는 소프트웨어 보호의 자동화를 도울 수 있는 도구가 제작된다. 이러한 도구는,
· 취약 소프트웨어(2v)에서 이하의 것들을 보호하기 위해 자동적으로 선택하도록 돕거나 선택할 수 있게 해준다.
- 모니터링할 실행 특성 및 가능하게는 유닛(6)에서 원격적으로 수행될 수 있는 명령어로 분할되어야 하는 알고리즘적 처리,
- 수정되어야 하는 일부분,
- 변수에 의한 보호 원리도 구현되는 경우, 유닛(6)에서 원격적으로 수행되어야 하는 변수,
- 이름 변경에 의한 보호 원리도 구현되는 경우, 유닛(6)에서 원격적으로 수행될 수 있는 종속 함수로 분할되어야 하고 트리거 명령의 지시의 이름 변경을 할 수 있는 알고리즘적 처리,
- 조건 분기에 의한 보호 원리도 구현되어 있는 경우, 유닛(6)에서 원격적으로 수행해야 하는 기능을 갖는 조건 분기,
· 가능하게는 보호 소프트웨어의 생성을 도울 수 있거나 소프트웨어의 보호를 자동화할 수 있게 해준다.
이들 여러가지 도구는 독립적으로 또는 결합하여 수행될 수 있고 각 도구는 예를 들면 프리프로세서, 어셈블러, 컴파일러 등과 같은 여러가지 형태를 가질 수 있다.
사전 보호 서브단계 P1 다음에는 보호할 취약 소프트웨어(2v)에 종속하는 사후 보호 서브단계 P2가 온다. 이 사후 보호 서브단계 P2도 몇가지 단계로 구성되어 있다. 감지 및 강제에 의한 보호 원리의 구현에 해당하는 첫번째 단계는 "생성 단계 S21"라고 한다. 이 생성 단계 S21 동안, 정의 단계 S11 동안 행해진 선택이 사용된다. 상기 선택 및 가능하게는 도구 제작 단계 S14 동안 구축된 도구의 도움으로, 보호 소프트웨어(2p)가 다음에 따라 생성된다.
· 모니터링되어야 하는 소프트웨어 실행 특성 중에서 모니터링할 적어도 하나의 소프트웨어 실행 특성을 선택함으로써,
· 적어도 하나의 선택된 소프트웨어 실행 특성에 대해 준수해야 할 적어도 하나의 기준을 선택함으로써,
· 취약 소프트웨어(2v)의 실행 동안 적어도 하나의 피연산자를 사용하여 적어도 하나의 결과를 획득할 수 있고 적어도 하나의 선택된 소프트웨어 실행 특성을 모니터링해야 하는 적어도 하나의 알고리즘적 처리를 선택함으로써,
· 적어도 하나의 선택된 알고리즘적 처리를 포함하는 취약 소프트웨어의 소스(2vs)의 적어도 하나의 일부분을 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 수정된 일부분을 획득하기 위해 취약 소프트웨어의 소스(2vs)의 적어도 하나의 선택된 일부분을 수정하여 취약 소프트웨어의 소스(2vs)로부터 보호 소프트웨어의 소스(2ps)를 생성하는 것으로,
- 보호 소프트웨어(2p)의 실행 동안, 제1 실행 부분(2pes)이 데이터 처리 시스템(3)에서 실행되고 제2 실행 부분(2peu)이 정보의 업로드 후에 블랭크 유닛(60)으로부터 획득되는 유닛(6)에서 실행되도록 하고,
- 제2 실행 부분(2peu)이 적어도 하나의 선택된 알고리즘적 처리의 기능을 적어도 실행하고
- 보호 소프트웨어(2p)의 실행 동안, 적어도 하나의 선택된 실행 특성이 제2 실행 부분(2peu)에 의해 모니터링되고 기준이 준수되지 않는다는 사실이 보호 소프트웨어(2p)의 실행의 수정을 가져오도록 수정하여,
생성함으로써,
· 상기 보호 소프트웨어의 소스(2ps)로부터 상기 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)과 감지 수단(17) 및 강제 수단(18)을 구현하는 개척 수단을 포함하는 상기 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로서,
- 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 데이터 처리 시스템(3)에서 실행되고 그의 적어도 일부분이 적어도 하나의 선택된 소프트웨어 실행 특성이 모니터링된다는 것을 고려하는 제1 실행 부분(2pes)이 나타나도록 하고,
- 상기 제2 오브젝트 부분(2pou)은 블랭크 유닛(60)으로의 업로드 후에 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 소프트웨어 실행 특성이 모니터링되고 기준이 준수되지 않는다는 사실이 보호 소프트웨어(2p)의 실행의 수정을 가져오는 데 사용되는 제2 실행 부분(2peu)이 나타나도록 생성함으로써,
보호 소프트웨어(2p)가 생성된다.
자연히, 본 발명에 따른 감지 및 강제에 의한 보호 원리가 취약 소프트웨어(2v)의 사전 실시를 요하지 않고 새로운 소프트웨어의 개발 중에 직접 적용될 수 있다. 이와 같이, 보호 소프트웨어(2p)가 직접 얻어진다.
특성으로서 소프트웨어 실행의 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 구현을 위해, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 모니터링할 소프트웨어 실행 특성으로서 소프트웨어의 적어도 하나의 기능의 사용에 대한 적어도 하나의 측정 변수를 선택함으로써,
· 이하의 것을 선택하는 것으로,
- 측정 변수를 사용하여 모니터링되어야 하는 사용을 갖는 보호 소프트웨어(2p)의 적어도 하나의 기능,
- 상기 기능의 사용을 정량화하는 데 사용되는 적어도 하나의 측정 변수,
- 상기 기능의 사용에 대한 한계에 해당하는 선택된 측정 변수와 관련된 적어도 하나의 임계값, 및
- 상기 기능의 사용에 종속하는 선택된 측정 변수의 적어도 하나의 갱신 방법을 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로, 보호 소프트웨어(2p)의 실행 동안 측정 변수가 상기 기능의 사용에 따라 제2 실행 부분(2peu)에 의해 구체화되고, 적어도 하나의 임계값 교차가 고려되도록 수정함으로써,
상기 보호 소프트웨어는 수정된다.
특성으로서 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 양호한 제1 변형 실시예의 구현을 위해, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)에서 기능의 사용에 대한 서로 다른 한계에 해당하는 몇개의 임계값에 관련되어야만 하는 적어도 하나의 선택된 측정 변수를 선택함으로써,
· 선택된 측정 변수와 관련된 적어도 2개의 임계값을 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로, 보호 소프트웨어(2p)의 실행 동안 여러가지 임계값의 교차가 제2 실행 부분(2peu)에 의해 서로 다르게 고려되도록 수정함으로써,
상기 보호 소프트웨어는 수정된다.
특성으로서 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 양호한 제2 변형 실시예의 구현을 위해, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)에서 기능의 사용을 제한할 수 있고 적어도 하나의 부가 사용을 승인할 수 있어야만 하는 적어도 하나의 선택된 측정 변수를 선택함으로써,
· 적어도 하나의 선택된 일부분을 수정하는 것으로, 재충전이라고 하는 단계 동안 선택된 측정 변수에 해당하는 적어도 하나의 기능의 적어도 하나의 부가 사용이 승인될 수 있도록 수정함으로써,
상기 보호 소프트웨어는 수정된다.
특성으로서 소프트웨어 사용의 프로파일을 사용하여 감지 및 강제에 의한 보호 원리의 구현을 위해, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 모니터링할 소프트웨어 실행 특성으로서 적어도 하나의 소프트웨어 사용의 프로파일을 선택함으로써,
· 적어도 하나의 선택된 사용 프로파일이 준수해야만 하는 적어도 하나의 실행 특징을 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로, 보호 소프트웨어(2p)의 실행 동안 제2 실행 부분(2peu)이 모든 선택된 실행 특징을 준수하도록 수정함으로써,
상기 보호 소프트웨어는 수정된다.
준수해야 할 실행 특징으로서 실행 연쇄의 모니터링을 사용하여 감지 및 강제에 의한 보호 원리의 구현을 위해, 보호 소프트웨어(2p)는 다음에 따라 수정된 다.
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로,
- 적어도 하나의 선택된 알고리즘적 처리가 분할되어 상기 보호 소프트웨어(2p)의 실행 동안 상기 알고리즘적 처리가 명령어를 사용하여 상기 제2 실행 부분(2peu)에 의해 실행되도록 하고,
- 적어도 하나의 선택된 알고리즘적 처리에 대해, 명령어 커맨드들이 상기 보호 소프트웨어의 소스(2ps)에 통합되게 하여 상기 보호 소프트웨어(2p)의 실행 동안 각 명령어 커맨드가 상기 제1 실행 부분(2pes)에 의해 실행되고 상기 유닛(6)에서 상기 제2 실행 부분(2peu)에 의한 명령어의 실행을 트리거하도록 하며,
- 상기 명령어 커맨드의 순서가 상기 보호 소프트웨어(2p)의 실행을 가능하게 해주는 순서 세트들 중에서 선택되도록 하고,
- 명령어의 적어도 일부가 유닛(6)에서의 그의 실행 동안 준수해야만 하는 연쇄가 지정되도록 수정함으로써,
보호 소프트웨어(2p)가 수정된다.
사후 보호 서브단계 P2 동안, 적어도 다른 보호 원리가 감지 및 강제에 의한 보호 원리에 부가하여 적용되는 경우, "수정 단계 S22"가 행해진다. 이 수정 단계 S22 동안, 정의 단계 S11 동안 개입된 정의가 사용된다. 상기 정의 및 가능하게는 도구 제작 단계 S14 동안 구축된 도구를 사용하여, 보호 소프트웨어(2p)는 앞서 정의 된 구성 중 하나에 따른 보호 원리의 구현이 가능하도록 수정된다.
변수에 의한 보호 원리가 구현되는 경우, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 상기 보호 소프트웨어(2p)의 실행 동안 보호 소프트웨어(2p)의 상태를 부분적으로 정의하는 적어도 하나의 선택된 알고리즘적 처리에서 사용되는 적어도 하나의 변수를 선택함으로써,
· 상기 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로서, 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 변수 또는 적어도 하나의 선택된 변수의 복사본이 유닛(6)에 상주하도록 수정함으로써,
· 상기 보호 소프트웨어(2p)의 상기 제1 오브젝트 부분(2pos)과 상기 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로서,
- 상기 제1 오브젝트 부분(2pos)은 상기 보호 소프트웨어(2p)의 실행 동안 상기 제1 실행 부분(2pes)의 적어도 하나의 일부분이 적어도 하나의 변수 또는 적어도 하나의 변수의 복사본이 유닛(6)에 상주하는 것을 고려하도록 하고,
- 상기 제2 오브젝트 부분(2pou)은 상기 유닛(6)으로의 업로드 후에 상기 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 변수 또는 적어도 하나의 선택된 변수의 복사본도 역시 유닛(6)에 상주하는 데 사용되는 제2 실행 부분(2peu)이 나타나도록 생성함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
이름 변경에 의한 보호 원리가 구현되는 경우, 보호 소프트웨어(2p)는 다음 에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)에서 트리거 명령을 선택함으로써,
· 선택된 트리거 명령의 지시의 이름을 변경하여 해당하는 종속 함수의 식별자를 감추도록 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정함으로써,
· 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)과 복구 수단(20)도 구현하는 개척 수단을 포함하는 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로,
- 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 이름 변경된 지시를 갖는 트리거 명령이 실행되도록 구성되고,
- 상기 제2 오브젝트 부분(2pou)은 유닛(6)으로의 업로드 후에 보호 소프트웨어(2p)의 실행 동안 제1 실행 부분(2pes)에 의해 그의 실행이 트리거되는 종속 함수의 식별자가 제2 실행 부분(2peu)에 의해 복구되고, 종속 함수가 제2 실행 부분(2peu)에 의해 실행되도록 구성되게 생성함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
이름 변경에 의한 보호 원리의 변형례의 구현을 위해, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)에서 이름 변경된 지시를 갖는 적어도 하나의 트리거 명령을 선택함으로써,
· 이름 변경된 지시를 갖는 하나의 선택된 트리거 명령의 이름 변경된 지시 를 적어도 동일 계열의 종속 함수를 트리거하는 다른 이름 변경된 지시로 대체함으로써 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
조건 분기에 의한 보호 원리가 구현되는 경우, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)에서, 적어도 하나의 선택된 알고리즘적 처리에서 수행되는 적어도 하나의 조건 분기를 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로, 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 조건 분기의 기능이 제2 실행 부분(2peu)에 의해 유닛(6)에서 실행되도록 수정함으로써,
· 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)와 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로,
- 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 조건 분기의 기능이 유닛(6)에서 실행되도록 되어 있고,
- 상기 제2 오브젝트 부분(2pou)은 유닛(6)으로의 업로드 후에 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 조건 분기의 기능을 실행하는 데 사용되는 제2 실행 부분(2peu)이 나타나도록 생성함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
조건 분기에 의한 보호 원리의 양호한 실시예의 구현을 위해, 보호 소프트웨 어(2p)는 다음에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)에서, 적어도 하나의 일련의 선택된 조건 분기를 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로, 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 일련의 조건 분기의 전체 기능이 제2 실행 부분(2peu)에 의해 유닛(6)에서 실행되도록 수정함으로써,
· 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)과 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)를 생성하는 것으로,
- 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 일련의 조건 분기의 기능이 유닛(6)에서 실행되도록 구성되고,
- 상기 제2 오브젝트 부분(2pou)은 유닛(6)으로의 업로드 후에 보호 소프트웨어(2p)의 실행 동안, 적어도 하나의 선택된 일련의 조건 분기의 전체 기능을 실행하는 데 사용되는 제2 실행 부분(2peu)이 나타나도록 생성함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
자연히, 본 발명에 따른 보호 원리들은 소프트웨어의 중간 보호 제품의 사전 실행을 필요로 하지 않고 새로운 소프트웨어의 개발 동안 직접 적용될 수 있다. 이와 같이, 생성 단계 S21 및 수정 단계 S22는 보호 소프트웨어(2p)를 직접 획득하기 위해 동시에 수행될 수 있다.
사후 보호 서브단계 P2 동안, 보호 소프트웨어(2p)의 생성 단계 S21 후에 또 한 가능하게는 수정 단계 S22의 후에, "커스터마이즈 단계 S23"라는 단계가 행해진다. 이 커스터마이즈 단계 S23 동안, 개척 수단을 포함하는 제2 오브젝트 부분(2pou)은 적어도 하나의 유닛(6)을 획득할 목적으로 적어도 하나의 블랭크 유닛(60)에 업로드되거나, 가능하게는 개척 수단을 포함하는 제2 오브젝트 부분(2pou)의 일부가 적어도 하나의 유닛(6)을 획득할 목적으로 적어도 하나의 사전 커스터마이즈된 유닛(66)으로 업로드된다. 이 커스터마이즈 정보의 업로드는 적어도 하나의 유닛(6)을 작동할 수 있게 해준다. 유의할 점은 상기 정보의 일부가 일단 유닛(6)으로 전송되면 상기 유닛(6) 외부에서는 직접 접근할 수 없다는 것이다. 블랭크 유닛(60) 또는 사전 커스터마이즈된 유닛(66)으로의 커스터마이즈 정보의 전송은 도 150에 관한 나머지 설명에 기술되어 있는 적합한 커스터마이즈 유닛을 통해 수행될 수 있다. 칩 카드(7)와 그의 리더(8)로 구성된 유닛(6)의 경우, 커스터마이즈는 단지 칩 카드(7)만 관여한다.
보호 단계(P)의 구현을 위해, 여러가지 기술적 수단에 대해 도 110, 도 120, 도 130, 도 140 및 도 150을 참조하여 보다 상세히 설명한다.
도 110은 정의 단계 S11 동안 개입된 정의를 고려하고 전송 수단(12, 13)과 가능하게는 유닛(6)용으로 된 개척 수단이 구축되는 동안인 구축 단계 S12를 구현할 수 있는 시스템(25)의 일 실시예를 나타낸 것이다. 이러한 시스템(25)은 전통적으로 시스템 유닛, 화면, 키보드-마우스 등의 주변 장치를 포함하는 컴퓨터의 형태를 갖는 프로그램 개발 유닛 또는 웍스테이션을 포함하며, 그 중에서도 특히 이하의 프로그램, 즉 파일 편집기, 어셈블러, 프리프로세서, 컴파일러, 인터프리터, 디버거 및 링크 에디터를 포함한다.
도 120은 사전 커스터마이즈된 유닛(66)을 획득할 목적으로 전송 수단(13) 및/또는 개척 수단을 적어도 부분적으로 적어도 하나의 블랭크 유닛(60)으로 업로드할 수 있는 사전 커스터마이즈 유닛(30)의 일 실시예를 나타낸 것이다. 상기 사전 커스터마이즈 유닛(30)은 전송 수단(13) 및/또는 개척 수단이 업로드되어 있는 사전 커스터마이즈된 유닛(66)을 획득하기 위해 블랭크 유닛(60)을 전기적으로 사전 커스터마이즈할 수 있는 판독 및 기록 수단(31)을 포함한다. 사전 커스터마이즈 유닛(30)은 또한 예를 들어 프린터의 형태를 가질 수 있는 블랭크 유닛(60)의 물리적 커스터마이즈 수단(32)을 포함할 수 있다. 유닛(6)이 칩 카드(7)와 그의 리더(8)로 구성되어 있는 경우, 사전 커스터마이즈는 일반적으로 칩 카드(7)만이 관여한다.
도 130은 보호 소프트웨어의 생성을 돕거나 소프트웨어 보호를 자동화할 수 있는 도구의 제작을 수행할 수 있는 시스템(35)의 일 실시예를 나타낸 것이다. 이러한 시스템(35)은 전통적으로 시스템 유닛, 화면, 키보드-마우스 등의 주변 장치를 포함하는 컴퓨터의 형태를 갖는 프로그램 개발 유닛 또는 웍스테이션을 포함하며, 그 중에서도 특히 이하의 프로그램, 즉 파일 편집기, 어셈블러, 프리프로세서, 컴파일러, 인터프리터, 디버거 및 링크 에디터를 포함한다.
도 140은 보호 소프트웨어(2p)를 직접 생성하거나 보호 소프트웨어(2p)를 획득할 목적으로 취약 소프트웨어(2v)를 수정할 수 있는 시스템(40)의 일 실시예를 나타낸 것이다. 이러한 시스템(40)은 전통적으로 시스템 유닛, 화면, 키보드-마우스 등의 주변 장치를 포함하는 컴퓨터의 형태를 갖는 프로그램 개발 유닛 또는 웍스테이션을 포함하며, 그 중에서도 특히 이하의 프로그램, 즉 파일 편집기, 어셈블러, 프리프로세서, 컴파일러, 인터프리터, 디버거 및 링크 에디터는 물론, 보호 소프트웨어의 생성을 도울 수 있거나 소프트웨어 보호를 자동화할 수 있는 도구를 포함한다.
도 150은 적어도 하나의 유닛(6)을 획득할 목적으로 적어도 하나의 블랭크 유닛(60)에 제2 오브젝트 부분(2pou)을 업로드하거나 적어도 하나의 유닛(6)을 획득할 목적으로 적어도 하나의 사전 커스터마이즈된 유닛(66)으로 제2 오브젝트 부분(2pou)의 일부를 업로드할 수 있는 커스터마이즈 유닛(45)의 일 실시예를 나타낸 것이다. 이러한 커스터마이즈 유닛(45)은 적어도 하나의 유닛(6)을 획득하기 위해 적어도 하나의 블랭크 유닛(60) 또는 적어도 하나의 사전 커스터마이즈된 유닛(66)을 전기적으로 커스터마이즈할 수 있는 판독 및 기록 수단(46)을 포함한다. 이 커스터마이즈의 종료시에, 유닛(6)은 보호 소프트웨어(2p)의 실행에 필요한 정보를 포함하고 있다. 커스터마이즈 유닛(45)은 또한 예를 들어 프린터의 형태를 가질 수 있는 적어도 하나의 유닛(6)에 대한 물리적인 커스터마이즈 수단(47)을 포함할 수 있다. 유닛(6)이 칩 카드(7)와 그의 리더(8)로 구성되어 있는 경우, 커스터마이즈는 일반적으로 칩 카드(7)만이 관여한다.
본 발명에 따른 보호 프로세스는 이하의 개선을 사용하여 구현될 수 있다.
· 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)이 분할되어 있는 몇개의 처리 및 기억 유닛을 함께 사용하도록 계획할 수 있으며, 따라서 이러한 결합 사용은 상기 처리 및 기억 유닛의 적어도 하나가 없는 경우 보호 소프트웨어(2p)의 실행할 수 있어 보호 소프트웨어(2p)의 사용을 방지할 수 있다.
· 동일한 방식으로, 사전 커스터마이즈 단계 S13 후, 커스터마이즈 단계 S23 동안, 사전 커스터마이즈된 유닛(66)을 유닛(6)으로 변환하는 데 필요한 제2 오브젝트 부분(2pou)의 부분이 제2 오브젝트 부분(2pou)의 상기 부분에 대한 접근을 제한하기 위해 커스터마이즈 유닛(45)에 의해 사용되는 처리 및 기억 유닛에 포함될 수 있다. 자연히, 제2 오브젝트 부분(2pou)의 상기 부분은 몇개의 처리 및 기억 유닛 사이에 분할될 수 있고 따라서 제2 오브젝트 부분(2pou)의 상기 부분은 상기 처리 및 기억 유닛의 결합 사용 동안에만 접근할 수 있다.

Claims (36)

  1. 적어도 기억 수단(15) 및 처리 수단(16)을 포함하는 적어도 하나의 블랭크 유닛(60)을 사용하여, 데이터 처리 시스템(3) 상에서 동작하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법에 있어서,
    1) 상기 유닛(6)에서 적어도 부분적으로 모니터링해야 하는 상기 적어도 하나의 소프트웨어 실행 특성,
    2) 적어도 하나의 소프트웨어 실행 특성에 대해 준수해야 할 상기 적어도 하나의 조건,
    3) 상기 유닛(6)에서 구현되고 적어도 하나의 소프트웨어 실행 특성이 적어도 하나의 관련 조건을 준수하지 않는 것을 감지할 수 있는 상기 감지 수단(17), 및
    4) 상기 유닛(6)에서 구현되고 적어도 하나의 조건이 준수되지 않을 때 상기 데이터 처리 시스템(3)으로의 통지 또는 소프트웨어의 실행의 수정을 가능하게 해주는 상기 강제 수단(18)
    을 정의하는 단계와,
    상기 블랭크 유닛(60)을 상기 감지 수단(17) 및 상기 강제 수단(18)도 구현할 수 있게 해주는 유닛(6)으로 변환할 수 있는,
    개척 수단을 구축하는 단계와,
    1) 모니터링되어야 하는 소프트웨어 실행 특성 중에서 모니터링할 적어도 하나의 소프트웨어 실행 특성을 선택함으로써,
    2) 적어도 하나의 선택된 소프트웨어 실행 특성에 대해 준수해야 할 적어도 하나의 조건을 선택함으로써,
    3) 취약 소프트웨어(2v)의 실행 동안 적어도 하나의 피연산자를 사용하여 적어도 하나의 결과를 획득할 수 있고 적어도 하나의 선택된 소프트웨어 실행 특성을 모니터링해야 하는 적어도 하나의 알고리즘적 처리를 선택함으로써,
    4) 적어도 하나의 선택된 알고리즘적 처리를 포함하는 취약 소프트웨어의 소스(2vs) 중 일부를 선택함으로써,
    5) 보호 소프트웨어의 소스(2ps) 중 적어도 하나의 수정된 부분을 획득하기 위해 취약 소프트웨어의 소스(2vs)의 적어도 하나의 선택된 부분을
    - 보호 소프트웨어(2p)의 실행 동안, 제1 실행 부분(2pes)이 데이터 처리 시스템(3)에서 실행되고 제2 실행 부분(2peu)이 정보의 업로드 후에 블랭크 유닛(60)으로부터 획득되는 유닛(6)에서 실행되도록 하고,
    - 제2 실행 부분(2peu)이 적어도 하나의 선택된 알고리즘적 처리의 기능을 적어도 실행하고
    - 보호 소프트웨어(2p)의 실행 동안, 적어도 하나의 선택된 실행 특성이 제2 실행 부분(2peu)에 의해 모니터링되고 조건이 준수되지 않는다는 사실이 보호 소프트웨어(2p)의 실행의 수정을 가져오도록 수정하여, 취약 소프트웨어의 소스(2vs)로부터 보호 소프트웨어의 소스(2ps)를 생성함으로써,
    - 상기 보호 소프트웨어의 소스(2ps)로부터 상기 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)과 감지 수단(17) 및 강제 수단(18)을 구현하는 개척 수단을 포함하는 상기 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로서,
    - 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 데이터 처리 시스템(3)에서 실행되고 상기 제1 오브젝트 부분(2pos)의 일부가 적어도 하나의 선택된 소프트웨어 실행 특성이 모니터링된다는 것을 고려하는 제1 실행 부분(2pes)이 나타나도록 하고,
    - 상기 제2 오브젝트 부분(2pou)은 블랭크 유닛(60)으로의 업로드 후에 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 소프트웨어 실행 특성이 모니터링되고 조건이 준수되지 않는다는 사실이 보호 소프트웨어(2p)의 실행의 수정을 가져오는 데 사용되는 제2 실행 부분(2peu)이 나타나도록 생성함으로써,
    보호 소프트웨어(2p)를 생성하는 단계와,
    유닛(6)을 획득할 목적으로 제2 오브젝트 부분(2pou)을 블랭크 유닛(60)으로 업로드하는 단계;
    를 포함하는, 보호 단계(P);
    1) 상기 유닛(6)이 존재하는 경우,
    - 보호 소프트웨어(2p)의 모든 수정된 부분의 모든 모니터링된 실행 특성에 해당되는 모든 조건이 준수되는 한, 보호 소프트웨어(2p)의 상기 부분이 동작할 수 있게 하고 그 결과 보호 소프트웨어(2p)가 동작할 수 있게 하고
    - 보호 소프트웨어(2p)의 일부의 모니터링된 실행 특성에 해당되는 조건의 적어도 하나가 준수되지 않는 경우, 데이터 처리 시스템(3)에의 이의 통지 또는 보호 소프트웨어(2p)의 일부의 기능의 수정을 행하여 보호 소프트웨어(2p)의 기능이 수정되도록 하고,
    2) 상기 유닛(6)이 없는 경우,
    - 상기 제1 실행 부분(2pes)의 일부에 의해 상기 유닛(6)에서 선택된 알고리즘적 처리의 기능의 실행을 트리거하라는 요청이 있음에도 불구하고, 상기 요청을 정확하게 이행할 수 없어 적어도 상기 제1 실행 부분(2pes)의 일부가 정확히 실행되지 않고 그 결과 상기 보호 소프트웨어(2p)가 기능하지 못하는 하는, 보호 소프트웨어(2p)가 실행되고 있는 동안 보호 소프트웨어(2ps)를 사용하는
    사용단계(U);
    를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  2. 제1항에 있어서,
    상기 보호 단계(P)는,
    보호 소프트웨어(2p)의 사용을 제한하기 위해,
    1) 모니터링되어야 하는 소프트웨어 실행 특성으로서 소프트웨어의 기능의 사용에 대한 측정 변수와,
    2) 준수할 조건으로서 각각의 측정 변수와 관련된 적어도 하나의 임계값과,
    3) 적어도 하나의 측정 변수의 갱신을 가능하게 해주는 구체화 수단,
    을 정의하는 단계와,
    상기 유닛(6)이 상기 구체화 수단도 구현할 수 있는 상기 개척 수단을 구축하는 단계와,
    1) 모니터링할 소프트웨어 실행 특성으로서 소프트웨어의 적어도 하나의 기능의 사용에 대한 적어도 하나의 측정 변수를 선택함으로써,
    2) 측정 변수를 사용하여 그 사용을 모니터링해야 하는 상기 보호 소프트웨어(2p)의 적어도 하나의 기능과, 상기 기능의 사용을 정량화하는 데 사용되는 적어도 하나의 측정 변수와, 상기 기능의 사용의 한계에 해당하는 선택된 측정 변수에 관련된 적어도 하나의 임계값과, 상기 기능의 사용에 따라 선택된 측정 변수의 적어도 하나의 갱신 방법을 선택함으로써,
    3) 상기 보호 소프트웨어의 소스(2ps) 중 적어도 하나의 선택된 부분을 수정하는 것으로서, 상기 보호 소프트웨어(2p)의 실행 동안 상기 측정 변수가 상기 기능의 사용에 따라 상기 제2 실행 부분(2peu)에 의해 구체화되고 적어도 하나의 임계값 교차가 고려되도록 수정함으로써,
    상기 보호 소프트웨어(2p)를 수정하는 단계와,
    상기 유닛(6)의 존재시에, 적어도 하나의 사용 한계에 해당하는 적어도 하나의 임계값 교차가 감지되는 경우, 상기 데이터 처리 시스템(3)으로의 이의 통지 또는 상기 보호 소프트웨어(2p) 중 일부의 기능의 수정을 행하여 상기 보호 소프트웨어(2p)의 상기 기능이 수정되도록 보호 소프트웨어(2ps)를 사용하는,
    사용 단계(U);
    를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  3. 제2항에 있어서,
    보호 단계(P)는,
    적어도 하나의 측정 변수에 대한 몇개의 관련 임계값들과, 상기 임계값들 각각에 해당하는 서로 다른 강제 수단을 정의하는 단계;와,
    1) 상기 보호 소프트웨어의 소스(2ps)에서, 상기 기능의 서로 다른 사용 한계에 해당하는 몇개의 임계값과 관련되어야만 하는 적어도 하나의 선택된 측정 변수를 선택함으로써,
    2) 상기 선택된 측정 변수와 관련된 적어도 2개의 임계값을 선택함으로써,
    3) 상기 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 부분을 수정하는 것으로서, 상기 보호 소프트웨어(2p)의 실행 동안 상기 여러가지 임계값의 교차가 상기 제2 실행 부분(2peu)에 의해 서로 달리 고려되도록 수정함으로써,
    상기 보호 소프트웨어(2p)를 수정하는 단계;를 포함하고,
    상기 사용 단계(U)는,
    상기 유닛(6)이 존재하는 경우,
    1) 제1 임계값의 교차가 감지되는 경우, 상기 보호 소프트웨어(2p)를 상기 해당하는 기능을 더 이상 사용하지 못하도록 금지시키는 단계와,
    2) 제2 임계값의 교차가 감지되는 경우, 상기 해당하는 기능 또는 상기 보호 소프트웨어(2p) 중 적어도 하나의 부분을 무효화시키는 단계;
    를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  4. 제2항 또는 제3항에 있어서,
    상기 보호 단계(P)는,
    측정 변수에 의해 모니터링되는 적어도 하나의 소프트웨어 기능에 적어도 하나의 부가 사용을 승인할 수 있는 재충전 수단을 정의하는 단계;
    유닛(6)이 상기 재충전 수단도 구현할 수 있게 해주는 개척 수단을 구축하는 단계; 및
    1) 상기 보호 소프트웨어의 소스(2ps)에서 기능의 사용을 제한할 수 있고 또 적어도 하나의 부가 사용을 승인할 수 있어야만 하는 적어도 하나의 선택된 측정 변수를 선택함으로써,
    2) 상기 보호 소프트웨어의 소스(2ps) 중 적어도 하나의 선택된 부분을 수정하는 것으로, 재충전이라고 하는 단계 동안 선택된 측정 변수에 해당하는 적어도 하나의 기능의 적어도 하나의 부가 사용이 승인될 수 있도록 수정함으로써, 상기 보호 소프트웨어(2p)를 수정하는 단계;를 포함하고,
    상기 재충전 단계는,
    기능의 적어도 하나의 부가 사용이 가능하도록 하기 위해 적어도 하나의 선택된 측정 변수 또는 적어도 하나의 관련 임계값을 재구체화하는 단계;
    를 포함하는 것을 특징으로 하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  5. 제1항에 있어서,
    상기 보호 단계(P)는,
    모니터링되어야 하는 소프트웨어 실행 특성으로서, 소프트웨어 사용의 프로파일, 및 준수해야 할 조건으로서, 적어도 하나의 소프트웨어 실행 특징을 정의하는 단계; 및
    1) 모니터링할 소프트웨어 실행 특성으로서 적어도 하나의 소프트웨어 사용 프로파일을 선택함으로써,
    2) 적어도 하나의 선택된 사용 프로파일이 준수해야만 하는 적어도 하나의 실행 특징을 선택함으로써,
    3)상기 보호 소프트웨어의 소스(2ps) 중 적어도 하나의 선택된 부분을 수정하는 것으로, 상기 보호 소프트웨어(2p)의 실행 동안, 제2 실행 부분(2peu)이 모든 선택된 실행 특징을 준수하도록 수정함으로써,
    상기 보호 소프트웨어(2p)를 수정하는 단계;를 포함하고,
    상기 사용 단계(U)는,
    상기 유닛(6)이 존재할 시 적어도 하나의 실행 특징이 준수되지 않는다고 감지되는 경우, 상기 데이터 처리 시스템(3)으로의 이의 통지 또는 상기 보호 소프트웨어(2p) 중 일부의 기능의 수정을 행하여 상기 보호 소프트웨어(2p)의 기능이 수정되도록 하는 단계;
    를 포함하는 것을 특징으로 하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  6. 제5항에 있어서,
    상기 보호 단계(P)는,
    1) 상기 유닛(6)에서 실행되어야 하는 명령어를 갖는 명령어 세트,
    2) 상기 명령어 세트에 대한 한 세트의 명령어 커맨드로서, 상기 명령어 커맨드가 데이터 처리 시스템(3)에서 실행되어야만 하고 상기 유닛(6)에서 상기 명령어의 실행을 트리거해야 하는 것인 명령어 커맨드 세트,
    3) 사용의 프로파일로서, 상기 명령어의 연쇄,
    4) 실행 특징으로서, 상기 명령어의 실행에 대한 예상된 연쇄,
    5) 명령어의 연쇄가 예상된 것에 해당하지 않는다는 것을 감지할 수 있는 감지 수단(17)과,
    6) 명령어의 연쇄가 예상된 것에 해당하지 않을 경우 데이터 처리 시스템(3)으로의 통지 또는 보호 소프트웨어(2p) 중 일부의 기능의 수정을 행할 수 있는 강제 수단(18),
    을 정의하는 단계와,
    명령어의 실행이 데이터 처리 시스템(3)에서의 명령어 커맨드의 실행에 의해 트리거되며, 유닛(6)이 명령어 세트의 명령어도 실행할 수 있게 해주는 개척 수단을 구축하는 구축 단계와,
    1) 적어도 하나의 선택된 알고리즘적 처리가 분할되어 상기 보호 소프트웨어(2p)의 실행 동안 상기 알고리즘적 처리가 명령어를 사용하여 상기 제2 실행 부분(2peu)에 의해 실행되도록 하고,
    2) 적어도 하나의 선택된 알고리즘적 처리에 대해, 명령어 커맨드들이 상기 보호 소프트웨어의 소스(2ps)에 통합되게 하여 상기 보호 소프트웨어(2p)의 실행 동안 각 명령어 커맨드가 상기 제1 실행 부분(2pes)에 의해 실행되고 상기 유닛(6)에서 상기 제2 실행 부분(2peu)에 의한 명령어의 실행을 트리거하도록 하며,
    3) 상기 명령어 커맨드의 순서가 상기 보호 소프트웨어(2p)의 실행을 가능하게 해주는 순서 세트들 중에서 선택되도록 하고,
    4) 명령어의 적어도 일부가 유닛(6)에서의 그의 실행 동안 준수해야만 하는 연쇄가 지정되도록 보호 소프트웨어의 소스(2ps) 중 적어도 하나의 선택된 부분을 수정함으로써,
    보호 소프트웨어(2p)를 수정하는 단계;를 포함하고,
    상기 사용 단계(U)는,
    유닛(6)의 존재 시에, 유닛(6)에서 실행되는 명령어의 연쇄가 예상된 것에 해당하지 않는 것으로 감지된 경우, 데이터 처리 시스템(3)으로의 이의 통지 또는 보호 소프트웨어(2p) 중 일부의 기능의 수정을 행하여 보호 소프트웨어(2p)의 기능이 수정되도록 하는 단계;
    를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  7. 제6항에 있어서,
    상기 보호 단계(P)는,
    1) 일부 명령어가 레지스터를 사용하고 결과를 반환할 목적으로 적어도 하나의 피연산자를 사용하는 명령어 세트와,
    2) 레지스터를 사용하는 적어도 일부의 명령어에 대해, 명령어의 기능을 정의하는 부분(PF), 명령어의 실행에 대한 예상된 연쇄를 정의하고 이하에 해당하는 비트를 포함하는 부분, 명령어의 식별 필드(CII), 명령어의 각 피연산자에 대한 플래그 필드(CDk) 및 피연산자의 예상된 식별 필드(CIPk),
    3) 개척 수단에 속하고 명령어 세트에 의해 사용되는 각 레지스터에 대해, 상기 레지스터에 그의 결과를 반환했던 마지막 명령어의 식별을 자동적으로 기억하고 있는 생성된 식별 필드(CIGv),
    4) 감지 수단(17)으로서, 명령의 실행 동안 각 피연산자에 대해 플래그 필드(CDk)가 출현할 때 상기 피연산자에 의해 사용되는 레지스터에 해당하는 생성된 식별 필드(CIGv) 및 상기 피연산자의 출처의 예상된 식별 필드(CIPk)의 동일성을 검사할 수 있는 감지 수단(17), 및
    5) 검사된 동일성 중 적어도 하나가 거짓인 경우 명령어의 결과를 수정할 수 있는 강제 수단(18),
    을 정의하는 단계를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  8. 제1항 내지 제3항 및 제5항 내지 제7항 중 어느 한 항에 있어서,
    상기 보호 단계(P)는,
    1) 상기 보호 소프트웨어(2p)의 실행 동안 보호 소프트웨어(2p)의 상태를 부분적으로 정의하는 적어도 하나의 선택된 알고리즘적 처리에서 사용되는 적어도 하나의 변수를 선택함으로써,
    2) 상기 보호 소프트웨어의 소스(2ps) 중 적어도 하나의 선택된 부분을 수정하는 것으로서, 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 변수 또는 적어도 하나의 선택된 변수의 복사본이 유닛(6)에 상주하도록 수정함으로써,
    3) 상기 제1 오브젝트 부분(2pos)은 상기 보호 소프트웨어(2p)의 실행 동안 상기 제1 실행 부분(2pes) 중 적어도 하나의 부분이 적어도 하나의 변수 또는 적어도 하나의 변수의 복사본이 유닛(6)에 상주하는 것을 고려하도록 하고, 상기 제2 오브젝트 부분(2pou)은 상기 유닛(6)으로의 업로드 후에 상기 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 변수 또는 적어도 하나의 선택된 변수의 복사본도 역시 유닛(6)에 상주하는 데 사용되는 제2 실행 부분(2peu)이 나타나도록 상기 보호 소프트웨어(2p)의 상기 제1 오브젝트 부분(2pos)과 상기 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)을 생성함으로써,
    상기 보호 소프트웨어(2p)를 수정하는 단계;를 포함하고,
    상기 사용 단계(U)는,
    1) 상기 유닛(6)이 존재하는 경우, 상기 제1 실행 부분(2pes)의 일부가 출현할 때마다 상기 유닛(6)에 상주하는 변수 또는 변수의 복사본을 사용하여 상기 제1 실행 부분(2pes)의 일부가 정확하게 실행되고 그 결과 상기 보호 소프트웨어(2p)가 기능하도록 하는 단계; 및
    2) 상기 유닛(6)이 없는 경우, 상기 제1 실행 부분(2pes)의 일부에 의해 상기 유닛(6)에 상주하는 변수 또는 변수의 복사본을 사용하도록 하는 요청이 있음에도 불구하고, 상기 요청을 정확하게 이행할 수 없어 적어도 상기 제1 실행 부분(2pes)의 일부가 정확하게 실행되지 못하고 그 결과 상기 보호 소프트웨어(2p)가 기능하지 못하게 되는 단계;
    를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  9. 제6항에 있어서,
    상기 보호 단계(P)는,
    1) 트리거 명령으로서, 명령어 커맨드,
    2) 종속 함수로서, 명령어,
    3) 지시로서, 해당하는 종속 함수의 실행을 트리거하기 위해 데이터 처리 시스템(3)에 의해 유닛(6)으로 전송되는 정보에 적어도 부분적으로 해당하는 트리거 명령에 대한 적어도 하나의 인수,
    4) 이름 변경된 지시를 갖는 트리거 명령을 획득하기 위해 지시를 이름 변경할 수 있는 지시의 이름 변경 방법, 및
    5) 사용 단계(U) 동안, 유닛(6)에서 사용되도록 설계되고 이름 변경된 지시로부터 실행할 종속 함수를 복구할 수 있는 복구 수단(20),
    을 정의하는 단계와,
    유닛(6)이 복구 수단도 구현할 수 있게 해주는 개척 수단을 구축하는 단계와,
    1) 보호 소프트웨어의 소스(2ps)에서 트리거 명령을 선택함으로써,
    2) 해당하는 종속 함수의 식별자를 감추기 위해 선택된 트리거 명령의 지시를 이름 변경하여 보호 소프트웨어의 소스(2ps) 중 적어도 하나의 선택된 부분을 수정함으로써,
    3) 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)과 복구 수단(20)도 구현하는 개척 수단을 포함하는 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)를 생성하는 것으로,
    - 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 이름 변경된 지시를 갖는 트리거 명령이 실행되고,
    - 상기 제2 오브젝트 부분(2pou)이 유닛(6)으로의 업로드 후에 보호 소프트웨어(2p)의 실행 동안, 제1 실행 부분(2pes)에 의해 그의 실행이 트리거되는 종속 함수의 식별자가 제2 실행 부분(2peu)에 의해 복구되고, 종속 함수가 제2 실행 부분(2peu)에 의해 실행되도록 생성함으로써,
    상기 보호 소프트웨어(2p)를 수정하는 단계;를 포함하고,
    상기 사용 단계(U)는,
    1) 유닛(6)의 존재시에 제1 실행 부분(2pes) 중 일부에 포함된 이름 변경된 지시를 갖는 트리거 명령이 출현할 때마다 유닛(6)에서 해당하는 종속 함수의 식별자를 복구하고 이를 실행하여 상기 제1 실행 부분(2pes) 중 일부가 정확하게 실행되고 그 결과 보호 소프트웨어(2p)가 기능하도록 하는 단계;와,
    2) 유닛(6)의 부존재 시에 제1 실행 부분(2pes)의 일부에 의해 유닛(6)에서의 종속 함수의 실행을 트리거하도록 하는 요청이 있음에도 불구하고, 상기 요청을 정확하게 실시할 수 없어 적어도 상기 제1 실행 부분(2pes)의 일부가 정확하게 실행되지 않고 그 결과 보호 소프트웨어(2p)가 기능하지 못하게 되는 단계;
    를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  10. 제9항에 있어서,
    상기 보호 단계(P)는,
    적어도 하나의 종속 함수에 대해 알고리즘적으로 동등하지만 서로 다른 이름 변경된 지시를 갖는 트리거 명령에 의해 트리거되는 종속 함수 계열을 정의하는 단계와,
    1) 보호 소프트웨어의 소스(2ps)에서 이름 변경된 지시를 갖는 적어도 하나의 트리거 명령을 선택함으로써,
    2) 이름 변경된 지시를 갖는 하나의 선택된 트리거 명령의 적어도 하나의 이름 변경된 지시를 동일 계열의 종속 함수를 트리거하는 다른 이름 변경된 지시로 대체하여 보호 소프트웨어의 소스(2ps) 중 적어도 하나의 선택된 부분을 수정함으로써, 상기 보호 소프트웨어(2p)를 수정하는 단계;
    를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  11. 제10항에 있어서,
    상기 보호 단계(P)는,
    1) 잡음 필드를 유닛(6)에서 실행할 종속 함수의 기능 부분을 정의하는 정보에 첨부시킴으로써, 또는
    2) 명령어의 식별 필드(CII)와 피연산자의 예상된 식별 필드(CIPk)를 사용함으로써
    적어도 하나의 종속 함수에 대해 알고리즘적으로 동등한 종속 함수의 계열을 정의하는 단계;를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  12. 제9항, 제10항 또는 제11항 중 어느 한 항에 있어서,
    상기 보호 단계(P)는,
    1) 지시의 이름 변경 방법으로서, 지시를 암호화하는 암호화 방법, 및
    2) 복구 수단(20)으로서, 이름 변경된 지시를 복호화하고 이에 따라 유닛(6)에서 실행할 종속 함수의 식별자를 복구하는 복호화 방법
    을 구현하는 수단을 정의하는 단계;를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  13. 제1항 내지 제3항, 제5항 내지 제7항 및 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 보호 단계(P)는,
    1) 보호 소프트웨어의 소스(2ps)에서 적어도 하나의 선택된 알고리즘적 처리에서 수행되는 적어도 하나의 조건 분기를 선택함으로써,
    2) 보호 소프트웨어의 소스(2ps) 중 적어도 하나의 선택된 부분을 수정하는 것으로서, 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 조건 분기의 기능이 제2 실행 부분(2peu)에 의해 유닛(6)에서 실행되도록 수정함으로써,
    3) 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)과 보호 소프트웨어 (2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로서,
    - 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 조건 분기의 기능이 유닛(6)에서 실행되고,
    - 상기 제2 오브젝트 부분(2pou)은 유닛(6)으로의 업로드 후 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 조건 분기의 기능을 실행하는 데 사용되는 제2 실행 부분(2peu)이 나타나도록 생성함으로써,
    상기 보호 소프트웨어(2p)를 수정하는 단계;를 포함하고,
    상기 사용 단계(U)는,
    1) 유닛(6)의 존재시에 제1 실행 부분(2pes) 중 일부가 출현할 때마다, 적어도 하나의 조건 분기의 기능을 유닛(6)에서 실행하여 상기 제1 실행 부분(2pes) 중 일부가 정확하게 실행되고 그 결과 보호 소프트웨어(2p)가 기능하도록 하는 단계와,
    2) 유닛(6)의 부존재시에 제1 실행 부분(2pes) 중 일부에 의한 유닛(6)에서의 조건 분기의 기능을 실행하도록 하는 요청에도 불구하고, 상기 요청을 정확하게 실시할 수 없어 적어도 상기 제1 실행 부분(2pes) 중 일부가 정확하게 실행되지 않고 그 결과 보호 소프트웨어(2p)가 기능하지는 못하게 되는 단계;
    를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  14. 제13항에 있어서,
    상기 보호 단계(P)는,
    1) 보호 소프트웨어의 소스(2ps)에서 적어도 하나의 일련의 선택된 조건 분기를 선택함으로써,
    2) 보호 소프트웨어의 소스(2ps) 중 적어도 하나의 선택된 부분을 수정하는 것으로, 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 일련의 조건 분기의 전체 기능이 제2 실행 부분(2peu)에 의해 유닛(6)에서 실행되도록 수정함으로써,
    3) 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)과 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로서,
    - 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 일련의 조건 분기의 기능이 유닛(6)에서 실행되고,
    - 상기 제2 오브젝트 부분(2pou)은 유닛(6)으로의 업로드 후 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 일련의 조건 분기의 전체 기능을 실행하는 데 사용되는 제2 실행 부분(2peu)이 나타나도록 생성함으로써,
    상기 보호 소프트웨어(2p)를 수정하는 단계;를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  15. 제1항 내지 제3항, 제5항 내지 제7항 및 제9항 내지 제11항 중 어느 한 항에 있어서,
    보호 단계(P)를 보호할 소프트웨어에 독립적인 사전 보호 서브단계(P1)와 보호할 소프트웨어에 종속된 사후 보호 서브단계(P2)로 분할하는 단계;를 더 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  16. 제15항에 있어서,
    상기 사전 보호 서브단계(P1)는,
    모든 정의가 실행되는 중인 정의 단계(S11)를 개입시키는 단계;를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  17. 제16항에 있어서,
    상기 정의 단계(S11) 후에 개척 수단이 구축되는 구축 단계(S12)를 개입시키는 단계;를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  18. 제17항에 있어서,
    상기 구축 단계(S12)후에, 사전 커스터마이즈된 유닛(66)을 획득할 목적으로 블랭크 유닛(60)으로의 개척 수단의 적어도 일부를 업로드하는 단계를 포함하는 사전 커스터마이즈 단계(S13)를 개입시키는 단계;를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  19. 제16항에 있어서,
    상기 사전 보호 서브단계(P1)는,
    보호 소프트웨어의 생성을 돕거나 소프트웨어 보호를 자동화할 수 있는 도구가 제작되는 동안인 도구 제작 단계(S14)를 개입시키는 단계;를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  20. 제15항에 있어서,
    사후 보호 서브단계(P2)를,
    취약 소프트웨어(2v)로부터 보호 소프트웨어(2p)가 생성되는 동안인 생성 단계(S21),
    가능하게는 보호 소프트웨어(2p)가 수정되는 동안인 수정 단계(S22), 그리고,
    1) 개척 수단을 포함하는 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)이 적어도 하나의 유닛(6)을 획득할 목적으로 적어도 하나의 블랭크 유닛(60)에 업로드되거나, 또는 2) 가능하게는 개척 수단을 포함하는 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)의 일부가 적어도 하나의 유닛(6)을 획득할 목적으로 적어도 하나의 사전 커스터마이즈된 유닛(66)에 업로드되는 것인 커스터마이즈 단계로 분할하는 단계;
    를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  21. 제19항에 있어서,
    생성 단계(S21) 또는 수정 단계(S22)는,
    보호 소프트웨어의 생성을 돕거나 소프트웨어 보호를 자동화하는 적어도 하나의 도구를 사용하는 단계;를 포함하는 것을 특징으로 하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  22. 제17항에 따른 방법의 구현을 위한 시스템으로서,
    구축 단계(S12) 동안, 정의 단계(S11) 동안에 개입된 정의를 고려하여 유닛(6)용으로 된 개척 수단의 구축을 수행하는데 사용되는 프로그램 개발 유닛을 포함하는 시스템.
  23. 제18항에 따른 방법의 구현을 위한 시스템으로서,
    적어도 하나의 사전 커스터마이즈된 유닛(66)을 획득할 목적으로 개척 수단의 적어도 일부를 적어도 하나의 블랭크 유닛(60)에 업로드할 수 있는 사전 커스터마이즈 유닛(30)을 포함하는 시스템.
  24. 제19항에 따른 방법의 구현을 위한 시스템으로서,
    도구 제작 단계(S14) 동안 보호 소프트웨어의 생성을 돕거나 소프트웨어 보호를 자동화하는 도구의 제작을 수행하는 데 사용되는 프로그램 개발 유닛을 포함하는 시스템.
  25. 제20항에 따른 방법의 구현을 위한 시스템으로서,
    보호 소프트웨어(2p)의 생성 또는 수정에 사용되는 프로그램 개발 유닛을 포함하는 시스템.
  26. 제20항에 따른 방법의 구현을 위한 시스템으로서,
    1) 적어도 하나의 유닛(6)을 획득할 목적으로 제2 오브젝트 부분(2pou)을 적어도 하나의 블랭크 유닛(60)으로 업로드하거나,
    2) 적어도 하나의 유닛(6)을 획득할 목적으로 제2 오브젝트 부분(2pou)의 일부를 적어도 하나의 사전 커스터마이즈된 유닛(66)으로 업로드할 수 있는 커스터마이즈 유닛(45)
    을 포함하는 시스템.
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 제12항에 있어서,
    상기 보호 단계(P)는,
    1) 보호 소프트웨어의 소스(2ps)에서 적어도 하나의 선택된 알고리즘적 처리에서 수행되는 적어도 하나의 조건 분기를 선택함으로써,
    2) 보호 소프트웨어의 소스(2ps) 중 적어도 하나의 선택된 부분을 수정하는 것으로서, 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 조건 분기의 기능이 제2 실행 부분(2peu)에 의해 유닛(6)에서 실행되도록 수정함으로써,
    3) 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)과 보호 소프트웨어 (2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로서,
    - 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 조건 분기의 기능이 유닛(6)에서 실행되고,
    - 상기 제2 오브젝트 부분(2pou)은 유닛(6)으로의 업로드 후 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 조건 분기의 기능을 실행하는 데 사용되는 제2 실행 부분(2peu)이 나타나도록 생성함으로써,
    상기 보호 소프트웨어(2p)를 수정하는 단계;를 포함하고,
    상기 사용 단계(U)는,
    1) 유닛(6)의 존재시에 제1 실행 부분(2pes) 중 일부가 출현할 때마다, 적어도 하나의 조건 분기의 기능을 유닛(6)에서 실행하여 상기 제1 실행 부분(2pes) 중 일부가 정확하게 실행되고 그 결과 보호 소프트웨어(2p)가 기능하도록 하는 단계와,
    2) 유닛(6)의 부존재시에 제1 실행 부분(2pes)의 일부에 의한 유닛(6)에서의 조건 분기의 기능을 실행하도록 하는 요청에도 불구하고, 상기 요청을 정확하게 실시할 수 없어 적어도 상기 제1 실행 부분(2pes)의 일부가 정확하게 실행되지 않고 그 결과 보호 소프트웨어(2p)가 기능하지는 못하게 되는 단계;
    를 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
  36. 제12항에 있어서,
    보호 단계(P)를 보호할 소프트웨어에 독립적인 사전 보호 서브단계(P1)와 보호할 소프트웨어에 종속된 사후 보호 서브단계(P2)로 분할하는 단계;를 더 포함하는 취약 소프트웨어(2v)를 불법 사용으로부터 보호하는 방법.
KR1020047000809A 2001-07-31 2002-07-04 소위 감지 및 강제 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법 KR100881733B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR01/10244 2001-07-31
FR0110244A FR2828301B1 (fr) 2001-07-31 2001-07-31 Procede pour proteger un logiciel a l'aide d'un principe dit de "detection et coercition" contre son utilisation non autorisee
PCT/FR2002/002343 WO2003012571A2 (fr) 2001-07-31 2002-07-04 Procede pour proteger un logiciel a l'aide de 'detection et coercition' contre son utilisation non autorisee

Publications (2)

Publication Number Publication Date
KR20040026685A KR20040026685A (ko) 2004-03-31
KR100881733B1 true KR100881733B1 (ko) 2009-02-06

Family

ID=8866119

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047000809A KR100881733B1 (ko) 2001-07-31 2002-07-04 소위 감지 및 강제 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법

Country Status (29)

Country Link
EP (1) EP1412838B1 (ko)
JP (1) JP3949104B2 (ko)
KR (1) KR100881733B1 (ko)
CN (1) CN100339778C (ko)
AP (1) AP2055A (ko)
AU (1) AU2002328377B2 (ko)
BR (1) BR0211373A (ko)
CA (1) CA2455626A1 (ko)
CO (1) CO5550507A2 (ko)
EA (1) EA005466B1 (ko)
EC (1) ECSP044952A (ko)
ES (1) ES2529426T3 (ko)
FR (1) FR2828301B1 (ko)
GE (1) GEP20053648B (ko)
HK (1) HK1078363A1 (ko)
HR (1) HRP20040045A2 (ko)
HU (1) HUP0400234A2 (ko)
IL (1) IL159955A0 (ko)
IS (1) IS7120A (ko)
MA (1) MA26122A1 (ko)
MX (1) MXPA04000489A (ko)
NO (1) NO333768B1 (ko)
OA (1) OA12700A (ko)
PL (1) PL371096A1 (ko)
RS (1) RS50234B (ko)
TN (1) TNSN04011A1 (ko)
UA (1) UA77187C2 (ko)
WO (1) WO2003012571A2 (ko)
ZA (1) ZA200400352B (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754646A (en) 1995-07-19 1998-05-19 Cable Television Laboratories, Inc. Method for protecting publicly distributed software
WO1999066387A1 (fr) * 1998-06-12 1999-12-23 Gemplus Procede de controle de l'execution d'un produit logiciel

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2634917A1 (fr) * 1988-08-01 1990-02-02 Pionchon Philippe Procede et dispositif de protection d'un logiciel, en particulier contre les copies non autorisees
US4932054A (en) * 1988-09-16 1990-06-05 Chou Wayne W Method and apparatus for protecting computer software utilizing coded filter network in conjunction with an active coded hardware device
US5706426A (en) * 1996-02-07 1998-01-06 United Microelectronics Corporation Software protection method and apparatus
US6523119B2 (en) * 1996-12-04 2003-02-18 Rainbow Technologies, Inc. Software protection device and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754646A (en) 1995-07-19 1998-05-19 Cable Television Laboratories, Inc. Method for protecting publicly distributed software
WO1999066387A1 (fr) * 1998-06-12 1999-12-23 Gemplus Procede de controle de l'execution d'un produit logiciel

Also Published As

Publication number Publication date
ECSP044952A (es) 2004-04-28
CO5550507A2 (es) 2005-08-31
NO20040229L (no) 2004-03-30
CA2455626A1 (fr) 2003-02-13
EA200400058A1 (ru) 2004-06-24
ES2529426T3 (es) 2015-02-20
UA77187C2 (en) 2006-11-15
IS7120A (is) 2004-01-20
HUP0400234A2 (en) 2004-09-28
MA26122A1 (fr) 2004-04-01
IL159955A0 (en) 2004-06-20
HK1078363A1 (en) 2006-03-10
AP2055A (en) 2009-10-15
AU2002328377B2 (en) 2008-10-02
FR2828301A1 (fr) 2003-02-07
CN100339778C (zh) 2007-09-26
EA005466B1 (ru) 2005-02-24
JP3949104B2 (ja) 2007-07-25
PL371096A1 (en) 2005-06-13
OA12700A (en) 2006-06-23
AP2004002959A0 (en) 2004-03-31
CN1620640A (zh) 2005-05-25
EP1412838A2 (fr) 2004-04-28
HRP20040045A2 (en) 2005-02-28
FR2828301B1 (fr) 2010-09-03
RS50234B (sr) 2009-07-15
WO2003012571A2 (fr) 2003-02-13
YU5704A (sh) 2006-05-25
KR20040026685A (ko) 2004-03-31
MXPA04000489A (es) 2005-03-07
ZA200400352B (en) 2005-03-30
GEP20053648B (en) 2005-10-25
JP2004537796A (ja) 2004-12-16
WO2003012571A3 (fr) 2004-01-22
EP1412838B1 (fr) 2014-11-19
NO333768B1 (no) 2013-09-16
TNSN04011A1 (fr) 2006-06-01
BR0211373A (pt) 2005-05-10

Similar Documents

Publication Publication Date Title
US7870396B2 (en) Storage medium, method, and apparatus for creating a protected executable program
CN103617401B (zh) 一种数据文件保护方法及装置
CN108491235B (zh) 结合动态加载和函数Native化的DEX保护方法
JP4517636B2 (ja) 実行プログラム作成方法、関数プログラム、及び関数プログラム実行方法
CN110147238B (zh) 一种程序编译方法、装置及系统
KR100940347B1 (ko) 소위 변수 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
KR20040032858A (ko) 소위 이름 변경 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
KR100881733B1 (ko) 소위 감지 및 강제 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
KR20040031778A (ko) 소위 임시 분할 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
KR20040032859A (ko) 소위 조건 분기 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
US20070283437A1 (en) Method to Protect Software Against Unwanted Use with a &#34;Temporal Dissociation&#34; Principle
JP2009104589A (ja) 情報処理装置及びその方法、プログラム、記録媒体
US20070277239A1 (en) Method to Protect Software Against Unwanted Use with a &#34;Renaming&#34; Principle
KR20040032860A (ko) 소위 기본 함수 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
US20030037245A1 (en) Method to protect software against unwanted use with a &#34;variable principle&#34;
US7174466B2 (en) Method to protect software against unwanted use with a “detection and coercion” principle
US7502940B2 (en) Method to protect software against unwanted use with a “conditional branch” principle
US7434064B2 (en) Method to protect software against unwanted use with a “elementary functions” principle
JP2006079433A (ja) プログラム解析装置およびプログラム利用装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130124

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140127

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150128

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160125

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170120

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180125

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190111

Year of fee payment: 11