KR20080014786A - 컴퓨터시스템 및 프로그램 생성장치 - Google Patents

컴퓨터시스템 및 프로그램 생성장치 Download PDF

Info

Publication number
KR20080014786A
KR20080014786A KR1020077027157A KR20077027157A KR20080014786A KR 20080014786 A KR20080014786 A KR 20080014786A KR 1020077027157 A KR1020077027157 A KR 1020077027157A KR 20077027157 A KR20077027157 A KR 20077027157A KR 20080014786 A KR20080014786 A KR 20080014786A
Authority
KR
South Korea
Prior art keywords
program
secure
management area
secure program
instruction
Prior art date
Application number
KR1020077027157A
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 마츠시타 덴끼 산교 가부시키가이샤
Publication of KR20080014786A publication Critical patent/KR20080014786A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode

Abstract

휴대전화(10)는, OS, 비 시큐어 프로그램, 스위치 디바이스 드라이버 및 시큐어 프로그램에 포함되어 있는 명령을 판독하여 해독하고, 그 해독결과에 따라서 동작하는 CPU(102)와, 관리영역 및 관리 외 영역으로 구성되는 메모리(107)를 구비한다. OS는, 관리영역만을 액세스공간으로 하여, 시큐어 프로그램에 대해서 관리영역에 대한 액세스를 중개하는 명령과, 스위치 디바이스 드라이버에 대해서 시큐어 프로그램으로의 스위치를 지시하는 명령을 포함한다. 비 시큐어 프로그램은 OS를 통해서 관리영역에 액세스하는 명령을 포함한다. 스위치 디바이스 드라이버는 OS의 지시에 의해 OS에서 시큐어 프로그램으로 스위치를 행하는 명령을 포함한다. 시큐어 프로그램은 관리 외 영역만을 액세스공간으로 하여 관리 외 영역에 액세스하는 명령을 포함한다.
OS, 스위치 디바이스 드라이버, 시큐어 프로그램, 관리영역, 관리 외 영역, 액세스

Description

컴퓨터시스템 및 프로그램 생성장치{COMPUTER SYSTEM AND PROGRAM CREATING DEVICE}
본 발명은 프로그램의 부정한 개찬(tempering)이나 해석을 방지하는 기술에 관한 것이다.
프로그램의 부정한 개찬이나 해석을 방지하는 기술에 관해서는 종래부터 연구가 이루어지고 있었다.
예를 들어, 패키지로 판매되고 있는 소프트웨어에는 불법복제에 의한 사용을 방지하기 위해 이용자에 대해서 패스워드의 입력을 요구하는 것이 있다. 이와 같은 소프트웨어에는 패스워드가 정당한가 여부를 확인하는 코드(컴퓨터 프로그램)가 포함되어 있다. 부정한 이용자가 이 소프트웨어 내에서 어떤 방법에 의해 패스워드가 정당한가 여부의 확인을 하는 코드가 존재하는 장소를 특정하여, 이 확인을 무효로 하도록 이 코드에 개찬을 부가하였다고 하면, 이 부정한 이용자는 패스워드를 알지 못해도 이 소프트웨어를 사용할 수 있게 된다.
또, 최근, PC(personal computer)로 시청할 수 있는 유료 디지털 콘텐츠가 제공되고 있다. 이 유료 디지털 콘텐츠는 부정하게 복제되는 것을 방지하기 위해 암호화되어 있으며, 이를 시청하기 위한 소프트웨어는 암호를 해독하기 위한 복호 알고리즘 및 복호 키를 포함하고 있다. 만일, 악의가 있는 사용자가 시청용 소프트웨어를 해석하여 복호 키를 특정할 수 있으면 디지털 콘텐츠를 부정하게 복제할 수 있는 소프트웨어의 작성도 가능해진다.
이상과 같이, 소프트웨어의 내용이 해석되면 그 소프트웨어나 디지털 콘텐츠에 의한 비즈니스가 성립하지 않게 된다. 그러므로, 이들 소프트웨어의 해석을 방지하는 기술은 필요불가결하다.
예를 들어, 비 특허문헌 1에는 소프트웨어의 해석을 방지하기 위한 기본 원칙 및 구체적 방법이 기술되어 있다. 또, 비 특허문헌 2에는 소프트웨어의 해석을 방지하기 위한 툴(tool)로 개발된 TRCS(Tamper Resistance Coding System)의 기술과제와 그 대책이 기술되어 있다. 또, 비 특허문헌 3에는 소프트웨어의 위법 복제를 방지하기 위한 소프트웨어적인 보호수단(복제방지기술)이 무효화 되지 않게 하는 기술이 해설되어 있다.
이와 같은 소프트웨어의 부정한 해석이나 개찬을 방지하는 기술을 「내 탬퍼기술(tamper resistant technology)」이라고 부른다.
비 특허문헌 1 : 「역 해석 및 개찬으로부터 소프트웨어를 지킨다」 일경 일렉트로닉스(일본국) 1998. 1. 5. (P 209-220)
비 특허문헌 2 : 「소프트웨어의 내 탬퍼화 기술」 후지 제록스 테크니컬 리포트 No. 13
비 특허문헌 3 : 「더 프로텍트(The Protect)」 수화(秀和) 시스템 출판(일본국) 1985.
특허문헌 1 : 일본국 특개평 11-15705호 공보
복수의 OS가 보급되고 있는 현재는 OS상에서 작동하는 소프트웨어 디버거(software debugger) 등의 해석 툴을 비교적 용이하게 입수할 수 있게 되어 있다.
그러므로 OS에 의존하는 라이브러리(library)를 이용하여, OS상에서 동작하는 소프트웨어가 비밀정보를 제 3자에게 알리지 않고 안전하게 처리를 하도록, 당해 소프트웨어에 대해 안전하게 구현을 한 경우에도, 당해 소프트웨어에 대해서, OS상에서 동작하는 디버거에 대해서 내성이 낮다는 문제점이 있다. 즉, 부정 해석자에 의해, OS상에서 작동하는 디버거를 이용하여, OS에 의존하는 라이브러리를 호출하고 있는 부분이 특정되고, 나아가, 비밀정보가 특정될 위험성이 있다.
본 발명은, 상기 문제점을 감안하여, 부정 해석자에 의한 비밀처리의 특정을 곤란하게 할 수 있는 컴퓨터시스템, 집적회로 및 프로그램 생성장치를 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위해, 본 발명은, 컴퓨터시스템으로, 기본 프로그램, 통상 프로그램 및 시큐어 프로그램(secure program)에 포함되어 있는 각 명령을 판독하여, 해독하고, 그 해독결과에 따라서 동작하는 프로세서와, 관리영역 및 상기 관리영역과는 다른 관리 외 영역으로 구성되는 메모리 수단을 구비하며, 상기 기본 프로그램은, 오퍼레이팅 시스템(operating system)을 구성하고, 상기 통상 프로그램에 대해서 상기 관리영역만을 액세스공간으로 하는 액세스를 중개하는 명령을 포함하며, 상기 통상 프로그램은 상기 기본 프로그램을 통해서 상기 관리영역에 액세스하는 명령을 포함하고, 상기 시큐어 프로그램은, 오퍼레이팅 시스템에 의존하지 않는 프로그램이며, 상기 관리 외 영역만을 액세스공간으로 하여 액세스하는 명령을 포함하는 것을 특징으로 한다.
이 구성에 의하면, 시큐어 프로그램은 오퍼레이팅 시스템인 기존 프로그램에 의존하지 않고 오퍼레이팅 시스템의 관리 외 영역에 액세스할 수 있게 된다. 한편, 통상 프로그램은 오퍼레이팅 시스템인 기본 프로그램을 통해서 오퍼레이팅 시스템의 관리영역에 액세스할 수 있으나, 오퍼레이팅 시스템의 관리 외 영역에 대해서는 액세스할 수 없으므로, 통상 프로그램이, 예를 들어 소프트웨어 디버거인 경우에, 소프트웨어 디버거는 관리 외 영역에 액세스할 수 없어서, 시큐어 프로그램에 의한 관리 외 영역에 대한 액세스에 대해서 안전성을 확보할 수 있다고 하는 우수한 효과를 얻을 수 있다.
여기서, 상기 관리영역은 상기 기본 프로그램 및 상기 통상 프로그램을 더 기억하고 있고, 상기 관리 외 영역은 상기 시큐어 프로그램을 더 기억하고 있으며, 상기 프로세서는, 상기 관리영역에 기억되어 있는 기본 프로그램 및 상기 통상 프로그램에 포함되어 있는 각 명령을 판독하고, 상기 관리 외 영역에 기억되어 있는 상기 시큐어 프로그램에 포함되어 있는 각 명령을 판독하는 것으로 해도 좋다.
이 구성에 의하면, 시큐어 프로그램은 오퍼레이팅 시스템의 관리 외 영역에 기억되어 있으므로, 상기 소프트웨어 디버거는 관리 외 영역에 기억되어 있는 시큐어 프로그램에 액세스할 수 없어서, 시큐어 프로그램 자신의 내용을 안전하게 유지할 수 있다.
여기서, 상기 시큐어 프로그램은 상기 관리 외 영역에 저장되는 비밀로 하여야 하는 정보에 관한 비밀처리(confidentiality process)를 행하는 명령을 포함하는 것으로 해도 좋다.
이 구성에 의하면, 상기 소프트웨어 디버거는 상기 시큐어 프로그램에 의해 오퍼레이팅 시스템의 관리 외 영역에 저장되는 비밀로 하여야 하는 정보에 액세스할 수 없어서, 이들 비밀로 하여야 하는 정보의 내용을 안전하게 유지할 수 있다.
여기서, 상기 관리영역은 기본 프로그램의 지시에 의해 기본 프로그램에서 시큐어 프로그램으로 실행의 스위치를 행하는 명령을 포함하는 스위치 프로그램(switch program)을 더 기억하고 있고, 상기 프로세서는 상기 관리영역에 기억되어 있는 상기 스위치 프로그램에 포함되어 있는 명령을 더 판독하여, 해독하고, 그 결과에 따라서 동작하며, 상기 기본 프로그램은 상기 스위치 프로그램에 대해서 시큐어 프로그램으로의 스위치를 지시하는 명령을 더 포함하고, 상기 시큐어 프로그램은 상기 비밀처리의 종료 후에 시큐어 프로그램에서 기본 프로그램으로의 실행의 스위치를 행하는 명령을 더 포함하는 것으로 해도 좋다.
이 구성에 의하면, 기본 프로그램에서 비밀처리가 필요한 때 등에, 스위치 프로그램을 통해서 본래 액세스할 수 없는 시큐어 프로그램으로 일시적으로 처리를 옮길 수 있고, 또, 비밀처리 종료 후 다시 오퍼레이팅 시스템인 기본 프로그램으로 처리를 되돌릴 수 있다. 이에 의해, 기본 프로그램으로부터도 시큐어 프로그램의 안전성을 확보하면서, 시큐어 프로그램의 비밀처리를 이용할 수 있다.
여기서, 상기 스위치 프로그램은, 시큐어 프로그램에서 기본 프로그램으로의 실행의 스위치 시에 스택 포인터(stack pointer)의 설정을 기본 프로그램이 이용하는 것으로 되돌리는 명령을 포함하고, 시큐어 프로그램에서 기본 프로그램으로의 실행의 스위치 시에 스택 포인터의 설정을 시큐어 프로그램이 이용하는 것으로 되돌리는 명령을 포함하는 것으로 해도 좋다.
이 구성에 의하면, 시큐어 프로그램에서 기본 프로그램으로의 스위치 시에 스택 포인터의 설정을 기본 프로그램이 이용하는 것으로 되돌리므로, 기본 프로그램의 처리를 속행할 수 있다. 또, 기본 프로그램에서 시큐어 프로그램으로의 스위치 시에 스택 포인터의 설정을 시큐어 프로그램이 이용하는 것으로 되돌리므로, 시큐어 프로그램의 처리를 속행할 수 있다.
여기서, 상기 시큐어 프로그램은 난독화(難讀化, obfuscate)가 되어 있는 것으로 해도 좋다.
이 구성에 의하면, 난독화에 의해 시큐어 프로그램의 해석이 곤란해지므로, 시큐어 프로그램의 안전성을 더 높일 수 있다.
또, 일반적으로, 소프트웨어의 처리가 실행되기 전에 실행대상이 되는 소프트웨어가 이용하는 데이터는 초기화된다. 부정 해석자는 해석 대상 소프트웨어의 해석을 소프트웨어의 초기화 시부터 하려고 한다. 이 경우, 부정 해석자가 데이터 초기화처리에 주목하여 비밀정보의 이용장소를 특정할 가능성이 있다.
여기서, 상기 시큐어 프로그램은 초기화처리를 필요로 하며, 초기화처리는 복수의 프로그램에 의해 이루어지는 것으로 해도 좋다.
이 구성에 의하면, 복수의 초기화 프로그램을 이용하여 각각의 초기화처리가 이루어짐으로써 초기화처리가 분할·분산되어, 부정 해석자에 의한 데이터 초기화처리에 주목한 비밀정보의 이용장소의 특정을 곤란하게 할 수 있다.
여기서, 상기 복수의 프로그램은 상기 시큐어 프로그램에 의한 상기 비밀처리에 선행하여 실행되는 것으로 해도 좋다.
이 구성에 의하면, 시큐어 프로그램에 의한 비밀처리에 선행하여, 각 초기화 프로그램의 실행에 의해 각 초기화처리가 이루어지므로, 비밀처리 시에 잘못된 초기화를 사용하여 잘못된 처리가 이루어지는 경우는 없다.
여기서, 상기 복수의 초기화 프로그램 중 일부의 초기화 프로그램은 다른 초기화 프로그램과는 다른 시기에 실행되는 것으로 해도 좋다.
이 구성에 의하면, 부정 해석자에 의한 데이터 초기화처리에 주목한 비밀정보 이용장소의 특정을 더 곤란하게 할 수 있다.
또한, 휴대전화 등의 전자기기에서도 내 탬퍼 기술을 적용하는 경우, 내 탬퍼화 된 소프트웨어가 이용하는 메모리의 사이즈는 증가한다. 그러므로 상기 내 탬퍼화 된 소프트웨어의 초기화처리에 요하는 시간이 커져서, 즉응성이 요구되는 전자기기에서는 사용자에 의한 소망의 처리요구로부터 실제로 소프트웨어기 처리를 개시하기까지의 초기화처리에 막대한 시간을 요하게 된다.
메모리의 초기화처리의 고속화에 관한 문헌으로 특허문헌 1에 개시되어 있는 메모리 관리방법이 있다. 그러나 이 방법에서는 프로그램의 데이터 초기화처리의 고속화 및 시큐리티(security)의 향상에 대한 효과는 얻을 수 없다.
여기서, 일부의 초기화 프로그램은 당해 컴퓨터시스템의 리셋 직후에 실행되고, 시큐어 프로그램에 포함되는 초기화 프로그램은 시큐어 프로그램의 실행이 요구된 때에 실행되는 것으로 해도 좋다.
이 구성에 의하면, OS에 의존하지 않는 환경에서 동작 가능한 시큐어 소프트웨어의 초기화처리를 분할·분산함으로써, 사용자에 의한 소망의 처리요구로부터 실제로 시큐어 소프트웨어가 처리를 개시하기까지의 처리시간을 단축할 수 있는 동시에, 악의가 있는 해석자에 대한 내성을 더 향상시킬 수 있다.
이상 설명한 바와 같이, 본 발명에 의하면, 시큐어 프로그램이 실행되는 코드(ROM 상에 존재한다) 및 시큐어 프로그램이 이용하는 워크 메모리(RAM 상에 존재한다)는 OS의 관리 외의 영역으로 하고 있으므로, OS상에서 동작하는 소프트웨어 디버거로부터의 해석을 방지할 수 있게 된다.
또한, 시큐어 프로그램의 RAM 데이터의 초기화처리를 분할하고 있으므로, 사용자에 의한 시큐어 프로그램 처리요구가 발생하고 나서 시큐어 프로그램의 기동까지의 처리시간을 단축할 수 있다.
또한, 분할한 초기화처리를 분산하여 실행함으로써, 시큐어 프로그램의 초기화처리에서부터 해석을 하는 악의가 있는 해석자에 대해서 해석대상범위를 확대시킬 수 있게 되므로, 해석을 곤란하게 하여, 시큐리티 레벨을 향상시킬 수 있다.
또, 시큐어 프로그램이 OS에 의존하지 않는 환경에서 동작하는 것이므로, 시큐어 프로그램의 다른 OS로의 이식성(portability)이 매우 높다. 또한, 다른 OS로 이식할 때에도 시큐어 프로그램의 OS 지향의 변경이 발생하지 않으므로, 시큐리티 레벨을 떨어뜨리지 않고 이식할 수 있게 된다.
도 1은 시큐어 처리시스템(1)의 구성을 나타내는 시스템 구성도이다.
도 2는 컴파일장치(30)의 나타내는 블록 도이다.
도 3은 컴파일장치(40)의 나타내는 블록 도이다.
도 4는 메모리카드(20) 및 휴대전화(10)의 구성을 나타내는 블록 도이다.
도 5는 메모리(107)의 데이터의 배치를 나타내는 배치도이다.
도 6은 2진 데이터의 각 섹션의 배치를 나타내는 배치도이다.
도 7은 메모리(107)에서의 물리어드레스와 논리어드레스의 대응관계를 나타내는 도면이다.
도 8은 시큐어 프로그램(202)과 시큐어 프로그램용 워크 메모리(602)의 내용을 나타내는 배치도이다.
도 9는 API 분기테이블(800)의 데이터구조를 나타내는 데이터 구조 도이다.
도 10은 세트 후, OS프로그램을 기동하고, OS상에서 동작하는 애플리케이션 소프트웨어가 기동하기까지의 순서를 나타내는 도면이다.
도 11은 시큐어 프로그램(202)의 ZI섹션의 초기화처리가 완료하기까지의 순서를 나타내는 도면이다.
도 12는 시큐어 프로그램(202)의 ZI섹션의 초기화완료 후, 시큐어 API의 기동까지의 순서를 나타내는 도면이다.
도 13은 시큐어 프로그램(202)의 실행 중에 인터럽트가 발생한 경우의 순서 를 나타내는 도면이다.
(부호의 설명)
10 휴대전화 20 메모리카드
30 컴파일장치 40 컴파일장치
101 디버거 I/F 102 CPU
103 MMU 104 인터럽트 컨트롤러
105 입력부 106 표시부
107 메모리 108 입출력부
109 버퍼 110 부호처리기
111 D/A변환기 112 무선통신제어부
113 스피커 114 마이크
115 통신부 116 안테나
117 버스 120 통상영역
122 입출력부 130 시큐어 영역
132 시큐어 처리부 201 IPL 프로그램
202 시큐어 프로그램 210 OS프로그램
211 비 시큐어 프로그램 호출부
212 시큐어 프로그램 호출부
213 스위치 디바이스 드라이버
310 OS의존 컴파일부 320 OS의존 링크부
330 형식 변환부 350 정보기억부
410 OS 비 의존 컴파일부 420 OS 비 의존 링크부
430 형식 변환부 450 정보기억부
1. 실시 예
이하, 본 발명의 일 실시 예로서의 시큐어 처리시스템(secure processing system, 1)에 대해서 도면을 참조하면서 설명한다.
1. 1 시큐어 처리시스템(1)의 구성
시큐어 처리시스템(1)은, 도 1에 도시하는 바와 같이, 컴파일장치 30, 컴파일장치 40, 휴대전화(10) 및 메모리카드(20)로 구성되어 있다. 메모리카드(20)는 휴대전화(10)에 장착된다.
컴파일장치 30은 휴대전화(10)에 도입되는 OS(Operating System, 기본 소프트웨어 또는 기본 프로그램이라고도 한다)의 커늘(kernel)의 동작에 대해서 기술하고 있는 소스프로그램 및 당해 OS에 의존하는 기타 동작을 기술하고 있는 소스프로그램으로부터 1개 이상의 실행형식의 컴퓨터 프로그램(OS 의존 2진 데이터(OS-dependent binary data)라 한다)을 생성한다. 또, 컴파일장치 40은 상기 OS에 의존하지 않는 기타 동작을 기술하고 있는 소스프로그램으로부터 1개 이상의 실행형식의 컴퓨터 프로그램(OS 비 의존 2진 데이터(OS-independent binary data)라 한다)을 생성한다.
휴대전화(10)는, 후술하는 바와 같이, CPU(Central Processing Unit), ROM(Read Only Memory), RAM(Random Access Memory) 등을 포함하여 구성되는 컴퓨터시스템이다. 상기에서 생성된 OS 의존 2진 데이터 및 OS 비 의존 2진 데이터는 ROM 라이터(ROM writer)에 의해 휴대전화(10)가 구비하는 ROM에 기록된다. 이렇게 하여 ROM은 컴퓨터 프로그램인 OS 의존 2진 데이터 및 OS 비 의존 2진 데이터를 기억하며, 상기 CPU가 상기 컴퓨터 프로그램에 따라서 동작함으로써 휴대전화(10)는 그 일부의 기능을 달성한다. OS 의존 2진 데이터인 컴퓨터 프로그램의 일부는 OS를 구성하고 있고, 다른 부분은 당해 OS의 제어하에 동작한다.
메모리카드(20)는, 일 예로 음악 또는 영상의 콘텐츠가 암호화되어 생성된 암호화 콘텐츠 및 상기 암호화 콘텐츠를 복호 하기 위해 사용되는 콘텐츠 키를 기억하고 있다.
휴대전화(10)는 ROM에 기록된 OS 의존 2진 데이터 및 OS 비 의존 2진 데이터에 따라서 동작함으로써, 메모리카드(20)에서 암호화 콘텐츠를 판독하고, 판독한 암호화 콘텐츠를 상기 콘텐츠 키를 이용하여 복호 하여 복호 알고리즘을 생성하며, 생성한 복호 콘텐츠를 음악 또는 영상으로 출력한다.
1. 2 컴파일장치 30의 구성
컴파일장치(프로그램 생성장치라고도 한다) 30은, 도 2에 도시한 바와 같이, OS의존 컴파일부(310), OS의존 링크부(320), 형식 변환부(330) 및 정보 기억부(350)로 구성되어 있다. 컴파일장치 30은 휴대전화(10)의 후술하는 메모리(107)의 OS의 관리영역에 배치하는 2진 데이터를 생성한다.
컴파일장치 30은 구체적으로는 마이크로 프로세서, ROM, RAM, 하드디스크 유 닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로 프로세서가 상기 컴퓨터 프로그램에 따라서 동작함으로써 컴파일장치 30을 구성하는 OS의존 컴파일부(310), OS의존 링크부(320) 및 형식 변환부(330)는 그 기능을 달성한다.
(1) 정보 기억부(350)의 구성
정보 기억부(350)는 OS 커늘 소스(OS kernel source, 301a, 301b, 301c, …), 비 시큐어 프로그램 소스(nonsecure program source, 302a, 302b, 302c, …), 시큐어 프로그램 호출부 소스(secure program calling part source, 303a, 303b, 303c, …), 스위치 디바이스 드라이버 소스(switch device driver source, 304a, 304b, 304c, …), 어드레스지정 파일(322), OS의존 라이브러리(OS-dependent library, 321a, 321b, 321c, …)를 기억하고 있다. 또, OS의존 2진 데이터(340a, 340b, 340c, …)를 기억하기 위한 영역을 구비하고 있다.
OS 커늘 소스(301a, 301b, 301c, …)는 각각 휴대전화(10)에 도입되는 OS의 각종 처리를 기술하고 있는 소스코드(소스프로그램)의 일부분인 컴퓨터 프로그램인 컴퓨터 명령을 포함하며, OS 커늘 소스(301a, 301b, 301c, …)는 이들 소스코드 전체에서 당해 OS 처리를 기술하고 있다. 또, OS 커늘 소스(301a, 301b, 301c, …)는, 전체로서, 휴대전화(10)의 메모리(107) 상에 OS 프로그램(210, 후술함)으로 기억되는 2진 데이터에 대응하고 있다.
비 시큐어 프로그램 소스(통상 프로그램이라고도 한다, 302a, 302b, 302c, …)는 각각 비 시큐어 한 처리가 기술된 소스코드(소스프로그램)인 컴퓨터 프로그램인 컴퓨터 명령을 포함하며, 비 시큐어 프로그램 소스 302a는 휴대전화(10)의 메모리(107) 상에 비 시큐어 프로그램(211, 후술함)으로 기억되는 2진 데이터에 대응하고 있다.
시큐어 프로그램 호출부 소스 303a는 휴대전화(10)의 메모리(107) 상에 기억되어 있는 시큐어 프로그램(202, 후술함)을 호출하도록 스위치 디바이스 드라이버(213, 후술함)에 의뢰하는 처리가 기술된 소스코드(소스프로그램)인 컴퓨터 프로그램으로서의 컴퓨터 명령을 포함하며, 메모리(107) 상에 비 시큐어 프로그램(211, 후술함)으로서 기억되는 2진 데이터에 대응한다. 스위치 디바이스 드라이버(213)에 의뢰하는 처리는 본 실시 예에서는 OS 프로그램(210)의 라이브러리 콜(library call)에 의해 하는 것으로 한다. 시큐어 프로그램 호출부 소스 303b, 303c, …에 대해서도 동일하다.
스위치 디바이스 드라이버 소스 304a는 메모리(107) 상의 시큐어 프로그램 호출부(212)로부터 의뢰된 시큐어 프로그램(202)의 처리로 분기시키는 처리가 기술된 소스코드(소스프로그램)인 컴퓨터 프로그램으로서의 컴퓨터 명령을 포함하며, 메모리(107) 상에 스위치 디바이스 드라이버(213, 후술함)로서 기억되는 2진 데이터에 대응한다.
어드레스지정 파일(322)은 OS의존 링크부(320)에 의해 작성되는 2진수의 ROM데이터 및 RAM 데이터의 배치 어드레스를 지정하는 파일이다. 예를 들어, 어드레스지정 파일(322)은 OS의존 링크부(320)에 의해 생성되는 각 OS 의존 2진 데이터에 대해서, 타깃장치(즉, 휴대전화(10))의 메모리에서 배치되어야 할 위치를 나타내는 물리어드레스를 포함한다.
(2) OS의존 컴파일부(310)
OS의존 컴파일 부(310)는, 이들 OS 커늘 소스(301a, 301b, 301c, …), 비 시큐어 프로그램 소스(302a, 302b, 302c, …), 시큐어 프로그램 호출부 소스(303a, 303b, 303c, …), 스위치 디바이스 드라이버 소스(304a, 304b, 304c, …)를 입력으로 하여, 고급언어로 기술된 프로그램 코드를 낮은 레벨인 머신 코드(machine code, 오브젝트 코드(object code)), 즉, 실행형식의 컴퓨터 프로그램으로 변환해서 각각 오브젝트 파일(object file)을 생성한다.
(3) OS의존 링크부(320)
OS의존 링크부(320)는, OS의존 컴파일 부(310)에서 생성된 각 오브젝트 파일에 대해서 재배치와 심벌(symbol)의 해결을 하여, 각 오브젝트 파일 내에 OS 의존 라이브러리(321a, 321b, 321c, …)의 함수 심벌이 존재하는 것이면 관련하는 OS 의존 라이브러리를 링크하여 OS 의존 2진 데이터를 생성한다.
어드레스지정 파일(322)이 지정되면 OS의존 링크부(320)는 어드레스지정 파일(322) 내에 기재된 논리어드레스에서 ROM 데이터 및 RAM 데이터를 배치한다.
(4) 형식 변환부(330)
형식 변환부(330)는, OS의존 링크부(320)에 의해 생성된 각 OS 의존 2진 데이터를 ROM 라이터(ROM writer)에 의해 실제 ROM 메모리에 기록 가능한 형식으로 변환하여 OS 의존 2진 데이터(340a, 340b)를 생성하고, 생성한 OS 의존 2진 데이 터(340a, 340b)를 정보 기억부(350)에 기록한다. 형식 변환부(330)에 의해 생성되는 데이터 형식에는 인텔 HEX형식(Intel HEX format)이나 모터로라 S 레코드 형식(Motorola S-Record format) 등이 있다.
(5) OS관리 외의 ROM/RAM의 설정
컴파일장치 30은 이하에 설명하는 것과 같이 하여 OS관리 외의 ROM/RAM의 설정을 한다.
(a) OS관리 외의 RAM영역의 확보
예를 들어, 물리어드레스 「0x10000000」에서부터 물리어드레스 「0x11FFFFFF」까지를 액세스 대상의 메모리공간으로 취급할 수 있는 OS에 대해서, 물리어드레스 「0x10000000」에서부터 물리어드레스 「0x11E00000」까지를 OS관리의 RAM영역으로 할당하고, 물리어드레스 「0x11F00000」에서부터 물리어드레스 「0x11FFFFFF」까지를 OS관리 외의 RAM영역으로 할당하는 경우에는, 커늘 기동시에 필요한 RAM 메모리 파라미터의 사이즈를 「0x1E000000」 바이트 지정하여 컴파일한다.
이에 의해, 물리어드레스 「0x10000000」에서부터 지정된 사이즈 「0x1E000000」의 영역이 OS관리 RAM영역이 되고, 그 외의 영역이 OS관리 외의 RAM영역이 된다.
(b) 시큐어 프로그램용의 OS관리 외의 ROM영역과 OS관리 외의 RAM영역의 물리-논리의 맵핑(mapping)의 설정
시큐어 프로그램용의 OS관리 외의 ROM영역과 OS관리 외의 RAM영역의 물리-논 리의 맵핑을 설정하는 경우에는 이하에 설명하는 것과 같이 한다.
OS 커늘의 메모리 맵핑을 지정하는 소스파일에는 메모리 맵핑을 지정하는 구조체가 존재한다. Linux인 경우에는 메모리 맵핑 지정의 구조체로 map_desc standard_io_desc[]_initdata가 준비되어 있다.
static struct map_desc standard_io_desc[]_initdata={
MAP_DESC(논리어드레스, 물리어드레스, 사이즈, 도메인속성, READ속성, WRITE속성, CACHE속성, BUFFER속성);
};
여기서, 논리어드레스에서는 물리어드레스에 대응시키고자 하는 논리어드레스를 지정하고, 물리어드레스에서는 논리어드레스에 대응시키고자 하는 물리어드레스를 지정하며, 사이즈에서는 상기 어드레스로부터 논리·물리어드레스의 대응 부여를 하고자 하는 사이즈를 지정한다. 도메인속성에서는 커늘영역인가 사용자영역인가를 지정하고, READ속성에서는 READ 가능하면 「1」을 설정하고, READ 불가능하면 「0」을 설정하며, WRITE속성에서는 WRITE 가능하면 「1」을 설정하고, WRITE 불가능하면 「0」을 설정하며, CACHE속성에서는 캐시 유효이면 「1」을 설정하고, 캐시 무효이면 「0」을 설정하며, BUFFER속성에서는 BUFFER 유효이면 「1」을 설정하고, BUFFER 무효이면 「0」을 설정한다.
후술하는 도 7에 도시하는 바와 같이, OS관리 외의 ROM, RAM을 지정하는 경우에는 이 구조체에 대해서 이하와 같이 소스파일을 기술하고, 이 소스파일을 포함하는 커늘 소스파일을 컴파일한다.
static struct map_desc standard_io_desc[]_initdata{
MAP_DESC(0xFFB00000, 0x11F00000, 0x000FFFFF, DOMAIN_KERNEL, 0, 1, 1, 1),
/*시큐어 프로그램용 RAM*/
MAP_DESC(0xFFA00000, 0x00260000, 0x000FFFFF, DOMAIN_KERNEL, 0, 0, 1, 1),
/*시큐어 프로그램용 ROM*/
};
또한, 시큐어 프로그램의 도메인속성은 커늘 도메인으로 하여, OS상에서 동작하는 통상 소프트웨어로부터의 액세스를 금지한다.
또, 시큐어 프로그램의 메모리에 대한 액세스는 스위치 디바이스 드라이버 경유로 실행되므로, 디바이스 드라이버로부터 READ/WRITE 실행이 가능하면서 CPU 캐시(cache)가 유효할 것이 필요하다.
(6) 요약
이상 설명한 바와 같이, OS 커늘 소스(301a, 301b, 301c, …), 비 시큐어 프로그램 소스(302a, 302b, 302c, …), 시큐어 프로그램 호출부 소스(303a, 303b, 303c, …), 스위치 디바이스 드라이버 소스(304a, 304b, 304c, …)는 각각 OS의존 컴파일 부(310)에 의해 컴파일되며, 컴파일에 의해 작성된 오브젝트 파일은 OS의존 링크부(320)에 의해 링크 처리가 이루어진다. OS의존 링크부(320)에 의해 생성된 OS 의존 2진 데이터는 형식 변환부(330)에 의해 ROM에 기록하기 위한 형식으로 변 환되어, OS 의존 2진 데이터(340a, 340b, …)가 정보 기억부(350)에 기록된다.
OS(기본 프로그램)는, 상기 관리영역만을 액세스 공간으로 하며, 비 시큐어 프로그램(통상 프로그램)에 대해서 상기 관리영역에 대한 액세스를 중계하는 명령과 스위치 디바이스 드라이버(스위치 프로그램)에 대해서 시큐어 프로그램에 대한 스위치를 지시하는 명령을 포함한다.
비 시큐어 프로그램(통상 프로그램)은 OS(기본 프로그램)를 통해서 상기 관리영역에 액세스하는 명령을 포함한다.
스위치 디바이스 드라이버(스위치 프로그램)는 OS(기본 프로그램)의 지시에 의해 OS(기본 프로그램) 시큐어 프로그램에 대한 실행의 스위치를 행하는 명령을 포함한다.
시큐어 프로그램은 상기 관리영역 외의 영역만을 액세스 공간으로 하며, 상기 관리영역 외의 영역에 액세스하는 명령을 포함한다. 또, 시큐어 프로그램의 대상 처리, 예를 들어 암호화 콘텐츠의 상기 콘텐츠 키를 이용한 복호 처리의 종료 후에, 시큐어 프로그램에서 기본 프로그램으로의 실행의 스위치를 행하는 명령을 포함한다.
1. 3 컴파일장치 40
컴파일장치(프로그램 생성장치라고도 한다) 40은, 도 3에 도시하는 바와 같이, OS 비 의존 컴파일부(410), OS 비 의존 링크부(420), 형식 변환부(430) 및 정보 기억부(450)로 구성되어 있다. 컴파일장치 40은 휴대전화(10)의 후술하는 메모리(107)의 OS의 관리 외 영역에 배치하는 2진 데이터를 생성한다.
컴파일장치 40은 구체적으로는 마이크로 프로세서, ROM, RAM, 하드디스크 유닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로 프로세서가 상기 컴퓨터 프로그램에 따라서 동작함으로써 컴파일장치 40을 구성하는 OS비 의존 컴파일부(410), OS 비 의존 링크부(420) 및 형식 변환부(430)는 그 기능을 달성한다.
정보 기억부(450)는 시큐어 프로그램 소스(401a, 401b, 401c, …), 어드레스지정 파일(422), OS 비 의존 라이브러리(421a, 421b, 421c, …)를 기억하고 있다. 또, OS 비 의존 2진 데이터(440a,440b, 440c, …)를 기억하기 위한 영역을 구비하고 있다.
시큐어 프로그램 소스 401a는 비밀정보를 이용한 처리가 기술되어 있는 소스코드(소스프로그램)인 컴퓨터 프로그램으로서의 컴퓨터 명령을 포함한다. 이 시큐어 프로그램 소스 401a는 본 실시 예에서는 암호화 콘텐츠를 복호 하기 위한 복호처리가 기술된 코드이며, 메모리(107) 상에 시큐어 프로그램(202, 후술함)으로 기억되는 2진 데이터에 대응하고 있다. 시큐어 프로그램 소스 401b, 410c에 대해서도 동일하다.
어드레스지정 파일 422는 도 2에서 설명한 어드레스지정 파일 322와 동일하므로 설명을 생략한다. 단, 시큐어 프로그램 소스(401a, 401b, 401c, …)에 대응하여 생성되는 시큐어 프로그램(202) 등을 OS 프로그램(210)의 관리 외 영역에 배치하기 위해, 어드레스지정 파일(422)은 관리 외 영역의 어드레스를 지정한다.
OS 비 의존 컴파일 부(410)는 OS 비 의존의 처리가 기술된 소스코드를 고급언어에서 저 레벨인 머신 코드(오브젝트 코드)로 변환한다. OS 비 의존 컴파일 부(410)는 CPU(102)의 아키텍처에 적합한 머신 코드를 작성한다.
OS 비 의존 링크부(420)는 재배치와 심벌 해결을 하며, 필요하면 OS 비 의존 라이브러리를 링크하여 CPU(102)에서 실행 가능한 2진 데이터를 작성한다. OS 비 의존 링크란, OS 의존 라이브러리(321a, 321b, 321c, …)를 링크하지 않는 것을 의미한다.
형식 변환부 430은 도 2에서 설명한 형식 변환부 330과 동일하므로 설명을 생략한다.
1. 4 메모리카드(20)의 구성
메모리카드(20)는, 도 4에 도시하는 바와 같이, 통상영역(120), 시큐어 영역(130), 입출력부(122) 및 시큐어 처리부(132)로 구성된다.
메모리카드(20)는 구체적으로는 마이크로 프로세서, ROM, RAM 등으로 구성되는 컴퓨터시스템이다. 상기 RAM에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로 프로세서가 상기 컴퓨터 프로그램에 따라서 동작함으로써 메모리카드(20)는 그 일부의 기능을 달성한다.
통상영역(120)은 외부기기에 의해 자유롭게 액세스할 수 있는 영역이며, 본 실시 예에서는 암호화 콘텐츠(121)가 기억되어 있다.
시큐어 영역(130)은 허가된 외부기기만이 액세스할 수 있는 영역이며, 콘텐츠 키(131)가 기억되어 있다.
암호화 콘텐츠(121)는 암호화된 음악 데이터 또는 동화상 데이터이며, 콘텐츠 키(131)를 암호 키로 하여 암호 알고리즘을 이용하여 암호화된 데이터이다. 암호화데이터는 콘텐츠 ID에 의해 식별된다. 또, 본 실시 예에서는, 암호화 콘텐츠(121)는 공통 키 방식으로 암호화되어 있는 것으로 하고, 콘텐츠 키(131)를 복호 키로 이용하여 복호 된 콘텐츠, 즉, 음악 데이터 또는 동화상 데이터를 취득할 수 있는 것으로 한다.
입출력부(122)는 외부기기와 통상영역(120) 및 시큐어 처리부(132) 사이에서의 각종 데이터를 입출력한다.
시큐어 처리부(132)는 외부기기와의 사이에서 CPRM(Content Protection for Recodable Media) 사양에 의거하여 상호 인증을 하며, 인증에 성공한 경우에 인증한 기기와 키를 공유한다. 공유한 키를 이용해서 외부기기와의 사이에서 안전하게 데이터의 입출력을 한다. 또한, CPRM은 공지이므로 설명을 생략한다.
1. 5 휴대전화(10)의 구성
휴대전화(10)는, 도 4에 도시하는 바와 같이, 디버거 IF(debugger IF, 101), CPU(102), MMU(Memory Management Unit, 103), 인터럽트 컨트롤러(interrupt controller, 104), 입력부(105), 표시부(106), 메모리(107), 입출력부(108), 버퍼(109), 부호처리부(110), D/A 변환기(111), 무선통신 제어부(112), 스피커(113), 마이크(114), 통신부(115), 안테나(116)로 구성되며, 각 회로는 버스(117)로 접속되어 있다.
(1) 휴대전화(10)의 각 구성요소
메모리(107)는 ROM 및 RAM으로 구성되며, CPU(102)에 의해 실행되는 각종 프로그램을 기억하고 있다.
CPU(102)는 명령 페치부(fetch unit), 명령 디코더, 연산기, 프로그램 카운터, 링크 레지스터, 스택 포인터 등을 구비하며, 메모리(107) 상의 프로그램에서 명령을 페치하고, 페치한 명령을 해독하며, 해독한 명령을 실행한다.
MMU(103)는 논리어드레스를 물리어드레스로 변환하는 가상기억기능을 실현한다. 디버거 IF(101)는 휴대전화(10)와 외부 디버거를 접속하기 위한 인터페이스이다.
인터럽트 컨트롤러(104)는 FIQ, IRQ 등의 하드웨어 인터럽트 및 소프트웨어 인터럽트(SWI), 프리페치 어보트(prefetch abort), 데이터 어보트(data abort), 리셋 등의 각종 인터럽트를 검지하고, CPU(102)의 인터럽트 검출용 레지스터에 인터럽트 발생통지를 출력한다.
통신부(115)는 무선통신 제어부(112)와, 휴대전화망, 인터넷에 접속된 외부기기와의 사이에서 안테나(116)를 통해서 정보의 송수신을 한다.
무선통신 제어부(112)는 베이스 밴드부(base band unit), 변복조부, 증폭부 등을 구비하고 있고, 통신부(115) 및 안테나(116)를 통해서 송수신 되는 각종 정보의 신호처리를 한다.
부호처리부(110)는 버퍼(109)에 기억되어 있는 음악 데이터에 MP3 등의 부호화기술에 따른 복호처리를 하여 D/A변환부(111)에 출력한다.
D/A변환부(111)는 부호처리부(110)에 의해 복호 된 음악 데이터를 아날로그 음성신호로 변환하여 스피커(113)에 출력한다.
입력부(105)는 숫자 키(numerical key), 결정버튼 등의 각종 버튼을 구비하며, 이용자에 의한 이들의 조작을 접수한다.
표시부(106)는 VRAM 및 액정화면을 구비하며, 각종 화면을 표시한다.
마이크(114)는 음을 전기신호로 변환하고, 생성한 전기신호를 무선통신 제어부(112)에 출력한다.
스피커(113)는 무선통신 제어부(112) 및 D/A변환부(111)로부터 아날로그신호를 수신하고, 수신한 아날로그신호를 음으로 변환하여 출력한다.
(2) 메모리(107)의 구성
메모리(107)의 구성을 도 5에 도시한다. 메모리(107)는 ROM과 RAM으로 구성된다. 도 5에서는 ROM과 RAM을 구별하여 도시하고 있지 않으나, ROM과 RAM의 구별은 도 7에서 도시하고 있다.
일 예로, 도 5에 도시하는 바와 같이, 메모리(107)는 OS 프로그램(210), 비 시큐어 프로그램(211), 시큐어 프로그램 호출부(212), 스위치 디바이스 드라이버(213), 시큐어 프로그램(202) 및 IPL(Initial Program Loader) 프로그램(201)을 기억하고 있다.
또한, 본 실시 예에서는 메모리(107)에 OS가 관리하는 관리영역과 OS의 관리 외인 관리 외 영역의 2개의 영역을 할당하여 이용한다. OS상에서 동작하는 비 시큐어 프로그램(211), 시큐어 프로그램 호출부(212) 및 스위치 디바이스 드라이버(213)는 OS의 관리영역에 기억된다. 한편, IPL 프로그램(201) 및 시큐어 프로그 램(202)은 OS의 관리 외 영역에 기억된다. 이 할당방법에 대해서는 후술한다.
이와 같이, 시큐어 프로그램(202)은 OS의 관리 외인 관리 외 영역에서 동작하므로 OS상에서 동작하는 소프트웨어 디버거로부터의 해석이 불가능하며, 시큐어 상태에서 시큐어 프로그램의 실행이 가능해진다.
(각 프로그램의 설명)
IPL 프로그램(201)은 어셈블러(assembly language)로 작성된 코드(컴퓨터 프로그램)로, OS가 기동하기 위해 필요한 하드웨어의 초기화를 행하며, OS의 커늘 초기화처리로 분기하는 명령을 포함한다. 또, IPL 프로그램(201)은 후술하는 ZI섹션 A(711)의 데이터의 초기화를 실행하는 명령을 포함한다.
OS 프로그램(210)은 오퍼레이팅 시스템(operating system)이며, 커늘 초기화 시에 OS가 이용하는 하드웨어의 초기화, MMU(103)의 설정, 메모리 관리, 파일관리, 사용자 인터페이스의 제공 등을 하는 기본 소프트웨어이다.
비 시큐어 프로그램(211)과 시큐어 프로그램 호출부(212) 및 스위치 디바이스 드라이버(213)는 OS가 관리하는 메모리에서 동작하는 프로그램 군이다.
비 시큐어 프로그램(211)은 시큐어 환경에서의 실행을 필요로 하지 않는 애플리케이션이다. 예를 들어, 휴대전화(10)의 GUI를 관리하는 애플리케이션, 개인의 스케줄을 관리하는 프로그램, 음악재생 애플리케이션 등이다. 콘텐츠 재생시에 메모리카드(20)에 기억되어 있는 콘텐츠 키(131)를 이용하여 시큐어로 복호처리를 할 필요가 있다. 음악재생 애플리케이션은 시큐어 프로그램 호출부(212)를 호출하는 복호처리요구를 포함한다. 이 복호처리요구는 콘텐츠 키(131)를 이용한 암호화 콘 텐츠(121)의 복호처리의 요구를 나타낸다.
시큐어 프로그램 호출부(212)는 시큐어 프로그램(202)을 실행하기 위한 호출 프로그램이며, 스위치 디바이스 드라이버(213)에 시큐어 프로그램(202)의 실행을 의뢰한다.
스위치 디바이스 드라이버(213)는 관리 외 영역에 기억된 시큐어 프로그램(202)으로 처리를 옮기는 인터페이스 역할을 한다.
시큐어 프로그램(202)은 비밀정보를 이용하여 처리를 행하는 프로그램이다. 본 실시 예에서는 시큐어 프로그램(202)은 암호화 콘텐츠(121)를 콘텐츠 키(131)를 이용하여 복호 하는 복호프로그램이다. 또, 시큐어 프로그램(202)은 당해 시큐어 프로그램(202)의 기동 직후에 후술하는 ZI색션 B(712)의 제로 초기화처리(zero initialization process)를 실행한다.
또한, 본 실시 예에서 메모리(107)는 ROM과 RAM으로 구성되는 것으로 하고 있으나, 이에 한정되는 것은 아니다. 메모리(107)는 프로그램을 기억할 수 있는 기억부와 프로그램 동작시에 이용하는 워크 메모리(work memory)가 기억할 수 있는 워크 메모리 기억수단을 구비하고 있으면 된다. 예를 들어, 프로그램 기억수단으로 HDD(Hard Disk Drive), EEPROM(Electrically Erasable Programmable ROM), Flash ROM 등을 이용해도 좋고, 워크 메모리 기억수단으로 SDRAM(Synchronous DRAM), SRAM(Static RAM) 등을 이용해도 좋다.
상술한 OS 프로그램(210), 비 시큐어 프로그램(211), 시큐어 프로그램 호출부(212) 및 스위치 디바이스 드라이버(213)는 컴파일장치 30에서 1개 이상의 OS 의 존 2진 데이터로서 생성되고, 시큐어 프로그램(202)은 컴파일장치 40에서 1개 이상의 OS 비 의존 2진 데이터로서 생성된다.
이렇게 하여 생성된 1개 이상의 OS 의존 2진 데이터와 OS 비 의존 2진 데이터가 ROM 라이터에 의해 ROM에 기록된다. 도 5는 이와 같이 하여 ROM에 기록된 결과를 나타내고 있다.
(각 2진 데이터의 섹션 구성)
여기서, 컴파일장치 30에서의 컴파일 및 링크에 의해 생성된 각 OS 의존 2진 데이터의 섹션 구성에 대해서 설명한다.
각 OS 의존 2진 데이터는, 도 6에 도시하는 바와 같이, ZI섹션(501), RW섹션(502) 및 RO섹션(503)으로 구성되어 있다.
ZI섹션(501)은 제로 초기화대상 데이터영역이다. 각 프로그램의 초기화단계에서 이 섹션 내의 데이터는 제로로 초기화되어야 한다.
RW섹션(502)은 읽기 및 쓰기가 가능한 섹션이며, 실행 가능한 코드(명령)가 배치되는 섹션이다.
RO섹션(503)은 쓰기만이 가능한 섹션이며, 실행 가능한 코드(명령)가 배치되는 섹션이다.
도 5에서는 메모리(107) 내를 ROM과 RAM으로 구별하여 기술하고 있으나, 실제로는, 도 6에 도시한 바와 같이, 각 OS 의존 2진 데이터의 ZI섹션과 RW섹션은 RAM에 배치되고, RO섹션에 대응하는 것은 ROM에 배치된다.
또, 컴파일장치 40에서의 컴파일 및 링크에 의해 생성된 각 OS 비 의존 2진 데이터(440a, 440b, …)도 각각, 도 6에 도시한 바와 같이, ZI섹션, RW섹션 및 RO섹션으로 구성되어 있다.
시큐어 프로그램(202)이 기동하기 전에 시큐어 프로그램(202)을 구성하는 ZI섹션은 제로로 초기화되어야 한다. 그러나 ZI섹션의 사이즈가 크면 제로 초기화처리에 시간을 요하게 된다. 단말의 응답성능이 중요한 전자기기에서는 초기화처리의 시간을 가능한 한 줄여서 시큐어 프로그램(202)의 기동을 고속으로 하는 것이 바람직하다.
이 고속화를 위해, ZI섹션을 복수의 서브 섹션으로 분할하여, 시큐어 프로그램(202)이 기동하기 이전에 일부의 서브 섹션의 제로 초기화처리를 행하고, 시큐어 프로그램(202)이 기동한 직후에 나머지 서브 섹션의 제로 초기화처리를 행한다. 이와 같이 초기화처리를 분할함으로써 시큐어 프로그램(202)에서의 초기화처리의 고속화가 가능해진다. 이 순서에 대해서는 도 10 및 도 11을 이용하여 후술한다.
(메모리(107)의 논리어드레스와 물리어드레스)
다음에, 메모리(107)의 논리어드레스와 물리어드레스의 관계에 대해서 간단하게 설명한다.
각 프로그램 내에서 이용되는 어드레스는 논리어드레스이며, 이것을 MMU(103)가 물리어드레스로 변환하여 실제로 메모리(107)에 액세스한다. 즉, 상술한 OS 프로그램(210), 비 시큐어 프로그램(211), 시큐어 프로그램 호출부(212), 스위치 디바이스 드라이버(213) 및 시큐어 프로그램(202)에서 메모리(107)가 형성하는 기억공간을 가리키는 어드레스는 논리어드레스이며, MMU(103)는 이들 프로그램 에서 이용되는 논리어드레스를 물리어드레스로 변경하여, 물리어드레스에 의해 메모리(107)가 형성하는 기억공간을 가리키는 영역으로의 액세스가 이루어진다.
휴대전화(10)의 전원이 투입된 직후이면서, MMU(103)의 초기화가 이루어져 있지 않은 경우에는 각 프로그램에는 논리어드레스는 할당되지 않는다. 또, 물리어드레스와 논리어드레스의 변환작업이 가능해지는 것은 MMU(103)가 유효한 상태에 있을 때이다.
(메모리(107)의 메모리 맵)
메모리(107)에서의 물리어드레스와 논리어드레스의 대응관계를 도 7에 나타낸다.
상술한 바와 같이, 메모리(107)에는 시큐어 프로그램(202), IPL 프로그램(201), OS 프로그램(210), 비 시큐어 프로그램(211), 시큐어 프로그램 호출부(212) 및 스위치 디바이스 드라이버(213)가 배치되고, 또, OS용 메인 메모리(601) 및 시큐어 프로그램용 워크 메모리(602)가 배치되어 있다.
여기서, 시큐어 프로그램(202)은 ROM 상에서의 OS의 관리 외 영역(651)에 배치되고, OS 프로그램(210), 비 시큐어 프로그램(211), 시큐어 프로그램 호출부(212) 및 스위치 디바이스 드라이버(213)는 ROM 상에서의 OS의 관리영역(652)에 배치되어 있다. 또, OS용 메인 메모리(601)는 ROM 상에서의 OS의 관리영역(653)에 배치되고, 시큐어 프로그램용 워크 메모리(602)는 ROM 상에서의 OS의 관리 외 영역(654)에 배치되어 있다.
물리어드레스 0x08000000에서 0x080C0000에 의해 표시되는 ROM 내의 영역에 IPL 프로그램(201)이 존재한다. IPL 프로그램(201)은 OS 프로그램(210)이 기동하기 전에 실행되는 코드(프로그램 명령)이며, IPL 프로그램(201)에는 논리어드레스는 할당되어 있지 않다. 또한, 본 명세서에서 0x에 이어지는 문자 열은 16진수에 의한 표현이다.
OS 프로그램(210), 비 시큐어 프로그램(211), 시큐어 프로그램 호출부(212) 및 스위치 디바이스 드라이버(213)는 물리어드레스 0x08D0000에서 0x0BE10000에 의해 표시되는 ROM 내의 영역에 존재하며, 이 영역에는 논리어드레스 0xD0000000에서 0xD3D40000이 OS에 의해 할당된다.
OS용 메인 메모리(601)는 OS 및 OS상에서 동작하는 프로그램이 이용하는 워크 메모리이며, 물리어드레스가 0x10000000에서 0x11E00000인 ROM 내의 영역에 존재하고, 이 영역에는 논리어드레스 0xC0000000에서 0xC1E0000이 할당된다.
시큐어 프로그램(202)은 시큐어 프로그램의 실행코드(프로그램 명령)가 기재되어 있고, 물리어드레스 0x00260000에서 0x00350000인 ROM 내의 영역에 존재하며, 이 영역에는 논리어드레스 0xFFA00000에서 0xFFAFFFFF가 할당된다.
시큐어 프로그램용 워크 메모리(602)는 시큐어 프로그램(202)이 이용하는 워크 메모리이며, 물리어드레스 0x11F00000에서 0x11FFFFFF인 ROM 내의 영역에 존재하고, 이 영역에는 논리어드레스 0xFFB00000에서 0xFFBFFFFF가 할당된다.
상술한 것과 같은 논리어드레스의 지정은 OS 프로그램(210)의 커늘의 초기화처리에서 이루어진다.
또한, 컴파일장치 30이 기억하여 OS의존 링크부(320)에서 이용되는 어드레스 지정 파일(322), 및 컴파일장치 40이 기억하여 OS 비 의존 링크부(420)에서 이용되는 어드레스지정 파일(422)에서는 상술한 바와 같이 어드레스가 할당되도록 기술되어 있다.
또한, 본 실시 예에서는 상술한 바와 같이 물리어드레스 및 논리어드레스를 할당하고 있으나, 실장 대상의 기기에 따라서 바뀌는 것이며, 본 발명이 이 어드레스 값에 한정되는 것은 아니다.
(시큐어 프로그램(202)과 시큐어 프로그램용 워크 메모리(602))
다음에, 시큐어 프로그램(202)과 시큐어 프로그램용 워크 메모리(602)의 내용에 대해서 도 8을 이용하여 더 상세하게 설명한다.
시큐어 프로그램용 워크 메모리(602)는 ZI섹션을 2개로 분할한 ZI섹션 A(711), ZI섹션 B(712) 및 RW섹션(713)으로 구성되어 있다.
ZI섹션 A(711) 및 ZI섹션 B(712)는 시큐어 프로그램(202)이 실행되기 전에 초기화되며, 시큐어 프로그램(202)에 의해 이용되는 데이터가 저장되는 데이터저장 섹션이다. 본 실시 예에서는 시큐어 프로그램(202)의 초기화처리를 고속으로 하기 위해서 ZI섹션이 ZI섹션 A(711) 및 ZI섹션 B(712)로 분할되어 있다.
시큐어 프로그램용 워크 메모리(602)의 ZI섹션의 제로 초기화처리에서는, 휴대전화(10)의 전원이 투입된 직후에 IPL 프로그램(201)에 의해 ZI섹션 A(711)의 제로 초기화처리가 실행되고, 다음에, 사용자에 의한 콘텐츠 재생요구가 이루어져서, 시큐어 프로그램(202)이 기동한 직후에, 시큐어 프로그램(202)에 의해 ZI섹션 B(712)의 제로 초기화처리가 실행된다.
이와 같이, 사용자에 의한 콘텐츠 재생요구가 이루어지기 이전에 ZI섹션 A(711)의 제로 초기화처리를 해 둠으로써, 사용자에 의한 콘텐츠 재생요구가 있은 후부터 시큐어 프로그램(202)의 초기화처리가 완료하기까지의 시간을 단축할 수 있어서 사용자의 대기시간을 단축할 수 있게 된다. 또, ZI섹션의 초기화처리를 분산시킴으로써 부정 해석자에 의한 시큐어 프로그램(202)의 해석을 곤란하게 할 수 있게 된다.
RW섹션(713)은 시큐어 프로그램(202)이 사용하는 읽기 및 쓰기가 가능한 데이터가 저장되는 영역이다.
또한, 시큐어 프로그램용 워크 메모리(602)는 시큐어 프로그램(202)의 스택영역으로 이용해도 좋다.
시큐어 프로그램(202)은 시큐어 API 분기처리(701), ZI섹션 B 초기화 API(702), 시큐어 API_A(703) 및 시큐어 API_B(704)로 구성된다.
시큐어 API 분기처리(701), ZI섹션 B 초기화 API(702), 시큐어 API_A(703) 및 시큐어 API_B(704)는, 도 8에 도시한 바와 같이, 각각 논리어드레스 「0xFFA00000」, 「0xFFA01000」, 「0xFFA02000」 및 「0xFFA03000」에 의해 개시위치가 표시되는 시큐어 프로그램(202) 내의 영역에 저장되어 있다.
시큐어 API 분기처리(701)는 ZI섹션 B 초기화 API(702), 시큐어 API_A(703) 및 시큐어 API_B(704)의 각각으로의 분기 처 어드레스정보를 포함하는 API 분기테이블(800, 후술함)을 저장하고 있다.
시큐어 프로그램(202)의 각 API를 식별하는 식별자는 시큐어 프로그램 호출 부(212)에서 스위치 디바이스 드라이버(213)를 경유하여 시큐어 API 분기처리(701)로 출력된다. 시큐어 API 분기처리(701)는 스위치 디바이스 드라이버(213)로부터 식별자를 수신하고, API 분기테이블(800)에서 수신한 식별자에 대응하는 분기 처 어드레스를 추출하여, 추출한 분기 처 어드레스로 실행을 분기한다.
ZI섹션 B 초기화 API(702)는 ZI섹션 B(712)의 제로 초기화처리를 하는 실행코드(프로그램 명령)이다.
시큐어 API_A(703) 및 시큐어 API_B(704)는 각각 시큐어 프로그램의 API처리를 하는 실행코드(프로그램 명령)이다.
또한, 본 실시 예에서는 시큐어 프로그램의 시큐어 한 API를 ZI섹션 B 초기화 API(702) 및 시큐어 API_B(704) 2개로 설명하고 있으나, 2개로 한정되는 것은 아니며, 2개 이상 존재해도 된다.
(API 분기테이블(800)의 데이터구조)
API 분기테이블(800)의 데이터구조를 도 8에 도시한다.
API 분기테이블(800)은 복수의 분기 처 어드레스정보 811, 812 및 813으로 구성되어 있고, 분기 처 어드레스 정보 811, 812 및 813은 각각 시큐어 프로그램(202)에 포함되어 있는 ZI섹션 B 초기화 API(702), 시큐어 API_A(703) 및 시큐어 API_B(704)에 대응하고 있으며, 각 분기 처 어드레스정보는 식별자와 분기 처 어드레스를 포함한다.
여기서, 식별자는 당해 식별자를 포함하는 분기 처 어드레스정보에 대응하고 있는 API를 식별하는 식별정보이다. 또, 분기 처 어드레스는 당해 분기 처 어드레 스를 포함하는 분기 처 어드레스정보에 대응하고 있는 API가 시큐어 프로그램(202) 내에서 저장되어 있는 위치를 나타내는 논리어드레스이다.
다음에, 분기 처 어드레스정보 811, 812 및 813에 대해서 보다 구체적으로 설명한다.
분기 처 어드레스정보 811은, 도 9에 도시하는 바와 같이, 식별자(801) 「1」과 분기 처 어드레스(802) 「0xFFA01000」을 포함한다. 분기 처 어드레스정보 811은 ZI섹션 B 초기화 API(702)에 대해서 식별자(801) 「1」이 할당되고, 논리어드레스 「0xFFA01000」에 의해 개시위치가 지시되는 시큐어 프로그램(202) 내의 영역에 ZI섹션 B 초기화 API(702)의 실행코드(프로그램 명령)가 기억되어 있다는 것을 나타내고 있다.
따라서 식별자로 「1」이 지정되고, 시큐어 API 분기처리(701)에 의해 「0xFFA01000」으로 분기하면 ZI섹션 B 초기화 API(702)가 실행된다.
또, 분기 처 어드레스정보 812는, 도 9에 도시하는 바와 같이, 식별자(803) 「2」와 분기 처 어드레스(804) 「0xFFA02000」을 포함한다. 분기 처 어드레스정보 812는 시큐어 API_A(703)에 대해서 식별자(803) 「2」가 할당되고, 논리어드레스 「0xFFA02000」에 의해 개시위치가 지시되는 시큐어 프로그램(202) 내의 영역에 시큐어 API_A(703)의 실행코드(프로그램 명령)가 기억되어 있다는 것을 나타내고 있다.
따라서 식별자로 「2」가 지정되고, 시큐어 API 분기처리(701)에 의해 「0xFFA02000」으로 분기하면 시큐어 API_A(703)가 실행된다.
또한, 분기 처 어드레스정보 813은, 도 9에 도시하는 바와 같이, 식별자(805) 「3」과 분기 처 어드레스(806) 「0xFFA03000」을 포함한다. 분기 처 어드레스정보 813은 시큐어 API_B(704)에 대해서 식별자(805) 「3」이 할당되고, 논리어드레스 「0xFFA03000」에 의해 개시위치가 지시되는 시큐어 프로그램(202) 내의 영역에 시큐어 API_B(704)의 실행코드(프로그램 명령)가 기억되어 있다는 것을 나타내고 있다.
따라서 식별자로 「3」이 지정되고, 시큐어 API 분기처리(701)에 의해 「0xFFA03000」으로 분기하면 시큐어 API_B(704)가 실행된다.
또한, 본 실시 예에서는 API 분기테이블(800)은 식별자와 분기 처 어드레스를 포함하는 복수 개의 분기 처 어드레스정보로 구성되어 있으나, 이 구성에 한정되는 것은 아니며, 원하는 API로 분기하는 처리를 하기 위한 어드레스정보가 저장되어 있으면 된다.
(3) 시큐어 API의 실행순서
다음에, 시큐어 프로그램(202)의 시큐어 API가 실행되기까지의 순서에 대해서 설명한다.
(a) 애플리케이션 소프트웨어의 기동까지의 순서
여기에서는. 리셋 후, OS 프로그램(210)을 기동하여, OS상에서 동작하는 애플리케이션 소프트웨어가 기동하기까지의 순서에 대해서 도 10을 이용하여 설명한다.
본 실시 예에서는, 메모리(107) 내의 OS 관리 외 영역에서 워크 메모리(RAM) 로 이용하는 시큐어 프로그램용 워크 메모리(602) 내의 ZI섹션의 데이터 초기화처리에 관한 시간을 단축하기 위해, 상술한 바와 같이, 시큐어 프로그램(202)이 시큐어 프로그램의 RAM 데이터의 초기화처리를 분할하고 있다. 구체적으로는, ZI섹션의 초기화처리를 2단계로 분할하고 있다.
휴대전화(10)는 이용자에 의한 전원투입 등에 의해 리셋을 접수한다(스텝 S 900).
리셋 후, IPL 프로그램(201)은 OS의 기동에 필요한 하드웨어를 초기화한다(스텝 S 901).
다음에, IPL 프로그램(201)은 ZI섹션 A(711)의 데이터의 초기화를 실시한다(스텝 S 902).
ZI섹션 A(711)의 데이터의 초기화가 종료하면 커늘로 분기한다(스텝 S 903-S 904).
커늘로 분기 후에 이하에 설명하는 커늘의 초기화처리가 실행된다. 먼저, 커늘의 초기화처리로는 MMU(103)의 초기화가 실행되고(스텝 S 905), 다음에, 휴대전화(10)가 구비하는 OS가 이용하는 각종 디바이스의 초기화가 실행된다(스텝 S 906).
커늘의 초기화가 종료하면 OS가 기동하게 되고, 그 후, 각 애플리케이션 소프트웨어가 기동 된다(스텝 S 907).
여기서, 애플리케이션 소프트웨어 중 사용자에 의한 조작에 의해 기동 되는 것이 존재해도 좋다. 스텝 S 907이 실행되면, 휴대전화로서의 기능이 유효해지고, 착신 및 발신 등이 이루어지는 상태가 되며, 사용자가 휴대전화상의 각종 조작을 할 수 있는 상태가 된다.
(b) 시큐어 프로그램(202)의 실행까지의 순서
여기에서는, 시큐어 프로그램(202)이 실행되기까지의 순서를 도 11 및 도 12를 이용하여 설명한다.
여기서, 도 11은 시큐어 프로그램(202)의 ZI섹션의 초기화처리가 완료하기까지의 순서를 나타내고, 도 12는 시큐어 프로그램(202)의 ZI섹션의 초기화 완료 후, 시큐어 API의 기동까지의 순서를 나타내고 있다.
사용자에 의해 음악 재생버튼의 조작이 이루어지면(스텝 S 1000), OS는 시큐어 프로그램 호출부(212)로 처리를 옮긴다(스텝 S 1001-스텝 S 1002).
다음에, 시큐어 프로그램 호출부(212)는 스위치 디바이스 드라이버(213)를 오픈 하고(스텝 S 1003), 식별자로 「1」을 지정하며, 스위치 디바이스 드라이버(213)에 대해서 라이브러리 콜을 하고, 스위치 디바이스 드라이브(213)로 처리를 옮긴다(스텝 S 1004-스텝 S 1005).
다음에, 식별자 「1」을 수신한 스위치 디바이스 드라이버(213)는 시큐어 API 분기처리(701)로 분기하여, 시큐어 API 분기처리(701)로 처리를 옮긴다.
시큐어 API 분기처리(701)는 스택 포인터의 설정을 시큐어 프로그램(202)이 이용하는 것으로 되돌리고(스텝 S 1008), API 분기테이블(800)에서 식별자 「1」에 대응하는 분기 처 어드레스를 취득한다. 여기에서는, 식별자 「1」에 대응하는 ZI섹션 B 초기화 API(702)의 분기 처 어드레스(802) 「0xFFA01000」이 취득되며, 논 리어드레스 「0xFFA01000」에 의해 지시되는 저장위치에 저장되어 있는 실행코드, 즉, ZI섹션 B 초기화 API(702)로 분기한다(스텝 S 1001-스텝 S 1010).
「0xFFA01000」으로 처리가 분기하면, ZI섹션 B 초기화 API(702)가 실행된다(스텝 S 1011). 이에 의해 ZI섹션 B(712)의 초기화가 완료한다.
ZI섹션 B(712)의 초기화가 완료하면, 시큐어 API 분기처리(701)는 스택 포인터의 설정을 OS가 이용하는 것으로 되돌린다(스텝 S 1012).
그 후, OS상에서 동작하는 시큐어 프로그램 호출부(212)로 처리를 옮긴다(스텝 S 1013-스텝 S 1014).
이상에 의해 시큐어 API_A(703) 및 시큐어 API_B(704)가 이용하는 ZI섹션 A(711) 및 ZI섹션 B(712)의 초기화가 완료한다.
다음에, 시큐어 프로그램 호출부(212)는 시큐어 API의 식별자를 지정하고, 스위치 디바이스 드라이버(213)에 대해 라이브러리 콜을 하며, 스위치 디바이스 드라이버(213)로 처리를 옮긴다(스텝 S 1015-스텝 S 1016).
스위치 디바이스 드라이버(213)는 지정된 식별자를 시큐어 API 분기처리(701)에 출력하고, 시큐어 API 분기처리(701)로 분기한다(스텝 S 1017-스텝 S 1018).
시큐어 API 분기처리(701)는 스택 포인터의 설정을 시큐어 프로그램(202)이 이용하는 것으로 되돌리고(스텝 S 1019), 다음에, API 분기테이블(800)에서 수신한 식별자에 대응하는 분기 처 어드레스를 취득하여, 취득한 분기 처 어드레스로 분기한다(스텝 S 1020-스텝 S 1021).
다음에, 분기 처 어드레스에서 지시하는 위치에 저장되는 시큐어 프로그램(202)의 API처리가 실행된다(스텝 S 1022).
시큐어 API의 처리가 종료하면 스택 포인터의 설정을 OS가 이용하는 것으로 되돌린다(스텝 S 1023). 그 후, 시큐어 프로그램 호출부(212) 및 OS로 처리를 옮긴다(스텝 S 1024-스텝 S 1026).
도 12에 도시한 스텝 S 1015에서 스텝 S 1026까지의 처리는 도 11에 도시한 스텝 S 1000에서 스텝 S 1014까지의 처리가 완료한 후에 복수 회 실행해도 좋다. 도 11에 도시한 모든 스텝이 완료되었다는 것은 시큐어 프로그램을 실행함에 있어서 초기화되어야 할 ZI섹션의 초기화처리의 완료를 의미하고 있기 때문이다.
또한, 본 실시 예에서는, 시큐어 API_A(703)는 콘텐츠 키 취득을 행하는 컴퓨터 프로그램이고, 시큐어 API_B(704)는 암호화 콘텐츠(121)를 콘텐츠 키(131)를 이용하여 복호 하는 컴퓨터 프로그램이다.
이 경우, 먼저, 도 11에 도시한 모든 스텝이 실행되어 ZI섹션의 초기화가 완료한다. 다음에, 식별자를 「2」로 하여, 도 12에 도시한 모든 스텝이 실행됨으로써 콘텐츠 키(131)가 취득된다. 다음에, 식별자를 「3」으로 하여, 도 12에 도시한 모든 스텝이 실행됨으로써 콘텐츠 키(131)를 이용하여 암호화 콘텐츠(121)가 복호 된다.
2. 기타 변형 예
본 발명을 상기 실시 예에 의거하여 설명하였으나, 본 발명은 상기 실시 예에 한정되는 것은 물론 아니다. 이하와 같은 경우도 본 발명에 포함된다.
(1) 시큐어 프로그램(202)은, 시큐어 프로그램(202)의 실행 중에 IRQ, FIQ, 소프트웨어 인터럽트 등의 인터럽트가 발생한 경우에, 시큐어 프로그램(202)에 의한 처리를 일시 중단하고 시큐어 프로그램(202)에 의한 처리대상의 시큐어 데이터를 암호화하며, 인터럽트에 대응하는 처리가 완료한 후에 암호화 시큐어 데이터를 복호 하고, 시큐어 프로그램(202)에 의한 처리를 중단한 시점에서부터 시큐어 프로그램(202)에 의한 처리를 계속해서 실행하는 것으로 해도 된다. 구체적으로는 이하에 설명하는 바와 같다.
IPL에 의해 초기화되는 영역인 ZI섹션 A(711) 또는 시큐어 프로그램(202)에 의해 초기화되는 영역인 ZI섹션 B(712)에 시큐어 프로그램(202)의 초기화완료 플래그를 설치한다. 초기화완료 플래그는 시큐어 프로그램(202)에 의한 ZI섹션 B(712)의 초기화완료 후에 「1」로 설정되며, 시큐어 프로그램(202)이 실행되고 있는 동안에는 항상 「1」로 되어 있다.
이와 같이, 초기화완료 플래그를 ZI섹션에 설치해 두어도 좋다. 그러나 ZI섹션에 한정되는 것은 아니며, RW섹션에 초기화완료 플래그를 설치하는 것으로 해도 좋다.
일반적으로 컴퓨터 시스템에서는 IRQ, FIQ, 소프트웨어 인터럽트 등의 인터럽트가 발생하면, CPU의 예외벡터 테이블(exception vector table)로 분기한다. 예외벡터 테이블에는 인터럽트 요인별로 인터럽트처리 루틴이 등록되어 있어서, 예외벡터 테이블에 의해 인터럽트 요인별로 인터럽트처리 루틴으로 분기하여 필요한 인터럽트처리가 이루어진다.
본 변형 예에서는, 인터럽트가 발생하면 시큐어 프로그램(202)으로 분기하도록 미리 예외벡터 테이블에 등록을 해 둔다. 이와 같이 함으로써, 인터럽트가 발생할 때마다 시큐어 프로그램(202)으로 일단 처리를 옮기게 된다.
시큐어 프로그램(202)의 실행 중에 인터럽트가 발생한 경우의 처리순서를 도 13을 이용하여 설명한다.
시큐어 프로그램(202)은 ZI섹션 B의 초기화를 완료하면(스텝 S 1011) 초기화 플래그를 「1」로 세트 한다(스텝 S 1201).
시큐어 프로그램(202)이 실행되고 있는 동안에는 초기화완료 플래그는 항상 「1」로 되어 있다.
시큐어 프로그램(202)은 시큐어 API의 실행을 개시한다(스텝 S 1022).
IRQ, FIQ, 소프트웨어 인터럽트 등의 인터럽트가 발생하면(스텝 S 1202), CPU의 예외벡터 테이블로 처리를 옮긴다. 예외벡터 테이블에는 시큐어 프로그램(202)으로 분기하도록 미리 벡터가 등록되어 있으므로, 시큐어 프로그램(202)으로 분기한다(스텝 S 1203).
시큐어 프로그램(202)으로 분기 후, 시큐어 프로그램(202)은 초기화완료 플래그가 「1」인가 여부를 판단한다(스텝 S 1204).
초기화완료 플래그가 「1」이면(스텝 S 1204), 시큐어 프로그램(202)의 대상이 되는 처리가 실행중이므로, 시큐어 프로그램(202)은 인터럽트 발생시의 포인트를 퇴피하고(스텝 S 1206), 시큐어 프로그램(202)이 실행중에 이용하고 있는 시큐어 한 정보에 관련하는 시큐어 데이터(런 타임 데이터(runtime data))를 암호화하 여 암호화 시큐어 데이터를 생성한다(스텝 S 1207). 암호화 시큐어 데이터의 생성 후에 OS로 처리를 옮기며(스텝 S 1208), OS는 인터럽트 처리를 실시하고(스텝 S 1209), 인터럽트 처리가 종료하면 시큐어 프로그램(202)으로 처리를 옮긴다(스텝 S 1210). 시큐어 프로그램(202)은 초기화완료 플래그가 「1」인가 여부를 판단한다(스텝 S 1211). 초기화완료 플래그가 「1」이면(스텝 S 1211에서 YES) 시큐어 프로그램(202)은 암호화 시큐어 데이터를 복호 하여 복호 시큐어 데이터를 생성하고(스텝 S 1213), 인터럽트가 발생하여 시큐어 프로그램(202)의 처리가 중단하고 있던 포인터로 복귀하여(스텝 S 1214), 시큐어 프로그램(202)의 처리를 계속한다(스텝 S 1215).
시큐어 프로그램(202)의 대상인 처리의 실행이 종료하기 직전에 시큐어 프로그램(202)은 초기화완료 플래그를 「0」으로 설정하며(스텝 S 1216), 그 후, 시큐어 프로그램(202)의 실행이 종료한다.
초기화완료 플래그가 「1」이 아니면(스텝 S 1204에서 NO 또는 스텝 S 1211에서 NO) OS로 처리를 옮긴다(스텝 S 1205 또는 스텝 S 1212)
(2) 본 실시 예에서는, 시큐어 프로그램(202)은 암호화 콘텐츠를 복호 하는 복호 프로그램으로 하고 있으나, 이에 한정되는 것은 아니며, 비밀정보를 취급하는 프로그램으로 해도 좋다.
(3) 본 실시 예에서는, 스위치 디바이스 드라이버(213)가 OS 의존 2진 데이터에서 OS 비 의존 2진 데이터로 스위치 하는 스위치 인터페이스의 역할을 하고 있으나, 스위치 디바이스 드라이버(213)를 이용하지 않고, 시큐어 프로그램 호출 부(212)에서 시큐어 API 분기처리(701)로 직접 분기하도록 해도 좋다.
(4) 본 실시 예에서는, 시큐어 API 분기처리(701)가 스택 포인터의 설정을 시큐어 프로그램(202)이 이용하는 것으로 되돌리고, 또, 스택 포인터의 설정을 OS가 이용하는 것으로 되돌리도록 하고 있으나, 이에 한정되지는 않는다.
스위치 디바이스 드라이버(213)는 OS에서 시큐어 프로그램으로 스위치 할 때에, 스위치 시점에서 OS가 이용하고 있는 스택 포인터를 퇴피하고, 스택 포인터의 설정을 미리 퇴피해 둔 시큐어 프로그램용 스택 포인터로 되돌리는 명령을 포함하는 것으로 해도 좋다. 또, 스위치 디바이스 드라이버(213)는 시큐어 프로그램에서 OS로 스위치 할 때에, 스위치 시점에서 시큐어 프로그램이 이용하고 있는 스택 포인터를 퇴피하고, 스택 포인터의 설정을 미리 퇴피해 둔 OS용 스택 포인터로 되돌리는 명령을 포함하는 것으로 해도 좋다.
또, 시큐어 API 분기처리(701)가 상기 처리를 해도 좋다.
(5) 상술한 시큐어 프로그램은 BIOS(Basic Input/Output System)를 구성하는 그 일부의 프로그램으로 해도 좋다. BIOS는 일반적으로 컴퓨터에 접속된 디스크 드라이브, 키보드, 비디오카드 등의 주변기기를 제어하는 프로그램 군이다.
(6) 상기 실시 예에서는, 컴파일장치 30 및 컴파일장치 40은 각각 별개의 장치로 하고 있으나, 이에 한정되는 것은 아니다. 컴파일장치 30 및 컴파일장치 40은 각각이 갖는 구성요소를 구비한 1대의 컴파일장치로 구성되는 것으로 해도 좋다.
이 컴파일장치는, 오퍼레이팅 시스템을 구성하는 소스코드에 컴파일을 하여 제 1 오브젝트를 생성하는 제 1 컴파일 부와, 상기 제 1 오브젝트의 심벌 해결과 재배치 및 제 1 라이브러리에 포함되는 프로그램의 링크를 하여 오퍼레이팅 시스템인 실행가능형식의 제 1 소프트웨어를 생성하는 제 1 링크부와, 비밀정보를 이용하는 처리를 구성하는 소스코드에 컴파일을 하여 제 2 오브젝트를 생성하는 제 2 컴파일 부와, 상기 제 2 오브젝트의 심벌 해결과 재배치 및 제 2 라이브러리에 포함되는 프로그램의 링크를 하여 비밀정보를 이용하는 처리로 이루어지는 실행가능형식의 제 2 소프트웨어를 생성하는 제 2 링크부를 구비한다.
(7) 본 실시 예에서는, 시큐어 프로그램 소스에 대해서 내 탬퍼화 하는 예를 제시하고 있으나, 시큐어 프로그램 소스에 대해서 내 탬퍼화 수법을 실시해도 좋다.
내 탬퍼화 수법(tamper resistant technology)이란, 오리지널 코드(original code, 프로그램 명령)에 대해서 실행에 영향이 없는 불필요한 용장 코드(reduntant code)의 추가, 어떤 명령코드의 다른 등가의 명령코드로의 치환, 제어구조의 복잡화, 하나의 모듈(프로그램 명령의 집합)의 복수 모듈로의 분할 등의 난독화처리(難讀化處理)를 해 두거나, 또는, 오리지널 코드를 암호화해 두고 실행시에 복호 하는 것이다. 내 탬퍼화 수법을 적용하도록 함으로써 시큐어 프로그램(202)의 시큐어 레벨을 향상시켜도 좋다. 코드 암호화를 실시하는 경우에는 복호 한 코드를 전개하는 RAM영역은 OS가 액세스 불가능한 영역, 즉, 관리 외 영역으로 한다.
이 기술에 관해서는 비 특허문헌 1, 비 특허문헌 2 및 비 특허문헌 3에 상세하게 기술되어 있으므로 설명을 생략한다.
(8) 상기 실시 예에서는, IPL 프로그램(201)에 의해 ZI섹션 A(711)의 제로 초기화처리가 실행되고, 다음에 사용자에 의한 콘텐츠의 재생요구가 이루어져서 시큐어 프로그램(202)이 기동한 직후에 시큐어 프로그램(202)에 의해 ZI섹션 B(712)의 제로 초기화처리가 실행되는 것으로 하고 있으나, 이에 한정되지는 않는다.
IPL 프로그램(201)에 의해 ZI섹션 A(711) 중 일부의 변수의 제로 초기화처리가 실행되고, 시큐어 프로그램(202)에 의해 ZI섹션 B(712)의 일부의 변수의 제로 초기화처리가 실행되는 것으로 해도 된다.
또, 상기 실시 예 및 변형 예에서는 ZI섹션을 제로 값으로 초기화하는 것으로 하고 있으나, 이에 한정되지는 않는다. 제로 값 이외의 고정 값, 예를 들어 「0xffff」 등을 ZI섹션에 기록하는 것으로 해도 된다.
(9) 이상 설명한 바와 같이, 본 발명은, 프로그램 기억부와 데이터 기억부를 구비하며, 상기 프로그램 기억부는 제 1 소프트웨어와 제 2 소프트웨어를 기억하고, 상기 데이터 기억부는 제 1 데이터 기억부와 제 2 데이터 기억부로 이루어지며, 상기 제 1 데이터 기억부는 상기 제 1 소프트웨어가 액세스 가능한 영역이고, 상기 제 2 데이터 기억부는 상기 제 2 소프트웨어가 액세스 가능한 영역이며, 상기 제 1 소프트웨어는 상기 제 2 데이터 기억부에 액세스 불가능한 것을 특징으로 하는 시큐어 처리장치이다.
여기서, 상기 제 1 소프트웨어는 오퍼레이팅 시스템이고, 상기 제 2 소프트웨어는 비밀정보를 이용하는 소프트웨어로 해도 좋다.
여기서, 제 1 컴파일러는, 제 1 소프트웨어의 소스코드를 입력으로 하고, 제 1 오브젝트 코드를 출력하며, 제 1 링커는, 상기 제 1 오브젝트의 심벌 해결과 재 배치 및 제 1 라이브러리를 링크하는 기능을 가지며, 상기 제 1 오브젝트를 입력으로 하고, 상기 제 1 소프트웨어를 출력하며, 상기 제 1 소프트웨어는 상기 제 1 컴파일러 및 상기 제 1 링커에 의해 작성된 실행가능 데이터이고, 제 2 컴파일러는, 상기 제 1 컴파일러와는 다른 컴파일러로, 상기 제 2 소프트웨어의 소스코드를 입력으로 하고, 제 2 오브젝트를 출력하며, 제 2 링커는, 상기 제 1 링커와는 다른 링커로, 상기 제 1 오브젝트의 심벌 해결과 재배치 및 제 2 라이브러리 군을 링크하는 기능을 가지며, 상기 제 2 오브젝트를 입력으로 하고, 제 2 소프트웨어를 출력하며, 상기 제 2 소프트웨어는 상기 제 2 컴파일러 및 상기 제 2 링커에 의해 작성된 실행가능 데이터로 해도 좋다.
여기서, 상기 제 2 소프트웨어는 개찬 및 해석에 대해서 내성을 가진 소프트웨어로 해도 좋다.
여기서, 상기 제 2 소프트웨어가 이용하는 상기 제 2 데이터 기억부의 초기화처리를 적어도 하나 이상의 분할 초기화처리로 분할하는 것으로 해도 좋다.
여기서, 상기 분할 초기화처리 중 적어도 하나 이상의 분할 초기화처리는 상기 제 2 소프트웨어의 실행요구가 발행되기 전에 실행되는 것으로 해도 좋다.
여기서, 상기 분할 초기화처리는 상기 제 2 소프트웨어의 실행 전에 처리되도록 분산하여 상기 프로그램 기억부에 기억되어 있는 것으로 해도 좋다.
여기서, 상기 프로그램 기억부는 IPL을 더 포함하며, 상기 IPL이 적어도 하나 이상의 상기 분할 초기화처리를 실행하는 것으로 해도 좋다.
여기서, 상기 프로그램 기억부는 스위치 디바이스 드라이버를 더 포함하며, 상기 스위치 디바이스 드라이버가 상기 제 1 소프트웨어로부터 제 2 소프트웨어로 처리를 옮기는 것으로 해도 좋다.
여기서, 상기 스위치 디바이스 드라이버는, 상기 제 1 소프트웨어가 이용하는 제 1 스택 포인터와 상기 제 2 소프트웨어가 이용하는 제 2 스택 포인터를 관리하며, 상기 제 1 소프트웨어가 실행되는 경우에는, 상기 스위치 디바이스 드라이버는 스택 포인터를 상기 제 1 스택 포인터에 설정하고, 상기 제 2 소프트웨어가 실행되는 경우에는, 상기 스위치 디바이스 드라이버는 스택 포인터를 상기 제 2 스택 포인터에 설정하는 것으로 해도 좋다.
(10) 상기 각 장치는, 구체적으로는, 마이크로 프로세서, ROM, RAM 등으로 구성되는 컴퓨터시스템이다. 상기 RAM에는 컴퓨터 프로그램이 기억되어 있다. 여기서, 컴퓨터 프로그램은 소정의 기능을 달성하기 위해 컴퓨터에 대한 지령을 나타내는 명령코드가 복수 개 조합되어 구성된 것이다. 상기 마이크로 프로세서가 상기 컴퓨터 프로그램에 따라서 동작함으로써 각 장치는 그 기능을 달성한다. 즉, 마이크로 프로세서는 상기 컴퓨터 프로그램에 포함되는 각 명령을 하나씩 판독하고, 판독한 명령을 해독하여, 해독한 결과에 따라서 동작한다.
(11) 상기 각 장치를 구성하는 구성요소의 일부 또는 전부는 하나의 시스템 LSI(Large Scale Integration : 대규모 집적회로)로 구성되어 있는 것으로 해도 좋다. 시스템 LSI는 복수의 구성부를 하나의 칩 상에 집적하여 제조된 초 다기능 LSI이며, 구체적으로는, 마이크로 프로세서, ROM, RAM 등을 포함하여 구성되는 컴퓨터시스템이다. 상기 RAM에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로 프로 세서가 상기 컴퓨터 프로그램에 따라서 동작함으로써 시스템 LSI는 그 기능을 달성한다.
또, 상기 각 장치를 구성하는 구성요소의 각 부는 개별로 1 칩화되어도 좋고, 일부 또는 전부를 포함하도록 1 칩화되어도 좋다. 또, 여기에서는 LSI로 하였으나, 집적도의 차이에 따라서 IC, 시스템 LSI, 슈퍼 LSI, 울트라 LSI로 호칭되는 경우도 있다.
또, 집적화의 방법은 LSI에 한정되는 것은 아니며, 전용 회로 또는 범용 프로세서로 실현해도 좋다. LSI의 제조 후에, 프로그램을 할 수 있는 FPGA(Field Programmable Gate Array)나 LSI 내부의 회로 셀의 접속 및 설정을 재구성할 수 있는 리컨피그러블 프로세서(reconfigurable processor)를 이용해도 좋다.
나아가서는, 반도체기술의 진보 또는 파생하는 다른 기술에 의해 LSI를 대치할 수 있는 기술이 등장하면, 당연히 그 기술을 이용하여 기능 블록의 집적화를 해도 좋다. 바이오 기술의 적응 등을 가능성으로 들 수 있다.
(12) 상기 각 장치를 구성하는 구성요소의 전부 또는 일부는 각 장치에 착탈 가능한 IC카드 도는 단일 체의 모듈로 구성되어 있어도 된다. 상기 IC카드 또는 상기 모듈은 마이크로 프로세서, ROM, RAM 등으로 구성되는 컴퓨터시스템이다. 상기 IC카드 또는 상기 모듈은 상기 초 다기능 LSI를 포함해도 좋다. 마이크로 프로세서가 컴퓨터 프로그램에 따라서 동작함으로써 상기 IC카드 또는 상기 모듈은 그 기능을 달성한다. 이 IC카드 또는 모듈은 내 탬퍼성을 갖는 것으로 해도 좋다.
(13) 본 발명은 상기에서 설명한 방법으로 해도 좋다. 또, 이들 방법을 컴퓨 터에 의해 실현하는 컴퓨터 프로그램으로 해도 좋고, 상기 컴퓨터 프로그램으로 이루어지는 디지털 신호로 해도 좋다.
또, 본 발명은 상기 컴퓨터 프로그램 또는 상기 디지털 신호를 컴퓨터 판독 가능한 기록매체, 예를 들어, 플렉시블 디스크, 하드디스크, CD-ROM, DVD, DVD-ROM, DVD-RAM, BD(Blu-ray Disc), 반도체 메모리 등에 기록한 것으로 해도 좋다. 또, 이들 기록매체에 기록되어 있는 상기 컴퓨터 프로그램 또는 상기 디지털신호로 해도 좋다.
또, 본 발명은 상기 컴퓨터 프로그램 또는 상기 디지털신호를 전기통신회선, 무선 또는 유선통신회선, 인터넷을 대표로 하는 네트워크, 데이터방송 등을 경유하여 전송하는 것으로 해도 좋다.
또, 본 발명은 마이크로 프로세서와 메모리를 구비한 컴퓨터 시스템으로, 상기 메모리는 상기 컴퓨터 프로그램을 기억하고 있고, 상기 마이크로 프로세서가 상기 컴퓨터 프로그램에 따라서 동작하는 것으로 해도 된다.
또, 상기 컴퓨터 프로그램 또는 상기 디지털신호를 기록매체에 기록하여 이송함으로써, 도는 상기 컴퓨터 프로그램 또는 상기 디지털신호를 상기 네트워크 등을 경유하여 이송함으로써 독립된 다른 컴퓨터시스템에 의해 실시해도 된다.
(14) 상기 실시 예 및 상기 변형 예를 각각 조합한 것으로 해도 된다.
본 발명의 시큐어 처리장치 및 방법은 비밀정보를 이용한 프로그램을 OS 관리 외의 메모리 상에서 동작시킴으로써, OS상에서 동작하는 소프트웨어 디버거로부 터의 해석을 방지하는 효과와, OS 관리 외에서 동작하는 프로그램의 RAM 데이터의 초기화처리를 분할하여 행함으로써 사용자 요구 발생 후에서부터 상기 프로그램이 기동하기까지의 처리를 단축하는 효과를 가지며, 시큐어 한 소프트웨어의 처리방법으로 유용하다.
본 발명을 구성하는 각 장치는 콘텐츠를 제작하고 배급하는 콘텐츠 배급산업에서, 또, 그 외의 비밀을 유지할 필요가 있는 정보를 취급하는 산업에서 경영적으로, 또 계속적 및 반복적으로 사용할 수 있다. 또, 본 발명을 구성하는 각 장치는 전기기 제조산업에서 경영적으로, 또 계속적 및 반복적으로 제조 및 판매할 수 있다.

Claims (13)

  1. 컴퓨터시스템으로,
    기본 프로그램, 통상 프로그램 및 시큐어 프로그램(secure program)에 포함되어 있는 각 명령을 판독하여, 해독하고, 그 해독결과에 따라서 동작하는 프로세서와,
    관리영역 및 상기 관리영역과는 다른 관리 외 영역으로 구성되는 메모리 수단을 구비하며,
    상기 기본 프로그램은, 오퍼레이팅 시스템(operating system)을 구성하고, 상기 통상 프로그램에 대해서 상기 관리영역만을 액세스공간으로 하는 액세스를 중개하는 명령을 포함하며,
    상기 통상 프로그램은 상기 기본 프로그램을 통해서 상기 관리영역에 액세스하는 명령을 포함하고,
    상기 시큐어 프로그램은, 오퍼레이팅 시스템에 의존하지 않는 프로그램이며, 상기 관리 외 영역만을 액세스공간으로 하여 액세스하는 명령을 포함하는 것을 특징으로 하는 컴퓨터시스템.
  2. 청구항 1에 있어서,
    상기 관리영역은 상기 기본 프로그램 및 상기 통상 프로그램을 더 기억하고 있고,
    상기 관리 외 영역은 상기 시큐어 프로그램을 더 기억하고 있으며,
    상기 프로세서는, 상기 관리영역에 기억되어 있는 기본 프로그램 및 상기 통상 프로그램에 포함되어 있는 각 명령을 판독하고, 상기 관리 외 영역에 기억되어 있는 상기 시큐어 프로그램에 포함되어 있는 각 명령을 판독하는 것을 특징으로 하는 컴퓨터시스템.
  3. 청구항 2에 있어서,
    상기 시큐어 프로그램은 상기 관리 외 영역에 저장되는 비밀로 하여야 하는 정보에 관한 비밀처리(confidentiality process)를 행하는 명령을 포함하는 것을 특징으로 하는 컴퓨터시스템.
  4. 청구항 3에 있어서,
    상기 관리영역은 기본 프로그램의 지시에 의해 기본 프로그램에서 시큐어 프로그램으로 실행의 스위치를 행하는 명령을 포함하는 스위치 프로그램(switch program)을 더 기억하고 있고,
    상기 프로세서는 상기 관리영역에 기억되어 있는 상기 스위치 프로그램에 포함되어 있는 명령을 더 판독하여, 해독하고, 그 결과에 따라서 동작하며,
    상기 기본 프로그램은 상기 스위치 프로그램에 대해서 시큐어 프로그램으로의 스위치를 지시하는 명령을 더 포함하고,
    상기 시큐어 프로그램은 상기 비밀처리의 종료 후에 시큐어 프로그램에서 기 본 프로그램으로의 실행의 스위치를 행하는 명령을 더 포함하는 것을 특징으로 하는 컴퓨터시스템.
  5. 청구항 4에 있어서,
    상기 스위치 프로그램은, 시큐어 프로그램에서 기본 프로그램으로의 실행의 스위치 시에 스택 포인터(stack pointer)의 설정을 기본 프로그램이 이용하는 것으로 되돌리는 명령을 포함하고, 시큐어 프로그램에서 기본 프로그램으로의 실행의 스위치 시에 스택 포인터의 설정을 시큐어 프로그램이 이용하는 것으로 되돌리는 명령을 포함하는 것을 특징으로 하는 컴퓨터시스템.
  6. 청구항 3에 있어서,
    상기 시큐어 프로그램은 난독화(難讀化, obfuscate)가 되어 있는 것을 특징으로 하는 컴퓨터시스템.
  7. 청구항 3에 있어서,
    상기 시큐어 프로그램은 초기화처리를 필요로 하며, 초기화처리는 복수의 프로그램에 의해 이루어지는 것을 특징으로 하는 컴퓨터시스템.
  8. 청구항 7에 있어서,
    상기 복수의 프로그램은 상기 시큐어 프로그램에 의한 상기 비밀처리에 선행 하여 실행되는 것을 특징으로 하는 컴퓨터시스템.
  9. 청구항 8에 있어서,
    상기 복수의 초기화 프로그램 중 일부의 초기화 프로그램은 다른 초기화 프로그램과는 다른 시기에 실행되는 것을 특징으로 하는 컴퓨터시스템.
  10. 청구항 9에 있어서,
    일부의 초기화 프로그램은 당해 컴퓨터시스템의 리셋 직후에 실행되고,
    시큐어 프로그램에 포함되는 초기화 프로그램은 시큐어 프로그램의 실행이 요구된 때에 실행되는 것을 특징으로 하는 컴퓨터시스템.
  11. 집적회로로,
    기본 프로그램, 통상 프로그램 및 시큐어 프로그램에 포함되어 있는 각 명령을 판독하여, 해독하고, 그 해독결과에 따라서 동작하는 프로세서와,
    관리영역 및 상기 관리영역과는 다른 관리 외 영역으로 구성되는 메모리 수단을 구비하며,
    상기 기본 프로그램은, 오퍼레이팅 시스템을 구성하고, 상기 통상 프로그램에 대해서 상기 관리영역만을 액세스공간으로 하는 액세스를 중개하는 명령을 포함하며,
    상기 통상 프로그램은 상기 기본 프로그램을 통해서 상기 관리영역에 액세스 하는 명령을 포함하고,
    상기 시큐어 프로그램은, 오퍼레이팅 시스템에 의존하지 않는 프로그램이며, 상기 관리 외 영역만을 액세스공간으로 하여 액세스하는 명령을 포함하는 것을 특징으로 하는 집적회로.
  12. 프로그램 생성장치로,
    오퍼레이팅 시스템을 구성하는 소스코드(source code)로부터, 실행대상의 장치가 갖는 관리영역에만 액세스하는 제 1 오브젝트 코드(object code)를 생성하는 제 1 오브젝트 생성부와,
    비밀정보를 사용하는 처리의 소스코드로부터, 상기 실행대상의 장치가 가지며, 상기 관리영역과는 다른 관리 외 영역에만 액세스하는 제 2 오브젝트 코드를 생성하는 제 2 오브젝트 생성부를 구비하는 것을 특징으로 하는 프로그램 생성장치.
  13. 기본 프로그램 및 시큐어 프로그램을 기록하고 있는 컴퓨터 판독 가능한 기록매체로,
    상기 기본 프로그램은, 오퍼레이팅 시스템을 구성하고, 상기 오퍼레이팅 시스템의 관리 하에서 동작하는 통상 프로그램에 대해서, 실행 대상의 장치가 갖는 관리영역만을 액세스공간으로 하는 액세스를 중개하는 명령을 포함하며,
    상기 시큐어 프로그램은, 오퍼레이팅 시스템에 의존하지 않는 프로그램이며, 상기 실행대상의 장치가 가지며, 상기 관리영역과는 다른 관리 외 영역만을 액세스공간으로 하여 액세스하는 명령을 포함하는 것을 특징으로 하는 기록매체.
KR1020077027157A 2005-06-01 2006-05-30 컴퓨터시스템 및 프로그램 생성장치 KR20080014786A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005161359 2005-06-01
JPJP-P-2005-00161359 2005-06-01

Publications (1)

Publication Number Publication Date
KR20080014786A true KR20080014786A (ko) 2008-02-14

Family

ID=37481570

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077027157A KR20080014786A (ko) 2005-06-01 2006-05-30 컴퓨터시스템 및 프로그램 생성장치

Country Status (6)

Country Link
US (1) US7962746B2 (ko)
EP (1) EP1890237A1 (ko)
JP (1) JP4850830B2 (ko)
KR (1) KR20080014786A (ko)
CN (1) CN101189586B (ko)
WO (1) WO2006129641A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7861046B2 (en) * 2007-06-29 2010-12-28 Sandisk Corporation Secure digital host sector application flag compression
JP2009070327A (ja) * 2007-09-18 2009-04-02 Panasonic Corp 情報端末及び情報端末の制御方法
US8775824B2 (en) * 2008-01-02 2014-07-08 Arm Limited Protecting the security of secure data sent from a central processor for processing by a further processing device
JP4953385B2 (ja) * 2008-03-17 2012-06-13 株式会社日立ソリューションズ アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置
US9086913B2 (en) * 2008-12-31 2015-07-21 Intel Corporation Processor extensions for execution of secure embedded containers
US9207968B2 (en) * 2009-11-03 2015-12-08 Mediatek Inc. Computing system using single operating system to provide normal security services and high security services, and methods thereof
US20120079278A1 (en) * 2010-09-28 2012-03-29 Microsoft Corporation Object security over network
US8910307B2 (en) 2012-05-10 2014-12-09 Qualcomm Incorporated Hardware enforced output security settings
GB2515047B (en) * 2013-06-12 2021-02-10 Advanced Risc Mach Ltd Security protection of software libraries in a data processing apparatus
CN103365687B (zh) * 2013-06-28 2017-02-08 北京创毅讯联科技股份有限公司 处理器启动方法、装置及提供初始程序装入程序的装置
US10754967B1 (en) * 2014-12-15 2020-08-25 Marvell Asia Pte, Ltd. Secure interrupt handling between security zones
CA2974990C (en) * 2015-01-27 2020-11-17 Arris Enterprises Llc Obfuscation for protection of streaming media and other data flows
CN108416209B (zh) * 2018-03-07 2021-10-22 北京元心科技有限公司 程序安全验证方法、装置及终端设备

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0290330A (ja) * 1988-09-28 1990-03-29 Hitachi Ltd プログラム構成方式
US5522072A (en) * 1990-09-04 1996-05-28 At&T Corp. Arrangement for efficiently transferring program execution between subprograms
US5303378A (en) * 1991-05-21 1994-04-12 Compaq Computer Corporation Reentrant protected mode kernel using virtual 8086 mode interrupt service routines
US5826057A (en) * 1992-01-16 1998-10-20 Kabushiki Kaisha Toshiba Method for managing virtual address space at improved space utilization efficiency
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5892899A (en) * 1996-06-13 1999-04-06 Intel Corporation Tamper resistant methods and apparatus
US5757919A (en) * 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US6393569B1 (en) * 1996-12-18 2002-05-21 Alexander S. Orenshteyn Secured system for accessing application services from a remote station
JP3718578B2 (ja) 1997-06-25 2005-11-24 ソニー株式会社 メモリ管理方法及びメモリ管理装置
US6269409B1 (en) * 1997-09-02 2001-07-31 Lsi Logic Corporation Method and apparatus for concurrent execution of operating systems
US6772419B1 (en) * 1997-09-12 2004-08-03 Hitachi, Ltd. Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
US6996828B1 (en) * 1997-09-12 2006-02-07 Hitachi, Ltd. Multi-OS configuration method
US6385727B1 (en) * 1998-09-25 2002-05-07 Hughes Electronics Corporation Apparatus for providing a secure processing environment
US7140015B1 (en) * 1999-09-29 2006-11-21 Network Appliance, Inc. Microkernel for real time applications
WO2001077837A1 (en) * 2000-04-11 2001-10-18 Mathis Richard M Method and apparatus for computer memory protection and verification
JP2001290665A (ja) * 2000-04-11 2001-10-19 Nec Software Hokuriku Ltd プロセッサシステム
SG118081A1 (en) * 2000-07-24 2006-01-27 Sony Corp Information processing method inter-task communication method and computer-excutable program for thesame
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
JP2002251326A (ja) * 2001-02-22 2002-09-06 Hitachi Ltd 耐タンパ計算機システム
JP2002353960A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
JP2003280755A (ja) * 2002-03-25 2003-10-02 Nec Corp 自己復元型プログラム、プログラム生成方法及び装置、情報処理装置並びにプログラム
JP2003280754A (ja) * 2002-03-25 2003-10-02 Nec Corp 隠蔽化ソースプログラム、ソースプログラム変換方法及び装置並びにソース変換プログラム
US7313797B2 (en) * 2002-09-18 2007-12-25 Wind River Systems, Inc. Uniprocessor operating system design facilitating fast context switching
US7117284B2 (en) * 2002-11-18 2006-10-03 Arm Limited Vectored interrupt control within a system having a secure domain and a non-secure domain
GB0226874D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Switching between secure and non-secure processing modes
GB2402785B (en) * 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Processor switching between secure and non-secure modes
US7383587B2 (en) * 2002-11-18 2008-06-03 Arm Limited Exception handling control in a secure processing system
US7149862B2 (en) * 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
US7539853B2 (en) * 2002-11-18 2009-05-26 Arm Limited Handling interrupts in data processing of data in which only a portion of a function has been processed
US7370210B2 (en) * 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
GB2396451B (en) * 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Delivering data processing requests to a suspended operating system
US7171539B2 (en) * 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
DE60304602T2 (de) * 2002-11-18 2006-12-28 Arm Ltd., Cherry Hinton Ausnahmearten innerhalb eines sicheren verarbeitungssystems
GB2396712B (en) * 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Handling multiple interrupts in a data processing system utilising multiple operating systems
GB2396930B (en) * 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
AU2003278350A1 (en) * 2002-11-18 2004-06-15 Arm Limited Secure memory for protecting against malicious programs
US7231476B2 (en) * 2002-11-18 2007-06-12 Arm Limited Function control for a processor
GB2396034B (en) * 2002-11-18 2006-03-08 Advanced Risc Mach Ltd Technique for accessing memory in a data processing apparatus
GB2395583B (en) * 2002-11-18 2005-11-30 Advanced Risc Mach Ltd Diagnostic data capture control for multi-domain processors
GB2396713B (en) * 2002-11-18 2005-09-14 Advanced Risc Mach Ltd Apparatus and method for controlling access to a memory unit
GB2411254B (en) * 2002-11-18 2006-06-28 Advanced Risc Mach Ltd Monitoring control for multi-domain processors
KR101099463B1 (ko) * 2002-11-18 2011-12-28 에이알엠 리미티드 보안 도메인과 비보안 도메인을 갖는 시스템 내에서 가상메모리 어드레스의 물리적 메모리 어드레스로의 매핑
AU2003278342A1 (en) * 2002-11-18 2004-06-15 Arm Limited Security mode switching via an exception vector
US20040168078A1 (en) * 2002-12-04 2004-08-26 Brodley Carla E. Apparatus, system and method for protecting function return address
JP4347582B2 (ja) * 2003-02-04 2009-10-21 パナソニック株式会社 情報処理装置
US7401335B2 (en) * 2003-02-28 2008-07-15 Wind River Systems, Inc. Single stack kernel
US20040243783A1 (en) * 2003-05-30 2004-12-02 Zhimin Ding Method and apparatus for multi-mode operation in a semiconductor circuit
US7415618B2 (en) * 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation
CN1922576A (zh) * 2003-09-30 2007-02-28 扎鲁纳股份有限公司 操作系统
EP1688816A4 (en) * 2003-11-28 2012-04-25 Panasonic Corp DATA PROCESSING DEVICE
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
FR2872933B1 (fr) * 2004-07-06 2008-01-25 Trusted Logic Sa Procede de partage de temps d'un processeur
WO2006018307A2 (en) * 2004-08-18 2006-02-23 Jaluna Sa Operating systems
US7568186B2 (en) * 2005-06-07 2009-07-28 International Business Machines Corporation Employing a mirror probe handler for seamless access to arguments of a probed function
US7797681B2 (en) * 2006-05-11 2010-09-14 Arm Limited Stack memory selection upon exception in a data processing system

Also Published As

Publication number Publication date
EP1890237A1 (en) 2008-02-20
US7962746B2 (en) 2011-06-14
CN101189586B (zh) 2011-06-15
CN101189586A (zh) 2008-05-28
JP4850830B2 (ja) 2012-01-11
US20090106832A1 (en) 2009-04-23
JPWO2006129641A1 (ja) 2009-01-08
WO2006129641A1 (ja) 2006-12-07

Similar Documents

Publication Publication Date Title
KR20080014786A (ko) 컴퓨터시스템 및 프로그램 생성장치
KR101954733B1 (ko) 보안 콘텐츠를 처리하는 시스템 온 칩 및 그것을 포함하는 모바일 장치
JP5821034B2 (ja) 情報処理装置、仮想マシン生成方法及びアプリ配信システム
JP5175856B2 (ja) セキュアデバイス・システムにおけるフラッシュメモリ・ブロックの保護と方法
JP5647360B2 (ja) メモリ範囲を無作為に割り当てたセキュアシステムにおいてjitをサポートするためのシステム及び方法
CN101661544B (zh) 在主显示器内提供安全显示窗口的方法和设备
US8307215B2 (en) System and method for an autonomous software protection device
WO2007011001A1 (ja) 実行装置
EP1736848A1 (en) Execution device
US7908450B2 (en) Memory management unit, code verifying apparatus, and code decrypting apparatus
WO2005098570A1 (ja) 実行装置
KR20160075499A (ko) 가상 머신 관리자에 의해 촉진되는 선택적 코드 무결성 강화 기법
JP2010517424A (ja) Usbトークン上の暗号化キーコンテナ
US20040230801A1 (en) Data processing device and method and program of same
WO2011134207A1 (zh) 软件保护方法
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
JP2023047278A (ja) トランスフォーマ鍵識別子を使用する仮想機械マネージャによる信頼されたドメイン保護メモリへのシームレスなアクセス
CN107871066B (zh) 基于安卓系统的代码编译方法及装置
CN110597496B (zh) 应用程序的字节码文件获取方法及装置
JP2002244757A (ja) 半導体回路
JP2005149394A (ja) 情報処理装置および情報処理方法、プログラム、並びに記録媒体
KR20190060181A (ko) 공유 오브젝트의 코드 보호를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법
Tang et al. Techniques for IoT System Security
JP2023065323A (ja) コンピュータに実装された方法、システム及びコンピュータプログラム
JP2012118947A (ja) 組み込み機器、暗号化・復号方法、プログラム

Legal Events

Date Code Title Description
A201 Request for examination
E601 Decision to refuse application