KR20050023248A - 암호화된 데이터를 해독하고 해독된 데이터를 실행을 위해사용되는 메모리 공간에 로케이트시키는 장치 및 방법 - Google Patents

암호화된 데이터를 해독하고 해독된 데이터를 실행을 위해사용되는 메모리 공간에 로케이트시키는 장치 및 방법 Download PDF

Info

Publication number
KR20050023248A
KR20050023248A KR10-2004-7016846A KR20047016846A KR20050023248A KR 20050023248 A KR20050023248 A KR 20050023248A KR 20047016846 A KR20047016846 A KR 20047016846A KR 20050023248 A KR20050023248 A KR 20050023248A
Authority
KR
South Korea
Prior art keywords
program
partial
location
decryption
unit
Prior art date
Application number
KR10-2004-7016846A
Other languages
English (en)
Inventor
아사이리에코
쇼다유키에
히로타데루토
이토요시카츠
사토다이치
마츠시마히데키
아베도시히사
Original Assignee
마츠시타 덴끼 산교 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마츠시타 덴끼 산교 가부시키가이샤 filed Critical 마츠시타 덴끼 산교 가부시키가이샤
Priority to KR10-2004-7016846A priority Critical patent/KR20050023248A/ko
Publication of KR20050023248A publication Critical patent/KR20050023248A/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/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system

Abstract

암호화된-데이터 해독장치는 프로그램과 데이터가 암호화된 후 해독처리에 대한 실행 중에 이들 프로그램과 데이터에 대해 향상된 보안보호를 제공한다. 해독된 부분 프로그램이 공유 메모리(M)에 로딩될 필요가 있으면, 제어부(11)는 그 해독된 부분 프로그램을 메모리 로케이션 정보에 의해 나타난 영역에 로딩한다. 메모리 로케이션 정보에 따라 복수의 부분 프로그램은 하나의 부분 프로그램이 다른 부분 프로그램에 의해 오버라이트되도록 하나의 영역에 순차적으로 로딩되므로, 어떤 부분 프로그램도 장시간 동안 메모리에 존재하지 않게 되고, 따라서 부분 프로그램이 불법적으로 참조될 가능성이 줄어들게 된다. 또한, 일부 데이터가 해독될 때마다 해독지원 프로그램 인증부(13)가 해독지원 프로그램(P)의 인증을 확인하기 때문에 해독지원 프로그램이 오용되는 불법적 참조를 방지할 수 있다.

Description

암호화된 데이터를 해독하고 해독된 데이터를 실행을 위해 사용되는 메모리 공간에 로케이트시키는 장치 및 방법{APPARATUSES AND METHODS FOR DECRYPTING ENCRYPTED DATA AND LOCATING THE DECRYPTED DATA IN A MEMORY SPACE USED FOR EXECUTION}
본 발명은 암호화된 데이터를 해독하는 암호화된-데이터 해독장치에 관한 것으로, 특히 프로그램이 실행되거나 사용될 때 보안보호(security protection)를 실현하면서 암호화된 데이터를 해독하는 해독장치 및 해독방법에 관한 것이다.
종래, 보안목적으로 암호화된 데이터와 프로그램이 컴퓨터 시스템 상에서 재생되거나 실행되도록 해독될 때, 해독 지원 프로그램이 그 컴퓨터 시스템 상에서 실행되었으나, 그 사양이 공중에게 개방된 개방형 컴퓨터 시스템에서는 프로그램이 용이하게 분석되고 변경될 수 있다. 따라서, (i)해독 지원 프로그램을 변경하고, (ii)참조되거나 변경될 것으로 생각되지 않는 해독된 프로그램을 참조가능하거나 변경가능한 것으로 변경하는 등의 일부 불법적인 행위가 가능하다.
보안보호를 향상시키기 위해, 예를 들면 해독 지원 프로그램 스스로가 암호화되고, 데이터 해독이 수행될 때 해독 지원 프로그램이 해독되는 것(일본 특허공개공보 평9-006232호)과, 해독 지원 프로그램의 인증이 해독처리가 시작되기 전에 검사되는 것(일본 특허공개공보 평11-039156호) 등의 다른 방법들이 제안되어 왔다. 이들의 경우에, 해독된 프로그램과 데이터의 보안보호를 위해 해독 지원 프로그램의 변경이 금지되도록 배열된다.
비록 해독처리는 인증해독 지원 프로그램을 실행함으로써 수행되지만,해독된 프로그램 또는 데이터가 컴퓨터 시스템 내의 메모리에 로딩된 후, 불법적인 인터럽션의 사용에 의해 제어권이 탈취되면, 로딩된 프로그램 또는 데이터는 참조가 가능하게 되거나, 또는 변경이 가능하게 되어, 보안보호가 불가능하게 된다.
도 1은 프로그램 로더가 동작하는 컴퓨터 시스템에 나타난 것으로, 본 발명의 암호화된-데이터 해독장치의 실시예인 프로그램 로더의 구성을 도시한 블록도
도 2는 실시예에서의 부분 프로그램들의 저장 어드레스 정보와 저장 로케이션, -이 저장 로케이션은 2차 저장장치로서 상기 저장 어드레스 정보에 의해 규정됨- 사이의 대응을 보여주는 개념도
도 3은 본 실시예의 메모리 로케이션 정보의 구조와 콘텐츠의 일례를 도시한 개념도
도 4는 본 실시예에 있어서 해독된 부분 프로그램이 공유 메모리에 어떻게 로케이트되는지를 도시한 개념도
도 5는 본 실시예에 있어서 암호화된 프로그램의 해독 및 로딩처리시 프로그램 로더의 동작을 도시한 흐름도
도 6은 영역 어드레스 정보의 예를 도시한 도면
도 7은 영역 어드레스 정보의 다른 예를 도시한 도면
도 8은 시간 축을 따라 더미 데이터 삽입 처리의 일반적인 구조를 도시한 개념도
도 9는 수정예에 있어서 프로그램 로더의 구성을 도시한 블록도
도 10은 호출관계 정보에 의해 규정되는 부분 프로그램들 사이의 호출관계를 나타낸 개략도
도 11은 시간 축을 따르는 해독처리 시간에서 부분 프로그램의 메모리 로케이션을 도시한 개략도
도 12는 수정예에서의 프로그램 로더의 구성을 도시한 블록도
도 13은 다른 수정예에서의 프로그램 로더의 구성을 도시한 블록도
도 14는 또 다른 수정예에서의 프로그램 로더의 구성을 도시한 블록도
도 15의 (A) 내지 (E)는 수정예에서의 해독된 부분 프로그램이 공유 메모리(M) 내의 프로그램 로케이션 영역에 어떻게 로케이트되는지를 보여주는 개념도
도 16은 수정예에 있어서의 메모리 관리정보의 개념도
도 17은 수정예에서 부분 프로그램의 메모리 로케이션을 결정하는 처리를 도시한 흐름도.
본 발명은 상술한 문제점의 관점에서 이루어진 것으로, 그 주된 목적은 암호화된 프로그램과 데이터에 대한 해독으로부터 실행까지의 과정 중에 보안성을 향상시키는 암호화된-데이터 해독장치 및 방법을 제공하고, 더 나아가, 불법적인 참조 또는 변경을 방지하거나, 또는 불법적인 참조를 최소 수준까지 제한함으로써, 해독되어 메모리에 로딩된 프로그램과 데이터에 대한 보안보호를 실현하는 암호화된-데이터 해독장치 및 방법을 제공하기 위한 것이다.
이러한 목적달성을 위해, 본 발명은 암호화되어 저장된 프로그램을 컴퓨터 시스템에서의 실행을 목적으로 해독하는 암호화된-데이터 해독장치로서, 상기 프로그램을 암호화되는 복수의 부분 프로그램으로서 저장하는 저장부와; 상기 부분 프로그램의 각각에 대하여 (i)해독 타이밍을 나타내는 타이밍 정보와, (ii)해독 후 각 부분 프로그램이 로케이트되는 로케이션 영역(location area), -이 로케이션 영역은 상기 프로그램의 실행을 위해 사용되는 메모리 공간에 포함됨-,을 나타내는 위치정보(positional information)를 포함하는 메모리 로케이션 정보를 생성하는 메모리 로케이션 정보 생성부와; 상기 타이밍 정보에 따라 상기 부분 프로그램들을 상기 저장부로부터 순차적으로 판독하여 해독하는 해독부와; 상기 위치정보에 의해 나타나는 각 로케이션 영역에 상기 해독된 부분 프로그램의 각각을 로케이트시키는 로딩부를 포함하는 암호화된-데이터 해독장치를 제공한다.
이러한 구성으로, 프로그램의 일부분만이 프로그램의 실행에 사용되는 메모리 내에 로케이트되므로, 비록 메모리 내의 데이터가 인터럽션의 악용에 의해 불법적으로 참조되는 상황이 발생하더라도 손실을 최소화할 수 있다. 또한, 적어도 하나의 부분 프로그램에 대하여, 메모리 로케이션 정보 내의 위치정보가, 적어도 하나의 부분 프로그램의 해독 전에, 다른 부분 프로그램이 로케이트되어 있는 로케이션 영역에 오버라이트되도록 배열함으로써, 특정 부분 프로그램이 프로그램의 실행에 사용되는 메모리 내에 존재하는 동안의 시간을 단축시킬 수 있고, 부분 프로그램이 불법적인 방식으로 참조되게 하는 것을 더욱 어렵게 한다.
본 발명은 또한 상기 위치정보가 암호화 후 저장되며,상기 로딩부는 상기 해독된 부분 호출되는 상기 해독된 위치정보에 따라 각 로케이션 영역에 로케이트되도록 상기 위치정보를 해독하는 장치를 추가로 제공한다.
이러한 구성으로, 해독된 부분 프로그램이 로딩되는 위치가 메모리 로케이션 정보에 대한 불법적 참조를 통해 노출되는 상황을 방지할 수 있으므로, 메모리에 로딩되는 프로그램에 대한 보안성을 향상시킬 수 있다.
본 발명은, 각 부분 프로그램을 로케이션 영역에 로케이트할 때, 상기 로케이션 영역의 크기가 상기 부분 프로그램의 크기보다 크면, 상기 로딩부가 더미 데이터를 공간영역에 기입하고, 이 공간영역은 상기 두 크기의 차이 때문에 오버라이트되지 않는 상기 로케이션 영역의 일부분인 구성을 추가로 제공한다.
이러한 구성으로, 오버라이팅 처리에서 삭제되지 않은 부분 프로그램의 일부가 장시간 메모리에 남아있게 되는 상황을 방지할 수 있으므로, 부분 프로그램의 이러한 일부분이 불법적인 방식으로 참조되는 위험성을 줄일 수 있다.
본 발명은, 하나의 로케이션 영역에 로케이트된 하나의 부분 프로그램이 다른 부분 프로그램이 상기 로케이션 영역에 로케이트되기 전에 실행을 완료한 후, 미리 정해진 길이의 시간이 경과한 때, 상기 로딩부가 상기 하나의 부분 프로그램을 삭제하는 구성을 추가로 제공한다.
이러한 구성으로, 처리를 종료하는 부분 프로그램이 장시간 동안 메모리에 남아있게 되는 상황을 방지할 수 있으므로, 부분 프로그램이 불법적인 방식으로 참조되는 위험성을 줄일 수 있다.
본 발명은 또한, 프로그램 암호화의 처리 중에, 다른 부분 프로그램의 해독처리에 사용되는 암호화 키의 일부 또는 전부를 상기 부분 프로그램의 적어도 하나에 미리 삽입하는 키 삽입부를 추가로 포함하고, 상기 해독부는 이미 해독되어 상기 메모리 공간에 로케이트된 상기 적어도 하나의 부분 프로그램에 삽입된 상기 암호화 키를 이용하여, 상기 다른 부분 프로그램의 해독처리를 수행하는 암호화된-데이터 해독장치를 제공한다.
이러한 구성으로, 비록 불법 사용자가 시스템의 제어를 탈취하여 메모리에 로딩된 특정 부분 프로그램을 불법적으로 참조하고자 하더라도, 이 특정 부분 프로그램의 해독에 필요한 암화키를 갖는 다른 부분 프로그램이 메모리에 존재하지 않기 때문에 불법적인 참조가불가능하다.
또한, 유사한 이익을 갖는 효과를 달성하기 위해, 암호화된-데이터 해독장치는, 프로그램 암호화의 처리 중에, 다른 부분 프로그램의 해독처리에 사용되는 암호화 키의 일부 또는 전부를 생성하는 암호화 키 생성 프로그램을 상기 부분 프로그램의 적어도 하나에 미리 삽입하는 프로그램 삽입부를 추가로 포함하고, 상기 해독부는 이미 해독되어 상기 메모리 공간에 로케이트된 상기 적어도 하나의 부분 프로그램에 삽입된 상기 암호화 키 생성프로그램의 실행을 통해 생성된 암호화 키를 이용하여, 상기 다른 부분 프로그램의 해독처리를 수행하거나, 또는 프로그램 암호화의 처리 중에, 다른 부분 프로그램의 해독처리에 사용되는 암호화 키를 해독하기 위해 사용되는 하나의 키에 대한 암호화 키를 상기 부분 프로그램의 적어도 하나에 미리 삽입하는 하나의 키에 대한 암호화 키 삽입부를 추가로 포함하고, 상기 해독부는 이미 해독되어 상기 메모리 공간에 로케이트된 상기 적어도 하나의 부분 프로그램으로부터 취득된 상기 하나의 키에 대한 암호화 키로 해독되는 암호화 키를 이용하여 상기 다른 부분 프로그램의 해독처리를 수행하는 것도 허용가능하다.
또한, 상기 로딩부는 처음 해독되는 상기 부분 프로그램들 중의 하나가 상기 메모리 공간에 로케이트되기 전에 각 로케이션 영역의 절대 어드레스를 동적으로 결정하는 구성을 갖는 것도 허용가능하다.
이러한 구성으로, 프로그램이 로딩되는 메모리 내의 위치는 프로그램이 실행될 때마다 변하므로, 비록 불법 사용자가 로딩 위치를 판독하는 동안 메모리의 콘텐츠를 관찰함으로써 불법적인 방식으로 프로그램의 콘텐츠를 참조하고자 시도하더라도 그 시도가 성공될 가능성은 낮다.
본 발명은 또한, 상기 해독부가 해독 지원 프로그램을 이용하여 각 부분 프로그램을 해독하고, 상기 암호화된-데이터 해독장치는 해독 지원 프로그램의 인증을 확인하는 해독 프로그램 확인부를 추가로 포함하며, 상기 해독부는 상기 해독 프로그램 확인부로 하여금 각 부분 프로그램의 해독 전에 상기 해독 지원 프로그램의 인증을 확인하도록 하고, 상기 인증이 확인된 후에만 각 부분 프로그램을 해독하는 상기 해독 프로그램 확인부를 구비하는 구성을 제공한다.
이러한 구성으로, 해독 지원 프로그램의 악용에 의해 프로그램의 콘텐츠를 불법적인 방식으로 참조할 수 없게 되므로, 해독시의 보안 레벨을 향상시킬 수 있다.
또한, 암호화된-데이터 해독장치가 인터럽션을 검출할 때 상기 메모리 공간에 이미 로케이트된 하나 이상의 부분 프로그램을 삭제함으로써 불법 액세스 방지 처리를 수행하는 불법 액세스 방지부를 추가로 포함하는 구성을 갖는 것도 허용가능하다.
이러한 구성으로, 인터럽션의 악용에 의해 불법적인 방식으로 프로그램의 콘텐츠를 참조하는 것이 불가능해 진다.
또한, 상기 불법 액세스 방지부는 불법 액세스 처리를 수행할 때 실행되는 더미 프로그램을 구비하는 구성을 가질 수도 있다.
또한, 상기 불법 액세스 방지부가, 정당한 프로그램 검사에 대한 인터럽션이 발생하는 하나 이상의 위치에 대한 등록을 미리 수신하고, 상기 검출된 인터럽션이 상기 등록된 위치들 중의 하나에서 발생하면 상기 불법 액세스 방지 처리를 수행하지 않는 구성을 갖게 함으로써, 비록 불법적인 참조를 방지하기 위해 정당한 인터럽션이 금지되어야만 하는 상황이 있더라도 그러한 상황에 의해 야기되는 불편함을 피할 수 있게 된다.
또한, 암호화된-데이터 해독장치는, 암호화되고, 상기 부분 프로그램의 각각에 대하여 상기 저장부 내의 저장위치를 나타내는 저장위치정보를 저장하는 저장위치정보 저장부를 추가로 포함하고, 상기 해독부는, 상기 해독부가 상기 저장위치정보 저장부로부터 판독하여 해독한 상기 저장위치정보에 따라 상기 부분 프로그램의 각각을 상기 저장부로부터 판독하여 해독하는 것도 허용가능하다.
이러한 구성으로, 정당한 부분 프로그램만이 실행될 것이다. 즉, 불법적인 참조를 목적으로 하고, 정당한 부분 프로그램 대신에 저장장치에 저장되는 프로그램을 실행하는 불법적인 사용자에 의해 수행되는 불법적인 참조를 방지할 수 있다. 또한, 암호화된-데이터 해독장치는, 상기 저장위치정보의 인증여부를 판정하는 저장위치정보 인증부를 추가로 포함하며, 상기 저장위치정보 인증부가 저장위치정보를 인증하였음을 판정하면, 상기 해독부가 상기 저장부로부터 상기 부분 프로그램의 각각을 판독하여 해독하는 것도 허용가능하다.
또한, 본 발명은 암호화되어 저장된 프로그램을 컴퓨터 시스템에서의 실행을 목적으로 해독하는 암호화된-데이터 해독장치로서, 상기 프로그램을 암호화되는 복수의 부분 프로그램으로서 저장하는 저장부와; 상기 저장부로부터 실행목표인 상기 부분 프로그램들 중의 하나를 판독하고, 상기 판독된 부분 프로그램을 해독하는 해독부와; 상기 실행목표인 상기 부분 프로그램의 로케이션 위치, -이 로케이션 위치는 상기 프로그램의 실행을 위해 사용되는 메모리 공간 내의 어드레스를 나타냄-, 를 동적으로 결정하는 메모리 로케이션 결정부와; 상기 해독된 부분 프로그램을 상기 메모리 로케이션 결정부에 의해 결정된 로케이션 위치에 로케이트시키는 로딩부를 포함하는 암호화된-데이터 해독장치를 제공한다.
이러한 구성으로, 프로그램이 로케이트되는 메모리 내의 위치가 프로그램이 실행될 때마다 변하므로, 불법적인 사용자가 로딩위치를 판독하는 동안 메모리의 콘텐츠를 관찰함으로써 불법적인 방식으로 프로그램의 콘텐츠를 참조하고자 시도하더라도 그 시도가 성공될 가능성은 낮다.
또한, 상기 메모리 로케이션 결정부는, 하나의 부분 프로그램이, 상기 메모리 공간에 포함되고 하나 이상의 다른 프로그램이 이미 로케이트되어 있는 영역에 오버라이트되도록, 상기 부분 프로그램들 중의 적어도 하나의 각각에 대한 로케이션 위치를 결정하는 구성을 갖는 것이 효과적이다. 불법적인 참조를 훨씬 더 어렵게 하기 위해, 암호화된-데이터 해독장치는 상기 프로그램의 실행을 시작하기 전에, 상기 메모리 공간의 시작 어드레스와 크기 중의 하나 또는 모두를 동적으로 결정하는 실행목적 메모리 결정부를 추가로 포함하는 것도 허용가능하다. 하나 이상의 다른 부분 프로그램이 이미 로케이트되어 있는 영역에 하나의 부분 프로그램이 오버라이트되도록, 상기 메모리 로케이션 결정부가 상기 하나의 부분 프로그램의 로케이션 위치를 결정하면, 상기 하나의 부분 프로그램이 상기 메모리 공간에 가장 먼저 로케이트되어 있는 부분 프로그램을 오버라이트하도록, 상기 로케이션 위치가 결정되는 구성을 갖거나, 또는 하나 이상의 다른 부분 프로그램이 이미 로케이트되어 있는 영역에 하나의 부분 프로그램이 오버라이트되도록, 상기 메모리 로케이션 결정부가 상기 부분 프로그램의 로케이션 위치를 결정하면, 로케이트되어 있는 2이상의 다른 부분 프로그램 위에 상기 하나의 부분 프로그램이 부분적으로 또는 완전히 연장되도록, 상기 로케이션 위치가 결정되는 구성을 갖는 것이 바람직하다.
여기에서 설명된 유익한 효과는 (i)상술한 특징을 갖는 암호화된-데이터 해독장치에 의해 실행되는 암호화된-데이터 해독방법, 또는 (ii)컴퓨터로 하여금 이 해독방법을 실행하도록 하는 프로그램을 통해 달성될 수 있다. 또한 상술한 유익한 효과의 달성에는 다음의 항목 또한 유용하다. 메모리 로케이션 정보와 암호화 키를 생성하는 프로그램, 상기 암호화 키, 및 "하나의 키에 대한 암호화 키"를 생성하는 동안 상기 프로그램을 암호화하는 암호화된-프로그램 생성장치, 이들은 모두 상술한 특징을 갖는 암호화된-데이터 해독장치에 의해 이용된다.
다음으로 도면을 참조하여 본 발명의 암호화된-데이터 해독장치의 실시예를 설명하기로 한다.
(일반적 구성)
도 1은 본 발명의 암호화된-데이터 해독장치의 실시예인 프로그램 로더(1)와, 관련 장치의 구성을 도시한 블록도로서, 이 도면에는 상기 프로그램 로더와 상기 관련 장치가 동작하는 컴퓨터 시스템 내의 다른 장치와 함께 도시되어 있다. 본 실시예에서, 암호화된-데이터 해독장치에 의해 해독되는 암호화된 데이터는 프로그램이다.
운영체제(이하, OS라 함)로부터의 명령에 따르는 본 실시예의 프로그램 로더(1)는 암호화된 프로그램을 2차 저장장치(S)로부터 판독하고, 그것을 해독하여 실행을 위해 사용되는 공유 메모리(M)에 로딩한다. "로딩한다"는 것은 프로그램을 실행하기 위해 그 프로그램을 메모리 공간에 로케이트(locate)시킨다는 것을 의미한다.
프로그램 로더(1)의 특성은 암호화된 프로그램의 보안을 보호하기 위해 종래부터 메모리를 관리하기 위해 사용되는 기술인 오버레이 방법(overlay method)을 사용하는 것에 있다. 이 오버레이 방법은 어떤 프로그램을 그 프로그램보다 크기가 더 작은 메모리에 저장하기 위해 사용되는 기술이다. 이 오버레이 방법은 프로그램을 세그먼트(segment)로 분할하고(이하, 분할된 프로그램을 "부분 프로그램(partial program)"이라 함), 분할된 프로그램을 시차를 두고 동일한 메모리에 로케이트시킨다. 비록 동시에 전체 프로그램을 로케이트시킬 만큼 충분히 큰 메모리가 있다 하더라도, 본 실시예의 프로그램 로더(1)는 보안보호를 실현하기 위해 이 오버레이 방법을 의도적으로 이용한다. 특히, 프로그램 로더(1)는 프로그램을 부분 프로그램의 그룹 형태로 암호화하여 저장하고, 프로그램이 실행될 필요가 있을 때, 그 프로그램을 부분 프로그램 단위로 해독하고, 하나의 부분 프로그림을 다른 부분 프로그램으로 순차적으로 오버라이트함으로써 공유 메모리(M)의 동일한 영역에 부분 프로그램들을 로딩한다. 또한, 부분 프로그램을 로케이트시키는 위치와 시간은 신뢰성을 고려하면서 결정되어야 하기 때문에 보안보호 능력이 훨씬 높아진다.
해독 및 로딩 처리는 부분 프로그램 단위로 실행되며, 이것은 소스 파일이나 또는 서로 관련된 소스 파일들의 그룹으로부터 생성되는 오브젝트 코드(object code)를 나타낸다. 보다 구체적으로, 오브젝트 코드는 서브-프로그램을 나타내며, 서브-프로그램은 프로그램 컴포넌트(program component) 또는 라이브러리 모듈(library module) 그 자체이다.
이처럼 프로그램을 세그먼트로 로딩함으로써, 전체 프로그램의 내용이 불법적인 참조에 노출될 가능성이 낮아지게 된다. 그 이유는 전체 프로그램을 참조하기 위해서는 부분 프로그램이 로딩될 때마다 매번 불법적인 참조가 반복될 필요가 있기 때문이다.
그러나, 오버레이 방법의 원래 목적이 메모리 자원을 절약하기 위한 것이기 때문에 오버레이 방법에서는 보안보호가 고려되지 않는다는 것에 유념하여야 한다. 따라서, 처리가 완료된 부분 프로그램은 그것이 다음 프로그램에 의해 오버라이트될 때까지 메모리에 남아 있는다. 또한 프로그램이 로딩된 영역의 어드레스가 고정되기 때문에, 그 프로그램에 대한 액세스를 해독하기가 용이하다. 또한, 인터럽션 기능을 악용하거나 해독 지원 프로그램을 변경함으로써 불법적인 방식으로 프로그램을 부분적으로 참조하거나 변경할 수 있다.
본 실시예의 프로그램 로더(1)는 보안보호가 고려되도록 오버레이 처리방법을 구성한 후 그 오버레이 처리방법을 실행할 뿐아니라, 인터럽션 기능의 악용 또는 해독 지원 프로그램의 변경이 있는지를 검사한다.
(구성)
(일반적인 구성)
다음으로 프로그램 로더(1)의 구성에 대해 설명하기로 한다.
프로그램 로더(1)는 전체 프로세스를 제어하는 제어부(11), 해독 지원 프로그램(P)을 이용하여 암호화된 부분 프로그램을 포함하는 암호화된 데이터를 해독하는 해독부(12), 해독에 앞서 해독 지원 프로그램(P)의 인증을 검사하는 해독 지원 프로그램 인증부(13), 공유 메모리(M)에 로케이트 되는 해독된 부분 프로그램의 로케이팅 위치 및 시간을 결정하는 메모리 로케이션 정의부(14), 및 공유 메모리(M)에서 부분 프로그램의 인터럽션(interruption)이 실행되게 함으로써 행해질 수 있는 불법적인 액세스를 방지하는 불법 액세스 방지부(15)를 포함한다.
또한, 프로그램 로더(1)는 프로그램 해독처리에서 사용되는 다양한 종류의 암호화된 정보와 암호화 키를 저장하는 저장부(16)와, 저장부(16)에 저장된 저장 어드레스 정보의 인증을 확인하는 저장 어드레스 정보 인증부(17)(후술함)를 포함한다. 해독부(12)는 저장 어드레스 해독부(121), 메모리 로케이션 정보 해독부(122), 및 상이한 종류의 데이터를 각각 취급하는 부분 프로그램 해독부(123)로 구성된다.
저장부(16)에 저장된 정보는 해독처리에서 사용되는 암호화 키(161), 해독 목표인 암호화된 부분 프로그램이 저장되는 2차 저장장치(S) 내의 위치를 나타내는 저장 어드레스 정보(162), 및 해독된 부분 프로그램이 저장되는 공유 메모리(M) 내의 위치를 나타내는 메모리 로케이션 정보(163)를 포함한다.
저장 어드레스 정보(162)는 해독 목표인 암호화된 부분 프로그램이 2차 저장장치(S)로부터 판독될 때 참조된다. 저장 어드레스 정보(162)는 암호화된 후 저장되기 때문에 저장 어드레스 해독부(121)가 저장 어드레스 정보를 해독한다. 그리고, 저장 어드레스 정보(162)가 해독된 후, 저장 어드레스 정보 인증부(17)는 저장 어드레스 정보의 인증을 검사한다(저장 어드레스 정보가 위조되지 않았는지의 여부를 검사함).
도 2는 저장 어드레스 정보와 부분 프로그램의 저장 로케이션 사이의 대응을 나타낸 개념도로서, 이 저장 로케이션은 2차 저장장치(S) 내에 있으며, 저장 어드레스 정보(162)에 의해 특정된다. 저장 어드레스 정보(162)는 부분 프로그램의 식별정보(210)와, 부분 프로그램들이 2차 저장장치(S)에 각각 저장되는 위치를 나타내는 어드레스 정보(220)로 구성된다. 부분 프로그램 수 만큼의 저장 어드레스 정보가 존재한다. 어드레스 정보(220) 부분들은 암호화된다.
메모리 로케이션 정보(163)는 해독 후 부분 호출되는 로케이트되어야 하는 공유 메모리(M)의 위치를 정의하는 정보이다. 각 데이터가 순차적으로 미리 결정된 영역에 오버라이트되는 오버레이 방법의 실행을 위해서는 미리 정의된 로케이팅 위치를 갖는 것이 필수적이다. 메모리 로케이션 정보(163)는 암호화된 후 저장되고, 메모리 로케이션 정보 해독부(122)에 의해 참조될 때 해독된다.
도 3은 본 실시예의 메모리 로케이션 정보의 구조와 콘텐츠의 일례를 도시한 개념도이다. 메모리 로케이션 정보는 어느 프로그램이 어느 시간에(즉, 어떤 순서로) 공유 메모리(M) 내에 로케이트되어야 하는지를 나타내 준다. 공유 메모리(M) 내의 부분 프로그램 저장영역은 3개의 영역으로 분할된다.
도 3에 도시된 메모리 로케이션 정보(163)는 영역식별 정보부(310)와 부분 프로그램 식별 정보부(320)로 구성된다. 영역식별 정보부(310)는 어느 영역의 정보가 관련되는지를 나타내는 식별정보를 저장한다. 부분 프로그램 식별정보부(320)는, (i)영역식별 정보부(310)에 저장된 식별정보에 의해 나타난 영역에 로케이트되는 부분 프로그램의 식별정보와, (ii)각 부분 프로그램이 어떤 순서로 로케이트되는지를 나타내는 데이터를 저장한다.
메모리 로케이션 정보(163)는, 공유 메모리(M) 내의 부분 프로그램 저장영역이 3개의 영역으로 분할되고, 3개의 부분 프로그램이 영역 1에, 4개의 부분 프로그램이 영역 2에, 2개의 부분 프로그램이 영역 3에 순차적으로 위치하고 있음을 나타낸다.
도 4는 해독된 부분 프로그램이 프로그램 실행시 메모리 로케이션 정보(163)에 따라 공유 메모리에 어떻게 로케이트되는지를 도시한 개념도이다. 도 4는 프로그램 처리 실행의 시간라인(수평 축)을 따라 공유 메모리(M) 내의 3개의 저장영역 중 하나에 각각 로케이트되는 부분 프로그램들을 도시한다. 예를 들어, 부분 프로그램 A, B, C는 영역 1에 순차적으로 로케이트되며, 시간 t1에서는 부분 프로그램 A(영역 1), 부분 프로그램 D(영역 2), 부분 프로그램 H(영역 3)가 공유 메모리(M) 내에 공존한다. 동일한 시간에 공유 메모리(M) 내에 공존하는 부분 프로그램들은 예를 들면, 처리 도중에 다른 프로그램의 처리를 호출함으로써 서로 의존성을 가질 수 있다.
상술한 바와 같이 메모리 로케이션 정보는 암호화 목표인 프로그램을 암호화 처리하기 전에 메모리 로케이션 정의부(14)에 의해 생성된다. 이 생성처리는 기본적으로 종래의 오버레이 방법에 사용되는 동일한 종류의 로케이션 정보의 생성처리와 동일하다. 그러나, 본 실시예에서 이 생성처리는 보안보호를 고려하는 방식으로 실행된다. 본 실시예에서의 생성처리에 대해서는 후술하기로 한다.
(주요 구성부의 설명)
이하, 지금까지 일반적으로 설명된 구성의 주요부에 대해 더욱 상세히 설명하기로 한다.
<해독 지원 프로그램 인증부(13)>
댜양한 종류의 암호화된 데이터를 해독처리하기 전에 해독 지원 프로그램 인증부(13)는 해독 지원 프로그램(P)이 인증되었는지를 확인한다. 보다 구체적으로, (i)부분 프로그램 해독부(123)가 암호화된 부분 프로그램을 해독할 예정이고, (ii)저장 어드레스 해독부(121)가 암호화된 저장 어드레스 정보를 해독할 예정이며, (iii)메모리 로케이션 정보 해독부(122)가 암호화된 메모리 로케이션 정보를 해독할 예정이면, 해독 지원 프로그램 인증부(13)는 이들 각 컴포넌트의 요청에 따라 해독 지원 프로그램(P)의 인증처리를 실행한다. 해독 지원 프로그램 인증부(13)는 인증처리의 결과를 요청 소스(source)로 돌려 보낸다. 인증결과가 "인증(위조아님)"이면, 해독 지원 프로그램 인증부(13)는 요청이 있었던 소스로부터 해독목표인 데이터를 수신하여, 해독 지원 프로그램(P)에 송신하고, 해독 지원 프로그램(P)으로부터 해독처리의 결과를 수신하여, 요청 소스로 송신한다.
해독 지원 프로그램 인증부(13)에 의해 실행되는 인증처리는, 해독 지원 프로그램(P)이 프로그램이 실행된 최종 시간과 현재시간 사이에 위조가 없었다는 것을 확인해 준다. 인증판단에 있어서, (i)해독 지원 프로그램(P)의 크기가 변경되었는지의 여부, (ii)갱신일시, 및 (iii)해독 지원 프로그램(P)의 일방향 해쉬값(one-way hash value)을 포함하는 일부 항목들이 참조될 것이다. 인증방법은 이것에 제한되는 것은 아니며, 전자서명을 인증하는 방법에 사용되는 기술도 이용할 수 있다는 점에 유념해야 한다. 이 인증처리를 실행하기 위해, 해독 지원 프로그램 인증부(13)는 제 1 실행시의 해독 지원 프로그램(P)의 크기와, 갱신일시 및 해쉬 값을 저장한다.
<저장 어드레스 정보 인증부(17)>
저장 어드레스 정보 인증부(17)는 저장 어드레스 정보가 인증되었는지를 확인하고, 이 저장 어드레스 정보는 저장 어드레스 해독부(121)로부터의 명령에 따라 해독 지원 프로그램(P)에 의해 해독된다. 이것은 저장 어드레스 정보가 마지막으로 실행된 시간과 현재의 시간 사이에 위조가 없었다는 것을 확인하기 위한 것이다.
저장 어드레스 정보 인증부(17)는 일방향 해쉬 함수 등을 정상적으로 이용하는 인증기술을 이용하여 저장 어드레스 정보의 인증처리를 실행하고, 그 결과를 저장 어드레스 해독부(121)에 다시 보낸다. 이 인증처리를 실행하기 위해, 저장 어드레스 정보 인증부(17)는 저장 어드레스 정보에 관해 필수적인 정보(제 1 해독시의 해쉬값과, 인증처리에서 일반적으로 사용되는 다른 정보)를 저장한다.
<제어부(11)>
OS가 어느 부분 프로그램이 해독되어야 하는지를 규정하면, 제어부(11)는 해독되는 부분 프로그램의 식별정보를 저장 어드레스 해독부(121)에 송신하고, 저장 어드레스 해독부(121)가 부분 프로그램의 저장 어드레스를 취득하여 해독할 것을 명령한다. 저장 어드레스 해독부(121)는 해독된 저장 어드레스를 출력하고, 제어부(11)는 해독된 저장 어드레스를 부분 프로그램 해독부(123)에 송신하여, 부분 프로그램 해독부(123)가 부분 프로그램을 해독할 것을 명령한다. 이와 함께, 제어부(11)는 해독 목표인 부분 프로그램의 식별정보를 메모리 로케이션 정보 해독부(122)에 송신하여, 메모리 로케이션 정보 해독부(122)가 부분 프로그램에 대한 메모리 로케이션 정보를 해독할 것을 명령한다.
제어부(11)는 부분 프로그램 해독부(123)에 의해 출력된 해독된 부분 프로그램을 메모리 로케이션 정보 해독부(122)에 의해 출력된 메모리 로케이션 정보에 따라 공유 메모리(M) 내의 영역 중의 하나에 로딩한다. 도 3에 도시된 바와 같이, 메모리 로케이션 정보는 각 부분 프로그램의 식별정보와 각 영역의 식별정보로 구성되며, 거기에는 각 영역의 절대 어드레스 값을 나타내는 어떠한 정보도 포함되지 않는다. 각 영역의 절대 어드레스 값은 제어부(11)에 저장된다.
상술한 처리 도중에, 해독 지원 프로그램(P) 또는 저장 어드레스 정보에 문제가 있으면(이들 중 하나 또는 모두가 인증이 확인되지 않으면), 제어부(11)는 다른 컴포넌트에 처리를 중단하라고 명령하고, 그 시점까지 해독된 각종 데이터(부분 프로그램, 메모리 로케이션 정보, 및 저장 어드레스 정보)를 삭제하는 처리를 실행한다.
<메모리 로케이션 정의부(14)>
부분 프로그램을 암호화할 때, 메모리 로케이션 정의부(14)는 상술한 해독 처리에서 언급한 메모리 로케이션 정보(163)를 생성하여 저장부(16)에 저장한다. 부분 프로그램은 암호화된 프로그램 생성장치(C)에 의해 암호화된다. 암호화된 프로그램 생성장치(C)는 암호화 목표인 프로그램(부분 프로그램의 그룹)을 실행형태로 변환하고, 변환된 프로그램을 2차 저장장치에 저장하기 전에 암호화하여, 각 부분 프로그램이 메모리 로케이션 정보에서 규정된 순서로 메모리 내에 로케이트되도록 한다.
우선, 메모리 로케이션 정의부(14)는 헤더 정보 등으로부터 부분 프로그램에 대한 메모리 내의 로케이션을 결정하는데 필수적인 각종 정보를 취득한다. 또한, 메모리 로케이션 정의부(14)는, 실행시에 부분 프로그램이 로케이트되는 공유 메모리(M)에 관한 정보를 포함하는, 결정시 중요한 것으로 간주되어야 하는 기준(시스템 관리자에 의해 파라미터로서 규정된 것들)을 취득한다. 메모리 로케이션 정의부(14)는 이들 정보로부터 메모리 로케이션 정보를 생성한다. 보다 구체적으로, 메모리 로케이션 정의부(14)는 메모리 로케이션 정보를 생성할 때 다음의 정보를 참조한다.
(1) 각 부분 프로그램의 크기(암호화 전의 크기, 즉 해독 후의 크기)
(2) 부분 프로그램들 간의 의존성(호출하는 부분 프로그램과 호출되는 부분 프로그램 간의 관계, 및 호출의 수)
(3) 각 부분 프로그램의 신뢰성의 레벨
(4) 요구되는 성능의 레벨
이들 정보에 따르는 메모리 내의 위치를 결정하는 처리는 또한 종래의 오버레이 처리로 실행된다. 그러나, 본 실시예에서는, 프로그램의 보안보호가 목적이기 때문에, 메모리 위치가 정상적인 오버레이 방법에서 결정되는 경우에 비해 항목 (3)이 더욱 중요하게 고려되어야 하고, 항목 (4)는 더 낮은 우선순위를 갖는다.
따라서, 메모리 로케이션 정의부(14)는 이러한 메모리 로케이션 정보를 생성하고, 그것에 의해 부분 프로그램에 대한 로딩처리 및 삭제처리가 빈번하게 반복되므로 이러한 부분 프로그램은 최소의 시간 길이로 공유 메모리(M)에 로케이트되고, 처리가 완료되자 마자 다른 프로그램에 의해 오버라이트된다. 부분 프로그램의 신뢰성 레벨은 예를 들면, 시스템 관리자에 의한 각 부분 프로그램의 평가를 통해 규정될 수 있으며, 신뢰성의 평가값은 파라미터로서 메모리 로케이션 정의부(14)에 입력된다.
또한, 다음의 방식으로 메모리 로케이션 정보를 규정하는 것도 가능하다. 메모리 로케이션 정의부(14)는 메모리 로케이션 정보를 결정하기 위해 종래부터 사용된 알고리즘을 이용하여 복수의 위치정보 패턴을 후보로서 생성한다. 그리고, 복수의 위치정보 후보는 보안보호의 관점에서 설정된 기준에 따라 평가되며, 최선의 평가를 받은 것이 위치정보로서 규정된다. 기준의 하나는 예를 들어, "예상된 시간 동안에는 높은 레벨의 신뢰성을 갖는 부분 프로그램이 메모리에 존재하여야 한다"는 것이다. 이와 달리, 시스템 관리자는 메모리 로케이션 정의부(14)에 의해 생성된 복수의 로케이션 정보 후보를 참조하고, 그 중의 하나를 선택할 수 있다.
또한, 동시에 메모리에 배치된 부분 프로그램의 크기(한 번에 참조가능한 프로그램의 부분의 크기)의 전체 값을 더 작게 할 필요가 있으면, 부분 프로그램이 로딩되는 메모리의 크기를 더 작게하는 것이 최선이다.
메모리 로케이션 정의부(14)는 프로그램 로더(1)의 구성요소인 대신 암호화된-프로그램 생성장치(C)의 구성요소일 수도 있음에 유의하여야 한다.
<불법 액세스 방지장치(15)>
불법 액세스 방지장치(15)는 공유 메모리(M)에서 실행되는 부분 프로그램을 분석하기 위해 인터럽션을 이용하여 행해질 수 있는 불법 프로그램 분석을 방지하는 처리를 실행한다.
인터럽션(interruption)은 하나의 처리가 컴퓨터 시스템 상에서 실행되는 동안, 더 높은 우선순위를 갖는 다른 이벤트가 발생하는 것을 의미한다. 일반적으로 말해서, 인터럽션이 발생하면, 실행되는 처리는 일시적으로 중단되고, 인터럽팅 이벤트를 위한 다른 처리가 실행될 것이다. 이 기능의 이점을 취함으로써, 임의로 선택된 시점에서 프로그램을 중단하고, 그 시점에서 메모리나 레지스터의 내용을 참조할 수 있게 되거나, 그렇지 않으면, 메모리나 레지스터의 내용을 변경한 후 처리를 계속할 수 있다.
예컨대, 프로그램 로더(1)가 저장 어드레스 정보를 해독한 직후 인터럽션이 발생되게 함으로써, 해독된 저장 어드레스 정보를 참조할 수 있다. 또한, 부분 프로그램의 해독과 로딩이 완료된 후, 인터럽션이 발생되게 함으로써, 공유 메모리(M)에 로케이트된 부분 프로그램의 내용을 참조할 수 있다.
이러한 상황을 방지하기 위해, 불법 액세스 방지부(15)는 인터럽션의 검출시 다른 컴포넌트에 의해 실행되는 처리를 중단하거나, 공유 메모리(M)에 로딩된 부분 프로그램을 삭제한다.
보다 구체적으로, 인터럽션의 검출시, 불법 액세스 방지부(15)는 프로그램 로더(1)를 포함하는 컴퓨터 시스템 상에서 실행되는 프로그램의 처리를 중단하기 위한 트랩명령(trap instruction)을 내고, CPU 내의 IDT(Interrupt Descriptor Table)를 참조한다. IDT는 인터럽션 명령에 대응하는 핸들러(handler)에 관한 정보를 정의하는 테이블이다. 본 실시예에서, 이러한 핸들러는 프로그램의 중단을 실행하고, 공유 메모리(M)의 해독된 부분 프로그램 저장영역 내에 저장된 콘텐츠를 삭제하기 위해 사용되는 것으로 정의된다. 불법 액세스 방지부(15)는 처리를 이러한 핸들러로 이동시켜, 프로그램의 중단과 메모리 콘텐츠의 삭제가 실행되도록 한다.
또한, 상술한 처리와 함께, 불법 액세스 방지부(15)는 더미 프로그램을 실행하기 위한 처리를 수행한다. 더미 프로그램은 프로그램이 중단되거나 메모리 콘텐츠가 삭제되는 동안 인터럽션을 악용하여 제어권을 탈취하고자 하는 자를 혼란시키기 위해 사용된다. 여기에서, 더미 프로그램의 처리는 예를 들면, "문자열 만을 디스플레이하거나" 또는 "암호화된 프로그램의 실행결과에 반대되는 결과를 출력하는", 다른 프로그램의 처리에 영향을 미치지 않는 것으로 상정한다. 인터럽션을 검출할 때, 불법 액세스 방지부(15)는 미리 실행환경으로 로딩된 더미 프로그램을 호출하여 실행한다.
(동작)
다음으로, 도면을 참조하고, 제어부(11)의 설명을 중심으로 상술한 구성을 갖는 프로그램 로더(1)의 동작에 대해 설명하기로 한다.
도 5는 암호화된 프로그램의 해독 및 로딩처리에서 프로그램 로더(1)의 동작을 도시한 흐름도이다. 그러나, 불법 액세스 방지부(15)에 의해 실행되는 처리는 그 처리가 인터럽트 방식으로 실행되기 때문에 도면에 도시되지 않았다는 점을 유념해야 한다. 또, 프로그램을 암호화하는 처리 및 병렬로 실행되는 메모리 로케이션 정보를 생성하는 처리도 도면에는 도시하지 않았다.
제어부(11)가 외부(시스템 상에서 실행되는 OS 또는 프로그램)로부터 처리를 실행하라는 명령(처리되는 부분 프로그램을 규정하는 식별정보를 포함)을 수신하면, 해독 및 로딩의 처리가 시작된다(S501: YES). 이 처리를 실행하라는 명령은, 목표 프로그램이 활성화 될 때, 그리고 활성화 후에는 해독 및 로딩된 후 실행되는 부분 프로그램이 다른 부분 프로그램을 호출할 때, OS로부터 송신된다. 활성화시의 명령으로, 프로그램의 엔트리 지점을 갖는 부분 프로그램은 해독 목표가 된다. 활성화 후의 명령으로, 호출되는 부분 프로그램의 식별정보는 처리의 목표가 된다.
이 명령을 수신하면, 제어부(11)는 규정된 부분 프로그램의 식별정보를 저장 어드레스 해독부(121)에 송신하여, 저당 어드레스 해독부(121)가 저장 어드레스를 해독하도록 명령하여 규정된 부분 프로그램이 2차 저장장치(S)로부터 판독되도록 한다.
제어부(11)로부터 명령을 수신하면, 저장 어드레스 해독부(121)는 저장부(16)로부터 부분 프로그램에 대한 저장 어드레스 정보(암호화됨)를 판독하고, 또한 해독 지원 프로그램 인증부(13)에 해독 지원 프로그램(P)이 인증된 것인가를 확인하라고 명령한다.
해독 지원 프로그램(P)이 인증된 것으로 확인되면(S503: YES), 저장 어드레스 해독부(121)는 해독 지원 프로그램(P)을 이용하여 단계 S502에서 판독된 저장 어드레스 정보를 해독한다. 이 때, 저장 어드레스 해독부(121)는 저장부(16)로부터 이 저장 어드레스 정보를 해독하기 위한 암호화 키를 취득하고, 이 암호화 키와 암호화된 저장 어드레스 정보를 해독 지원 프로그램(P)에 송신하여 해독처리가 실행되도록 한다(S504).
반대로, 해독 지원 프로그램이 인증되지 않은 것으로 확인되면(위조되었다고 판단되면)(S503: NO), 해독지원 프로그램 인증부(13)는 판정결과를 제어부(11)에 통지한다. 제어부(11)는 위조의 검출을 OS에 통지하며, 해독과 로딩의 처리를 중단한다(S514).
단계 S504에서 해독된 저장 어드레스 정보를 취득한 저장 어드레스 해독부(121)는, 인증처리가 실행되도록 그 저장 어드레스 정보를 저장 어드레스 정보 인증부(17)에 송신한다. 저장 어드레스 정보 인증부(17)는 일방향 해쉬 함수처럼 정상적으로 사용되는 인증기술을 이용하여 인증처리를 실행하고, 그 결과를 저장 어드레스 해독부(121)에 다시 보내준다. 저장 어드레스 해독부(121)는 그 결과를 제어부(11)에 송신한다.
인증처리의 결과로서 저장 어드레스 정보가 인증되지 않은 것으로 확인되면(S505: YES), 제어부(11)는 "저장 어드레스가 불법임"을 OS에 통지하고, 해독 및 로딩 처리를 중단한다(S514).
한편, 저장 어드레스 정보가 인증된 것으로 확인되면(S505: YES), 제어부(11)는 저장 어드레스 해독부(121)로부터 해독된 저장 어드레스 정보를 취득한다. 그리고, 제어부(11)는 2차 저장장치(S)로부터 해독 및 로딩의 목표인 부분 프로그램의 판독 및 해독의 처리로 진행한다. 보다 구체적으로, 우선 제어부(11)는 해독처리를 실행하는 부분 프로그램 해독부(123)에 처리를 시작할 것을 명령한다.
제어부(11)로부터 명령을 수신하면, 부분 프로그램 해독부(123)는 우선 2차 저장장치(S)의 저장위치로부터 규정된 암호화된 부분 프로그램과 부분 프로그램을 해독하기 위한 암호화 키를 판독한다(S506). 그리고 부분 프로그램 해독부(123)는 해독 지원 프로그램 인증부(13)에 해독 지원 프로그램(P)에 대한 인증처리를 실행할 것을 명령하고, 그 결과를 제어부(11)에 다시 보낸다.
해독 지원 프로그램(P)이 인증된 것으로 확인되면(S507: YES), 부분 프로그램 해독부(123)는 암호화 키와 함께 단계 S506에서 취득된 암호화된 부분 프로그램을 해독 지원 프로그램(P)으로 송신하여 부분 프로그램의 해독처리가 실행되도록 한다(S508).
반대로, 해독 지원 프로그램(P)이 인증되지 않은 것으로 확인되면(S507: NO), 부분 프로그램 해독부(123)는 그 결과를 제어부(11)에 통지한다. 제어부(11)는 "해독 지원 프로그램의 위조가 검출되었음"을 OS에 통지하고, 부분 프로그램의 해독 및 로딩 처리를 중단한다. 또한 이 때, 공유 메모리(M)에 이미 로딩된 해독된 부분 프로그램이 있으면, 제어부(11)는 그 부분 프로그램을 삭제할 뿐 아니라 해독된 저장 어드레스도 삭제한다(S514).
부분 프로그램의 해독처리를 종료하면, 부분 프로그램 해독부(123)는 해독된 부분 프로그램을 제어부(11)에 출력한다. 제어부(11)는 해독된 부분 프로그램을 공유 메모리(M)의 공간에 로케이트시키는 처리를 실행한다. 보다 구체적으로, 우선 제어부(11)는 메모리 로케이션 정보 해독부(122)에 저장부(16)로부터의 암호화된 메모리 로케이션 정보와 암호화 키를 판독하라고 명령한다(S509).
메모리 로케이션 정보 해독부(122)는 해독 지원 프로그램 인증부(13)로 하여금 해독 지원 프로그램(P)의 인증처리를 실행하도록 한다.
해독 지원 프로그램(P)이 인증된 것으로 확인되면(S510: YES), 메모리 로케이션 정보 해독부(122)는 암호화된 메모리 로케이션 정보와 암호화 키를 해독 지원 프로그램(P)에 송신하여 해독처리가 실행되도록 하며, 해독된 메모리 로케이션 정보를 제어부(11)에 다시 보낸다(S511). 제어부(11)는 단계 S508에서 해독된 부분 프로그램을 해독된 메모리 로케이션 정보에 따라 공유 메모리(M)에 로케이트시킨다(S512).
해독 지원 프로그램(P)이 단계 S510에서 인증되지 않은 것으로 확인되면(S510: NO), 메모리 로케이션 정보 해독부(122)는 그 결과를 제어부(11)에 통지한다. 제어부(11)는 단계 S508에서 해독된 부분 프로그램을 삭제하고, 처리를 중단한다(S514). 또한, 메모리 공간에 이미 로딩된 부분 프로그램이 있으면, 제어부(11)는 그것도 삭제한다.
지금까지 설명된 처리는 전체 목표 프로그램이 처리를 종료할 때까지 반복된다(S513: YES).
(요약)
상술한 바와 같이, 오버레이 방법을 이용하는 본 실시예의 프로그램 로더(1)는, 해독 목표인 암호화된 프로그램을 부분 프로그램 단위로 해독하고, 해독된 부분 프로그램을, 보안보호를 고려하여 설정된 메모리 로케이션 정보에 따르는 오버라이팅 처리를 통해 메모리의 미리 정해진 영역에 로케이트시키며, 그에 따라 프로그램 로더(1)는 전체 프로그램의 불법적인 참조를 방지한다. 또한, 보안보호는 다음의 처리를 통해 더욱 확실하게 보증된다. (1) 각 부분 프로그램이 해독될 때마다 해독 지원 프로그램의 인증을 검사함으로써 해독 지원 프로그램의 불법적인 위조를 검사하는 처리, (2) 해독된 부분 프로그램이 메모리 내에 어디에 로케이트되는지를 나타내는 메모리 로케이션 정보를 암호화함으로써 해독된 프로그램을 불법적으로 참조하는 것을 어렵게 하는 처리, 및 (3) 인터럽션이 검출될 때, 해독된 데이터(예를 들면, 부분 프로그램)를 삭제함으로써, 인터럽션의 악용에 의한 불법적 참조를 방지하는 처리.
(수정예)
다음으로 상술한 실시예에서 가능한 6개의 수정예에 대하여 설명하기로 한다.
(수정예 1)
상술한 실시예에서, 불법 액세스 방지부(15)는 모든 인터럽션을 불법적인 것으로 판정하여, 그 처리를 중단하고 해독된 데이터를 삭제하지만, 정당한 인터럽션도 일부 존재한다. 본 수정예에서는, 정당한 인터럽션은 허용되도록 처리가 실행된다.
본 수정예에서 암호화된-데이터 해독장치의 전반적인 구성은 상술한 실시예의 것과 동일하며, 단지 불법 액세스 방지부에 의해 실행되는 처리부분 만이 다르다. 결국, 그 구성에 대한 도면은 생략되어 있으나, 이 유닛은 구별을 위해 불법 액세스 방지부(15')라 하기로 한다.
본 수정예에서 불법 액세스 방지부(15')는 인터럽션이 불법적인 방식으로 사용되는 경우 프로그램의 역분석을 방지하지만, 오작동(malfunction) 등을 검사하는 것과 같은 정당한 목적으로 디버거(debugger)에 관련된 인터럽션을 허용함으로써, 정당한 디버거에게는 인터럽션을 허용하고 있다. 디버거는 고장에 대한 검사를 위해, 원하는 위치에서 프로그램의 처리를 정지(브레이크)시키고, 그 상태에서 메모리 콘텐츠를 참조하거나 변경시킬 수 있는 기능이다.
브레이킹(breaking)을 통해 프로그램을 정지시키는 것은, 브레이크가 발생하는 브레이크 포인트들(breakpoints) 중의 하나에 프로그램이 올 때마다 그 프로그램이 중단되도록 미리 브레이크 포인트들을 설정하고, 인터럽션이 발생되게 함으로써 실행된다. 각 브레이크 포인트에서 프로그램을 정지시키기 위한 필요조건으로서 각 작업에 대한 상세한 조건을 설정하는 것이 또한 가능하다. 그러나 상술한 실시예의 불법 액세스 방지부(15)의 처리방법에 따라 OS가 브레이킹에 대한 인터럽션을 발생시키면, 프로그램이 정지되므로 오작동을 검사할 수 없다.
따라서, 본 수정예의 불법 액세스 방지부(15')는 다음의 방식으로 디버거에 관련된 인터럽션(브레이킹에 대한 인터럽션)과 다른 인터럽션을 구별한다.
암호화 목표인 프로그램이 암호화된-프로그램 생성장치(C)에 의해 실행형태로 변환된 후, 불법 액세스 방지부(15')는, 그것이 아직 암호화 전단계에 있는 동안 정당한 권한을 가진 사용자로부터 프로그램의 브레이크포인트의 설정을 실행형태로 수신한다. 불법 액세스 방지부(15')는 설정된 브레이크포인트의 위치정보(라인번호, 함수명, 어드레스 등으로 표현됨)를 내부에 저장한다.
그리고, 프로그램의 해독과 로딩 단계에서, 불법 액세스 방지부(15')는 인터럽션을 감시한다(불법 액세스 방지부(15)가 행하는 것과 동일한 방식). 프로그램이 실행되는 동안 인터럽션이 발생하면, 불법 액세스 방지부(15')는 발생위치와 저장된 브레이크포인트 위치정보를 비교한다. 발생위치가 브레이크포인트 위치정보에 미리 설정된 브레이크포인트 위치 중의 하나와 일치하면, 메모리 콘텐츠를 삭제하는 등의 실시예에 언급된 처리는 실행되지 않으며, 사용자의 연속적인 실행이 허용된다.
반대로, 미리 설정된 위치와 다른 위치에서 인터럽션이 발생하면, 불법 액세스 방지부(15)와 같은 불법 액세스 방지부(15')는 프로그램의 실행을 중단하고, 메모리(M) 내의 부분 프로그램과 같은 암호화된 데이터를 삭제하는 처리를 실행한다.
(수정예 2)
다음으로 메모리 로케이션 정보의 보안보호를 더욱 확실하게 보증하는 수정예에 대해 설명하기로 한다.
상술한 실시예에서, 일단 생성된 메모리 로케이션 정보는 암호화된 목표 프로그램이 해독되고 로딩될 때마다 동일한 콘텐츠로 반복 사용된다. 즉, 암호화된 프로그램이 실행되면, 프로그램을 구성하는 각 부분 프로그램은 매번 동일한 시간에 메모리 공간 내의 동일한 어드레스에 로케이트된다. 결국, 메모리 공간 내의 데이터가 감시되는 동안 메모리 로케이션 정보의 콘텐츠가 프로그램의 반복된 실행을 통해 디코드될 수 있는 가능성이 없다고 말하기 어렵다. 메모리 로케이션 정보가 디코드되면, 정보의 사용과 함께 불법 참조가 가능하게 된다.
그러므로, 본 수정예는 메모리 로케이션 정보가 해독되는 것을 방지하고, 암호화된 프로그램의 보안보호를 보증하기 위한 것이다. 따라서, 본 수정예에서는 프로그램을 구성하는 부분 프로그램의 메모리 로케이션 위치가 프로그램이 실행될 때마다 동적으로 변하도록 메모리 로케이션 정보가 생성된다.
보다 구체적으로, 프로그램이 실행될 때마다 공유 메모리(M) 내의 3개 영역의 각각에 할당된 절대 어드레스값이 변하도록 메모리 로케이션 정보가 설정된다.
본 수정예의 암호화된-데이터 해독장치의 전반적인 구성은 전술한 실시예의 것과 동일하고, 메모리 로케이션 정의부에 의해 실행되는 처리 부분만이 상이하다. 결국, 전반적인 장치의 구성에 대해서는 생략하지만, 본 수정예의 메모리 로케이션 정의부는 이하에서는 구별을 위해 메모리 로케이션 정의부(14')라 하기로 한다.
도 6은 메모리 로케이션 정의부(14')에 의해 저장되고, 영역의 어드레스를 변경하기 위해 사용되는 3개 패턴의 영역 어드레스 정보(601, 602, 603)를 도시한 도면이다. 각각의 영역 어드레스 정보는 영역과, 그 영역에 할당된 절대 어드레스의 조합으로 이루어지며, 영역 식별부(610)와 절대 어드레스 값 부(620)를 구비한다.
전술한 실시예에서, 제어부(11)는 영역 어드레스 정보(예컨대, 영역 어드레스 정보(610))에 대응하는 단 한 종류의 정보만을 저장하고 사용한다. 본 수정예에서, 메모리 로케이션 정의부(14')는 메모리 로케이션 정보가 생성될 때, 3개 패턴의 영역 어드레스 정보 중의 하나를 선택하여 제어부(11)에 송신한다. 부분 프로그램이 해독 및 로딩되면, 제어부(11)는 영역 어드레스 정보의 선택된 패턴에 따라 각 영역의 절대 어드레스를 결정하고, 각 영역의 절대 어드레스와 메모리 로케이션 정보에 따라, 해독된 부분 프로그램에 대한 공유 메모리(M) 내의 로케이션 어드레스를 더 취득한다.
메모리 로케이션 정의부(14')는, (i)프로그램을 실행명령이 프로그램 로더(1)에 입력되거나, 또는 (ii)프로그램의 해독 및 로딩처리가 제 1 부분 프로그램이 로딩되기 전에 시작될 때, 영역 어드레스 정보의 1패턴을 선택할 수 있다.
영역의 절대 어드레스는 하나의 패턴이 다른 패턴으로 변경되는 경우 반드시 상술한 방식으로 변경될 필요는 없다는 점에 유념하여야 한다. 또한, 절대 어드레스를 "슬라이딩(sliding)"함으로써 메모리 로케이션 위치를 변경시킬 수 있다.
도 7은 절대 어드레스 값이 슬라이드됨으로써 변경되는 방법에 따르는 영역 어드레스 정보를 도시한 도면이다. 영역 어드레스 정보(700)에서, 영역 및 절대 어드레스 값은 1대1 대응하며, 각각의 절대 어드레스 값은 α, β, γ 중의 하나인 변수(variant)(슬라이딩 폭)를 포함한다. 메모리 로케이션 정의부(14')는 각 변수의 값을 변경시킴으로써 영역의 절대 어드레스를 변경시킨다.
각 변수의 값은 난수 생성 프로그램(예컨대, 난수생성 함수, 또는 타이머 등에 저장된 시간 정보를 이용하는 것)을 이용하여 임의의 값이 되도록 결정된다. 각 변수의 값은 "어떤 영역과 그 영역에 로케이트되는 부분 프로그램의 크기에 대한 변수(즉, 슬라이딩 폭)의 값의 합이 그 영역의 크기보다 크지 않다"는 조건이 만족되도록 결정되어야 한다. 그 이유는 부분 프로그램이 슬라이딩될 때 그 영역의 외부에 부분적으로 로케이트되는 상황은 피해야 하기 때문이다.
메모리 로케이션 정의부(14')는 프로그램이 마지막으로 실행될 때 사용되는 영역 어드레스를 내부에 저장하고, 그들을 참조함으로써 영역의 절대 어드레스가 마지막 실행의 절대 어드레스와 다르다는 것을 확인하도록 배열할 수도 있다는 점을 유념하여야 한다.
영역 어드레스의 변경은, 상술한 바와 같이 메모리 로케이션 정의부(14')에 의해 저장되는 정보에 따라 제어부(11)에 의해 실행되는 대신, 제어부(11) 자체에 의해 실행될 수 있다.
(수정예 3)
다음으로, 특정 부분 프로그램이 장기간 공유 메모리(M)에 로케이트되는 것을 방지함으로써 메모리 내의 부분 프로그램의 보안보호를 더욱 확실하게 보증하는 수정예에 대해 설명하기로 한다.
부분 프로그램이 동일한 영역에 오버라이트되도록 하는 오버레이 방법이 전술한 실시예에 사용되는 이유는, 부분 프로그램이 공유 메모리 내에 장시간 로케이트되어 남아있을 때 불법적인 참조의 위험성이 높아지기 때문이다. 그러나, 다른 프로그램에 의해 오버라이트되는 부분 프로그램의 크기에 따라, 비록 오버레이 방법이 사용된다고 하더라도 처리되는 부분 프로그램의 일부가 삭제되지 않고 메모리 내에 남게 될 것이다.
예를 들어, 부분 프로그램이 도 4에 도시된 방식으로 메모리 내에 로케이트될 때, 영역 1에 순차적으로 로케이트되는 3개의 부분 프로그램에 대해서, 부분 프로그램 B와 부분 프로그램 C 각각이 처음 로케이트 되어 있는 부분 프로그램 A의 단지 1/2 크기인 것으로 가정한다. 그 경우에, 부분 프로그램 A의 후반부는 부분 프로그램 B와 C의 오버라이팅에 의해 삭제되지 않고 영역 1에 남아 있게 된다. 부분 프로그램 A의 후반부가 특히 높은 레벨의 신뢰성을 갖는 경우, 보안보호의 관점에서 장시간 동안 남아있는 것은 매우 바람직하지 못하다.
영역 3에서, 부분 프로그램 H의 처리가 시간 t1의 마지막에 완료된다는 사실에도 불구하고, 부분 프로그램 H의 데이터는 시간 t2의 처음부터 다음 부분 프로그램 I가 로케이트될 때까지 남아있게 된다.
본 수정예에서는, 부분 프로그램이 해독되어 메모리 공간에 로케이트될 때마다, 로케이션 영역의 크기와 부분 프로그램의 크기 사이에 차이가 있는지를 검사한다. 로케이션 영역의 크기가 더 크면, 상술한 문제는 더미 데이터(더미 프로그램)를 그 영역의 공간영역에 삽입함으로써 해결될 것이다. 부분 프로그램이 처리를 종료하면, 그 시점에서 시작하여 경과시간이 측정되며, 미리 정해진 시간이 지나면, 전체 영역은 더미 데이터로 오버라이트될 것이다. 여기에서 언급된 이러한 처리는 제어부(이하, 실시예의 제어부(11)와 구별하기 위해 제어부(11')라 함)에 의해 실행될 것이다.
도 8은 더미 데이터 삽입 처리의 일반적인 구조를 도시한 개념도이다. 도면은 부분 프로그램을 특정 영역 N에 로케이팅하는 것과, 더미 데이터가 시간축을 따라 어떻게 삽입되는지를 보여준다. 시간 T2, T3, T5에서, 로케이팅되는 각 부분 프로그램의 크기가 작기 때문에, 더미 데이터는 영역의 크기와 부분 프로그램의 크기 사이의 차이를 메우기 위해 삽입된다. 시간 T4에서, 선행하는 부분 프로그램이 처리를 종료한 직후 미리 정해진 길이의 시간경과가 있기 때문에, 전체 영역에 더미 데이터가 삽입된다.
제어부(11')가 메모리 로케이션 정보에 따라 공유 메모리(M) 내의 영역의 하나에 부분 프로그램 해독부(123)에 의해 해독된 부분 프로그램을 로케이트하면, 제어부(11')는 해독 후 부분 프로그램의 크기(이 크기는 메모리 로케이션 정보의 일부로서 메모리 로케이션 정의부(14')에 의해 규정된 크기임)를 취득하고, 또한 공유 메모리(M)를 참조함으로써 로케이션 영역의 크기를 취득한다.
제어부(11')는 이들 두개의 크기를 비교하여, 영역의 크기가 더 크면, 더미 프로그램 저장영역으로부터의 크기 사이의 차만큼의 더미 프로그램 데이터를 판독하고, 판독된 데이터를 그 영역 내의 공간영역(부분 프로그램의 마지막 다음의 공간 및/또는 부분 프로그램 시작 전의 공간)에 삽입한다. 이러한 처리를 통해, 영역 내에서 직전에 로케이팅되어 있던 부분 프로그램의 데이터는 완전히 삭제될 것이다.
시간 경과에 따르는 더미 데이터 삽입처리는 부분 프로그램이 처리되는 것을 마친 후 실행될 것이다. 영역에 로딩된 부분 프로그램이 처리되면, 제어부(11')는 이 특정 영역에 대해 내장된 시계로 경과시간을 측정하기 시작한다. 경과시간이 미리 정해진 값에 도달했을 때, 이 영역에 로딩되는 다음 부분 프로그램이 아직 해독되지 않았으면, 더미 데이터가 전체 영역에 삽입될 것이다.
이러한 처리를 통해, 영역에서 직전에 로케이팅되어 있던 부분 프로그램의 데이터는 완전히 삭제될 것이다. 특히 더미 데이터는 실제로는 실행되지 않는 프로그램 또는 실행될 때 중요한 처리를 수행하지 않는 프로그램의 코드이다.
(수정예 4)
본 수정예에서, 암호화 키의 저장 로케이션과, 암호화 키를 취득하기 위한 절차에 대해 상이한 배열을 갖게 함으로써 각각의 부분 프로그램에 대한 보안보호를 강화한다. 보다 구체적으로, 하나의 부분 프로그램을 해독하기 위한 암호화 키는 그 하나의 부분 프로그램 전에 공유 메모리(M)에 정당하게 로딩되는 다른 부분 프로그램으로부터 취득될 수 있도록 배열된다.
본 수정예에서, 각 부분 프로그램에는 (i)이 특정 부분 프로그램에 의해 호출되는 다른 부분 프로그램을 해독하기 위한 암호화 키, 또는 (ii)암호화 키를 취득하기 위해 사용되는 일부 데이터가 삽입된다. 호출된 부분 프로그램이 해독될 필요가 있으면, 암호화 키 또는 호출하는 부분 프로그램에 삽입되는 암호화 키를 취득하기 위한 데이터가 사용될 것이다.
(기본 예)
이 방법의 가장 기본적인 실시예는 다음과 같다. 우선, 호출하는 부분 프로그램을 암호화된-프로그램 생성장치(C)가 암호화하기 전에, 호출되는 부분 프로그램을 암호화하기 위해 사용되는 암호화 키가 호출하는 부분 프로그램에 삽입된다. 그리고 호출하는 부분 프로그램이 암호화된다. 이어서, 암호화 키의 삽입 로케이션이 저장부(16)에 저장된다.
다음으로, 호출되는 부분 프로그램이 해독될 필요가 있으면, 부분 프로그램 해독부(123)는 호출하는 부분 프로그램과 관련된 삽입 로케이션 정보를 저장부(16)로부터 판독하고, 삽입 로케이션 정보에 따라 공유 메모리(M)에 로케이트된 호출하는 부분 프로그램으로부터 암호화 키를 판독하며, 암호화 키를 이용하여 호출되는 부분 프로그램을 해독한다.
예를 들어, 불법 사용자가 불법적인 방식으로 제어를 취득하여, 원하는 부분 프로그램을 메모리에 로딩하기 위한 호출 명령을 내리는 상황을 상정한다. 이러한 경우, 원하는 부분 프로그램을 호출하도록 상정된 정당한 부분 프로그램은 공유 메모리(M)에 존재하지 않으므로, 암호화 키를 취득할 수 없고, 본 수정예의 방법에 따라 원하는 부분 프로그램을 해독할 수도 없다. 따라서, 정당한 사용자에 의해 요구되는 부분 프로그램은 공유 메모리(M)에 로딩되지 않을 것이고, 불법적인 참조를 방지할 수 있다.
(개량 예)
본 수정예의 기본 모드는 상술한 바와 같다. 추가적인 조정을 함으로써 보안보호를 더욱 확실히 보증할 수 있다.
(개량 예 1)
도 9는 고급 예의 프로그램 로더(9)를 도시한 도면으로서, 이 프로그램 로더는, 암호화를 실행하는 컴포넌트(암호화-프로그램 생성장치(C9))와 해독을 실행하는 컴포넌트(부분 프로그램 해독부(923)) 각각이 동일한 암호화 키 생성수단(키 생성부(901a 및 901b))을 공통으로 갖는 배열에 의해, 호출하는 부분 프로그램 내의 코드 부분으로부터, 호출되는 부분 프로그램의 암호/해독을 위해 사용되는 암호화 키를 생성한다. 프로그램 로더(1)의 컴포넌트와 동일한 처리를 실행하는 컴포넌트는 동일한 참조번호를 부여하며, 그 설명은 생략하고 있음에 유념해야 한다.
(암호화시의 처리)
암호화된-프로그램 생성장치(C9)는 우선 부분 프로그램들 사이의 호출관계를 나타내는 호출관계 정보를 생성한 다음, 각 부분 프로그램을 실행형태로 변환한다. 다음으로, 암호화된-프로그램 생성장치(C9)는 호출관계 정보를 참조하여 각 부분 프로그램에 대한 암호화 키를 생성하고, 각 암호화 키를 이용하여 각 부분 프로그램을 암호화한다.
도 10은 부분 프로그램들 사이의 호출관계를 나타내는 개략도이다.
다음은 부분 프로그램을 암호화하고, 암호화된-프로그램 생성장치(C9)에 의해 실행되는 처리에 대해 설명하기로 한다. 처음으로, 암호화된-프로그램 생성장치(C9)는 호출관계 정보를 참조함으로써 다른 부분 프로그램을 호출하는 부분 프로그램을 검출하고, 호출하는 부분 프로그램의 실행형태의 코드 부분을 판독한다. 이어서, 암호화된-프로그램 생성장치(C9)는 판독된 코드를 키 생성부(901a)에 송신하고, 키 생성부(901a)에 암호화 키를 생성할 것을 명령한다. 키 생성부(901a)는 코드에 대한 해쉬값을 계산하고, 그 해쉬값을 암호화 키로서 암호화된-프로그램 생성장치(C9)에 다시 보낸다.
암호화된-프로그램 생성장치(C9)는 이 암호화 키를 이용하여 호출된 프로그램을 암호화하고, 암호화된 호출되는 부분 프로그램에 암호화 키의 생성을 위해 사용되는 코드의 위치를 나타내는 정보(실행형태의 호출하는 부분 프로그램에의 코드의 오프셋)를 첨부시킨다. 그리고, 암호화된-프로그램 생성장치(C9)는 암호화된 호출되는 부분 프로그램을 2차 저장장치(S)에 저장한다.
부분 프로그램이 복수의 부분 프로그램에 의해 호출되는 경우, 호출되는 부분 프로그램은 각 호출하는 부분 프로그램의 각 부분인 코드로부터 생성된 암호화 키로 암호화된다. 이러한 방식으로, 복수 패턴의 암호화된 부분 프로그램은 하나의 호출되는 부분 프로그램으로부터 생성된다. 이러한 경우, 해독처리를 실행하는 컴포넌트는 예를 들면, 암호화된 프로그램을 2차 저장장치(S)에 저장하기 전에 암호화된 부분 프로그램의 각 대응패턴에 첨부된 각 호출하는 부분 프로그램의 식별정보를 갖게 함으로써, 그 대응을 이해할 수 있도록 배열하는 것이 필수적이다. 그러나, 암호화 키는 호출되는 부분 프로그램이 호출될 때에만 필요하고, 비록 부분 프로그램을 호출하는 복수의 부분 프로그램이 존재한다 하더라도 그 암호화 키가 메모리 내에 존재할 필요는 없으므로, 호출되는 프로그램이 메모리에 존재하는 경우에만 호출하는, 암호화 키를 호출하는 부분 프로그램으로부터 생성할 필요가 없다.
예를 들어, 도 10에 도시된 부분 프로그램 H에 대해, 암호화 키는 부분 프로그램 C와 F로부터 각각 만들어질 수 있다. 그러나 다음의 두 조건이 모두 만족되면, 부분 프로그램 H를 해독하기 위한 암호화 키는 부분 프로그램 F로부터만 만들어지며, 부분 프로그램 C로부터 암호화 키를 생성할 필요는 없다는 점에 유념해야 한다.
(i)부분 프로그램 H의 해독 및 로딩은 부분 프로그램 H가 부분 프로그램 F에 의해 호출될 때 트리거되고,
(ii)메모리 로케이션 정보는, 부분 프로그램 C가 부분 프로그램 H를 호출하는 시간까지 부분 프로그램 H가 메모리에 이미 로딩되어 있음을 정의한다.
(해독시의 처리)
다음으로 암호화된 부분 프로그램을 해독하기 위한 것으로, 프로그램의 실행단계에서 부분 프로그램 해독부(923)에 의해 실행되는 처리에 대해 설명하기로 한다. 우선, 부분 프로그램 해독부(923)는 제어부(911)로부터, (i)해독되어 공유 메모리(M)에 로딩되는 호출되는 부분 프로그램의 식별정보와, (ii)호출하는 부분 프로그램의 식별정보를 수신한다. 다음으로, 부분 프로그램 해독부(923)는 2차 저장장치(S)로부터, 해독되는 암호화된 호출되는 부분 프로그램을 판독한다.
이어서, 부분 프로그램 해독부(923)는 암호화된 호출되는 부분 프로그램으로부터, 암호화 키가 생성되는 코드의 위치를 나타내는 이러한 정보를 판독하고, 공유 메모리(M)에 로딩된 호출하는 부분 프로그램으로부터 코드 위치에 의해 표시된 코드를 판독한다. 이어서, 부분 프로그램 해독부(923)는 판독된 코드를 키 생성부(901b)에 송신하여, 키 생성부(901b)로 하여금 암호화 키를 생성하게 한다. 그리고, 암호화된 프로그램 해독부(923)는 이 암호화 키로 암호화된 호출되는 부분 프로그램을 해독한다. 해독처리가 완료되자 마자, 암호화 키는 삭제된다.
도 11은 시간축을 따르는 해독처리 시간에서 부분 프로그램의 메모리 로케이션을 도시한 개략도이다. 이 도면에 도시된 예에서, 영역 3에 부분 프로그램 H를 로딩하는 것은, 부분 프로그램 H가 이미 영역 1에 로딩된 부분 프로그램 H에 의해 호출될 때 트리거된다. 이어서, 영역 3에 이미 로딩된 부분 프로그램 H는, 나중에 영역 2에 로딩된 부분 프로그램 C에 의해 호출될 것이다.
따라서, 부분 프로그램 해독부(923)는 부분 프로그램 F로부터 생성된 암호화 키로 부분 프로그램 H를 해독한다. 부분 프로그램 해독부(923)는 부분 프로그램 C가 부분 프로그램 H를 호출할 때 해독처리를 실행하지 않는다. 제어부(911)와 부분 프로그램 해독부(923) 중의 하나는 부분 프로그램 C가 부분 프로그램 H를 호출할 때 해독처리가 실행될 필요가 없음을 판정한다. 이 판정은 (i)호출되는 부분 프로그램의 식별정보와 메모리 로케이션 정보를 비교함으로써, 또는 (ii) 호출되는 부분 프로그램이 이미 메모리(M)에 로딩되어 있는지의 여부를 검사함으로써 행해진다.
(개량 예 2)
다음으로 다른 고급 예에 대해 설명하기로 한다.
도 12에 도시된 본 개량 예의 암호화된-프로그램 생성장치(C12)는, 암호화 처리 중에, 호출되는 부분 프로그램에 대한 암호화 키를 취득하기 위한 키 취득 프로그램을, 호출하는 부분 프로그램에 삽입한다(키 취득 프로그램 생성부(1201) 및 암호화된-프로그램 생성장치(C12)). 호출되는 부분 프로그램을 해독할 때, 부분 프로그램 해독부(1223)는 호출하는 부분 프로그램에 삽입된 키 취득 프로그램을 실행시킴으로써 암호화 키를 취득하고, 그 암호화 키를 이용하여 호출된 부분 프로그램을 해독한다.
(암호화시의 처리)
암호화된-프로그램 생성장치(C12)에 의해 실행되는 처리는 암호화되는 프로그램을 실행형태로 변환하고 그 프로그램을 부분 프로그램으로 분할하는 단계까지는 전술한 실시예의 것과 동일하다. 다음으로 부분 프로그램이 암호화될 때 암호화된-프로그램 생성장치(C12)에 의해 실행되는 처리를 설명하기로 한다.
암호화된-프로그램 생성장치(C12)는 암호화되는 부분 프로그램에 대한 암호화 키 K를 생성하고, 그 암호화 키 K를 미리 정해진 저장 위치에 저장하고, 또한 저장위치를 나타내는 정보(어드레스, 오프셋 등)를 보유한다. 이 저장위치는 2차 저장장치(S) 내부의 미리 정해진 영역 또는 부분 프로그램이 해독될 때, 공유 메모리(M)에 로딩되는 다른 부분 프로그램의 내부 등에 존재할 수 있다. 암호화된-프로그램 생성장치(C12)는 저장위치를 키 취득 프로그램 생성부(1201)에 통지하고, 그 키 취득 프로그램 생성부(1201)에 "저장위치로부터 암호화 키 K를 판독하여, 저장부(16'') 내부의 미리 정해진 위치(특정 부분 프로그램에 대한 암호화 키 K를 저장하기 위해 할당된 영역)에 기입하는 처리"를 실행하는 키 취득 프로그램을 생성하게 한다.
특정 부분 프로그램에 대한 상술한 처리를 종료하면, 암호화된-프로그램 생성장치(C12)는 이 특정 부분 프로그램을 호출하기 위한 다른 부분 프로그램에 키 취득 프로그램을 삽입한다. 키 취득 프로그램은 예를 들면, 특정 부분 프로그램이 호출되는 처리 직전에 임의의 위치에 삽입된다.
모든 부분 프로그램의 각각에 대하여, 키 취득 프로그램을 생성하는 처리와 각 호출하는 부분 프로그램에 생성된 키 취득 프로그램을 삽입하는 처리를 완료하면, 암호화된-프로그램 생성장치(C12)는 그 부분 프로그램들을 암호화한다.
(해독시의 처리)
해독에 사용되는 암호화 키를 취득하는 처리는 전술한 실시예의 것과 동일하다. 부분 프로그램을 해독하라는 명령을 수신하면, 부분 프로그램 해독부(1223)는 저장부(16)의 내측에 있고 이 특정 부분 프로그램에 대한 암호화 키 K를 저장하도록 할당된 영역을 참조함으로써 암호화 키 K를 판독하고, 이 암호화 키 K를 이용하여 해독처리를 실행한다. 이 암호화 키 K는 이미 공유 메모리(M)에 로딩된 호출하는 부분 프로그램에 삽입된 키 취득 프로그램의 실행을 통해 상기 영역에 기입된다. 해독처리를 완료하면, 부분 프로그램 해독부(1223)는 그 영역으로부터 암호화 키 K를 삭제한다. 비록 동일한 부분 프로그램이 다시 호출되더라도 호출하는 부분 프로그램에 삽입된 키 취득 프로그램은 동시에 동일한 영역에 암호화 키 K를 기입하기 때문에 해독 키 K를 삭제하는데 문제는 없다.
이 처리를 통해, 모든 부분 프로그램에 대해 공통인 암호화 키가 저장부와 같은 미리 정해진 로케이션에 항상 저장되는 경우에 비해, 본 수정예에서는 암호화 키가 도난당할 위험성이 줄어들 수 있다. 또한, 비록 하나의 부분 프로그램에 대한 암호화 키가 우연히 도난 당했다고 하더라도, 다른 부분 프로그램에 영향이 없게 될 것이다. 또한, 호출되는 부분 프로그램이 원래의 정당한 처리 흐름에서 정당하게 호출하는 프로그램에 의해 호출될 때에만 호출되는 부분 프로그램이 해독되도록 배열하는 것이 가능하므로, 비록 그러한 제어를 불법적으로 탈취한 사람이 불법적인 참조를 위한 목적으로 메모리에 로딩된 특정 부분 프로그램을 갖고자 시도하더라도, 그 불법 탈취자는 암호화 키를 입수할 수 없기 때문에 불법적인 참조를 할 수 없게 된다.
(수정예 4에 대한 주의)
상술한 설명에서, 호출되는 부분 프로그램의 해독처리에 사용되는 암호화 키를 취득하기 위한 데이터 또는 프로그램은 호출하는 부분 프로그램에 삽입되어야 하나, 그 데이터나 프로그램은 다른 장소에 삽입되는 것도 또한 허용될 수 있다는 점에 유념해야 한다. 예컨대, 호출할 때 공유 메모리에 존재하는 부분 프로그램(호출하는 부분 프로그램이 아님)의 하나에 암호화 키를 취득하기 위한 데이터 또는 프로그램을 삽입하는 것도 허용될 수 있다. 또, 이와 달리, 부분 프로그램이 실행되어 공유 메모리로부터 삭제될 때, 제어부가, 암호화 키를 취득하기 위한 것으로서 그 부분 프로그램에 삽입되는 데이터 또는 프로그램만을 판독하여, 판독된 데이터나 프로그램을 그를 위한 전용 영역에 저장하며, 다른 부분 프로그램에 대하여 나중에 실행될 해독처리에서 그것을 사용하는 것도 또한 허용될 수 있다.
상술한 설명에서, 암호화 키를 취득하기 위한 데이터 또는 프로그램은 단일 부분 프로그램(호출하는 부분 프로그램)에 삽입되도록 배열되지만, 비록 그 데이터나 프로그램이 복수의 부분 프로그램에 삽입되더라도 또한 허용될 수 있다.
예를 들어, 암호화 키 자체를 삽입하기 위해서는, 암호화 키가 분할된 다음, 해독 목표인 부분 프로그램이 호출될 때, 공유 메모리(M)에 존재하는 복수의 부분 프로그램에 삽입되는 것과, 해독시에 그 부분 프로그램 해독부가 이들 분할된 암호화 키를 판독하여 결합함으로써 암호화 키를 취득하게 하는 것도 또한 허용가능하다. 예컨대, 메모리 정보 정의부가, 암호화시에 (i)어떤 프로그램의 어느 로케이션으로부터 분할된 암호화화 키가 판독되어야 하는지를 나타내고, (ii)암호화 키를 취득하기 위해, 판독되는 분할된 암호화 키가 어떤 순서로 결합되어야 하는지를 나타내는 일부 정보를 별도로 규정하는 것은 좋은 아이디어일 것이다.
암호화 키 취득 프로그램이 사용될 때, 예를 들어, 부분 프로그램이 A, C, 및 H의 순서로 실행되는 경우, 다음의 방식으로 부분 프로그램 H에 대한 암호화 키를 취득할 수 있다. (i)부분 프로그램 A가 실행될 때, 부분 프로그램 A에 삽입되는 암호화 키 취득 프로그램은 부분 프로그램 H에 대한 암호화 키의 처음 1/2을 저장부(16) 내의 암호화 키 저장영역의 처음 1/2에 기입하고, (ii)부분 프로그램 C가 실행될 때, 부분 프로그램 C에 삽입되는 암호화 키 취득부는 부분 프로그램 H에 대한 암호화 키의 두 번째 1/2을 암호화 키 저장영역의 두 번째 1/2에 기입한다. 이러한 처리를 통해, 부분 프로그램 H가 호출되면, 부분 프로그램 H에 대한 암호화 키는 완전한 상태로 저장부에 저장된다.
호환성이 유지되는 한 상술한 방법을 조합한 다른 방법을 사용할 수도 있음을 유념해야 한다.
또한, 상술한 설명에서, 암호화된-프로그램 생성장치는, 암호화된 프로그램에 암호화 키를 삽입하는 처리를 실행하는, 키 생성부(901a), 또는 키 취득 프로그램 생성부(1201)와 같은 컴포넌트를 포함하고 있으나, 프로그램 로더(1)가 메모리 로케이션 정의부와 함께 이들 중의 하나를 포함하는 것도 허용된다.
본 수정예에서, 본 발명의 암호화된-데이터 해독장치는, 암호화된 프로그램에 암호화 키를 삽입하는 처리를 실행하는, 키 생성부(901a), 또는 키 취득 프로그램 생성부(1201)와 같은 컴포넌트와 함께 프로그램 로더로서 구현되며, 키 생성부(901a)와 키 취득 프로그램 생성부(1201)는 각각 암호화된-프로그램 생성장치의 일부분이다.
(수정예 5)
본 수정예에서는, 하나의 키에 대한 암호화 키를 사용하여 부분 프로그램에 대한 암호화/해독 처리에 사용되는 암호화 키를 암호화함으로써 보안보호가 강화되었다. 또한, 프로그램에 대한 암호화 처리에 앞서, 하나의 키에 대한 암호화 키는 각각의 부분 프로그램에 대해 개별적으로 생성된다. 각 "하나의 키에 대한 암호화 키"는, 대응 부분 프로그램에 의해 호출되는 각 부분 프로그램의 암호화/해독시에 암호화 키에 대한 암호화/해독처리에 사용될 것이다.
도 13은 본 수정예에서의 프로그램 로더(1b)와 관련장치의 구성을 도시한 블록도이다. 이 구성에서, 개개의 암호화 키 생성부(1301)(암호화된-프로그램 생성장치(C12) 내의 것)와 암호화 키 해독부(1302)(프로그램 로더(1b) 내의 것)가 전술한 실시예의 구성에 부가된다.
(암호화시의 처리)
다음으로 암호화된-프로그램 생성장치(C13)가 부분 프로그램을 암호화하는 처리에 대해 설명하기로 한다. 우선, 암호화된-프로그램 생성장치(C13)는 개개의 암호화 키 생성부(1301)에, 각각의 부분 프로그램에 대해 개별적으로 "하나의 키에 대한 암호화 키(an encrypton key for a key)"를 생성할 것을 명령한다. 그리고 암호화된-프로그램 생성장치(C13)는 각 "하나의 키에 대한 암호화 키"를 각 부분 프로그램에 삽입하는 동시에, 삽입 로케이션을 나타내는 정보("삽입 로케이션 정보")를 생성한다.
이어서, 암호화된-프로그램 생성장치(C13)는 프로그램을 암호화하는 암호화 키(이 암호화 키는 모든 부분 프로그램에 공통임)를 이용하여 부분 프로그램을 암호화한다. 그리고 암호화된-프로그램 생성장치(C13)는 수정예 4에서 사용된 것과 동일한 호출관계 정보를 참조하여 이 부분 프로그램을 호출하는 다른 부분 프로그램을 삭제한다.
다음으로, 암호화된-프로그램 생성장치(C13)는 호출하는 부분 프로그램에 대응하는 "그 키에 대한 암호화 키"를 이용하여 부분 프로그램을 암호화하는 암호화 키를 암호화한다. 그리고, 암호화된-프로그램 생성장치(C13)는 (i)암호화된 암호화 키, (ii)대응하는 부분 프로그램과 호출하는 부분 프로그램의 식별정보, 및 (iii)저장부(16)가 이들을 암호화된 암호화 키를 위한 영역에 저장하도록 미리 생성된 삽입 로케이션 정보를 저장부(16)에 송신한다.
(해독시의 처리)
해독처리는 암호화 키 해독부(1302) 및 부분 프로그램 해독부(1323)에 의해 실행된다. 특정 부분 프로그램을 해독하고자 하는 부분 프로그램 해독부(1323)는 우선, 해독되는 부분 프로그램(제어부(110)로부터 취득됨)과 그 부분 프로그램을 호출하는 다른 부분 프로그램의 식별정보를 암호화 키 해독부(1302)에 통지한다. 식별정보에 따라, 암호화 키 해독부(1302)는 "암호화된 암호화 키"와 각 부분 프로그램에 대응하여 저장부(16)에 저장된 "하나의 키에 대한 암호화 키의 삽입 로케이션 정보"의 세트 중에서, 해독되는 부분 프로그램과 호출하는 부분 프로그램의 조합에 대응하는 세트를 판독한다.
다음으로, 암호화 키 해독부(1302)는 공유 메모리(M) 내의 미리 정해진 로케이션으로부터 "하나의 키에 대한 암호화 키"를 판독한다. 상기 미리 정해진 로케이션은 삽입 로케이션 정보에 의해 표시된다. 그리고, 암호화 키 해독부(1302)는 하나의 키에 대한 암호화 키를 이용하여, 해독되는 부분 프로그램에 대한 "암호화된 암호화 키"를 해독하여 암호화 키를 취득하고, 취득된 암호화 키를 부분 프로그램 해독부(1323)로 출력한다.
부분 프로그램 해독부(1323)는 해독된 암호화 키를 이용하여 부분 프로그램을 해독한다.
상술한 설명에서, 부분 프로그램들은 그들이 암호화되기 위해 공통인 하나의 암호화 키를 구비하고, 암호화 키를 암호화/해독하기 위한 "하나의 키에 대한 암호화 키"는 개별적으로 각 부분 프로그램에 제공되었지만, 각 부분 프로그램이 각각 개별적인 암호화 키를 구비하는 것도 허용될 수 있다.
또한 상술한 설명에서, 암호화된-프로그램 생성장치는 (i)개개의 암호화 키 생성부(1301), (ii)삽입 로케이션 정보를 생성하는 컴포넌트, 및 (iii)암호화된 암호화 키를 저장하는 처리와, 삽입 로케이션 정보를 저장부(16)에 삽입하는 처리를 실행하는 컴포넌트를 포함하지만, 프로그램 로더가 메모리 로케이션 정의부와 함께 그들을 포함하는 것도 허용될 수 있다.
(수정예 6)
본 수정예에서, 부분 프로그램이 공유 메모리(M)에 로케이팅되면, 로케이션 위치가 프로그램 로케이션 영역 내에서 동적으로 결정될 수 있다. 본 수정예에서, 로케이션 위치가 메모리 로케이션 정보에 따라 고정되는 실시예와는 달리, 각 부분 프로그램은 실행시마다 다른 위치에 로케이트된다. 따라서, 메모리에 로딩된 부분 프로그램을 불법적으로 참조하고 위조할 위험성이 줄어들어, 보안보호가 보다 확고하게 보증된다.
(구성)
도 14는 본 수정예에서의 프로그램 로더(1C)의 구성을 도시한 블록도이다. 실시예에서의 프로그램 로더(1)와 동일한 구성요소에는 동일한 참조번호를 부여한다. 프로그램 로더(1C)의 구조적 특징은 메모리 로케이션 정보 해독부(152) 대신에 메모리 로케이션 결정부(140)를 구비하고, 메모리 로케이션 정보 대신에 메모리 관리정보(160)를 갖는다는 점에 있다.
메모리 로케이션 결정부(140)는 부분 프로그램이 호출되어 공유 메모리(M)에 로케이트될 때, 제어부(11)로부터의 명령에 따라 부분 프로그램에 대한 메모리 로케이션 위치를 결정하고, 그 결정된 위치를 제어부(11)에 통지한다. 메모리 로케이션 결정부(140)는 또한 메모리 내의 부분 프로그램의 메모리 로케이션 위치를 관리하기 위해 사용되는 메모리 관리정보를 생성하고 갱신한다. 다음으로 프로그램 로케이션의 특정 예를 참조하여 메모리 로케이션 결정부(40)에 의해 실행되는 처리에 대해 보다 상세히 설명하기로 한다.
도 15의 (A) 내지 (E)는 해독된 부분 프로그램이 프로그램의 해독시 공유 메모리(M) 내의 프로그램 로케이션 영역(150)에 어떻게 로케이트되는지를 보여주는 개념도이다. 메모리 로케이션 결정부(140)는 프로그램 로케이션 영역(150)에 새롭게 로케이트되는 부분 프로그램을 위해 충분히 큰 공간영역이 있는지를 검색하여, 공간영역의 어드레스를 로케이션 위치로서 제어부(11)에 알려준다. 반대로, 그러한 공간영역이 없으면, 메모리 로케이션 결정부(140)는 로케이트된 부분 프로그램이 새로운 부분 프로그램에 의해 오버라이트되도록, 프로그램 로케이션 영역(150)에 이미 로케이트된 부분 프로그램을 위한 로케이션 영역의 어드레스를 제어부(11)에 알려준다.
도 16은 도 15에 도시된 바와 같은 부분 프로그램을 위한 것으로서, 메모리 로케이션 결정부(140)에 의해 순차적으로 생성되거나 갱신된 메모리 관리정보(160)의 콘텐츠를 도시한 도면이다. 메모리 관리정보(160)는 (i)목표가 되는 부분 프로그램을 나타내는 식별정보(1601), (ii)부분 프로그램의 저장위치(그 시작 어드레스)를 나타내는 시작 어드레스(1602), (iii)크기, 및 (iv)공유 메모리(M)에 로케이트되는 X번째 부분 프로그램에서 처럼 X를 나타내는 로케이션 순서(1604)를 포함한다. 메모리 로케이션 결정부(140)는 새롭게 로케이트되는 부분 프로그램에 대해 새로운 메모리 관리정보를 생성하고, 새로운 것에 의해 오버라이트되는 부분 프로그램에 대한 메모리 관리정보를 삭제하므로, 프로그램 로케이션 영역(150)에는 현재 로케이트된 부분 프로그램의 수 만큼의 메모리 관리정보가 존재하게 된다.
도 15A에 도시된 바와 같이, 부분 프로그램 A, B, 및 C는 프로그램 로케이션 영역(150)에 순차적으로 로케이트된다. 이에 따라, 메모리 로케이션 결정부(140)는 부분 프로그램의 각각에 대응하는 메모리 관리정보를 순차적으로 생성한다(도 16의 A). 비록 제일 처음으로 로케이트되는 부분 프로그램 A가 도면에서 프로그램 로케이션 영역(150)의 처음에 로케이트되어 있다 하더라도, 그 위치는 처음으로 고정될 필요는 없다는 점에 유념해야 한다. 그 이유는, 비록 그 위치가 처음으로 고정되어 있더라도 제일 처음의 부분 프로그램과 다음의 일부 부분 프로그램은 그들이 실행될 때마다 거의 동일한 위치에 필연적으로 로케이트될 것이므로, 본 수정예의 목적은 달성되지 않으며, 실행시마다 로케이션 위치를 동적으로 변경함으로써 불법적인 참조가 어렵게 되게 하기 때문이다. 결국, 제일 처음의 부분 프로그램이 로케이트될 때, 그 위치가 난수 등을 이용하여 결정된 오프셋 만큼 슬라이딩될 것이므로, 프로그램 로케이션 영역(150)의 처음으로 로케이션 위치를 고정하는 것을 피할 수 있게 된다.
도 15A에 도시된 상태에서, 부분 프로그램 D는 부분 프로그램 C에 의해 호출된다. 이 때, 부분 프로그램 D를 로케이트할 충분히 큰 공간영역이 없으므로, 메모리 로케이션 결정부(140)는 이 때 가장 긴 시간 동안 메모리(M)에 존재하는 부분 프로그램 A가 부분 프로그램 D에 의해 오버라이트되도록 부분 프로그램 D의 메모리 로케이션 위치를 결정한다. 즉, 메모리 로케이션 결정부(140)는 부분 프로그램 A와 동일한 값으로서 메모리 내의 부분 프로그램 D의 시작위치를 결정한다. 도 15의 (B)는 이러한 메모리 로케이션 정보에 따라 부분 프로그램이 로케이트되는 상태를 도시한 도면이다. 부분 프로그램 D의 크기가 크기 때문에 부분 프로그램 D의 나중 1/2은 부분 프로그램 B의 처음 1/2 위로 연장된다. 그 점에서, 메모리 로케이션 결정부(140)는 부분 프로그램 A와 B에 대한 메모리 관리정보를 삭제하고, 부분 프로그램 D에 관한 메모리 관리정보를 생성한다.
이어서, 메모리 로케이션 결정부(140)는 부분 프로그램 E(도 15의 (C)), 부분 프로그램 F(도 15의 (D)) 및 부분 프로그램 G(도 15의 (E))에 대한 메모리 로케이션 위치들을 위의 순서대로 결정한다. 따라서, 메모리 로케이션 결정부(140)는 또한 메모리 관리정보(160)를 도 16의 (B)와 도 16의 (C)에 도시된 것으로 순차적으로 갱신한다.(도 16의 (B)는 도 15의 (C)에, 도 16의 (C)는 도 15의 (E)에 대응함)
부분 프로그램이 메모리 내에 로케이트되어 다른 부분 프로그램을 오버라이트하면, 그 부분 프로그램이 반드시 도 15의 (B)에 도시된 바와 같이 배열될 필요는 없다. 이 경우에, 메모리 로케이션 정보는, 가장 긴 시간동안 메모리 내에 로케이트되는 부분 프로그램이 다른 부분 프로그램에 의해 그것의 처음 위치로부터 오버라이트되도록 결정된다. 이와 달리, 로케이션 위치는, 부분 프로그램이 다른 부분 프로그램에 의해 중간부분 부터 시작하여 오버라이트되는, 도 15의 (D)에 도시된 바와 같이 결정될 수 있다. 이 배열은 2이상의 부분 프로그램이 1회의 오버라이팅으로 하나의 부분 프로그램에 의해 (완전히 또는 부분적으로) 삭제되도록 만들어진다. 도 15의 (D)에서, 부분 프로그램 D는, 부분 프로그램 D가 부분 프로그램 E의 처음 1/2을 오버라이트하기 위해 부분 프로그램 D보다 작은 부분 프로그램 F에 의해 중간부터 시작하여 오버라이트되도록 배열되어 있다.
이러한 방식으로 배열함으로써, 비록 메모리(M)의 콘텐츠가 도 15의 (D) 단계에서 불법적으로 참조되더라도, 예를 들어 완전하게 참조될 수 있는 부분 프로그램만이 부분 프로그램 F가 된다. 만약, 부분 프로그램 D가 부분 프로그램 F에 의해 처음부터 오버라이트되면, 부분 프로그램 F뿐아니라 부분 프로그램 E도 완전하게 참조될 것이다. 메모리 로케이션 결정부(140)는 도 15의 (D)에 도시된 오버라이팅 처리가 필수적인지의 여부를 판정하고, 이 판정은 오버라이팅이 시작되어야 하는 경우, 프로그램 로케이션 영역 내의 부분 프로그램 D 및 다음의 부분 프로그램 E의 위치와, 다른 것들을 오버라이트하는 부분 프로그램 F의 크기로부터 행해진다.
상술한 처리를 수행하기 위해, 메모리 로케이션 결정부(140)는 제어부(11)로부터 메모리에 로케이트되는 부분 프로그램의 크기와 식별정보를 취득한다는 점에 유념해야 한다. 메모리(M)내의 프로그램 로케이션 영역의 시작 어드레스 및 크기와 같은 정보 또한 미리 저장된다.
(동작)
다음으로 부분 프로그램의 메모리 로케이션을 결정하는 처리에 있어서의 프로그램 로더(1C)(특히, 메모리 로케이션 결정부(140))의 동작에 대해 설명하기로 한다.
도 17은 부분 프로그램의 메모리 로케이션을 결정하는 처리의 흐름을 도시한 흐름도이다. 도면에 도시된 처리는 프로그램 로더(1C)에 의해 실행되는 프로그램 해독처리와 메모리 로케이션 처리의 일부분이라는 점에 유념해야 한다. 도면에서의 처리는 도 5의 단계 S509 내지 S511에 도시된, 실시예에서의 프로그램 로더(1)에 의해 실행되는 처리와는 다른 것이다.
우선, 부분 프로그램이 로딩될 필요가 있다는 요청을 수신한 제어부(11)는 (i)메모리 로케이션을 결정하기 위한 요청, (ii)부분 프로그램의 식별정보, 및 (iii)부분 프로그램의 크기를 메모리 로케이션 결정부(140)에 송신한다(S1701). 요청에 앞서, 제어부(11)는 2차 저장장치(S)로부터 부분 프로그램의 판독을 마치고, 해독도 하는 것으로 가정한다.
메모리 로케이션 결정부(140)는 로케이트되는 부분 프로그램의 크기(1603)와 메모리 관리정보(160)에 포함된 시작 어드레스(1602)를 참조하고, 프로그램 로케이션 영역(150) 내의 공간 영역의 위치와 크기를 검사한다. 메모리 로케이션 결정부(140)는 그 크기와 제어부(11)로부터 취득된 부분 프로그램의 크기를 비교하여, 부분 프로그램을 로케이트할 충분히 큰 공간영역이 있는지를 판정한다(S1702).
판정결과, 충분히 큰 공간영역이 있으면(S1703: YES), 메모리 로케이션 결정부(140)는 공간영역의 어드레스를 제어부(11)에 통지하고(S1704), 부분 프로그램에 대한 메모리 관리정보를 생성한다(S1708). 메모리 관리정보(160) 중에서, 식별정보(1601)와 크기(1603)에 관하여는 제어부(11)로부터 수신된 정보가 그대로 사용되고, 시작 어드레스(1602)에 관하여는 제어부(11)에 통지된 어드레스가 사용될 것이다. 메모리 결정부(140)는 내장 카운터를 사용하여 로케이트되는 부분 프로그램의 수를 카운트하고, 그 카운트 값을 이용하여 "로케이트되는 순서(1604)"의 값을 규정한다.
판정결과, 충분히 큰 공간영역이 없으면(S1703: NO), 메모리 로케이션 결정부(140)는 메모리 관리정보(160)에 포함된, 로케이트되는 순서(1604)를 참조하여, 메모리 내에 현재 존재하는 부분 프로그램 중에서 가장 빠른 것(즉, 로케이트되는 순서(1604)로서 가장 작은 값을 갖는 것)을 삭제할 부분 프로그램으로서 선택한다(S1705). 이어서, 메모리 로케이션 결정부(140)는 삭제될 부분 프로그램이 로케이트되는 영역의 어드레스를 제어부(11)에 통지한다(S1706).
새롭게 로케이트되는 부분 프로그램의 크기가 삭제될 부분 프로그램보다 크면(도 15의 (B) 참조), 삭제될 부분 프로그램의 시작 어드레스는 제어부(11)에 통지될 것이다. 반대로, 새롭게 로케이트되는 부분 프로그램의 크기가 삭제될 부분 프로그램보다 작으면(도 15의 (D) 참조), 삭제될 부분 프로그램이 로케이트되는 영역의 중간쯤의 어드레스가 제어부(11)에 통지될 것이다. 이미 언급한 바와 같이, 이미 메모리 내에 로케이트된 복수의 부분 프로그램은 하나의 부분 프로그램을 로딩함으로써 오버라이트되는 것이 더 좋기 때문에 이러한 방식으로 배열된다. 어드레스의 값은, 새롭게 로케이트된 부분 프로그램이 삭제되는 부분 프로그램과 다음 부분 프로그램 사이의 경계의 양쪽에 존재하도록 규정된다(즉, 도 15의 (C)에서 부분 프로그램 D와 E). 이 값은 삭제되는 부분 프로그램의 마지막 어드레스, 다음 부분 프로그램의 시작 어드레스, 및 새롭게 로케이트되는 부분 프로그램의 크기로 부터 구할 수 있다.
또한, 메모리 로케이션 결정부(140)는 새롭게 로케이트되는 부분 프로그램의 메모리 관리정보를 생성하고(S1708), 새롭게 로케이트되는 부분 프로그램에 의해 오버라이트되는 부분 프로그램의 메모리 로케이션 정보를 삭제한다(S1707).
(요약)
지금까지 설명한 바와 같이, 본 수정예의 프로그램 로더(1C)에 따라 메모리 로케이션 위치가 동적으로 결정되기 때문에, 메모리에 로딩되는 부분 프로그램이 불법적으로 참조되거나 위조될 위험성이 줄어들고, 따라서 보안보호가 더욱 확고해 진다.
상술한 설명에서, 이미 존재하고 있는 부분 프로그램은 새롭게 로케이트되는 부분 프로그램에 의해 오버라이트되지만, 이미 존재하고 있는 프로그램이 먼저 삭제된다면, 새롭게 로케이트되는 부분 프로그램은 삭제로부터 취득된 영역에 로케이트된다는 점에 유념해야 한다. 오버라이팅 처리를 사용할 때, 이미 존재하고 있는 부분 프로그램이 새롭게 로케이트되는 부분 프로그램보다 크면, 이미 존재하고 있는 부분 프로그램의 일부가 메모리에 남게 될 것이나, 부분 프로그램을 로케이팅하기 전에 삭제가 발생되게 하는 처리를 이용하면, 부분 프로그램의 일부가 남게 되는 상황을 피할 수 있다. 또한 부분 프로그램의 일부가 남게 되는 상황을 피하기 위해, 먼저 새롭게 로케이트되는 부분 프로그램으로 오버라이트 처리를 실행한 다음, 남아있는 부분을 더미 데이터로 오버라이트하는 것도 가능하다. 더미 데이터에 의해 오버라이트되는 영역은, 이미 존재하고 있는 부분 프로그램과 새롭게 로케이트되는 부분 프로그램의 시작위치와 마지막 위치로부터 판정될 것이다.
또, 상술한 설명에서, 로케이션 영역은 프로그램이 실행될 때마다 프로그램 로케이션 내에서 동적으로 변경되지만, 프로그램이 실행될 때마다 프로그램 로케이션 영역의 어드레스가 변경되도록 배열하는 것도 허용할 수 있다. 이러한 경우, 프로그램의 실행이 시작되면, 제어부(11)는 프로그램 로케이션 영역의 어드레스를 결정하여, 메모리 로케이션 결정부에 통지한다. 이러한 방식에 의해 프로그램 로케이션 영역의 콘텐츠를 불법적으로 참조하는 것이 훨씬 더 어렵게 되므로, 보안보호가 향상된다.
나아가, 프로그램 로케이션 영역의 크기를 임의로 설정하는 것도 허용할 수 있다. 프로그램 로케이션 영역이 크기가 작으면, 거기에 로케이트되는 프로그램의 수는 그 만큼 작으므로, 비록 불법적인 참조가 발생하더라도 누설되는 정보는 제한된다.
본 수정예는 그 목적이 "부분 프로그램의 로케이션 위치가 고정되기 때문에 불법적인 참조가 쉬워진다"는 상황을 방지하기 위한다는 점에서 수정예 2 및 3과 동일하다. 따라서, 본 수정예와 이들 수정예의 각각을 결합하는 것도 또한 가능하다. 즉, 본 수정예에서 수정예 2에 나타난 방법을 이용하여 프로그램이 실행될 때마다 프로그램 로케이션 영역의 어드레스를 변경하는 것도 허용할 수 있다. 또한 이미 존재하고 있는 부분 프로그램이 새롭게 로케이트되는 부분 프로그램에 의해 오버라이트되고, 도 15의 (B) 및 (D)에 도시된 바와 같이 이미 존재하고 있는 프로그램의 일부가 아직 남아있는 경우에는, 수정예 3에서와 같이 더미 데이터로 아직 남아있는 프로그램의 일부를 오버라이트하는 것이 허용될 수 있다. (더미 데이터에 의해 오버라이트되는 영역은 이미 존재하고 있는 부분 프로그램의 시작위치 및 크기와 새롭게 로케이트되는 부분 프로그램의 시작위치 및 크기로부터 판정될 것이다.)
본 발명의 암호화된-데이터 해독장치는 해독처리의 도중과 그 후에 실행과 참조의 목적을 위해 해독되는 데이터의 보안보호를 일반적으로 향상시키는데 유용하다.
(부가정보)
다음으로 지금까지 설명된 실시예와 수정예에 관한 주의사항에 대해 설명하기로 한다.
실시예에서, 해독 지원 프로그램에 의해 해독되는 프로그램만 부분 프로그램으로 분할되어 보안보호를 실현하고 있으나, 해독 지원 프로그램 부분 프로그램의 그룹으로서 암호화되고, 해독되어 메모리에 로딩되며, 부분 프로그램의 유닛에서 실행되는 것도 허용될 수 있다. 이러한 방식으로 해독처리에 사용되는 암호화 키와 알고리즘의 콘텐츠가 메모리 내의 해독 지원 프로그램으로부터 판독될 위험성을 줄일 수 있으므로, 더욱 높은 레벨의 보안보호가 실현된다.
실시예에서 설명된 처리에 더하여, 각 부분 프로그램이 메모리(M)에 로딩된 후 실행되는 동안 변경되는지의 여부를 검사하기 위해, 메모리(M)에 로딩되는 시간에서의 각 부분 프로그램의 콘텐츠는 실행 완료시의 것들과 비교된다. 변경이 검출되면, 처리가 중단되고, 해독된 데이터는 삭제된다.
상술한 암호화 키는 예를 들면, DES 등의 암호화 방법에 사용되는 암호화 키이며, 암호화 키가 보통 프로그램의 미리 정해진 영역에 삽입되거나 또는 사용자가 볼 수 없는 영역이나 파일에 감추어지도록 배열되지만, 암호화 방법은 다른 것일 수 있다. 암호화 방법을 단순화하기 위해, 그 값들을 배타적 논리합으로 계산하는 것도 허용가능하다. 키를 숨기는 방법은 상기한 어느 하나로 한정되는 것이 아니다.
또한, 부분 프로그램 해독부, 저장 어드레스 해독부, 및 메모리 로케이션 정보 해독부는 함께 단일 컴포넌트를 구성할 수도 있고, 아니면 개개의 컴포넌트일 수도 있다. 이들이 함께 단일 컴포넌트를 구성하면, 해독처리의 요청부는 파라미터로서 해독될 데이터의 종류를 나타내는 정보를 규정하고, 해독부는 규정된 데이터 종류에 따라 정보를 참조함으로써 해독처리를 실행한다.
또한, 해독목표가 프로그램인 것을 상정하여 설명하였지만, 해독목표가 프로그램이 아닌 다른 데이터도 가능하다.
또한, 부분 프로그램을 취득하기 위해 프로그램이 모듈 단위 또는 루틴 단위로 분할되도록 구성되는 것도 가능하다. 이와 달리, DLL 등의 미리 작성된 일부 부분이 조합되어 단일 프로그램으로서 동작하는 경우, 이들 각 부분은 개별적으로 또는 집합적으로 부분 프로그램으로서 취해질 수 있다. 본 발명의 전제는 복수의 부분 프로그램이 단일 프로그램으로서 집합적으로 동작하는 것이며, 부분 프로그램이 어떻게 생성되느냐 하는 것은 본질적인 문제가 아니다.
또한, 본 실시예 및 수정예의 장치 및 디바이스의 각각은 컴퓨터에 의해 실행되는 프로그램으로서 실현될 수 있다. 이들 각각이 프로그램으로서 실현되면 암호화된 데이터 해독 프로그램 자체가 암호화된 부분 프로그램의 그룹으로서 보존되고, 부분 프로그램 단위로 해독되어 실현되도록 배열될 수 있다.
실시예 및 수정예에 관해 제공된 특징적인 구성은 비호환성이 존재하지 않는 한 조합하여 사용될 수 있다.

Claims (25)

  1. 암호화되어 저장된 프로그램을 컴퓨터 시스템에서의 실행을 목적으로 해독하는 암호화된-데이터 해독장치로서,
    상기 프로그램을 암호화되는 복수의 부분 프로그램으로서 저장하는 저장부와;
    상기 부분 프로그램의 각각에 대하여 (i)해독 타이밍을 나타내는 타이밍 정보와, (ii)해독 후 각 부분 프로그램이 로케이트되는 로케이션 영역, -이 로케이션 영역은 상기 프로그램의 실행을 위해 사용되는 메모리 공간에 포함됨-,을 나타내는 위치정보를 포함하는 메모리 로케이션 정보를 생성하는 메모리 로케이션 정보 생성부와;
    상기 타이밍 정보에 따라 상기 부분 프로그램들을 상기 저장부로부터 순차적으로 판독하여 해독하는 해독부와;
    상기 위치정보에 의해 나타나는 각 로케이션 영역에 상기 해독된 부분 프로그램의 각각을 로케이트시키는 로딩부를 포함하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  2. 제 1 항에 있어서,
    상기 위치정보는, 상기 부분 프로그램들 중 적어도 하나의 각각에 대하여, 하나의 부분 프로그램이 그 해독 전에, 하나 이상의 다른 부분 프로그램이 미리 로케이트되어 있는 로케이션 영역에 오버라이트된 것을 나타내는 것을 특징으로 하는 암호화된-데이터 해독장치.
  3. 제 1 항에 있어서,
    상기 위치정보는 암호화 후 저장되며,
    상기 로딩부는 상기 해독된 부분 프로그램 각각이 상기 해독된 위치정보에 따라 각 로케이션 영역에 로케이트되도록 상기 위치정보를 해독하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  4. 제 2 항에 있어서,
    각 부분 프로그램을 로케이션 영역에 로케이트할 때, 상기 로케이션 영역의 크기가 상기 부분 프로그램의 크기보다 크면, 상기 로딩부는 더미 데이터를 공간영역에 기입하고, 이 공간영역은 상기 두 크기의 차이 때문에 오버라이트되지 않는 상기 로케이션 영역의 일부분인 것을 특징으로 하는 암호화된-데이터 해독장치.
  5. 제 1 항에 있어서,
    하나의 로케이션 영역에 로케이트된 하나의 부분 프로그램이 다른 부분 프로그램이 상기 로케이션 영역에 로케이트되기 전에 실행을 완료한 후, 미리 정해진 길이의 시간이 경과한 때, 상기 로딩부는 상기 하나의 부분 프로그램을 삭제하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  6. 제 1 항에 있어서,
    프로그램 암호화의 처리 중에, 다른 부분 프로그램의 해독처리에 사용되는 암호화 키의 일부 또는 전부를 상기 부분 프로그램의 적어도 하나에 미리 삽입하는 키 삽입부를 추가로 포함하고,
    상기 해독부는 이미 해독되어 상기 메모리 공간에 로케이트된 상기 적어도 하나의 부분 프로그램에 삽입된 상기 암호화 키를 이용하여, 상기 다른 부분 프로그램의 해독처리를 수행하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  7. 제 1 항에 있어서,
    프로그램 암호화의 처리 중에, 다른 부분 프로그램의 해독처리에 사용되는 암호화 키의 일부 또는 전부를 생성하는 암호화 키 생성 프로그램을 상기 부분 프로그램의 적어도 하나에 미리 삽입하는 프로그램 삽입부를 추가로 포함하고,
    상기 해독부는 이미 해독되어 상기 메모리 공간에 로케이트된 상기 적어도 하나의 부분 프로그램에 삽입된 상기 암호화 키 생성프로그램의 실행을 통해 생성된 암호화 키를 이용하여, 상기 다른 부분 프로그램의 해독처리를 수행하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  8. 제 1 항에 있어서,
    프로그램 암호화의 처리 중에, 다른 부분 프로그램의 해독처리에 사용되는 암호화 키를 해독하기 위해 사용되는 하나의 키에 대한 암호화 키를 상기 부분 프로그램의 적어도 하나에 미리 삽입하는 하나의 키에 대한 암호화 키 삽입부를 추가로 포함하고,
    상기 해독부는 이미 해독되어 상기 메모리 공간에 로케이트된 상기 적어도 하나의 부분 프로그램으로부터 취득된 상기 하나의 키에 대한 암호화 키로 해독되는 암호화 키를 이용하여 상기 다른 부분 프로그램의 해독처리를 수행하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  9. 제 1 항에 있어서,
    상기 로딩부는 처음 해독되는 상기 부분 프로그램들 중의 하나가 상기 메모리 공간에 로케이트되기 전에 각 로케이션 영역의 절대 어드레스를 동적으로 결정하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  10. 제 1 항에 있어서,
    상기 해독부는 해독 지원 프로그램을 이용하여 각 부분 프로그램을 해독하고,
    상기 암호화된-데이터 해독장치는 해독 지원 프로그램의 인증을 확인하는 해독 프로그램 확인부를 추가로 포함하며,
    상기 해독부는 상기 해독 프로그램 확인부로 하여금 각 부분 프로그램의 해독 전에 상기 해독 지원 프로그램의 인증을 확인하도록 하고, 상기 인증이 확인된 후에만 각 부분 프로그램을 해독하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  11. 제 1 항에 있어서,
    인터럽션을 검출할 때 상기 메모리 공간에 이미 로케이트된 하나 이상의 부분 프로그램을 삭제함으로써 불법 액세스 방지 처리를 수행하는 불법 액세스 방지부를 추가로 포함하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  12. 제 11 항에 있어서,
    상기 불법 액세스 방지부는 불법 액세스 처리를 수행할 때 실행되는 더미 프로그램을 구비하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  13. 제 11 항에 있어서,
    상기 불법 액세스 방지부는, 정당한 프로그램 검사에 대한 인터럽션이 발생하는 하나 이상의 위치에 대한 등록을 미리 수신하고, 상기 검출된 인터럽션이 상기 등록된 위치들 중의 하나에서 발생하면 상기 불법 액세스 방지 처리를 수행하지 않는 것을 특징으로 하는 암호화된-데이터 해독장치.
  14. 제 1 항에 있어서,
    암호화되고, 상기 부분 프로그램의 각각에 대하여 상기 저장부 내의 저장위치를 나타내는 저장위치정보를 저장하는 저장위치정보 저장부를 추가로 포함하고,
    상기 해독부는, 상기 해독부가 상기 저장위치정보 저장부로부터 판독하여 해독한 상기 저장위치정보에 따라 상기 부분 프로그램의 각각을 상기 저장부로부터 판독하여 해독하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  15. 제 14 항에 있어서,
    상기 저장위치정보의 인증여부를 판정하는 저장위치정보 인증부를 추가로 포함하며,
    상기 저장위치정보 인증부가 상기 저장위치정보를 인증하였음을 판정하면, 상기 해독부가 상기 저장부로부터 상기 부분 프로그램의 각각을 판독하여 해독하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  16. 암호화되어 저장된 프로그램을 컴퓨터 시스템에서의 실행을 목적으로 해독하는 암호화된-데이터 해독장치로서,
    상기 프로그램을 암호화되는 복수의 부분 프로그램으로서 저장하는 저장부와;
    상기 저장부로부터 실행목표인 상기 부분 프로그램들 중의 하나를 판독하고, 상기 판독된 부분 프로그램을 해독하는 해독부와;
    상기 실행목표인 상기 부분 프로그램의 로케이션 위치, -이 로케이션 위치는 상기 프로그램의 실행을 위해 사용되는 메모리 공간 내의 어드레스를 나타냄-, 를 동적으로 결정하는 메모리 로케이션 결정부와;
    상기 해독된 부분 프로그램을 상기 메모리 로케이션 결정부에 의해 결정된 로케이션 위치에 로케이트시키는 로딩부를 포함하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  17. 제 16 항에 있어서,
    상기 메모리 로케이션 결정부는, 하나의 부분 프로그램이, 상기 메모리 공간에 포함되고 하나 이상의 다른 프로그램이 이미 로케이트되어 있는 영역에 오버라이트되도록, 상기 부분 프로그램들 중의 적어도 하나의 각각에 대한 로케이션 위치를 결정하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  18. 제 16 항에 있어서,
    상기 프로그램의 실행을 시작하기 전에, 상기 메모리 공간의 시작 어드레스와 크기 중의 하나 또는 모두를 동적으로 결정하는 실행목적 메모리 결정부를 추가로 포함하는 것을 특징으로 하는 암호화된-데이터 해독장치.
  19. 제 16 항에 있어서,
    하나 이상의 다른 부분 프로그램이 이미 로케이트되어 있는 영역에 하나의 부분 프로그램이 오버라이트되도록, 상기 메모리 로케이션 결정부가 상기 하나의 부분 프로그램의 로케이션 위치를 결정하면, 상기 하나의 부분 프로그램이 상기 메모리 공간에 가장 먼저 로케이트되어 있는 부분 프로그램을 오버라이트하도록, 상기 로케이션 위치가 결정되는 것을 특징으로 하는 암호화된-데이터 해독장치.
  20. 제 16 항에 있어서,
    하나 이상의 다른 부분 프로그램이 이미 로케이트되어 있는 영역에 하나의 부분 프로그램이 오버라이트되도록, 상기 메모리 로케이션 결정부가 상기 하나의 부분 프로그램의 로케이션 위치를 결정하면, 로케이트되어 있는 2이상의 다른 부분 프로그램 위에 상기 부분 프로그램이 부분적으로 또는 완전히 연장되도록, 상기 로케이션 위치가 결정되는 것을 특징으로 하는 암호화된-데이터 해독장치.
  21. 컴퓨터 시스템에서 실행되는 프로그램을 암호화하는 암호화된-프로그램 생성장치로서,
    상기 프로그램을 상기 프로그램의 실행을 위한 메모리 공간에 복수의 부분 프로그램 단위로 로케이트하기 위해, 상기 각 부분 프로그램에 대한 메모리 로케이션 정보, -이 메모리 로케이션 정보는 (i)해독의 타이밍을 나타내는 타이밍 정보, 및 (ii)상기 메모리 공간에 포함되며 해독후 각 부분 프로그램이 로케이트되는 로케이션 영역을 나타내는 위치정보를 포함함-, 를 생성하는 메모리 로케이션 정보 생성부와;
    상기 프로그램을 상기 복수의 부분 프로그램 단위로 암호화하는 프로그램 암호화부를 포함하고,
    상기 메모리 로케이션 정보 생성부는, 상기 부분 프로그램의 적어도 하나의 각각에 대하여 하나의 부분 프로그램이 상기 하나의 부분 프로그램이 해독되기 전에 하나 이상의 다른 부분 프로그램이 로케이되는 로케이션 영역에 오버라이트되도록, 신뢰성에 우선순위를 부여하면서 상기 메모리 로케이션 정보의 콘텐츠를 결정하는 것을 특징으로 하는 암호화된-프로그램 생성장치.
  22. 제 21 항에 있어서,
    상기 프로그램 암호화부는, 상기 부분 프로그램이 암호화되기 전에 상기 부분 프로그램의 적어도 하나의 각각에 (a)다른 부분 프로그램의 해독처리에 사용되는 암호화 키 또는 (b)상기 암호화키를 취득하는데 필요한 데이터를 삽입하며,
    상기 다른 부분 프로그램이 해독될 필요가 있으면, 상기 암호화 키 또는 상기 데이터를 사용하여 취득된 암호화 키가 사용되며, 상기 암호화 키 또는 데이터는 이미 해독된 상기 부분 프로그램으로부터 취득되는 것을 특징으로 하는 암호화된-프로그램 생성장치.
  23. 암호화되어 저장된 프로그램을 컴퓨터 시스템에서의 실행을 목적으로 해독하는 암호화된-데이터 해독방법으로서,
    상기 프로그램을 암호화되는 복수의 부분 프로그램으로서 저장하는 저장단계와;
    상기 부분 프로그램의 각각에 대하여 (i)해독 타이밍을 나타내는 타이밍 정보와, (ii)상기 프로그램의 실행을 위해 사용되는 메모리 공간에 포함되며, 해독 후 각 부분 프로그램이 로케이트되는 로케이션 영역을 나타내는 위치정보를 포함하는 메모리 로케이션 정보를 생성하는 메모리 로케이션 정보 생성단계와;
    상기 저장부로부터 암호화 목표인 상기 부분 프로그램들 중의 하나를 판독하고, 상기 타이밍 정보에 따라 상기 부분 프로그램을 해독하는 해독단계와;
    상기 위치정보에 의해 나타나는 로케이션 영역에 상기 해독된 부분 프로그램을 로케이트시키는 로딩단계를 포함하는 것을 특징으로 하는 암호화된-데이터 해독방법.
  24. 암호화되어 저장된 프로그램을 컴퓨터 시스템에서의 실행을 목적으로 해독하는 암호화된-데이터 해독방법으로서,
    상기 프로그램을 암호화되는 복수의 부분 프로그램으로서 저장하는 저장부로부터, 실행목표인 상기 부분 프로그램들 중의 하나를 판독하고, 상기 판독된 부분 프로그램을 해독하는 해독단계와;
    상기 실행목표인 상기 부분 프로그램의 로케이션 위치, -이 로케이션 위치는 상기 프로그램의 실행을 위해 사용되는 메모리 공간 내의 어드레스를 나타냄-, 를 동적으로 결정하는 메모리 로케이션 결정부와;
    상기 해독된 부분 프로그램을 상기 메모리 로케이션 결정단계에서 결정된 로케이션 위치에 로케이트시키는 로딩단계를 포함하는 것을 특징으로 하는 암호화된-데이터 해독방법.
  25. 암호화되어 저장된 프로그램을 컴퓨터 시스템에서의 실행을 목적으로 해독하는 암호화된-데이터 해독장치로서 컴퓨터를 동작하게 하는 프로그램으로서,
    상기 암호화된-데이터 해독장치는,
    상기 프로그램을 암호화되는 복수의 부분 프로그램으로서 저장하는 저장부와;
    상기 부분 프로그램의 각각에 대하여 (i)해독 타이밍을 나타내는 타이밍 정보와, (ii)해독 후 각 부분 프로그램이 로케이트되는 로케이션 영역, -이 로케이션 영역은 상기 프로그램의 실행을 위해 사용되는 메모리 공간에 포함됨-,을 나타내는 위치정보를 포함하는 메모리 로케이션 정보를 생성하는 메모리 로케이션 정보 생성부와;
    상기 타이밍 정보에 따라 상기 부분 프로그램들을 상기 저장부로부터 순차적으로 판독하여 해독하는 해독부와;
    상기 위치정보에 의해 나타나는 각 로케이션 영역에 상기 해독된 부분 프로그램의 각각을 로케이트시키는 로딩부를 포함하는 것을 특징으로 하는 프로그램.
KR10-2004-7016846A 2002-08-01 2003-07-25 암호화된 데이터를 해독하고 해독된 데이터를 실행을 위해사용되는 메모리 공간에 로케이트시키는 장치 및 방법 KR20050023248A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2004-7016846A KR20050023248A (ko) 2002-08-01 2003-07-25 암호화된 데이터를 해독하고 해독된 데이터를 실행을 위해사용되는 메모리 공간에 로케이트시키는 장치 및 방법

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JPJP-P-2002-00225289 2002-08-01
JPJP-P-2002-00359072 2002-12-11
JPJP-P-2003-00157255 2003-06-02
KR10-2004-7016846A KR20050023248A (ko) 2002-08-01 2003-07-25 암호화된 데이터를 해독하고 해독된 데이터를 실행을 위해사용되는 메모리 공간에 로케이트시키는 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20050023248A true KR20050023248A (ko) 2005-03-09

Family

ID=41784469

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7016846A KR20050023248A (ko) 2002-08-01 2003-07-25 암호화된 데이터를 해독하고 해독된 데이터를 실행을 위해사용되는 메모리 공간에 로케이트시키는 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20050023248A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140113578A (ko) * 2013-03-15 2014-09-24 인텔 코오퍼레이션 디지털 콘텐츠 보호 장치 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140113578A (ko) * 2013-03-15 2014-09-24 인텔 코오퍼레이션 디지털 콘텐츠 보호 장치 및 방법

Similar Documents

Publication Publication Date Title
EP1466233B1 (en) Apparatusses and methods for decrypting encrypted blocks of data and locating the decrypted blocks of data in memory space used for execution
JP4475894B2 (ja) 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法
US20210294879A1 (en) Securing executable code integrity using auto-derivative key
US6983374B2 (en) Tamper resistant microprocessor
EP1698970B1 (en) Method and system for encoding metadata
JP3880933B2 (ja) 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
EP2420949B1 (en) Information processing system, information processing method, information processing program, computer readable medium and computer data signal
JP6129702B2 (ja) 情報処理装置、情報処理システム、プログラム
US7299363B2 (en) Method for using shared library in tamper resistant microprocessor
KR101216995B1 (ko) 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법
US8516574B2 (en) Software update system, management apparatus, recording medium, and integrated circuit
JP2008503014A (ja) ソフトウェアのセキュリティ確保
US8745735B2 (en) Monitoring system, program-executing device, monitoring program, recording medium and integrated circuit
US20110271350A1 (en) method for protecting software
EP2264640A2 (en) Feature specific keys for executable code
US8495388B2 (en) Method and device for protecting a program comprising a functional block
US10339307B2 (en) Intrusion detection system in a device comprising a first operating system and a second operating system
US20150039900A1 (en) Program execution method and decryption apparatus
KR20050023248A (ko) 암호화된 데이터를 해독하고 해독된 데이터를 실행을 위해사용되는 메모리 공간에 로케이트시키는 장치 및 방법
JP2007156904A (ja) マイコンシステム

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination