KR20040027881A - 소위 변수 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법 - Google Patents

소위 변수 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법 Download PDF

Info

Publication number
KR20040027881A
KR20040027881A KR10-2004-7000804A KR20047000804A KR20040027881A KR 20040027881 A KR20040027881 A KR 20040027881A KR 20047000804 A KR20047000804 A KR 20047000804A KR 20040027881 A KR20040027881 A KR 20040027881A
Authority
KR
South Korea
Prior art keywords
execution
unit
software
protection
protection software
Prior art date
Application number
KR10-2004-7000804A
Other languages
English (en)
Other versions
KR100940347B1 (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 KR20040027881A publication Critical patent/KR20040027881A/ko
Application granted granted Critical
Publication of KR100940347B1 publication Critical patent/KR100940347B1/ko

Links

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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 적어도 하나의 유닛으로부터 데이터 처리 시스템 상에서 동작하는 취약 소프트웨어를 불법 사용으로부터 보호하는 방법에 관한 것이다. 본 방법은 취약 소프트웨어의 소스에서 적어도 하나의 변수를 선택하고, 취약 소프트웨어의 소스를 수정하여 보호 소프트웨어의 소스를 생성함으로써 선택된 변수가 유닛에 상주하게 되도록 보호 소프트웨어를 생성하는 데 있다.

Description

소위 변수 원리를 사용하여 소프트웨어를 불법 사용으로부터 보호하는 방법{METHOD FOR PROTECTING A SOFTWARE USING A SO-CALLED VARIABLE PRINCIPLE AGAINST ITS UNAUTHORIZED USE}
상기 기술 분야에서, 주요 문제는 사용료를 지불하지 않은 사용자에 의한 소프트웨어의 불법 사용에 관한 것이다. 이러한 소프트웨어의 불법 사용은 소프트웨어 저작자, 소프트웨어 배포자 및/또는 이러한 소프트웨어를 제품에 통합한 자에게 명백한 손실을 야기시킨다. 이러한 불법 복사본을 회피하기 위해, 그 기술 상황에서 소프트웨어를 보호하기 위해 여러가지 해결 방안들이 제안되어 왔다.
따라서, 보호키, 즉 "동글"이라는 물리적 부품 등의 하드웨어 보호 시스템을 사용하는 보호 방안이 공지되어 있다. 이러한 보호키는 소프트웨어가 키의 존재시에만 실행되도록 보장해야만 한다. 그렇지만, 이러한 해결 방안이 우회하기 쉽다는 불편을 제공하기 때문에 비효율적이라는 것은 인정되어야만 한다. 악의의 사람 또는 해커가 디어셈블러 등의 특수 도구의 도움으로 보호키의 제어 명령어를 삭제할 수 있다. 그러면, 보호 없이 실행될 수 있는 소프트웨어의 수정판에 해당하는 불법 복사본을 작성하는 것이 가능하게 된다. 게다가, 이 해결 방안은 2개 이상의 보호키를 동일한 시스템에 연결시키는 것이 어렵기 때문에 모든 소프트웨어에 일반화될 수 없다.
본 발명은 일반적으로 데이터 처리 시스템의 기술 분야에 관한 것으로서, 보다 상세하게는 상기 데이터 처리 시스템 상에서 실행되는 소프트웨어를 불법 사용으로부터 보호하는 수단을 목적으로 한다.
본 발명의 주제는 특히 칩 카드 또는 USB 포트 상의 필수 키에 의해 통상 구현되는 유닛 등의 기억 유닛 또는 처리 및 기억 유닛을 사용하여 소프트웨어를 불법 사용으로부터 보호하는 수단을 목적으로 한다.
도 10 및 도 11은 본 발명에 따른 프로세스에 의해 각각 보호되지 않는 소프트웨어와 보호되는 소프트웨어의 여러가지 표기를 나타낸 기능 블록도이며,
도 20 내지 도 22는 본 발명에 따른 프로세스를 실시하는 장치의 여러가지 실시예를 일례로서 나타낸 도면이고,
도 30 및 도 31은 본 발명에 따른 프로세스의 일반 원리를 설명하는 기능 블록도이며,
도 40 내지 도 43은 변수에 의해 보호 원리를 구현하는 본 발명에 따른 보호 프로세스를 나타낸 도면이고,
도 50 내지 도 54는 임시 분할에 의해 보호 원리를 구현하는 본 발명에 따른 보호 프로세스를 나타낸 도면이며,
도 60 내지 도 64는 기본 함수에 의해 보호 원리를 구현하는 본 발명에 따른보호 프로세스를 나타낸 도면이고,
도 70 내지 도 74는 감지 및 강제에 의해 보호 원리를 구현하는 본 발명에 따른 보호 프로세스를 나타낸 도면이며,
도 80 내지 도 85는 이름 변경에 의해 보호 원리를 구현하는 본 발명에 따른 보호 프로세스를 나타낸 도면이고,
도 90 내지 도 92는 조건 분기에 의해 보호 원리를 구현하는 본 발명에 따른 보호 프로세스를 나타낸 도면이며,
도 100은 본 발명의 내용을 구현하는 여러가지 단계를 나타낸 도면이고,
도 110은 본 발명의 보호 단계의 구축 단계의 구현을 가능하게 하는 시스템의 일 실시예를 나타낸 도면이며,
도 120은 본 발명에 따른 보호 프로세스에서 사용되는 사전 커스터마이즈 유닛의 일 실시예를 나타낸 도면이고,
도 130은 본 발명에 따른 보호 단계의 도구 제작 단계의 구현을 가능하게 하는 시스템의 일 실시예를 나타낸 도면이며,
도 140은 본 발명에 따른 보호 프로세스의 구현을 가능하게 하는 시스템의 일 실시예를 나타낸 도면이고,
도 150은 본 발명에 따른 보호 프로세스에서 사용되는 커스터마이즈 유닛의 일 실시예를 나타낸 도면이다.
본 발명의 목적은 정확하게는 임시 기억 유닛 또는 처리 및 기억 유닛의 존재가 소프트웨어가 완전히 기능하는 데 필요하기 때문에 이러한 유닛을 사용하여 소프트웨어를 불법 사용으로부터 보호하는 프로세스를 제안함으로써 상기한 문제점에 대한 해결 방안을 찾아내는 데 있다.
이러한 목표에 도달하기 위해, 본 발명의 주제는 적어도 기억 수단을 포함하는 적어도 하나의 블랭크 유닛을 사용하여, 취약 소프트웨어를 불법 사용으로부터 보호하는 프로세스로서, 취약 소프트웨어는 소스로부터 생성되고 데이터 처리 시스템 상에서 동작하는 것인 보호 프로세스에 관한 것이다. 본 발명에 따른 프로세스는
-> 보호 단계 동안,
· 보호 소프트웨어를 생성하는 단계로서,
- 취약 소프트웨어의 소스에서,
> 취약 소프트웨어의 실행 동안 취약 소프트웨어의 상태를 부분적으로 정의하는 적어도 하나의 변수와,
> 적어도 하나의 선택된 변수를 포함하는 적어도 하나의 일부분
을 선택함으로써,
- 취약 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하여 취약 소프트웨어의 소스로부터 보호 소프트웨어의 소스를 생성하는 것으로서, 이 수정을 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 변수 또는 적어도 하나의 선택된 변수의 복사본이 블랭크 유닛에 존재하게 하여 이 블랭크 유닛을 유닛으로 변환되도록 행하여 보호 소프트웨어의 소스를 생성함으로써, 또한
- 보호 소프트웨어의 소스로부터 상기 보호 소프트웨어의 제1 오브젝트 부분을 생성하는 것으로서, 상기 보호 소프트웨어의 실행 동안 상기 데이터 처리 시스템에서 실행되고 그의 적어도 일부분이 적어도 변수 또는 적어도 변수의 복사본이 유닛에 상주한다는 것을 고려하는 제1 실행 부분이 나타나도록 되어 있는 상기 제1 오브젝트 부분을 생성함으로써, 상기 보호 소프트웨어를 생성하는 단계와,
-> 보호 소프트웨어가 실행되고 있는 중인 사용 단계 동안,
· 상기 유닛이 존재하는 경우, 상기 제1 실행 부분의 일부분이 출현할 때마다, 상기 유닛에 존재하는 변수 또는 변수의 복사본을 사용하여 상기 일부분이 정확하게 실행되고 그 결과 상기 보호 소프트웨어가 완전히 기능하도록 하는 단계와,
·상기 유닛이 없는 경우, 상기 제1 실행 부분의 일부분에 의해 상기 유닛에 상주하는 변수 또는 변수의 복사본을 사용하라는 요청이 있음에도 불구하고, 상기 요청을 정확하게 수행할 수 없어 적어도 상기 일부분이 정확히 실행되지 않고 그 결과 상기 보호 소프트웨어가 완전히 기능하지 못하는 단계를 포함한다.
양호한 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계동안,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 상기 보호 소프트웨어의 소스에서,
> 상기 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 변수를 사용하여 적어도 하나의 결과 변수를 획득할 수 있는 적어도 하나의 알고리즘적 처리와,
> 적어도 하나의 선택된 알고리즘적 처리를 포함하는 적어도 하나의 일부분을 선택함으로써,
- 상기 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로서,
> 상기 보호 소프트웨어의 실행 동안 상기 제1 실행 부분이 상기 데이터 처리 시스템에서 실행되고 제2 실행 부분이 처리 수단도 포함하는 상기 유닛에서 실행되도록 하고,
> 적어도 하나의 선택된 알고리즘적 처리의 기능이 적어도 상기 제2 실행 부분에 의해 실행되도록 하며,
> 적어도 하나의 선택된 알고리즘적 처리가 분할되어 상기 보호 소프트웨어의 실행 동안 상기 제2 실행 부분에 의해 이하의 몇개의 개별적인 단계, 즉
<> 적어도 하나의 변수를 상기 유닛의 처분에 맡기는 단계,
<> 상기 유닛에서 적어도 상기 변수에 대해 알고리즘적 처리의 기능을 수행하는 단계, 및
<> 가능하게는 적어도 하나의 결과 변수를 상기 유닛에 의해 상기 데이터 처리 시스템의 처분에 맡기는 단계가 나타나도록 하고,
> 적어도 하나의 선택된 알고리즘적 처리에 대해, 단계 명령들이 상기 보호 소프트웨어의 실행 동안 각 단계 명령이 상기 제1 실행 부분에 의해 실행되고 상기 유닛에서 상기 제2 실행 부분에 의한 한 단계의 실행을 트리거하도록 정의되어 있게 하며,
> 상기 단계 명령들의 순서가 상기 보호 소프트웨어의 실행을 가능하게 하는 순서 세트 중에서 선택되도록,
수정함으로써, 또한
- 상기 보호 소프트웨어의 상기 제1 오브젝트 부분과 상기 보호 소프트웨어의 상기 제2 오브젝트 부분을 생성하는 것으로서,
> 상기 제1 오브젝트 부분은 상기 보호 소프트웨어의 실행 동안 상기 단계 명령들이 상기 선택된 순서에 따라 실행되도록 생성되고,
> 상기 제2 오브젝트 부분은 상기 블랭크 유닛으로의 업로드 후에 상기 보호 소프트웨어의 실행 동안 상기 제1 실행 부분에 의해 트리거되는 단계들이 실행되는 데 사용되는 상기 제2 실행 부분이 나타나도록 생성함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
· 상기 유닛을 획득할 목적으로 상기 제2 오브젝트 부분을 상기 블랭크 유닛으로 업로드하는 단계와,
-> 사용 단계 동안,
· 상기 유닛이 존재하는 경우, 상기 제1 실행 부분의 일부분에 포함되어 있는 단계 명령이 출현할 때마다 상기 유닛에서 대응하는 단계를 실행하여 상기 일부분이 정확하게 실행되고 그 결과 상기 보호 소프트웨어가 완전히 기능하도록 하는 실행 단계와,
· 상기 유닛이 없는 경우, 상기 제1 실행 부분의 일부분에 의해 상기 유닛에서 한 단계의 실행을 트리거하도록 하는 요청이 있음에도 불구하고, 상기 요청을 정확하게 수행할 수 없어 적어도 상기 일부분이 정확하게 실행되지 못하고 그 결과 상기 보호 소프트웨어가 완전히 기능하지 못하게 되는 단계를 포함한다.
다른 양호한 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안에,
·한 세트의 기본 함수와 한 세트의 기본 명령을 정의하는 단계로서,
- 처리 수단도 포함하는 상기 유닛에서 실행해야 하는 기본 함수를 갖는 기본 함수 세트와,
- 상기 기본 함수 세트에 대한 기본 명령 세트로서, 상기 데이터 처리 시스템에서 실행되어야 하고 상기 기본 함수의 상기 유닛에서의 실행을 트리거하는 기본 명령 세트를 정의하는 단계와,
· 상기 블랭크 유닛을 상기 세트의 기본 함수들을 실행할 수 있는 상기 유닛으로 변환시킬 수 있는 개척 수단을 구축하는 단계로서, 상기 기본 함수의 실행은 상기 데이터 처리 시스템에서의 기본 명령의 실행에 의해 트리거되는 것인 개척 수단 구축 단계와,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 상기 보호 소프트웨어의 소스에서,
> 상기 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 변수를 사용하고 적어도 하나의 결과 변수를 획득할 수 있는 적어도 하나의 알고리즘적 처리, 및
> 적어도 하나의 선택된 알고리즘적 처리를 포함하는 적어도 하나의 일부분을 선택함으로써,
- 상기 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로서,
> 상기 보호 소프트웨어의 실행 동안, 상기 제1 실행 부분은 상기 데이터 처리 시스템에서 실행되고 상기 제2 실행 부분은 상기 유닛에서 실행되도록 하고,
> 적어도 하나의 선택된 알고리즘적 처리의 기능이 적어도 상기 제2 실행 부분에 의해 실행되도록 하며,
> 적어도 하나의 선택된 알고리즘적 처리가 분할되어 상기 보호 소프트웨어의 실행 동안 상기 알고리즘적 처리가 기본 함수를 사용하여 상기 제2 실행부분에 의해 실행되도록 하고,
> 적어도 하나의 선택된 알고리즘적 처리에 대해, 기본 명령들이 상기 보호 소프트웨어의 소스에 통합되게 하여 상기 보호 소프트웨어의 실행 동안 각 기본 명령이 상기 제1 실행 부분에 의해 실행되고 상기 유닛에서 상기 제2 실행 부분에 의한 기본 함수의 실행을 트리거하도록 하며,
> 상기 기본 명령의 순서가 상기 보호 소프트웨어의 실행을 가능하게 해주는 순서 세트들 중에서 선택되도록,
수정함으로써,
- 상기 보호 소프트웨어의 상기 제1 오브젝트 부분과 상기 개척 수단을 포함하는 상기 보호 소프트웨어의 제2 오브젝트 부분을 생성하는 것으로서,
> 상기 제1 오브젝트 부분은 상기 보호 소프트웨어의 실행 동안 상기 기본 명령들이 상기 선택된 순서에 따라 실행되도록 하고,
> 상기 제2 오브젝트 부분은 상기 블랭크 유닛으로의 업로드 후에 상기 보호 소프트웨어의 실행 동안 상기 제1 실행 부분에 의해 트리거되는 기본 함수들을 실행하는 데 사용되는 상기 제2 실행 부분이 나타나도록 생성함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
· 상기 유닛을 획득할 목적으로 상기 제2 오브젝트 부분을 상기 블랭크 유닛으로 업로드하는 단계와,
-> 사용 단계 중에,
· 상기 유닛이 존재하는 경우, 상기 제1 실행 부분의 일부분에 포함된 기본 명령이 출현할 때마다 상기 유닛에서 그에 해당하는 기본 함수를 실행하여 상기 일부분이 정확하게 실행되고 그 결과 상기 보호 소프트웨어가 완전히 기능하도록 하는 실행 단계와,
· 상기 유닛이 없는 경우, 상기 제1 실행 부분의 일부분에 의해 상기 유닛에서 기본 함수의 실행을 트리거하도록 하는 요청이 있음에도 불구하고, 상기 요청을 정확하게 수행할 수 없어 적어도 상기 일부분이 정확하게 실행되지 못하고 그 결과 상기 보호 소프트웨어가 완전히 기능하지 못하게 되는 단계를 포함한다.
또다른 양호한 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 중에,
· 한 세트의 기본 함수와 한 세트의 기본 명령을 정의하는 단계로서,
- 상기 유닛에서 실행해야 하는 기본 함수들을 갖는 기본 함수 세트와,
- 상기 기본 함수 세트에 대한 기본 명령 세트로서, 상기 기본 명령은 상기 데이터 처리 시스템에서 실행되어야 하고 상기 유닛에서 상기 기본 함수의 실행을 트리거하는 것인 기본 명령 세트를 정의하는 단계와,
· 상기 유닛이 상기 세트의 기본 함수를 실행할 수 있게 해주는 개척 수단을 구축하는 단계로서, 상기 기본 함수의 실행은 상기 데이터 처리 시스템에서 기본 명령들의 실행에 의해 트리거되는 것인 구축 단계와,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 상기 보호 소프트웨어의 소스에서 상기 보호 소프트웨어의 실행 동안 알고리즘적 처리의 기능을 수행하는 적어도 하나의 단계를 선택함으로써,
- 상기 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로서,
> 적어도 하나의 선택된 단계가 분할되어 상기 보호 소프트웨어의 실행 동안 상기 단계가 기본 함수를 사용하여 상기 제2 실행 부분에 의해 실행되도록 하고,
> 적어도 하나의 선택된 단계에 대해, 기본 명령들이 상기 보호 소프트웨어의 소스에 통합되어 상기 보호 소프트웨어의 실행 동안 각 기본 명령이 상기 제1 실행 부분에 의해 실행되고 상기 유닛에서 상기 제2 실행 부분에 의한 기본 함수의 실행을 트리거하도록 하며,
> 상기 기본 명령의 순서가 상기 보호 소프트웨어의 실행을 가능하게 해주는 순서 세트 중에서 선택되도록,
수정함으로써,
- 상기 보호 소프트웨어의 상기 제1 오브젝트 부분과 상기 개척 수단도 포함하는 상기 보호 소프트웨어의 상기 제2 오브젝트 부분을 생성하는 것으로서,
> 상기 제1 오브젝트 부분은 상기 보호 소프트웨어의 실행 동안 상기 기본 명령들이 상기 선택된 순서에 따라 실행되도록 하고,
> 상기 제2 오브젝트 부분은 상기 유닛으로의 업로드 후에 상기 보호 소프트웨어의 실행 동안 상기 제1 실행 부분에 의해 트리거된 기본 함수들을 실행하는 데 사용되는 상기 제2 실행 부분이 나타나도록 생성함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 중에,
· 상기 유닛이 있는 경우, 상기 제1 실행 부분의 일부분에 포함된 기본 명령이 출현할 때마다, 상기 유닛에서 그에 해당하는 기본 함수를 실행하여 상기 일부분이 정확하게 실행되고 그 결과 상기 보호 소프트웨어가 완전히 기능하도록 하는 실행 단계와,
· 상기 유닛이 없는 경우, 상기 제1 실행 부분의 일부분에 의해 상기 유닛에서의 기본 함수의 실행을 트리거하도록 하는 요청이 있음에도 불구하고, 상기 요청을 정확하게 수행할 수 없어 적어도 상기 일부분이 정확하게 실행되지 못하고 그 결과 상기 보호 소프트웨어가 완전히 기능하지 못하는 단계를 포함한다.
또다른 양호한 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 적어도 하나의 소프트웨어 실행 특성, 적어도 하나의 기준, 감지 수단, 및 강제 수단을 정의하는 단계로서,
- 상기 유닛에서 적어도 부분적으로 모니터링해야 하는 상기 적어도 하나의 소프트웨어 실행 특성,
- 적어도 하나의 소프트웨어 실행 특성에 대해 준수해야 할 상기 적어도 하나의 기준,
- 상기 유닛에서 구현되고 적어도 하나의 소프트웨어 실행 특성이 적어도 하나의 관련 기준을 준수하지 않는 것을 감지할 수 있는 감지 수단, 및
- 상기 유닛에서 구현되고 적어도 하나의 기준이 준수되지 않을 때 상기데이터 처리 시스템으로의 통지 및/또는 소프트웨어의 실행의 수정을 가능하게 해주는 강제 수단
을 정의하는 단계와,
· 상기 유닛이 상기 감지 수단 및 상기 강제 수단도 구현할 수 있게 해주는 상기 개척 수단을 구축하는 단계와,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 모니터링되어야 하는 소프트웨어 실행 특성들 중에서 모니터링할 적어도 하나의 소프트웨어 실행 특성을 선택함으로써,
- 적어도 하나의 선택된 소프트웨어 실행 특성에 대해 준수해야 할 적어도 하나의 기준을 선택함으로써,
- 상기 보호 소프트웨어의 소스에서 적어도 하나의 선택된 소프트웨어 실행 특성을 모니터링할 기본 함수들을 선택함으로써,
- 상기 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로서, 상기 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 실행 특성이 상기 제2 실행 부분에 의해 모니터링되고 기준이 준수되지 않는다는 사실이 상기 데이터 처리 시스템으로의 통지 및/또는 상기 보호 소프트웨어의 실행의 수정을 가져오도록 수정함으로써,
- 상기 감지 수단 및 상기 강제 수단도 구현하는 상기 개척 수단을 포함하는 상기 보호 소프트웨어의 상기 제2 오브젝트 부분을 생성하는 것으로서, 상기 유닛으로의 업로드 후에 상기 보호 소프트웨어의 실행 동안 적어도 하나의 소프트웨어 실행 특성이 모니터링되고 기준이 준수되지 않는다는 사실이 상기 데이터 처리 시스템으로의 통지 및/또는 상기 보호 소프트웨어의 실행의 수정을 가져오도록 상기 제2 오브젝트 부분을 생성함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 동안,
· 상기 유닛이 존재하는 경우,
- 상기 보호 소프트웨어의 모든 수정된 일부분의 모든 모니터링된 실행 특성에 해당하는 모든 기준이 준수되는 한, 상기 보호 소프트웨어의 상기 일부분들이 정상적으로 동작할 수 있게 하고 그 결과 상기 보호 소프트웨어가 정상적으로 동작할 수 있게 하는 단계와,
- 상기 보호 소프트웨어의 일부분의 모니터링된 실행 특성에 해당하는 기준의 적어도 하나가 준수되지 않은 경우, 상기 데이터 처리 시스템으로의 통지 및/또는 상기 보호 소프트웨어의 일부분의 기능의 수정을 행하여 상기 보호 소프트웨어의 기능이 수정되도록 하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안에,
· 정의하는 단계로서,
- 모니터링되어야 하는 소프트웨어 실행 특성으로서 소프트웨어의 기능의 사용에 대한 측정 변수와,
- 준수할 기준으로서 각각의 측정 변수와 관련된 적어도 하나의 임계값과,
- 적어도 하나의 측정 변수의 갱신을 가능하게 해주는 구체화 수단을 정의하는 단계와,
· 상기 유닛이 상기 구체화 수단도 구현할 수 있는 상기 개척 수단을 구축하는 단계와,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 모니터링할 소프트웨어 실행 특성으로서 소프트웨어의 적어도 하나의 기능의 사용에 대한 적어도 하나의 측정 변수를 선택함으로써,
- 적어도 하나의 기능, 적어도 하나의 측정 변수, 적어도 하나의 임계값 및 적어도 하나의 갱신 방법을 선택하는 것으로서,
> 측정 변수를 사용하여 그 사용을 모니터링해야 하는 상기 보호 소프트웨어의 적어도 하나의 기능과,
> 상기 기능의 사용을 정량화하는 데 사용되는 적어도 하나의 측정 변수와,
> 상기 기능의 사용의 한계에 해당하는 선택된 측정 변수에 관련된 적어도 하나의 임계값과,
> 상기 기능의 사용에 따라 선택된 측정 변수의 적어도 하나의 갱신 방법을 선택함으로써,
- 상기 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로서, 상기 보호 소프트웨어의 실행 동안 상기 측정 변수가 상기 기능의사용에 따라 상기 제2 실행 부분에 의해 구체화되고 적어도 하나의 임계값 교차가 고려되도록 수정함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 동안에, 상기 유닛의 존재시에, 적어도 하나의 사용 한계에 해당하는 적어도 하나의 임계값 교차가 감지되는 경우, 상기 데이터 처리 시스템으로의 이의 통지 및/또는 상기 보호 소프트웨어의 일부분의 기능의 수정을 행하여 상기 보호 소프트웨어의 상기 기능이 수정되도록 하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안에,
· 정의하는 단계로서,
- 적어도 하나의 측정 변수에 대한 몇개의 관련 임계값들과,
- 상기 임계값들 각각에 해당하는 서로 다른 강제 수단
을 정의하는 단계와,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 상기 보호 소프트웨어의 소스에서, 상기 기능의 서로 다른 사용 한계에 해당하는 몇개의 임계값과 관련되어야만 하는 적어도 하나의 선택된 측정 변수를 선택함으로써,
- 상기 선택된 측정 변수와 관련된 적어도 2개의 임계값을 선택함으로써,
- 상기 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로서, 상기 보호 소프트웨어의 실행 동안 상기 여러가지 임계값의 교차가 상기 제2 실행 부분에 의해 서로 달리 고려되도록 수정함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 동안에,
· 상기 유닛이 존재하는 경우,
- 제1 임계값의 교차가 감지되는 경우, 상기 보호 소프트웨어를 상기 해당하는 기능을 더 이상 사용하지 못하도록 금지시키는 단계와,
- 제2 임계값의 교차가 감지되는 경우, 상기 해당하는 기능 및/또는 상기 보호 소프트웨어의 적어도 하나의 일부분을 무효화시키는 단계
를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안에,
· 측정 변수에 의해 모니터링되는 적어도 하나의 소프트웨어 기능에 적어도 하나의 부가 사용을 승인할 수 있는 재충전 수단을 정의하는 단계와,
· 유닛이 상기 재충전 수단도 구현할 수 있게 해주는 개척 수단을 구축하는 단계와,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 상기 보호 소프트웨어의 소스에서 기능의 사용을 제한할 수 있고 또 적어도 하나의 부가 사용을 승인할 수 있어야만 하는 적어도 하나의 선택된 측정 변수를 선택함으로써,
- 적어도 하나의 선택된 일부분을 수정하는 것으로, 재충전이라고 하는 단계 동안 선택된 측정 변수에 해당하는 적어도 하나의 기능의 적어도 하나의 부가 사용이 승인될 수 있도록 수정함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 상기 재충전 단계 동안에,
· 기능의 적어도 하나의 부가 사용이 가능하도록 하기 위해 적어도 하나의 선택된 측정 변수 및/또는 적어도 하나의 관련 임계값을 재구체화하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 정의하는 단계로서,
- 모니터링되어야 하는 소프트웨어 실행 특성으로서, 소프트웨어 사용의 프로파일, 및
- 준수해야 할 기준으로서, 적어도 하나의 소프트웨어 실행 특징을 정의하는 단계와,
· 상기 보호 소프트웨어를 수정하는 단계로서,
- 모니터링할 소프트웨어 실행 특성으로서 적어도 하나의 소프트웨어 사용 프로파일을 선택함으로써,
- 적어도 하나의 선택된 사용 프로파일이 준수해야만 하는 적어도 하나의 실행 특징을 선택함으로써,
- 상기 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로, 상기 보호 소프트웨어의 실행 동안, 제2 실행 부분이 모든 선택된 실행 특징을 준수하도록 수정함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 동안, 상기 유닛이 존재할 시 적어도 하나의 실행 특징이 준수되지 않는다고 감지되는 경우, 상기 데이터 처리 시스템으로의 이의 통지 및/또는 상기 보호 소프트웨어의 일부분의 기능의 수정을 행하여 상기 보호 소프트웨어의 기능이 수정되도록 하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 정의하는 단계로서,
- 상기 유닛에서 실행되어야 하는 명령어를 갖는 명령어 세트와,
- 상기 명령어 세트에 대한 한 세트의 명령어 커맨드로서, 상기 명령어 커맨드가 데이터 처리 시스템에서 실행되어야만 하고 상기 유닛에서 상기 명령어의 실행을 트리거해야 하는 것인 명령어 커맨드 세트와,
- 사용의 프로파일로서, 상기 명령어의 연쇄와,
- 실행 특징으로서, 상기 명령어의 실행에 대한 예상된 연쇄와,
- 감지 수단으로서, 명령어의 연쇄가 예상된 것에 해당하지 않는다는 것을 감지할 수 있는 수단과,
- 강제 수단으로서, 명령어의 연쇄가 예상된 것에 해당하지 않을 경우데이터 처리 시스템으로의 통지 및/또는 보호 소프트웨어의 일부분의 기능의 수정을 행할 수 있는 수단을 정의하는 단계와,
· 유닛이 명령어 세트의 명령어도 실행할 수 있게 해주는 개척 수단을 구축하는 단계로서, 명령어의 실행이 데이터 처리 시스템에서의 명령어 커맨드의 실행에 의해 트리거되는 구축 단계와,
· 보호 소프트웨어를 수정하는 단계로서,
- 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을,
> 기본 함수를 명령어로 변환함으로써,
> 유닛에서의 실행 동안 명령어의 적어도 일부가 준수해야만 하는 연쇄를 지정함으로써,
> 기본 명령을 사용된 명령어에 해당하는 명령어 커맨드로 변환하여,수정함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 중에 유닛의 존재 시에, 유닛에서 실행되는 명령어의 연쇄가 예상된 것에 해당하지 않는 것으로 감지된 경우, 데이터 처리 시스템으로의 이의 통지 및/또는 보호 소프트웨어의 일부분의 기능의 수정을 행하여 보호 소프트웨어의 기능이 수정되도록 하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안
· 정의하는 단계로서,
- 명령어 세트로서, 그의 일부 명령어가 레지스터를 사용하고 결과를 반환할 목적으로 적어도 하나의 피연산자를 사용하는 명령어 세트와,
- 레지스터를 사용하는 적어도 일부의 명령어에 대해,
> 명령어의 기능을 정의하는 부분,
> 명령어의 실행에 대한 예상된 연쇄를 정의하고 이하에 해당하는 비트를 포함하는 부분,
<> 명령어의 식별 필드,
<> 명령어의 각 피연산자에 대한
* 플래그 필드, 및
* 피연산자의 예상된 식별 필드,
- 개척 수단에 속하고 명령어 세트에 의해 사용되는 각 레지스터에 대해, 상기 레지스터에 그의 결과를 반환했던 마지막 명령어의 식별을 자동적으로 기억하고 있는 생성된 식별 필드,
- 감지 수단으로서, 명령의 실행 동안 각 피연산자에 대해 플래그 필드가 출현할 때 상기 피연산자에 의해 사용되는 레지스터에 해당하는 생성된 식별 필드 및 상기 피연산자의 출처의 예상된 식별 필드의 동일성을 검사할 수 있는 수단, 및
- 강제 수단으로서, 검사된 동일성 중 적어도 하나가 거짓인 경우 명령어의 결과를 수정할 수 있는 수단을 포함한다.
다른 양호한 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 정의하는 단계로서,
- 트리거 명령으로서, 기본 명령 또는 명령어 커맨드,
- 종속 함수로서, 기본 함수 또는 명령어,
- 지시로서, 해당하는 종속 함수의 실행을 트리거하기 위해 데이터 처리 시스템에 의해 유닛으로 전송되는 정보에 적어도 부분적으로 해당하는 트리거 명령에 대한 적어도 하나의 인수,
- 이름 변경된 지시를 갖는 트리거 명령을 획득하기 위해 지시를 이름 변경할 수 있는 지시의 이름 변경 방법, 및
- 사용 단계 동안, 유닛에서 사용되도록 설계되고 이름 변경된 지시로부터 실행할 종속 함수를 복구할 수 있는 복구 수단을 정의하는 단계와,
· 유닛이 복구 수단도 구현할 수 있게 해주는 개척 수단을 구축하는 단계와,
· 보호 소프트웨어를 수정하는 단계로서,
- 보호 소프트웨어의 소스에서 트리거 명령을 선택함으로써,
- 해당하는 종속 함수의 식별자를 감추기 위해 선택된 트리거 명령의 지시를 이름 변경하여 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정함으로써,
- 보호 소프트웨어의 제1 오브젝트 부분과 복구 수단도 구현하는 개척 수단을 포함하는 보호 소프트웨어의 제2 오브젝트 부분을 생성하는 것으로,
> 상기 제1 오브젝트 부분은 보호 소프트웨어의 실행 동안 이름 변경된 지시를 갖는 트리거 명령이 실행되고,
> 상기 제2 오브젝트 부분이 유닛으로의 업로드 후에 보호 소프트웨어의 실행 동안, 제1 실행 부분에 의해 그의 실행이 트리거되는 종속 함수의 식별자가 제2 실행 부분에 의해 복구되고, 종속 함수가 제2 실행 부분에 의해 실행되도록 생성함으로써,
상기 보호 소프트웨어를 수정하는 단계와
-> 사용 단계 중에,
· 유닛의 존재시에 제1 실행 부분의 일부분에 포함된 이름 변경된 지시를 갖는 트리거 명령이 출현할 때마다 유닛에서 해당하는 종속 함수의 식별자를 복구하고 이를 실행하여 상기 일부분이 정확하게 실행되고 그 결과 보호 소프트웨어가 완전히 기능하도록 하는 단계와,
· 유닛의 부존재 시에 제1 실행 부분의 일부분에 의해 유닛에서의 종속 함수의 실행을 트리거하도록 하는 요청이 있음에도 불구하고, 상기 요청을 정확하게 실시할 수 없어 적어도 상기 일부분이 정확하게 실행되지 않고 그 결과 보호 소프트웨어가 완전히 기능하지 못하게 되는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 적어도 하나의 종속 함수에 대해 알고리즘적으로 동등하지만 서로 다른 이름 변경된 지시를 갖는 트리거 명령에 의해 트리거되는 종속 함수 계열을 정의하는 단계와,
· 보호 소프트웨어를 수정하는 단계로서,
- 보호 소프트웨어의 소스에서 이름 변경된 지시를 갖는 적어도 하나의 트리거 명령을 선택함으로써,
- 이름 변경된 지시를 갖는 하나의 선택된 트리거 명령의 적어도 하나의 이름 변경된 지시를 동일 계열의 종속 함수를 트리거하는 다른 이름 변경된 지시로 대체하여 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정함으로써,
상기 보호 소프트웨어를 수정하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안, 적어도 하나의 종속 함수에 대해 알고리즘적으로 동등한 종속 함수의 계열을 정의하는 단계로서,
- 잡음 필드를 유닛에서 실행할 종속 함수의 기능 부분을 정의하는 정보에 첨부시킴으로써, 또는
- 명령어의 식별 필드와 피연산자의 예상된 식별 필드를 사용함으로써 정의하는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 정의하는 단계로서,
- 지시의 이름 변경 방법으로서, 지시를 암호화하는 암호화 방법, 및
- 복구 수단으로서, 이름 변경된 지시를 복호화하고 이에 따라 유닛에서 실행할 종속 함수의 식별자를 복구하는 복호화 방법을 구현하는 수단을 정의하는 단계를 포함한다.
다른 양호한 실시예에 따르면, 본 발명에 따른 프로세스는,
-> 보호 단계 동안,
· 보호 소프트웨어를 수정하는 단계로서,
- 보호 소프트웨어의 소스에서 적어도 하나의 선택된 알고리즘적 처리에서 수행되는 적어도 하나의 조건 분기를 선택함으로써,
- 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로서, 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 조건 분기의 기능이 제2 실행 부분에 의해 유닛에서 실행되도록 수정함으로써,
- 보호 소프트웨어의 제1 오브젝트 부분과 보호 소프트웨어의 제2 오브젝트 부분을 생성하는 것으로서,
> 상기 제1 오브젝트 부분은 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 조건 분기의 기능이 유닛에서 실행되고,
> 상기 제2 오브젝트 부분은 유닛으로의 업로드 후 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 조건 분기의 기능을 실행하는 데 사용되는 제2 실행 부분이 나타나도록 생성함으로써,
상기 보호 소프트웨어를 수정하는 단계와,
-> 사용 단계 중에,
· 유닛의 존재시에 제1 실행 부분의 일부분이 출현할 때마다, 적어도 하나의 조건 분기의 기능을 유닛에서 실행하여 상기 일부분이 정확하게 실행되고 그 결과 보호 소프트웨어가 완전히 기능하도록 하는 단계와,
· 유닛의 부존재시에 제1 실행 부분의 일부분에 의한 유닛에서의 조건 분기의 기능을 실행하도록 하는 요청에도 불구하고, 상기 요청을 정확하게 실시할 수 없어 적어도 상기 일부분이 정확하게 실행되지 않고 그 결과 보호 소프트웨어가 완전히 기능하지는 못하게 되는 단계를 포함한다.
변형 실시예에 따르면, 본 발명에 따른 프로세스는,
보호 단계 동안, 보호 소프트웨어를 수정하는 단계로서,
- 보호 소프트웨어의 소스에서 적어도 하나의 일련의 선택된 조건 분기를 선택함으로써,
- 보호 소프트웨어의 소스의 적어도 하나의 선택된 일부분을 수정하는 것으로, 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 일련의 조건 분기의 전체 기능이 제2 실행 부분에 의해 유닛에서 실행되도록 수정함으로써,
- 보호 소프트웨어의 제1 오브젝트 부분과 보호 소프트웨어의 제2 오브젝트 부분을 생성하는 것으로서,
> 상기 제1 오브젝트 부분은 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 일련의 조건 분기의 기능이 유닛에서 실행되고,
> 상기 제2 오브젝트 부분은 유닛으로의 업로드 후 보호 소프트웨어의 실행 동안 적어도 하나의 선택된 일련의 조건 분기의 전체 기능을 실행하는 데 사용되는 제2 실행 부분이 나타나도록 생성함으로써,
상기 보호 소프트웨어를 수정하는 단계를 포함한다.
본 발명에 따른 프로세스는 따라서 실행되고 있는 소프트웨어의 일부분을 포함하는 것의 특성을 제시하는 기억 유닛을 사용함으로써 소프트웨어를 보호할 수 있다. 당연히 기억 유닛없이 동작하도록 시도하는 임의의 도출된 소프트웨어 버전도 실행 중에 기억 유닛에 포함된 소프트웨어의 일부분을 재생성할 것을 강요하고 그렇지 않으면 상기 도출된 소프트웨어 버전은 완전히 기능하지 못한다.
비제한적인 일례로서 본 발명의 주제의 실시예 및 구현예를 나타낸 첨부 도면을 참조하여 이하에 기술한 설명으로부터 여러가지 다른 특징이 나타난다.
나머지 설명 부분에서, 이하의 정의가 사용된다.
· 데이터 처리 시스템(3)은 프로그램을 실행할 수 있는 시스템을 말한다.
· 기억 유닛은 데이터 처리 시스템(3)에 의해 제공되는 데이터를 수신하여 그 데이터를 저장하고 데이터 처리 시스템(3)의 요청 시에 그 데이터를 복원할 수 있는 유닛을 말한다.
· 처리 및 기억 유닛은 이하의 일을 할 수 있는 유닛을 말한다.
- 데이터 처리 시스템(3)에 의해 제공되는 데이터를 수신,
- 데이터 처리 시스템(3)으로 데이터를 반환,
- 데이터를 적어도 부분적으로 비밀 상태로 저장 및 이 유닛이 스위치 오프되어 있더라도 상기 데이터의 적어도 일부분을 보유,
- 데이터에 대해 알고리즘 처리를 수행하고 그 결과의 일부 또는 전부를 비밀 상태로 함.
· 유닛(6)은 본 발명에 따른 프로세스를 실시하는 기억 유닛 또는 처리 및 기억 유닛을 말한다.
· 블랭크 유닛(60)은 본 발명에 따른 프로세스를 실시하지 않지만 데이터를 수신하여 이를 유닛(6)으로 전환할 수 있는 유닛을 말한다.
· 블랭크 유닛(60)은 아마도 본 발명에 따른 프로세스에 의해 보호되는 소프트웨어의 실행 동안은 유닛(6)이 되었다가 실행 후에는 다시 블랭크 유닛(60)이 될 수 있다.
· 사전 커스터마이즈 유닛(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)
> 적어도 하나의 블랭크 유닛(60),
> 또는 제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)을 포함한다. 유닛(6)이 기억 유닛인 경우, 보호 수단(14)은 기억 수단(15)을 포함한다. 유닛(6)이 처리 및 기억 유닛인 경우, 보호 수단(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)가 완전히 기능하지 못한다.
본 발명에 따르면, 보호 프로세스는 <<변수>>에 의한 보호 원리의 실시를 목적으로 하며, 이에 대한 설명은 도 40 내지 도 43를 참조하여 할 것이다.
변수에 의한 보호 원리를 구현하기 위해, 취약 소프트웨어의 소스(2vs)에서는 취약 소프트웨어(2v)의 실행 동안에 그의 상태가 부분적으로 정의되는 적어도 하나의 변수가 선택된다. 소프트웨어의 상태에 의해 상기 소프트웨어의 완전한 실행에 필요한 주어진 순간에서의 정보 세트가 이해되어야만 하므로, 이러한 선택된변수의 부존재는 상기 소프트웨어의 완전한 실행에 장애가 된다. 또한, 적어도 하나의 선택된 변수를 포함하는 취약 소프트웨어의 소스(2vs)의 적어도 일부분이 선택된다.
취약 소프트웨어의 소스(2vs)의 적어도 하나의 선택된 일부분은 이어서 보호 소프트웨어의 소스(2ps)를 얻기 위해 수정된다. 이 수정은 보호 소프트웨어(2p)의 실행 동안 데이터 처리 시스템(3)에서 실행되는 제1 실행 부분(2pes)의 적어도 일부분이 적어도 하나의 선택된 변수 또는 적어도 하나의 선택된 변수의 복사본이 유닛(6)에 존재한다는 것을 고려 하도록 행해진다. 변수에 의한 보호 원리의 구현을 위해, 유닛(6)은 적어도 기억 수단(15)을 포함한다.
도 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) 등의 복잡한 연산을 달성하는 방법을 알고 있다는 것이다.
본 발명의 다른 유익한 특성에 따르면, 보호 프로세스는 "임시 분할"이라는보호 원리의 구현을 목적으로 하며, 이에 대해서는 도 50 내지 도 54를 참조하여 설명한다.
임시 분할에 의한 보호 원리의 구현을 위해, 취약 소프트웨어의 소스(2vs)에서 적어도 하나의 피연산자를 사용하여 적어도 하나의 결과를 반환하는 적어도 하나의 알고리즘적 처리가 선택된다. 또한, 적어도 하나의 선택된 알고리즘적 처리를 포함하는 취약 소프트웨어의 소스(2vs)의 적어도 일부분이 선택된다.
취약 소프트웨어의 소스(2vs)의 적어도 하나의 선택된 일부분은 이어서 보호 소프트웨어의 소스(2ps)를 얻기 위해 수정된다. 이 수정은 그중에서도 특히 다음과 같이 행해진다.
· 보호 소프트웨어(2p)의 실행 동안, 데이터 처리 시스템(3)에서 실행되는 제1 실행 부분(2pes)의 적어도 일부분이 적어도 하나의 선택된 알고리즘적 처리의 기능이 유닛(6)에서 실행된다는 것을 고려한다.
· 보호 소프트웨어(2p)의 실행 동안, 유닛(6)에서 실행되는 제2 실행 부분(2peu)이 적어도 하나의 선택된 알고리즘적 처리의 기능을 적어도 실행한다.
· 보호 소프트웨어(2p)의 실행 동안, 각각의 선택된 알고리즘적 처리는 몇개의 개별적 단계로 분할된다, 즉
- 단계 1 : 피연산자(들)를 유닛(6)의 처분에 맡기는 단계,
- 단계 2 : 유닛(6)에서 상기 피연산자(들)를 사용하여 선택된 알고리즘적 처리의 기능을 수행하는 단계,
- 단계 3 : 유닛(6)에 의해 가능하게는 선택된 알고리즘적 처리의 결과를 데이터 처리 시스템(3)의 처분에 맡기는 단계,
· 단계 명령은 단계들의 실행을 트리거하도록 정의되어 있다,
· 단계 명령의 순서는 보호 소프트웨어(2p)의 실행을 가능하게 해주는 순서 세트 중에서 선택된다.
데이터 처리 시스템(3)에서 실행되는 보호 소프트웨어(2p)의 제1 실행 부분(2pes)은 단계 명령을 실행하여 유닛(6)에서 이전에 정의된 단계들 각각에 대해 제2 실행 부분(2peu)에 의한 실행을 트리거한다. 임시 분할에 의한 보호 원리의 구현을 위해, 유닛(6)은 기억 수단(15) 및 처리 수단(16)을 포함한다.
도 50은 취약 소프트웨어(2v)의 실행의 일례를 나타낸 것이다. 이 일례에서, 취약 소프트웨어(2v)의 실행 동안 데이터 처리 시스템(3)에서는 어떤 순간에 피연산자 X와 Y를 사용하여 함수 F로 표기된 알고리즘적 처리의 결과를 변수 Z에 할당하는 것에 해당하는 Z←F(X,Y)의 계산이 나타난다.
도 51은 도 50에서 선택된 알고리즘적 처리가 유닛(6)에서 원격적으로 행해지는 경우의 본 발명의 구현의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안 유닛(6)이 존재하는 경우,
· 시각 t1에서, 단계 1, 즉 데이터 X와 Y를 데이터 처리 시스템(3)으로부터 유닛(6)의 기억 수단(15)에 위치하는 기억 영역, 각각 x와 y로의 전송을 트리거하는 단계 명령 CE1의 실행으로서, 상기 단계 명령 CE1은 OUT(x,X), OUT(y,Y)로 표기함,
· 시각 t2에서, 단계 2, 즉 유닛(6)에서 함수 f의 제2 실행 부분(2peu)에 의한 실행을 트리거하는 단계 명령 CE2의 실행으로서, 상기 함수 f는 알고리즘적으로 함수 F와 동등하며, 상기 단계 명령 CE2는 TRIG(f)로 표기함. 보다 정확하게는, 단계 명령 CE2의 실행은 기억 영역 x와 y의 내용을 사용하여 그의 결과를 유닛(6)의 기억 영역 z로 반환하는 함수 f의 실행을 가져온다.
· 시각 t3에서, 단계 3, 즉 유닛(6)의 기억 영역 z에 들어 있는 함수 f의 결과를 데이터 처리 시스템(3)으로 전송하여 이를 변수 Z에 할당하는 것을 트리거하는 단계 명령 CE3의 실행으로서, 상기 단계 명령 CE3는 IN(z)로 표기함.
예시된 일례에서, 단계 1 내지 단계 3은 연속적으로 실행된다. 유의할 점은 이하의 2가지 개선이 이루어질 수 있다는 것이다.
· 제1 개선은 몇가지 알고리즘적 처리가 유닛(6)에서 원격적으로 행해지고 하나의 알고리즘적 처리의 결과가 적어도 다른 알고리즘적 처리에 의해 사용되는 경우에 관한 것이다. 이 경우, 가능하게는 어떤 전송 단계가 제거될 수 있다.
· 제2 개선은 보호 소프트웨어(2p)의 실행을 가능하게 해주는 순서 세트 중에서 단계 명령의 적절한 순서를 선택하는 것을 목적으로 한다. 이 점에서, 단계 명령 사이에 데이터 처리 시스템(3)에서 실행되는 코드의 일부를 삽입시키고 다른 데이터를 결정하는 데 사용되는 단계 명령을 포함하거나 그렇지 않게 함으로써 단계들의 실행을 임시적으로 분할하는 단계 명령의 순서를 선택하는 것이 바람직하다. 도 52 및 도 53은 이러한 실시예의 원리를 설명한 것이다.
도 52는 취약 소프트웨어(2v)의 실행의 일례를 나타낸 것이다. 이 일례에서는, 취약 소프트웨어(2v)의 실행 동안 데이터 처리 시스템(3)에서 Z←F(X,Y)와 Z'←F'(X',Y')이 되도록 Z와 Z'의 결정을 가져오는 2개의 알고리즘적 처리의 실행이 일어난다.
도 53은 도 52에서 선택된 2개의 알고리즘적 처리가 유닛(6)에서 원격적으로 행해지는 경우의 본 발명에 따른 프로세스의 구현의 일례를 나타낸 것이다. 이러한 일례에 따르면, 데이터 처리 시스템(3)에서 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안 유닛(6)에 존재하는 경우 전술한 바와 같이 Z의 결정에 해당하는 단계 명령 CE1, CE2, CE3및 Z'의 결정에 해당하는 단계 명령 CE'1, CE'2, CE'3의 실행이 일어난다. 도시한 바와 같이, 단계 명령 CE1내지 CE3는 단계 명령 CE'1내지 CE'3및 다른 코드 부분이 삽입되지 않는 한 연속적으로 실행되지 않는다. 이 일례에서는, 따라서 이하의 순서로 실행된다. CE1, 삽입된 코드의 일부분, CE2, 삽입된 코드의 일부분, CE'1, 삽입된 코드의 일부분, CE'2, 삽입된 코드의 일부분, CE'3, 삽입된 코드의 일부분, CE3.
유의할 점은 보호 소프트웨어(2p)의 실행 동안 유닛(6)이 존재하는 경우, 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 일부분에 포함된 단계 명령이 그를 강제할 때마다, 해당하는 단계는 유닛(6)에서 실행된다. 따라서, 유닛(6)의 존재시에, 상기 일부분은 정확하게 실행되고 그 결과 보호 소프트웨어(2p)가 정확하게 기능하게 된다.
도 54는 유닛(6)이 없을 경우 보호 소프트웨어(2p)의 실행의 시도의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안,
· 시각 t1에서, 단계 명령 OUT(x,X), OUT(y,Y)의 실행은 유닛(6)의 부존재를 고려하여 데이터 X와 Y의 각자의 기억 영역 x와 y로의 전송을 트리거할 수 없다.
· 시각 t2에서, 단계 명령 TRIG(f)의 실행은 유닛(6)의 부존재를 고려하여 함수 f의 실행을 트리거할 수 없다.
· 시각 t3에서, 단계 명령 IN(z)의 실행은 유닛(6)의 부존재를 고려하여 함수 f의 결과의 전송을 트리거할 수 없다.
따라서, 유닛(6)의 부존재시에, 제1 실행 부분(2pes)의 일부분에 의해 유닛(6)에서의 단계의 실행을 트리거하도록 하는 적어도 하나의 요청이 정확하게 수행될 수 없으며, 따라서 적어도 상기 일부분은 정확하게 실행되지 않고 그 결과 보호 소프트웨어(2p)가 완전하게 기능하지 못한다.
본 발명의 다른 유리한 특성에 따르면, 보호 프로세스는 <<기본 함수>>에 의한 보호 원리를 구현하는 것을 목적으로 하며, 이에 대해서는 도 60 내지 도 64를참조하여 설명한다.
기본 함수에 의한 보호 원리의 구현을 위해, 이하의 것들이 정의된다.
· 한 세트의 기본 함수로서, 이 기본 함수는 제2 실행 부분(2peu)에 의해 유닛(6)에서 실행해야 하고, 또 가능하게는 데이터 처리 시스템(3)과 유닛(6) 사이에서 데이터를 전송하는 일을 맡는다.
· 상기 기본 함수 세트에 대한 한 세트의 기본 명령으로서, 이 기본 명령은 데이터 처리 시스템(3)에서 실행되어야 하고 해당하는 기본 함수의 유닛(6)에서의 실행을 트리거하는 일을 맡는다.
기본 함수에 의한 보호 원리의 구현을 위해, 기억 수단(15) 및 처리 수단(16)을 포함하는 블랭크 유닛(60)을 기본 함수를 실행할 수 있는 유닛(6)으로 변환할 수 있는 개척 수단도 구축되어 있으며, 상기 기본 함수의 실행은 기본 명령의 데이터 처리 시스템(3)에서의 실행에 의해 트리거된다.
기본 함수에 의한 보호 원리의 구현을 위해, 취약 소프트웨어의 소스(2vs)에서, 적어도 하나의 피연산자를 사용하여 적어도 하나의 결과를 반환하는 적어도 하나의 알고리즘적 처리도 선택된다. 적어도 하나의 선택된 알고리즘적 처리를 포함하는 취약 소프트웨어의 소스(2vs)의 적어도 일부분도 선택된다.
취약 소프트웨어의 소스(2vs)의 적어도 하나의 선택된 일부분은 이어서 보호 소프트웨어의 소스(2ps)를 얻기 위해 수정된다. 이 수정은 그 중에서도 특히 다음과 같이 행해진다.
· 보호 소프트웨어(2p)의 실행 동안, 데이터 처리 시스템(3)에서 실행되는제1 실행 부분(2pes)의 적어도 일부분은 적어도 하나의 선택된 알고리즘적 처리의 기능이 유닛(6)에서 실행되는 것을 고려한다.
· 보호 소프트웨어(2p)의 실행 동안, 유닛(6)에서 실행되는 제2 실행 부분(2peu)은 적어도 하나의 선택된 알고리즘적 처리의 기능을 적어도 실행한다.
· 각각의 선택된 알고리즘적 처리는 보호 소프트웨어(2p)의 실행 동안에 각각의 선택된 알고리즘적 처리가 기본 함수를 사용하여 제2 실행 부분(2peu)에 의해 실행되도록 분할된다. 양호하게는, 각각의 선택된 알고리즘적 처리는 기본 함수 fen(n은 1 부터 N까지 변함)로 분할된다. 즉,
- 가능하게는 하나 또는 몇개의 피연산자를 유닛(6)의 처분에 맡길 수 있게 해주는 하나 또는 몇개의 기본 함수,
- 기본 함수로서 그 중 일부가 피연산자(들)를 사용하고 이와 함께 선택된 알고리즘적 처리의 기능을 이 피연산자(들)를 사용하여 실행하는 기본 함수, 및
- 가능하게는 선택된 알고리즘적 처리의 결과를 유닛(6)에 의해 데이터 처리 시스템(3)의 처분에 맡길 수 있게 해주는 하나 또는 몇개의 기본 함수.
· 기본 명령의 순서는 보호 소프트웨어(2p)의 실행을 가능하게 해주는 순서 세트 중에서 선택된다.
데이터 처리 시스템(3)에서 실행되는 보호 소프트웨어(2p)의 제1 실행 부분(2pes)은 기본 명령 CFEn(n은 1부터 N까지 변함)을 실행하여, 유닛(6)에서의제2 실행 부분(2peu)에 의한 미리 정의된 기본 함수 fen의 각각의 실행을 트리거한다.
도 60은 취약 소프트웨어(2v)의 실행의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서의 취약 소프트웨어(2v)의 실행 동안에, 어떤 순간에 피연산자 X와 Y를 사용하여 함수 F에 의해 표기된 알고리즘적 처리의 결과의 변수 Z에의 할당에 해당하는 Z←F(X,Y)의 계산이 일어난다.
도 61은 도 60에서 선택된 알고리즘적 처리가 유닛(6)에서 원격적으로 행해지는 경우의 본 발명의 구현의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안 유닛(6)이 존재하는 경우,
· 시각 t1, t2에서, 데이터 X, Y의 데이터 처리 시스템(3)으로부터 유닛(6)의 기억 수단(15)에 위치하는 각자의 기억 영역 x, y로의 전송을 제공하는 해당하는 기본 함수 fe1, fe2의 제2 실행 부분(2peu)에 의한 실행을 유닛(6)에서 트리거하는 기본 명령 CFE1, CFE2의 실행으로서, 이 기본 명령 CFE1, CFE2은 OUT(x,X), OUT(y,Y)로 표기함.
· 시각 t3내지 tN-1에서, 해당하는 기본 함수 fe3내지 feN-1의 제2 실행 부분(2peu)에 의한 실행을 유닛(6)에서 트리거하는 기본 명령 CFE3내지 CFEN-1의 실행으로서, 이 기본 명령 CFE3내지 CFEN-1은 각각 TRIG(fe3) 내지 TRIG(feN-1)로 표기함. 조합하여 실행되는 일련의 기본 함수 fe3내지 feN-1는 알고리즘적으로 함수 F와 동등하다. 보다 상세하게는, 상기 기본 명령의 실행은 기억 영역 x, y의 내용을 사용하고 그 결과를 유닛(6)의 기억 영역 z로 반환하는 기본 함수 fe3내지 feN-1의 유닛(6)에서의 실행을 가져온다.
· 시각 tN에서, 유닛(6)의 기억 영역 z에 들어 있는 알고리즘적 처리의 결과를 데이터 처리 시스템(3)으로 전송하여 이를 변수 Z에 할당하도록 하는 기본 함수 feN의 제2 실행 부분(2peu)에 의한 실행을 유닛(6)에서 트리거하는 기본 명령 CFEN의 실행으로서, 이 기본 명령 CFEN은 IN(z)로 표기함.
예시된 일례에서, 기본 명령 1 내지 N은 연속하여 실행된다. 유의할 점은 2가지 개선이 달성될 수 있다는 것이다.
· 제1 개선은 몇개의 알고리즘적 처리가 유닛(6)에서 원격적으로 행해지고 하나의 알고리즘적 처리의 결과가 적어도 다른 알고리즘적 처리에 의해 사용되는 경우에 관한 것이다. 이 경우, 가능하게는 전송에 사용되는 일부 기본 명령은 제거될 수 있다.
· 제2 개선은 보호 소프트웨어(2p)의 실행을 가능하게 해주는 순서 세트 중에서 적절한 기본 명령의 순서를 선택하는 것을 목적으로 한다. 이 점에서, 기본 함수의 실행을 이들 사이에 데이터 처리 시스템(3)에서 실행되는 코드의 일부분을 삽입시키고 또 다른 데이터의 결정에 사용되는 기본 명령을 포함하거나 하지 않음으로써 임시 분할하는 기본 명령의 순서를 선택하는 것이 바람직하다. 도 62 및 도 63은 이러한 실시예의 원리를 나타낸 것이다.
도 62는 취약 소프트웨어(2v)의 실행의 일례를 나타낸 것이다. 이 일례에서, 취약 소프트웨어(2v)의 실행 동안에 데이터 처리 시스템(3)에서 Z←F(X,Y) 및 Z'←F'(X',Y')가 되도록 Z와 Z'의 결정을 가져오는 2개의 알고리즘적 처리의 실행이 일어난다.
도 63은 도 62에서 선택된 2개의 알고리즘적 처리가 유닛(6)에서 원격적으로 행해지는 경우의 본 발명에 따른 처리의 구현의 일례를 나타낸 것이다. 이러한 일례에 따르면, 데이터 처리 시스템(3)에서 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안 유닛(6)의 존재하는 경우, 전술한 바와 같이 Z의 결정에 해당하는 기본 명령 CFE1내지 CFEN의 실행과, Z'의 결정에 해당하는 기본 명령 CFE'1내지 CFE'M의 실행이 일어난다. 전술한 바와 같이, 기본 명령 CFE'1내지 CFE'M과 코드의 다른 일부분이 삽입되어 있는 한, 기본 명령 CFE1내지 CFEN은 연속적으로 실행되지 않는다. 이 일례에서는, 따라서 이하의 순서로 실행된다. CFE1, 삽입된 코드의 일부분, CFE'1, CFE2, 삽입된 코드의 일부분, CFE'2, CFE'3, 삽입된 코드의 일부분, CFE'4, CFE3, CFE4,...,CFEN,CFE'M.
유의할 점은 보호 소프트웨어(2p)의 실행 동안 유닛(6)이 존재하는 경우 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 일부분에 포함되어 있는 기본 명령이그를 강제할 때마다, 해당하는 기본 함수가 유닛(6)에서 실행된다. 따라서, 유닛(6)이 존재하는 경우, 상기 일부분은 정확히 실행되고 그 결과 보호 소프트웨어(2p)는 완전히 기능하는 것으로 보인다.
도 64는 유닛(6)이 없는 경우 보호 소프트웨어(2p)의 실행의 시도의 일례를 나타낸 것이다. 이 일례에서, 데이터 처리 시스템(3)에서 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 실행 동안, 매 순간마다 기본 명령의 실행은 해당하는 기본 함수의 실행을 트리거할 수 없는데 그 이유는 유닛(6)이 존재하지 않기 때문이다. 변수 Z에 할당될 값은 따라서 정확하게 결정될 수 없다.
따라서, 유닛(6)이 없는 경우, 보호 소프트웨어(2p)의 제1 실행 부분(2pes)의 일부분에 의한 유닛(6)에서의 기본 함수의 실행을 트리거하도록 하는 적어도 하나의 요청은 정확하게 수행될 수 없으며, 따라서 적어도 상기 일부분은 정확하게 실행되지 않으며, 그 결과 보호 소프트웨어(2p)는 완전히 기능하지 못한다.
본 발명의 다른 유리한 특성에 따르면, 보호 프로세스는 <<감지 및 강제>>에 의한 보호 원리의 구현을 목적으로 하며, 이에 대해서는 도 70 내지 도 74를 참조하여 설명한다.
감지 및 강제에 의한 보호 원리의 구현을 위해, 이하의 것들이 정의된다.
· 유닛(6)에서 적어도 부분적으로 모니터링해야 하는 적어도 하나의 소프트웨어 실행 특성,
· 적어도 하나의 소프트웨어 실행 특성에 대해 준수해야 할 적어도 하나의 기준,
· 유닛(6)에 구현할 감지 수단(17)으로서 적어도 하나의 소프트웨어 실행 특성이 적어도 하나의 관련 기준을 준수하지 않는 것을 감지할 수 있는 감지 수단(17),
· 유닛(6)에 구현될 강제 수단(18)으로서 적어도 하나의 기준이 준수되지 않을 때 데이터 처리 시스템(3)으로의 통지 및/또는 소프트웨어의 실행의 수정을 할 수 있는 강제 수단(18).
감지 및 강제에 의한 보호 원리의 구현을 위해, 기억 수단(15) 및 처리 수단(16)을 포함하는 블랭크 유닛(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을 수정함으로써 수행된다.
본 발명의 다른 유리한 특징에 따르면, 보호 프로세스는 <<이름 변경>>에 의한 보호 원리를 구현하는 것을 목적으로 하며, 이에 대해서는 도 80 내지 도 85를 참조하여 설명한다.
이름 변경에 의한 보호 원리의 구현을 위해, 이하의 것들이 정의된다.
· 한 세트의 종속 함수. 이 종속 함수는 유닛(6)에서 제2 실행 부분(2peu)에 의해 실행되어야 하며 가능하게는 데이터 처리 시스템(3)과 유닛(6) 사이에서 데이터를 전송하기 위한 것이며, 상기 종속 함수 세트는 유한이거나 무한일 수 있다.
· 상기 종속 함수에 대한 한 세트의 트리거 명령. 이 트리거 명령은 데이터 처리 시스템(3)에서 실행되어야 하며 유닛(6)에서 해당하는 종속 함수의 실행을 트리거하기 위한 것이다.
· 각 트리거 명령마다, 해당하는 종속 함수의 실행을 트리거 하기 위해 제1 실행 부분(2pes)에 의해 제2 실행 부분(2peu)으로 전송되는 정보에 적어도 부분적으로 해당하는 지시. 이 지시는 트리거 명령의 적어도 하나의 인수의 형태를 갖는다.
· 취약 소프트웨어(2v)의 수정 동안 사용되도록 설계된 지시의 이름 변경 방법. 이러한 방법은 트리거 명령을 획득하기 위해 지시의 이름을 변경할 수 있으며 이름 변경된 지시가 해당하는 종속 함수의 식별자를 감출 수 있게 된다.
· 사용 단계 중에 유닛(6)에서 사용되도록 설계된 것으로서, 실행할 종속 함수를 복구하기 위해 이름 변경된 지시로부터 최초 지시를 복구할 수 있는 복구 수단(20).
이름 변경에 의한 보호 원리의 구현을 위해, 기억 수단(15) 및 처리 수단(16)을 포함하는 블랭크 유닛(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내지 CDN-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(fd3), ..., 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, CDCR3, 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)에서 실행하는 것을 트리거한다. 조건 분기에 의한 보호 원리의 구현을 위해, 유닛(6)은 기억 수단(15)과 처리 수단(16)을 포함한다.
도 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에 관한 이전의 설명에서, 일반적으로 서로 독립적으로 6개의 서로 다른 소프트웨어 보호 원리에 대해 구체적으로 설명하였다. 본 발명에 따른 보호 프로세스는 가능하게는 하나 또는 몇개의 다른 보호 원리와 결합하여 변수에 의한 보호 원리를 사용함으로써 구현된다. 변수에 의한 보호 원리가 적어도 다른 보호 원리의 구현에 의해 보완되는 경우, 변수에 의한 보호 원리는 임시 분할에 의한 보호 원리 및/또는 기본 함수에 의한 보호 원리에 의해 보완되면 유리하다.
또한 임시 분할에 의한 보호 원리가 구현되는 경우, 차례대로 기본 함수에 의한 보호 원리 및/또는 조건 분기에 의한 보호 원리에 의해 보완될 수 있다.
또한 기본 함수에 의한 보호 원리가 구현되는 경우, 차례대로 감지 및 강제에 의한 보호 원리 및/또는 이름 변경에 의한 보호 원리 및/또는 조건 분기에 의한 보호 원리에 의해 보완될 수 있다.
또한 감지 및 강제에 의한 보호 원리가 구현되는 경우, 차례대로 이름 변경에 의한 보호 원리 및/또는 조건 분기에 의한 보호 원리에 의해 보완될 수 있다.
또한, 이름 변경에 의한 보호 원리가 구현되는 경우, 차례대로 조건 분기에의한 보호 원리에 의해 보완될 수 있다.
양호한 변형 실시예에 따르면, 변수에 의한 보호 원리는 임시 분할에 의한 보호 원리에 의해 보완되고, 기본 함수에 의한 보호 원리에 의해 보완되며, 감지 및 강제에 의한 보호 원리에 의해 보완되고, 이름 변경에 의한 보호 원리에 의해 보완되고, 조건 분기에 의한 보호 원리에 의해 보완된다.
변수에 의한 보호 원리에 보완하여 보호 원리가 적용되는 경우, 앞서 기술한 설명은 그의 결합 구현을 고려하기 위해 이하의 것을 포함해야만 한다.
· 취약 소프트웨어의 개념이 기술되는 보호 원리에 대해 취약한 소프트웨어로서 이해되어야만 한다. 따라서, 보호 원리가 이미 취약 소프트웨어에 적용되어 있는 경우, 표현 "취약 소프트웨어"는 독자에 의해 표현 "이미 적용된 보호 원리에 의해 보호된 소프트웨어"로 해석되어야만 한다.
· 보호 소프트웨어의 개념은 기술된 보호 원리에 대해 보호된 소프트웨어로서 이해되어야만 한다. 따라서, 보호 원리가 이미 적용되어 있는 경우, 표현 "보호 소프트웨어"는 독자에 의해 표현 "새로운 버전의 보호 소프트웨어"로서 해석되어야만 한다.
· 기술된 보호 원리의 구현을 위해 행해진 선택은 이미 적용된 보호 원리의 구현을 위해 행해진 선택을 고려해야만 한다.
나머지 설명은 본 발명에 따른 보호 프로세스의 구현을 보다 잘 이해할 수 있게 해준다. 본 발명에 따른 이 보호 프로세스는 도 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로 이루어져 있다.
사전 보호 서브단계 S11의 제1단계는 "정의단계 S11" 라고 한다.
이러한 정의 단계 S11동안,
· 이하의 것이 선택된다.
- 유닛(6)의 유형, 즉 특히 기억 유닛 또는 처리 및 기억 유닛. 예시한 일례로서, 유닛(6)으로서 칩 카드 리더(8) 및 이 리더와 관련된 칩 카드(7)가 선택될 수 있다.
- 사용 단계(U) 동안 데이터 처리 시스템(3) 및 유닛(6)에서 각각 구현되도록 설계된 전송 수단(12, 13)으로서, 이는 데이터 처리 시스템(3)과 유닛(6) 사이에서 데이터 전송을 할 수 있다.
· 본 발명에 따른 보호 프로세스가 기본 함수에 의한 보호 원리를 구현하는 경우, 다음과 같은 것들도 정의된다.
- 유닛(6)에서 실행되어야 하는 기본 함수를 갖는 한 세트의 기본 함수, 및
- 상기 기본 함수 세트에 대한 한 세트의 기본 명령. 상기 기본 명령은 데이터 처리 시스템(3)에서 실행되어야 하며 기본 함수의 유닛(6)에서의 실행을 트리거함.
· 본 발명에 따른 보호 프로세스가 감지 및 강제에 의한 보호 원리를 구현하는 경우, 다음과 같은 것들도 정의된다.
- 유닛(6)에서 적어도 부분적으로 모니터링되어야 하는 적어도 하나의 소프트웨어 실행 특성,
- 적어도 하나의 소프트웨어 실행 특성에 대해 준수해야 할 적어도 하나의 기준,
- 유닛(6)에 구현할 감지 수단(17)으로서 적어도 하나의 소프트웨어 실행 특성이 적어도 하나의 관련 기준을 준수하지 않는 것을 감지할 수 있는 감지 수단(17),
- 유닛(6)에 구현할 강제 수단(18)으로서, 적어도 하나의 기준이 준수되지 않을 때 데이터 처리 시스템(3)으로의 통지 및/또는 소프트웨어의 실행의 수정을행할 수 있는 강제 수단(18).
· 본 발명에 따른 보호 프로세스가 특성으로서 소프트웨어 실행의 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리를 구현하는 경우, 다음과 같은 것들도 정의된다.
- 모니터링해야 할 소프트웨어 실행 특성으로서, 소프트웨어의 기능 사용의 측정 변수,
- 준수해야 할 기준으로서, 각각의 측정 변수와 관련된 적어도 하나의 임계값, 및
- 적어도 하나의 측정 변수를 갱신할 수 있는 구체화 수단.
· 본 발명에 따른 보호 프로세스가 특성으로서 소프트웨어 실행의 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리를 구현하는 경우, 다음과 같은 것들도 정의된다.
- 적어도 하나의 측정 변수에 대해, 몇개의 관련 임계값, 및
- 상기 임계값 각각에 해당하는 서로 다른 강제 수단.
· 본 발명에 따른 보호 프로세스가 특성으로서 소프트웨어 실행의 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 양호한 제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)이 기본 함수 세트의 기본 함수를 실행할 수 있게 해주는 개척 수단의 구축,
· 감지 및 강제에 의한 보호 원리도 구현되는 경우,
- 사용 단계(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)에서 원격적으로 수행될 수 있는 명령어로 분할되어야 하는 알고리즘적 처리, 및
- 이름 변경에 의한 보호 원리가 구현되는 경우, 유닛(6)에서 원격적으로 수행될 수 있는 종속 함수로 분할되어야 하고 트리거 명령의 지시의 이름 변경을 할 수 있는 알고리즘적 처리,
- 조건 분기에 의한 보호 원리가 구현되는 경우, 유닛(6)에서 원격적으로 수행될 수 있는 기능을 갖는 조건 분기,
· 가능하게는 보호 소프트웨어의 생성을 도울 수 있거나 소프트웨어의 보호를 자동화할 수 있게 해준다.
이들 여러가지 도구는 독립적으로 또는 결합하여 수행될 수 있고 각 도구는 예를 들면 프리프로세서, 어셈블러, 컴파일러 등과 같은 여러가지 형태를 가질 수 있다.
사전 보호 서브단계 P1다음에는 보호할 취약 소프트웨어(2v)에 종속하는 사후 보호 서브단계 P2가 온다. 이 사후 보호 서브단계 P2도 몇가지 단계로 구성되어 있다. 변수에 의한 보호 원리의 구현에 해당하는 첫번째 단계는 "생성 단계 S21"라고 한다. 이 생성 단계 S21동안, 정의 단계 S11동안 행해진 선택이 사용된다. 상기 선택 및 가능하게는 도구 제작 단계 S14동안 구축된 도구의 도움으로, 보호 소프트웨어(2p)가 다음에 따라 생성된다.
· 취약 소프트웨어의 소스(2vs)에서 이하의 것을 선택함으로써,
- 취약 소프트웨어(2v)의 실행 동안 후자의 상태를 부분적으로 정의하는 적어도 하나의 변수, 및
- 적어도 하나의 선택된 변수를 포함하는 적어도 하나의 일부분.
· 취약 소프트웨어의 소스(2vs)로부터 보호 소프트웨어의 소스(2ps)를 생성함으로써, 취약 소프트웨어의 소스(2vs)의 적어도 하나의 선택된 일부분을 수정함으로써, 이 수정은 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 변수 또는 적어도 하나의 선택된 변수의 복사본이 유닛(6)으로 변환되는 블랭크 유닛(60)에 존재하도록 수정함으로써,
· 보호 소프트웨어의 소스(2ps)로부터 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)을 생성함으로써, 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 데이터 처리 시스템(3)에서 실행되고 그의 적어도 일부분이 적어도 변수 또는 적어도 변수의 복사본이 유닛(6)에 존재한다는 것을 고려하는 제1 실행 부분(2pes)이 나타난다.
자연히, 본 발명에 따른 변수에 의한 보호 원리가 취약 소프트웨어(2v)의 사전 실시를 요하지 않고 새로운 소프트웨어의 개발 중에 직접 적용될 수 있다. 이와 같이, 보호 소프트웨어(2p)가 직접 얻어진다.
사후 보호 서브단계 P2동안, 적어도 다른 보호 원리가 변수에 의한 보호 원리에 부가하여 적용되는 경우, "수정 단계 S22"가 행해진다. 이 수정 단계 S22동안, 정의 단계 S11동안 개입된 정의가 사용된다. 상기 정의 및 가능하게는 도구 제작 단계 S14동안 구축된 도구의 도움으로, 보호 소프트웨어(2p)는 앞서 정의된 구성 중 하나에 따른 보호 원리의 구현이 가능하도록 수정된다.
임시 분할에 의한 보호 원리가 구현되는 경우, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)에서 이하의 것을 선택함으로써,
- 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 변수를 사용하고 적어도 하나의 결과 변수를 획득할 수 있는 적어도 하나의 알고리즘적 처리, 및
- 적어도 하나의 알고리즘적 처리를 포함하는 적어도 하나의 일부분.
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정함으로써, 이 수정은,
- 보호 소프트웨어(2p)의 실행 동안, 제1 실행 부분(2pes)이 데이터 처리 시스템(3)에서 실행되고 제2 실행 부분(2peu)이 처리 수단(16)도 포함하는 유닛(6)에서 실행되고,
- 적어도 하나의 선택된 알고리즘적 처리의 기능이 적어도 제2 실행 부분(2peu)에 의해 실행되며,
- 적어도 하나의 선택된 알고리즘적 처리가 분할되어 보호 소프트웨어(2p)의 실행 동안 제2 실행 부분(2peu)에 의해 이하의 몇개의 개별적인 단계들이 나타나며,
> 적어도 하나의 변수를 유닛(6)의 처분에 맡기는 단계,
> 유닛(6)에서 적어도 상기 변수에 대한 알고리즘적 처리의 기능을 수행하는 단계, 및
> 가능하게는 적어도 하나의 결과 변수를 유닛(6)에 의해 데이터 처리 시스템(3)의 처분에 맡기는 단계.
- 적어도 하나의 선택된 알고리즘적 처리에 대해, 단계 명령이 정의되어 보호 소프트웨어(2p)의 실행 동안 각 단계 명령이 제1 실행 부분(2pes)에 의해 실행되고 유닛(6)에서 단계의 제2 실행 부분(2peu)에 의한 실행을 트리거하고,
- 단계 명령의 순서가 보호 소프트웨어(2p)의 실행을 가능하게 해주는 순서 세트 중에서 선택되도록 수정함으로써,
· 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)와 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로,
- 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 단계 명령이 선택된 순서에 따라 실행되고,
- 상기 제2 오브젝트 부분(2pou)은 블랭크 유닛(60)으로의 업로드 후에 보호 소프트웨어(2p)의 실행 동안 제1 실행 부분(2pes)에 의해 트리거되는 단계들의 실행에 사용되는 제2 실행 부분(2peu)이 나타나도록 생성함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
기본 함수에 의한 보호 원리가 구현되지만 임시 분할에 의한 보호 원리는 구현되어 있지 않은 경우, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)에서, 이하의 것을 선택함으로써, 즉
- 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 변수를 사용하고 적어도 하나의 결과 변수를 획득할 수 있게 해주는 적어도 하나의 알고리즘적 처리, 및
- 적어도 하나의 선택된 알고리즘적 처리를 포함하는 적어도 하나의 일부분을 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로, 이 수정은
- 보호 소프트웨어(2p)의 실행 동안 제1 실행 부분(2pes)은 데이터 처리 시스템(3)에서 실행되고 제2 실행 부분(2peu)은 유닛(6)에서 실행되며,
- 적어도 하나의 선택된 알고리즘적 처리의 기능이 적어도 제2 실행 부분(2peu)에 의해 실행되고,
- 적어도 하나의 선택된 알고리즘적 처리가 분할되어 보호 소프트웨어(2p)의 실행 동안 상기 알고리즘적 처리가 기본 함수를 사용하여 제2 실행 부분(2peu)에 의해 실행되며,
- 적어도 하나의 선택된 알고리즘적 처리에 대해, 기본 명령이 보호 소프트웨어의 소스(2ps)에 통합되고 따라서 보호 소프트웨어(2p)의 실행 동안 각 기본 명령이 제1 실행 부분(2pes)에 의해 실행되고 제2 실행 부분(2peu)에 의한 유닛(6)에서 기본 함수의 실행을 트리거하고,
- 기본 명령의 순서가 보호 소프트웨어(2p)의 실행을 가능하게 해주는 순서 세트 중에서 선택되도록,
수정함으로써,
· 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)과 개척 수단을 포함하는 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로서,
- 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안 기본 명령이 선택된 순서에 따라 실행되도록 되어 있고,
- 상기 제2 오브젝트 부분(2pou)은 블랭크 유닛(60)으로의 업로드 후에 보호 소프트웨어(2p)의 실행 동안 제1 실행 부분(2pes)에 의해 트리거되는 기본 함수를 실행하는 데 사용되는 제2 실행 부분(2peu)이 나타나도록 생성함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
임시 분할에 의한 보호 원리 및 기본 함수에 의한 보호 원리 모두가 구현되어 있는 경우, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)에서 보호 소프트웨어(2p)의 실행 동안 알고리즘적 처리의 기능을 수행하는 적어도 하나의 단계를 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로서,
- 적어도 하나의 선택된 단계가 분할되어 보호 소프트웨어(2p)의 실행 동안 상기 단계가 기본 함수를 사용하여 제2 실행 부분(2peu)에 의해 실행되고,
- 적어도 하나의 선택된 단계에 대해, 기본 명령이 보호 소프트웨어의 소스(2ps)에 통합되어 보호 소프트웨어(2p)의 실행 동안 각 기본 명령이 제1 실행 부분(2pes)에 의해 실행되고 제2 실행 부분(2peu)에 의한 기본 함수의 실행을 유닛(6)에서 트리거하며,
- 기본 명령의 순서가 보호 소프트웨어(2p)의 실행을 가능하게 해주는 순서 세트 중에서 선택되도록 수정함으로써,
· 보호 소프트웨어(2p)의 제1 오브젝트 부분(2pos)와 개척 수단도 포함하는 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로,
- 상기 제1 오브젝트 부분(2pos)은 보호 소프트웨어(2p)의 실행 동안에 기본 명령이 선택된 순서에 따라 실행되도록 되어 있고,
- 상기 제2 오브젝트 부분(2pou)은 유닛(6)으로의 업로드 후에 보호 소프트웨어(2p)의 실행 동안 제1 실행 부분(2pes)에 의해 트리거되는 기본 함수를 실행하는 데 사용되는 제2 실행 부분(2peu)이 나타나도록 생성함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
감지 및 강제에 의한 보호 원리가 구현되어 있는 경우, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 모니터링되어야 하는 소프트웨어 실행 특성 중에서 모니터링할 적어도 하나의 소프트웨어 실행 특성을 선택함으로써,
· 적어도 하나의 선택된 소프트웨어 실행 특성에 대해 준수해야 할 적어도 하나의 기준을 선택함으로써,
· 보호 소프트웨어의 소스(2ps)에서 적어도 하나의 선택된 소프트웨어 실행 특성을 모니터링하는 기본 함수를 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로, 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 선택된 실행 특성이 제2 실행 부분(2peu)에 의해 모니터링되고, 기준이 준수되지 않는다는 사실에 의해 데이터 처리 시스템(3)으로의 통지 및/또는 보호 소프트웨어(2p)의 실행의 수정이 행해지도록 수정함으로써,
· 감지 수단(17) 및 강제 수단(18)도 구현하는 개척 수단을 포함하는 보호 소프트웨어(2p)의 제2 오브젝트 부분(2pou)을 생성하는 것으로서, 유닛(6)으로의 업로드 후에 보호 소프트웨어(2p)의 실행 동안 적어도 하나의 소프트웨어 실행 특성이 모니터링되고 기준이 준수되지 않는다는 사실에 의해 데이터 처리 시스템(3)으로의 통지 및/또는 보호 소프트웨어(2p)의 실행이 수정이 행해지도록 상기 제2 오브젝트 부분(2pou)을 생성함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
특성으로서 소프트웨어 실행의 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 구현을 위해, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 모니터링할 소프트웨어 실행 특성으로서 소프트웨어의 적어도 하나의 기능의 사용에 대한 적어도 하나의 측정 변수를 선택함으로써,
· 이하의 것들을 선택하는 것으로,
- 측정 변수를 사용하여 모니터링되어야 하는 사용을 갖는 보호 소프트웨어(2p)의 적어도 하나의 기능,
- 상기 기능의 사용을 정량화하는 데 사용되는 적어도 하나의 측정 변수,
- 상기 기능의 사용에 대한 한계에 해당하는 선택된 측정 변수와 관련된 적어도 하나의 임계값, 및
- 상기 기능의 사용에 종속하는 선택된 측정 변수의 적어도 하나의 갱신 방법을 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로, 보호 소프트웨어(2p)의 실행 동안 측정 변수가 상기 기능의 사용에 따라 제2 실행 부분(2peu)에 의해 구체화되고, 적어도 하나의 임계값 교차가 고려되도록 수정함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
특성으로서 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 양호한 제1 변형 실시예의 구현을 위해, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)에서 기능의 사용에 대한 서로 다른 한계에 해당하는 몇개의 임계값에 관련되어야만 하는 적어도 하나의 선택된 측정 변수를 선택함으로써,
· 선택된 측정 변수와 관련된 적어도 2개의 임계값을 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로, 보호 소프트웨어(2p)의 실행 동안 여러가지 임계값의 교차가 제2 실행 부분(2peu)에 의해 서로 다르게 고려되도록 수정함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
특성으로서 측정 변수를 사용하여 감지 및 강제에 의한 보호 원리의 양호한제2 변형 실시예의 구현을 위해, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)에서 기능의 사용을 제한할 수 있고 적어도 하나의 부가 사용을 승인할 수 있어야만 하는 적어도 하나의 선택된 측정 변수를 선택함으로써,
· 적어도 하나의 선택된 일부분을 수정하는 것으로, 재충전이라고 하는 단계 동안 선택된 측정 변수에 해당하는 적어도 하나의 기능의 적어도 하나의 부가 사용이 승인될 수 있도록 수정함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
특성으로서 소프트웨어 사용의 프로파일을 사용하여 감지 및 강제에 의한 보호 원리의 구현을 위해, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 모니터링할 소프트웨어 실행 특성으로서 적어도 하나의 소프트웨어 사용의 프로파일을 선택함으로써,
· 적어도 하나의 선택된 사용 프로파일이 준수해야만 하는 적어도 하나의 실행 특징을 선택함으로써,
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을 수정하는 것으로, 보호 소프트웨어(2p)의 실행 동안 제2 실행 부분(2peu)이 모든 선택된 실행 특징을 준수하도록 수정함으로써,
상기 보호 소프트웨어(2p)는 수정된다.
준수해야 할 실행 특징으로서 실행 연쇄의 모니터링을 사용하여 감지 및 강제에 의한 보호 원리의 구현을 위해, 보호 소프트웨어(2p)는 다음에 따라 수정된다.
· 보호 소프트웨어의 소스(2ps)의 적어도 하나의 선택된 일부분을
- 기본 함수를 명령어로 변환하고,
- 유닛(6)에서의 실행 동안 명령어들 중 적어도 일부가 준수해야만 하는 연쇄를 지정하며,
- 기본 명령을 사용된 명령어에 해당하는 명령어 커맨드로 변환하여
수정함으로써,
상기 보호 소프트웨어(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 (37)

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

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR01/10250 2001-07-31
FR0110250A FR2828305B1 (fr) 2001-07-31 2001-07-31 Procede pour proteger un logiciel a l'aide d'un principe dit de "variable" contre son utilisation non autorisee
PCT/FR2002/002338 WO2003012649A2 (fr) 2001-07-31 2002-07-04 Procede pour proteger un logiciel a l'aide de 'variables' contre son utilisation non autorisee

Publications (2)

Publication Number Publication Date
KR20040027881A true KR20040027881A (ko) 2004-04-01
KR100940347B1 KR100940347B1 (ko) 2010-02-04

Family

ID=8866125

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047000804A KR100940347B1 (ko) 2001-07-31 2002-07-04 소위 변수 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법

Country Status (29)

Country Link
EP (1) EP1412861A2 (ko)
JP (1) JP3949107B2 (ko)
KR (1) KR100940347B1 (ko)
CN (1) CN1288525C (ko)
AP (1) AP2004002958A0 (ko)
AU (1) AU2002325998B2 (ko)
BR (1) BR0211374A (ko)
CA (1) CA2454090A1 (ko)
CO (1) CO5550508A2 (ko)
CR (1) CR7231A (ko)
EA (1) EA005465B1 (ko)
EC (1) ECSP044951A (ko)
FR (1) FR2828305B1 (ko)
GE (1) GEP20053647B (ko)
HK (1) HK1070155A1 (ko)
HR (1) HRP20040049A2 (ko)
HU (1) HUP0400228A2 (ko)
IL (1) IL159953A0 (ko)
IS (1) IS7121A (ko)
MA (1) MA26126A1 (ko)
MX (1) MXPA04000488A (ko)
NO (1) NO20040232L (ko)
OA (1) OA12699A (ko)
PL (1) PL367366A1 (ko)
TN (1) TNSN04012A1 (ko)
UA (1) UA77186C2 (ko)
WO (1) WO2003012649A2 (ko)
YU (1) YU5404A (ko)
ZA (1) ZA200400348B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2852415B1 (fr) * 2003-03-11 2005-06-24 Actikey Support de type cle, de controle de l'acces a des donnees et/ou a un logiciel et procede correspondant
CN107194212B (zh) * 2017-06-21 2020-04-17 株洲中车时代电气股份有限公司 一种显示器源代码中协议内容的保护方法

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
US5754646A (en) * 1995-07-19 1998-05-19 Cable Television Laboratories, Inc. Method for protecting publicly distributed software
AU7957998A (en) * 1997-06-09 1999-01-25 Intertrust, Incorporated Obfuscation techniques for enhancing software security
EP1086411B1 (fr) * 1998-06-12 2003-11-12 Gemplus Procede de controle de l'execution d'un produit logiciel

Also Published As

Publication number Publication date
IS7121A (is) 2004-01-20
EA200400057A1 (ru) 2004-06-24
MXPA04000488A (es) 2005-03-07
JP2004537806A (ja) 2004-12-16
HRP20040049A2 (en) 2004-06-30
TNSN04012A1 (fr) 2006-06-01
CN1288525C (zh) 2006-12-06
AU2002325998B2 (en) 2008-10-30
FR2828305B1 (fr) 2010-09-03
EP1412861A2 (fr) 2004-04-28
ZA200400348B (en) 2005-03-30
ECSP044951A (es) 2004-04-28
BR0211374A (pt) 2004-07-20
WO2003012649A3 (fr) 2003-12-24
OA12699A (en) 2006-06-23
CN1535410A (zh) 2004-10-06
KR100940347B1 (ko) 2010-02-04
MA26126A1 (fr) 2004-04-01
HUP0400228A2 (en) 2004-09-28
EA005465B1 (ru) 2005-02-24
UA77186C2 (en) 2006-11-15
FR2828305A1 (fr) 2003-02-07
JP3949107B2 (ja) 2007-07-25
PL367366A1 (en) 2005-02-21
AP2004002958A0 (en) 2004-03-31
YU5404A (sh) 2006-08-17
NO20040232L (no) 2004-03-30
CA2454090A1 (fr) 2003-02-13
HK1070155A1 (en) 2005-06-10
CR7231A (es) 2005-07-21
WO2003012649A2 (fr) 2003-02-13
IL159953A0 (en) 2004-06-20
GEP20053647B (en) 2005-10-25
CO5550508A2 (es) 2005-08-31

Similar Documents

Publication Publication Date Title
US7870396B2 (en) Storage medium, method, and apparatus for creating a protected executable program
US8176473B2 (en) Transformations for software obfuscation and individualization
CN108491235B (zh) 结合动态加载和函数Native化的DEX保护方法
US20070294770A1 (en) Method to Protect Software Against Unwanted Use with a Variable Principle
JP4517636B2 (ja) 実行プログラム作成方法、関数プログラム、及び関数プログラム実行方法
KR100940347B1 (ko) 소위 변수 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
KR20040032858A (ko) 소위 이름 변경 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
KR20040031778A (ko) 소위 임시 분할 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
US20070283437A1 (en) Method to Protect Software Against Unwanted Use with a &#34;Temporal Dissociation&#34; Principle
KR100881733B1 (ko) 소위 감지 및 강제 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
US20070277239A1 (en) Method to Protect Software Against Unwanted Use with a &#34;Renaming&#34; Principle
JP2009104589A (ja) 情報処理装置及びその方法、プログラム、記録媒体
KR20040032859A (ko) 소위 조건 분기 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
KR20040032860A (ko) 소위 기본 함수 원리를 사용하여 소프트웨어를 불법사용으로부터 보호하는 방법
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

Legal Events

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