KR101037006B1 - 데이터 처리장치 - Google Patents

데이터 처리장치 Download PDF

Info

Publication number
KR101037006B1
KR101037006B1 KR1020067012914A KR20067012914A KR101037006B1 KR 101037006 B1 KR101037006 B1 KR 101037006B1 KR 1020067012914 A KR1020067012914 A KR 1020067012914A KR 20067012914 A KR20067012914 A KR 20067012914A KR 101037006 B1 KR101037006 B1 KR 101037006B1
Authority
KR
South Korea
Prior art keywords
program
secure
normal
information
data
Prior art date
Application number
KR1020067012914A
Other languages
English (en)
Other versions
KR20060107826A (ko
Inventor
다카유키 이토
데루토 히로타
고우이치 가네무라
도모유키 하가
요시카츠 이토
Original Assignee
파나소닉 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 파나소닉 주식회사 filed Critical 파나소닉 주식회사
Publication of KR20060107826A publication Critical patent/KR20060107826A/ko
Application granted granted Critical
Publication of KR101037006B1 publication Critical patent/KR101037006B1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06CDIGITAL COMPUTERS IN WHICH ALL THE COMPUTATION IS EFFECTED MECHANICALLY
    • G06C1/00Computing aids in which the computing members form at least part of the displayed result and are manipulated directly by hand, e.g. abacuses or pocket adding devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Abstract

보호대상이 되는 시큐어 리소스에 액세스하는 시큐어 모드와 시큐어 리소스에 액세스할 수 없는 통상 모드를 스위칭하여 실행하는 데이터 처리장치에서, 시큐어 모드로 상기 시큐어 리소스가 증대하면 상기 리소스를 보호하는 보호기구에 관한 부하가 커진다. 따라서, 시큐어 리소스를 삭감할 수 있는 데이터 처리장치에 대한 요구가 있다. 본 발명은 상기 시큐어 리소스를 이용하는 하나 이상의 처리 순서와 통상 모드로 실행되는 통상 프로그램을 호출하는 호출명령을 포함하는 시큐어 프로그램을 기억하고 있고, 상기 시큐어 프로그램의 실행 도중에 상기 호출명령에 의해 통상 프로그램을 호출하고, 호출한 통상 프로그램에 따라서 동작하는 처리장치이다.
Figure R1020067012914
시큐어 모드, 통상 모드, 스위칭, 시큐어 프로그램, 통상 프로그램

Description

데이터 처리장치{DATA PROCESSING DEVICE}
본 발명은 시큐어 리소스(secure resource)에 액세스할 수 있는 시큐어 모드와 시큐어 리소스 이외의 통상 리소스(normal resource)에만 액세스할 수 있는 통상 모드를 스위칭(switching)하여, 프로그램을 실행하는 장치에서, 시큐어 모드에서 실행되는 프로그램과 통상 모드에서 실행되는 프로그램에 대응하여 동작하도록 하는 기술에 관한 것이다.
최근, 다양한 기기에서 음악 및 영상을 포함하는 디지털 콘텐츠가 취급되고 있다. 이들 기기는 디지털 콘텐츠의 품질의 저하 없이 복제나 편집을 할 수 있다. 그러나 저작권의 관점에서 이들 디지털 콘텐츠는 보호되어야 할 필요가 있다.
종래기술에 의하면, 보호되어야 할 시큐어 데이터(secure data) 및 보호되어야 할 시큐어 애플리케이션(secure application)에 대해서 액세스 가능한 시큐어 모드와, 이들 시큐어 데이터 및 시큐어 애플리케이션에 액세스할 수 없는 통상 모드를 모니터에 의해서 스위칭하여 실행하는 데이터 처리장치가 개시되어 있다. 이 기술에 의하면, 통상 모드에서 동작하는 애플리케이션은 통상 모드에서 동작하는 오퍼레이팅 시스템을 통해서 시큐어 애플리케이션에 처리를 의뢰한다. 오퍼레이팅 시스템은 모니터에 실행 모드의 스위칭을 의뢰하고, 모니터는 실행 모드를 스위칭 한다. 시큐어 애플리케이션은 의뢰된 처리를 행하고, 처리결과를 시큐어 실행 모드로 동작하는 시큐어 오퍼레이팅 시스템(secure operating system)을 통해서 애플리케이션에 반환한다. 시큐어 오퍼레이팅 시스템은 모니터에 실행 모드의 스위칭을 의뢰하며, 모니터는 실행 모드를 스위칭한다. 이와 같은 구성에 의해, 시큐어 모드와 통상 모드를 스위칭하여 실행함으로써, 통상 모드에서 동작하는 애플리케이션으로부터 직접 시큐어 데이터나 시큐어 애플리케이션에 액세스할 수는 없다. 따라서, 시큐어 데이터 및 시큐어 애플리케이션을 보호할 수 있다.
비 특허문헌 1 : A New Foundation for CPU Systems Security(2003년 11월 20일 검색,
URL:http://www.arm.com/armtech.nsf/htmlall/FC4C07580E29428080256D1A004A2345/$File/TrustZone#WP.pdf?OpenElement)
그러나 종래기술에서 제시된 방법에서는, 통상 모드에서 사용하는 메모리와는 별개로 시큐어 모드에서 사용하는 데이터 및 프로그램 등을 기억하는 메모리를 보호할 필요가 있다. 시큐어 모드에서 사용되는 메모리는 부정한 액세스로부터 당해 메모리를 보호하는 보호기구를 필요로 한다. 따라서, 시큐어 모드에서 사용되는 메모리가 증가하면 보호기구에 관한 부하가 커지게 되어, 보호기구의 규모를 크게 해야 할 경우가 발생한다. 이런 이유로, 시큐어 모드에서 사용되는 메모리를 줄일 수 있는 데이터 처리장치에 대한 요구가 있다.
그래서 본 발명은 이와 같은 문제점에 감안하여 이루어진 것으로, 시큐어 모드에서 사용되는 메모리를 줄일 수 있는 데이터 처리장치, 데이터 처리방법, 데이 터 처리 프로그램 및 기록매체를 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위해서 본 발명은, 보호대상인 시큐어 리소스의 이용이 허가되는 시큐어 모드와, 보호대상 외의 통상 리소스의 이용만이 허가되는 통상 모드를 스위칭하여 프로그램을 실행하는 데이터 처리장치로, 상기 통상 리소스를 이용하는 하나 이상의 처리순서로 구성되는 통상 프로그램을 기억하고 있는 통상 기억수단과, 상기 시큐어 리소스를 이용하는 하나 이상의 처리순서로 구성되고, 적어도 상기 통상 프로그램을 호출하는 호출명령을 포함하는 시큐어 프로그램을 기억하고 있는 시큐어 기억수단과, 시큐어 모드에서 다음에 실행해야 할 명령이 상기 호출명령인가 여부를 판단하는 판단수단과, 시큐어 모드에서 상기 호출명령이라고 판단되는 경우에, 당해 호출명령에 의해 호출되는 상기 통상 프로그램을 나타내는 식별정보를 출력하는 출력수단과, 상기 호출명령이라고 판단되는 경우에, 시큐어 리소스를 보호하여, 시큐어 모드에서 통상 모드로 스위칭하는 스위칭수단과, 통상 모드에서 상기 식별정보를 수신하는 수신수단과, 통상 모드에서 수신한 상기 식별정보에 의해 지시되는 상기 통상 프로그램을 상기 통상 기억수단으로부터 판독하는 판독수단과, 통상 모드에서 판독한 통상 프로그램에 따라서 동작하는 처리수단을 구비하는 것을 특징으로 한다.
상기 구성에 의하면, 상기 시큐어 프로그램은 상기 호출명령을 포함하며, 다음에 실행해야 할 명령이 상기 호출명령인 경우, 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭하고, 통상 모드에서 수신수단은 상기 식별정보를 수신하며, 판독수단은 수신한 상기 식별정보에 의해 표시되는 상기 통상 프로그램을 상기 통상 기억수단으로부터 판독하고, 처리수단은 판독한 통상 프로그램에 따라서 동작한다. 따라서, 상기 호출명령을 실행함으로써 상기 시큐어 프로그램은 통상 모드에서 동작하는 통상 프로그램에 처리를 의뢰할 수 있다. 즉, 시큐어 리소스를 이용하지 않는 처리를 통상 프로그램에 실행시킴으로써, 시큐어 프로그램 자체의 프로그램 사이즈가 감소한다. 또한, 시큐어 모드에서 시큐어 프로그램이 사용하는 메모리를 감소시킬 수 있다.
상기 데이터 처리장치에서 상기 스위칭수단은 상기 시큐어 프로그램을 제어하는 시큐어 오퍼레이팅 시스템을 중단시키고, 상기 통상 프로그램을 제어하는 통상 오퍼레이팅 시스템을 기동함으로써 시큐어 모드에서 통상 모드로 스위칭한다.
이 구성에 의하면, 상기 스위칭수단은 상기 시큐어 오퍼레이팅 시스템을 중단시킨 후에 통상 오퍼레이팅 시스템을 기동한다. 따라서 당해 데이터 처리장치는 통상 모드에서 동작 중에는 상기 시큐어 리소스에 대한 액세스 루트를 완전히 절단하여, 시큐어 모드와 통상 모드를 배타적으로 실현할 수 있다.
또, 상기 데이터 처리장치는 시큐어 모드 및 통상 모드의 양쪽에서 액세스가 허가되는 공유기억영역을 구비하며, 상기 출력수단은 시큐어 모드에서 상기 식별정보를 상기 공유기억영역에 기록함으로써 상기 식별정보를 출력하고, 상기 수신수단은 통상 모드에서 상기 공유기억영역으로부터 상기 식별정보를 판독함으로써 상기 식별정보를 수신하는 것을 특징으로 한다.
이 구성에 의하면, 통상 모드 및 시큐어 모드에서 상기 공유기억영역을 액세스할 수 있다. 따라서, 본 발명의 데이터 처리장치는 시큐어 모드와 통상 모드를 배타적으로 실현하여, 시큐어 리소스를 보호하면서 시큐어 모드와 통상 모드 사이에서 확실하게 정보의 송수신을 행할 수 있다.
또, 상기 판독수단은 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 기억하고 있고, 수신한 상기 식별정보에 대응하는 위치정보에 의해 지시되는 존재위치로부터 상기 통상 프로그램을 판독하는 것을 특징으로 한다.
이 구성에 의하면, 상기 판독수단은 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 기억하고 있으므로, 수신한 식별정보에 대응하는 위치정보를 사용하여 확실하고 신속하게 상기 통상 프로그램을 판독할 수 있다.
상기 데이터 처리장치에서 상기 통상 프로그램을 구성하는 하나의 처리순서는 라이브러리를 구성하는 복수의 함수를 포함하고, 다른 처리순서는 상기 복수의 함수 중 어느 하나를 호출하며, 상기 처리수단은 상기 다른 처리순서에 따라서 동작하는 경우에, 당해 다른 처리순서에 의해 호출되는 함수에 따라서 동작하는 것을 특징으로 한다.
이 구성에 의하면, 상기 통상 프로그램을 구성하는 하나의 처리순서는 라이브러리를 구성하는 복수의 함수를 포함하고, 다른 처리순서는 상기 복수의 함수 중 어느 하나를 호출한다. 따라서, 상기 시큐어 프로그램은 라이브러리를 구성하는 함수를 사용하는 처리를 상기 통상 프로그램에 의뢰할 수 있다. 따라서 시큐어 모드에서 메모리 상에 라이브러리를 보유할 필요가 없어진다.
상기 데이터 처리장치는 시큐어 모드에서 상기 시큐어 프로그램의 상기 시큐어 기억수단으로의 기록을 나타내는 기록지시를 수신하는 지시취득수단과, 시큐어 모드에서 상기 기록지시를 취득한 경우에 상기 시큐어 기억수단에 상기 시큐어 프로그램을 기록하고, 상기 기록이 종료되었음을 나타내는 기록종료정보를 출력하는 시큐어 로드수단을 더 포함하며, 상기 스위칭수단은 또한, 상기 기록종료정보가 출력된 경우, 시큐어 모드에서 통상 모드로 스위칭하고, 상기 데이터 처리장치는 통상 모드에서 상기 기록종료정보를 수신하고, 상기 통상 기억수단에 상기 통상 프로그램을 기록하는 통상 로드수단을 더 포함하는 것을 특징으로 한다.
이 구성에 의하면, 지시취득수단이 기록지시를 취득한 경우에, 상기 시큐어 로드수단이 시큐어 모드에서 상기 시큐어 프로그램을 상기 시큐어 기억수단에 기록하도록 하는 기록지시를 수신하면, 상기 시큐어 기억수단에 상기 시큐어 프로그램을 기록하고, 상기 통상 로드수단이 상기 통상 기억수단에 상기 통상 프로그램을 기록한다. 이와 같이 함으로써, 상기 시큐어 프로그램의 실행 중에는 항상 상기 통상 기억수단에 상기 통상 프로그램이 기억되어 있고, 시큐어 프로그램이 포함되는 호출명령이 실행될 때에는 신속하게 상기 통상 프로그램의 실행으로 이동할 수 있다.
상기 데이터 처리장치를 구성하는 상기 판독수단은 통상 모드에서 상기 통상 로드수단에 의해 상기 통상 프로그램이 상기 통상 기억수단에 기록된 경우에, 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 더 기억하는 것을 특징으로 한다.
이 구성에서는, 상기 판독수단은, 상기 통상 프로그램이 상기 통상 기억수단에 기록된 경우에, 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 기억한다. 이와 같이 함으로써, 상기 시큐어 프로그램의 로드 직후부터, 상기 판독수단은 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 기억하고 있다. 따라서, 시큐어 프로그램이 포함되는 호출명령이 실행될 때에는 신속하게 상기 통상 프로그램을 판독할 수 있다.
상기 데이터 처리장치는 시큐어 모드에서 상기 시큐어 프로그램의 삭제를 지시하는 삭제지시를 취득하는 삭제지시 취득수단과, 상기 삭제지시를 취득한 경우에 시큐어 모드에서 상기 시큐어 프로그램을 상기 시큐어 기억수단에서 삭제하고, 상기 삭제가 종료되었음을 나타내는 삭제종료정보를 출력하는 시큐어 삭제수단을 더 포함하며, 상기 스위칭수단은 또한, 상기 삭제종료정보가 출력된 경우, 시큐어 모드에서 통상 모드로 스위칭하고, 상기 데이터 처리장치는 통상 모드에서 상기 삭제종료정보를 취득하고, 상기 통상 기억수단으로부터 상기 통상 프로그램을 삭제하는 통상 삭제수단을 더 포함하는 것을 특징으로 한다.
이 구성에 의하면, 삭제지시 취득수단이 상기 시큐어 프로그램의 삭제를 지시하는 삭제지시를 취득하면, 시큐어 삭제수단이 상기 시큐어 프로그램을 상기 시큐어 기억수단에서 삭제하고, 통상 삭제수단이 상기 통상 기억수단으로부터 상기 통상 프로그램을 삭제한다.
따라서, 상기 시큐어 프로그램이 로드되어 있지 않은 동안에는, 상기 통상 프로그램도 로드할 필요가 없으므로, 이와 같이 함으로써, 상기 통상 프로그램에 의해서 통상 모드에서 사용하는 메모리 영역을 낭비하는 것을 방지할 수 있다.
상기 데이터 처리장치에서 상기 판독수단은 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 기억하고 있고, 수신한 상기 식별정보에 대응하는 위치정보에 의해 표시되는 존재위치로부터 상기 통상 프로그램을 판독하는 것을 특징으로 한다.
이 구성에 의하면, 상기 판독수단은 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 기억하고 있으므로, 수신한 식별정보에 대응하는 위치정보를 사용하여 확실하고 신속하게 상기 통상 프로그램을 판독할 수 있다.
상기 데이터 처리장치는 상기 처리수단을 포함하는 당해 데이터 처리장치가 구비하는 하나 이상의 장치를 초기화하는 초기화 순서 및 상기 시큐어 오퍼레이팅 시스템을 기동하는 기동순서를 포함하는 부트 프로그램(boot program)을 기억하고 있는 부트 프로그램 기억수단과, 상기 부트 프로그램 기억기단으로부터 상기 부트 프로그램을 판독하고, 판독한 상기 부트 프로그램에 따라서 상기 장치를 초기화하며, 초기화의 종료 후에 시큐어 오퍼레이팅 시스템을 기동하는 초기화 수단을 더 구비하는 것을 특징으로 한다.
이 구성에 의하면, 상기 초기화 수단은 전원 투입시에 상기 부트 프로그램에 따라서 상기 장치를 초기화하고, 초기화의 종료 후에 시큐어 오퍼레이팅 시스템을 기동한다. 이와 같이, 본 발명의 데이터 처리장치는 통상 모드에서 실행되는 프로그램을 기동하기 전에 시큐어 오퍼레이팅 시스템을 기동함으로써, 기동시에 통상 모드에서 실행되는 프로그램의 부정한 동작에 의해 시큐어 모드에서 실행되는 프로그램이나 시큐어 리소스의 부정한 이용을 방지할 수 있다.
상기 데이터 처리장치는 통상 모드에서 상기 처리수단에 의한 처리결과와 상기 시큐어 프로그램을 나타내는 시큐어 식별정보를 출력하는 통상 출력수단을 더 포함하고, 상기 스위칭수단은 또한, 상기 처리결과가 출력된 경우, 통상 모드에서 시큐어 모드로 스위칭하고, 상기 데이터 처리장치는 시큐어 모드에서 상기 처리결과와 상기 시큐어 식별정보를 수신하는 시큐어 수신수단과, 수신한 상기 시큐어 식별정보에 대응하는 상기 시큐어 프로그램을 상기 통상 기억수단으로부터 판독하는 시큐어 판독수단을 더 포함하며, 상기 처리수단은 또한, 시큐어 모드에서 상기 처리결과를 사용하여 상기 시큐어 프로그램에 따라서 동작하는 것을 특징으로 한다.
이 구성에서는, 통상 출력수단은 통상 모드에서 상기 처리수단에 의한 처리결과와 상기 시큐어 프로그램을 나타내는 시큐어 식별정보를 출력하고, 시큐어 수신수단은 시큐어 모드에서 상기 처리결과와 상기 시큐어 식별정보를 수신하며, 시큐어 판독수단은 수신한 상기 시큐어 식별정보에 대응하는 상기 시큐어 프로그램을 상기 통상 기억수단으로부터 판독하고, 상기 처리수단은 시큐어 모드에서 상기 처리결과를 사용하여 상기 시큐어 프로그램에 따라서 동작한다. 따라서, 본 발명의 데이터 처리장치에서는, 시큐어 모드에서 실행되는 상기 시큐어 프로그램에 의해 의뢰된 처리를, 통상 모드에서, 상기 처리수단이 상기 통상 프로그램에 따라서 실행하고, 처리결과를 정확하게 상기 시큐어 프로그램으로 반환할 수 있다.
또, 상기 데이터 처리장치에서 상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 시큐어 리소스와 상기 처리수단을 절단하는 것을 특징으로 한다.
이 구성에 의하면, 상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 시큐어 리소스와 상기 처리수단을 절단하므로, 통상 모드에서 상기 처리수단이 상기 시큐어 리소스에 액세스할 수 없다. 따라서, 상기 시큐어 리소스의 안전을 확보할 수 있다.
상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 시큐어 리소스에 보유되어 있는 시큐어 정보를 암호화하는 것을 특징으로 한다.
이 구성에서는, 상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 시큐어 리소스에 보유되어 있는 시큐어 정보를 암호화하므로, 통상 모드에서 상기 처리수단이 상기 시큐어 데이터를 이용할 수 없다. 따라서, 통상 모드에서 상기 시큐어 리소스가 보유하는 시큐어 데이터의 안전을 확보할 수 있다.
상기 데이터 처리장치에서, 상기 시큐어 리소스에 보유되어 있는 상기 시큐어 정보는, 시큐어 모드에서 실행되며, 명령코드 부분과 데이터 부분과 스택 부분으로 구성되는 프로그램을 포함하고 있고, 상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 명령코드 부분을 암호화하는 것을 특징으로 한다.
또, 상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 데이터 부분을 암호화하는 것으로 해도 좋다.
또, 상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 스택 부분을 암호화하는 것으로 해도 좋다.
이 구성에 의하면, 상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 명령코드 부분을 암호화한다. 또는, 상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 데이터 부분을 암호화한다. 또는, 상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 스택 부분을 암호화한다.
이와 같이, 상기 프로그램 중 보호할 필요가 있는 부분만을 암호화함으로써, 암호화에 관한 처리부하를 경감할 수 있다.
상기 데이터 처리장치는 상기 처리수단의 동작을 감시하고 조작하는 디버그 장치로부터 디버그 조작신호를 접수하는 디버그 접수수단을 더 포함하고, 상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 처리수단과 상기 디버그 접수수단을 접속하고, 통상 모드에서 시큐어 모드로 스위칭할 때에 상기 처리수단과 상기 디버그 접수수단을 절단하는 것을 특징으로 한다.
이 구성에 의하면, 상기 스위칭수단은 통상 모드에서 시큐어 모드로 스위칭할 때에 상기 처리수단과 상기 디버그 접수수단을 절단하므로, 본 발명의 데이터 처리장치는, 시큐어 모드에서 동작 중에는 외부의 디버그 장치에 의해 동작이 감시되거나 조작되지 않으므로, 상기 디버그 장치로부터 상기 시큐어 리소스를 보호할 수 있다.
본 발명의 데이터 처리장치에서, 상기 판독수단은 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 기억하고 있고, 수신한 상기 식별정보에 대응하는 위치정보에 의해 표시되는 존재위치로부터 상기 통상 프로그램을 판독하는 구성으로 해도 좋다.
이 구성에 의하면, 상기 판독수단은 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 기억하고 있으므로, 수신한 식별정보에 대응하는 위치정보를 사용하여 확실하고 신속하게 상기 통상 프로그램을 판독할 수 있다.
본 발명은, 제 1 오퍼레이팅 시스템과 제 2 오퍼레이팅 시스템을 스위칭하며, 각 오퍼레이팅 시스템에서 생성되는 프로세스를 실행상태, 실행대기상태, 휴지상태 중 어느 하나의 상태로 천이시켜서 프로세스를 실행하고 관리하는 상기 데이터 처리장치로서, 상기 제 1 오퍼레이팅 시스템에서 제 1 프로세스를 생성하는 제 1 생성수단과, 제 2 오퍼레이팅 시스템에서 상기 제 1 프로세스와 대응하는 제 2 프로세스를 생성하는 제 2 생성수단과, 상기 제 1 오퍼레이팅 시스템에서 상기 제 1 프로세스의 상태천이를 검출하는 제 1 검출수단과, 상기 제 1 오퍼레이팅 시스템에서 검출된 상태천이를 나타내는 천이정보를 출력하는 제 1 출력수단과, 상기 제 1 오퍼레이팅 시스템을 상기 제 2 오퍼레이팅 시스템으로 스위칭하는 OS 스위칭수단과, 상기 제 2 오퍼레이팅 시스템에서 상기 천이정보를 취득하는 제 2 취득수단과, 취득한 상기 천이정보에 따라서 상기 제 2 프로세스의 상태를 천이시키는 제 2 천이수단을 구비하는 것을 특징으로 하는 데이터 처리장치이다.
이 구성에 의하면, 상기 제 1 오퍼레이팅 시스템에서, 상기 제 1 출력수단은 상기 천이정보를 출력하고, OS 스위칭수단은 상기 제 1 오퍼레이팅 시스템을 상기 제 2 오퍼레이팅 시스템으로 스위칭하며, 제 2 오퍼레이팅 시스템에서 제 2 천이수단은 상기 천이정보에 따라서 상기 제 2 프로세스의 상태를 천이하도록 한다. 따라서, 배타적으로 실행되는 2개의 오퍼레이팅 시스템이 동작하는 상기 데이터 처리장치에서 상기 제 1 오퍼레이팅 시스템에 의해 제어되는 상기 제 1 프로세스의 동작상태를 상기 제 2 프로세스를 통해서 상기 제 2 오퍼레이팅 시스템에서도 감시할 수 있다.
상기 데이터 처리장치는 상기 제 2 오퍼레이팅 시스템에서 상기 제 2 프로세스의 상태천이를 검출하는 제 2 검출수단과, 상기 제 2 오퍼레이팅 시스템에서 검출된 상태천이를 나타내는 천이정보를 출력하는 제 2 출력수단을 더 포함하고, 상기 OS 스위칭수단은 상기 제 2 오퍼레이팅 시스템을 상기 제 1 오퍼레이팅 시스템으로 스위칭하며, 상기 데이터 처리장치는 상기 제 1 오퍼레이팅 시스템에서 상기 천이정보를 취득하는 제 1 취득수단과, 취득한 상기 천이정보에 따라서 상기 제 1 프로세스의 상태를 천이시키는 제 1 천이수단을 더 포함하는 것을 특징으로 한다.
이 구성에 의하면, 상기 제 2 출력수단은 상기 제 2 오퍼레이팅 시스템에서 상기 천이정보를 출력하고, 상기 제 1 천이수단은 상기 천이정보에 따라서 상기 제 1 프로세스의 상태를 천이시킨다. 이에 의해, 상기 제 2 오퍼레이팅 시스템에 의해 제어되는 상기 제 2 프로세스의 동작상태를, 상기 제 1 프로세스를 통해서, 상기 제 1 오퍼레이팅 시스템에서도 감시할 수 있다. 따라서, 상기 제 1 오퍼레이팅 시스템 및 상기 제 2 오퍼레이팅 시스템은 각각이 제어하는 제 1 프로세스 및 제 2 프로세스의 동작상태를 서로 감시할 수 있다.
또한, 상기 데이터 처리장치는 제 1 오퍼레이팅 시스템 및 제 2 오퍼레이팅 시스템의 양쪽에서 액세스할 수 있는 공유기억영역을 구비하며, 상기 제 1 출력수단은 상기 공유기억영역에 상기 천이정보를 기록함으로써 상기 천이정보를 출력하고, 상기 제 2 취득수단은 상기 공유기억영역으로부터 상기 천이정보를 판독함으로써 상기 천이정보를 취득하는 것을 특징으로 한다.
이 구성에 의하면, 상기 제 1 출력수단 및 상기 제 2 취득수단은 제 1 오퍼레이팅 시스템 및 제 2 오퍼레이팅 시스템의 양쪽에서 액세스할 수 있는 상기 공유기억영역을 통해서 상기 천이정보를 주고 받는다. 상기 공유기억영역은 제 1 오퍼레이팅 시스템 및 제 2 오퍼레이팅 시스템의 양쪽에서 액세스할 수 있으므로, 본 발명의 데이터 처리장치는, 제 1 오퍼레이팅 시스템과 제 2 오퍼레이팅 시스템을 배타적으로 실행하면서, 제 1 오퍼레이팅 시스템에서 제 2 오퍼레이팅 시스템으로 정보를 주고 받을 수 있다.
상기 데이터 처리장치를 구성하는 상기 제 2 출력수단은 상기 공유기억영역에 상기 천이정보를 기록함으로써 상기 천이정보를 출력하고, 상기 제 1 취득수단은 상기 공유기억영역으로부터 상기 천이정보를 판독함으로써 상기 천이정보를 취득하는 것을 특징으로 한다.
따라서, 제 2 오퍼레이팅 시스템과 제 1 오퍼레이팅 시스템을 배타적으로 실행하면서, 제 2 오퍼레이팅 시스템에서 제 1 오퍼레이팅 시스템으로 정보를 주고 받을 수 있다.
또, 상기 데이터 처리장치는 상기 제 2 오퍼레이팅 시스템에서 관리되어 동작하는 장치를 포함하고, 상기 제 2 프로세스는 상기 장치의 구동을 제어하는 장치구동 프로그램이며, 상기 제 2 검출수단은 상기 장치의 동작에 수반하는 상기 제 2 프로세스의 상태천이를 검출하는 것을 특징으로 한다.
이 구성에 의하면, 상기 제 2 프로세스는 상기 장치의 구동을 제어하는 장치구동 프로그램이며, 상기 제 2 검출수단은 상기 장치의 동작에 수반하는 상기 제 2 프로세스의 상태천이를 검출한다. 따라서, 상기 제 1 프로세스도 상기 장치구동 프로그램의 상태천이에 수반하여 천이하여, 상기 제 1 오퍼레이팅 시스템에서도 상기 장치의 구동상태를 감시할 수 있다.
상기 제 1 오퍼레이팅 시스템에서 상기 제 1 프로세스가 휴지상태에서 실행상태로 천이한 경우, 상기 데이터 처리장치는 상기 장치로의 처리의뢰의 중복을 회피하는 배타처리를 행하는 상기 제 1 프로세스에 따라서 동작하고, 상기 제 1 오퍼레이팅 시스템에서 상기 제 1 출력수단은 상기 배타처리가 종료된 후에 상기 천이정보를 출력하는 것을 특징으로 한다.
통상, 이와 같은 배타처리는 상기 장치의 구동을 제어하는 장치구동 프로그램에 의해 실행되나, 이 구성에 의하면, 상기 데이터 처리장치에서 상기 제 1 프로세스가 상기 장치에 대한 처리 의뢰의 중복을 회피하는 배타처리를 행한 후 상기 제 1 오퍼레이팅 시스템에서 상기 제 1 출력수단이 상기 천이정보를 출력한다. 출력된 상기 천이정보에 의해 상기 제 2 프로세스는 실행상태로 천이하고, 상기 장치의 구동의 제어를 개시한다. 제 1 오퍼레이팅 시스템과 제 2 오퍼레이팅 시스템에 의해 사용되는 메모리 공간이 개별적으로 필요하며, 특히, 제 2 오퍼레이팅 시스템에 의해 사용되는 메모리를 외부의 액세스로부터 보호할 필요가 있는 경우를 상정하면, 배타처리를 상기 제 1 프로세스가 행하므로, 상기 제 2 프로세스는 배타처리를 행할 필요가 없어진다. 따라서, 배타처리를 위해서 상기 제 2 프로세스가 사용하는 메모리 영역이 감소한다. 이와 같은 이유에서, 보호할 필요가 있는 메모리를 줄일 수 있게 되어, 이들 메모리를 외부로부터 보호하는 보호기구의 부하를 경감할 수 있다.
상기 데이터 처리장치는 제 1 오퍼레이팅 시스템 및 제 2 오퍼레이팅 시스템에서 인터럽트(interrupt)의 발생을 검출하는 인터럽트 검출수단과, 상기 제 1 오퍼레이팅 시스템에서 인터럽트가 검출된 경우, 인터럽트 발생요인을 조사하는 인터럽트 조사수단과, 상기 제 1 오퍼레이팅 시스템에서 인터럽트 조사수단에 의해 상기 장치에 의한 인터럽트라고 판단된 경우, 상기 제 1 프로세스를 휴지상태에서 실행상태로 천이시키는 인터럽트 천이수단을 더 포함하는 것을 특징으로 한다.
또한, 상기 데이터 처리장치는 상기 제 2 오퍼레이팅 시스템에서 인터럽트가 검출된 경우, 인터럽트의 검출을 나타내는 인터럽트 통지정보를 출력하는 통지수단을 더 포함하고, 상기 OS 스위칭수단은 상기 제 2 오퍼레이팅 시스템을 상기 제 1 오퍼레이팅 시스템으로 스위칭하며, 상기 제 1 취득수단은 또한, 상기 제 1 오퍼레이팅 시스템에서 상기 인터럽트 통지정보를 더 취득하고, 상기 인터럽트 조사수단은 또한, 제 1 오퍼레이팅 시스템에서 상기 인터럽트 통지정보를 취득한 경우, 인터럽트 발생요인을 더 조사하는 구성이다.
이 구성에 의하면, 상기 제 1 오퍼레이팅 시스템에서 인터럽트가 검출된 경우에 인터럽트 조사수단이 인터럽트 발생요인을 조사한다. 또, 제 2 오퍼레이팅 시스템에서 인터럽트가 검출된 경우, 상기 통지수단이 인터럽트의 검출을 나타내는 인터럽트 통지정보를 출력하고, 제 1 오퍼레이팅 시스템에서 인터럽트 조사수단이 인터럽트 발생요인을 조사한다.
이와 같이 함으로써, 제 2 오퍼레이팅 시스템의 관리하에 인터럽트 조사수단을 둘 필요가 없어진다. 따라서, 본 발명의 데이터 처리장치에서 인터럽트 조사수단을 하나만 구비하면 된다.
상기 데이터 처리장치에서 상기 통지수단은 인터럽트가 검출된 경우, 상기 인터럽트 검출수단에 대하여 인터럽트의 검출을 정지시키고, 상기 제 1 취득수단은 상기 인터럽트 통지정보를 취득한 경우, 상기 인터럽트 검출수단에 대하여 상기 정지를 해제하는 것을 특징으로 한다.
이 구성에 의하면, 상기 통지수단은, 인터럽트가 검출된 경우, 상기 인터럽트 검출수단에 대하여 인터럽트의 검출을 정지시키고, 상기 제 1 취득수단은, 상기 인터럽트 통지정보를 취득한 경우, 상기 인터럽트 검출수단에 대하여 상기 정지를 해제한다. 따라서, 상기 통지수단으로부터 출력된 인터럽트 통지정보를 상기 제 1 취득수단이 취득할 때까지는, 상기 인터럽트 검출수단에 의해서, 상기 제 2 오퍼레이팅 시스템에서 상기 제 1 오퍼레이팅 시스템으로의 스위칭동작이 방해받지 않게 된다. 또, 제 2 오퍼레이팅 시스템에서 제 1 오퍼레이팅 시스템으로 스위칭 되기까지는 상기 인터럽트 검출수단이 동일한 인터럽트를 중복하여 검출하는 것을 방지할 수 있다.
본 발명은 프로그램에 따라서 동작하는 상기 데이터 처리장치로서, 복수의 처리순서로 구성되는 프로그램을 기억하고 있는 기억수단과, 상기 기억수단에 기억되어 있는 상기 프로그램이 부정한 것인가 여부를 판단하는 정당성 판단수단과, 부정한 것이라고 판단되는 경우에, 상기 프로그램을 무효화하는 무효화 수단을 구비하는 것을 특징으로 하는 데이터 처리장치이다.
이 구성에 의하면, 상기 정당성 판단수단은 상기 프로그램이 부정한 것인가 여부를 판단하여, 상기 무효화 수단이 부정한 것이라고 판단되는 경우에는 상기 프로그램을 무효화하므로, 본 발명의 데이터 처리장치에서 부정한 프로그램의 실행을 방지할 수 있다.
상기 데이터 처리장치에서 상기 정당성 판단수단은 상기 기억수단에 기억되어 있는 상기 프로그램을 나타내는 프로그램 식별정보를 취득하는 프로그램 정보 취득부와, 무효화 된 프로그램을 나타내는 무효화 식별정보를 취득하는 무효화 정보 취득부와, 취득한 상기 프로그램 식별정보와 취득한 상기 무효화 식별정보가 일치하는가 여부를 판단하는 판단부를 포함하며, 일치한다고 판단되는 경우에 상기 프로그램이 부정하다고 결정하는 것을 특징으로 한다.
상기 구성에서는, 상기 정보 취득부에서 취득한 상기 프로그램 식별정보와 상기 무효화 정보 취득부에서 취득한 상기 무효화 식별정보가 일치하는가 여부에 의해서 용이하게 당해 프로그램이 부정한가 여부를 결정할 수 있다.
본 발명의 데이터 처리장치에 포함되는 상기 프로그램 정보 취득부는, 상기 프로그램을 나타내는 프로그램 식별정보를 기억하고 있는 식별정보 기억부와, 상기 식별정보 기억부로부터 상기 프로그램 식별정보를 판독함으로써 취득하는 판독부를 포함하고, 상기 무효화 정보 취득부는 무효화 된 프로그램을 나타내는 무효화 식별정보를 기억하고 있는 무효화 정보 기억부와, 상기 무효화 정보 기억부로부터 상기 무효화 식별정보를 판독하여 취득하는 판독부를 포함하는 것을 특징으로 한다.
이 구성에 의하면, 상기 프로그램 정보 취득부는 미리 상기 프로그램을 나타내는 프로그램 식별정보를 기억하고 있는 상기 식별정보 기억부로부터 신속하게 상기 프로그램 식별정보를 취득할 수 있다. 또, 상기 무효화 정보 취득부는 미리 무효화 된 프로그램을 나타내는 무효화 식별정보를 기억하고 있는 상기 무효화 정보 기억부로부터 신속하게 상기 무효화 식별정보를 취득할 수 있다.
상기 데이터 처리장치는 상기 정당성 판단수단은 상기 프로그램에 할당된 공개키의 정당성을 증명하는 공개키 증명서에 의거하여, 상기 프로그램이 부정한 것인가 여부를 판단하는 것을 특징으로 한다.
이 구성에 의하면, 상기 정당성 판단수단은 상기 프로그램에 할당된 공개키의 정당성을 증명하는 상기 공개키 증명서에 의거하여 상기 판단을 행한다. 공적인 제 3 자 기관에 의해 발행된 공개키 증명서를 사용하므로, 상기 프로그램의 정당성을 더욱 확실하게 판정할 수 있다.
상기 데이터 처리장치에서, 상기 정당성 판단수단은 상기 공개키를 식별하는 공개키 식별정보를 포함하는 상기 공개키 증명서를 기억하고 있는 증명서 기억부와, 상기 공개키 증명서로부터 상기 공개키 식별정보를 취득하는 공개키 정보 취득부와, 무효화 된 공개키를 나타내는 무효화 식별정보를 기억하고 있는 무효화 정보 기억부와, 상기 무효화 정보 기억부로부터 무효화 식별정보를 판독하는 무효화 정보 판독부와, 취득한 상기 공개키 식별정보와 판독한 상기 무효화 식별정보가 일치하는가 여부를 판단하는 판단부를 포함하고, 일치한다고 판단되는 경우에 상기 프로그램이 부정하다고 결정하는 것을 특징으로 한다.
상기 구성에 의하면, 상기 판단부는 상기 증명서 기억부가 기억하고 있는 상기 공개키 증명서에 포함되는 상기 공개키 식별정보와 상기 무효화 정보 기억부가 기억하고 있는 상기 무효화 식별정보를 비교함으로써, 용이하게 상기 프로그램이 부정한 것이라고 결정할 수 있다.
상기 데이터 처리장치에서, 상기 정당성 판단수단은 외부로부터 최신의 무효화 식별정보를 취득하고, 취득한 무효화 식별정보를 상기 무효화 정보 기억부에 기록하는 갱신부를 더 포함하는 것을 특징으로 한다.
이 구성에 의하면, 상기 갱신부가 외부로부터 최신의 무효화 식별정보를 취득하고, 취득한 무효화 식별정보를 상기 무효화 정보 기억부에 기록한다. 일반적으로, 공개키 증명서 발행기관은 후발적으로 무효화 된 공개키를 나타내는 정보를 추가하여 상기 무효화 식별정보를 정기적으로 갱신하고 있다. 이 발행기관으로부터 최신의 무효화 식별정보를 취득하여 사용함으로써, 상기 데이터 처리장치의 판매 후에 부정하다는 사실이 판명된 프로그램에도 대응할 수 있다.
또, 상기 갱신부는 상기 기억수단으로의 액세스 요구를 검출할 때마다 최신의 무효화 식별정보를 취득하는 것을 특징으로 한다.
상기 구성에서는, 상기 갱신부는 상기 기억수단으로의 액세스 요구를 검출할 때마다 최신의 무효화 식별정보를 취득하므로, 상기 판정부는 항상 최신의 무효화 식별정보를 사용하여 상기 프로그램의 정당성을 판단할 수 있다.
상기 데이터 처리장치에서 상기 갱신부는 CRL(Certificate Revocation List) 발행장치로부터 네트워크를 통해서 상기 무효화 식별정보를 수신하고, CRL 발행장치로부터 네트워크 및 서버장치를 통해서 상기 무효화 식별정보를 수신하거나, 또는 기록매체로부터 상기 무효화 식별정보를 판독함으로써 취득하는 것을 특징으로 한다.
상기 구성에서는, 상기 갱신부는 CRL 발행장치로부터 네트워크를 통해서 상기 무효화 식별정보를 수신하므로, 최신의 무효화 식별정보를 취득할 수 있다.
또, CRL 발행장치로부터 네트워크 및 서버 장치를 통해서 상기 무효화 식별정보를 수신하므로, 상기 데이터 처리장치 자체에 외부 네트워크와 통신기능이 없는 경우에도 서버 장치에 의해서 상기 무효화 식별정보를 갱신할 수 있다.
또, 기록매체로부터 상기 무효화 식별정보를 판독하므로, 상기 CRL 발행장치와 통신하는 환경이 없는 경우에도 당해 데이터 처리장치는 상기 무효화 식별정보를 갱신할 수도 있다.
상기 갱신부는 외부로부터 상기 최신의 무효화 식별정보에 대하여 디지털 서명을 실시하여 생성된 서명 데이터를 취득하고, 취득한 서명 데이터에 서명 검증을 실시하여, 서명 검증이 성공한 경우, 취득한 상기 무효화 식별정보를 상기 무효화 정보 기억부에 기록하는 것을 특징으로 한다.
이 구성에서는, 상기 갱신부는 상기 서명 데이터를 취득하고, 취득한 서명 데이터에 서명 검증을 실시하여, 서명 검증이 성공한 경우에 취득한 상기 무효화 식별정보를 상기 무효화 정보 기억부에 기록하므로, 상기 무효화 식별정보의 정당한 발행자로부터 발행된 무효화 식별정보를 취득할 수 있다.
상기 데이터 처리장치를 구성하는 상기 정당성 판단수단은 적어도 당해 공개키에 대하여 디지털 서명을 실시하여 생성된 서명 데이터를 포함하는 상기 공개키 증명서를 기억하고 있는 증명서 기억부와, 상기 증명서 기억부로부터 상기 공개키 증명서를 취득하는 공개키 증명서 취득부와, 취득한 상기 공개키 증명서에 포함되는 서명 데이터에 서명 검증을 실시함으로써, 취득한 상기 공개키 증명서가 정당한 것인가 여부를 검증하는 검증부를 포함하고, 상기 공개키 증명서가 정당한 것이 아니라고 판단되는 경우에, 상기 프로그램이 부정하다고 결정하는 것을 특징으로 한다.
이 구성에서는, 상기 정당성 판단수단은 상기 서명 데이터에 서명 검증을 실시하여 취득한 상기 공개키 증명서가 정당한 것인가 여부를 검증하고, 상기 공개키 증명서가 정당한 것이 아니라고 판단되는 경우에는 상기 프로그램이 부정하다고 결정한다. 따라서, 상기 데이터 처리장치는, 상기 프로그램에 할당된 공개키 증명서가 부정한 제 3 자에 의해 부정하게 생성된 생성물인가 여부를 판단할 수 있고, 정당한 공개키 증명서를 갖는 프로그램만을 실행할 수 있다.
또, 상기 데이터 처리장치에서, 상기 정당성 판단수단은 적어도 2개의 공개키의 정당성을 각각 증명하는 적어도 2개의 공개키 증명서를 사용하여, 상기 기억수단에 기억되어 있는 상기 프로그램이 부정한 것인가 여부를 판단해도 된다.
이 구성에서는, 상기 정당성 판단수단은 적어도 2개의 공개키 증명서를 사용하여 상기 기억수단에 기억되어 있는 상기 프로그램이 부정한 것인가 여부를 판단한다. 복수의 공개키 증명서를 사용하여 상기 판단을 행하므로 더욱 정확하게 상기 프로그램이 부정한가 여부를 판단할 수 있다.
상기 2개의 공개키는 상기 프로그램에 할당된 제 1 공개키 및 상기 데이터 처리장치 또는 상기 프로그램의 동작을 제어하는 오퍼레이팅 시스템에 할당된 제 2 공개키이며, 상기 데이터 처리장치를 구성하는 상기 정당성 판단수단은 권위가 있는 인증기관의 비밀키를 사용하여 적어도 상기 제 2 공개키에 대하여 디지털 서명을 실시하여 생성된 제 2 서명 데이터와 상기 제 2 공개키를 포함하는 제 2 공개키 증명서와, 상기 데이터 처리장치 또는 상기 오퍼레이팅 시스템의 비밀키를 사용하여 적어도 상기 제 1 공개키에 대하여 디지털 서명을 실시하여 생성된 제 1 서명 데이터와 상기 제 1 공개키를 포함하는 제 1 공개키 증명서를 기억하고 있는 증명서 기억부와, 상기 증명서 기억부로부터 상기 제 1 공개키 증명서 및 상기 제 2 공개키 증명서를 취득하는 공개키 증명서 취득부와, 취득한 상기 제 2 공개키 증명서에 포함되는 제 2 서명 데이터에 상기 인증기관의 공개키를 사용하여 서명 검증을 실시함으로써 취득한 상기 제 2 공개키 증명서가 정당한 것인가 여부를 검증하고, 정당하다고 판정된 경우에 상기 제 2 공개키 증명서로부터 상기 제 2 공개키를 취득하며, 취득한 상기 제 1 공개키 증명서에 포함되는 제 1 서명 데이터에 취득한 상기 제 2 공개키를 사용하여 서명 검증을 실시함으로써 취득한 상기 제 1 공개키 증명서가 정당한 것인가 여부를 검증하는 검증부를 포함하고, 상기 제 2 공개키 증명서가 정당한 것이 아니라고 판단되는 경우 및 상기 제 1 공개키 증명서가 정당한 것이 아니라고 판단되는 경우에, 상기 프로그램이 부정하다고 결정하는 것을 특징으로 한다.
이 구성에 의하면, 상기 정당성 판단수단은, 취득한 상기 제 2 공개키 증명서에 포함되는 제 2 서명 데이터에 상기 인증기관의 공개키를 사용하여 서명 검증을 실시함으로써 취득한 상기 제 2 공개키 증명서가 정당한 것인가 여부를 검증하고, 정당하다고 판정된 경우에, 상기 제 2 공개키 증명서로부터 상기 제 2 공개키를 취득하며, 취득한 상기 제 1 공개키 증명서에 포함되는 제 1 서명 데이터에 취득한 상기 제 2 공개키를 사용하여 서명 검증을 실시함으로써 취득한 상기 제 1 공개키 증명서가 정당한 것인가 여부를 검증한다. 이와 같이, 계층구조를 형성하는 복수의 공개키 증명서를 사용하여 검증함으로써, 상위의 공개키 증명서가 무효한 경우, 즉, 상기 프로그램을 제어하는 오퍼레이팅 시스템이 부정한 경우에도, 상기 프로그램을 무효화하여, 부정한 오퍼레이팅 시스템 하에서 상기 프로그램이 실행되는 것을 방지한다.
또는, 당해 데이터 처리장치가 부정한 경우에도 상기 프로그램의 실행을 방지할 수 있다.
상기 데이터 처리장치를 구성하는 상기 정당성 판단수단은 상기 기억수단에 대한 액세스 요구를 검출할 때마다 상기 판단을 하는 것을 특징으로 한다.
또, 상기 정당성 판단수단은 상기 기억수단에 기억되어 있는 프로그램에 대한 액세스 요구를 검출할 때마다 상기 판단을 해도 된다.
또, 상기 정당성 판단수단은 당해 데이터 처리장치로 전력공급이 개시된 직후에 상기 판단을 하는 것으로 해도 된다.
상기 구성에 의하면, 상기 정당성 판단수단은 상기 기억수단에 대한 액세스 요구를 검출할 때마다 상기 판단을 한다. 또는, 상기 기억수단에 기억되어 있는 프로그램에 대한 액세스 요구를 검출할 때마다 상기 판단을 한다. 또는, 당해 데이터 처리장치로 전력공급이 개시된 직후에 상기 판단을 한다. 따라서, 프로그램을 실행하기 전에 상기 프로그램이 부정한가 여부를 판단할 수 있다.
또, 본 발명은 암호화된 프로그램을 복호하여 실행하는 상기 데이터 처리장치로서, 상기 기억수단은, 상기 프로그램을 대신, 프로그램 키를 사용하여 상기 프로그램에 암호화 알고리즘이 실시되어 생성된 암호화 프로그램을 기억하고 있고, 상기 정당성 판단수단은 p개의 암호키로부터 선택된 m개의 암호키를 기억하고 있는 암호키 기억부와, 상기 m개의 암호키 각각을 사용하여 상기 프로그램 키 및 소정의 검지 정보 중 어느 하나가 암호화되어 생성된 m개의 암호화 정보를 m개의 상기 암호키에 대응시켜서 기억하고 있는 암호화 정보 기억부와, 상기 m개의 암호키 각각을 사용하여 대응하는 암호화 정보에 복호 알고리즘을 실시하여, m개의 복호정보를 생성하는 복호부와, 생성된 m개의 복호정보 전부가 상기 검지 정보인가 여부를 판단하는 판단부를 포함하고, 생성된 m개의 복호정보 전부가 상기 검지 정보라고 판단되는 경우에, 상기 프로그램이 부정한 것이라고 결정하는 것을 특징으로 한다.
또한, 상기 p개의 암호키는 n행 m열(p = n × m)의 제 1 행렬의 각 요소 위치에 배치되어 있고, 상기 제 1 행렬의 각 열로부터 1개의 암호키가 선택됨으로써 상기 제 1 행렬로부터 m개의 암호키가 선택되며, 상기 데이터 처리장치를 구성하는 상기 암호키 기억부는 상기 제 1 행렬에서 각 암호키가 배치된 요소 위치를 각 암호키에 대응시켜 기억하고 있고, 상기 암호화 정보 기억부는 n행 m열의 제 2 행렬에서 각 암호화 정보에 대응하는 암호키가 배치되어 있는 요소 위치와 같은 요소 위치에서 당해 암호화 정보를 기억하고 있으며, 복호부는 상기 암호키 기억부로부터 암호키와 대응하는 요소 위치를 판독하며, 상기 암호화 정보 기억부의 제 2 행렬에서 상기 판독한 요소 위치와 같은 요소 위치에 배치되어 있는 암호화 정보를 판독하며, 판독한 상기 암호키를 사용하여 판독된 상기 암호화 정보에 복호 알고리즘을 실시하는 것을 특징으로 한다.
상기 구성에 의하면, 상기 정당성 판단수단은, 상기 m개의 암호키의 각각을 사용하여 대응하는 암호화 정보에 복호 알고리즘을 실시하여 m개의 복호정보를 하고, 생성된 m개의 복호정보 전부가 상기 검지 정보라고 판단되는 경우에, 상기 프로그램이 부정한 것이라고 결정한다. 상기 프로그램이 정당한 경우, 당해 데이터 처리장치는 암호화된 상기 암호키로부터 암호키를 생성하고, 생성한 암호키에 의해 상기 암호화 프로그램을 복호하여 프로그램을 생성하며, 생성한 프로그램을 실행한다. 이와 같이, 2중의 암호화를 실시함으로써 상기 프로그램을 부정한 이용으로부터 보호할 수 있다.
또, 상기 제 1 행렬의 각 열로부터 1개의 암호키가 선택됨으로써 상기 p개의 암호키가 선택되고 있다. 여기서, 동일한 프로그램 키에 의해 암호화된 복수의 암호화 프로그램이 존재하는 경우를 상정한다. 어느 하나의 프로그램이 부정하고, 이 부정한 프로그램에 할당된 m개의 암호키를 사용하여 생성되는 m개의 복호 정보는 모두 상기 검지 정보이다. 다른 정당한 프로그램에 할당된 m개의 암호키 중 어느 하나가 상기 부정한 프로그램의 m개의 암호키와 일치하고 있어도, 그 외의 암호키에 의해 상기 프로그램 키를 생성할 수 있다. 프로그램별로 다른 조합으로 m개의 암호키를 할당함으로써, 부정한 프로그램만을 무효화하고, 정당한 프로그램은 이용할 수 있다.
또, 본 발명은 상기 데이터 처리장치로서, 데이터를 기억하기 위한 메모리 수단과, 복수의 처리순서로 구성되는 프로그램에 따라서 동작하는 프로세서와, 상기 메모리 수단과 상기 프로세서 사이에 배치되고, 상기 프로세서로부터 출력되는 상기 메모리 수단 앞으로 전송하는 전송 데이터가 전송제한조건을 만족하고 있는가 여부를 판단하여, 전송제어조건을 만족하고 있다고 판단하는 경우에는 상기 메모리 수단으로 전송하는 전송 데이터의 전송을 억제하고, 전송제한조건을 만족하고 있지 않다고 판단하는 경우에는 상기 메모리 수단으로의 전송 데이터의 전송을 행하는 감시수단을 구비하는 것을 특징으로 한다.
이 구성에 의하면, 상기 감시수단은 상기 메모리 수단과 상기 프로세서 사이에 배치되며, 상기 프로세서로부터 출력되는 상기 메모리 수단에 전송되는 전송 데이터가 전송제한조건을 만족하고 있는가 여부를 판단하여, 전송제한조건을 만족하고 있다고 판단하는 경우에 상기 메모리 수단에 대한 전송 데이터의 전송을 억제한다. 이와 같이 함으로써, 상기 프로그램의 동작 중에 발생하는 상기 메모리에 대한 부정한 액세스를 방지할 수 있다.
상기 데이터 처리장치에서 상기 감시수단은 복수의 애플리케이션 프로그램별로 전송제한조건을 기억하고 있고, 상기 프로세서에 의해 실행되는 애플리케이션 프로그램별로 전송제한조건을 선택하며, 선택한 전송제한조건을 사용하는 것을 특징으로 한다.
이 구성에서는, 상기 감시수단은 상기 프로세서에 의해 실행되는 애플리케이션 프로그램별로 전송제한조건을 선택하고, 선택한 전송제한조건을 사용한다. 상기 데이터 처리장치에서 복수의 애플리케이션 프로그램이 실행되는 경우, 애플리케이션별로 이용하는 데이터나 장치가 다르다는 것은 충분히 생각할 수 있다. 따라서, 애플리케이션 프로그램별로 다른 전송제한조건을 사용함으로써, 당해 데이터 처리장치는 복수의 애플리케이션 프로그램을 안전하게 실행할 수 있다.
또, 상기 전송제한조건은 상기 메모리 수단 내의 소정의 기억공간을 나타내는 어드레스 범위정보이고, 상기 데이터 처리장치는 상기 감시수단이 상기 전송 데이터로부터 어드레스 정보를 추출하고, 추출한 어드레스 정보가 상기 어드레스 범위정보에 포함되는 경우에 상기 전송 데이터의 전송을 억제하는 것을 특징으로 한다.
상기 구성에 의하면, 상기 감시수단은 추출한 어드레스 정보가 상기 어드레스 범위정보에 포함되는 경우에 상기 전송 데이터의 전송을 억제한다. 따라서, 상기 프로세서가 상기 소정의 기억공간에 액세스하는 것을 방지할 수 있다.
상기 전송제한조건은 상기 메모리 수단 내의 소정의 기억공간으로의 액세스하는 액세스 회수의 상한을 나타내는 제한 회수이며, 상기 데이터 처리장치를 구성하는 상기 감시수단은, 과거에서의 상기 기억공간에 액세스한 액세스의 누적 회수를 기억하고 있으며, 상기 전송 데이터로부터 어드레스 정보를 추출하고, 추출한 어드레스 정보가 상기 어드레스 범위정보에 포함되는 경우에 상기 누적 회수에 1을 가산하며, 가산하여 얻어진 가산 후 회수가 상기 제한 회수를 넘는 경우에 상기 전송 데이터의 전송을 억제하는 것을 특징으로 한다.
이 구성에 의하면, 상기 감시수단은 가산 후 회수가 상기 제한 회수를 넘는 경우에 상기 전송 데이터의 전송을 억제한다. 이와 같이 함으로써, 상기 프로그램의 실행 중에 어떤 원인에 의해 우발적으로 일어난 부정한 액세스에 대해서는 간과하며, 예를 들어, 상기 프로그램의 부정한 개찬에 의해서 정상적으로 상기 소정의 기억공간에 부정한 액세스가 일어나는 경우에만 상기 프로그램의 실행에 수반하는 전송 데이터의 전송을 억제한다.
본 발명에서, 상기 감시수단은 상기 프로세서에 접속되는 버스 상에서 전송되는 상기 전송 데이터가 전송제한조건을 만족하고 있는가 여부를 판단하는 것을 특징으로 한다.
이 구성에 의하면, 상기 감시수단은 상기 프로세서에 접속되는 버스 상에서 전송되는 상기 전송 데이터가 전송제한조건을 만족하고 있는가 여부를 판단하므로, 상기 프로세서로부터 전송 데이터가 출력될 때마다 확실하게 상기 판정을 행할 수 있다.
본 발명의 데이터 처리장치를 구성하는 상기 메모리 수단은 암호키를 사용하여, 상기 프로세서에 의해 실행되고 있는 현 프로그램과는 다른 애플리케이션 프로그램의 코드 부분과 데이터 부분이 각각 암호화되어 생성된 암호화 코드 및 암호화 데이터를 기억하고 있고, 상기 전송제한조건은 상기 메모리 수단 내에서 상기 암호화 데이터가 저장되어 있는 기억공간을 나타내는 어드레스 범위정보이며, 상기 감시수단은 상기 암호화 코드 및 암호화 데이터를 복호하기 위한 복호 키를 기억하고 있으며, 상기 전송 데이터로부터 어드레스 정보를 추출하고, 추출한 어드레스 정보가 상기 암호화 코드가 저장되어 있는 기억공간을 나타내는 어드레스 범위 내에 있는 경우에, 상기 복호 키를 사용하여 상기 전송 데이터에 의해 표시되는 기억공간에 존재하는 암호화 코드를 복호하여 복호 코드를 생성하며, 생성한 복호 코드를 상기 프로세서로 전송하고, 추출한 어드레스 정보가 상기 어드레스 범위정보에 포함되는 경우에 전송 데이터의 전송을 억제하는 것을 특징으로 한다.
이 구성에 의하면, 상기 감시수단은 상기 암호화 코드 및 암호화 데이터를 복호하기 위한 복호 키를 기억하고 있고, 상기 어드레스 정보가 상기 암호화 코드가 저장되어 있는 기억공간을 나타내는 어드레스 범위 내에 있는 경우에, 상기 복호 키를 사용하여 상기 전송 데이터에 의해 표시되는 기억공간에 존재하는 암호화 코드를 복호하여 복호 코드를 생성하고, 생성한 복호 코드를 상기 프로세서로 전송하며, 추출된 어드레스 정보가 상기 어드레스 범위정보에 포함되는 경우에, 전송 데이터의 전송을 억제한다. 따라서 상기 애플리케이션 프로그램의 데이터 부분의 사용을 당해 애플리케이션 프로그램에만 한정할 수 있다.
상기 감시수단은 전송제한조건을 만족하고 있다고 판단하는 경우에, 상기 프로세서에 의해 실행 중인 상기 프로그램을 식별하는 식별정보를 프로그램 무효화 리스트에 더 추가하는 것을 특징으로 한다.
이 구성에서는, 상기 감시수단은 전송제한조건을 만족하고 있다고 판단하는 경우에, 상기 프로세서에 의해 실행 중인 상기 프로그램을 식별하는 식별정보를 프로그램 무효화 리스트에 추가하므로, 상기 프로세서에 의해 이 프로그램이 다시 실행되는 것을 방지할 수 있다.
본 발명의 상기 데이터 처리장치는 데이터를 기억하기 위한 메모리 수단과 복수의 처리순서로 구성되는 프로그램에 따라서 동작하고, 다음에 실행대상이 되는 명령 어드레스가 저장되어 있는 프로그램 카운터를 구비하는 프로세서와, 상기 프로그램 카운터에 저장되어 있는 어드레스가 소정의 어드레스 범위 내에 포함되는가 여부를 판단하여, 소정의 어드레스 범위 내에 포함된다고 판단하는 경우에, 상기 프로세서에 대하여 프로그램 카운터에 소정의 값을 저장하도록 지시하는 감시수단을 구비하고, 상기 프로세서가 상기 지시를 수신하면 프로그램 카운터에 상기 소정의 값을 저장하는 것을 특징으로 한다.
이 구성에 의하면, 상기 감시수단은 상기 프로그램 카운터에 저장되어 있는 어드레스가 소정의 어드레스 범위 내에 포함되는가 여부를 판단하여, 소정의 어드레스 범위 내에 포함된다고 판단하는 경우에, 상기 프로세서에 대하여 프로그램 카운터에 소정의 값을 저장하도록 지시한다. 이와 같이 함으로써, 상기 프로세서가 상기 소정의 어드레스 범위와 대응하는 기억영역에 액세스하는 것을 사전에 방지하며, 예를 들어, 오퍼레이팅 시스템 등의 다른 프로그램으로 상기 프로세서의 실행권을 이동함으로써 상기 프로그램의 실행을 중단시킬 수 있다.
도 1은 제 1 실시 예의 휴대전화(100)의 사용 예를 나타낸다.
도 2는 휴대전화(100) 및 메모리카드(300)의 구성을 나타내는 블록도이다.
도 3은 2차 기억부(104)에 기억되어 있는 정보의 일례를 나타낸다.
도 4는 통상 메모리(111)에 기억되어 있는 정보의 일례를 나타낸다.
도 5는 애플리케이션 관리표(100)의 상세를 나타낸다.
도 6은 시큐어 메모리(113)에 기억되어 있는 정보의 일례를 나타낸다.
도 7은 시큐어 애플리케이션 관리표(186)의 상세를 나타낸다.
도 8은 통상 메모리(111) 및 시큐어 메모리(113)에 기억되어 있는 프로그램의 관련을 나타낸 블록도이다.
도 9는 통상 OS(151) 및 시큐어 메모리(113)를 취급하는 코맨드의 데이터 구성을 나타낸다.
도 10은 통상 OS(151)의 동작을 나타내는 흐름도이다.
도 11은 시큐어 OS(171)의 동작을 나타내는 흐름도이다.
도 12는 음악 복호 데몬(156)의 동작을 나타내는 흐름도이다.
도 13은 통상 OS(151)로부터 시큐어 OS(171)으로의 스위칭처리를 나타내는 흐름도이다.
도 14는 시큐어 OS(171)로부터 통상 OS(151)로의 스위칭처리를 나타내는 흐름도이다.
도 15는 휴대전화(100)의 동작을 나타내는 흐름도이다.
도 16은 음악 복호프로그램의 등록처리에서의 각 프로그램의 동작을 나타내는 흐름도이다.
도 17은 음악 복호프로그램의 등록처리에서의 각 프로그램의 동작을 나타내는 흐름도이다. 도 16으로부터 계속된다.
도 18은 음악 복호프로그램(176)으로의 처리의뢰에서의 각 프로그램의 동작을 나타내는 흐름도이다.
도 19는 음악 복호프로그램(176)으로의 처리의뢰에서의 각 프로그램의 동작을 나타내는 흐름도이다. 도 18로부터 계속된다.
도 20은 음악 복호프로그램(176)으로의 처리의뢰에서의 각 프로그램의 동작을 나타내는 흐름도이다. 도 19로부터 계속된다.
도 21은 음악 복호프로그램(176)으로의 처리의뢰에서의 각 프로그램의 동작을 나타내는 흐름도이다. 도 20으로부터 계속된다.
도 22는 음악 복호프로그램(176)으로의 처리의뢰에서의 각 프로그램의 동작을 나타내는 흐름도이다. 도 21로부터 계속된다.
도 23은 음악 복호프로그램(176)으로의 처리의뢰에서의 각 프로그램의 동작을 나타내는 흐름도이다. 도 22로부터 계속된다.
도 24는 음악 복호프로그램(176)으로의 처리의뢰에서의 각 프로그램의 동작을 나타내는 흐름도이다. 도 23으로부터 계속된다.
도 25는 음악 복호프로그램(176)으로의 처리의뢰에서의 각 프로그램의 동작 을 나타내는 흐름도이다. 도 24로부터 계속된다.
도 26은 음악 복호프로그램(176)으로의 처리의뢰에서의 각 프로그램의 동작을 나타내는 흐름도이다. 도 25로부터 계속된다.
도 27은 음악 복호프로그램(176)으로의 처리의뢰에서의 각 프로그램의 동작을 나타내는 흐름도이다. 도 26으로부터 계속된다.
도 28은 통상 OS(151)의 실행 중에서의 통상 입출력장치(132)에 의한 인터럽트 발생시의 처리를 나타내는 흐름도이다. 도 21의 스텝 S 239의 상세이다.
도 29는 통상 OS(171)의 실행 중에서의 통상 입출력장치(132)에 의한 인터럽트 발생시의 처리를 나타내는 흐름도이다.
도 30은 통상 OS(151)의 실행 중에서의 시큐어 장치(133)에 의한 인터럽트 발생시의 처리를 나타내는 흐름도이다. 도 23의 스텝 S 287의 상세이다.
도 31은 통상 OS(151)의 실행 중에서의 시큐어 장치(133)에 의한 인터럽트 발생시의 처리를 나타내는 흐름도이다. 도 30으로부터 계속된다.
도 32는 통상 OS(151)의 실행 중에서의 암호처리장치(117)에 의한 인터럽트 발생시의 처리를 나타내는 흐름도이다. 도 27의 스텝 S 337의 상세이다.
도 33은 통상 OS(151)의 실행 중에서의 암호처리장치(117)에 의한 인터럽트 발생시의 처리를 나타내는 흐름도이다. 도 32로부터 계속된다.
도 34는 통상 OS(151)의 실행 중에서의 암호처리장치(117)에 의한 인터럽트 발생시의 처리를 나타내는 흐름도이다. 도 33으로부터 계속된다.
도 35는 음악 복호프로그램(176)의 삭제처리를 나타내는 흐름도이다.
도 36은 휴대전화(100)의 동작에서 프로그램 사이의 코맨드의 전송을 나타낸다.
도 37은 휴대전화(100)의 동작에서 프로그램 사이의 코맨드의 전송을 나타낸다.
도 38은 휴대전화(100)의 동작에서 프로그램 사이의 코맨드의 전송을 나타낸다. 도 37로부터 계속된다.
도 39는 휴대전화(100)의 동작에서 프로그램 사이의 코맨드의 전송을 나타낸다. 도 38로부터 계속된다.
도 40은 휴대전화(100)의 동작에서 프로그램 사이의 코맨드의 전송을 나타낸다. 도 39로부터 계속된다.
도 41은 휴대전화(100)의 동작에서 프로그램 사이의 코맨드의 전송을 나타낸다. 도 40으로부터 계속된다.
도 42는 휴대전화(100)의 동작에서 프로그램 사이의 코맨드의 전송을 나타낸다. 도 41로부터 계속된다.
도 43은 통상 메모리(111)에 기억되어 있는 정보의 일례를 나타낸다.
도 44는 휴대전화(100)의 기동시의 동작을 나타내는 흐름도이다.
도 45는 시큐어 메모리(113)에 기억되어 있는 정보의 일례를 나타낸다.
도 46은 MMU 제어프로그램(184)에 의해 형성되는 논리 메모리 공간의 일례를 나타낸다.
도 47은 제 1 실시 예의 변형 예에서의 각 프로그램 사이의 관련을 나타내는 블록도이다.
도 48은 제 1 실시 예의 변형 예에서 통상 OS(151) 및 시큐어 OS(171)가 갖는 시큐어 장치 드라이버 관리표(231)의 구성을 나타낸다.
도 49는 제 2 실시 예의 휴대전화(400)의 사용 예를 나타낸다.
도 50은 무효화 리스트 발행장치(250)의 구성을 나타내는 블록도이다.
도 51은 휴대전화(400)에 포함되는 메모리 보호부(414) 및 시큐어 메모리(413)의 구성을 나타내는 블록도이다.
도 52는 메모리 보호부(414)의 동작을 나타내는 흐름도이다.
도 53은 메모리 보호부(414)의 동작을 나타내는 흐름도이다. 도 52로부터 계속된다.
도 54는 제 2 실시 예의 변형 예에서의 메모리 보호부(454) 및 시큐어 메모리(453)의 구성을 나타내는 블록도이다.
도 55는 시큐어 OS 증명서의 상세를 나타낸다.
도 56은 제 2 실시 예의 변형 예에서 음악 복호프로그램(476)이 구비하는 애플리케이션 증명서(501), 메이커 증명서(511), CA 증명서(521)의 구성 및 관련을 나타낸다.
도 57은 OS 무효화 리스트의 구성의 일례를 나타낸다.
도 58은 제 3 실시 예에서의 무효화 리스트 발행장치의 정보 기억부(610)에 기억되어 있는 정보의 일례를 나타낸다.
도 59는 애플리케이션 고유키 매트릭스(592) 및 OS 고유키 매트릭스(597)의 구성을 나타낸다.
도 60은 애플리케이션 매트릭스 무효화 리스트(611)의 상세한 구성을 나타낸다.
도 61은 애플리케이션 매트릭스 무효화 리스트의 생성의 처리순서를 나타내는 흐름도이다.
도 62는 제 3 실시 예의 휴대전화가 구비하는 메모리 보호부(571) 및 시큐어 메모리(613)의 구성을 나타내는 블록도이다.
도 63은 메모리 보호부(571)에 의한 검증동작을 나타내는 흐름도이다.
도 64는 애플리케이션 검증부(578)에 의한 음악 복호프로그램(592)의 검증동작을 나타내는 흐름도이다.
도 65는 제 3 실시 예의 변형 예의 홈 네트워크의 구성을 나타내는 구성도이다.
도 66은 제 4 실시 예의 휴대전화를 구성하는 메모리 보호부(701) 및 시큐어 메모리(713)의 구성을 나타내는 블록도이다.
도 67은 제 5 실시 예에서 시큐어 메모리카드(820)의 구성 및 시큐어 메모리카드(820)에 기억되어 있는 정보의 일례를 나타낸다.
도 68은 제 5 실시 예의 휴대전화(750) 및 휴대전화(750)에 장착되는 통상 메모리카드(800) 및 시큐어 메모리카드(820)의 구성을 나타내는 블록도이다.
도 69는 메모리 보호부(764)의 구성을 나타내는 블록도이다.
도 70은 시큐어 메모리 테이블(811) 및 통상 메모리 테이블(861)의 구성을 나타낸다.
도 71은 액세스 제어부(783) 및 ID 검출부(786)의 동작을 나타내는 흐름도이다.
도 72는 액세스 제어부(783)의 동작을 나타내는 흐름도이다. 도 71로부터 계속된다.
(부호의 설명)
10 휴대전화망 15 기지국
20 인터넷 100 휴대전화
101 디버거 IF 102 CPU
103 MMU 104 2차 기억부
106 스위칭제어부 107 인터럽트 컨트롤러
108 입력부 109 표시부
111 통상 메모리 112 공유메모리
113 시큐어 메모리 114 메모리 보호부
116 입출력부 117 암호처리장치
118 무선통신제어부 119 마이크
120 스피커 121 통신부
122 안테나 123 버퍼
124 부호처리부 126 D/A 변환부
130 버스 131 액세스부
132 통상 입출력장치 133 시큐어 입출력장치
300 메모리카드
이하, 본 발명의 실시 예에 대하여 도면을 사용하여 상세하게 설명한다.
1. 제 1 실시 예
본 발명의 실시 예에 대하여 이하에 설명한다.
도 1은 본 발명의 휴대전화(100)의 사용 예를 나타내고 있다. 휴대전화(100)에는 메모리카드(300)가 장착된다.
메모리카드(300)는 암호화된 음악데이터가 기록되어 있고, 휴대전화(100)는 메모리카드(300)로부터 음악데이터를 판독하여 재생한다.
또, 휴대전화(100)는 기지국(15), 휴대전화망(10), 인터넷(20)을 통해서 콘텐츠 배신장치와 접속되어 있다. 휴대전화(100)는 콘텐츠 배신장치가 기억하고 있는 음악, 영상 등으로 구성되는 각종 콘텐츠를 인터넷, 휴대전화망을 통해서 취득한다.
1.1 메모리카드(300)
메모리카드(300)는, 도 2에 도시하는 바와 같이, 입출력부(301), 시큐어 처리부(302), 일반영역(303) 및 시큐어 영역(306)으로 구성된다.
일반영역(303)은 외부기기에 의해 자유롭게 액세스할 수 있는 기억영역이고, 암호화 음악데이터(304)를 기억하고 있다. 시큐어 영역(306)은 허가된 외부기기만이 액세스할 수 있는 기억영역이며, 콘텐츠 키(307)가 기억되어 있다.
암호화 음악데이터(304 …)는 한 곡 분량의 음악데이터에 콘텐츠 키(307)를 사용하여 암호화 알고리즘 E1을 실시하여 생성된 것이다. 각 암호화 음악데이터는 악곡 ID에 의해 식별된다.
암호화 알고리즘 E1은 일례로 DES(Data Encryption Standard) 등을 사용한다.
입출력부(301)는 외부기기와 일반영역(303) 및 시큐어 처리부(302) 사이에서 각종 데이터를 입출력한다.
시큐어 처리부(302)는 외부기기와의 사이에서 CPRM(Content Protection for Recordable Media) 구조에 의거하여 상호 인증을 행하고, 인증에 성공한 경우에 인증된 기기와 키를 공유한다. 공유한 키를 사용하여 외부기기와의 사이에서 안전하게 데이터의 입출력을 행한다.
또한, CPRM에 대해서는 공지이므로 설명을 생략한다. 또, 다른 인증방법에 의해 인증을 행해도 된다.
1.2 휴대전화(100)의 구성
휴대전화(100)는, 도 2에 도시하는 바와 같이, 디버거 IF(debugger IF, 101), CPU(102), MMU(103), 2차 기억부(104), 스위칭제어부(106), 인터럽트 컨트롤러(107), 입력부(108), 표시부(109), 통상 메모리(normal memory, 111), 공유메모리(112), 시큐어 메모리(secure memory, 113), 메모리 보호부(114), 입출력부(116), 암호처리장치(117), 무선통신제어부(118), 마이크(119), 스피커(120), 통신부(121), 안테나(122), 버퍼(123), 부호처리부(124) 및 D/A 변환부(126)로 구성 되고, 각 회로는 버스(130)에 접속되어 있다.
휴대전화(100)는 구체적으로는 컴퓨터 시스템이며, 통상 메모리(111), 공유메모리(112), 시큐어 메모리(113), 2차 기억부(104)에는 각종 컴퓨터 프로그램이 기억되어 있고, CPU(102)가 이들 컴퓨터 프로그램에 따라서 동작함으로써, 휴대전화(100)는 그 기능의 일부를 실현한다.
(1) 2차 기억부(104), 공유메모리(112)
2차 기억부(104)는 ROM으로 구성되며, 일례로, 도 3에 도시하는 바와 같이, 암호화 음악 복호프로그램(141) 및 음악 복호 데몬(music decryption daemon, 142) 등을 기억하고 있다.
암호화 음악 복호프로그램(141)은 시큐어 메모리(113) 상에 로드되어 실행되는 음악 복호프로그램을 암호화하여 생성된 것이다. 음악 복호프로그램은 메모리카드(300)에 기억되어 있는 암호화 음악데이터(304)를 복호하는 프로그램이다. 이에 대해서는 이후에 상세하게 설명한다.
음악 복호 데몬(142)은 통상 메모리(111) 상에 로드되어 실행되는 프로그램이며, 음악 복호프로그램과 1 대 1로 대응한다.
음악의 복호처리 중에서, 높은 보안(security)을 요하는 처리 및 보호되어야 할 데이터를 취급하는 처리를 음악 복호프로그램이 실행하고, 높은 보안을 필요로 하지 않는 처리를 음악 복호 데몬이 실행한다. 상세에 대해서는 후술한다.
공유메모리(112)는 RAM으로 구성되고, 통상 메모리(111) 상의 프로그램 및 시큐어 메모리 상의 프로그램 중 어느 프로그램으로부터도 사용할 수 있는 메모리 이다.
또한, 여기에서는, 2차 기억부(104)는 ROM으로 구성되는 것으로 하고 있으나, 하드디스크 유닛으로 구성되는 것으로 해도 된다.
(2) 통상 메모리(111) 및 시큐어 메모리(113)
통상 메모리(111)는 RAM 및 ROM으로 구성되고, CPU(102)에 의해 실행되는 각종 프로그램을 기억하고 있다. 일례로, 도 4에 도시하는 바와 같이, 통상 OS(normal OS, 151), 라이브러리(library, 152), 음악 재생프로그램(153), 음악 복호 데몬(156), 통상 입출력장치 드라이버(normal input output device driver, 157), 시큐어 입출력 엔트리장치 드라이버(secure input output entry device driver, 158), 암호 엔트리장치 드라이버(159), 통상 스위칭장치 드라이버(normal switch device driver, 160) 및 통상 인터럽트 핸들러(normal interrupt handler, 161)를 기억하고 있다.
시큐어 메모리(113)는 RAM으로 구성되고, CPU(102)에 의해서 실행되는 각종 프로그램을 기억하고 있다. 시큐어 메모리(113)는 메모리 보호부(114)를 통해서 버스(130)와 접속되어 있다.
시큐어 메모리(113)는 일례로, 도 6에 도시하는 바와 같이, 시큐어 OS(secure OS, 171), 음악 복호프로그램(176), 시큐어 입출력장치 드라이버(178), 암호장치 드라이버(179), 시큐어 스위칭장치 드라이버(180), 시큐어 인터럽트 핸들러(181)를 기억하고 있다.
도 8은 통상 메모리(111) 및 시큐어 메모리(113)에 기억되어 있는 각 프로그 램 사이의 관계를 기능적으로 나타낸 블록도이다. 실제로는, 동일 메모리 상의 각 프로그램 사이의 통신은 통상 OS(151) 및 시큐어 OS(171)에 시스템 콜(system call)을 출력함으로써 실현된다. 또, 통상 스위칭장치 드라이버(160), 시큐어 스위칭장치 드라이버(180) 및 스위칭제어부(106)가 동작함으로써, 통상 0S(151)와 시큐어 OS(171)를 스위칭하고 있으나, 도 8에서는, 오퍼레이팅 시스템에 의한 중계 및 통상 OS(151)와 시큐어 OS(171)의 스위칭에 관한 프로그램을 생략하고 있다.
또, 도 8에서, 공유메모리(112)는 통상 입출력장치(132) 및 암호처리장치(117)와 접속되어 있으나, 이는 공유메모리(112)가 담당하는 역할의 일부를 나타내고 있으며, 공유메모리(112)는 그외의 프로그램에 의해서도 사용된다.
<통상 OS(151)>
통상 OS(151)는 통상 메모리(111) 상에 로드되어 실행되는 각종 프로그램을 제어하는 기본 소프트웨어이며, 제어프로그램과 제어데이터로 구성된다.
제어데이터에는, 도 4에 도시하는 바와 같이, 애플리케이션 관리표(166)가 포함된다. 애플리케이션 관리표(166)는, 도 5에 도시하는 바와 같이, 복수의 엔트리(167, 168 …)를 포함한다. 각 엔트리는 핸들 값(handle value), 데몬 어드레스(demon address), 애플리케이션 컨텍스트 어드레스(application context address)로 구성된다.
핸들 값은 시큐어 메모리(113) 상에 로드되는 시큐어 애플리케이션에 할당되는 식별자이다.
이하의 설명에서, 시큐어 메모리(113) 상에 로드되어, 시큐어 처리(secure processing)를 실행하는 애플리케이션을 시큐어 애플리케이션이라고 부른다. 여기서, 시큐어 처리란, 보호되어야 할 데이터를 취급하는 처리 및 알고리즘 자체를 보호할 필요가 있는 처리를 말한다.
데몬 어드레스는 시큐어 애플리케이션과 대응하여 동작하는 프로그램의 통상 메모리(111) 상의 로드 어드레스(load address)이다.
애플리케이션 컨텍스트 어드레스는 핸들 값과 대응하는 시큐어 애플리케이션에 시큐어 처리를 의뢰하는 애플리케이션의 컨텍스트를 보호하고 있는 통상 메모리(111)의 어드레스이다. 컨텍스트에는 CPU(102)의 레지스터 값, 스택 포인터, MMU(103)의 내용 등이 포함된다.
구체적으로 엔트리(167)에 대하여 설명하면, 핸들 값 「1」은 음악 재생프로그램(153)이 시큐어 처리를 의뢰하는 음악 복호프로그램(176, 후술한다)에 할당되는 식별자이다. 데몬 어드레스 「0000BBBB」는 음악 복호프로그램(176)과 대응하여 동작하는 음악 복호 데몬(156)의 통상 메모리(111) 상의 로드 어드레스이다. 애플리케이션 컨텍스트 어드레스 「0000AAEE」는 음악 재생프로그램(153)의 컨텍스트를 보존하고 있는 통상 메모리(111) 상의 어드레스이다.
또, 제어데이터에는 통상 입출력장치 드라이버(157)를 나타내는 식별정보장치인 장치 ID_A, 시큐어 입출력 엔트리장치 드라이버(158)를 식별하는 식별정보인 장치 ID_B 및 암호 엔트리장치 드라이버(159)를 나타내는 식별정보인 장치 ID_C가 포함된다. 이들은 각각 통상 입출력장치 드라이버(157), 시큐어 입출력 엔트리장치 드라이버(158) 및 암호 엔트리장치 드라이버(159)의 통상 메모리(111) 상의 로드 어드레스와 대응시켜서 기억되어 있다. 장치 ID_B는 시큐어 입출력장치 드라이버(178, 후술한다)를 나타내는 식별정보와 동일하고, 장치 ID_C는 암호장치 드라이버(179)를 나타내는 식별정보와 동일하다.
통상 OS(151)는 공유메모리(112) 내의 소정의 영역(코맨드 영역이라고 부른다)을 통해서 시큐어 OS(171)와의 사이에서 각종 코맨드의 송수신을 행한다. 또, 통상 메모리(111) 상의 프로그램과의 사이에서도 각종 코맨드의 송수신을 행한다. 통상 메모리(111) 상의 프로그램과의 사이의 프로그램의 송수신에는 공유메모리(112)를 사용해도 되고 통상 메모리(111)를 사용해도 된다.
도 9(a)는 통상 OS(151)가 취급하는 코맨드의 데이터 구조의 일례를 나타내고 있다. 코맨드(1000)는 코맨드부(1011)와 데이터 저장부(1012)로 구성된다.
코맨드부(1011)에 저장되는 코맨드에는 시큐어 애플리케이션 등록요구, 등록완료통지, 애플리케이션 복귀요구, 시큐어 애플리케이션 삭제명령, 삭제완료통지, 시스템 콜, 응답통지, 시큐어 처리요구, 외부 처리요구, 휴면요구, 인터럽트 발생통지 등이 있다.
데이터 저장부(1012)에는 각종 데이터 및 코맨드(1016), 데이터 및 코맨드(1016)의 수신 처가 되는 프로그램을 나타내는 식별정보(1013) 등이 코맨드부(1011)에 저장되는 코맨드에 따라서 저장된다.
시큐어 애플리케이션 등록요구는 통상 메모리(111) 상에서 동작하는 애플리케이션이 시큐어 처리를 의뢰하는 시큐어 애플리케이션을 시큐어 메모리(113) 상에 로드하여 사용할 수 있는 상태로 할 것을 요구하는 코맨드이다. 이때, 도 9(b)에 도시하는 바와 같이, 데이터 저장부(1012)에는 시큐어 애플리케이션을 나타내는 시큐어 애플리케이션 정보와 시큐어 애플리케이션과 대응하여 동작하는 프로그램을 나타내는 데몬 정보가 저장된다. 음악 재생프로그램(153)으로부터 출력되는 시큐어 애플리케이션 등록요구를 예로 하면, 시큐어 애플리케이션 정보는 2차 기억부(104) 상의 암호화 음악 복호프로그램(141)이 기억되어 있는 어드레스이고, 데몬 정보는 음악 복호 데몬(142)이 기억되어 있는 어드레스이다. 또한, 시큐어 애플리케이션 정보 및 데몬 정보는 암호화 음악 복호프로그램(141) 및 음악 복호 데몬(142)과 대응하는 식별자 등이라도 좋다.
등록완료통지는 시큐어 메모리(113) 상에 시큐어 애플리케이션이 로드되어, 시큐어 애플리케이션 관리표(후술한다)에 등록이 완료되었음을 통지한다. 이때, 데이터 저장부(1012)에는 등록된 시큐어 애플리케이션과 대응하는 핸들 값이 저장되어 있다.
애플리케이션 복귀요구는 의뢰되어 있었던 처리를 종료한 시큐어 애플리케이션이 의뢰 원(依賴 元)인 애플리케이션의 복귀를 요구하는 코맨드이다. 이때, 데이터 저장부에는 시큐어 애플리케이션을 나타내는 식별정보가 저장되어 있다.
시큐어 애플리케이션 삭제명령은 시큐어 메모리(113) 상의 시큐어 애플리케이션의 삭제를 지시하는 것이다. 이때, 데이터 저장부(1012)에는 삭제하는 시큐어 애플리케이션을 고유하게 식별하는 핸들 값이 저장되어 있다.
삭제완료통지는 시큐어 메모리(113) 상의 시큐어 애플리케이션이 삭제되었음을 통지하는 것이다. 이때, 데이터 저장부(1012)에는 삭제된 시큐어 애플리케이션 을 고유하게 식별하는 핸들 값이 저장되어 있다.
시스템 콜은, 통상 메모리(111) 상의 애플리케이션이 통상 OS(151)에 코맨드 및 데이터의 중계를 의뢰하거나, 또는, 통상 메모리(111) 상의 다른 프로그램에 코맨드 및 데이터의 중계를 의뢰하는 코맨드이다. 이때, 데이터 저장부(1012)에는 중계를 의뢰한 애플리케이션을 나타내는 식별정보와 중계 처의 프로그램을 나타내는 식별정보와, 중계하는 데이터 및 코맨드가 기록되어 있다.
일례로, 도 9(c)는 음악 복호 데몬(156)이 출력한 시스템 콜의 데이터 구조를 나타내고 있다. 코맨드부(1011)에는 시스템 콜이 저장되어 있고, 데이터 저장부(1012)에는 시스템 콜의 발신 원(發信 元)인 음악 복호 데몬(156)을 나타내는 핸들 값 「1」과, 데이터의 수신처인 암호 엔트리장치 드라이버(159)를 나타내는 장치 ID_C와, 중계되는 데이터의 「처리결과」가 저장되어 있다.
응답통지는 시스템 콜에 의해 애플리케이션으로부터 코맨드 또는 데이터를 수신한 프로그램이 수신한 코맨드 및 데이터에 따라서 처리를 행하고, 시스템 콜의 출력 원(出力 元)의 애플리케이션에 대한 처리결과의 통지를 통상 OS(151)에 의뢰하는 것이다. 데이터 저장부(1012)에는 통지를 의뢰한 프로그램을 나타내는 식별정보와 통지처의 애플리케이션을 나타내는 식별정보 및 처리결과 등이 저장되어 있다.
일례로, 도 9(c)에 도시한 시스템 콜에 의해 핸들 값 「1」, 장치 ID_C 및 처리결과를 수신한 암호 엔트리장치 드라이버(159)는 배타제어를 해제하고(상세는 후술한다), 핸들 값 「1」, 장치 ID_C 및 처리결과를 포함하는 응답통지를 통상 OS(151)에 출력함으로써, 통상 OS(151)를 통해서 핸들 값 「1」, 장치 ID_C 및 처리결과를 음악 복호 데몬(156)에 통지한다(상세는 후술한다).
시큐어 처리요구는 통상 메모리(111) 상의 프로그램으로부터 시큐어 메모리(113) 상의 프로그램으로의 코맨드 또는 데이터의 중계를 의뢰하는 코맨드이다. 이때, 데이터 저장부(1012)에는 시큐어 처리요구의 출력 원인 프로그램을 나타내는 식별정보와, 중계 처(中繼 處)의 프로그램을 나타내는 정보, 및 중계하는 데이터 및 코맨드가 저장되어 있다. 도 9(d)는, 일례로, 음악 복호 데몬(156)으로부터 출력되는 시큐어 처리요구의 데이터 구조를 나타내고 있다. 데이터 저장부(1012)에는 시큐어 처리요구의 출력 원인 음악 복호 데몬(156)을 나타내는 핸들 값 「1」, 수신처인 암호장치 드라이버(179)를 나타내는 장치 ID_C와 중계되는 코맨드 「인터럽트 통지」가 저장되어 있다.
외부 처리요구는 시큐어 메모리(113) 상의 프로그램으로부터 통상 메모리(111) 상의 프로그램으로의 코맨드 및 데이터의 중계를 의뢰하는 것이다. 이때, 데이터 저장부(1012)에는 시큐어 처리요구의 출력 원인 프로그램을 나타내는 식별정보와, 중계 처의 프로그램을 나타내는 식별정보와, 중계되는 데이터 및 코맨드가 저장되어 있다. 도 9(e)는, 일례로, 암호장치 드라이버(179)로부터 출력되는 외부 처리요구의 데이터 구성을 나타내고 있다. 코맨드부에는 외부 처리요구가 저장되어 있고, 데이터 저장부에는 외부 처리요구의 출력 원인 암호장치 드라이버(179)와 대응하는 장치 ID_C와 수신처인 음악 복호 데몬(156)과 대응하는 핸들 값 「1」과, 중계되는 코맨드 「휴면요구」가 저장되어 있다.
휴면요구는 휴대전화(100)가 구비하는 장치의 장치 드라이버 및 장치에 처리를 의뢰한 프로그램을 휴면상태로 천이시키는 것을 의뢰하는 코맨드이다. 이때, 데이터 저장부(1012)에는 휴면요구를 의뢰하는 장치 드라이버를 나타내는 식별정보와 장치에 처리를 의뢰하는 프로그램과 대응하는 식별정보가 저장되어 있다.
인터럽트 발생통지는 인터럽트의 발생을 통지하는 것이다.
이하에, 도 10의 흐름도를 사용하여 통상 OS(151)의 동작에 대하여 설명한다. 또한, 통상 OS(151)는 이 흐름도에서 설명하는 처리 이외에도 각종 처리를 실행한다.
여기서, 시큐어 애플리케이션 등록요구, 등록완료통지, 애플리케이션 복귀요구, 시큐어 애플리케이션 삭제명령 및 삭제완료통지에 대해서는, 구체적으로, 통상 메모리(111) 상의 애플리케이션을 음악 재생프로그램(153)으로, 시큐어 애플리케이션을 음악 복호프로그램(176)으로, 시큐어 애플리케이션과 쌍이 되어 동작하는 프로그램을 음악 복호 데몬(156)으로 하여 설명한다.
통상 OS(151)는, 스위칭처리에 의해서 CPU(102)에 복귀하면, 공유메모리(112)의 코맨드 영역으로부터 코맨드를 판독한다(스텝 S1001). 또한, 스위칭처리에 대해서는 이하의 통상 스위칭장치 드라이버(160) 및 시큐어 스위칭장치 드라이버(180)의 설명에서 상세하게 설명한다.
판독한 코맨드를 해독하고(스텝 S 1002), 해독한 코맨드가 등록완료통지이면 음악 복호 데몬(156)을 통상 메모리(111) 상에 로드하고(스텝 S 1004), 로드한 어드레스와, 등록완료통지의 데이터 저장부에 포함되어 수신한 핸들 값 「1」을 애플 리케이션 관리표(166)의 엔트리(167)에 기록하고(스텝 S 1005), 핸들 값 「1」을 음악 재생프로그램(153)에 출력한다.
판독한 코맨드가 외부 처리요구이면(스텝 S 1002), 데이터 저장부에 포함되는 중계 처를 나타내는 식별정보와 대응하는 프로그램을 호출하고, 호출한 프로그램에 외부 처리요구의 데이터 저장부에 포함되어 수신한 정보를 출력한다(스텝 S 1006).
판독한 코맨드가 인터럽트 발생통지이면(스텝 S 1002), CPU(102)의 인터럽트 레지스터에 기록되어 있는 더미 데이터(dummy data)를 소거함으로써 인터럽트 마스크를 해제한다(스텝 S 1007). 인터럽트 마스크에 대해서는 이후의 시큐어 인터럽트 핸들러(181)에 관한 설명에서 설명한다.
판독한 코맨드가 애플리케이션 복귀요구인 경우(스텝 S1002), 데이터 저장부에 포함되는 핸들 값 「1」과 애플리케이션 관리표(166)를 기초로 하여 음악 재생프로그램(153)의 컨텍스트를 복귀시킨다(스텝 S 1009).
판독한 코맨드가 삭제완료통지이면(스텝 S 1002), 데이터 저장부에 포함되는 핸들 값 「1」과 대응하는 음악 복호 데몬(156)을 통상 메모리(111)에서 삭제하고(스텝 S 1011), 애플리케이션 관리표(166)에서 핸들 값 「1」을 포함하는 엔트리(167)를 삭제한다(스텝 S 1012).
이어서, 통상 메모리(111) 상의 각 프로그램으로부터의 코맨드를 접수한다(스텝 S1013).
시스템 콜을 접수하면(스텝 S 1013), 데이터 저장부에 기록되어 있는 핸들 값 또는 장치 ID 등의 중계 처를 나타내는 식별정보와 대응하는 프로그램을 호출하고, 데이터 저장부에 포함되는 정보를 출력한다(스텝 S 1014). 예를 들어, 핸들 값 「1」이 포함되어 있으면, 애플리케이션 관리표(166)에서 핸들 값 「1」을 포함하는 엔트리(167)를 선택하고, 선택한 엔트리(167)의 데몬 어드레스를 기초로 하여 음악 복호 데몬(156)을 호출하며, 장치 ID_C가 포함되어 있으면 암호 엔트리장치 드라이버(159)를 호출한다.
또, 구체적으로는 도시하고 있지 않으나, 응답통지를 수신한 경우에도, 시스템 콜을 수신한 경우와 마찬가지로, 데이터 저장부에 기록되어 있는 식별정보와 대응하는 애플리케이션을 호출하고, 데이터 저장부에 포함되는 정보를 출력한다.
휴면요구를 접수하면(스텝 S 1013), 데이터 저장부에 기록되어 있는 핸들 값 또는 장치 ID 등의 식별정보에 대응하는 프로그램과 대응하는 프로그램을 휴면상태로 천이시킨다(스텝 S 1016). 휴면상태란, 일체 동작을 행하지 않는 상태를 말한다.
음악 복호프로그램(176)으로부터, 도 9(b)에 도시하는 바와 같이, 데이터 저장부에 시큐어 애플리케이션 정보와 데몬 정보를 포함하는 시큐어 애플리케이션 등록요구를 접수하면(스텝 S 1013), 음악 재생프로그램(153)의 컨텍스트를 통상 메모리(111) 상에 보존하고, 보존 처의 어드레스를 애플리케이션 컨텍스트 어드레스에 기록하며, 시큐어 애플리케이션 정보를 기초로 하여 2차 기억부(104)로부터 판독한 암호화 음악 복호프로그램(141)을 공유메모리(112)에 기록한다(스텝 S 1017). 이어서, 시큐어 애플리케이션 등록요구를 공유메모리(112) 상에 기록하고(스텝 S 1018), 스텝 S 1028로 처리를 이동한다. 이때의 시큐어 애플리케이션 등록요구는 데이터 저장부에 암호화 음악 복호프로그램의 공유메모리(112) 상의 기록 처의 어드레스를 포함하고 있다.
음악 재생프로그램(153)으로부터 시큐어 애플리케이션 삭제명령을 수신하면(스텝 S 1013), 수신한 시큐어 애플리케이션 삭제명령을 공유메모리(112)에 기록한다(스텝 S 1019). 여기서, 데이터 저장부에는 삭제대상이 되는 음악 복호프로그램(176)을 나타내는 핸들 값 「1」이 저장되어 있다.
시큐어 처리요구를 접수하면(스텝 S 1013), 접수한 시큐어 처리요구를 공유메모리(112)에 기록한다(스텝 S 1021). 이어서, 스위칭처리를 행한다(스텝 S 1028).
또, 인터럽트가 발생하여, 인터럽트 컨트롤러(107)로부터 인터럽트 발생통지를 수신하면(스텝 S 1023), 통상 인터럽트 핸들러(normal interrupt handler, 161)를 기동한다(스텝 S 1024). 통상 인터럽트 핸들러(161)에 의한 인터럽트 요인의 조사결과에 의거하여 휴면하고 있는 프로그램의 휴면을 해제하고(스텝 S 1026), 스텝 S 1013으로 처리를 이동한다.
또한, 본 실시 예에서는 통상 OS(151)와 시큐어 OS(171)는 공유메모리(112)를 통해서 각종 코맨드를 주고 받고 있으나, 공유메모리(112) 대신 전용 레지스터를 사용하는 것으로 해도 된다.
<시큐어 OS(171)>
시큐어 OS(171)는, 도 6에 도시하는 바와 같이, 오퍼레이팅 프로그램(172), 디버그 무효화 프로그램(debug invalidation program, 173), 암호 복호프로그램(174)으로 구성된다.
디버그 무효화 프로그램(173)은 디버거 IF(101)의 레지스터에 더미 데이터를 기록하고, 디버거 IF(101)를 무효화하는 프로그램이다. 또한, 디버거 IF(101)와 CPU(102) 사이에 스위치를 구비하며, 디버그 무효화 프로그램(173)은 이 스위치를 개폐함으로써 디버거 IF(101)를 무효화하는 구성으로 해도 된다.
암호 복호프로그램(174)은 미리 복호 키가 코딩되어 있고, 암호화 음악 복호프로그램을 복호하여 음악 복호프로그램을 생성한다.
오퍼레이팅 프로그램(172)은 시큐어 메모리(113) 상에 로드되는 각종 프로그램을 제어하는 기본 소프트웨어이며, 제어프로그램과 제어데이터로 구성된다. 제어데이터에는, 도 6에 도시하는 바와 같이, 시큐어 애플리케이션 관리표(186)가 포함된다.
시큐어 애플리케이션 관리표(186)는, 도 7에 도시하는 바와 같이, 복수의 엔트리(187, 188,…)를 포함한다. 각 엔트리는 핸들 값, 시큐어 애플리케이션 어드레스, 시큐어 애플리케이션 컨텍스트 어드레스로 구성되고, 시큐어 메모리(113) 상에 로드되어 있는 시큐어 애플리케이션과 대응하고 있다.
핸들 값은 각 시큐어 애플리케이션에 할당된 식별자이다.
시큐어 애플리케이션 어드레스는 시큐어 애플리케이션이 로드되어 있는 시큐어 메모리(113) 상의 어드레스이다. 시큐어 애플리케이션 컨텍스트 어드레스는 시큐어 애플리케이션의 컨텍스트가 보존되어 있는 시큐어 메모리(113) 상의 어드레스 이다.
일례로, 엔트리(187)의 핸들 값 「1」은 오퍼레이팅 프로그램(172)이 음악 복호프로그램(176)에 할당한 식별자이다. 시큐어 애플리케이션 어드레스 「1111EEEE」는 음악 복호프로그램(176)이 기억되어 있는 시큐어 메모리(113) 상의 어드레스이고, 시큐어 애플리케이션 컨텍스트 어드레스 「11AADDDE」는 음악 복호프로그램(176)의 컨텍스트가 기억되어 있는 시큐어 메모리(113) 상의 어드레스이다.
또, 제어데이터에는 시큐어 입출력장치 드라이버(178)와 대응하는 식별정보인 장치 ID_B, 암호장치 드라이버(179)와 대응하는 식별정보인 장치 ID_C가 포함된다. 이들은 각각 시큐어 입출력장치 드라이버(178) 및 암호장치 드라이버(179)의 시큐어 메모리(113) 상의 로드 어드레스와 대응시켜서 시큐어 메모리(113) 상에 기억되어 있다.
여기서, 장치 ID_B 및 장치 ID_C는 통상 OS(151)가 갖는 제어데이터에 포함되는 장치 ID_B 및 장치 ID_C와 동일하다.
시큐어 OS(171)는 공유메모리(112)의 코맨드 영역을 통해서 통상 OS(151)와의 사이에서 각종 코맨드의 전송을 행한다. 또, 시큐어 메모리(113) 상의 각 프로그램과의 사이에서 시큐어 메모리(113) 상의 오퍼레이팅 프로그램(172)이 갖는 기억영역을 통해서 코맨드를 송수신한다.
이하의 설명에서, 설명의 편의상, 오퍼레이팅 프로그램(172)이 행하는 처리를 시큐어 OS(171)가 행하는 처리로 표현한다.
시큐어 OS(171)가 취급하는 각종 코맨드는, 통상 OS(151)가 취급하는 코맨드와 마찬가지로, 도 9(a)에 도시한 구조이다. 코맨드부(1011)에 저장되는 코맨드에는 시큐어 애플리케이션 등록요구, 등록완료통지, 애플리케이션 복귀요구, 시큐어 애플리케이션 삭제명령, 삭제완료통지, 시스템 콜, 응답통지, 시큐어 처리요구, 외부 처리요구, 인터럽트 발생통지 등이 있다. 시큐어 애플리케이션 등록요구, 등록완료통지, 애플리케이션 복귀요구, 시큐어 애플리케이션 삭제명령, 삭제완료통지, 시큐어 처리요구, 외부 처리요구, 인터럽트 발생통지에 대해서는 상기 통상 OS(151)에 관한 설명에서 이미 설명한 바와 같다. 시스템 콜은 시큐어 메모리(113) 상의 애플리케이션으로부터 시큐어 메모리(113) 상의 다른 프로그램에 데이터 및 코맨드의 중계를 의뢰하는 것이고, 응답통지는 시스템 콜에 의해 코맨드 및 데이터를 수신한 프로그램이 처리결과 등의 통지를 시큐어 OS(171)에 의뢰하는 것이다.
이하에, 도 11의 흐름도를 사용하여 시큐어 OS(171)의 동작에 대하여 설명한다. 여기서, 시큐어 애플리케이션 등록요구, 등록완료통지, 시큐어 애플리케이션 삭제명령 및 삭제완료통지에 대해서는, 구체적으로, 애플리케이션을 음악 재생프로그램(153)으로, 시큐어 애플리케이션을 음악 복호프로그램(176)으로, 시큐어 애플리케이션과 쌍이 되어 동작하는 프로그램을 음악 복호 데몬(156)으로 하여 설명한다. 또한, 시큐어 OS(171)는 이 흐름도에 도시된 처리 이외에도 각종 처리를 행하고 있으나, 본 발명과는 관계가 없으므로, 여기에서는 설명을 하지 않는다.
스위칭처리에 의해서, 시큐어 OS(171)가 CPU(102)에 복귀한다(스텝 S 1041). 시큐어 OS(171)는 공유메모리(112)의 코맨드 영역에서 코맨드를 판독하여 해독하 고(스텝 S 1042), 해독한 코맨드에 의해서 이하의 처리를 행한다.
판독한 코맨드가 시큐어 애플리케이션 등록요구이면(스텝 S 1042), 암호 복호프로그램(174)에 의해서 공유메모리(112) 상의 암호화 음악 복호프로그램을 복호하여 음악 복호프로그램(176)을 생성하고, 시큐어 메모리(113) 상에 로드한다(스텝 S 1043). 로드 어드레스 및 핸들 값 「1」을 시큐어 애플리케이션 관리표(186)의 엔트리(187)에 기록한다(스텝 S 1044). 이어서, 등록완료통지를 코맨드부에 저장하고, 데이터 저장부에 핸들 값 「1」을 저장한 등록완료통지를 생성하여, 공유메모리(112)에 기록한다(스텝 S 1046). 이어서, 스위칭처리로 이동한다(스텝 S 1062).
해독한 코맨드가 시큐어 처리요구이면(스텝 S 1042), 데이터 저장부에 저장되어 있는, 수신처가 되는 프로그램의 식별정보와 대응하는 프로그램을 호출한다(스텝 S 1047). 예를 들어, 핸들 값 「1」이 저장되어 있으면 음악 재생프로그램(153)을 호출하고, 장치 ID_B가 저장되어 있으면 시큐어 입출력장치 드라이버(178)를 호출한다. 이어서, 스텝 S 1052로 이동한다.
판독한 코맨드가 시큐어 애플리케이션 삭제명령이면(스텝 S 1042), 데이터 저장부에 저장되어 있는, 삭제대상이 되는 프로그램을 나타내는 핸들 값 「1」을 추출하고, 추출한 핸들 값 「1」과 대응하는 음악 복호프로그램(176)을 시큐어 메모리(113) 상에서 삭제하며, 이어서, 시큐어 애플리케이션 관리표(186)에서 엔트리(187)를 삭제한다(스텝 S 1049).
삭제가 종료되면, 삭제완료통지를 공유메모리(112)에 기록한다(스텝 S 1051). 이때, 코맨드부에는 삭제완료통지가 저장되어 있고, 데이터 저장부에는 핸 들 값 「1」이 저장되어 있다. 이어서, 스텝 S 1062로 처리를 이동한다.
이어서, 시큐어 OS(171)는 시큐어 메모리(113) 상의 각 프로그램으로부터 코맨드를 수신한다(스텝 S 1052).
수신한 코맨드가 외부 처리요구이면(스텝 S 1052), 공유메모리에 수신한 외부 처리요구를 기록하고(스텝 S 1053) 스텝 S 1062로 처리를 이동한다.
시큐어 인터럽트 핸들러(181, 후술한다)로부터 어떤 장치에서 인터럽트가 발생하였음을 나타내는 인터럽트 발생통지를 수신하면, 수신한 인터럽트 발생통지를 공유메모리(112)에 기록하고(스텝 S 1054) 스텝 S 1062로 처리를 이동한다.
수신한 코맨드가 시스템 콜이면(스텝 S 1052), 데이터 저장부에 저장되어 있는 수신처의 프로그램을 나타내는 식별정보에 의해 해당하는 프로그램을 호출한다(스텝 S 1056).
수신한 코맨드가 애플리케이션 복귀요구이면(스텝 S 1052), 공유메모리에 수신한 애플리케이션 복귀요구를 기록하고(스텝 S 1061) 스텝 S 1062로 처리를 이동한다. 또, 구체적으로는 도시하고 있지 않으나, 응답통지의 경우도 마찬가지로, 데이터 저장부에 포함되는 식별정보와 대응하는 애플리케이션을 호출한다.
이들의 처리 도중에 인터럽트가 발생하여, 인터럽트 컨트롤러(107)로부터 인터럽트 발생통지를 수신하면(스텝 S 1057), 시큐어 인터럽트 드라이버(181)를 기동하고(스텝 S 1059), 스텝 S 1052로 복귀한다.
<라이브러리(152)>
라이브러리(152)는 각종 프로그램에서 공통으로 이용되는 함수를 포함하고 있으며, 일례로, 메모리카드(300)의 액세스를 행하는 함수를 포함한다. 액세스 함수는 통상 입출력장치 드라이버(157)를 호출하고, 데이터의 판독을 지시하는 함수이다.
<음악 재생프로그램(153)>
음악 재생프로그램(153)은 이용자에게 표시하는 각종 화상데이터 등을 포함하며, 이용자의 조작을 수신하여 메모리카드(300)에 기억되어 있는 음악을 재생하는 애플리케이션이다. 음악 재생프로그램(153)에는 미리 시큐어 애플리케이션 정보와 데몬 정보가 코딩되어 있다. 시큐어 애플리케이션 정보는 음악 재생프로그램(153)이 시큐어 처리를 의뢰하는 프로그램을 나타내는 정보이고, 구체적으로는 암호화 음악 복호프로그램(141)이 기억되어 있는 2차 기억부(104) 상의 어드레스이다. 데몬 정보는 시큐어 애플리케이션 정보가 나타내는 프로그램과 쌍이 되는 프로그램을 나타내는 정보이며, 구체적으로는 음악 복호 데몬(142)이 기억되어 있는 2차 기억부(104) 상의 어드레스이다.
<음악 복호프로그램(176) 및 음악 복호 데몬(156)>
음악 복호프로그램(176)과 음악 복호 데몬(156)은 쌍이 되어 동작함으로써 암호화 음악데이터의 복호처리가 달성된다.
음악 복호프로그램(176)은 통상 OS(151) 및 시큐어 OS(171)를 통해서 음악 재생프로그램(153)으로부터 복호명령을 수신하여, 도 8에 도시하는 바와 같이, 데이터 판독스텝, 콘텐츠 키 판독스텝, 복호스텝 및 음악데이터 출력스텝을 거쳐서 음악데이터를 생성하고, 음악데이터 출력스텝에서 버퍼(123) 상의 음악데이터의 기 록 처 어드레스를 처리결과로서 출력한다.
이들 처리 중에서 높은 보안을 필요로 하지 않는 처리를 음악 복호 데몬(156)에 의뢰한다. 구체적으로는, 시큐어 OS(171)에 외부 처리요구를 출력함으로써 음악 복호 데몬(156)에 데이터 판독명령을 출력한다. 그 처리결과로 공유메모리(112) 상의 암호화 음악데이터의 기록 처 어드레스를 수신한다. 또, 시큐어 OS(171)에 대한 외부 처리요구에 의해서 음악 복호 데몬(156)에 복호명령을 출력하고, 그 처리결과로, 버퍼(123) 상의 음악데이터의 기록 처 어드레스를 취득한다.
음악 복호 데몬(156)은 시큐어 OS(171) 및 통상 OS(151)를 통해서 음악 복호프로그램(176)으로부터 데이터 판독명령 및 복호명령을 수신한다. 또, 통상 입출력장치 드라이버(157), 시큐어 입출력장치 드라이버(158), 암호 엔트리장치 드라이버(159), 시큐어 입출력장치 드라이버(178) 및 암호장치 드라이버(179)로부터 각종 명령 및 데이터를 수신한다. 수신한 명령 및 데이터에 의거하여 각종 처리를 행한다. 음악 복호 데몬(156)에 의한 처리에 대해서 도 12의 흐름도를 사용하여 설명한다. 또한, 도 9에서는 도시를 생략하고 있으나, 음악 복호 데몬(156)이 수신하는 모든 코맨드 및 데이터에는 수신처인 음악 복호 데몬(156)을 나타내는 식별정보로 핸들 값 「1」이 포함되어 있다.
시큐어 OS(171)를 통해서 각종 명령 및 데이터를 수신한다(스텝 S 011). 수신한 명령을 판별하여(스텝 S 012), 데이터 판독명령이면 라이브러리(152)의 액세스 함수를 호출한다(스텝 S 013).
코맨드의 출력 원을 나타내는 식별정보로 장치 ID_A와 처리결과를 수신하면, 외부 처리요구에 의해 수신한 처리결과를 음악 복호프로그램(176)에 출력한다(스텝 S 014). 이때, 데이터 저장부에는 처리결과와 수신처를 나타내는 핸들 값 「1」을 저장한다.
코맨드의 출력 원을 나타내는 장치 ID_B와 휴면요구를 수신하면(스텝 S 012), 통상 OS(151)에 대한 시스템 콜에 의해서 수신한 휴면요구를 시큐어 입출력 엔트리장치 드라이버(158)에 출력한다(스텝 S 015). 이때, 데이터 저장부에는, 수신처를 나타내는 식별정보로 수신한 장치 ID_B를 저장하고, 시스템 콜의 출력 원을 나타내는 식별정보로 음악 복호 데몬(156) 자신을 나타내는 핸들 값 「1」을 저장한다.
코맨드의 출력 원을 나타내는 장치 ID_B와 인터럽트 통지를 수신하면(스텝 S 012), 시큐어 처리요구의 데이터 저장부에 수신한 인터럽트 통지와 장치 ID_B 및 음악 복호 데몬(156) 자신을 나타내는 핸들 값 「1」을 저장하는 동시에 통상 OS에 출력함으로써, 수신한 인터럽트 통지를 시큐어 입출력장치 드라이버(178)에 출력한다(스텝 S 016).
시큐어 OS(171) 및 통상 OS(151)를 통해서 음악 복호프로그램(176)으로부터 복호명령을 수신하면, 시스템 콜에 의해 암호 엔트리장치 드라이버(159)에 복호명령을 출력한다(스텝 S 017).
응답통지에 의해 암호 엔트리장치 드라이버(159)로부터 장치 ID_C와 복호명령을 수신하면(스텝 S 012), 시큐어 처리요구에 의해 수신한 복호명령을 암호장치 드라이버(179)에 출력한다. 이때, 데이터 저장부에는 복호명령과 수신한 장치 ID_C 및 음악 복호 데몬(156) 자신을 나타내는 핸들 값 「1」을 저장한다(스텝 S 018).
통상 OS(151)로부터 장치 ID_C와 휴면요구를 수신하면, 시스템 콜에 의해 암호 엔트리장치 드라이버(159)에 수신한 휴면요구를 출력한다(스텝 S 019). 이때, 데이터 저장부에는 수신처를 나타내는 식별정보로 수신한 장치 ID_C와 음악 복호 데몬(156) 자신을 나타내는 핸들 값 「1」 및 휴면요구를 저장한다.
응답통지에 의해 암호 엔트리장치 드라이버(159)로부터 장치 ID_C와 인터럽트 통지를 수신하면(스텝 S 012), 시큐어 처리요구에 의해 수신한 인터럽트 통지를 암호장치 드라이버(179)에 출력한다(스텝 S 021). 데이터 저장부에는 수신한 장치 ID_C와 인터럽트 통지와 음악 복호 데몬(156) 자신을 나타내는 핸들 값 「1」을 저장한다.
통상 OS(151)로부터 장치 ID_C와 처리결과를 수신하면, 시스템 콜에 의해 수신한 처리결과를 암호 엔트리장치 드라이버(159)에 출력한다(스텝 S 022).
응답통지에 의해 암호 엔트리장치 드라이버(159)로부터 장치 ID_C와 처리결과를 수신하면, 시큐어 처리요구에 의해서 음악 복호프로그램(176)에 수신한 처리결과를 출력한다(스텝 S 023).
<통상 입출력장치 드라이버(157)>
통상 입출력장치 드라이버(157)는 미리 통상 입출력장치 드라이버(157) 자신을 나타내는 식별정보로 장치 ID_A를 가지고 있다.
통상 입출력장치 드라이버(157)는 입출력부(116)를 구성하는 통상 입출력장치(132)를 제어하는 프로그램이다.
또, 통상 입출력장치 드라이버(157)는 배타 플래그(exclusion flag)를 기억하고 있다. 통상 입출력장치(132)가 동작 중에는 배타 플래그 「1」을, 동작 중이 아니면 배타 플래그 「0」을 설정한다. 입출력의 처리명령을 수신한 때에 배타 플래그가 「1」이면 통상 입출력장치(132)가 동작 중이며, 처리를 접수할 수 없음을 나타내는 에러 통지를 출력한다.
<시큐어 입출력 엔트리장치 드라이버(158) 및 시큐어 입출력장치 드라이버(178)>
시큐어 입출력장치 드라이버(178) 및 시큐어 입출력 엔트리장치 드라이버(158)는 미리 동일한 식별정보 및 장치 ID_B를 가지고 있다.
시큐어 입출력장치 드라이버(178) 및 시큐어 입출력 엔트리장치 드라이버(158)가 쌍이 되어 제어함으로써 시큐어 입출력장치(133)는 정상적으로 동작한다. 시큐어 입출력장치 드라이버(178)는 시큐어 입출력장치(133)의 제어 중 시큐어 처리인 입출력 처리의 의뢰 및 처리결과의 취득을 행하고, 시큐어 입출력 엔트리장치 드라이버(158)는 높은 보안을 필요로 하지 않는 처리인 휴면 및 인터럽트의 검출을 행한다.
본 실시 예에서, 시큐어 입출력장치 드라이버(178)는 시큐어 OS(171)를 통해서 음악 복호프로그램(176)으로부터 콘텐츠 키 판독명령을 수신한다. 콘텐츠 키 판독명령을 수신하면 암호처리장치(117)에 콘텐츠 키의 판독을 지시한다. 이어서, 시큐어 OS(171)에 외부 처리요구를 출력함으로써 음악 복호 데몬(156)에 휴면요구를 출력한다. 이때, 코맨드의 데이터 저장부에는, 휴면요구와, 수신처를 나타내는 식 별정보로 음악 복호프로그램(176)으로부터 수신한 핸들 값 「1」과, 코맨드의 출력 원을 나타내는 식별정보로 시큐어 입출력장치 드라이버(178) 자신을 나타내는 장치 ID_B를 저장한다.
이어서, 시큐어 입출력장치 드라이버(178)는 시큐어 OS(171)를 통해서 음악 복호 데몬(156)으로부터 인터럽트 통지를 수신하고, 시큐어 입출력장치(133)로부터 처리결과로 콘텐츠 키가 저장된 어드레스를 취득한다. 취득한 처리결과를 시큐어 OS(171)에 대한 응답통지에 의해 음악 복호프로그램(176)에 출력한다.
시큐어 입출력 엔트리장치 드라이버(158)는 통상 OS(151)를 통해서 음악 복호 데몬(156)으로부터 휴면요구를 수신한다. 휴면요구를 수신하면, 통상 OS(151)에 대하여, 데이터 저장부에 핸들 값 「1」과 장치 ID_B를 포함하는 휴면요구를 출력한다.
이어서, 통상 OS(151)에 의해 휴면이 해제되면, 시큐어 입출력 엔트리장치 드라이버(158)는 응답통지에 의해 통상 OS(151)를 통해서 음악 복호 데몬(156)에 인터럽트 통지를 출력한다. 이때, 데이터 저장부에는 「휴면요구」와 장치 ID_B 및 핸들 값 「1」을 저장한다.
<암호장치 드라이버(179) 및 암호 엔트리장치 드라이버(159)>
암호장치 드라이버(179) 및 암호 엔트리장치 드라이버(159)는 미리 식별정보로 장치 ID_C를 가지고 있다.
암호장치 드라이버(179)와 암호 엔트리장치 드라이버(159)가 쌍이 되어 제어함으로써 암호처리장치(117)는 정상적으로 동작할 수 있다. 암호처리장치(117)의 제어 중, 암호장치 드라이버(179)는 복호처리의 의뢰와 처리결과의 취득을 행하고, 암호 엔트리장치 드라이버(159)는 배타제어와 휴면 및 인터럽트 통지를 행한다.
본 실시 예에서, 구체적으로는, 암호 엔트리장치 드라이버(159)는 시스템 콜에 의해 음악 복호 데몬(159)으로부터 복호명령을 수신한다. 복호명령을 수신하면 배타 플래그에 의한 배타제어를 행한다. 즉, 배타 플래그가 「1」이면 에러 통지를 출력하고, 이하의 처리를 중지하며, 배타 플래그가 「0」이면 배타 플래그를 「1」로 변경한다.
이어서, 수신한 복호명령과 핸들 값 「1」 및 암호 엔트리장치 드라이버(159) 자신이 갖는 장치 ID_C를 데이터 저장부에 포함하는 응답통지를 통상 OS(151)에 출력함으로써 복호명령을 음악 복호 데몬(156)에 출력한다.
이어서, 시스템 콜에 의해 음악 복호 데몬(156)으로부터 휴면요구를 수신한다. 이어서, 통상 OS(151)에 휴면요구를 출력한다. 이때, 휴면요구의 데이터 저장부에는 시스템 콜에 포함하여 수신한 핸들 값 「1」과 장치 ID_C가 저장되어 있다.
이어서, 통상 OS에 의해 휴면이 해제된다. 휴면이 해제되면, 응답통지에 의해 인터럽트 통지를 음악 복호 데몬(156)에 출력한다.
이어서, 통상 OS(151)를 통해서 음악 복호 데몬(156)으로부터 처리결과를 수신한다. 처리결과를 수신하면 배타제어를 해제하여, 배타 플래그를 「0」으로 복귀시킨다. 응답통지에 의해 수신한 처리결과를 음악 복호 데몬(156)에 출력한다.
암호장치 드라이버(179)는 시큐어 처리요구에 의해 시큐어 OS(171)를 통해서 음악 복호 데몬(156)으로부터 복호처리명령을 수신하고, 암호처리장치(117)에 복호 를 의뢰한다. 이어서, 암호장치 드라이버(179) 자신이 갖는 장치 ID_C와, 복호처리명령과 함께 수신한 핸들 값 「1」 및 휴면요구를 데이터 저장부에 저장한 외부 처리요구를 시큐어 OS(171)에 출력한다.
이어서, 시큐어 OS(171)에 대한 시큐어 처리요구에 의해 음악 복호 데몬(156)으로부터 인터럽트 통지를 수신하고, 암호처리장치(117)로부터 처리결과로 버퍼(123) 상의 기록 처 어드레스를 수신한다. 수신한 처리결과와 핸들 값 「1」 및 장치 ID_C와 데이터 저장부에 포함하는 외부 처리요구를 시큐어 OS(171)에 출력함으로써 처리결과를 음악 복호 데몬(156)에 출력한다.
<통상 스위칭장치 드라이버(160) 및 시큐어 스위칭장치 드라이버(180)>
통상 스위칭장치 드라이버(160) 및 시큐어 스위칭장치 드라이버(180)는, 통상 OS(151) 또는 시큐어 OS로부터 스위칭 지시를 받아서, 스위칭제어부(106)로 스위칭 지시를 출력하고, CPU(102)의 사용권을 통상 OS(151)에서 시큐어 OS(171)로, 또는 시큐어 OS(171)에서 통상 OS(151)로 이동시키는 프로그램이다.
(a) 스위칭처리 1
이하에, 도 13을 사용하여 통상 OS(151)로부터 시큐어 OS(171)로의 스위칭처리에 대하여 설명한다. 또한, 이는 도 10의 스텝 S 1028 및 도 16 이후의 흐름도의 스위칭처리 1의 상세이다.
통상 스위칭장치 드라이버(160)는, 통상 OS(151)로부터 호출되며, 스위칭 지시를 수신한다(스텝 S 162). 스위칭 지시를 수신하면 통상 OS(151)의 컨텍스트를 통상 메모리(111) 상에 퇴피시킨다(스텝 S 163). 이어서, 스위칭제어부(106)에 스 위칭 지시를 출력한다(스텝 S 164).
스위칭제어부(106)는 CPU(102) 및 MMU(103)를 클리어 한 후, 메모리 보호부(114)에 접속지시를 출력하고, 시큐어 메모리(113)와 버스(130)를 접속한다(스텝 S 166). 이어서, 스위칭제어부(106)는 시큐어 메모리(113) 상의 시큐어 스위칭장치 드라이버(180)를 호출한다(스텝 S 167).
시큐어 스위칭장치 드라이버(180)는, 호출되면, 시큐어 OS(171)의 컨텍스트를 CPU(102)로 복귀시킨다(스텝 S 168).
(b) 스위칭처리 2
이하에, 도 14의 흐름도를 사용하여 시큐어 OS(171)에서 통상 OS(151)로의 스위칭처리에 대하여 설명한다. 또한, 이는 도 11의 스텝 S 1062 및 도 16 이하의 흐름도의 스위칭처리 2의 상세를 나타내고 있다.
시큐어 OS(171)는 디버그 무효화 프로그램(173)에 의해 디버거 IF(101)를 유효하게 하고(스텝 S 176), 시큐어 스위칭장치 드라이버(180)를 호출하며, 스위칭 지시를 출력한다(스텝 S 177).
시큐어 스위칭장치 드라이버(180)는 시큐어 OS(171)의 컨텍스트를 퇴피시키고(스텝 S 178), 스위칭제어부(106)에 스위칭 지시를 출력한다.
스위칭제어부(106)는 스위칭 지시를 수신하고, CPU(102) 및 MMU(103)를 클리어 한 후, 메모리 보호부(114)에 절단지시를 출력하여, 시큐어 메모리(113)와 버스(130)를 절단한다(스텝 S 181). 이어서, 통상 메모리(111) 상의 통상 스위칭장치 드라이버(160)를 호출한다(스텝 S 182).
통상 스위칭장치 드라이버(160)는 통상 OS(151)의 컨텍스트를 CPU(102)에 복귀시킨다(스텝 S 183).
또한, 여기에서는 시큐어 OS(171)로부터 통상 OS(151)로 스위칭할 때에 디버거 IF(101)를 유효하게 하고 있으나, 유효하게 하지 않아도 된다. 이 경우, 휴대전화(100)에 전원을 투입하고, 최초에 통상 OS(151)로부터 시큐어 OS(171)로 스위칭할 때에, 디버그 무효화 프로그램(173)에 의해 디버거 IF(101)를 무효로 하고, 그 후에는, 시큐어 OS(171)에서 통상 OS(151)로의 스위칭처리에서도, 통상 OS(151)에서 시큐어 OS(171)로의 스위칭처리에서도, 디버거 IF(101)를 무효한 상태로 하여 둔다.
또, 본 실시 예에서는 시큐어 OS(171)가 갖는 디버그 무효화 프로그램(173)에 의해서 디버거 IF(101)를 무효화 및 유효화하고 있으나, 통상 OS(151)가 디버그 무효화 프로그램을 포함하고 있어도 된다. 또, 디버그 무효화 프로그램은 통상 메모리(111) 상에 로드되어 통상 OS(151)에 관리되는 독립된 프로그램이라도 좋다.
또, 통상 OS(151) 및 시큐어 OS(171)가 각각 디버그 무효화 프로그램을 가지고 있는 것으로 해도 좋다. 이 경우, 통상 OS(151)를 갖는 디버그 무효화 프로그램이 디버거 IF(101)를 무효화하고, 시큐어 OS(171)가 가지고 있는 디버그 무효화 프로그램이 디버거 IF를 유효화한다. 또, 반대로, 시큐어 OS(171)가 갖는 디버그 무효화 프로그램이 디버거 IF(101)를 무효화하고, 통상 OS(151)를 갖는 디버그 무효화 프로그램이 디버거 IF를 유효화해도 된다.
또, 이들 디버그 무효화 프로그램은 각각 독립된 프로그램으로, 통상 메모 리(111) 및 시큐어 메모리(113)에 로드되어 있어도 된다.
<통상 인터럽트 핸들러(161) 및 시큐어 인터럽트 핸들러(181)>
통상 인터럽트 핸들러(161)는 통상 OS(151) 및 통상 OS(151)에 의해 제어되는 프로그램의 실행 중에 인터럽트가 발생한 경우에 통상 OS(151)에 호출된다. 통상 OS(151)로부터 호출되어 인터럽트 발생통지를 수신하면, 인터럽트 컨트롤러(107)를 제어하여 인터럽트를 발생시키고 있는 요인을 조사한다. 이어서, 인터럽트를 발생시키고 있는 장치를 나타내는 식별정보와 인터럽트 통지를 통상 OS(151)에 출력한다.
시큐어 인터럽트 핸들러(181)는 시큐어는 OS(171) 및 시큐어 OS(171)에 의해 제어되는 프로그램의 실행 중에 인터럽트가 발생한 경우에 시큐어 OS(171)에 호출된다. 시큐어 OS(171)로부터 호출되어 인터럽트 발생통지를 수신하면, CPU(102)의 인터럽트 검출용 레지스터에 더미 데이터를 기록함으로써 인터럽트 마스크 처리를 하고, 시큐어 OS(171)에 인터럽트 발생통지를 출력한다.
(3) 입출력부(116)
입출력부(116)는, 도 8에 도시하는 바와 같이, 액세스부(131), 통상 입출력장치(132) 및 시큐어 입출력장치(133)로 구성된다.
액세스부(131)는 메모리카드(300)와 접속되고, 메모리카드(300)와 통상 입출력장치(132) 및 시큐어 입출력장치(133) 사이에서 정보의 입출력을 행한다.
통상 입출력장치(132)는 통상 입출력장치 드라이버(157)의 제어에 의해 메모리카드(300)의 일반영역(303)에 대한 데이터의 판독 및 기록을 행한다. 일례로, 인 수(argument)로 악곡 ID를 수신하고, 판독요구를 수신하면, 수신한 악곡 ID와 대응하는 암호화 음악데이터를 일반영역(303)에서 판독하고, 판독한 암호화 음악데이터를 공유메모리(112)에 기록한다.
기록종료 후에, 통상 입출력장치 드라이버(157)로부터 결과요구를 수신하면, 처리결과로 암호화 음악데이터를 기록한 공유메모리(112) 상의 어드레스를 출력한다.
시큐어 입출력장치(133)는, 시큐어 입출력장치 드라이버(178)의 제어에 의해, 메모리카드(300)의 시큐어 처리부(302)와의 사이에서, CPRM의 구조에 의거하여 상호 인증을 행한다. 상호 인증이 성공한 경우에 한하여 키를 공유하고, 공유한 키를 사용하여 안전하게 시큐어 영역(306)에 대한 데이터의 기록 및 판독을 행한다.
또, 인증에 실패한 경우에는 메모리카드(300)에 액세스할 수 없음을 나타내는 카드 에러 통지를 시큐어 입출력장치 드라이버(178)에 출력한다.
여기서, 시큐어 입출력장치(133)는 메모리카드(300)의 시큐어 영역(306)에 액세스하는 경우에만 사용되는 장치이며, 메모리카드(300)의 시큐어 영역(306)에 액세스하는 프로그램은 한정되어 있다. 따라서, 복수의 애플리케이션으로부터 동시에 처리가 의뢰되는 경우는 있을 수 없으므로 배타제어를 행할 필요가 없다.
(4) 암호처리장치(117)
암호처리장치(117)는 암호장치 드라이버(179)의 제어에 의해 각종 데이터의 암호처리를 행한다. 본 실시 예에서는, 암호장치 드라이버(179)로부터 암호화 음악데이터가 기억되어 있는 공유메모리(112) 상의 어드레스와 콘텐츠 키가 기억되어 있는 시큐어 메모리(113) 상의 어드레스를 수신하고, 암호화 음악데이터의 복호를 지시한다. 콘텐츠 키를 사용하여 암호화 음악데이터에 복호 알고리즘 D1을 실시하여 음악데이터를 생성하고, 생성한 음악데이터를 버퍼(123)에 기록한다. 기록 처의 어드레스를 처리결과로 암호장치 드라이버(179)에 출력한다. 복호 알고리즘 D1은 암호화 알고리즘 E1에 의해서 생성된 암호문을 복호하는 것이다.
여기서, 암호처리장치(117)는 각종 암호화된 데이터를 복호하는 장치이며, 콘텐츠 배신 서버로부터 송신되는 암호화 콘텐츠 등의 복호도 행한다. 따라서, 암호처리장치(117)는 복수의 다른 프로그램으로부터 복호처리가 의뢰될 가능성이 있으며, 배타제어가 필요하다.
(5) CPU(102)
CPU(102)는 명령 패치부(instruction fetching unit), 명령 디코더, 연산기, 프로그램 카운터, 레지스터 등을 구비하며, 통상 메모리(111) 또는 시큐어 메모리(113) 상의 프로그램에서 명령을 패치(fetch)하고, 패치 한 명령을 해독하며, 해독한 명령을 실행한다.
(6) MMU(103)
MMU(103)는 논리 어드레스를 물리 어드레스로 변환함으로써 가상기억기능을 실현한다.
(7) 디버거 IF(101) 및 인터럽트 컨트롤러(107)
디버거 IF(101)는 휴대전화(100)와 외부 디버거를 접속하기 위한 인터페이스이다.
인터럽트 컨트롤러(107)는 각종 인터럽트를 검출하고, CPU(102)의 인터럽트 검출용 레지스터에 인터럽트 발생통지를 출력한다.
(8) 스위칭제어부(106) 및 메모리 보호부(114)
스위칭제어부(106)는 통상 메모리(111) 상의 통상 스위칭장치 드라이버(160) 또는 시큐어 메모리(113) 상의 시큐어 스위칭장치 드라이버(180)로부터 스위칭 지시를 수신하고, 메모리 보호부(114)에 의해 버스(130)와 시큐어 메모리(113)를 접속 또는 절단한다. 스위칭제어부(106) 및 메모리 보호부(114)의 상세한 동작은 상기 (a) 스위칭처리 1 및 (b) 스위칭처리 2에서 설명한 바와 같다.
(9) 무선통신제어부(118), 통신부(121) 및 안테나(122)
통신부(121)는 무선통신제어부(118)와 휴대전화망(10) 및 인터넷(20)에 접속된 외부기기와의 사이에서 안테나(122)를 통해서 정보의 송수신을 행한다.
무선통신제어부(118)는 베이스 밴드부, 변·복조부, 증폭기 등을 구비하고 있고, 통신부(121) 및 안테나(122)를 통해서 송수신 되는 각종 정보의 신호처리를 행한다.
(10) 버퍼(123), 부호 처리부(124), D/A 변환부(126)
버퍼(123)는 음악데이터를 일시 기억한다.
부호 처리부(124)는 버퍼(123)에 기억되어 있는 음악데이터에 MP3 등의 부호화 기술에 따른 복호 처리를 하여, D/A 변환부(126)에 출력한다.
D/A 변환부(126)는 부호 처리부(124)에 의해 복호된 음악데이터를 아날로그 음성신호로 변환하여 스피커(120)에 출력한다.
(11) 입력부(108), 표시부(109), 마이크(119), 스피커(120)
입력부(108)는 텐 키(ten keys), 결정버튼 등의 각종 버튼을 구비하며, 이용자에 의한 이들의 조작을 접수한다.
표시부(109)는 VRAM 및 액정화면을 구비하며, 각종 화면을 표시한다.
마이크(119)는 음성을 검출하고, 검출한 음성을 무선통신제어부(118)에 출력한다.
스피커(120)는 무신통신제어부(118) 및 D/A 변환부(126)로부터 아날로그 음성신호를 수신하고, 수신한 음성신호에 의거하여 음성을 출력한다.
1.3 휴대전화(100) 및 메모리카드(300)의 동작
도 15 ~ 도 35에 도시한 흐름도는 휴대전화(100)의 동작을 나타내는 흐름도이다. 도 36 ~ 도 40은 휴대전화(100)의 동작에서 각 프로그램 사이의 코맨드의 전송을 나타낸 순서도이다. 이들 흐름도 및 순서도를 사용하여 휴대전화(100)의 동작에 대하여 설명한다.
또한, 순서도와 흐름도의 대응하는 처리에는 동일한 스텝번호를 부여하고 있다. 또, 통상 OS(151) 및 시큐어 OS(171)에 대한 설명에서 설명한 바와 같이, 통상 메모리(111) 및 시큐어 메모리(113) 상의 각 프로그램은 시스템 콜, 응답통지, 외부 처리요구, 시큐어 처리요구에 의해서, 다른 프로그램으로의 코맨드 및 데이터의 중계를 통상 OS(151) 및 시큐어 OS(171)에 의뢰하고 있다. 도 15 ~ 도 40 및 이하의 설명에서는 시스템 콜, 응답통지, 외부 처리요구, 시큐어 처리요구의 기재를 생략하며, 각 프로그램이 이들 코맨드의 데이터 저장부에 저장하여 출력하는 식별정 보, 데이터 및 코맨드 만을 기재하고 있다.
(1) 휴대전화(100)의 동작
휴대전화(100)의 동작에 대해서 도 15에 도시한 흐름도를 사용하여 설명한다.
휴대전화(100)는 입력부(108)에 의해 이용자에 의한 버튼 조작을 접수한다(스텝 S 101). 접수한 조작이 음악의 재생을 나타내고 있는 경우에는 음악 재생프로그램(153)을 기동한다(스텝 S 102). 접수한 버튼 조작이 그외의 처리를 나타내고 있는 경우에는 그외의 처리를 행한다(스텝 S 103).
이어서, 음악 복호프로그램의 등록처리를 행한다(스텝 S 104). 이어서, 음악 복호프로그램(176)에 복호처리를 의뢰한다(스텝 S 106). 음악 복호프로그램(176)에 의한 복호가 종료되면, 생성된 음악데이터를 MP3에 따른 방법으로 신장하고, 아날로그 데이터로 변환하여 아날로그 음악데이터를 생성하며, 생성한 아날로그 음악데이터를 스피커(120)에 의해 출력한다(스텝 S 107). 입력부(108)에 의해 음악재생의 종료를 나타내는 버튼 조작을 접수할 때까지(스텝 S 108) 스텝 S 106 ~ S 108을 반복한다.
음악재생의 종료를 나타내는 버튼 조작을 접수하면(스텝 S 108의 YES), 음악 복호프로그램의 삭제처리를 행한다(스텝 S 109).
(2) 음악 복호프로그램의 등록
도 16 ~ 17은 음악 복호프로그램의 등록처리에서의 각 프로그램의 동작을 상세하게 나타내는 흐름도이다. 이는 도 36에서의 스텝 S 132 ~ 스텝 S 153의 흐름과 대응하고 있다. 도 16 ~ 17에 도시하는 흐름도 및 도 36의 순서도를 사용하여 음악 복호프로그램의 등록처리에 대하여 설명한다.
음악 재생프로그램(153)은 미리 코딩되어 있는 데몬 정보와 시큐어 애플리케이션 정보를 판독한다(스텝 S 131). 시큐어 애플리케이션 등록요구와 판독한 데몬 정보 및 시큐어 애플리케이션 정보를 통상 OS(151)에 출력한다(스텝 S 132).
통상 OS(151)는 시큐어 애플리케이션 등록요구를 수신하면, 음악 재생프로그램(153)의 컨텍스트를 보존하고, 보존 처의 어드레스를 애플리케이션 관리표의 엔트리(167)의 애플리케이션 컨텍스트 어드레스에 기록한다(스텝 S 133). 이어서, 수신한 시큐어 애플리케이션 정보와 대응하는 암호화 음악 복호프로그램(141)을 2차 기억부(104)로부터 판독하여, 공유메모리(112)에 기록한다(스텝 S 134). 이어서 시큐어 애플리케이션 등록요구를 공유메모리(112)의 코맨드 영역에 기록하고(스텝 S 136), 스위칭처리 1로 이동한다(스텝 S 137).
스위칭처리 1이 종료되면 시큐어 OS(171)는 공유메모리(112)로부터 시큐어 애플리케이션 등록요구를 판독한다(스텝 S 138). 이어서, 암호 복호프로그램에 의해 공유메모리(112) 상의 암호화 음악 복호프로그램을 복호하여 음악 복호프로그램을 생성하고, 생성한 음악 복호프로그램을 시큐어 메모리(113) 상에 기록한다(스텝 S 139). 음악 복호프로그램에 대하여 핸들 값 「1」을 설정하고, 시큐어 애플리케이션 관리표(186)의 엔트리(187)의 핸들 값에 「1」을 기록하며, 음악 복호프로그램(176)을 기록한 시큐어 메모리(113) 상의 어드레스를 시큐어 애플리케이션 어드레스에 기록한다(스텝 S 141).
이어서, 등록완료통지와 핸들 값 「1」을 공유메모리(112)에 기록하고(스텝 S 143), 스위칭처리 2(스텝 S 144)로 처리를 이동한다.
통상 OS(151)는 공유메모리(112)로부터 등록완료통지와 핸들 값 「1」을 판독한다(스텝 S 146). 판독한 핸들 값 「1」을 애플리케이션 관리표(166)의 엔트리(167)에 기록한다(스텝 S 147). 데몬 정보를 기초로 하여, 2차 기억부(104)로부터 음악 복호 데몬(142)을 판독하고, 통상 메모리(111) 상에 기록한다(스텝 S 149). 통상 메모리(111) 상의 음악 복호 데몬(156)의 기록 처 어드레스를 애플리케이션 관리표(166)의 엔트리(167)에 기록한다(스텝 S 151).
이어서, 엔트리(167)의 애플리케이션 컨텍스트 어드레스를 기초로 하여, 음악 재생프로그램(153)의 컨텍스트를 CPU(102)에 복귀시키고(스텝 S 152), 수신한 핸들 값 「1」을 음악 재생프로그램(153)에 출력한다(스텝 S 153).
음악 재생프로그램(153)은 수신한 핸들 값 「1」을 통상 메모리(111)에서의 음악 재생프로그램(153) 자신의 기억영역에 기록한다(스텝 S 154).
(3) 음악 복호프로그램에 처리 의뢰
도 18 ~ 27의 흐름도는 음악 재생프로그램(153)의 의뢰에 의해 음악 복호프로그램(176)이 암호화 음악데이터를 복호 할 때의 각 프로그램의 동작을 나타내고 있다. 이는 도 36의 스텝 S 193 ~ 도 42의 스텝 S 347과 대응하고 있다.
음악 재생프로그램(153)은 곡목 리스트 등을 포함하는 선택화면을 표시하고 이용자의 악곡 선택을 접수한다(스텝 S 191). 접수한 악곡을 나타내는 악곡 ID와 핸들 값 「1」을 판독한다(스텝 S 192). 판독한 악곡 ID를 인수로 하여, 인수와 핸 들 값 「1」 및 복호처리명령을 통상 OS(151)에 출력한다(스텝 S 193).
통상 OS(151)는 음악 재생프로그램(153)의 컨텍스트를 통상 메모리(111) 상에 보존하고(스텝 S 196), 보존 처의 어드레스를 애플리케이션 관리표(166)의 핸들 값 「1」을 포함하는 엔트리(167)에 기록한다(스텝 S 197). 이어서, 수신한 인수와 핸들 값 「1」 및 복호처리명령을 공유메모리(112)에 기록하고(스텝 S 198), 스위칭처리 1을 행한다(스텝 S 199).
시큐어 OS(171)는 스위칭처리 1이 종료되면(스텝 S 199), 공유메모리(112)로부터 인수와 핸들 값 「1」 및 복호처리명령을 판독한다(스텝 S 201). 시큐어 애플리케이션 관리표(186) 상에서 판독한 핸들 값 「1」을 포함하는 엔트리(187)의 시큐어 애플리케이션 어드레스를 기초로 하여 음악 복호프로그램(176)을 기동하고(스텝 S 202), 판독한 인수와 핸들 값 「1」 및 복호처리명령을 음악 복호프로그램(176)에 출력한다(스텝 S 203).
음악 복호프로그램(176)은 시큐어 OS(171)로부터 인수와 복호처리명령을 수신하고, 수신한 인수(악곡 ID)를 기억한다. 이어서, CPU(102)는 음악 복호프로그램(171)(데이터 판독스텝)을 실행한다(스텝 S 204). 음악 복호프로그램(176)은 악곡 ID를 판독하고(스텝 S 206), 판독한 악곡 ID를 인수로 하여 데이터 판독명령과 인수 및 핸들 값 「1」을 시큐어 OS(171)에 출력한다(스텝 S 208).
시큐어 OS(171)는 음악 복호프로그램(176)으로부터 데이터 판독명령과 인수 및 핸들 값 「1」을 수신하고, 음악 복호프로그램(176)의 컨텍스트를 시큐어 메모리(113) 상에 보존하며, 보존 처의 어드레스를 시큐어 애플리케이션 관리표(186)의 엔트리(187)에 기록한다(스텝 S 209). 이어서, 공유메모리(112)에 수신한 데이터 판독명령과 인수 및 핸들 값 「1」을 기록하고(스텝 S 211), 스위칭처리 2로 이동한다(스텝 S 216).
스위칭처리 2가 종료되면(스텝 S 216), 통상 OS(151)는 공유메모리(112)로부터 데이터 판독명령과 인수 및 핸들 값 「1」을 판독한다(스텝 S 217). 애플리케이션 관리표(166)의 핸들 값 「1」을 포함하는 엔트리(167)를 선택하고, 선택한 엔트리(167)에 포함되는 데몬 어드레스에 의해 음악 복호 데몬(156)을 기동한다(스텝 S 218). 판독한 데이터 판독명령과 인수 및 핸들 값 「1」을 음악 복호 데몬(156)에 출력한다(스텝 S 219).
음악 복호 데몬(156)은 데이터 판독명령과 인수 및 핸들 값 「1」을 수신한다. 데이터 판독명령을 수신하면, 라이브러리(152)에 저장되어 있는 액세스 함수를 호출하여, 인수와 핸들 값 「1」을 출력한다(스텝 S 221). 음악 복호 데몬(156)에 호출된 액세스 함수는 판독요구와 인수와 장치 ID_A 및 수신한 핸들 값 「1」을 통상 OS(151)에 출력한다(스텝 S 222). 통상 OS(151)는 수신한 장치 ID_A와 대응하는 통상 입출력장치 드라이버(157)에 판독요구와 인수와 장치 ID_A 및 핸들 값 「1」을 출력한다(스텝 S 223).
통상 입출력장치 드라이버(157)는 판독요구, 인수 및 핸들 값 「1」을 수신한다. 이어서, 배타 플래그가 「0」인가 여부를 판단한다(스텝 S 224). 배타 플래그가 「1」이면(스텝 S 224의 NO), 통상 입출력장치 드라이버(157)는 통상 입출력장치(132)가 동작 중이며, 새로운 판독요구를 접수할 수 없음을 나타내는 에러 통 지를 출력한다.
통상 OS(151) 및 액세스 함수를 통해서 음악 복호 데몬(156)은 에러 통지를 수신하고, 일정시간 경과 후에 다시 판독요구를 출력한다. 또, 수신한 에러 통지를 통상 OS(151) 및 시큐어 OS(171)를 통해서 음악 복호프로그램(176)에 출력하여, 복호처리를 중지하는 것으로 해도 된다.
배타 플래그가 「0」이라고 판단하면(스텝 S 224의 YES) 배타 플래그를 「1」로 변경하고(스텝 S 227), 수신한 인수를 통상 입출력장치(132)에 출력하고, 데이터의 판독을 지시한다(스텝 S 231).
통상 입출력장치(132)는 인수(악곡 ID)와 판독요구를 수신하고, 메모리카드(300)의 일반영역(303)에서 수신한 악곡 ID와 대응하는 암호화 음악데이터(304)의 판독 및 판독한 암호화 음악데이터(304)의 공유메모리(112)에 대한 기록을 개시한다(스텝 S 236).
통상 입출력장치 드라이버(157)는, 통상 입출력장치(132)에 판독요구를 출력하면(스텝 S 231), 통상 OS(151)에 통상 입출력장치 드라이버(157) 자신이 갖는 장치 ID_A 및 수신한 핸들 값 「1」을 포함하는 휴면요구를 출력한다(스텝 S 232).
통상 OS(151)는 휴면요구를 수신하면, 핸들 값 「1」과 대응하는 음악 복호 데몬(156) 및 장치 ID_A와 대응하는 통상 입출력장치 드라이버(157)를 휴면상태로 한다(스텝 S 233, 스텝 S 234). 이어서, 태스크 스케줄링(task scheduling)에 의해 실행가능상태에 있는 다른 프로그램에 CPU(102)를 할당한다(스텝 S 238).
통상 입출력장치(132)에서의 처리가 종료되면, 인터럽트가 발생하고, 음악 복호 데몬(156)은 처리결과를 취득한다(스텝 S 239). 스텝 S 239에서의 인터럽트 발생시의 처리 1에 대해서는 이후에 설명한다. 또, 스텝 S 239의 처리는 도 37의 스텝 S 463 ~ 478의 순서와 대응하고 있다.
인터럽트 발생시의 처리 1(스텝 S 239)에서, 음악 복호 데몬(156)은 통상 입출력장치(132)에 의한 처리결과로 암호화 음악데이터의 공유메모리(112) 상의 기록 처 어드레스를 취득한다. 취득한 처리결과와 핸들 값 「1」을 통상 OS(151)에 출력한다(스텝 S 241). 통상 OS(151)는 수신한 처리결과와 핸들 값 「1」을 공유메모리(112)에 기록하고(스텝 S 242), 스위칭처리 1을 행한다(스텝 S 244).
스위칭처리 1(스텝 S 244)이 종료되면, 시큐어 OS(171)는 공유메모리(112)로부터 핸들 값 「1」과 처리결과를 판독한다(스텝 S 251). 시큐어 애플리케이션 관리표(186)로부터 판독한 핸들 값 「1」을 포함하는 엔트리(187)를 선택하고, 엔트리(187)의 시큐어 애플리케이션 컨텍스트 어드레스에 의해 음악 복호프로그램(176)의 컨텍스트를 CPU(102)에 복귀시킨다(스텝 S 252). 이어서, 판독한 처리결과와 핸들 값 「1」을 음악 복호프로그램(176)에 출력한다(스텝 S 254).
음악 복호프로그램(176)은 처리결과로 암호화 음악데이터의 기록 처 어드레스를 수신하고, 수신한 기록 처 어드레스를 자신의 기억영역에 기억한다.
이어서, CPU(102)는 음악 복호프로그램(176)(콘텐츠 키 판독스텝)을 실행한다(스텝 S 256). 음악 복호프로그램(176)은 콘텐츠 키 판독명령과 장치 ID_B 및 음악 복호프로그램(176) 자신을 나타내는 핸들 값 「1」을 포함하는 시스템 콜을 시큐어 OS(171)에 출력한다(스텝 S 257).
시큐어 OS(171)는 콘텐츠 키 판독명령과 장치 ID_B 및 핸들 값 「1」을 수신하고, 수신한 장치 ID_B와 대응하는 시큐어 입출력장치 드라이버(176)에 수신한 콘텐츠 키 판독명령과 장치 ID_B 및 핸들 값 「1」을 출력한다(스텝 S 258).
시큐어 입출력장치 드라이버(178)는 콘텐츠 키 판독명령과 장치 ID_B 및 핸들 값 「1」을 수신하고, 시큐어 입출력장치(133)에 콘텐츠 키 판독명령을 출력한다(스텝 S 259).
시큐어 입출력장치(133)는 콘텐츠 키 판독명령을 수신하고, 이어서, 메모리카드(300)의 시큐어 처리부(302)와의 사이에서 상호 인증을 행한다(스텝 S 262). 인증에 성공하면(스텝 S 263의 YES) 콘텐츠 키의 취득을 개시한다(스텝 S 266).
인증이 실패한 경우, 카드 에러 통지를 출력하고, 상기 콘텐츠 키의 취득을 중지한다(스텝 S 264). 이 경우, 음악 복호 데몬(156) 및 음악 복호프로그램(176)은 복호처리를 중지하고, 음악 재생프로그램(153)은 메모리카드(300)가 판독불가임을 통지하는 화면을 표시한다.
시큐어 입출력장치 드라이버(178)는, 이어서, 시큐어 OS(171)에 휴면요구와 수신한 핸들 값 「1」 및 시큐어 입출력장치 드라이버(178) 자신을 나타내는 장치 ID_B를 출력한다(스텝 S 271). 또한, 여기서 출력되는 휴면요구는 시큐어 OS(171)에 휴면처리를 요구하는 것은 아니며, 외부 처리요구의 데이터 저장부에 저장되어 음악 복호 데몬(156)으로 중계되는 코맨드이다.
시큐어 OS(171)는 시큐어 입출력장치 드라이버(178)로부터 휴면요구와 핸들 값 「1」 및 장치 ID_B를 수신하고, 공유메모리(112)에 수신한 휴면요구와 핸들 값 「1」 및 장치 ID_B를 기록한다(스텝 S 272). 이어서, 스위칭처리 2로 이동한다(스텝 S 273).
스위칭처리가 종료되면(스텝 S 273), 통상 OS(151)는 공유메모리(112)로부터 휴면요구와 핸들 값 「1」 및 장치 ID_B를 판독한다(스텝 S 274). 판독한 핸들 값 「1」을 포함하는 엔트리(168)를 기초로 하여 음악 복호 데몬(156)을 기동하고(스텝 S 276), 판독한 휴면요구와 장치 ID_B 및 핸들 값 「1」을 출력한다(스텝 S 277).
음악 복호 데몬(156)은 통상 OS(151)로부터 휴면요구와 장치 ID_B 및 핸들 값 「1」을 수신한다. 휴면요구를 수신하면 통상 OS(151)에 휴면요구와 장치 ID_B 및 핸들 값 「1」을 포함하는 시스템 콜을 출력한다(스텝 S 278).
시큐어 OS(171)는 수신한 장치 ID_B와 대응하는 시큐어 입출력 엔트리장치 드라이버(158)에 수신한 휴면요구와 장치 ID_B 및 핸들 값 「1」을 출력한다(스텝 S 281).
시큐어 입출력 엔트리장치 드라이버(158)는 통상 OS(151)를 통해서 음악 복호 데몬(156)으로부터 휴면요구를 수신하면, 장치 ID_B와 핸들 값 「1」을 포함하는 휴면요구를 통상 OS(151)에 출력한다(스텝 S 282).
통상 OS(151)는 휴면요구와 장치 ID_B 및 핸들 값 「1」을 수신한다. 휴면요구를 수신하면, 수신한 장치 ID_B와 대응하는 시큐어 입출력 엔트리장치 드라이버(158)와 수신한 핸들 값 「1」과 대응하는 음악 복호 데몬(156)에 휴면처리를 행한다(스텝 S 283, 스텝 S 284).
이어서, 통상 OS(151)는 태스크 스케줄링을 행하여 실행가능상태의 다른 프로그램에 CPU를 할당한다(스텝 S 286).
시큐어 입출력장치(133)에 의한 콘텐츠 키의 취득이 종료되고, 인터럽트 발생시의 처리 2(스텝 S 287)에 의해, 음악 복호프로그램(176)은 처리결과를 취득한다. 스텝 S 287의 인터럽트 발생시의 처리 2에 대해서는 이후에 설명한다. 또, 스텝 S 287에서의 처리는 도 38의 스텝 S 512 ~ 도 39의 스텝 S 541에 대응하고 있다.
스텝 S 287에서, 음악 복호프로그램(176)은 처리결과로 콘텐츠 키가 기억되어 있는 시큐어 메모리(113) 상의 어드레스를 취득한다. 이어서, CPU(102)는 음악 복호프로그램(176)(복호스텝)을 실행한다(스텝 S 291). 음악 복호프로그램(176)은, 시큐어 메모리(113) 상의 콘텐츠 키가 기억되어 있는 어드레스와 공유메모리(112) 상의 암호화 음악데이터가 기억되어 있는 어드레스를 인수로 하여, 복호명령과 인수와 핸들 값 「1」을 시큐어 OS(171)에 출력한다(스텝 S 292).
시큐어 OS(171)는 음악 복호프로그램(176)으로부터 복호명령과 인수와 핸들 값 「1」을 수신한다. 이어서, 수신한 복호명령과 인수와 핸들 값 「1」을 공유메모리(112)에 기록하고(스텝 S 293), 스위칭처리 2를 행한다(스텝 S 294).
스위칭처리 2가 종료되면(스텝 S 294), 통상 OS(151)는 공유메모리(112)로부터 복호명령, 인수 및 핸들 값 「1」을 판독한다(스텝 S 296). 판독한 핸들 값 「1」과 애플리케이션 관리표(166)를 사용하여, 음악 복호 데몬(156)을 기동하고, 음악 복호 데몬(156)에 판독한 복호명령과 인수와 핸들 값 「1」을 출력한다(스텝 S 297).
음악 복호 데몬(156)은 통상 OS(151)로부터 복호명령과 인수 및 핸들 값 「1」을 수신한다. 복호명령을 수신하면 수신한 복호명령 및 인수와 장치 ID_C, 핸들 값 「1」을 통상 OS(151)에 출력한다(스텝 S 298).
통상 OS(151)는 음악 복호 데몬(156)으로부터 복호명령, 인수, 장치 ID_C 및 핸들 값 「1」을 수신하고, 수신한 장치 ID_C와 대응하는 암호 엔트리장치 드라이버(159)에 수신한 복호명령, 인수, 장치 ID_C 및 핸들 값 「1」을 출력한다(스텝 S 301).
암호 엔트리장치 드라이버(159)는 통상 OS(151)를 통해서 음악 복호 데몬(156)으로부터 인수와 복호명령과 장치 ID_C와 핸들 값 「1」을 수신한다. 복호명령을 수신한 때, 배타 플래그가 「1」이면(스텝 S 303의 NO), 암호처리장치(117)가 이미 동작 중이며, 새로운 처리의 의뢰를 접수하지 않음을 나타내는 에러 통지를 출력한다(스텝 S 304). 이때, 에러 통지를 수신한 음악 복호 데몬(156)은 일정 시간 경과 후에 다시 복호명령을 출력한다.
배타 플래그가 「0」이면(스텝 S 303의 YES), 배타 플래그를 「1」로 변경하고(스텝 S 306), 수신한 인수와 복호명령과 핸들 값 「1」 및 장치 ID_C를 통상 OS(151)에 출력한다(스텝 S 307).
통상 OS는 수신한 핸들 값 「1」과 대응하는 음악 복호 데몬(156)을 호출하고, 수신한 복호명령과 인수와 핸들 값 「1」과 장치 ID_C를 출력한다(스텝 S 308).
음악 복호 데몬(156)은 통상 OS(151)를 통해서 암호 엔트리장치 드라이버(159)로부터 복호명령과 인수와 핸들 값 「1」 및 장치 ID_C를 수신한다. 이어서, 수신한 복호명령과 인수와 장치 ID_C 및 핸들 값 「1」을 통상 OS(151)에 출력한다(스텝 S 309).
통상 OS(151)는 음악 복호 데몬(156)으로부터 복호명령과 인수와 장치 ID_C와 핸들 값 「1」을 수신하고, 공유메모리(112)에 수신한 복호명령과 인수와 장치 ID_C와 핸들 값 「1」을 기록하며(스텝 S 312), 스위칭처리 2를 행한다(스텝 S 313).
스위칭처리 2가 종료되면(스텝 S 313), 시큐어 OS(171)는 공유메모리(112)로부터 복호명령과 인수와 장치 ID_C와 핸들 값 「1」을 판독한다(스텝 S 314). 판독한 장치 ID_C를 기초로 하여 암호장치 드라이버(179)를 기동하고(스텝 S 315), 판독한 복호명령, 인수, 핸들 값 「1」의 암호장치 드라이버(179)에 출력한다(스텝 S 316).
암호장치 드라이버(179)는 시큐어 OS(171)로부터 복호명령과 인수와 장치 ID_C와 핸들 값 「1」을 수신하고, 암호처리장치(117)에 수신한 인수를 출력하여 복호를 명령한다(스텝 S 317).
암호처리장치(117)는 암호장치 드라이버(179)로부터 복호명령을 수신하면, 시큐어 메모리(113)로부터 콘텐츠 키를 판독하고, 판독한 콘텐츠 키를 사용하여 공유메모리(112) 상의 암호화 음악데이터에 복호 알고리즘 D1을 실시하여 음악데이터를 생성하며, 생성한 음악데이터를 버퍼(123)에 출력한다(스텝 S 318).
암호장치 드라이버(179)는 암호처리장치(117)에 복호를 명령한 후, 휴면요구와 시큐어 OS(171)로부터 수신한 핸들 값 「1」과 암호장치 드라이버(179) 자신을 나타내는 장치 ID_C를 시큐어 OS(171)에 출력한다(스텝 S 321). 또한, 여기서 출력되는 휴면요구는 시큐어 OS(171)에 휴면처리를 요구하는 것은 아니며, 외부 처리요구의 데이터 저장부에 저장되어 음악 복호 데몬(156)으로 중계되는 코맨드이다.
시큐어 OS(171)는 암호장치 드라이버(179)로부터 휴면요구와 핸들 값 「1」과 장치 ID_C를 수신하고, 수신한 휴면요구와 핸들 값 「1」과 장치 ID_C를 공유메모리(112)에 기록한다(스텝 S 322). 이어서, 스위칭처리 2를 행한다(스텝 S 323).
스위칭처리 2가 종료되면(스텝 S 323), 통상 OS(151)는 공유메모리(112)로부터 핸들 값 「1」, 장치 ID_C 및 휴면요구를 판독한다(스텝 S 326). 판독한 핸들 값 「1」과 애플리케이션 관리표(166)를 기초로 하여 음악 복호 데몬(156)을 기동하고 판독한 휴면요구와 핸들 값 「1」과 장치 ID_C를 음악 복호 데몬(156)에 출력한다(스텝 S 327).
음악 복호 데몬(156)은 통상 OS(151)로부터 휴면요구와 핸들 값 「1」과 장치 ID_C를 수신한다. 수신한 휴면요구와 장치 ID_C와 음악 복호 데몬(156) 자신을 나타내는 핸들 값 「1」을 통상 OS(151)에 출력한다(스텝 S 328). 통상 OS(151)는 수신한 장치 ID_C와 대응하는 암호 엔트리장치 드라이버(159)에 수신한 휴면요구와 장치 ID_C와 핸들 값 「1」을 출력한다(스텝 S 329).
암호 엔트리장치 드라이버(159)는 통상 OS(151)를 통해서 음악 복호 데몬(156)으로부터 휴면요구와 장치 ID_C와 핸들 값 「1」을 수신한다. 이어서, 통상 OS(151)에 휴면처리와 수신한 핸들 값 「1」과 암호 엔트리장치 드라이버(159) 자신이 갖는 장치 ID_C를 출력한다(스텝 S 332).
통상 OS(151)는 암호 엔트리장치 드라이버(159)로부터 휴면요구와 핸들 값 「1」과 장치 ID_C를 수신하고, 수신한 핸들 값 「1」과 대응하는 음악 복호 데몬(156)을 휴면상태로 한다(스텝 S 333). 이어서, 수신한 장치 ID_C와 대응하는 암호 엔트리장치 드라이버(159)를 휴면상태로 한다(스텝 S 334). 이어서, 태스크 스케줄링을 행하여 실행가능상태의 프로그램에 CPU를 할당한다(스텝 S 336).
암호처리장치(117)에 의한 복호처리가 종료되고, 인터럽트 발생시의 처리 3에서, 음악 복호프로그램(176)은 암호처리장치(117)에 의한 처리결과를 수신한다(스텝 S 337). 스텝 S 337에 대해서는 이후에 설명한다. 또한, 스텝 S 337은 도 37의 스텝 S 552 ~ 도 38의 스텝 S 606에 해당한다.
음악 복호프로그램(176)은, 암호처리장치(117)에 의한 처리결과로, 음악데이터의 버퍼(123) 상의 기록 처 어드레스를 취득한다. 이어서, CPU(102)는 음악 복호프로그램(176)(음악데이터 출력스텝)을 실행한다(스텝 S 338). 음악 복호프로그램(176)은 음악데이터의 기록 처 어드레스를 처리결과로 하여, 처리결과와 애플리케이션 복귀요구 및 핸들 값 「1」을 시큐어 OS(171)에 출력한다(스텝 S 339).
시큐어 OS(171)는 애플리케이션 복귀요구와 처리결과와 핸들 값 「1」을 수신하고, 수신한 애플리케이션 복귀요구와 처리결과와 핸들 값 「1」을 공유메모리(112)에 기록한다(스텝 S 341). 이어서, 스위칭처리 2를 행한다(스텝 S 342).
스위칭처리 2가 종료되면(스텝 S 342), 통상 OS(151)는 공유메모리(112)로부 터 애플리케이션 복귀요구와 처리결과와 핸들 값 「1」을 판독한다(스텝 S 344). 애플리케이션 관리표(166)의 핸들 값 「1」을 포함하는 엔트리(167)를 기초로 하여 음악 복호프로그램(176)의 컨텍스트를 복귀시킨다(스텝 S 346). 이어서, 판독한 처리결과를 음악 복호프로그램(176)에 출력한다(스텝 S 347).
(4) 인터럽트 발생시의 처리 1
도 28에 도시하는 흐름도를 사용하여 인터럽트 발생시의 처리 1에 대하여 설명한다. 이는 도 21의 스텝 S 239의 상세이다. 또, 도 37의 스텝 S 463 ~ 478의 순서에 대응하고 있다.
통상 입출력장치(132)는 암호화 음악데이터의 판독이 종료되면(스텝 S 462) 인터럽트를 발생시킨다(스텝 S 463).
인터럽트 컨트롤러(107)는 인터럽트의 발생을 검출하고, 통상 OS(151)에 인터럽트 발생통지를 출력한다(스텝 S 464). 통상 OS(151)는 인터럽트 발생통지를 수신하고, 인터럽트 테이블을 기초로 하여 통상 인터럽트 핸들러(161)를 기동한다(스텝 S 466). 이어서, 통상 인터럽트 핸들러(161)에 인터럽트 발생통지를 출력한다(스텝 S 467).
통상 인터럽트 핸들러(161)는 인터럽트 컨트롤러(107)를 제어하여 인터럽트의 요인을 조사한다(스텝 S 468). 이어서, 인터럽트를 발생시키고 있는 통상 입출력장치와 대응하는 장치 ID_A와 인터럽트 통지를 통상 OS(151)에 출력한다(스텝 S 469).
통상 OS(151)는 통상 인터럽트 핸들러(161)로부터 인터럽트 통지와 장치 ID_A를 수신한다. 수신한 장치 ID_A와 대응하는 통상 입출력장치 드라이버(157) 및 통상 입출력장치 드라이버(157)와 함께 휴면처리를 한 음악 복호 데몬(156)을 휴면해제하고(스텝 S 471, 스텝 S 472), CPU(102)를 통상 입출력장치 드라이버(157)에 할당한다.
통상 입출력장치 드라이버(157)는, 휴면을 해제하고, 통상 입출력장치(132)에 결과요구를 출력하며(스텝 S 473), 통상 입출력장치(132)로부터 처리결과로 공유메모리(112) 상에서의 암호화 음악데이터의 기록 처 어드레스를 취득한다(스텝 S 474). 처리결과를 취득하면, 배타 플래그를 「0」으로 설정하고(스텝 S 476), 취득한 처리결과와 판독요구의 출력 원을 나타내는 식별정보로 수신한 핸들 값 「1」과, 통상 입출력장치 드라이버(157) 자신을 나타내는 장치 ID_A를 통상 OS(151)에 출력하며(스텝 S 477), 통상 OS(151)는 핸들 값 「1」과 대응하는 음악 복호 데몬(156)에 수신한 처리결과와 핸들 값 「1」과 장치 ID_A를 출력한다(스텝 S 478).
(5) 인터럽트 발생시의 처리 1-2
상기 인터럽트 발생시의 처리 1은 통상 OS(151) 또는 통상 OS(151)에 관리되는 통상 메모리(111) 상의 프로그램의 실행 중에 인터럽트가 발생한 경우의 동작을 나타내고 있다. 여기서는, 도 29의 흐름도를 사용하여 시큐어 OS(171) 또는 시큐어 OS(171)에 의해서 관리되고 있는 프로그램의 실행 중에 인터럽트가 발생한 경우의 동작에 대하여 설명한다.
통상 입출력장치(132)는 암호화 음악데이터의 판독이 종료되면(스텝 S 491) 인터럽트를 발생시킨다(스텝 S 492).
인터럽트 컨트롤러(107)는 인터럽트를 검출하고 시큐어 OS(171)에 인터럽트 발생통지를 출력한다(스텝 S 493).
시큐어 OS(171)는 인터럽트 컨트롤러(107)로부터 인터럽트 발생통지를 수신한다. 인터럽트 발생통지를 수신하면, 시큐어 인터럽트 핸들러(181)를 기동하고(스텝 S 494), 인터럽트 발생통지를 출력한다(스텝 S 496).
시큐어 인터럽트 핸들러(181)는 인터럽트 발생통지를 수신하고, CPU(102)에 인터럽트 마스크 처리를 행하며(스텝 S 497), 시큐어 OS(171)에 인터럽트 발생통지를 출력한다(스텝 S 498).
시큐어 OS(171)는 시큐어 인터럽트 핸들러(181)로부터 인터럽트 발생통지를 수신하고, 수신한 인터럽트 발생통지를 공유메모리(112)에 기록한다(스텝 S 499). 이어서, 시큐어 OS(171)와 통상 OS(151)는 스위칭처리 2를 행한다(스텝 S 501).
스위칭처리 2가 종료되면(스텝 S 501), 공유메모리(112)로부터 인터럽트 발생통지를 판독하고, CPU의 인터럽트 마스크를 해제한다(스텝 S 502).
여기서, 인터럽트 컨트롤러(107)는 클리어되어 있지 않으므로, 인터럽트 발생통지를 계속하여 출력하고 있고, 스텝 S 502 이후의 처리는 도 28의 스텝 S 464 이후의 처리와 동일하다.
(6) 인터럽트 발생시의 처리 2
이하에, 도 30 ~ 31의 흐름도를 사용하여 인터럽트 발생시의 처리 2에 대하여 설명한다. 이는 도 23의 스텝 S 287의 상세이다. 또, 이는 도 38의 스텝 S 512 ~ 도 39의 스텝 S 541의 순서와 대응하고 있다.
시큐어 입출력장치(133)는, 콘텐츠 키의 판독이 종료되면(스텝 S 511), 인터럽트를 발생시킨다(스텝 S 512).
인터럽트 컨트롤러(107)는 인터럽트의 발생을 검출하고, 통상 OS(151)에 인터럽트 발생통지를 출력한다(스텝 S 513).
통상 OS(151)는 인터럽트 컨트롤러(107)로부터 인터럽트 발생통지를 수신하고, 통상 인터럽트 핸들러(161)를 기동한다(스텝 S 514). 이어서, 통상 인터럽트 핸들러(161)에 인터럽트 발생통지를 출력한다(스텝 S 516).
통상 인터럽트 핸들러(161)는 인터럽트 발생통지를 수신하고, 인터럽트를 발생시키고 있는 요인을 조사한다(스텝 S 517). 시큐어 입출력장치(133)가 인터럽트를 발생시키고 있는 것을 검출하고, 시큐어 입출력장치(133)와 대응하는 장치 ID_B와 인터럽트 통지를 통상 OS(151)에 출력한다(스텝 S518).
통상 OS(151)는 통상 인터럽트 핸들러(161)로부터 인터럽트 통지와 장치 ID_B를 수신한다. 이어서, 수신한 장치 ID_B와 대응하는 시큐어 입출력 엔트리장치 드라이버(158)와, 시큐어 입출력 엔트리장치 드라이버(158)와 함께 휴면처리를 실시한 음악 복호 데몬(156)의 휴면을 해제한다(스텝 S519, 스텝 S521). 시큐어 입출력 엔트리장치 드라이버(158)에 CPU(102)를 할당한다.
시큐어 입출력장치 드라이버(158)는, 휴면을 해제하고, 인터럽트 통지와, 휴면요구의 출력 원을 나타내는 식별정보로 수신한 핸들 값 「1」과, 시큐어 입출력 엔트리장치 드라이버(158) 자신이 갖는 장치 ID_B를 통상 OS(151)에 출력한다(스텝 S 523).
통상 OS(151)는 수신한 핸들 값 「1」과 대응하는 음악 복호 데몬(156)에 수신한 인터럽트 통지와 핸들 값 「1」과 장치 ID_B를 출력한다(스텝 S 524).
음악 복호 데몬(156)은 인터럽트 통지와 핸들 값 「1」과 장치 ID_B를 수신한다. 수신한 인터럽트 통지와 장치 ID_B와 음악 복호 데몬(156) 자신을 나타내는 핸들 값 「1」을 통상 OS(151)에 출력한다(스텝 S 527).
통상 OS(151)는 음악 복호 데몬(156)으로부터 인터럽트 통지와 장치 ID_B와 핸들 값 「1」을 수신한다. 수신한 인터럽트 통지와 장치 ID_B와 핸들 값 「1」을 공유메모리(112)에 기록하고(스텝 S 529), 스위칭처리 1로 이동한다(스텝 S 531).
스위칭처리 1이 종료되면, 시큐어 OS(171)는 공유메모리(112)로부터 인터럽트 통지와 장치 ID_B와 핸들 값 「1」을 판독하고(스텝 S 532), 판독한 장치 ID_B를 기초로 하여 시큐어 입출력장치 드라이버(178)를 기동한다(스텝 S 533). 이어서, 시큐어 입출력장치 드라이버(178)에 판독한 인터럽트 통지와 장치 ID_B와 핸들 값 「1」을 출력한다(스텝 S 534).
시큐어 입출력장치 드라이버(178)는 인터럽트 통지와 장치 ID_B와 핸들 값 「1」을 수신하고, 시큐어 입출력장치(133)에 처리결과를 요구한다(스텝 S 536). 시큐어 입출력장치(133)로부터 처리결과로 시큐어 메모리(113) 상의 콘텐츠 키 저장 어드레스를 수신한다 (스텝 S 537). 수신한 처리결과와 핸들 값 「1」과 장치 ID_B를 포함하는 응답통지를 시큐어 OS(171)에 출력한다(스텝 S 539).
시큐어 OS(171)는 수신한 핸들 값 「1」과 대응하는 음악 복호프로그램(176)으로 수신한 처리결과와 핸들 값 「1」과 장치 ID_B를 출력한다(스텝 S 541).
여기까지, 도 30 ~ 31을 사용한 설명에서는 통상 OS(151) 또는 통상 OS(151)에 의해서 관리되는 통상 메모리(111) 상의 프로그램의 실행 중에 인터럽트가 발생한 경우의 동작에 대하여 설명하였으나, 시큐어 OS(171) 및 시큐어 OS(171)에 의해서 관리되는 프로그램의 실행 중에서의 인터럽트 발생시의 동작은 상술한 인터럽트 발생시의 처리 1-2와 거의 동일하며, 도 26 중의 통상 입출력장치를 시큐어 출력 장치로 변경하면 된다. 스텝 S 502 이후의 처리는 도 30의 스텝 S 513으로 이어진다.
(7) 인터럽트 발생시의 처리 3
이하에, 도 32 ~ 34의 흐름도를 사용하여 인터럽트 발생시의 처리 3에 대하여 설명한다. 이는 도 27의 스텝 S 337의 상세이다. 또, 인터럽트 발생시의 처리 3은 도 4O의 스텝 S 552 ~도 41의 스텝 S 606의 순서와 대응하고 있다.
암호처리장치(117)는 암호화 음악데이터의 복호가 종료되면 인터럽트를 발생시킨다(스텝 S 552).
인터럽트 컨트롤로(107)는 인터럽트의 발생을 검출하고, 통상 OS(151)에 인터럽트 발생통지를 출력한다(스텝 S 553).
통상 OS(151)는 인터럽트 컨트롤러(107)로부터 인터럽트 발생통지를 수신하고, 통상 인터럽트 핸들러(161)를 기동한다(스텝 S 556). 통상 인터럽트 핸들러(161)에 인터럽트 발생통지를 출력한다(스텝 S 557).
통상 인터럽트 핸들러(161)는 인터럽트 발생통지를 수신하면 인터럽트를 발생시키고 있는 요인을 조사한다(스텝 S 558). 암호처리장치(117)가 인터럽트를 발 생시키고 있음을 검출하고, 장치 ID_C와 인터럽트 통지를 통상 OS(151)에 출력한다(스텝 S 561).
통상 OS(151)는 통상 인터럽트 핸들러(161)로부터 인터럽트 통지와 장치 ID_C를 수신한다. 수신한 장치 ID_C와 대응하는 암호 엔트리장치 드라이버(159) 및 암호 엔트리장치 드라이버(159)와 함께 휴면처리를 한 음악 복호 데몬(156)의 휴면을 해제하고(스텝 S 562, 스텝 S 563), 암호 엔트리장치 드라이버(159)에 CPU(102)를 할당한다.
암호 엔트리장치 드라이버(159)는, 휴면이 해제되면, 인터럽트 통지와 핸들 값 「1」과 자신을 나타내는 장치 ID_C를 통상 OS(151)에 출력한다(스텝 S 564).
통상 OS(151)는 인터럽트 통지와 핸들 값 「1」과 장치 ID_C를 수신하고, 수신한 핸들 값 「1」과 대응하는 음악 복호 데몬(156)에 인터럽트 통지와 핸들 값 「1」과 장치 ID_C를 출력한다(스텝 S 567).
음악 복호 데몬(156)은 통상 OS(151)를 통해서 암호 엔트리장치 드라이버(159)로부터 장치 ID_C와 인터럽트 통지를 수신한다. 이어서, 수신한 인터럽트 통지 및 장치 ID_C와 음악 복호 데몬(156) 자신과 대응하는 핸들 값 「1」을 통상 OS(151)에 출력한다(스텝 S 568).
통상 OS(151)는 음악 복호 데몬(156)으로부터 인터럽트 통지와 장치 ID_C와 핸들 값 「1」을 수신하고, 수신한 인터럽트 통지와 장치 ID_C와 핸들 값 「1」을 공유메모리(112)에 기록한다(스텝 S 571).
이어서, 통상 OS(151) 및 시큐어 OS(171)는 스위칭처리 1을 행한다(스텝 S 572).
스위칭처리 1이 종료되면, 시큐어 OS(171)는 공유메모리(112)로부터 인터럽트 통지와 장치 ID_C와 핸들 값 「1」을 판독한다(스텝 S 576). 판독한 장치 ID_C를 기초로 하여 암호장치 드라이버(179)를 기동하고, 판독한 인터럽트 통지와 장치 ID_C와 핸들 값 「1」을 출력한다(스텝 S 577).
암호장치 드라이버(179)는 인터럽트 통지와 장치 ID_C와 핸들 값 「1」을 수신하고, 암호처리장치(117)에 처리결과를 요구한다(스텝 S 578). 암호처리장치(117)로부터 처리결과로 버퍼(123) 상에서의 음악데이터의 기록 처 어드레스를 취득한다(스텝 S 579).
암호장치 드라이버(179)는 취득한 처리결과와 수신한 핸들 값 「1」과 암호장치 드라이버(179) 자신을 나타내는 장치 ID_C를 시큐어 OS(171)에 출력한다(스텝 S 582).
시큐어 OS(171)는 암호장치 드라이버(179)로부터 처리결과와 핸들 값 「1」과 장치 ID_C를 수신하고, 수신한 처리결과와 핸들 값 「1」과 장치 ID_C를 공유메모리(112)에 기록한다(스텝 S 583).
이어서, 시큐어 OS(171) 및 통상 OS(151)는 스위칭처리 2를 행한다(스텝 S 584).
스위칭처리 2가 종료되면, 통상 OS(151)는 공유메모리(112)로부터 핸들 값 「1」, 처리결과, 장치 ID_C를 판독한다(스텝 S 586). 판독한 핸들 값 「1」을 기초로 하여 음악 복호 데몬(156)을 기동하고, 음악 복호 데몬(156)에 판독한 처리결 과와 핸들 값 「1」과 장치 ID_C를 출력한다(스텝 S 587).
음악 복호 데몬(156)은 통상 OS(151)로부터 처리결과와 핸들 값 「1」과 장치 ID_ C를 수신한다. 수신한 처리결과와 장치 ID_C와 음악 복호 데몬(156) 자신을 나타내는 핸들 값 「1」을 포함하는 시스템 콜을 통상 OS(151)에 출력한다(스텝 S 588).
통상 OS(151)는 장치 ID_C와 대응하는 암호 엔트리장치 드라이버(159)에 수신한 처리결과와 장치 ID_C와 핸들 값 「1」을 출력한다(스텝 S 589).
암호 엔트리장치 드라이버(159)는 통상 OS(151)를 통해서 음악 복호 데몬(156)으로부터 처리결과와 장치 ID_C와 핸들 값 「1」을 수신하고, 배타 플래그를 「0」으로 변경한다(스텝 S 592). 이어서, 암호 엔트리장치 드라이버(159)는 통상 OS(151)에 대한 응답통지에 의해(스텝 S 596), 음악 복호 데몬(156)에 수신한 처리결과와 핸들 값 「1」과 장치 ID_C를 출력한다(스텝 S 597).
음악 복호 데몬(156)은 시큐어 OS(171)를 통해서 음악 복호 데몬(156)으로부터 처리결과와 핸들 값 「1」과 장치 ID_C를 수신한다. 이어서, 수신한 처리결과와 핸들 값 「1」을 통상 OS(151)에 출력한다(스텝 S 598).
통상 OS(151)는 음악 복호 데몬(156)으로부터 처리결과와 핸들 값 「1」을 수신하고, 수신한 처리결과와 핸들 값 「1」을 공유메모리(112)에 기록한다(스텝 S 601).
이어서, 통상 OS(151)와 시큐어 OS(171)는 스위칭처리 1을 행한다(스텝 S 602).
스위칭처리 1이 종료되면, 시큐어 OS(171)는 공유메모리(112)로부터 핸들 값 「1」과 처리결과를 판독한다(스텝 S 603). 시큐어 애플리케이션 관리표(186) 상의 핸들 값 「1」을 포함하는 엔트리(187)를 기초로 하여 음악 복호프로그램(176)의 컨텍스트를 복귀시키고(스텝 S 604), 판독한 처리결과를 음악 복호프로그램(176)에 출력한다(스텝 S 606).
여기까지, 도 32 ~ 34를 사용한 설명에서는 통상 OS(151) 또는 통상 OS(151)에 의해서 관리되는 통상 메모리(111) 상의 프로그램의 실행 중에서의 인터럽트 발생시의 동작에 대하여 설명하였으나, 시큐어 OS(171) 및 시큐어 OS(171)에 의해서 관리되는 프로그램의 실행 중에서의 인터럽트 발생시의 동작은 상술한 인터럽트 발생시의 처리 1-2와 거의 동일하며, 도 29 중의 통상 입출력장치를 암호처리장치로 변경하면 된다. 스텝 S 502 이후의 처리는 도 32의 스텝 S 553으로 계속된다.
(7) 음악 복호프로그램의 삭제
도 35에 도시된 흐름도를 사용하여 음악 복호프로그램의 삭제처리에 대하여 설명한다. 이는 도 15의 스텝 S 109의 상세이다. 또, 음악 복호프로그램 삭제처리는 도 42의 스텝 S 611 ~ 618의 순서에 대응한다.
음악 복호프로그램(176)은 시큐어 애플리케이션 삭제명령과 핸들 값 「1」을 통상 OS(151)에 출력한다(스텝 S 611).
통상 OS(151)는 음악 복호프로그램(176)으로부터 핸들 값 「1」과 시큐어 애플리케이션 삭제명령을 수신하고, 수신한 핸들 값 「1」과 시큐어 애플리케이션 삭제명령을 공유메모리(112)에 기록한다(스텝 S 612).
이어서, 통상 OS(151) 및 시큐어 OS(171)는 스위칭처리 1을 행한다(스텝 S 613).
스위칭처리 1이 종료되면, 시큐어 OS(171)는 공유메모리(112)로부터 시큐어 애플리케이션 삭제명령과 핸들 값 「1」을 판독한다(스텝 S 614). 시큐어 애플리케이션 관리표(186) 상의 핸들 값 「1」을 포함하는 엔트리의 시큐어 애플리케이션 어드레스를 기초로 하여 음악 복호프로그램(176)을 시큐어 메모리(113) 상에서 삭제하고(스텝 S 616), 핸들 값 「1」을 포함하는 엔트리(187)를 시큐어 애플리케이션 관리표(186)에서 삭제한다(스텝 S 617).
이어서, 핸들 값 「1」과 삭제완료통지를 공유메모리(112)에 기록한다(스텝 S 618).
이어서, 시큐어 OS(171)와 통상 OS(151)는 스위칭처리 2를 행한다(스텝 S 619).
스위칭처리 2가 종료되면, 통상 OS(151)는 공유메모리(112)에서 삭제처리 완료통지와 핸들 값 「1」을 판독한다(스텝 S 621). 핸들 값 「1」과 애플리케이션 관리표(166)를 기초로 하여 음악 복호 데몬(156)을 통상 메모리(111)에서 삭제한다(스텝 S 622). 이어서, 음악 재생프로그램(153)에 삭제완료통지를 출력하고(스텝 S 623), 핸들 값 「1」을 포함하는 엔트리(167)를 애플리케이션 관리표(166)에서 삭제한다(스텝 S 624).
1.3 정리 및 효과
이상, 설명한 바와 같이, 본 발명의 휴대전화(100)에서 통상 메모리(111) 상 에 로드되어 실행되는 음악 재생프로그램(153)은, 보호되어야 할 처리, 구체적으로는 암호화 음악데이터의 복호처리를 시큐어 메모리(113) 상에 로드되어 실행되는 음악 복호프로그램(176)에 의뢰한다.
음악 복호프로그램(176)과 통상 메모리(111) 상의 음악 복호 데몬(156)은 쌍이 되어 동작하고, 암호화 음악데이터의 복호에 관한 일련의 처리 중 보호되어야 할 처리는 음악 복호프로그램(176)이 분담하며, 보호할 필요가 없는 처리는 음악 복호 데몬(156)이 담당한다.
이와 같이, 처리를 분담함으로써 음악 복호프로그램(176) 자체의 프로그램 사이즈가 작아지고, 음악 복호프로그램(176)이 보유하는 데이터, 변수 등도 감소한다. 또한, 음악 복호프로그램(176)으로부터의 의뢰에 의해 음악 복호 데몬(156)이 통상 메모리(111) 상의 라이브러리에 저장되어 있는 함수를 사용한다. 따라서 시큐어 메모리(113) 상에 라이브러리를 가질 필요가 없어진다.
따라서, 음악 복호프로그램(176) 및 음악 복호 데몬(156)에 의한 일련의 복호처리에서 확보해야 할 시큐어 메모리(113)의 용량을 삭감함으로써, 시큐어 메모리(113)를 보호하는 보호기구의 부하를 경감할 수 있다.
시큐어 OS(171)에 의해 관리되는, 보호되어야 할 장치인 암호처리장치(117)의 제어에 관한 처리에 대하여, 보호할 필요가 없는 배타제어, 휴면, 인터럽트의 통지에 대해서는 통상 메모리(111) 상에 로드되어 실행되는 암호 엔트리장치 드라이버(159)가 실행한다.
이 동작을 시간의 경과에 따라서 고찰하면, 통상 OS(151)는 음악 복호 데 몬(156)으로부터의 시스템 콜에 의해 암호 엔트리장치 드라이버(159)를 실행상태로 천이시킨다. 암호 엔트리장치 드라이버(159)는 배타제어를 행하고, 음악 복호 데몬(156)을 호출한다. 음악 복호 데몬(156)은 통상 OS(151) 및 시큐어 OS(171)를 통해서 암호장치 드라이버(179)를 호출한다. 시큐어 OS(171)는 암호장치 드라이버(179)를 실행상태로 천이시킨다. 암호장치 드라이버(179)는 암호처리장치(117)에 복호처리를 지시한 후, 휴면요구를 출력한다. 암호 엔트리장치 드라이버(159)는 시큐어 OS(171), 통상 OS(151) 및 음악 복호 데몬(156)을 통해서 휴면요구를 수신하면, 통상 OS(151)로 휴면처리를 의뢰하고, 통상 OS(151)는 암호 엔트리장치 드라이버(159)를 휴면상태로 천이시킨다.
이어서, 암호처리장치(117)에 의한 처리가 종료되고, 인터럽트가 발생하며, 통상 OS(151)는 음악 복호 데몬(156)의 휴면을 해제하고, 실행상태로 천이시킨다. 암호 엔트리장치 드라이버(159)는 인터럽트 통지를 출력하고, 음악 복호 데몬(156)은 통상 OS(151) 및 시큐어 OS(171)를 통해서 인터럽트 통지를 암호장치 드라이버(179)에 출력한다. 통상 OS(151)는 암호장치 드라이버(179)에 CPU(102)를 할당하여 실행상태로 한다.
이와 같이, 암호장치 드라이버(179)와 암호 엔트리장치 드라이버(159)는 대응하여 상태 천이한다. 따라서, 통상 OS(151)는 암호 엔트리장치 드라이버(159)를 통해서 시큐어 OS(171)에 의해서 관리되고 있는 암호처리장치(117)의 사용상태를 관리할 수 있게 되었다.
시큐어 OS(171)에 의해 관리되는 장치인 시큐어 입출력장치(133)에 대해서 도, 마찬가지로, 시큐어 입출력 엔트리장치 드라이버(158)를 제어함으로써, 통상 OS(151)는 시큐어 입출력장치(133)의 동작을 감시하고 제어할 수 있게 되었다.
1.4 휴대전화(100)의 그 외의 동작
휴대전화(100)의 초기동작 및 가상 메모리 공간의 구축에 대하여 이하에 설명한다.
(1) 부트 프로그램
도 43은 통상 메모리(111)에 기억되어 있는 데이터의 일례를 나타내고 있다. 이는 휴대전화(100)의 기동 직후의 통상 메모리(111) 내의 모습을 나타내고 있다.
통상 OS(151), 라이브러리(152), 통상 입출력장치 드라이버(157), 시큐어 입출력 엔트리장치 드라이버(158), 암호 엔트리장치 드라이버(159), 통상 스위칭장치 드라이버(160), 통상 인터럽트 핸들러(161)는 이미 설명한 바와 같다.
부트 프로그램(162)은 통상 메모리(111)를 구성하는 ROM에 미리 기억되어 있으며, 부트 프로그램(162)은, 구체적으로는 도시되어 있지 않으나, 휴대전화(100)에 포함되는 기동부에 의해 판독되고 실행되는 프로그램이다.
기동부는, 휴대전화(100)에 전원이 투입된 직후에, 통상 메모리(111)로부터 부트 프로그램(162)을 판독하고, 판독한 부트 프로그램(162)에 따라서 동작한다. 이하, 부트 프로그램(162)에 따른 기동부의 동작에 의해, 부트 프로그램에 대하여 설명한다.
먼저, 부트 프로그램(162)은 CPU(102)의 레지스터 및 MMU(103)를 클리어하고, 스위칭제어부(106)에 초기화 요구를 출력한다. 스위칭제어부(106)로부터 시큐 어 메모리(113) 상의 프로그램의 초기화가 종료되었음을 통지하는 초기화 종료통지를 수신하고, 이어서, 통상 OS(151), 통상 스위칭장치 드라이버(160) 등을 통상 메모리(111) 상에 로드하여 초기화한다.
(2) 휴대전화(100)의 초기동작
휴대전화(100)는 기동시에 스위칭제어부(106) 및 부트 프로그램에 의해서 초기화된다. 휴대전화(100)의 기동시의 동작에 대해서 도 44에 도시하는 흐름도를 사용하여 설명한다.
휴대전화(100)의 전원이 ON 상태가 되어 전력공급이 개시되면(스텝 S 651), 기동부는 부트 프로그램(162)을 기동한다(스텝 S 652). 부트 프로그램(162)은, 먼저, CPU(102) 및 MMU(103)의 레지스터를 클리어함으로써 초기화한다(스텝 S 653). 이어서, 스위칭제어부(106)에 초기화 요구를 출력한다(스텝 S 654).
스위칭제어부(106)는, 초기화 요구를 수신하고, 2차 기억부(104)로부터 암호화 시큐어 OS를 판독한다(스텝 S 656). 판독한 암호화 시큐어 OS를 복호하여 시큐어 OS를 생성한다(스텝 S 657). 이어서, 메모리 보호부(114)에 의해 버스(130)와 시큐어 메모리(113)를 접속한다(스텝 S 658). 생성한 시큐어 OS를 시큐어 메모리(113) 상에 기록하고 초기화한다(스텝 S 659). 이어서, 시큐어 스위칭장치 드라이버를 2차 기억부(104)로부터 판독하여 시큐어 메모리(113) 상에 로드한다(스텝 S 661).
이어서, 메모리 보호부(114)에 의해 시큐어 메모리(113)와 버스(130)를 절단하고(스텝 S 662), 초기화 종료통지를 부트 프로그램(162)에 출력한다(스텝 S 663).
부트 프로그램(162)은 스위칭제어부(106)로부터 초기화 종료통지를 수신하고, 이어서, 통상 OS(151), 통상 스위칭장치 드라이버(160) 등의 프로그램을 통상 메모리 상에 로드하고 초기화한다(스텝 S 664).
또한, 상기의 설명에서는 암호화 시큐어 OS 및 시큐어 스위칭장치 드라이버는 2차 기억부(104) 상에 기억되어 있는 것으로 설명하였으나, 외부의 기록 미디어 등에 기억되어 있는 것으로 해도 된다.
(3) 통상 OS(151) 및 시큐어 OS(171)에 의한 초기화 동작
통상 입출력장치 드라이버(157), 시큐어 입출력 엔트리장치 드라이버(158), 암호 엔트리장치 드라이버(159)는 통상 OS(151)의 관리 하에서 통상 메모리(111) 상에 상주하는 프로그램이다.
또, 시큐어 입출력장치 드라이버(178) 및 암호장치 드라이버(179)는 시큐어 OS(171)의 관리하에서 시큐어 메모리(113) 상에 상주하는 프로그램이다.
부트 프로그램(162)은 통상 OS(151) 및 통상 스위칭장치 드라이버(160) 등을 통상 메모리(111) 상에 로드하고, 초기화를 종료하면, 통상 OS(151)를 기동한다.
통상 OS(151)는, 기동하면, 먼저, 통상 메모리(111) 상에 로드되어 있는 프로그램을 검색하고, 통상 입출력장치 드라이버(157), 시큐어 입출력 엔트리장치 드라이버(158), 암호 엔트리장치 드라이버(159)가 로드되어 있는가 여부를 판단하며, 로드되어 있지 않으면 2차 기억부(104)로부터 판독하여 로드한다.
통상 OS(151)가 시큐어 입출력 엔트리장치 드라이버(158) 및 암호 엔트리장 치 드라이버(159)를 로드할 때에, 시큐어 OS(171)에 의해서, 시큐어 입출력장치 드라이버(178) 및 암호장치 드라이버(179)도 시큐어 메모리(113) 상에 로드된다.
통상 OS(151) 및 시큐어 OS(171)에 의한 이 동작은 이미 설명한 음악 복호프로그램의 등록처리와 유사하므로, 여기에서는 간단히 설명한다. 또한, 2차 기억부(104)는 각 장치 드라이버 및 엔트리장치 드라이버를 암호화하여 생성된 암호화 엔트리장치 드라이버를 미리 기억하고 있는 것으로 한다.
시큐어 입출력 엔트리장치 드라이버가 로드되어 있지 않다고 판단하면, 통상 OS(151)는 2차 기억부(104)로부터 시큐어 입출력 엔트리장치 드라이버를 판독하여, 통상 메모리(111)에 기록한다. 기록 처의 어드레스와 시큐어 입출력 엔트리장치 드라이버(158)를 대응시켜서 기억한다. 이어서, 공유메모리(112)에 장치 드라이버의 로드를 지시하는 장치 드라이버 등록요구와 시큐어 입출력장치 드라이버를 나타내는 장치 ID_B를 기록한다. 이어서, 통상 스위칭장치 드라이버(160)로 스위칭 지시를 출력한다.
스위칭처리가 종료되고, 시큐어 OS(171)는 CPU(102)로 복귀한다. 공유메모리(112)로부터 장치 드라이버 등록요구와 장치 ID_B를 판독한다. 장치 DI_B와 대응하는 암호화 시큐어 입출력 엔트리장치 드라이버를 판독하고, 암호화 프로그램(174)에 의해서 판독한 암호화 엔트리장치 드라이버를 복호하여 시큐어 입출력 엔트리장치 드라이버를 생성하고, 시큐어 메모리(113)에 기록한다. 기록 처의 어드레스와 장치 ID_B를 대응시켜서 기억한다.
이어서, 공유메모리(112)에 장치 드라이버 등록완료통지를 기록하고, 시큐어 스위칭장치 드라이버(180)에 스위칭 지시를 출력한다.
스위칭처리가 종료되어 CPU(102)에 복귀되면, 통상 OS(151)는 공유메모리(112)로부터 장치 드라이버 등록완료통지를 판독한다.
이어서, 암호 엔트리장치 드라이버에 대해서도 동일하게 하여 로드한다.
(4) MMU 제어프로그램(184)에 의한 가상기억공간
시큐어 OS(171)는, 지금까지 언급하지 않았으나, 도 45에 도시하는 바와 같이 MMU 제어프로그램(184)을 포함하고 있다. MMU 제어프로그램(184)은 MMU(103)에 의해 실행되는 프로그램이며, 시큐어 메모리(113), 공유메모리(112) 및 2차 기억부(104)의 물리 어드레스와 논리 어드레스를 변환함으로써 가상기억공간을 구축한다.
도 46은 MMU 제어프로그램(184)에 의해 실현되는 가상기억공간의 일례를 나타내고 있다. 도 45에 도시하는 바와 같이, 시큐어 메모리(113) 상에는 음악 복호프로그램(176)과 통신키 생성프로그램(185)이 로드되어 있는 것으로 상정한다. 음악 복호프로그램(176) 및 통신키 생성프로그램(185)은 시큐어 애플리케이션이다.
음악 복호프로그램(176) 및 통신키 생성프로그램(185)은 각각 가상공간 201 및 가상공간 204에 로드되어 있다. 각각의 프로그램에는 개별적으로 통상 공유공간 202 및 통상 공유공간 206이 할당되어 있다. 통상 공유공간 202 및 통상 공유공간 206은 각각의 프로그램이 통상 메모리(111) 상의 프로그램과 공유하는 가상공간이다.
음악 복호프로그램(176)은 가상공간 204 및 통상 공유공간 206에 액세스할 수 없다. 또, 통신키 생성프로그램(185)은 가상공간 201 및 통상 공유공간 202에 액세스할 수는 없다.
시큐어 공유공간(207)은 음악 복호프로그램(176) 및 통신키 생성프로그램(185) 중 어느 것으로부터도 액세스할 수 있으나, 통상 OS(151)의 관리하에서 동작하는 프로그램으로부터는 액세스할 수 없는 가상공간이다.
시큐어 OS(171)는 가상공간 208에 로드되어 있다. 시큐어 OS(171)는 가상공간 201 및 204에 액세스할 수 있으나, 음악 복호프로그램(176) 및 통신키 생성프로그램(185)으로부터 가상공간 208에 액세스할 수는 없다.
이와 같이 하여, MMU 제어프로그램(184)은 각각의 애플리케이션별로 개별의 가상공간을 할당하고, 서로 액세스할 수 없도록 제어한다.
또한, MMU 제어프로그램(184)은 상술한 가상기억공간을 시큐어 메모리(113), 공유메모리(112) 및 2차 기억부(104) 상에 실현한다. MMU 제어프로그램(184)은 암호처리 프로그램을 포함하고 있고, 시큐어 메모리(113) 상에 기억되어 있는 데이터를 2차 기억부(104) 상에 페이지 아웃(page out) 할 때에는 데이터를 암호화하고, 2차 기억부(104)로부터 시큐어 메모리(113) 상으로 페이지 인(page in) 할 때에는 복호하는 것으로 해도 된다.
또, 음악 복호프로그램(176) 및 통신키 생성프로그램(185)은 각각의 통상 공유공간에 서로 액세스할 수 있는 것으로 해도 된다.
1.5 제 1 실시 예의 변형 예
(1) 제 1 실시 예에서, 음악 복호프로그램(176)과 음악 복호 데몬(156)이 쌍 이 되어 동작함으로써, 암호화 음악데이터의 복호처리를 달성하는 것으로 하여 설명하였으나, 도 47에 도시한 것과 같은 구성으로 해도 된다.
이 구성에서는, 통상 메모리(111) 상에는 음악 재생프로그램(153)을 대신하여 음악 재생프로그램 153b가 로드되어 있다. 음악 재생프로그램 153b는 외부처리 매니저(156b)를 포함하여 구성되고, 외부처리 매니저(156b)는 상술한 음악 복호 데몬(156)과 마찬가지로, 암호화 음악데이터의 복호처리 중 보호될 필요가 없는 처리를 분담한다. 또, 음악 복호프로그램(176)과 통상 OS(151) 사이의 각종 정보 및 코맨드의 입출력을 행한다.
이 구성의 경우, 애플리케이션 관리표(166)의 각 엔트리는 핸들 값과 애플리케이션 컨텍스트 어드레스로 구성된다. 통상 OS(151)는 수신처를 나타내는 식별정보로 핸들 값 「1」을 포함하는 코맨드를 수신하면, 애플리케이션 관리표(166)를 기초로 하여 음악 재생프로그램(153)의 컨텍스트를 복귀시키고, 외부처리 매니저의 스레드(thread)에 CPU(102)를 할당한다.
이와 같은 구성에 의하면, 음악 재생프로그램(153)이 외부처리 매니저(156b)를 포함하고 있으므로, 음악 복호프로그램의 등록처리 시에 음악 복호 데몬(156)을 통상 메모리 상에 로드할 필요가 없으며, 제 1 실시 예에서 설명한 등록처리를 단축할 수 있다.
(2) 또한, 본 실시 예에서 시큐어 입출력 엔트리장치 드라이버(158)와 시큐어 입출력장치 드라이버(178)를 동일한 식별정보 장치 ID_B에 의해서 식별하고 있으나, 다른 식별정보에 의해서 식별하는 것으로 해도 좋다. 암호 엔트리장치 드라 이버(159)와 암호장치 드라이버(179)에 대해서도 동일하다.
구체적으로는, 통상 OS(151) 및 시큐어 OS(171)는, 제어데이터로, 각각의 기억영역에, 도 48에 도시하는 시큐어 장치 드라이버 관리표(231)를 갖는다.
도 48에 도시하는 시큐어 장치 드라이버 관리표(231)는 2개의 시큐어 장치 드라이버 관리표(232, 234)를 포함한다. 각 시큐어 장치 드라이버 관리정보는 엔트리장치 드라이버 식별자와 시큐어 장치 드라이버 식별자로 구성된다. 시큐어 장치 드라이버 식별자는 시큐어 OS(171)에 관리되는 장치를 제어하는 장치 드라이버를 나타내는 식별정보이며, 엔트리장치 드라이버 식별자는 상기 장치 드라이버와 쌍이 되어 동작하는 통상 메모리(111) 상의 프로그램을 나타내는 식별정보이다. 구체적으로는, 시큐어 장치 드라이버 관리정보(232)는 시큐어 입출력 엔트리장치 드라이버(158)를 식별하는 정보인 장치 ID_B와 시큐어 입출력 엔트리장치 드라이버(158)와 쌍이 되어 동작하는 시큐어 입출력장치 드라이버(178)를 식별하는 정보인 「100」으로 구성된다. 시큐어 장치 드라이버 관리정보(234)는 암호 엔트리장치 드라이버(159)를 나타내는 식별정보 장치인 장치 ID_C와 암호 엔트리장치 드라이버(159)와 쌍이 되어 동작하는 암호장치 드라이버(179)를 나타내는 식별정보 「101」을 포함한다.
시큐어 장치 드라이버 관리표(231)는 통상 OS(151) 및 시큐어 OS(171)의 기동시에 생성되는 것이며, 통상 OS(151)는 통상 메모리(111) 상에 시큐어 입출력 엔트리장치 드라이버를 로드하면, 시큐어 출력 엔트리장치 드라이버를 나타내는 식별정보인 장치 ID_B를 공유메모리(112)에 기록하고, 스위칭처리로 이동한다.
스위칭처리가 종료되면, 시큐어 OS(171)는 공유메모리(112)로부터 장치 ID_B를 판독하고, 이어서, 2차 기억부(104)로부터 암호화 시큐어 장치 드라이버를 판독하여, 복호해서, 시큐어 메모리(113) 상에 로드한다. 여기서, 로드된 시큐어 입출력장치 드라이버를 나타내는 식별정보 「100」과 수신한 장치 ID_B를 포함하는 시큐어 장치 드라이버 관리정보(232)를 생성하여 시큐어 메모리(113) 상에 기록한다. 이어서, 식별정보 「100」을 공유메모리(112)에 기록하고, 스위칭처리로 이동한다.
스위칭처리가 완료되면, 통상 OS(151)는 공유메모리(112)로부터 식별정보 「100」을 판독하고, 판독한 식별정보 「100」과 시큐어 입출력 엔트리장치 드라이버(158)를 나타내는 장치 ID_B로 이루어지는 시큐어 장치 드라이버 관리정보를 생성하여 통상 메모리(111) 상에 기록한다.
시큐어 장치 드라이버 정보(234)에 대해서도 동일하다.
통상 OS(151)는 상기와 같이 하여 생성한 시큐어 장치 드라이버 관리표(231)를 사용하여 시큐어 입출력 엔트리장치 드라이버(158) 및 암호 엔트리장치 드라이버(159)를 관리한다. 시큐어 OS(171)는 시큐어 장치 드라이버 관리표(231)를 사용하여 시큐어 입출력장치 드라이버(178) 및 암호장치 드라이버(179)를 관리한다.
(3) 상기 실시 예에서, 시큐어 OS(171)는 디버그 무효화 프로그램을 포함하고 있으나, 시큐어 스위칭장치 드라이버(180)가 이 기능을 구비하고 있는 것으로 해도 좋다.
이 구성에서는, 시큐어 스위칭장치 드라이버(180)는 스위칭제어부(106)로부터 호출될 때마다, 먼저, 디버거 IF(101)를 무효화하고, 이어서, 시큐어 OS(171)의 컨텍스트를 복귀시킨다.
또, 시큐어 OS(171)로부터 스위칭 지시를 수신하면, 시큐어 OS(171)의 컨텍스트를 보존한 후, 디버거 IF(101)를 유효하게 하고, 스위칭제어부(106)에 스위칭 지시를 출력한다.
이와 같이 하여, 시큐어 OS(171)가 CPU(102)에 복귀하기 전에 디버거 IF(101)를 무효화함으로써, 시큐어 OS(171)의 동작이 외부의 디버그 장치에 검출되어 조작되는 것을 더욱 확실하게 방지할 수 있다.
또, 시큐어 메모리(113) 상의 프로그램에 대신하여 스위칭제어부(106)가 디버거 IF(101)를 무효화 또는 유효화하는 것으로 해도 좋다.
(4) 상기의 제 1 실시 예에서는, 통상 입출력장치 드라이버(157) 및 암호 엔트리장치 드라이버(159)는 배타 플래그를 사용하여 배타제어를 행하고 있고, 배타 플래그가 「1」이면 에러 통지를 출력하는 것으로 하고 있다. 그러나 각 드라이버가 동작하고 있는 사이에 수신한 처리의 의뢰를 저장하여 두는 것으로 해도 된다.
이 경우, 통상 입출력장치 드라이버(157) 및 암호 엔트리장치 드라이버(159)는 수신한 처리의 의뢰를 기억하는 QUEUE를 구비하고 있고, 처리의 요구를 수신하면 배타 플래그를 확인하는 대신에 수신한 처리의뢰를 QUEUE에 저장한다.
통상 입출력장치 드라이버(157)는 통상 입출력장치(132)가 처리를 종료하면 처리결과를 취득한다. 이어서, QUEUE로부터 다음의 처리 의뢰를 판독하여 통상 입출력장치(132)에 출력한다.
암호 엔트리장치 드라이버(159)는 처리결과를 수신하고, 수신한 처리결과를 출력하면, QUEUE로부터 다음 처리의뢰를 판독한다. 판독한 처리의뢰를 암호화 장치 드라이버(179)에 출력한다.
또, QUEUE에 대신하여 암호 엔트리장치 드라이버(159) 전용의 버퍼 영역을 구비하고, 버퍼 영역에 수신한 처리의뢰와 수신한 처리의뢰의 우선도를 대응시켜서 기록하는 것으로 해도 좋다.
이 경우, 암호처리장치(117)에 의한 처리가 종료되고, 처리결과를 수신하면, 암호장치 드라이버(179)는 우선도가 높은 처리의뢰를 판독하여 암호처리장치(117)에 출력한다.
(5) 상기 실시 예에서는, 시큐어 스위칭장치 드라이버(180)가 시큐어 OS(171)의 컨텍스트의 보존 및 복귀를 행하고 있으나, 이를 통상 스위칭장치 드라이버(160)가 행해도 좋다.
이 경우, 시큐어 OS(171)로부터 통상 OS(151)로의 스위칭처리 2에서 시큐어 OS(171)는 스위칭제어부(106)로 스위칭 지시를 출력한다. 스위칭제어부(106)는 메모리 보호부(114)에 절단지시를 출력하고, 시큐어 메모리(113)와 버스(130)를 절단한다. 이어서, 통상 스위칭장치 드라이버(160)를 호출한다. 통상 스위칭장치 드라이버(160)는 CPU(102)의 레지스터, MMU(103)의 내용 등을 포함하는 시큐어 OS(171)의 컨텍스트를 통상 메모리(111) 상에 보존하고, CPU(102) 및 MMU(103)를 클리어 하며, 통상 OS(151)의 컨텍스트를 복귀시킨다.
통상 OS(151)로부터 시큐어 OS(171)로의 스위칭처리 1일 때에는, 통상 OS(151)로부터 스위칭 지시를 받으면, 통상 스위칭장치 드라이버(160)는 통상 OS(151)의 컨텍스트를 보존하고, CPU(102) 및 MMU(103)를 클리어 한다. 이어서, 시큐어 OS(171)의 컨텍스트를 복귀시키고, 스위칭제어부(106)에 스위칭 지시를 출력한다.
이와 같이 하여, 시큐어 OS(171)의 컨텍스트의 보존과 복귀를 통상 메모리(111) 상의 통상 스위칭장치 드라이버(160)가 행함으로써, 시큐어 메모리(113) 상에 시큐어 스위칭장치 드라이버(180)가 불필요하게 된다. 따라서, 시큐어 메모리(113)의 용량을 삭감할 수 있다.
(6) 상기 실시 예 및 변형 예에서는, 휴대전화(100)는 MMU(103)에 의해 가상기억공간을 형성하고 있다. 그러나 가상기억공간을 사용하지 않는 구성으로 해도 된다.
이 경우, 각 메모리에 기억되어 있는 데이터 및 프로그램은 물리 어드레스에 의해서 관리되고 있다.
따라서, 이와 같은 구성의 경우, 컨텍스트의 보존 및 복귀에 따른 MMU의 내용의 보존을 행할 필요가 없어진다.
또, 이 경우, 시큐어 OS(171)의 컨텍스트를 보존하지 않는 구성으로 해도 된다. 시큐어 스위칭장치 드라이버(180)는, 스위칭제어부(106)로부터 호출되면, 시큐어 OS(171)의 선두 어드레스를 CPU(102)에 복귀시키고, 시큐어 OS(171)를 최초부터 기동한다.
(7) 또, 상기 제 1 실시 예에서, 휴대전화(100)는 통상 메모리(111) 상에 로드되는 통상 OS(151)와 시큐어 메모리(113) 상에 로드되어 실행되는 시큐어 OS(171)를 구비하고 있으나, 통상 OS(151)를 구비하고 있지 않은 구성으로 해도 된다.
휴대전화(100)의 초기동작에서 설명한 바와 같이, 전원투입 후에, 먼저, 부트 프로그램(162)이 기동한다. 부트 프로그램(162)은 CPU(102) 및 MMU(103)를 초기화한 후, 스위칭제어부(106)에 초기화 요구를 출력하며, 스위칭제어부(106)가 시큐어 OS(171) 및 시큐어 스위칭장치 드라이버(180)를 시큐어 메모리(113) 상에 로드한다.
시큐어 OS(171)가 시큐어 메모리(113) 및 통상 메모리(111) 상에 각종 프로그램을 로드한다.
통상 메모리(111) 상의 각 프로그램은 시스템 콜을 포함하는 모든 코맨드를, 통상 OS(151) 대신 통상 스위칭장치 드라이버(160)에 출력한다.
통상 스위칭장치 드라이버(160)는 통상 메모리(111) 상의 프로그램으로부터 코맨드를 수신하면, 수신한 코맨드를 소정의 기억영역에 기록하고, 스위칭처리를 행한다. 시큐어 OS(171)는, CPU(102)에 복귀하면, 소정의 기억영역으로부터 코맨드를 판독한다.
이와 같이 하여, 시큐어 OS(171)가 통상 메모리(111) 및 시큐어 메모리(113) 상의 각 프로그램을 제어한다.
또, 반대로 시큐어 OS(171)를 구비하고 있지 않은 구성으로 해도 좋다. 이 경우, 시큐어 스위칭장치 드라이버(180) 또는 스위칭제어부(106)가 디버거 무효화 프로그램을 구비하고 있다.
시큐어 메모리(113) 상의 각 프로그램은 시스템 콜을 포함하는 모든 코맨드를 시큐어 스위칭장치 드라이버(180)에 출력한다. 시큐어 스위칭장치 드라이버(180)는 공유메모리(112) 상의 코맨드 영역에 수신한 코맨드를 기록하고, 스위칭제어부(106)로 스위칭 지시를 출력한다.
통상 OS(151)는, CPU(102)에 복귀하면, 공유메모리(112)의 코맨드 영역으로부터 시큐어 메모리(113) 상의 프로그램으로부터 출력된 코맨드를 판독한다.
이와 같이 하여, 통상 OS(151)가 통상 메모리(111) 및 시큐어 메모리(113) 상의 각 프로그램을 제어하는 것으로 해도 좋다.
(8) 상기 실시 예 및 변형 예에서, 스위칭제어부(106) 및 메모리 보호부(114)는 시큐어 메모리(113)와 버스(130)를 절단함으로써, 시큐어 메모리(113) 상의 프로그램 및 데이터를 외부의 액세스로부터 보호하고 있다.
이에 대신하여, 메모리 보호부(114)가 시큐어 메모리(113) 내의 데이터를 암호화 및 복호함으로써 보호해도 된다. 스위칭제어부(106)는, 접속지시 또는 절단지시 대신, 메모리 제어부(114)에 암호화 또는 복호를 지시한다.
메모리 보호부(114)는 스위칭제어부(106)의 지시에 의해서 시큐어 메모리(113) 내의 데이터를 암호화 또는 복호한다.
또, 시큐어 메모리(113) 내의 데이터를, 전부가 아니라, 필요에 따라서, 음악 재생프로그램(153)의 코드 부분만, 데이터 부분만, 또는, 스택 부분만을 암호화하는 것으로 해도 된다. 시큐어 OS(171), 암호장치 드라이버(179), 시큐어 입출력장치 드라이버(178) 등에 대해서도 동일하다.
(9) 상기 실시 예 및 변형 예에서는, 통상 OS(151)가 애플리케이션 관리표(166)를 관리하고, 애플리케이션 관리표(166)를 사용하여 해당하는 애플리케이션 및 시큐어 애플리케이션과 대응하는 프로그램(예를 들어, 음악 복호 데몬(156))을 호출하고 있다. 그러나 음악 재생프로그램(153)과 마찬가지로, 시큐어 애플리케이션에 처리를 의뢰하는 애플리케이션이 대수 존재하는 경우, 통상 OS(151)와는 별도로, 애플리케이션 관리표(166)의 관리와 프로그램의 호출을 행하는 프로그램을 구비하는 구성이라도 좋다. 이 프로그램을 데몬 제어프로그램이라고 부른다.
이 경우, 통상 스위칭장치 드라이버(160)는, 스위칭제어부(106)로부터 호출되면, 통상 OS(151) 대신 데몬 제어프로그램을 기동한다. 데몬 제어프로그램은 공유메모리(112)로부터 코맨드를 판독하고, 판독한 코맨드에 포함되는 식별정보에 의해서 해당하는 프로그램을 호출한다.
또, 각 애플리케이션 및 음악 복호 데몬(156)을 비롯한 프로그램은 통상 OS(151) 대신 시큐어 처리요구를 데몬 제어프로그램에 출력한다.
데몬 제어프로그램은 수신한 시큐어 처리요구를 공유메모리(112)에 기록하고, 통상 스위칭장치 드라이버(160)에 스위칭 지시를 출력한다.
(10) 여기까지, 본 발명의 1 실시 예로 휴대전화(100)에 대하여 설명하였으나, 동일한 기능을 갖는 정보처리장치, 예를 들어, 퍼스널 컴퓨터 등이라도 좋다.
이 경우, 통상 메모리(111) 및 시큐어 메모리(113)는 RAM 및 하드디스크를 포함하여 구성된다. 상기 설명에서는 시큐어 OS(171) 및 음악 복호프로그램(176)은 암호화되어 2차 기억부(104)에 기억되어 있으나, 미리, 시큐어 메모리(113) 상의 하드디스크 부분에 기억되어 있는 것으로 해도 된다.
2. 제 2 실시 예
본 발명의 제 2 실시 예에 대하여 이하에 설명한다.
도 49는 본 발명의 제 2 실시 예의 휴대전화(400)의 사용 예를 나타내고 있다. 휴대전화(400)는 기지국(15), 휴대전화망(10), 인터넷(20)을 통해서 무효화 리스트 발행장치(250)와 접속되어 있다.
무효화 리스트 발행장치(250)는 무효화 된 프로그램에 관한 정보를 관리하고 있으며, 이들 프로그램을 나타내는 무효화 리스트를 생성하고, 인터넷(20)을 통해서 생성된 무효화 리스트를 휴대전화(400)에 송신한다.
휴대전화(400)는 무효화 리스트 발행장치(250)로부터 무효화 리스트를 수신하고, 수신한 무효화 리스트를 기초로 하여 자신이 기억하고 있는 프로그램이 무효한가 여부를 판단한다.
2.1 무효화 리스트 발행장치(250)
무효화 리스트 발행장치(250)는, 도 50에 도시하는 바와 같이, 통신부(251), 서명 생성부(252), 키 기억부(253), 해시 생성부(hash generating unit, 254), 제어부(257), 정보 기억부(260), 입력부(262) 및 표시부(263)로 구성된다.
무효화 리스트 발행장치(250)는, 구체적으로는 마이크로 프로세서, RAM, ROM을 포함하여 구성되는 컴퓨터 시스템이다. RAM 및 ROM에는 컴퓨터 프로그램이 기억되어 있고, 상기 마이크로 프로세서가 상기 컴퓨터 프로그램에 따라서 동작함으로써, 무효화 리스트 발행장치(250)는 그 기능을 달성한다.
(1) 정보 기억부(260)
정보 기억부(260)는, 도 50에 도시하는 바와 같이, OS 무효화 리스트(266) 및 애플리케이션 무효화 리스트(276)를 기억하고 있다.
OS 무효화 리스트(266)는 발행자 ID(267), 리스트 ID(268) 및 무효화 ID(269, 270, 271 …)로 구성된다.
발행자 ID(267), OS 무효화 리스트의 발행자를 나타내고 있고, 일례로, 무효화 리스트 발행장치(250)의 장치 ID, 무효화 리스트 발행장치(250)의 관리자의 식별정보 등이다.
리스트 ID(268)는 OS 무효화 리스트(266)의 신구를 나타내는 정보이며, 여기에서는 OS 무효화 리스트(266)의 작성일 「20041015」를 리스트 ID(268)로 하고 있다.
무효화 ID(269, 270, 271 …)는 무효화 된 오퍼레이팅 시스템의 식별정보이다.
애플리케이션 무효화 리스트(276)는 발행자 ID(277), 리스트 ID(278), 무효화 ID(279, 280, 281 …)로 구성된다. 발행자 ID(277)는 애플리케이션 리스트의 발행자를 나타내는 정보이고, 일례로, 무효화 리스트 발행장치(250)의 장치 ID, 무효화 리스트 발행장치(250)의 관리자의 식별정보 등이다.
리스트 ID(278)는 애플리케이션 무효화 리스트(276)의 신구를 나타내는 정보이다. 여기에서는, 애플리케이션 무효화 리스트(276)의 작성일 「20041009」를 리스트 ID(278)로 하고 있다.
무효화 ID(279, 280, 281 …)는 무효화 된 애플리케이션의 식별정보이다.
(2) 통신부(251)
통신부(251)는 인터넷(20)과 접속되어 있고, 제어부(257)와 인터넷(20)에 접속되어 있는 외부기기와의 사이에서 정보의 송수신을 행한다. 여기서, 외부기기란 휴대전화(400)이다.
(3) 해시 생성부(254)
해시 생성부(254)는 제어부(257)로부터 OS 무효화 리스트(266)와 해시 생성지시를 수신한다. 또, 애플리케이션 무효화 리스트(276)와 해시 생성지시를 수신한다.
해시 생성지시를 수신하면, 수신한 OS 무효화 리스트(266) 또는 애플리케이션 무효화 리스트(276)를 해시함수에 대입하여 160 바이트의 OS 다이제스트 데이터(OS digest data) 또는 애플리케이션 다이제스트 데이터(application digest data)를 생성한다. 여기서, 해시함수에는, 일례로 SHA-1을 사용한다. 해시함수 SHA-1에 대해서는 공지 기술이므로 설명을 생략한다. 또, 다른 해시함수를 사용해도 된다.
생성된 OS 다이제스트 데이터 또는 애플리케이션 다이제스트 데이터를 제어부(257)에 출력한다.
(4) 키 기억부(253) 및 서명 생성부(252)
키 기억부(253)는 무효화 리스트 발행장치(250)의 고유한 발행장치 비밀키와 상기 발행장치 비밀키와 대응하는 발행장치 공개키를 기억하고 있다.
서명 생성부(252)는 제어부(257)로부터 OS 다이제스트 데이터 또는 애플리케이션 다이제스트 데이터를 수신하고, 서명생성을 지시한다.
OS 다이제스트 데이터를 수신하고, 서명생성을 지시하면, 키 기억부(253)로부터 발행장치 비밀키를 판독하고, 판독한 발행장치 비밀키를 사용하여 수신한 OS 다이제스트 데이터에 서명생성 알고리즘 S를 실시하여 서명 데이터를 생성하고, 생성한 서명 데이터를 제어부(257)에 출력한다. 서명생성 알고리즘 S는, 일례로, 타원 DSA 서명, RSA(RivestShamirAdleman) 서명 등을 사용한다.
애플리케이션 다이제스트 데이터를 수신하고, 서명생성을 지시한 경우에 대해서도 동일한 방법으로 서명 데이터를 생성하여 제어부(257)에 출력한다.
(5) 제어부(257)
제어부(257)는 통신부(251) 및 인터넷(20)을 통해서 휴대전화(400)로부터 최신의 OS 무효화 리스트 및 애플리케이션 무효화 리스트의 송신을 요구하는 리스트 요구를 수신한다.
리스트 요구를 수신하면, 정보 기억부(260)로부터 OS 무효화 리스트(266)를 판독하고, 판독한 OS 무효화 리스트(266)를 해시 생성부(254)에 출력하고, 해시 생성지시를 출력한다. 이어서, 해시 생성부(254)로부터 OS 다이제스트 데이터를 수신한다. 수신한 OS 다이제스트 데이터를 서명 생성부(252)에 출력하고, 서명생성을 지시한다. 이어서, 서명 생성부(252)로부터 서명 데이터를 수신한다. 수신한 서명 데이터를 OS 무효화 리스트(266)에 부가하여 서명 부가 OS 무효화 리스트(OS revocation list with signature)를 생성한다.
애플리케이션 무효화 리스트(276)에 대해서도 동일한 방법으로 해시 생성부(254) 및 서명 생성부(252)에 지시하여 서명 데이터를 생성한다. 생성된 서명 데이터를 애플리케이션 리스트(276)에 부가하여, 서명 부가 애플리케이션 무효화 리스트(application revocation list with signature)를 생성한다.
이어서, 통신부(251) 및 인터넷(20)을 통해서 휴대전화(400)에 생성된 서명 부가 OS 무효화 리스트와 서명 부가 애플리케이션 무효화 리스트를 송신한다.
또, 제어부(257)는 입력부(262)를 통해서 조작자에 의한 각종 지시 및 데이터를 수신하고, 수신한 지시에 따라서 동작한다.
(6) 입력부(262) 및 표시부(263)
입력부(262)는 무효화 리스트 발행장치(250)의 조작자에 의한 지시 및 데이터의 입력을 접수하고, 접수한 지시 및 데이터를 제어부(257)에 출력한다.
표시부(263)는 제어부(257)의 지시에 의해 각종 화면을 표시한다.
2.2 휴대전화(400)
휴대전화(400)의 하드웨어의 구성은 도 2에 도시하는 휴대전화(100)의 구성과 거의 동일하며, 디버거 IF, CPU, MMU, 2차 기억부, 스위칭제어부(106), 인터럽트 컨트롤러, 입력부, 표시부, 통상 메모리, 공유메모리, 시큐어 메모리(413), 메모리 보호부(414), 입출력부, 암호처리장치, 무선통신제어부, 마이크, 스피커, 통신부, 버퍼, 부호 처리부, D/A 변환부로 구성된다.
시큐어 메모리(413) 및 메모리 보호부(414) 이외의 각부에 대해서는 휴대전화 100과 동일하므로 상세한 설명을 생략하고, 여기에서는 휴대전화 100과 다른 부 분에 대해서만 설명한다.
(1) 시큐어 메모리(413)
시큐어 메모리(413)는, 도 51에 도시하는 바와 같이, 음악 복호프로그램(446), 시큐어 OS(441) 등의 각종 프로그램을 기억하고 있다.
음악 복호프로그램(446)은, 제 1 실시 예의 음악 복호프로그램 176과 마찬가지로, 암호화 음악데이터의 복호순서를 포함하고 있고, 이 순서에 대해서는 설명을 생략한다.
음악 복호프로그램(446)은 헤더 부분에 애플리케이션 ID(447) 및 무효 플래그(448)를 포함하고 있다. 애플리케이션 ID(447)는 음악 복호프로그램(446)에 고유의 식별정보이다. 무효 플래그(448)는 음악 복호프로그램(446)이 무효화 되어 있는가 여부를 나타내는 플래그이고, 무효 플래그 「1」은 음악 복호프로그램(446)이 무효화 되어 있음을 나타내고 있으며, 무효 플래그 「0」은 무효화 되어 있지 않음을 나타낸다.
시큐어 OS(441)는 제 1 실시 예의 시큐어 OS 171과 동일한 처리를 실행하는 기본 소프트웨어이므로, 시큐어 OS(441)의 동작에 대해서는 설명을 생략한다. 다만, 시큐어 OS(441)는 시큐어 메모리(413) 상의 각 애플리케이션을 기동하거나, 또는 CPU가 복호하도록 할 때에, 각 애플리케이션의 헤더 부분의 무효 플래그를 판독하고, 무효 플래그가 「1」인 경우, 그 애플리케이션의 기동 또는 복귀를 중지한다.
시큐어 OS(441)는 헤더 부분에 시큐어 OS ID(442) 및 무효 플래그(443)를 포 함하고 있다.
시큐어 OS ID(442)는 시큐어 OS(171)와 대응하는 식별정보이다. 무효 플래그(443)는 시큐어 OS(441)가 무효화 되어 있는가 여부를 나타내는 플래그이며, 무효 플래그 「1」은 음악 복호프로그램(446)이 무효화 되어 있음을 나타내고 있고, 무효 플래그 「0」은 무효화 되어 있지 않음을 나타낸다.
또, 본 실시 예에서, 시큐어 메모리(423) 상에 로드되어 스위칭처리를 행하는 시큐어 스위칭장치 드라이버는, 시큐어 OS(441)의 컨텍스트를 CPU에 복귀시키기 전에 시큐어 OS(441)의 무효 플래그(443)를 판독하고, 무효 플래그가 「1」인 경우에는 시큐어 OS(441)의 복귀를 중지한다.
(2) 메모리 보호부(414)
메모리 보호부(414)는, 도 51에 도시하는 바와 같이, 무효화 리스트 기억부(421), 무효화 리스트 갱신부(424), 애플리케이션 검증부(428), 애플리케이션 무효화부(429), OS 검증부(431) 및 OS 무효화부(432)로 구성된다.
<무효화 리스트 기억부(421)>
무효화 리스트 기억부(421)는 애플리케이션 무효화 리스트(422) 및 OS 무효화 리스트(423)를 기억하고 있다.
애플리케이션 무효화 리스트(422) 및 OS 무효화 리스트(423)는 각각 무효화 리스트 발행장치(250)의 정보 기억부(260)에 기억되어 있는 애플리케이션 무효화 리스트(267) 및 OS 무효화 리스트(266)와 동일한 구성이다.
<무효화 리스트 갱신부(424)>
무효화 리스트 갱신부(424)는 미리 서명 검증키(426)를 기억하고 있다. 서명 검증키(426)는 무효화 리스트 발행장치(250)의 키 기억부(253)에 기억되어 있는 발행장치 공개키와 동일한 키이다.
무효화 리스트 갱신부(424)는 스위칭제어부(106)로부터 시큐어 메모리(413)와 버스(130)의 접속을 지시하는 접속지시를 수신한다. 접속지시를 수신하면, 무선통신제어부 및 통신부를 통해서 최신의 애플리케이션 무효화 리스트 및 OS 무효화 리스트의 송신을 요구하는 리스트 요구를 무효화 리스트 발행장치(250)에 송신한다.
이어서, 무선통신제어부 및 통신부를 통해서 무효화 리스트 발행장치(250)로부터 서명 부가 OS 무효화 리스트와 서명 부가 애플리케이션 무효화 리스트를 수신한다.
수신한 서명 부가 OS 무효화 리스트의 서명 데이터에 서명 검증키를 사용하여 서명 검증을 행한다. 구체적으로는, 서명 데이터에 서명 검증키를 사용하여 서명 검증 알고리즘 V를 실시하여 체크 데이터를 생성한다. 서명 검증 알고리즘 V는 서명생성 알고리즘 S에 의해서 생성된 서명 데이터를 검증하는 알고리즘이다.
이어서, 수신한 OS 무효화 리스트를 해시함수에 대입하여 OS 다이제스트 데이터를 생성한다. 생성된 체크 데이터와 다이제스트 데이터를 비교하여, 양자가 일치하는 경우에는 서명 검증이 성공이라고 판단하고, 일치하지 않는 경우에는 실패라고 판단한다. 서명 검증에 실패한 경우에는 이하에 설명하는 리스트 ID의 비교 및 OS 무효화 리스트의 갱신을 중지한다.
수신한 서명 부가 애플리케이션 무효화 리스트에 대해서도 동일한 방법으로 서명 검증을 행한다. 서명 검증이 실패한 경우에는 이하에 설명하는 애플리케이션 ID의 비교 및 애플리케이션 무효화 리스트의 갱신을 중지한다.
이어서, 수신한 OS 무효화 리스트와 무효화 리스트 기억부(421)가 기억하고 있는 OS 무효화 리스트(423)에 포함되는 리스트 ID를 비교한다. 양자가 동일하면 수신한 OS 무효화 리스트를 파기한다. 수신한 OS 무효화 리스트의 리스트 ID가 무효화 리스트 기억부(421)가 기억하고 있는 OS 무효화 리스트(423)의 리스트 ID보다도 새로운 날짜를 나타내고 있으면, 무효화 리스트 기억부(421)가 기억하고 있는 OS 무효화 리스트(423)를 수신한 OS 무효화 리스트에 의해 갱신한다.
애플리케이션 무효화 리스트에 대해서도 동일한 방법으로, 수신한 애플리케이션 무효화 리스트와 무효화 리스트 기억부(421)가 기억하고 있는 애플리케이션 무효화 리스트(422)의 신구를 비교하여, 애플리케이션 무효화 리스트(422) 쪽이 오래된 경우에는 수신한 애플리케이션 무효화 리스트에 의해 무효화 리스트 기억부(421) 내의 애플리케이션 무효화 리스트(422)를 갱신한다.
<OS 검증부(431) 및 OS 무효화부(432)>
OS 검증부(431)는 시큐어 OS(441)의 헤더 부분으로부터 시큐어 OS ID(442)를 판독한다. 이어서, 무효화 리스트 기억부(421)로부터 OS 무효화 리스트(423)를 판독하고, 판독한 시큐어 OS ID(442)가 OS 무효화 리스트(423)의 무효 ID에 포함되어 있는가 여부를 판단한다. 시큐어 OS ID(442)가 OS 무효화 리스트(423)에 포함되어 있는 경우에는 시큐어 OS(441)가 무효하다고 판단하고, OS 무효화부(432)에 무효화 를 지시한다.
시큐어 OS ID(442)가 OS 무효화 리스트(423)에 포함되어 있지 않으면 유효하다고 판단한다.
OS 무효화부(432)는 OS 검증부(431)로부터 무효화 지시가 있으면 시큐어 OS(441)의 헤더 부분의 무효 플래그를 「1」로 고쳐쓴다.
<애플리케이션 검증부(428) 및 애플리케이션 무효화부(429)>
애플리케이션 검증부(428)는 시큐어 메모리(413) 상의 음악 복호프로그램(446)의 헤더 부분으로부터 애플리케이션 ID(447)를 판독한다. 이어서, 무효화 리스트 기억부(421)로부터 애플리케이션 무효화 리스트(422)를 판독하고, 애플리케이션 ID(447)가 애플리케이션 무효화 리스트(422)에 포함되어 있는가 여부를 판단한다. 애플리케이션 ID(447)가 애플리케이션 무효화 리스트(422)에 포함되어 있는 경우, 음악 복호프로그램(446)이 무효한 프로그램이라고 판단하고, 애플리케이션 무효화부(429)에 무효화를 지시한다.
애플리케이션 ID(447)가 애플리케이션 무효화 리스트에 포함되어 있지 않으면 음악 복호프로그램(446)이 유효한 프로그램이라고 판단한다.
애플리케이션 무효화부(429)는 애플리케이션 검증부(428)로부터 무효화 지시를 수신하고, 음악 복호프로그램(446)의 무효 플래그를 「1」로 설정한다.
시큐어 메모리(413) 상에 복수의 애플리케이션이 존재하는 경우, 모든 애플리케이션에 대해서 애플리케이션 검증부(428) 및 애플리케이션 무효화부(429)는 동일한 방법으로 애플리케이션이 무효한가 여부를 판단하며, 무효한 경우의 무효 플 래그의 설정을 반복한다.
(3) 메모리 보호부의 검증동작
도 52 ~ 53에 도시한 흐름도를 사용하여 메모리 보호부(414)에 의한 프로그램의 검증동작에 대하여 설명한다.
스위칭제어부(106)로부터 접속지시를 수신한다(스텝 S 671). 접속지시를 수신하면 무효화 리스트 갱신부(424)는 무선통신제어부(118) 및 통신부(121)를 통해서 무효화 리스트 발행장치(250)로 리스트 요구를 송신한다(스텝 S 672). 이어서, 통신부 및 무선통신제어부를 통해서 서명 부가 OS 무효화 리스트와 서명 부가 애플리케이션 무효화 리스트를 취득한다(스텝 S 673).
무효화 리스트 갱신부(424)는 서명 검증키(426)를 판독하고, 판독한 서명 검증키를 사용하여 취득한 서명 부가 OS 무효화 리스트 및 서명 부가 애플리케이션 무효화 리스트의 서명 검증을 행한다(스텝 S 674). 서명 검증이 실패이면(스텝 S 676의 NO), OS 검증부에 의한 스텝 S 681로 처리를 이동한다.
서명 검증이 성공이면(스텝 S 676의 YES), 무효화 리스트 기억부에 기억되어 있는 OS 무효화 리스트(423) 및 애플리케이션 무효화 리스트(422)의 리스트 ID를 판독한다(스텝 S 677). 판독한 OS 무효화 리스트(423)의 리스트 ID와 수신한 OS 무효화 리스트의 리스트 ID와 비교하고, 애플리케이션 무효화 리스트(422)의 리스트 ID와 수신한 애플리케이션 무효화 리스트의 리스트 ID를 비교함으로써, OS 무효화 리스트(423) 및 애플리케이션 무효화 리스트(422)가 최신판인가 여부를 판단한다(스텝 S 678). 최신판이 아니라고 판단하면(스텝 S 678의 NO), 수신한 OS 무효화 리스트 및 수신한 애플리케이션 무효화 리스트에 의해 무효화 리스트 기억부(421)에 기억되어 있는 OS 무효화 리스트(423) 및 애플리케이션 무효화 리스트(422)를 갱신한다(스텝 S 679).
최신판이라고 판단하면(스텝 S 678의 YES) 스텝 S 679의 처리를 생략한다.
스텝 S 672 ~ 679의 무효화 리스트 갱신부(424)에 의한 처리가 종료되면 OS 검증부(431)는 시큐어 메모리(413)로부터 시큐어 OS ID(442)를 판독하고(스텝 S 681), 판독한 시큐어 OS ID(442)가 OS 무효화 리스트(423)에 기록되어 있는가 여부에 의해서 시큐어 OS(441)가 무효한가 유효한가를 판정한다(스텝 S 682).
유효하다고 판정되면(스텝 S 683의 YES), 애플리케이션 검증부(428)에 의한 스텝 S 686의 처리로 이동한다.
무효하다고 판정되면(스텝 S 683의 NO), OS 무효화부(432)는 시큐어 OS(441)의 무효 플래그(443)를 「1」로 설정한다(스텝 S 684).
OS 검증부(431) 및 OS 무효화부(432)에 의한 스텝 S 684까지의 처리가 종료되면, 애플리케이션 검증부(428)는 시큐어 메모리(413) 상의 음악 복호프로그램(446)의 애플리케이션 ID(447)를 판독하고(스텝 S 686), 판독한 애플리케이션 ID가 애플리케이션 무효화 리스트(422)에 등록되어 있는가 여부에 의해서 음악 복호프로그램(446)이 유효한가 무효한가를 판정한다(스텝 S 687).
유효하다고 판정되면(스텝 S 688의 YES) 검증처리를 종료한다. 무효하다고 판정되면(스텝 S 688의 NO), 애플리케이션 무효화부(429)는 음악 복호프로그램(446)의 무효 플래그를 「1」로 설정한다(스텝 S 689).
2.3 정리 및 효과
이상, 설명한 바와 같이, 본 실시 예의 휴대전화(400)는 무효화 리스트 발행장치(250)로부터 수시로 최신의 OS 무효화 리스트 및 애플리케이션 무효화 리스트를 취득한다. 취득한 OS 무효화 리스트 및 애플리케이션 무효화 리스트를 기초로 하여 자신이 기억하고 있는 시큐어 OS(441) 및 음악 복호프로그램(446)을 비롯하여 시큐어 메모리(413) 상에 로드되어 있는 애플리케이션이 유효한가 여부를 판단하고 무효화 되어 있는 프로그램의 실행을 중지한다.
이와 같은 구성으로 함으로써, 휴대전화(400)가 발매된 후, 후발적으로 무효화하여야 하는 것으로 판명된 프로그램에 대해서도 그 실행을 중단할 수 있게 되어 부정한 프로그램의 실행에 의한 데이터의 부정사용을 방지할 수 있다.
2.4 제 2 실시 예의 변형 예 1
본 발명의 제 2 실시 예에 대하여, 이하와 같은 구성으로 해도 좋다.
(1) 무효화 리스트 발행장치(250)
무효화 리스트 발행장치(250)는 OS 무효화 리스트 및 애플리케이션 무효화 리스트를 기억하고 있으나, OS 무효화 리스트는 무효화 ID(269, 270, 271 …) 대신 무효화 된 오퍼레이팅 시스템의 시큐어 OS 증명서(후술한다)의 증명서 ID를 포함하여 구성된다.
애플리케이션 무효화 리스트에 대해서도, 무효화 ID(279, 280, 281 …) 대신, 무효화 된 애플리케이션의 애플리케이션 증명서(후술한다)의 증명서 ID를 포함하여 구성된다.
(2) 휴대전화(400)
휴대전화(400)는 메모리 보호부(414) 대신 메모리 보호부(454)를 구비하고, 시큐어 메모리(413) 대신 시큐어 메모리(453)를 구비하고 있다. 메모리 보호부(414)가, 시큐어 메모리(413) 상의 각 프로그램에 고유한 ID에 의해서, 각 프로그램이 유효한가 무효한가를 판정하는 대신, 메모리 보호부(454)는 시큐어 메모리(453) 상의 각 프로그램에 고유한 증명서를 사용하여 판정한다.
이하에, 이 기능을 실현하는 구성에 대하여 설명한다.
(2-1) 시큐어 메모리(453)
시큐어 메모리(453)는, 일례로, 도 54에 도시하는 바와 같이, 음악 복호프로그램(476), 시큐어 OS(481)를 포함하고 있다.
시큐어 OS(481)는 헤더 부분에 시큐어 OS 증명서(482) 및 무효 플래그(483)를 포함하고 있다.
시큐어 OS 증명서(482)는 X.509에 따른 공개키 증명서이고, 도 55에 도시하는 바와 같이, 발행자 ID(484), 증명서 ID(487), 시큐어 OS 공개키(488), 서명 알고리즘(489) 및 CA 서명(491)을 포함하여 구성된다.
발행자 ID(484)는 시큐어 OS 증명서(482)의 발행원인 인증국(이하, CA : Certificate Authority라고 부른다)의 식별자이다. 시큐어 OS 공개키(488)는 시큐어 OS 증명서(482)에 의해서 정당성이 증명되는 시큐어 OS(481)에 고유한 공개키이다. 서명 알고리즘(489)은 CA 서명(491)의 생성에 사용된 알고리즘을 나타내는 식별정보이다. CA 서명(491)은, 시큐어 OS 증명서(482)의 발행원인 CA의 비밀키를 사 용하여, 상기 발행자 ID(484) 및 증명서 ID(487, …)에 서명 알고리즘(489)이 나타내는 알고리즘 S1을 실시하여 생성된 서명 데이터이다.
무효 플래그(483)는 시큐어 OS(481)가 유효한가 무효한가를 나타내고 있다.
음악 복호프로그램(476)은 그 헤더 부분에 애플리케이션 증명서(477)와 무효 플래그(478)를 포함하고 있다.
애플리케이션 증명서(477)는 도 55의 시큐어 OS 공개키(488)를 애플리케이션 공개키로 치환한 구성이다.
무효 플래그(478)는 음악 복호프로그램(476)이 무효한가 유효한가를 나타내고 있다.
(2-2) 메모리 보호부(454)
메모리 보호부(454)는, 도 54에 도시하는 바와 같이, 무효화 리스트 기억부(461), 무효화 리스트 갱신부(424), 키 저장부(464), 애플리케이션 검증부(486), 애플리케이션 무효화부(429), OS 검증부(471) 및 OS 무효화부(432)로 구성된다.
무효화 리스트 갱신부(424), OS 무효화부(432) 및 애플리케이션 무효화부(429)의 동작은 상기의 제 2 실시 예의 무효화 리스트 갱신부(424), OS 무효화부(432) 및 애플리케이션 무효화부(429)와 동일하므로, 여기에서는 설명을 생략한다.
<무효화 리스트 기억부(461)>
무효화 리스트 기억부(461)는, 도 54에 도시하는 바와 같이, OS 무효화 리스트(463) 및 애플리케이션 무효화 리스트(462)를 포함하고 있다.
OS 무효화 리스트(463)는 무효화 리스트 발행장치(250)가 기억하고 있는 OS 무효화 리스트와 동일한 구성이며, 무효화 된 오퍼레이팅 시스템의 증명서 ID를 포함하고 있다.
애플리케이션 무효화 리스트(462)는 무효화 리스트 발행장치(250)가 기억하고 있는 애플리케이션 무효화 리스트와 동일한 구성이며, 무효화 된 애플리케이션의 증명서 ID를 포함하고 있다.
<키 저장부(464)>
키 저장부(464)는 CA 공개키(466)를 기억하고 있다. CA 공개키(466)는 시큐어 OS 증명서(482) 및 애플리케이션 증명서(477)의 발행원인 CA의 공개키이며, 시큐어 OS 증명서(482) 및 애플리케이션 증명서(477)에 포함되는 CA 서명의 생성에 사용된 CA의 비밀키와 쌍이 되는 키이다.
<OS 검증부(471)>
OS 검증부(471)는 무효화 리스트 갱신부(424)에 의한 OS 무효화 리스트 및 애플리케이션 무효화 리스트의 갱신처리가 종료되면, 시큐어 메모리(453)로부터 시큐어 OS(481)에 포함되는 시큐어 OS 증명서(482)를 판독한다. 키 저장부(464)로부터 CA 공개키(466)를 판독하고, 판독한 CA 공개키(466)를 사용하여 시큐어 OS 증명서(482)에 포함되는 CA 서명(491)에 서명 검증 알고리즘 V1을 실시하여 서명 검증을 행한다. 서명 검증 알고리즘 V1은 서명생성 알고리즘 S1에 의해 생성된 서명 데이터를 검증하는 알고리즘이다.
서명 검증의 결과가 실패이면 이후의 처리를 중지하고, OS 무효화부(432)에 시큐어 OS(481)의 무효화를 지시한다.
서명 검증의 결과가 성공이면, 이어서, 시큐어 OS 증명서(482)에 포함되는 증명서 ID(487)가 OS 무효화 리스트(463)에 등록되어 있는가 여부에 의해서, 시큐어 OS(481)가 무효인가 여부를 판정한다. 등록되어 있으면 시큐어 OS(481)가 무효한 프로그램이라고 판정하고, OS 무효화부(432)에 시큐어 OS(481)의 무효화를 지시한다.
등록되어 있지 않으면, OS 검증부(471)는 시큐어 OS(481)가 유효한 프로그램이라고 판정한다.
또한, 본 실시 예에서, 시큐어 OS 증명서(482)의 서명 검증을 행하여, 서명 검증이 성공일 경우에 증명서 ID(487)가 OS 무효화 리스트(463)에 등록되어 있는가 여부를 판정하고 있으나, 증명서 ID(487)가 OS 무효화 리스트(463)에 등록되어 있는가 여부를 판정하여 등록되어 있지 않은 경우에 서명 검증을 행하는 것으로 해도 좋다.
<애플리케이션 검증부(468)>
애플리케이션 검증부(468)는 OS 검증부(171)에 의한 시큐어 OS(481)의 검증이 종료되면 시큐어 메모리(453)로부터 음악 복호프로그램(476)에 포함되는 애플리케이션 증명서(477)를 판독한다. 키 저장부(464)로부터 CA 공개키(466)를 판독하고, 판독한 CA 공개키(466)를 사용하여 애플리케이션 증명서(477)에 포함되는 CA 서명에 서명 검증 알고리즘 V1을 실시하여 서명 검증을 행한다.
서명 검증의 결과가 실패이면 이후의 처리를 중지하고, 애플리케이션 무효화 부(429)에 음악 복호프로그램(476)의 무효화를 지시한다.
서명 검증의 결과가 성공이면, 이어서 애플리케이션 증명서(477)에 포함되는 증명서 ID가 애플리케이션 무효화 리스트(462)에 등록되어 있는가 여부에 의해서 음악 복호프로그램(476)이 무효한가 여부를 판정한다. 등록되어 있으면 음악 복호프로그램(476)이 무효한 프로그램이라고 판정하고, 애플리케이션 무효화부(429)에 음악 복호프로그램(476)의 무효화를 지시한다.
등록되어 있지 않으면 음악 복호프로그램(476)은 유효한 프로그램이라고 판정한다.
또한, 상기의 서명 검증과 증명서 ID가 애플리케이션 무효화 리스트(462)에 등록되어 있는가 여부의 판정의 순서는 역으로 해도 된다.
2.5 제 2 실시 예의 변형 예 2
상기 변형 예 1에서, 음악 복호프로그램(476)은 계층구조를 구성하는 복수의 증명서를 포함하고 있는 것으로 해도 좋다.
도 56은 음악 복호프로그램(476)이 갖는 복수의 증명서의 구성 및 이들 증명서의 계층구조를 나타내고 있다.
음악 복호프로그램(476)은, 도 56에 도시하는 바와 같이, 애플리케이션 증명서(501), 메이커 증명서(511) 및 CA 증명서(521)를 포함하고 있다.
애플리케이션 증명서(501)는 발행 원(502), 증명서 ID(503), 애플리케이션 공개키(504), 서명 알고리즘(506) 및 메이커 서명(508)을 포함하여 구성된다.
발행 원(502)은 애플리케이션 증명서(501)의 발행 원인 애플리케이션 메이커 를 나타내는 식별정보이다. 도 56에는 설명의 편의상 「애플리케이션 메이커」라고 기재하고 있다. 증명서 ID(503)는 애플리케이션 증명서(501)에 고유한 식별정보이다. 애플리케이션 공개키(504)는 음악 복호프로그램(476)에 고유한 공개키이며, 애플리케이션 증명서(501)에 의해서 그 정당성이 증명된다. 서명 알고리즘(506)은 메이커 서명(508)의 생성에 사용된 서명생성 알고리즘을 나타내는 식별정보이다. 메이커 서명(508)은 음악 복호프로그램(476)의 제조 메이커에 고유한 애플리케이션 메이커 비밀키(519)를 사용하여, 발행 원(502), 증명서 ID(503), 애플리케이션 공개키(504), 서명 알고리즘(506) 등의 애플리케이션 증명서(501)에 포함되는 정보에 서명생성 알고리즘 S2를 실시하여 생성된 서명 데이터이다.
메이커 증명서(511)는 발행 원(512), 증명서 ID(513), 메이커 공개키(514), 서명 알고리즘(516) 및 CA 서명(518)을 포함하여 구성된다.
발행 원(512)은 메이커 증명서(511)의 발행 원인 CA를 나타내는 식별정보이다. 도 56에는 설명의 편의상 「CA」라고 기재하고 있다. 증명서 ID(513)는 메이커 증명서(511)에 고유의 식별정보이다. 메이커 공개키(514)는 음악 복호프로그램(476)의 제조 메이커의 공개키이고, 메이커 증명서(511)에 의해서 그 정당성이 증명된다. 메이커 공개키(514)는 애플리케이션 메이커 비밀키(519)와 대응하는 키이다. 서명 알고리즘(516)은 CA 서명(518)의 생성에 사용된 서명생성 알고리즘을 나타내는 식별정보이다. CA 서명(518)은 CA 비밀키(529)를 사용하여 발행 원(512), 증명서 ID(513), 메이커 공개키(514), 서명 알고리즘(516) 등의 메이커 증명서(511)에 포함되는 정보에 서명생성 알고리즘 S3을 실시하여 생성된 서명 데이터 이다.
CA 증명서(521)는 발행 원(522), 증명서 ID(523), CA 공개키(524), 서명 알고리즘(526) 및 루트 CA 서명(528)을 포함하여 구성된다.
발행 원(522)은 CA 증명서(521)의 발행 원인 루트 CA를 나타내는 식별정보이다. 도 56에는 설명의 편의상 「루트 CA」라고 기재하고 있다. 증명서 ID(523)는 CA 증명서(521)에 고유의 식별정보이다. CA 공개키(524)는 CA의 공개키이며, CA 증명서(521)에 의해서 그 정당이 증명된다. CA 공개키(524)는 CA 비밀키(529)와 대응하는 키이다. 서명 알고리즘(526)은 루트 CA 서명(528)의 생성에 사용된 서명생성 알고리즘을 나타내는 식별정보이다. 루트 CA 서명(528)은 루트 CA 비밀키(531)를 사용하여, 발행 원(522), 증명서 ID(523), CA 공개키(524), 서명 알고리즘(526) 등의 CA 증명서(521)에 포함되는 정보에 루트 CA 비밀키(531)를 사용하여, 서명생성 알고리즘 S4를 실시하여 생성된 서명 데이터이다. 루트 CA 비밀키(531)는 루트 CA에 고유의 비밀키이다.
여기서, 일례로, CA에는 휴대전화(400)의 판매 메이커, 루트 CA에는 공적인 증명서 발행기관이 해당한다. 또, 메이커 증명서(511) 대신 음악 복호프로그램(476)을 제어하는 시큐어 OS(481)의 OS 증명서(482), 휴대전화(400)에 할당되는 증명서, 시큐어 OS(481)의 제조 메이커의 증명서를 사용하는 것으로 해도 좋다.
이 변형 예에서, 키 저장부(464)는 CA 공개키(466) 대신 루트 CA 공개키를 기억하고 있다. 루트 CA 공개키는 루트 CA 비밀키(531)와 대응하는 키이다.
또, 무효화 리스트 기억부(461)는 애플리케이션 무효화 리스트(462)와 더불 어, 메이커 무효화 리스트 및 CA 무효화 리스트를 기억하고 있다. 메이커 무효화 리스트는 무효화 된 메이커 증명서의 증명서 ID를 포함하는 리스트이고, CA 무효화 리스트는 무효화 된 CA 증명서의 증명서 ID를 포함하는 리스트이다.
애플리케이션 검증부(468)는 먼저, CA 증명서(521)와 루트 CA 공개키를 판독하고, 판독한 루트 CA 공개키를 사용하여 CA 증명서(521)에 포함되는 루트 CA 서명(528)에 서명 검증 알고리즘 V4를 실시하여 서명 검증을 행한다. 서명 검증 알고리즘 V4는 서명생성 알고리즘 S4에 의해 생성된 서명 데이터를 검증하는 알고리즘이다.
서명 검증이 실패이면 애플리케이션 검증부(468)는 이후의 처리를 중지하고, 애플리케이션 무효화부(429)에 음악 복호프로그램(476)의 무효화를 지시한다.
서명 검증이 성공이면, 이어서, CA 증명서(521)에 포함되는 증명서 ID(523)가 CA 무효화 리스트에 등록되어 있는가 여부를 판단하고, 등록되어 있으면 애플리케이션 검증부(468)는 이하의 처리를 중지하여 애플리케이션 무효화부(429)에 음악 복호프로그램(476)의 무효화를 지시한다.
등록되어 있지 않으면, 이어서, 메이커 증명서(511)를 판독하고, CA 증명서(521)에 포함되는 CA 공개키(524)를 사용하여, 판독한 메이커 증명서(511)에 포함되는 CA 서명(518)에 서명 검증 알고리즘 V3을 실시하여 서명 검증을 행한다. 서명 검증 알고리즘 V3은 서명생성 알고리즘 S3에 의해 생성된 서명 데이터를 검증하는 알고리즘이다.
서명 검증이 실패이면, 애플리케이션 검증부(468)는 이하의 처리를 중지하 여, 애플리케이션 무효화부(429)에 음악 복호프로그램(476)의 무효화를 지시한다.
서명 검증이 성공이면, 이어서, 메이커 증명서(511)에 포함되는 증명서 ID(513)가 메이커 무효화 리스트에 등록되어 있는가 여부를 판단하여, 등록되어 있으면 애플리케이션 검증부(468)는 이하의 처리를 중지하여 애플리케이션 무효화부(429)에 음악 복호프로그램(476)의 무효화를 지시한다.
등록되어 있지 않으면, 이어서, 애플리케이션 증명부(501)를 판독한다. 메이커 증명서(511)에 포함되는 메이커 공개키(514)를 사용하여, 판독한 애플리케이션 증명서(501)에 포함되는 메이커 서명(508)에 서명 검증 알고리즘 V2를 실시하여 서명 검증을 행한다. 서명 검증 알고리즘 V2는 서명생성 알고리즘 S2에 의해 생성된 서명 데이터를 검증하는 알고리즘이다.
서명 검증이 실패이면 애플리케이션 검증부(468)는 이하의 처리를 중지하여, 애플리케이션 무효화부(429)에 음악 복호프로그램(476)의 무효화를 지시한다.
서명 검증이 성공이면, 이어서, 애플리케이션 증명서(501)에 포함되는 증명서 ID(503)가 애플리케이션 무효화 리스트(462)에 등록되어 있는가 여부를 판단하여, 등록되어 있으면 애플리케이션 검증부(468)는 애플리케이션 무효화부(429)에 음악 복호프로그램(476)의 무효화를 지시한다.
등록되어 있지 않으면 음악 복호프로그램(476)이 유효한 프로그램이라고 판정한다.
이와 같이, 2중, 3중의 검증을 함으로써 훨씬 높은 보안을 확보할 수 있다. 또, 메이커 증명서를 도입함으로써, 동일한 메이커에 의해 개발된 프로그램 전부를 무효화할 수 있다.
시큐어 OS(481)에 대해서도, 마찬가지로 복수의 증명서에 의한 검증을 행해도 된다.
2.6 그 외의 변형 예
(1) 상기의 제 2 실시 예에서, OS 무효화 리스트는 리스트 ID로 OS 무효화 리스트가 생성된 날짜를 포함하고 있으나, 도 57에 도시하는 OS 무효화 리스트(541)와 같이 버전 번호를 리스트 ID(543)로 포함하고 있어도 된다. 버전 정보란 OS 무효화 리스트의 세대를 나타내는 번호이고, 값이 클수록 새로운 것을 나타낸다.
또, OS 무효화 리스트(551)에 나타내는 바와 같이, 무효화 ID의 총수를 리스트 ID(553)로 포함하고 있는 것으로 해도 좋다. 무효화 되는 프로그램의 총수의 감소는 있을 수 없는 일이므로, 무효화 ID의 총수를 리스트 ID로 함으로써 리스트 ID의 값이 큰 것일수록 새로운 OS 무효화 리스트라고 판단할 수 있다.
(2) 상기의 설명에서, 무효화 리스트 발행장치(250)는 OS 무효화 리스트 및 애플리케이션 무효화 리스트를 생성하고 있으나, 애플리케이션 무효화 리스트와 OS 무효화 리스트의 발행 원이 달라도 좋다.
예를 들어, OS 무효화 리스트는 오퍼레이팅 시스템 개발 메이커가 관리하는 무효화 리스트 발행장치에 의해 생성되어 발행된다. 애플리케이션 무효화 리스트는 애플리케이션의 개발 메이커가 관리하는 무효화 리스트 발행장치에 의해 생성되어 발행된다.
(3) 상기 실시 예 및 변형 예에서, OS 검증이 시큐어 애플리케이션을 검증하고 애플리케이션 검증부가 시큐어 OS를 검증하는 것으로 해도 좋다.
시큐어 애플리케이션과 시큐어 OS의 개발 메이커가 다른 경우, 이와 같이 상호 검증함으로써 훨씬 안전성을 높일 수 있다.
(4) 또, 무효화 리스트 발행장치(250)가 송신하는 애플리케이션 무효화 리스트 및 OS 무효화 리스트는 반드시 최신의 것이어서, 무효화 리스트 기억부(421)가 기억하고 있는 애플리케이션 무효화 리스트(422) 및 OS 무효화 리스트(423)가 이들보다도 새로운 것일 수는 없다. 따라서, 무효화 리스트 갱신부(424)는 애플리케이션 무효화 리스트 및 OS 무효화 리스트의 갱신을 행할 때에, 상술한 바와 같은 리스트 ID의 비교를 생략하고, 서명 검증에 성공하면 무조건 무효화 리스트 발행장치(250)로부터 수신한 애플리케이션 무효화 리스트 및 OS 무효화 리스트에 의해 애플리케이션 무효화 리스트(422) 및 OS 무효화 리스트(423)를 갱신하는 것으로 해도 좋다.
(5) 상기 실시 예에서, 스위칭제어부(106)로부터 접속지시가 출력되면, 시큐어 메모리(413)에 기억되어 있는 각 프로그램의 검증을 행하고 있으나, 검증의 타이밍은 이에 한정되는 것은 아니며, 휴대전화(400)의 전원투입시, 각 프로그램의 기동시 등이어도 된다.
3. 제 3 실시 예
이하에, 본 발명에 관한 제 3 실시 예에 대하여 설명한다.
본 실시 예의 휴대전화는 제 2 실시 예와 마찬가지로, 휴대전화망 및 인터넷 을 통해서 무효화 리스트 발행장치와 접속되어 있다.
3.1 무효화 리스트 발행장치
본 실시 예의 무효화 리스트 발행장치는 제 2 실시 예에서의 무효화 리스트 발행장치(250)와 마찬가지로, 통신부, 서명 생성부, 키 기억부, 해시 생성부, 제어부, 정보 기억부(610), 입력부 및 표시부로 구성된다.
통신부, 서명 생성부, 키 기억부, 해시 생성부, 입력부 및 표시부의 구성 및 동작은 무효화 리스트 발행장치(250)에 포함되는 통신부(251), 서명 생성부(252), 키 기억부(253), 해시 생성부(254), 입력부(262) 및 표시부(263)와 거의 동일하며, 해시 생성부는 OS 무효화 리스트 및 애플리케이션 무효화 리스트 대신, OS 매트릭스 무효화 리스트(후술한다)로부터 OS 다이제스트 데이터를 생성하고, 애플리케이션 매트릭스 무효화 리스트(후술한다)로부터 애플리케이션 다이제스트 데이터를 생성한다. 이들 각부에 대해서는 설명을 생략하며, 본 실시 예의 특징이다. 정보 기억부(610) 및 제어부에 대해서만 설명한다.
(1) 정보 기억부(610)
정보 기억부(610)는 도 58에 도시하는 바와 같이, 애플리케이션 발행키 매트릭스(601), OS 발행키 매트릭스(602), 애플리케이션 무효화 정보(604, 606 …), 애플리케이션 매트릭스 무효화 리스트(611) 및 OS 매트릭스 무효화 리스트(621)를 기억하고 있다.
<애플리케이션 발행키 매트릭스(601) 및 OS 발행키 매트릭스(602)>
애플리케이션 발행키 매트릭스(601)는, 도 58에 도시하는 바와 같이, 4행 × 4열의 행렬의 각 행렬요소로 16개의 발행키 Key_11, Key_12, Key_13 … 을 배치한 것이다. 각 발행키는 일례로 의사 난수를 사용하여 생성되는 64비트 길이의 키 데이터이다.
애플리케이션 발행키 매트릭스(601)는 종 방향으로 위에서부터 차례로 행 번호 「1」,「2」,「3」,「4」를 배치하고, 횡 방향으로 왼쪽에서부터 차례로 열 번호 「1」,「2」,「3」,「4」를 배치하고 있다.
행 번호 「1」, 열 번호 「1」과 대응하는 행렬요소(661)는 발행키 Key_11이며, 행 번호 「1」, 열 번호 「2」와 대응하는 행렬요소(662)는 발행키 Key_12이다. 행 번호 「1」, 열 번호 「3」과 대응하는 행렬요소(663)는 발행키 Key_13이며, 행 번호 「1」, 열 번호 「4」와 대응하는 행렬요소(664)는 발행키 Key_14이다.
마찬가지로, 행 번호 「2」, 열 번호 「1」 ~ 「4」의 행렬요소(665 ~ 668)는 각각 발행키 Key_21, Key_22, Key_23, Key_24이다. 행 번호, 열 번호 「1」 ~ 「4」의 행렬요소(669 ~ 672)는 발행키 Key_31, Key_32, Key_33, Key_34이다. 행 번호 「4」, 열 번호 「1」 ~ 「4」의 행렬요소(673 ~ 676)는 Key_41, Key_42, Key_43, Key_44이다.
본 실시 예에서, 각 시큐어 애플리케이션에는 애플리케이션 발행키 매트릭스(601)의 각 열로부터 1개씩 합계 4개의 발행키가 할당되어 있다. 4개의 발행키의 조합은 시큐어 애플리케이션별로 다르다.
일례로, 휴대전화에서 실행되는 음악 복호프로그램(후술한다)에는 애플리케 이션 발행키 매트릭스(601)에서, 실선 원(677, 678, 679, 680)으로 둘러싸여 있는 발행키 Key_11, Key_32, Key_23, Key_14가 할당되어 있다. 또, 음악 복호프로그램과는 다른 시큐어 애플리케이션(애플리케이션 B라고 부른다)에는 점선 원(681, 682, 683, 684)으로 둘러싸여 있는 발행키 Key_21, Key_32, Key_33, Key_44가 할당되어 있다.
OS 발행키 매트릭스(602)는 애플리케이션 발행키 매트릭스(601)와 동일한 구성이고, 16개의 발행키를 4행 × 4열의 행렬의 행렬요소로 저장한 것이다.
<애플리케이션 무효화 정보(604, 606, …)>
애플리케이션 무효화 정보(604, 606, …)에 대한 설명을 용이하게 하기 위해서, 애플리케이션 고유키 매트릭스 및 OS 고유키 매트릭스에 대하여 먼저 설명한다.
도 59는 본 실시 예의 휴대전화에 기억되어 있는 암호화 음악 복호프로그램(591)(후술한다)에 포함되는 애플리케이션 고유키 매트릭스(592) 및 암호화 시큐어 OS(596)(후술한다)에 포함되는 OS 고유키 매트릭스(597)이다.
애플리케이션 고유키 매트릭스(592)는 암호화 음악 복호프로그램(591)을 복호하여 생성되는 음악 복호프로그램과 1 대 1로 대응하고 있고, 음악 복호프로그램에 할당된 4개의 발행키를 포함하고 있다. 애플리케이션 고유키 매트릭스(592)는 4개의 키 정보(901, 902, 903, 904)로 구성된다. 각 키 정보는 열 번호와 행 번호와 발행키를 포함하고 있고, 키 정보(901)는 애플리케이션 발행키 매트릭스(601)의 1열째의 행렬요소로부터 음악 복호프로그램에 할당된 발행키 Key_11과 애플리케이션 발행키 매트릭스(601) 상에서 Key_11과 대응하는 행 번호 「1」과 열 번호 「1」을 포함하고 있다. 키 정보(902)는 애플리케이션 발행키 매트릭스(601)의 2열째의 행렬요소로부터 음악 복호프로그램에 할당된 발행키 Key_32와, 애플리케이션 발행키 매트릭스(601) 상에서 Key_32와 대응하는 행 번호 「3」과 열 번호 「2」를 포함하고 있다. 키 정보(903)는 애플리케이션 발행키 매트릭스(601)의 3열째의 행렬요소로부터 음악 복호프로그램에 할당된 발행키 Key_23과, 애플리케이션 발행키 매트릭스(601) 상에서 Key_23과 대응하는 행 번호 「2」와 열 번호 「3」을 포함하고 있다. 키 정보(904)는 애플리케이션 발행키 매트릭스(601)의 4열째의 행렬요소로부터 음악 복호프로그램에 할당된 발행키 Key_14와, 애플리케이션 발행키 매트릭스(601) 상에서 Key_14와 대응하는 행 번호 「1」과 열 번호 「4」를 포함하고 있다.
OS 고유키 매트릭스(597)는 애플리케이션 고유키 매트릭스와 동일한 구성이며, 키 정보(906, 907, 908, 909)로 구성되며, 각 키 정보는 열 번호, 행 번호 발행키를 포함한다.
본 실시 예에 기억되어 있는 암호화 시큐어 OS(596)를 복호하여 생성되는 시큐어 OS에는 OS 발행키 매트릭스(602)의 각 열로부터 1개씩, 합계 4개의 발행키가 할당되어 있다. 이 4개의 발행키의 조합은 오퍼레이팅 시스템마다 다르다.
키 정보(906 ~ 909)는 각각 OS 고유키 매트릭스(602)의 각 열로부터 시큐어 OS에 할당된 고유키와 고유키에 대응하는 OS 고유키 매트릭스(602) 상의 열 번호와 행 번호를 포함하고 있다.
애플리케이션 무효화 정보(604, 606 …)는 무효화 된 애플리케이션의 애플리 케이션 고유키 매트릭스의 각 키 정보로부터 열 번호 및 행 번호를 추출한 것이다.
일례로, 애플리케이션 무효화 정보(604)는 상술의 애플리케이션 B와 대응한다. 애플리케이션 무효화 정보(604)는 도 58에 도시하는 바와 같이, 4개의 열 번호 「1」_931, 「2」_932, 「3」_933, 「4」_934와 각각의 열 번호와 대응하는 행 번호(935 ~ 938)로 구성된다. 열 번호 「1」_931과 행 번호 「2」_935는 애플리케이션 발행키 매트릭스(601)의 1열째로부터 애플리케이션 B에 할당된 발행키 Key_21과 대응하고 있다. 열 번호 「2」_932와 행 번호 「3」_936, 애플리케이션 발행키 매트릭스(601)의 2열째로부터 애플리케이션 B에 할당된 발행키 Key_32와 대응하고 있다. 마찬가지로, 열 번호 「3」_933과 행 번호 「3」_937은 발행키 Key_33과 대응하고 있고, 열 번호 「4」와 행 번호 「4」는 발행키 Key_44와 대응하고 있다.
또, 구체적으로는 도시하고 있지 않으나, 정보 기억부(610)는 무효화 된 오퍼레이팅 시스템의 OS 고유키 매트릭스의 각 키 정보로부터 열 번호 및 행 번호를 추출한 OS 무효화 정보를 기억하고 있다.
<애플리케이션 매트릭스 무효화 리스트(611) 및 OS 매트릭스 무효화 리스트(621)>
애플리케이션 매트릭스 무효화 리스트(611)는 도 60에 도시하는 바와 같이, 16개의 행렬요소(911 ~ 926)를 4행 × 4열의 행렬상태로 배치하여 구성된다. 설명의 편의상, i행 j열째의 행렬요소에 저장되는 행렬요소를 변수 Mij를 사용하여 표현한다.
변수 Mij는 애플리케이션 발행키 매트릭스(601) 상의 i행 j열째의 발행키를 사용하여, 암호화 음악 복호프로그램(591)을 시작으로 하는 암호화 애플리케이션을 복호하기 위한 복호 키에 암호화 알고리즘 E2를 실시하여 생성된 것이다. 도면 중의 Enc(Key_ij, 복호 키)는 복호 키를, 발행키 Key_ij를 사용하여 암호화하여 생성된 것임을 나타내고 있다. 예를 들어, 행 번호 「1」, 열 번호 「1」의 행렬요소(911)인 변수 M11은 애플리케이션 발행키 매트릭스(601) 상의 행 번호 「1」, 열 번호 「1」의 행렬요소(661)의 발행키 Key_11을 사용하여, 복호 키를 암호화한 것이다.
여기서, 애플리케이션 무효화 리스트(611)는 정보 기억부(610)에 기억되어 있는 애플리케이션 무효화 정보가 애플리케이션 무효화 정보(604)만인 경우에 생성된 것이다. 이때, 애플리케이션 무효화 정보(604)에 포함되는 행 번호 및 열 번호와 대응하는 행렬요소 M21, M32, M33 및 M44는 복호 키 대신, 더미 데이터 「0000」을 발행키를 사용하여 암호화한 것이다.
OS 매트리스 무효화 리스트(621)는 애플리케이션 매트릭스 무효화 리스트(611)와 동일한 구성이고, 16개의 행렬요소를 4행 × 4열의 행렬상태로 배치한 것이다. i행 j열째의 행렬요소는 암호화 시큐어 OS(596)를 포함하는 각종 암호화 오퍼레이팅 시스템을 복호하기 위한 복호 키를 OS 발행키 매트릭스(602)의 i행 j열째에 배치된 발행키를 사용하여 암호화한 것이다. 다만, OS 무효화 정보에 포함되는 행 번호 및 열 번호와 대응하는 행렬요소는 상기 복호 키 대신 더미 데이터를 암호화한 것이다.
또, 구체적으로는 도시하고 있지 않으나, 애플리케이션 매트릭스 무효화 리 스트(611) 및 OS 매트릭스 무효화 리스트에는 그 신구를 나타내는 리스트 ID가 포함되어 있다.
(2) 제어부
제어부는 인터넷을 통해서 휴대전화로부터 리스트 요구를 수신한다. 리스트 요구를 수신하면 정보 기억부(610)로부터 OS 매트릭스 무효화 리스트(621) 및 애플리케이션 매트릭스 무효화 리스트(611)를 판독하고, 해시 제어부, 서명 생성부에 의해서 생성된 서명을 부가한 서명 부가 OS 매트릭스 무효화 리스트와 서명 부가 애플리케이션 매트릭스 무효화 리스트를 휴대전화에 송신한다. 이는 제 2 실시 예의 제어부(257)에 의한 서명 부가 OS 무효화 리스트 및 서명 부가 애플리케이션 무효화 리스트의 생성 및 송신과 동일하므로, 상세한 설명은 생략한다.
또, 제어부는 입력부를 통해서 조작자에 의해 새로운 애플리케이션 무효화 정보의 입력 및 애플리케이션 매트릭스 무효화 리스트의 생성지시를 접수한다. 접수한 지시에 따라서 새로 애플리케이션 매트릭스 무효화 리스트를 생성한다.
또, 새로운 OS 무효화 정보의 입력 및 OS 매트릭스 무효화 리스트의 생성지시를 접수한다. 접수한 지시에 따라서 새로 OS 매트릭스 무효화 리스트를 생성한다.
이하에, 도 61에 도시하는 흐름도를 사용하여 애플리케이션 매트릭스 무효화 리스트의 생성동작에 대하여 설명한다. 또한, 본 실시 예에서는 애플리케이션 발행키 매트릭스(601) 및 애플리케이션 매트릭스 무효화 리스트는 16개의 요소를 4 × 4의 행렬상태로 배치하여 구성되나, 이에 한정되는 것은 아니다. 흐름도에서는 훨 씬 일반적으로 p행 n열의 경우에 대하여 설명하고 있다 (p, n은 1 이상의 정수).
먼저, p × n개의 각 행렬요소 M11, M12 … Mpn에 복호 키를 대입한다(스텝 S 721). 열 번호를 저장하는 변수 j 및 행 번호를 저장하는 변수 i를 0으로 초기화한다(스텝 S 722).
이어서, 애플리케이션 무효화 정보를 판독하고(스텝 S 723), 변수 j에 1을 가산한다(스텝 S 724). 판독한 애플리케이션 무효화 정보의 열 번호 j와 대응하는 행 번호를 추출하고, 추출한 행 번호를 변수 i에 대입한다(스텝 S 726).
이어서, 행렬요소 Mij에 더미 데이터 「0000」을 대입한다(스텝 S 727). 이어서, 변수 j = n인가 여부를 판단한다(스텝 S 729). j = n이 아니라고 판단하면(스텝 S 729의 NO) 스텝 S 724로 복귀하여, j = n이 될 때까지 스텝 S 724 ~ 729를 반복한다.
변수 j = n이라고 판단한 경우(스텝 S 729의 YES), 정보 기억부(610)에 기억되어 있는 애플리케이션 무효화 정보 전부의 판독을 종료하였는가 여부를 판단하고(스텝 S 731), 판독을 종료하지 않았으면(스텝 S 731의 NO) 스텝 S 722로 복귀하여 다음의 애플리케이션 무효화 정보에 대해서도 스텝 S 722 ~ 731의 처리를 반복한다.
모든 애플리케이션 무효화 정보의 판독을 종료하였다고 판단하면(스텝 S 731의 YES), 변수 i에 0을 대입하고(스텝 S 734), 변수 j에 0을 대입한다(스텝 S 736). 이어서, 변수 i에 1을 가산하고(스텝 S 737), 변수 j에 1을 가산한다(스텝 S 739).
애플리케이션 발행키 매트릭스(601)의 i행 j열째의 발행키 Key_ij를 판독한다(스텝 S 741). 판독한 발행키 Key_ij를 사용하여 행렬요소 Mij에 암호화 알고리즘 E2를 실시하여, Enc(Key_ij, Mij)를 생성하고, 생성한 Enc(Key_ij, Mij)를 Mij에 대입한다(스텝 S 742).
변수 j = n이면(스텝 S 743의 YES), 스텝 S 744로 처리를 이동하고, 변수 j = n이 아니면(스텝 S 743의 NO), 스텝 S 739로 복귀하여 변수 j = n이 될 때까지 스텝 S 739 ~ 743의 처리를 반복한다.
이어서, 변수 i = p이면(스텝 S 744의 YES) 애플리케이션 매트릭스 무효화 리스트의 생성을 종료한다.
변수 i = p가 아니면(스텝 S 744의 NO) 스텝 S 736으로 복귀하여, i = p가 될 때까지 스텝 S 736 ~ 744의 처리를 반복한다.
또한, OS 매트릭스 무효화 리스트에 대해서도 OS 발행키 매트릭스와 OS 무효화 정보를 사용하여 동일한 순서로 생성한다.
3.2 휴대전화
본 실시 예의 휴대전화는 제 2 실시 예의 휴대전화(400)와 유사한 구성이다. 따라서, 여기에서는, 제 2 실시 예와 동일한 부분의 설명은 생략하고, 본 실시 예의 특징부분에 대해서만 설명한다.
(1) 시큐어 메모리(613)
시큐어 메모리(613)에는 일례로, 도 62에 도시하는 바와 같이, 암호화 음악 복호프로그램(591) 및 암호화 시큐어 OS(596)를 기억하고 있다.
암호화 음악 복호프로그램(591)은 제 2 실시 예의 음악 복호프로그램(446)과 동일한 음악 복호의 순서를 포함하는 음악 복호프로그램에 암호화 알고리즘 E3을 실시하여 생성된 것이다. 또, 암호화 음악 복호프로그램(591)은 헤더 부분에 음악 복호프로그램에 고유의 애플리케이션 고유키 매트릭스(592)와 무효 플래그(593)를 포함하고 있다. 애플리케이션 고유키 매트릭스(592)에 대해서는, 상기에서 서술한 바와 같다. 무효 플래그(593)는 상기 음악 복호프로그램이 무효한가 여부를 나타내는 플래그이며, 「0」이면 유효함을, 「1」이면 무효함을 나타내고 있다.
암호화 시큐어 OS(596)는 제 2 실시 예의 시큐어 OS(441)와 동일한 오퍼레이팅 기능을 갖는 시큐어 OS에 암호화 알고리즘 E3을 실시하여 생성된 것이다. 암호화 시큐어 OS(596)는 상기 시큐어 OS에 고유의 OS 고유키 매트릭스(597) 및 무효 플래그(598)를 헤더 부분에 포함하고 있다. OS 고유키 매트릭스(597)에 대해서는 상기에서 서술한 바와 같다.
무효 플래그(598)는 시큐어 OS가 무효한가 여부를 나타내는 플래그이며, 「0」이면 유효함을, 「1」이면 무효함을 나타내고 있다.
(2) 메모리 보호부(571)
메모리 보호부(571)는 도 62에 도시하는 바와 같이, 무효화 리스트 기억부(572), 무효화 리스트 갱신부(575), 애플리케이션 검증부(578), 애플리케이션 무효화부(579), OS 검증부(581), OS 무효화부(582) 및 암호·복호부(586)로 구성된다.
무효화 리스트 기억부(572)는 애플리케이션 매트릭스 무효화 리스트(573) 및 OS 매트릭스 무효화 리스트(574)를 기억하고 있다. 애플리케이션 매트릭스 무효화 리스트(573) 및 OS 매트릭스 무효화 리스트(574)는 무효화 리스트 발행장치의 정보 기억부(610)에 기억되어 있는 애플리케이션 매트릭스 무효화 리스트(611) 및 OS 매트릭스 무효화 리스트와 동일한 구성이다.
무효화 리스트 갱신부(575)의 동작은 제 2 실시 예의 무효화 리스트 갱신부(424)와 동일하며, 애플리케이션 무효화 리스트 및 OS 무효화 리스트 대신, 애플리케이션 매트릭스 무효화 리스트 및 OS 매트릭스 무효화 리스트를 갱신한다.
애플리케이션 무효화부(579) 및 OS 무효화부(582)의 동작은 제 2 실시 예의 애플리케이션 무효화부(429) 및 OS 무효화부(432)와 동일하므로, 여기에서는 다시 설명하지 않는다.
<애플리케이션 검증부(578) 및 OS 검증부(581)>
애플리케이션 검증부(578)는 암호화 음악 복호프로그램(591)에 포함되는 애플리케이션 고유키 매트릭스(592) 및 무효화 리스트 기억부(572)에 기억되어 있는 애플리케이션 매트릭스 무효화 리스트(573)를 사용하여, 암호화 음악 복호프로그램(591)의 복호 키를 생성한다. 정당하게 복호 키를 생성할 수 있었던 경우에는, 음악 복호프로그램이 유효하다고 판정하고, 정당하게 생성할 수 없었던 경우에는 음악 복호프로그램이 무효하다고 판단한다. 상기의 음악 복호프로그램의 검증의 상세한 순서에 대해서는 후에 설명한다.
유효하다고 판단하면 암호·복호(586)에 생성한 복호 키를 출력하고, 음악 복호프로그램(176)의 복호를 지시한다.
무효하다고 판단하면 애플리케이션 무효화부(579)에 무효화를 지시한다.
OS 검증부(581)는 애플리케이션 검증부(578)와 동일하게 하여, 암호화 시큐어 OS(596)를 복호하여 생성되는 시큐어 OS가 유효한가 무효한가를 판정한다. 여기에서는, 애플리케이션 고유키 매트릭스(592), 애플리케이션 매트릭스 무효화 리스트(573) 대신, OS 고유키 매트릭스(597), OS 매트릭스 무효화 리스트(574)를 사용한다.
<암호·복호부(586)>
암호·복호부(586)는 OS 검증부(581)로부터 암호화 시큐어 OS(596)의 복호 키를 접수하여 복호를 지시한다. 복호를 지시하면 수신한 복호 키를 사용하여 시큐어 메모리(613) 상의 암호화 시큐어 OS(596)에 복호 알고리즘 D3을 실시하여 시큐어 OS를 생성한다.
또, 애플리케이션 검증부(578)로부터 암호화 음악 복호프로그램(591)의 복호 키를 수신하여 복호를 지시한다. 수신한 복호 키를 사용하여 암호화 음악 복호프로그램(591)에 복호 알고리즘 D3를 실시하여 음악 복호프로그램을 생성한다.
여기서, D3은 암호화 알고리즘 E3에 의해서 생성된 암호문을 복호하는 알고리즘이며, 일례로, DES, AES(Advanced Encryption Standard) 등을 사용한다.
또, 스위칭제어부(576)로부터 출력되는 시큐어 메모리(613)와 버스(130)의 절단을 지시하는 절단지시를 검출한다. 절단지시를 검출하면 수신한 복호 키에 의해서, 음악 복호프로그램 및 시큐어 OS를 암호화하여 암호화 음악 복호프로그램(591) 및 암호화 시큐어 OS(596)를 생성한다.
(3) 메모리 보호부(571)에 의한 검증동작
메모리 보호부(571)에 의한 시큐어 메모리(613) 상의 프로그램의 검증동작에 대하여 도 63의 흐름도를 사용하여 설명한다.
메모리 보호부(571)는 접속지시를 수신한다(스텝 S 701). 접속지시를 수신하면 무효화 리스트 갱신부(575)는 인터넷을 통해서 무효화 리스트 발행장치로부터 최신의 애플리케이션 매트릭스 무효화 리스트와 OS 매트릭스 무효화 리스트를 취득하여, 무효화 리스트 기억부(572)에 기억되어 있는 애플리케이션 매트릭스 무효화 리스트(573) 및 OS 매트릭스 무효화 리스트(574)를 갱신한다(스텝 S 702). 무효화 리스트 갱신부(575)에 의한 스텝 S 702의 처리는 제 2 실시 예의 무효화 리스트 갱신부(424)에 의한 스텝 S 672 ~ 679(도 49)의 처리와 동일하고, OS 무효화 리스트를 OS 매트릭스 무효화 리스트로 치환하여, 애플리케이션 무효화 리스트를 애플리케이션 매트릭스 무효화 리스트로 변환하면 된다.
이어서, OS 검증부(581)는 시큐어 OS의 검증을 행하여(스텝 S 703), 시큐어 OS가 유효하다고 판정되면(스텝 S 706의 YES), 암호·복호부(586)로 암호화 시큐어 OS(596)의 복호를 지시하고, 암호·복호부(586)는 암호화 시큐어 OS(596)를 복호하여, 시큐어 OS를 생성한다(스텝 S 707).
시큐어 OS가 무효하다고 판정되면(스텝 S 706의 NO), OS 무효화부(582)에 지시하여 무효 플래그(598)를 「1」로 설정한다(스텝 S 709).
이어서, 애플리케이션 검증부(578)는 음악 복호프로그램이 유효한가 여부를 검증한다(스텝 S 711). 유효하다고 판정되면(스텝 S 712의 YES), 암호·복호 부(586)는 암호화 음악 복호프로그램(591)을 복호하여 음악 복호프로그램을 생성한다(스텝 S 713).
무효하다고 판정되면(스텝 S 712의 NO), 애플리케이션 무효화부(579)는 무효 플래그(593)를 「1」로 설정한다(스텝 S 716).
(4) 음악 복호프로그램의 검증
이하에, 도 64의 흐름도를 사용하여, 애플리케이션 검증부(578)에 의한 음악 복호프로그램의 검증처리에 대하여 설명한다. 이는 도 63의 스텝 S 711의 상세이다. 본 실시 예에서는 애플리케이션 매트릭스 무효화 리스트(573)는 4행 × 4열의 행렬을 구성하고 있고, 애플리케이션 고유키 매트릭스(592)는 4개의 키 정보를 포함하여 구성되어 있으나, 여기에서는 훨씬 일반적으로, 애플리케이션 매트릭스 무효화 리스트(573)가 n행 p열의 매트릭스를 구성하고 있고, 애플리케이션 고유키 매트릭스(592)가 p개의 키 정보로 구성되는 경우에 대하여 설명한다.
애플리케이션 검증부(578)는 애플리케이션 고유키 매트릭스(572)를 판독한다(스텝 S 731). 설명의 편의상, 행 번호를 나타내는 변수 i와 열 번호를 나타내는 변수 j를 도입하여 설명한다.
애플리케이션 검증부(578)는 변수 j에 1을 대입한다(스텝 S 732). 애플리케이션 고유키 매트릭스(592)의 열 번호 j와 대응하는 행 번호를 변수 i에 대입한다(스텝 S 733).
이어서, 애플리케이션 매트릭스 무효화 리스트(573)로부터 행렬요소 Mij를 판독한다(스텝 S 736). 애플리케이션 고유키 매트릭스(592)로부터 발행키 Key_ij를 추출하고, 추출한 발행키 Key_ij를 사용하여, 판독한 행렬요소 Mij에 복호 알고리즘 D2를 실시하여 복호한다(스텝 S 737). 복호결과가 「0000」가 아니면(스텝 S 739의 NO) 음악 복호프로그램이 유효하다고 판정하고(스텝 S 741), 복호결과, 즉 암호화 음악 복호프로그램(591)의 복호 키를 암호·복호부(586)에 출력한다(스텝 S 742).
처리결과가 「0000」이면(스텝 S 739의 YES), 이어서, 변수 j = p인가 여부를 판단하여, j = p가 아니면(스텝 S 744의 NO) 변수 j에 1을 가산하고(스텝 S 747), 스텝 S 733으로 복귀한다.
변수 j = p이면(스텝 S 744의 YES) 음악 복호프로그램이 무효하다고 판정한다(스텝 S 746).
또한, 스텝 S 703의 OS 검증부(581)에 의한 시큐어 OS의 검증은 도 61의 흐름도의 애플리케이션 고유키 매트릭스를 OS 고유키 매트릭스로 치환하고, 애플리케이션 매트릭스 무효화 리스트를 OS 매트릭스 무효화 리스트로 치환한 것이므로 설명을 생략한다.
3.3 정리 및 효과
이상, 설명해 온 바와 같이, 제 3 실시 예에서 휴대전화의 시큐어 메모리(613) 상의 암호화 음악 복호프로그램(591) 및 암호화 시큐어 OS(596)는 각각에 애플리케이션 고유키 매트릭스(592), OS 고유키 매트릭스(597)를 포함하고 있다.
메모리 보호부(571)는 애플리케이션 매트릭스 무효화 리스트(573) 및 애플리케이션 고유키 매트릭스(592)에 의해 음악 복호프로그램이 유효한가 여부를 판정한 다. 유효한 경우에만 애플리케이션 매트릭스 무효화 리스트(573)로부터 복호 키를 생성할 수 있다.
시큐어 OS에 대해서도 마찬가지로, OS 매트릭스 무효화 리스트(574) 및 OS 고유키 매트릭스를 사용하여 유효한가 여부를 판정한다.
애플리케이션의 제조 메이커에서 복수의 애플리케이션을 동일한 암호키를 사용하여 동일한 방법으로 암호화하여 출하하고 있는 경우에 대하여 생각한다.
도 58의 애플리케이션 발행키 매트릭스(601)를 구성하는 16개의 키 중 각 애플리케이션에는 각 열로부터 1개씩 합계 4개의 발행키가 할당된다. 이때, 다른 애플리케이션에 할당되는 발행키가 4개 모두와 일치하지 않도록 할당된다. 일례로, 본 실시 예의 음악 복호프로그램에는 발행키 Key_11, Key_32, Key_23, Key_14가 할당되어 있고, 이들 발행키는 암호화 음악 복호프로그램(591)의 애플리케이션 고유키 매트릭스(592)에 포함된다.
음악 복호프로그램과 동일한 제조 메이커로부터 출하되는 애플리케이션(애플리케이션 B라고 부른다)에는 발행키 Key_21, Key_32, Key_33, Key_44 할당되어 있고, 암호화 애플리케이션 B의 애플리케이션 발행키 매트릭스에는 이들 4개의 발행키가 포함된다.
여기서, 출하 후에 애플리케이션 B가 무효화해야 할 프로그램임이 판명되면, 무효화 리스트 발행장치에는 애플리케이션 무효화 정보(604)가 추가된다. 애플리케이션 무효화 정보(604)는 애플리케이션 B에 할당된 4개의 발행키와 대응하는 열 번호와 행 번호로 구성되어 있다. 애플리케이션 무효화 정보(604)에 의거하여 생성된 애플리케이션 매트릭스 무효화 리스트(611)는 도 60에 도시하는 바와 같이, 행렬요소 M21, M32, M33 및 M44에 더미 데이터를 포함하고 있으므로, 암호화 애플리케이션 B에 할당된 4개의 발행 키로는 복호 키를 생성할 수 없다.
도 58에 도시하는 바와 같이, 음악 복호프로그램에도 Key_32가 할당되어 있으나, 도 64의 흐름도를 사용하여 설명한 검증동작에 의하면 그외의 발행키에 의해서 복호 키를 생성할 수 있다.
이와 같이, 각 애플리케이션에 복수의 발행키를 할당해 두고, 애플리케이션 무효화 리스트와 발행키를 사용하여 복호 키를 생성하는 구성이라면 동일한 방법으로 암호화되어 있어도, 무효화해야 할 애플리케이션만을 무효화할 수 있다.
또한, 암호·복호부(586)는 시큐어 메모리(613)와 버스를 절단할 때에 시큐어 OS 및 음악 복호프로그램을 시작으로 하는 애플리케이션을 다시 암호화한다. 따라서, 통상 메모리 상의 프로그램이 CPU를 사용하고 있는 사이, 시큐어 메모리(613) 상의 프로그램을 더욱 확실하게 보호할 수 있다. 또, 이와 같은 구성일 경우, 메모리 보호부는 물리적으로 버스와 시큐어 메모리(613)를 절단하지 않아도 된다.
3.4 변형 예
(1) 제 3 실시 예에서 메모리 보호부(571)는 스위칭제어부(106)로부터 접속지시를 받을 때마다 통신 제어부를 통해서, 최신의 OS 매트릭스 무효화 리스트 및 애플리케이션 매트릭스 무효화 리스트를 취득하여, 이를 갱신하고 시큐어 메모리(613) 상의 각 프로그램을 검증하고 있다. 그러나 OS 매트릭스 무효화 리스트 및 애플리케이션 매트릭스 무효화 리스트의 갱신, 시큐어 메모리(613) 상의 각 프로그램의 검증을 행하는 타이밍은 이에 한정되는 것은 아니다.
일례로, 휴대전화의 기동시에도 좋고, 하루에 1회와 같이, 정기적으로 행해도 된다. 또, 기동시에는 OS 매트릭스 무효화 리스트 및 애플리케이션 매트릭스 무효화 리스트의 갱신을 행하고, 기동시 이후에 접속지시를 수신했을 때에 프로그램의 검증을 행하는 것으로 해도 좋다.
또, 각 프로그램을 기동할 때, 예를 들어, 통상 OS로부터 시큐어 OS로의 스위칭처리시에는 시큐어 OS의 검증을 행하여, 시큐어 OS가 음악 복호프로그램을 기동할 때에 음악 복호프로그램의 검증을 행하는 것으로 해도 좋다.
또, 메모리 보호부(571)로부터 무효화 리스트 발행장치로 리스트 요구를 송신하고, 최신의 OS 매트릭스 무효화 리스트 및 애플리케이션 매트릭스 무효화 리스트를 취득하고 있으나, 새로 무효화해야 할 프로그램이 판명되어, OS 매트릭스 무효화 리스트 및 애플리케이션 매트릭스 무효화 리스트의 작성을 고쳐 재작성했을 때에 무효화 리스트 발행장치에서 휴대전화에 송신되는 것으로 해도 된다.
(2) 휴대전화는 인터넷을 통해서 최신의 OS 매트릭스 무효화 리스트 및 애플리케이션 매트릭스 무효화 리스트를 취득하고 있으나, 메모리카드 등의 기록매체로부터 취득해도 된다.
(3) 지금까지 본 발명의 하나의 실시 예로서 휴대전화에 대하여 설명하였으나, 이하에 설명한 바와 같은 LAN을 구성하는 통신기기인 것으로 해도 좋다.
LAN을 구성하는 기기 중 어느 하나가 최신의 무효화 리스트를 취득하여 다른 기기로 배포하는 것으로 해도 된다.
일례로, 도 65에 도시하는 바와 같은, 홈 네트워크를 형성하는 기기이다. 홈 네트워크는 PC(Personal Computer)(650), 노트 PC(651), DVD 플레이어(652), 홈 서버(653), 전자레인지(654)를 버스에 의해서 접속하여 구성된다.
각 기기는 통상의 오퍼레이팅 시스템이나 애플리케이션으로부터는 직접 액세스할 수 없는 시큐어 메모리를 구비하고 있고, 시큐어 메모리 상에 로드하여 실행하는 각종의 애플리케이션이나 오퍼레이팅 시스템의 유효성을 검증하는 기능을 갖는다.
홈 서버(653)는 인터넷(20)과 접속되어 있고, 정기적으로 무효화 리스트 발행장치(250)에 애플리케이션 무효화 리스트 및 OS 무효화 리스트를 요구한다. 인터넷을 통해서 무효화 리스트 발행장치(250)로부터 최신의 애플리케이션 무효화 리스트 및 OS 무효화 리스트를 취득한다. 취득한 무효화 리스트를 버스를 통해서 홈 네트워크를 구성하는 각 기기에 출력한다.
4. 제 4 실시 예
본 발명의 제 4 실시 예에 대하여 이하에 설명한다.
4.1 휴대전화의 구성
본 실시 예의 휴대전화는 제 1 실시 예의 휴대전화(100)와 마찬가지로, 디버거 IF, CPU(102), MMU, 2차 기억부, 스위칭제어부, 인터럽트 컨트롤러, 입력부, 표시부, 통상 메모리, 공유메모리, 시큐어 메모리(713), 메모리 보호부(701), 입출력부, 암호처리장치, 무선통신제어부, 마이크, 스피커, 통신부, 안테나, 버퍼, 부호 처리부, D/A 변환부로 구성되고, 각 회로는 버스에 접속되어 있다.
본 실시 예의 휴대전화에서 메모리 보호부(701) 및 시큐어 메모리(713) 이외의 각부의 구성 및 동작은 제 1 실시 예와 동일하므로 설명을 생략하고, 여기에서는 본 실시 예의 특징부분에 대해서만 설명한다.
(1) 시큐어 메모리(713)
시큐어 메모리(713)는 도 66에 도시하는 바와 같이, 음악 복호프로그램(704), 통신키 생성프로그램(706) 등의 시큐어 애플리케이션 및 시큐어 OS(707)를 기억하고 있다.
음악 복호프로그램(704)은 제 1 실시 예의 음악 복호프로그램(176)과 동일한 음악 복호의 처리순서를 포함하는 시큐어 애플리케이션이다.
통신키 생성프로그램(706)은 휴대전화가 인터넷을 통해서 콘텐츠의 송수신을 행할 때의 암호키를 생성하는 시큐어 애플리케이션이다.
시큐어 OS(707)는 제 1 실시 예의 시큐어 OS(171)와 동일한 오퍼레이팅 시스템이다.
여기서, 시큐어 메모리(713) 상의 각 프로그램은 시큐어 메모리 상에 기동되면 자신의 액세스 정보를 액세스 관리부(702)에 출력한다. 액세스 정보란 각 프로그램이 액세스할 수 있는 메모리 영역의 어드레스를 말한다.
(2) 메모리 보호부(701)
메모리 보호부(701)는 도 66에 도시하는 바와 같이, 액세스 관리부(702)와 신호 감시부(703)를 포함하여 구성된다.
액세스 관리부(702)는 시큐어 메모리(713) 상의 각 프로그램으로부터 액세스 정보를 수신하고, 수신한 액세스 정보를 해당하는 프로그램과 대응시켜서 기억하고 있다. 또, 각 프로그램별로 부정 액세스의 회수를 계수하는 카운터를 구비하고 있다.
신호 감시부(703)는 미리 각 프로그램의 부정 액세스가 허용되는 회수(허용 회수)를 기억하고 있다. 신호 감시부(703)는 시큐어 메모리(713)와 CPU 사이의 버스 상의 신호를 감시하고, CPU의 액세스 대상이 되고 있는 시큐어 메모리(713) 상의 어드레스를 검출한다.
이어서, 액세스 관리부(702)로부터 현재 실행 중인 프로그램의 액세스 정보를 판독하고, 판독한 액세스 정보와 검출한 어드레스를 비교한다. 검출한 어드레스가 판독한 액세스 정보가 나타내는 기억영역에 포함되어 있으면, 그대로 감시를 계속한다.
포함되어 있지 않으면, 액세스 관리부(702)가 해당하는 프로그램과 대응시켜서 기억하고 있는 카운터에 1을 가산한다. 이어서, 카운터와 기억하고 있는 허용 회수를 비교한다. 카운터가 허용 회수 이하이면 그대로 감시를 계속한다.
카운터가 허용 회수를 초과하고 있으면, 해당하는 프로그램이 부정하다고 판정한다.
여기서, 부정하다고 판정된 프로그램이 음악 복호프로그램(704)인 경우, 신호 감시부(703)는 강제적으로 음악 복호프로그램(704)의 실행을 중지하고, 시큐어 OS(707)에 CPU(102)의 실행권을 이동시킨다.
부정하다고 판정된 프로그램이 그외의 시큐어 애플리케이션인 경우도 동일하다.
부정하다고 판정된 프로그램이 시큐어 OS(707)인 경우, 신호 감시부(703)는 강제적으로 시큐어 OS(707)의 실행을 중지하고, CPU(102) 및 MMU를 클리어하여 스위칭제어부로 스위칭 지시를 출력한다.
4.2 정리 및 효과
이상, 설명해 온 바와 같이, 본 발명의 휴대전화는 시큐어 메모리(713)에 로드되어 있는 각 프로그램의 동작을 감시하여, 부정의 동작을 반복하는 프로그램의 실행을 중지한다. 이와 같이 함으로써, 만일, 시큐어 메모리(713) 중의 프로그램에 결함이 있는 경우나 실행 도중에 부정한 개찬이 더해진 경우라도 이들 프로그램의 실행을 정지할 수 있다.
4.3 제 4 실시 예의 변형 예
(1) 상기 실시 예에서는, 메모리 보호부(701)는 신호 감시부(703)에 의해 버스 상의 신호를 감시함으로써 부정한 동작을 검출하고 있으나, 이 대신 정기적으로 CPU의 프로그램 카운터 값을 감시하는 것으로 해도 좋다.
(2) 상기 실시 예에서는 시큐어 메모리(713) 상의 각 프로그램이 기동시에 각 프로그램별로 다른 액세스 정보를 액세스 관리부(702)에 출력하고, 신호 감시부(703)는 이들 액세스 정보를 기초로 하여 각 프로그램의 동작을 감시하고 있으나, 미리, 액세스 관리부(702)가 시큐어 메모리(713) 상의 액세스 금지영역을 나타내는 정보를 기억하고 있는 것으로 해도 좋다. 이 경우, 어느 하나의 프로그램이 실행 중이라도 금지영역에 액세스하려고 하면 신호 감시부는 CPU(102)에 의한 프로그램 실행을 중지하고, CPU(102) 및 MMU를 클리어 하여 스위칭제어부로 스위칭 지시를 출력한다.
(3) 본 실시 예에서 메모리 보호부(701)는 제 2 실시 예에서 설명한 바와 같이, 무효화 리스트 기억부, 애플리케이션 검증부, 애플리케이션 무효화부, OS 검증부, OS 무효화부를 구비하고 있고, 스위칭제어부로부터 접속지시를 받으면 시큐어 메모리 상의 각 프로그램이 유효한가 여부를 판정하는 것으로 해도 좋다.
이 구성에서, 신호 감시부(703)는 동작 도중에 부정한 동작을 행하는 프로그램을 발견하여 그 프로그램의 동작을 정지시키는 동시에, 무효화 리스트 기억부가 기억하고 있는 OS 무효화 리스트 또는 애플리케이션 무효화 리스트에 부정동작을 행한 프로그램과 대응하는 시큐어 OS ID 또는 애플리케이션 ID를 추가한다.
이와 같이 함으로써, 새로 발견된 무효한 프로그램을 다시 실행하지 않게 된다.
5. 제 5 실시 예
본 발명의 제 5 실시 예에 대하여 이하에 설명한다.
제 5 실시 예의 휴대전화(750)는 2장의 메모리카드를 장착한다. 메모리카드 중 한쪽에는 OS(오퍼레이팅 시스템) 및 각종 애플리케이션이 기억되어 있고, 휴대전화(750)는 이들 프로그램을 판독하여 실행한다. 설명의 편의상, 이 메모리카드를 통상 메모리카드(800)라고 부른다.
다른 한쪽의 메모리카드에는 보호되어야 할 처리를 행하는 프로그램이 암호 화되어 기억되어 있다. 각 프로그램은 프로그램 부분과 데이터 부분으로 구성된다. 설명의 편의상, 이 메모리카드를 시큐어 메모리카드(820)라고 부른다.
휴대전화(750)는 시큐어 메모리카드(820) 상의 각 프로그램이 다른 프로그램의 프로그램 부분을 판독하는 것은 허가하나, 다른 프로그램의 데이터 부분을 판독하는 것을 금지한다.
5.1 시큐어 메모리카드(820)
시큐어 메모리카드(820)는 도 67에 도시하는 바와 같이, 입출력부(821) 및 정보 기억부(830)로 구성된다.
시큐어 메모리카드(820)는 구체적으로는 마이크로 프로세서, RAM 및 ROM을 포함하여 구성되는 컴퓨터 시스템이고, 상기 RAM, ROM에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로 프로세서가 상기 컴퓨터 프로그램에 따라서 동작함으로써, 시큐어 메모리카드(820)는 그 기능의 일부를 달성한다.
입출력부(821)는 외부기기와의 사이에서 정보의 입출력을 행한다.
정보 기억부(830)는 시큐어 ID(850), 암호화 음악 복호프로그램(831), 암호화 키 생성프로그램(841) 등을 기억하고 있다.
시큐어 ID(850)는 시큐어 메모리카드(820)에 고유의 정보이고, 시큐어 메모리카드(820)가 시큐어 처리를 행하는 프로그램을 저장하고 있음을 나타내고 있다.
암호화 음악 복호프로그램(831)은 ID(832)「A」, 암호화 복호프로그램(834) 및 암호화 복호 데이터(836)를 포함한다. ID(832)「A」는 암호화 음악 복호프로그램(831)에 고유의 식별정보이다.
암호화 복호프로그램(834)은 음악데이터를 복호하는 순서를 포함하는 복호프로그램을 암호화하여 생성된 것이고, 암호화 복호 데이터(836)는 복호프로그램이 복호의 처리에 사용하는 파라미터 등의 데이터를 암호화한 것이다.
암호화 키 생성프로그램(841)은 ID(842)「B」, 암호화 생성프로그램(844), 암호화 키 데이터(846)를 포함하여 구성된다.
ID(842)「B」는 암호화 키 생성프로그램(841)에 고유의 식별정보이다. 암호화 생성프로그램(844)은 암호키를 생성하는 순서를 포함하는 생성프로그램을 암호화한 것이고, 암호화 키 데이터(846)는 상기 생성프로그램이 사용하는 파라미터 등의 데이터를 암호화한 것이다.
5.2 통상 메모리카드(800)
통상 메모리카드(800)는 도 68에 도시하는 바와 같이, 입출력부(801)과 정보 기억부(802)를 포함하여 구성된다.
입출력부(801)는 정보 기억부(802)와 외부 기기 사이에서 각종 데이터의 입출력을 행한다.
정보 기억부(802)는 음악 재생프로그램(808)을 시작으로 하는 각종 애플리케이션 및 OS(806)를 기억하고 있다. 정보 기억부(802)에 기억되어 있는 프로그램은 각각의 프로그램이 실행하는 처리의 순서를 포함하는 코드부와 데이터부로 구성된다. 또, 각각의 프로그램에 고유의 프로그램 ID를 가지고 있다. 일례로, OS(806)는 프로그램 ID「OS」를 갖고 있고, 음악 재생프로그램(808)은 프로그램 ID「E」를 가지고 있다.
5.3 휴대전화(750)
휴대전화(750)는 도 68에 도시하는 바와 같이, 디버거 IF(751), CPU(752), MMU(753), 인터럽트 컨트롤러(757), 입력부(758), 표시부(759), 메모리(761), 메모리 보호부(764), 입출력부 765, 입출력부 766, 무선통신제어부(768), 통신부(771), 안테나(772), 마이크(769), 스피커(770), 버퍼(773), 부호 처리부(774), D/A 변환부(776)를 버스(760)에 의해서 접속하여 구성된다.
디버거 IF(751), MMU(753), 인터럽트 컨트롤러(757), 입력부(758), 표시부(759), 무선통신제어부(768), 통신부(771), 안테나(772), 마이크(769), 스피커(770), 버퍼(773), 부호 처리부(774), D/A 변환부(776)의 동작 및 구성은 제 1 실시 예와 동일하므로 여기에서는 설명을 생략한다. 또, 메모리(761)는 각종 데이터 및 프로그램을 기억하고 있고, CPU(752)는 메모리(761), 통상 메모리(800) 및 시큐어 메모리카드(820)에 기억되어 있는 프로그램에 포함되는 명령을 1개씩 패치하고, 패치한 명령을 해독하여 실행한다.
이하에, 본 실시 예의 특징부분인 메모리 보호부(764), 입출력부 765, 입출력부 766에 대하여 설명한다.
(1) 입출력부 765 및 입출력부 766
입출력부 765 및 입출력부 766은 2매의 메모리카드 중 어느 하나와 접속되어, 메모리카드와 메모리 보호부(764) 사이에서 정보의 입출력을 행한다.
(2) 메모리 보호부(764)
메모리 보호부(764)는 도 69에 도시하는 바와 같이, 복호부(781), 복호 키 기억부(782), 액세스 제어부(783), 키 기억부(784), 메모리 정보 기억부(785) 및 ID 검출부(786)로 구성된다.
(2-1) 키 기억부(784)
키 기억부(784)는 암호화 음악 복호프로그램(831)의 복호 키 및 암호화 키 생성프로그램(841)의 복호 키를 각각의 프로그램의 ID와 대응시켜서 기억하고 있다.
(2-2) 복호부(781) 및 복호 키 기억부(782)
복호부(781)는 액세스 제어부(783)로부터 복호 지시 및 암호문을 수신한다. 복호 지시를 수신하면 복호 키 기억부(782)로부터 복호 키를 판독하고, 판독한 복호 키를 사용하여 암호화 데이터를 복호하여 평문을 생성한다. 생성한 평문을 CPU(752)에 출력한다.
여기서 복호부(781)가 복호하는 암호화 데이터는 시큐어 메모리카드(820)에 기억되어 있는 암호화 음악 복호프로그램(831), 암호화 키 생성프로그램(841)을 구성하는 암호화 데이터이다.
복호 키 기억부(782)는 복호부(781)가 사용하는 복호 키를 1개만 저장하고 있다.
(2-3) 메모리 정보 기억부(785)
메모리 정보 기억부(785)는 도 70에 도시하는 바와 같이, 시큐어 메모리 정보 테이블(811) 및 통상 메모리 정보 테이블(861)을 기억하고 있다.
시큐어 메모리 정보 테이블(811)은 복수의 시큐어 메모리 정보(812, 813 …) 로 구성된다. 각 시큐어 메모리 정보는 프로그램 ID, 코드 어드레스 및 데이터 어드레스를 포함한다.
프로그램 ID는 시큐어 메모리카드(820)에 기억되어 있는 각 프로그램의 ID이다. 코드 어드레스는 시큐어 메모리카드(820) 내에 기억되어 있는 암호화 애플리케이션의 프로그램 부분이 저장되어 있는 영역을 나타내는 어드레스이다. 데이터 어드레스는 암호화 애플리케이션의 데이터 부분이 저장되어 있는 영역을 나타내는 어드레스이다.
구체적으로는, 시큐어 메모리 정보(812)는 프로그램 ID로 암호화 음악 복호프로그램(831)의 ID「A」(832)와, 코드 어드레스로 암호화 복호프로그램(834)이 기억되어 있는 어드레스 「A000 ~ A111」과, 데이터 어드레스로 암호화 복호 데이터(836)가 기억되어 있는 어드레스 「A222 ~ A333」을 포함하고 있다.
시큐어 메모리 정보(813)는 프로그램 ID로 암호화 키 생성프로그램(841)의 ID 「B」(842)와, 코드 어드레스로 암호화 생성프로그램(844)이 기억되어 있는 어드레스 「A444 ~ A555」와, 데이터 어드레스로 암호화 키 데이터(846)가 기억하고 있는 어드레스 「A666 ~ A777」을 포함하고 있다.
통상 메모리 정보 테이블(861)은 복수의 통상 메모리 정보(862, 863 …)를 포함하여 구성되고, 각 통상 메모리 정보는 프로그램 ID, 코드 어드레스 및 데이터 어드레스를 포함한다.
프로그램 ID는 통상 메모리카드(800) 상에 기억되어 있는 프로그램의 ID이고, 코드 어드레스는 프로그램 ID와 대응하는 프로그램의 프로그램 부분이 기억되 어 있는 영역을 나타내는 어드레스이며, 데이터 어드레스는 데이터 부분이 기억되어 있는 영역의 어드레스이다.
구체적으로, 통상 메모리 정보(862)는 통상 메모리카드(800) 상에 기억되어 있는 OS(806)와 대응하고 있고, 통상 메모리 정보(863)는 음악 재생프로그램(808)과 대응하고 있다.
(2-4) ID 검출부(786)
ID 검출부(786)는 CPU(752)의 프로그램 카운터(이하 PC)를 항시 감시하고 있고, CPU(752)가 시큐어 메모리카드(820) 상의 프로그램을 실행하고 있는 사이에는 CPU(752)가 실행 중인 프로그램을 나타내는 프로그램 ID를 기억하고 있다.
이하에, 도 71의 흐름도를 사용하여 ID 검출부(786)의 동작에 대하여 설명한다. 또한, 설명의 편의상 스텝 S 801부터 설명을 개시한다. 이때, CPU(752)는 통상 메모리카드(800) 또는 메모리(761) 상에 기억되어 있는 프로그램을 실행하고 있다.
ID 검출부(786)는 PC를 감시하고(스텝 S 801), 메모리 정보 기억부(785)가 기억하고 있는 시큐어 메모리 정보 테이블(811) 및 통상 메모리 정보 테이블(861)에 포함되는 각 프로그램의 코드 어드레스와, PC가 나타내는 어드레스를 비교함으로써 PC가 나타내는 어드레스가 시큐어 메모리카드(820) 상의 어드레스인가 여부를 판단한다(스텝 S 802).
시큐어 메모리카드(820) 상의 어드레스가 아니면(스텝 S 802의 NO), PC의 감시를 계속한다.
시큐어 메모리카드(820) 상의 어드레스라고 판단하면(스텝 S 802의 YES), 이 어서, PC로부터 검출한 어드레스와 대응하는 시큐어 메모리 정보를 시큐어 메모리 정보 테이블(811)로부터 선택하고, 선택한 시큐어 메모리 정보에 포함되는 프로그램 ID를 추출한다(스텝 S 803). 추출한 프로그램 ID를 기억한다(스텝 S 804). 이어서, 액세스 제어부(783)로 시큐어 메모리카드(820) 상의 프로그램의 실행이 개시됨을 나타내는 시큐어 액세스 통지를 출력한다(스텝 S 805).
이어서, PC를 감시하고(스텝 S 806), PC에 저장되어 있는 어드레스가 시큐어 메모리카드(820) 상의 어드레스인가 여부를 판단한단(스텝 S 807).
시큐어 메모리카드(820) 상의 어드레스라고 판단하면(스텝 S 807의 YES), PC로부터 검출한 어드레스와 대응하는 시큐어 메모리 정보를 시큐어 메모리 정보 테이블(811)로부터 선택하고, 선택한 시큐어 메모리 정보에 포함되는 프로그램 ID를 추출한다(스텝 S 809). 추출한 프로그램 ID와 ID 검출부(786) 자신이 기억하고 있는 프로그램 ID를 비교한다. 양자가 일치하고 있으면(스텝 S 811의 YES), 스텝 S 806으로 복귀하여 PC의 감시를 계속한다.
양자가 일치하고 있지 않은 경우(스텝 S 811의 NO), 기억하고 있는 프로그램 ID를 추출한 프로그램 ID로 치환하여(스텝 S 812) 스텝 S 806으로 복귀한다.
스텝 S 807에서 시큐어 메모리카드(820) 상의 어드레스가 아니라고 판단하면(스텝 S 807의 NO), ID 검출부(786) 자신이 기억하고 있는 프로그램 ID를 소거하여(스텝 S 814) 스텝 S 801로 복귀한다.
(2-5) 액세스 제어부(783)
액세스 제어부(783)는 미리 시큐어 메모리카드(820)에 기록되어 있는 시큐어 ID를 기억하고 있다.
입출력부 765 및 입출력부 766을 통해서 메모리카드가 장착된 것을 검출한다. 메모리카드의 장착을 검출하면 메모리카드에 기록되어 있는 데이터를 검색한다. 기억하고 있는 시큐어 ID와 동일한 시큐어 ID(850)를 검출한 경우, 그 메모리카드가 시큐어 메모리카드(820)임을 검지한다. 여기에서는 입출력부(265)가 통상 메모리카드(800)와 접속되어 있고, 시큐어 메모리카드(820)가 시큐어 메모리카드(820)와 접속되어 있는 경우를 상정한다.
액세스 제어부(783)는 입출력부(765)를 통해서 통상 메모리카드(800)의 장착을 검출하면 입출력부(765)를 통해서, 통상 메모리카드(800)에 기억되어 있는 정보를 서치하여 통상 메모리 정보 테이블을 생성하고, 생성한 통상 메모리 정보 테이블을 메모리 정보 기억부(785)에 저장한다.
또, 입출력부(766)를 통해서 시큐어 메모리카드(820)의 장착을 검출하면, 입출력부(766)를 통해서 시큐어 메모리카드(820)에 기억되어 있는 정보를 서치하여, 시큐어 메모리 정보 테이블을 생성하고, 생성한 시큐어 메모리 정보 테이블을 메모리 정보 기억부(785)에 기록한다.
액세스 제어부(783)는 CPU(752)가 통상 메모리카드(800)에 액세스할 때에, CPU(752)로부터 출력되는 신호(이하, 액세스 신호라고 부른다)를 그대로 통상 메모리카드(800)로 중계하고, 또, 통상 메모리카드(800)로부터 출력되는 데이터를 수신하고, 수신한 데이터를 CPU(752)에 출력한다.
CPU(752)가 시큐어 메모리카드(820)로 액세스할 경우에는, 액세스 신호로부 터 액세스 처의 어드레스를 추출하고, 추출한 어드레스에 의해서 시큐어 메모리카드(820) 데이터의 판독 또는 판독금지를 행한다. 이와 같은 액세스 제어부(783)의 동작에 대하여, 도 71, 72에 도시하는 흐름도를 사용하여 상세하게 설명한다. 또한, 설명의 편의상 스텝 S 821부터 설명을 시작한다. 이때, CPU(752)는 통상 메모리카드(800) 또는 메모리(761) 상의 프로그램을 실행하고 있다.
액세스 제어부(783)는 CPU(752)와 통상 메모리카드(800) 사이에서 데이터의 입출력을 중계한다(스텝 S 821).
ID 검출부(786)로부터 시큐어 메모리카드(820) 상의 프로그램의 실행이 개시된 것을 나타내는 시큐어 액세스 통지를 수신한다(스텝 S 805).
시큐어 액세스 통지를 수신하면 액세스 제어부(783)는 디버거 IF(751)를 무효화하고(스텝 S 823), ID 검출부(786)에 기억되어 있는 프로그램 ID를 판독한다(스텝 S 824). 판독한 프로그램 ID와 대응하는 복호 키를 키 기억부(784)로부터 판독하고(스텝 S 826), 판독한 복호 키를 복호 키 기억부(782)에 기록한다(스텝 S 827).
이어서, CPU(752)로부터 출력되는 액세스 신호를 수신하고, 수신한 액세스 신호로부터 액세스 처의 어드레스를 검출한다(스텝 S 829).
액세스 처의 어드레스를 검출하면 ID 검출부(786)로부터 프로그램 ID를 판독한다(스텝 S 831). 프로그램 ID을 판독하면(스텝 S 832의 YES), 코드 어드레스 또는 데이터 어드레스에 검출된 액세스차 어드레스를 포함하는 시큐어 메모리 정보를 시큐어 메모리 정보 테이블(811)로부터 선택하고, 선택한 시큐어 메모리 정보로부 터 프로그램 ID를 추출한다(스텝 S 834).
추출한 프로그램 ID와 ID 검출부(786)로부터 판독한 프로그램 ID를 비교하여, 양자가 일치하고 있으면(스텝 S 836의 YES), 스텝 S 844로 처리를 이동한다.
양자가 일치하고 있지 않은 경우(스텝 S 836의 NO), 액세스 제어부(786)는 또한, 검출한 어드레스가 선택한 시큐어 메모리 정보의 코드 어드레스에 포함되어 있는 것인가, 데이터 어드레스에 포함되어 있는 것인가를 판정한다(스텝 S 838). 데이터 어드레스에 포함되어 있다고 판정된 경우(스텝 S 838의 NO), 액세스를 허가할 수 없음을 나타내는 에러 통지를 CPU(752)에 출력하고, 스텝 S 829로 복귀한다.
코드 어드레스에 포함된다고 판정한 경우(스텝 S 838의 YES), 추출한 프로그램 ID와 대응하는 복호 키를 키 기억부(784)로부터 판독하여, 복호 키 기억부(782)가 기억하고 있는 복호 키를 판독한 복호 키로 변경한다(스텝 S 842).
이어서, 입출력부(766)를 통해서 검출한 어드레스에 해당하는 기억영역에 기억되어 있는 정보를 판독한다(스텝 S 844). 판독한 정보의 복호를 복호부(781)에 지시하고(스텝 S 846), 스텝 S 829로 복귀한다.
스텝 S 832에서 ID 검출부(786)에 기억되어 있는 프로그램 ID가 존재하지 않는 경우(스텝 S 832의 NO), 액세스 제어부(783)는 복호 키 기억부(782)에 기억되어 있는 복호 키를 소거하여(스텝 S 851), 디버거 IF(751)를 유효하게 하고(스텝 S 852) 스텝 S 821로 복귀한다.
5.4 정리 및 효과
이상, 설명해 온 바와 같이, 본 발명의 휴대전화는 통상 메모리카드 및 시큐 어 메모리카드에 기록되어 있는 프로그램을 실행한다. 시큐어 메모리카드에 기억되어 있는 프로그램은 미리 암호화되어 있다.
메모리 보호부(764)는 CPU(752)가 시큐어 메모리카드(820)에 기억되어 있는 프로그램을 실행할 때에, 실행 중인 프로그램에 의해서 액세스를 허가하는 영역과 금지하는 영역을 관리하고 있다.
음악 복호프로그램이 실행되는 경우를 예로 설명하면, CPU(752)는 암호화 음악 복호프로그램(831)에 포함되는 암호화 음악 복호프로그램(831)이 기억되어 있는 영역과, 암호화 키 생성프로그램이 암호화 생성프로그램(844)이 기억되어 있는 영역에 액세스할 수는 있으나, 암호화 키 생성프로그램의 암호화 키 데이터(846)가 기억되어 있는 영역에는 액세스할 수 없다.
이와 같이 하여, 시큐어 메모리카드(820) 상의 각 애플리케이션은 다른 애플리케이션으로부터 자신의 데이터부에 액세스 되어, 부정하게 데이터를 판독하여 변경되는 것을 회피할 수 있다.
또, 시큐어 메모리카드(820)에 기억되어 있는 정보는 암호화되어 있으므로, 시큐어 메모리카드(820) 상의 프로그램 이외의 프로그램을 CPU(752)가 실행하고 있는 도중에 시큐어 메모리카드(820)에 액세스한 경우라도 해독할 수 없다. 따라서, 시큐어 메모리카드(820) 상의 데이터를 부정한 액세스로부터 보호할 수 있다.
5.5 제 5 실시 예에 관한 변형 예
상기 실시 예에서는 시큐어 메모리카드(820) 상의 시큐어 애플리케이션의 실행 중에 CPU(752)가 다른 애플리케이션의 데이터 부분에 액세스하려고 한 경우, 액 세스 제어부(783)는 CPU(752)에 에러 통지를 출력하고 있으나, 제 4 실시 예의 경우와 마찬가지로 다른 프로그램, 예를 들어, OS(806)에 CPU(752)의 실행권을 이동시키는 것으로 해도 된다. 이 경우, 액세스 제어부(783)는 복호 키 기억부(782)에 기억되어 있는 복호 키를 소거하고, OS(806)가 기억되어 있는 어드레스를 CPU(782)의 프로그램 카운터로 설정한다.
6. 그외의 변형 예
이상, 제 1 ~ 5 실시 예에 의해서 본 설명에 대하여 설명하였으나, 본 발명은 이들 실시 예에 한정되는 것은 아니며, 이하와 같은 경우도 포함한다.
(1) 본 발명은 상기 제 1 ~ 3 실시 예 및 변형 예를 실행하는 방법이어도 좋다.
(2) 또, 이들 방법을 컴퓨터에 의해 실현하는 컴퓨터 프로그램인 것으로 해도 좋고, 상기 컴퓨터 프로그램으로 이루어지는 디지털 신호인 것으로 해도 된다.
또, 본 발명은 상기 컴퓨터 프로그램 또는 상기 디지털 신호를 컴퓨터 판독 가능한 기록매체, 예를 들어, 플렉시블 디스크, 하드디스크, CD-ROM, MO, DVD, DVD-ROM, DVD-RAM, BD(Blu-ray Disc), 반도체 메모리 등에 기록한 것으로 해도 좋다. 또, 이들 기록매체에 기록되어 있는 상기 컴퓨터 프로그램 또는 상기 디지털 신호인 것으로 해도 된다.
또, 본 발명은 상기 컴퓨터 프로그램 또는 상기 디지털 신호를 전기통신회선, 무선 또는 유선통신회선, 인터넷을 대표로 하는 네트워크, 데이터 방송 등을 경유하여 전송하는 것으로 해도 된다.
또, 본 발명은 마이크로 프로세서와 메모리를 구비한 컴퓨터 시스템으로, 상기 메모리는 상기 컴퓨터 프로그램을 기억하고 있고, 상기 마이크로 프로세서는 상기 컴퓨터 프로그램에 따라서 동작하는 것으로 해도 된다.
또, 상기 프로그램 또는 상기 디지털 신호를 상기 기록매체에 기록하여 이송함으로써, 또는 상기 프로그램 또는 상기 디지털 신호를 상기 네트워크 등을 경유하여 이송함으로써, 독립된 다른 컴퓨터 시스템에 의해 실행하는 것으로 해도 된다.
(3) 상기 실시 예 및 상기 변형 예를 각각 조합하는 것으로 해도 된다.
본 발명을 구성하는 각 장치 및 기록매체는 보호될 필요가 있는 정보를 취급하는 산업, 예를 들어, 영상 및 음성을 포함하는 콘텐츠의 작성, 배급에 관한 산업 및 이들 정보를 취급하는 전기기기를 제조하여 판매하는 산업에서, 경영적으로 또 계속적 및 반복적으로 사용할 수 있다. 또, 본 발명을 구성하는 각 장치 및 기록매체는 전기기기 제조산업에서, 경영적으로 또 계속적 및 반복적으로 제조하여 판매할 수 있다.

Claims (61)

  1. 보호대상인 시큐어 리소스(secure resource)의 이용이 허가되는 시큐어 모드secure mode)와, 보호대상 이외의 통상 리소스(normal resource)의 이용만이 허가되는 통상 모드(normal mode)를 스위칭(switching)하여 프로그램을 실행하는 데이터 처리장치로,
    상기 통상 리소스를 이용하는 하나 이상의 처리순서로 구성되는 통상 프로그램(normal program)을 기억하고 있는 통상 기억수단과,
    상기 시큐어 리소스를 이용하는 하나 이상의 처리순서로 구성되고, 적어도 상기 통상 프로그램을 호출하는 호출명령을 포함하는 시큐어 프로그램(secure program)을 기억하고 있는 시큐어 기억수단과,
    시큐어 모드에서, 다음에 실행해야 할 명령이 상기 호출명령인가 여부를 판단하는 판단수단과,
    시큐어 모드에서 상기 호출명령이라고 판단되는 경우에, 당해 호출명령에 의해 호출되는 상기 통상 프로그램을 나타내는 식별정보를 출력하는 출력수단과,
    상기 호출명령이라고 판단되는 경우에, 시큐어 리소스를 보호하여, 시큐어 모드로부터 통상 모드로 스위칭하는 스위칭수단과,
    통상 모드에서 상기 식별정보를 수신하는 수신수단과,
    통상 모드에서, 수신한 상기 식별정보에 의해 지시되는 상기 통상 프로그램을 상기 통상 기억수단으로부터 판독하는 판독수단과,
    통상 모드에서 판독한 통상 프로그램에 따라서 동작하는 처리수단을 구비하는 것을 특징으로 하는 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 스위칭수단은, 상기 시큐어 프로그램을 제어하는 시큐어 오퍼레이팅 시스템(secure operating system)을 중단시키고, 상기 통상 프로그램을 제어하는 통상 오퍼레이팅 시스템(normal operating system)을 기동함으로써 시큐어 모드에서 통상 모드로 스위칭하는 것을 특징으로 하는 데이터 처리장치.
  3. 제 2 항에 있어서,
    상기 데이터 처리장치는 시큐어 모드 및 통상 모드 양쪽에서 액세스가 허가되는 공유기억영역을 구비하며,
    상기 출력수단은 시큐어 모드에서 상기 식별정보를 상기 공유기억영역에 기록함으로써 상기 식별정보를 출력하고,
    상기 수신수단은 통상 모드에서 상기 공유기억영역으로부터 상기 식별정보를 판독함으로써 상기 식별정보를 수신하는 것을 특징으로 하는 데이터 처리장치.
  4. 제 3 항에 있어서,
    상기 판독수단은 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 기억하고 있고, 수신한 상기 식별정보에 대응하는 위치정보에 의해 지시되는 존재위치로부터 상기 통상 프로그램을 판독하는 것을 특징으로 하는 데이터 처리장치.
  5. 제 3 항에 있어서,
    상기 통상 프로그램을 구성하는 하나의 처리순서는 라이브러리(library)를 구성하는 복수의 함수를 포함하고, 다른 처리순서는 상기 복수의 함수 중 어느 하나를 호출하며,
    상기 처리수단은, 상기 다른 처리순서에 따라서 동작하는 경우에, 당해 다른 순서에 의해 호출되는 함수에 따라서 동작하는 것을 특징으로 하는 데이터 처리장치.
  6. 제 2 항에 있어서,
    상기 데이터 처리장치는,
    시큐어 모드에서 상기 시큐어 프로그램의 상기 시큐어 기억수단으로의 기록을 나타내는 기록지시를 수신하는 지시취득수단과,
    시큐어 모드에서 상기 기록지시를 취득한 경우에 상기 시큐어 기억수단에 상기 시큐어 프로그램을 기록하고, 상기 기록이 종료되었음을 나타내는 기록종료정보를 출력하는 시큐어 로드수단을 더 포함하며,
    상기 스위칭수단은, 상기 기록종료정보가 출력된 경우, 시큐어 모드에서 통상 모드로 스위칭하고,
    상기 데이터 처리장치는, 통상 모드에서 상기 기록종료정보를 수신하고, 상기 통상 기억수단에 상기 통상 프로그램을 기록하는 통상 로드수단을 더 포함하는 것을 특징으로 하는 데이터 처리장치.
  7. 제 6 항에 있어서,
    상기 판독수단은, 통상 모드에서 상기 통상 로드수단에 의해 상기 통상 프로그램이 상기 통상 기억수단에 기록된 경우에, 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 더 기억하는 것을 특징으로 하는 데이터 처리장치.
  8. 제 6 항에 있어서,
    상기 데이터 처리장치는,
    시큐어 모드에서 상기 시큐어 프로그램의 삭제를 지시하는 삭제지시를 취득하는 삭제지시 취득수단과,
    상기 삭제지시를 취득한 경우에 시큐어 모드에서 상기 시큐어 프로그램을 상기 시큐어 기억수단에서 삭제하고, 상기 삭제가 종료되었음을 나타내는 삭제종료정보를 출력하는 시큐어 삭제수단을 더 포함하며,
    상기 스위칭수단은, 상기 삭제종료정보가 출력된 경우, 시큐어 모드에서 통상 모드로 스위칭하고,
    상기 데이터 처리장치는, 통상 모드에서 상기 삭제종료정보를 취득하고, 상 기 통상 기억수단으로부터 상기 통상 프로그램을 삭제하는 통상 삭제수단을 더 포함하는 것을 특징으로 하는 데이터 처리장치.
  9. 제 2 항에 있어서,
    상기 판독수단은 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 기억하고 있고, 수신한 상기 식별정보에 대응하는 위치정보에 의해 표시되는 존재위치로부터 상기 통상 프로그램을 판독하는 것을 특징으로 하는 데이터 처리장치.
  10. 제 2 항에 있어서,
    상기 데이터 처리장치는,
    상기 처리수단을 포함하는 당해 데이터 처리장치가 구비하는 하나 이상의 장치를 초기화하는 초기화 순서 및 상기 시큐어 오퍼레이팅 시스템을 기동하는 기동순서를 포함하는 부트 프로그램(boot program)을 기억하고 있는 부트 프로그램 기억수단과,
    상기 부트 프로그램 기억수단으로부터 상기 부트 프로그램을 판독하고, 판독한 상기 부트 프로그램에 따라서 상기 장치를 초기화하며, 초기화 완료 후에 시큐어 오퍼레이팅 시스템을 기동하는 초기화 수단을 더 구비하는 것을 특징으로 하는 데이터 처리장치.
  11. 제 2 항에 있어서,
    상기 데이터 처리장치는,
    통상 모드에서 상기 처리수단에 의한 처리결과와 상기 시큐어 프로그램을 나타내는 시큐어 식별정보를 출력하는 통상 출력수단을 더 포함하고,
    상기 스위칭수단은, 상기 처리결과가 출력된 경우에, 통상 모드에서 시큐어 모드로 스위칭하고,
    상기 데이터 처리장치는, 시큐어 모드에서 상기 처리결과와 상기 시큐어 식별정보를 수신하는 시큐어 수신수단과,
    수신한 상기 시큐어 식별정보에 대응하는 상기 시큐어 프로그램을 상기 통상 기억수단으로부터 판독하는 시큐어 판독수단을 더 포함하며,
    상기 처리수단은, 시큐어 모드에서, 상기 처리결과를 사용하여 상기 시큐어 프로그램에 따라서 동작하는 것을 특징으로 하는 데이터 처리장치.
  12. 제 2 항에 있어서,
    상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 시큐어 리소스와 상기 처리수단을 절단하는 것을 특징으로 하는 데이터 처리장치.
  13. 제 2 항에 있어서,
    상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 시큐어 리소스에 보유되어 있는 시큐어 정보를 암호화하는 것을 특징으로 하는 데이터 처 리장치.
  14. 제 13 항에 있어서,
    상기 시큐어 리소스에 보유되어 있는 상기 시큐어 정보는, 시큐어 모드에서 실행되며, 명령코드 부분과 데이터 부분과 스택 부분으로 구성되는 프로그램을 포함하고 있고,
    상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 명령코드 부분을 암호화하는 것을 특징으로 하는 데이터 처리장치.
  15. 제 13 항에 있어서,
    상기 시큐어 리소스에 보유되어 있는 상기 시큐어 정보는, 시큐어 모드에서 실행되며, 명령코드 부분과 데이터 부분과 스택 부분으로 구성되는 프로그램을 포함하고 있고,
    상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 데이터 부분을 암호화하는 것을 특징으로 하는 데이터 처리장치.
  16. 제 13 항에 있어서,
    상기 시큐어 리소스에 보유되어 있는 상기 시큐어 정보는, 시큐어 모드에서 실행되며, 명령코드 부분과 데이터 부분과 스택 부분으로 구성되는 프로그램을 포함하고 있고,
    상기 스위칭수단은 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 스택 부분을 암호화하는 것을 특징으로 하는 데이터 처리장치.
  17. 제 2 항에 있어서,
    상기 데이터 처리장치는 상기 처리수단의 동작을 감시하고 조작하는 디버그 장치로부터 디버그 조작신호를 접수하는 디버그 접수수단을 더 포함하고,
    상기 스위칭수단은, 시큐어 모드에서 통상 모드로 스위칭할 때에 상기 처리수단과 상기 디버그 접수수단을 접속하고, 통상 모드에서 시큐어 모드로 스위칭할 때에 상기 처리수단과 상기 디버그 접수수단을 절단하는 것을 특징으로 하는 데이터 처리장치.
  18. 제 1 항에 있어서,
    상기 판독수단은 상기 식별정보와 상기 통상 기억수단에서의 상기 통상 프로그램의 존재위치를 나타내는 위치정보를 대응시켜서 기억하고 있고, 수신한 상기 식별정보에 대응하는 위치정보에 의해 표시되는 존재위치로부터 상기 통상 프로그램을 판독하는 것을 특징으로 하는 데이터 처리장치.
  19. 제 1 항에 있어서,
    제 1 오퍼레이팅 시스템과 제 2 오퍼레이팅 시스템을 스위칭하며, 각 오퍼레이팅 시스템에서 생성되는 프로세스를 실행상태, 실행대기상태, 휴지상태 중 어느 하나의 상태로 천이시켜서 프로세스를 실행하고 관리하는 상기 데이터 처리장치로서,
    상기 제 1 오퍼레이팅 시스템에서 제 1 프로세스를 생성하는 제 1 생성수단과,
    상기 제 2 오퍼레이팅 시스템에서 상기 제 1 프로세스와 대응하는 제 2 프로세스를 생성하는 제 2 생성수단과,
    상기 제 1 오퍼레이팅 시스템에서 상기 제 1 프로세스의 상태천이를 검출하는 제 1 검출수단과,
    상기 제 1 오퍼레이팅 시스템에서 검출된 상태천이를 나타내는 천이정보를 출력하는 제 1 출력수단과,
    상기 제 1 오퍼레이팅 시스템을 상기 제 2 오퍼레이팅 시스템으로 스위칭하는 OS 스위칭수단과,
    상기 제 2 오퍼레이팅 시스템에서 상기 천이정보를 취득하는 제 2 취득수단과,
    취득한 상기 천이정보에 따라서 상기 제 2 프로세스의 상태를 천이시키는 제 2 천이수단을 구비하는 것을 특징으로 하는 데이터 처리장치.
  20. 제 19 항에 있어서,
    상기 데이터 처리장치는,
    상기 제 2 오퍼레이팅 시스템에서 상기 제 2 프로세스의 상태천이를 검출하 는 제 2 검출수단과,
    상기 제 2 오퍼레이팅 시스템에서 검출된 상태천이를 나타내는 천이정보를 출력하는 제 2 출력수단을 더 포함하고,
    상기 OS 스위칭수단은, 상기 제 2 오퍼레이팅 시스템을 상기 제 1 오퍼레이팅 시스템으로 스위칭하며,
    상기 데이터 처리장치는,
    상기 제 1 오퍼레이팅 시스템에서 상기 천이정보를 취득하는 제 1 취득수단과,
    취득한 상기 천이정보에 따라서 상기 제 1 프로세스의 상태를 천이시키는 제 1 천이수단을 더 포함하는 것을 특징으로 하는 데이터 처리장치.
  21. 제 20 항에 있어서,
    상기 데이터 처리장치는 제 1 오퍼레이팅 시스템 및 제 2 오퍼레이팅 시스템의 양쪽에서 액세스할 수 있는 공유기억영역을 구비하며,
    상기 제 1 출력수단은 상기 공유기억영역에 상기 천이정보를 기록함으로써 상기 천이정보를 출력하고,
    상기 제 2 취득수단은 상기 공유기억영역으로부터 상기 천이정보를 판독함으로써 상기 천이정보를 취득하는 것을 특징으로 하는 데이터 처리장치.
  22. 제 21 항에 있어서,
    상기 제 2 출력수단은 상기 공유기억영역에 상기 천이정보를 기록함으로써 상기 천이정보를 출력하고,
    상기 제 1 취득수단은 상기 공유기억영역으로부터 상기 천이정보를 판독함으로써 상기 천이정보를 취득하는 것을 특징으로 하는 데이터 처리장치.
  23. 제 22 항에 있어서,
    상기 데이터 처리장치는 상기 제 2 오퍼레이팅 시스템에서 관리되어 동작하는 장치를 포함하고,
    상기 제 2 프로세스는 상기 장치의 구동을 제어하는 장치구동 프로그램이며,
    상기 제 2 검출수단은 상기 장치의 동작에 수반하는 제 2 프로세스의 상태천이를 검출하는 것을 특징으로 하는 데이터 처리장치.
  24. 제 23 항에 있어서,
    상기 제 1 오퍼레이팅 시스템에서 상기 제 1 프로세스가 휴지상태에서 실행상태로 천이한 경우,
    상기 데이터 처리장치는 상기 장치로의 처리의뢰의 중복을 회피하는 배타처리를 행하는 상기 제 1 프로세스에 따라서 동작하고,
    상기 제 1 오퍼레이팅 시스템에서 상기 제 1 출력수단은 상기 배타처리가 종료된 후에 상기 천이정보를 출력하는 것을 특징으로 하는 데이터 처리장치.
  25. 제 23 항에 있어서,
    상기 데이터 처리장치는,
    제 1 오퍼레이팅 시스템 및 제 2 오퍼레이팅 시스템에서 인터럽트(interrupt)의 발생을 검출하는 인터럽트 검출수단과,
    상기 제 1 오퍼레이팅 시스템에서 인터럽트가 검출된 경우, 인터럽트 발생요인을 조사하는 인터럽트 조사수단과,
    상기 제 1 오퍼레이팅 시스템에서 인터럽트 조사수단에 의해 상기 장치에 의한 인터럽트라고 판단된 경우, 상기 제 1 프로세스를 휴지상태에서 실행상태로 천이시키는 인터럽트 천이수단을 더 포함하는 것을 특징으로 하는 데이터 처리장치.
  26. 제 25 항에 있어서,
    상기 데이터 처리장치는,
    상기 제 2 오퍼레이팅 시스템에서 인터럽트가 검출된 경우, 인터럽트의 검출을 나타내는 인터럽트 통지정보를 출력하는 통지수단을 더 포함하고,
    상기 OS 스위칭수단은 상기 제 2 오퍼레이팅 시스템을 상기 제 1 오퍼레이팅 시스템으로 스위칭하며,
    상기 제 1 취득수단은 상기 제 1 오퍼레이팅 시스템에서 상기 인터럽트 통지정보를 더 취득하고,
    상기 인터럽트 조사수단은, 제 1 오퍼레이팅 시스템에서 상기 인터럽트 통지정보를 취득한 경우, 인터럽트 발생요인을 더 조사하는 것을 특징으로 하는 데이터 처리장치.
  27. 제 26 항에 있어서,
    상기 통지수단은, 인터럽트가 검출된 경우, 상기 인터럽트 검출수단에 대하여 인터럽트 검출을 정지시키고,
    상기 제 1 취득수단은, 상기 인터럽트 통지정보를 취득한 경우, 상기 인터럽트 검출수단에 대하여 상기 정지를 해제하는 것을 특징으로 하는 데이터 처리장치.
  28. 제 1 항에 있어서,
    프로그램에 따라서 동작하는 상기 데이터 처리장치로서,
    복수의 처리순서로 구성되는 프로그램을 기억하고 있는 기억수단과,
    상기 기억수단에 기억되어 있는 상기 프로그램이 부정한 것인가 여부를 판단하는 정당성 판단수단과,
    부정한 것이라고 판단되는 경우에 상기 프로그램을 무효화하는 무효화 수단을 구비하는 것을 특징으로 하는 데이터 처리장치.
  29. 제 28 항에 있어서,
    상기 정당성 판단수단은,
    상기 기억수단에 기억되어 있는 상기 프로그램을 나타내는 프로그램 식별정보를 취득하는 프로그램 정보 취득부와,
    무효화 된 프로그램을 나타내는 무효화 식별정보를 취득하는 무효화 정보 취득부와,
    취득한 상기 프로그램 식별정보와 취득한 상기 무효화 식별정보가 일치하는가 여부를 판단하는 판단부를 포함하고,
    일치한다고 판단되는 경우에 상기 프로그램이 부정하다고 결정하는 것을 특징으로 하는 데이터 처리장치.
  30. 제 29 항에 있어서,
    상기 프로그램 정보 취득부는,
    상기 프로그램을 나타내는 프로그램 식별정보를 기억하고 있는 식별정보 기억부와,
    상기 식별정보 기억부로부터 상기 프로그램 식별정보를 판독함으로써 취득하는 판독부를 포함하고,
    상기 무효화 정보 취득부는,
    무효화 된 프로그램을 나타내는 무효화 식별정보를 기억하고 있는 무효화 정보 기억부와,
    상기 무효화 정보 기억부로부터 상기 무효화 식별정보를 판독하여 취득하는 판독부를 포함하는 것을 특징으로 하는 데이터 처리장치.
  31. 제 28 항에 있어서,
    상기 정당성 판단수단은, 상기 프로그램에 할당된 공개키의 정당성을 증명하는 공개키 증명서에 의거하여, 상기 프로그램이 부정한 것인가 여부를 판단하는 것을 특징으로 하는 데이터 처리장치.
  32. 제 31 항에 있어서,
    상기 정당성 판단수단은,
    상기 공개키를 식별하는 공개키 식별정보를 포함하는 상기 공개키 증명서를 기억하고 있는 증명서 기억부와,
    상기 공개키 증명서로부터 상기 공개키 식별정보를 취득하는 공개키 정보 취득부와,
    무효화 된 공개키를 나타내는 무효화 식별정보를 기억하고 있는 무효화 정보 기억부와,
    상기 무효화 정보 기억부로부터 무효화 식별정보를 판독하는 무효화 정보 판독부와,
    취득한 상기 공개키 식별정보와 판독한 상기 무효화 식별정보가 일치하는가 여부를 판단하는 판단부를 포함하고,
    일치한다고 판단되는 경우에 상기 프로그램이 부정하다고 결정하는 것을 특징으로 하는 데이터 처리장치.
  33. 제 32 항에 있어서,
    상기 정당성 판단수단은, 외부로부터 최신의 무효화 식별정보를 취득하고, 취득한 무효화 식별정보를 상기 무효화 정보 기억부에 기록하는 갱신부를 더 포함하는 것을 특징으로 하는 데이터 처리장치.
  34. 제 33 항에 있어서,
    상기 갱신부는 상기 기억수단으로의 액세스 요구를 검출할 때마다 최신의 무효화 식별정보를 취득하는 것을 특징으로 하는 데이터 처리장치.
  35. 제 33 항에 있어서,
    상기 갱신부는, CRL(Certificate Revocation List) 발행장치로부터 네트워크를 통해서 상기 무효화 식별정보를 수신하고, CRL 발행장치로부터 네트워크 및 서버장치를 통해서 상기 무효화 식별정보를 수신하거나, 또는 기록매체로부터 상기 무효화 식별정보를 판독함으로써 취득하는 것을 특징으로 하는 데이터 처리장치.
  36. 제 33 항에 있어서,
    상기 갱신부는, 외부로부터 상기 최신의 무효화 식별정보에 대하여 디지털 서명을 실시하여 생성된 서명 데이터를 취득하고, 취득한 서명 데이터에 서명 검증을 실시하여, 서명 검증이 성공한 경우, 취득한 상기 무효화 식별정보를 상기 무효화 정보 기억부에 기록하는 것을 특징으로 하는 데이터 처리장치.
  37. 제 31 항에 있어서,
    상기 정당성 판단수단은,
    적어도 당해 공개키에 대하여 디지털 서명을 실시하여 생성된 서명 데이터를 포함하는 상기 공개키 증명서를 기억하고 있는 증명서 기억부와,
    상기 증명서 기억부로부터 상기 공개키 증명서를 취득하는 공개키 증명서 취득부와,
    취득한 상기 공개키 증명서에 포함되는 서명 데이터에 서명 검증을 실시함으로써, 취득한 상기 공개키 증명서가 정당한 것인가 여부를 검증하는 검증부를 포함하고,
    상기 공개키 증명서가 정당한 것이 아니라고 판단되는 경우에, 상기 프로그램이 부정하다고 결정하는 것을 특징으로 하는 데이터 처리장치.
  38. 제 28 항에 있어서,
    상기 정당성 판단수단은, 적어도 2개의 공개키의 정당성을 각각 증명하는 적어도 2개의 공개키 증명서를 사용하여, 상기 기억수단에 기억되어 있는 상기 프로그램이 부정한 것인가 여부를 판단하는 것을 특징으로 하는 데이터 처리장치.
  39. 제 38 항에 있어서,
    상기 2개의 공개키는 상기 프로그램에 할당된 제 1 공개키 및 상기 데이터 처리장치 또는 상기 프로그램의 동작을 제어하는 오퍼레이팅 시스템에 할당된 제 2 공개키이며,
    상기 정당성 판단수단은,
    권위가 있는 인증기관의 비밀키를 사용하여 적어도 상기 제 2 공개키에 대하여 디지털 서명을 실시하여 생성된 제 2 서명 데이터와 상기 제 2 공개키를 포함하는 제 2 공개키 증명서와,
    상기 데이터 처리장치 또는 상기 오퍼레이팅 시스템의 비밀키를 사용하여 적어도 상기 제 1 공개키에 대하여 디지털 서명을 실시하여 생성된 제 1 서명 데이터와 상기 제 1 공개키를 포함하는 제 1 공개키 증명서를 기억하고 있는 증명서 기억부와,
    상기 증명서 기억부로부터 상기 제 1 공개키 증명서 및 상기 제 2 공개키 증명서를 취득하는 공개키 증명서 취득부와,
    취득한 상기 제 2 공개키 증명서에 포함되는 제 2 서명 데이터에 상기 인증기관의 공개키를 사용하여 서명 검증을 실시함으로써 취득한 상기 제 2 공개키 증명서가 정당한 것인가 여부를 검증하고, 정당하다고 판정된 경우에 상기 제 2 공개키 증명서로부터 상기 제 2 공개키를 취득하며, 취득한 상기 제 1 공개키 증명서에 포함되는 제 1 서명 데이터에 취득한 상기 제 2 공개키를 사용하여 서명 검증을 실시함으로써 취득한 상기 제 1 공개키 증명서가 정당한 것인가 여부를 검증하는 검증부를 포함하고,
    상기 제 2 공개키 증명서가 정당한 것이 아니라고 판단되는 경우 및 상기 제 1 공개키 증명서가 정당한 것이 아니라고 판단되는 경우에, 상기 프로그램이 부정 하다고 결정하는 것을 특징으로 하는 데이터 처리장치.
  40. 제 28 항에 있어서,
    상기 정당성 판단수단은 상기 기억수단에 대한 액세스 요구를 검출할 때마다 상기 판단을 하는 것을 특징으로 하는 데이터 처리장치.
  41. 제 40 항에 있어서,
    상기 정당성 판단수단은 상기 기억수단에 기억되어 있는 프로그램에 대한 액세스 요구를 검출할 때마다 상기 판단을 하는 것을 특징으로 하는 데이터 처리장치.
  42. 제 28 항에 있어서,
    상기 정당성 판단수단은 당해 데이터 처리장치에 전력공급이 개시된 직후에 상기 판단을 하는 것을 특징으로 하는 데이터 처리장치.
  43. 제 28 항에 있어서,
    암호화된 프로그램을 복호하여 실행하는 상기 데이터 처리장치로서,
    상기 기억수단은, 상기 프로그램 대신, 프로그램 키를 사용하여 상기 프로그램에 암호화 알고리즘이 실시되어 생성된 암호화 프로그램을 기억하고 있고,
    상기 정당성 판단수단은,
    p개의 암호키로부터 선택된 m개의 암호키를 기억하고 있는 암호키 기억부와,
    상기 m개의 암호키 각각을 사용하여 상기 프로그램 키 및 소정의 검지 정보 중 어느 하나가 암호화되어 생성된 m개의 암호화 정보를 m개의 상기 암호키에 대응시켜서 기억하고 있는 암호화 정보 기억부와,
    상기 m개의 암호키 각각을 사용하여 대응하는 암호화 정보에 복호 알고리즘을 실시하여 m개의 복호정보를 생성하는 복호부와,
    생성된 m개의 복호정보 전부가 상기 검지 정보인가 여부를 판단하는 판단부를 포함하고,
    생성된 m개의 복호정보 전부가 상기 검지 정보라고 판단되는 경우에, 상기 프로그램이 부정한 것이라고 결정하는 것을 특징으로 하는 데이터 처리장치.
  44. 제 43 항에 있어서,
    상기 p개의 암호키는 n행 m열(p = n × m)의 제 1 행렬의 각 요소 위치에 배치되어 있고, 상기 제 1 행렬의 각 열로부터 1개의 암호키가 선택됨으로써 상기 제 1 행렬로부터 m개의 암호키가 선택되며,
    상기 암호키 기억부는 상기 제 1 행렬에서 각 암호키가 배치된 요소 위치를 각 암호키에 대응시켜서 기억하고 있고,
    상기 암호화 정보 기억부는 n행 m열의 제 2 행렬에서 각 암호화 정보에 대응하는 암호키가 배치되어 있는 요소 위치와 같은 요소 위치에서 당해 암호화 정보를 기억하고 있으며,
    복호부는, 상기 암호키 기억부로부터 암호키와 대응하는 요소 위치를 판독하고, 상기 암호화 정보 기억부의 제 2 행렬에서 상기 판독한 요소 위치와 같은 요소 위치에 배치되어 있는 암호화 정보를 판독하며, 판독한 상기 암호키를 사용하여 판독한 상기 암호화 정보에 복호 알고리즘을 실시하는 것을 특징으로 하는 데이터 처리장치.
  45. 제 1 항에 있어서,
    상기 데이터 처리장치로서,
    데이터를 기억하기 위한 메모리 수단과,
    복수의 처리순서로 구성되는 프로그램에 따라서 동작하는 프로세서와,
    상기 메모리 수단과 상기 프로세서 사이에 배치되고, 상기 프로세서로부터 출력되는 상기 메모리 수단 앞으로 전송하는 전송 데이터가 전송제한조건을 만족하고 있는가 여부를 판단하여, 전송제한조건을 만족하고 있다고 판단하는 경우에는 상기 메모리 수단으로 전송하는 전송 데이터의 전송을 억제하고, 전송제한조건을 만족하고 있지 않다고 판단하는 경우에는 상기 메모리 수단으로 전송하는 전송 데이터의 전송을 행하는 감시수단을 구비하는 것을 특징으로 하는 데이터 처리장치.
  46. 제 45 항에 있어서,
    상기 감시수단은, 복수의 애플리케이션 프로그램별로 전송제한조건을 기억하고 있고, 상기 프로세서에 의해 실행되는 애플리케이션 프로그램별로 전송제한조건 을 선택하며, 선택한 전송제한조건을 사용하는 것을 특징으로 하는 데이터 처리장치.
  47. 제 46 항에 있어서,
    상기 전송제한조건은 상기 메모리 수단 내의 소정의 기억공간을 나타내는 어드레스 범위정보이고,
    상기 감시수단은, 상기 전송 데이터로부터 어드레스 정보를 추출하고, 추출한 어드레스 정보가 상기 어드레스 범위정보에 포함되는 경우에 상기 전송 데이터의 전송을 억제하는 것을 특징으로 하는 데이터 처리장치.
  48. 제 46 항에 있어서,
    상기 전송제한조건은 상기 메모리 수단 내의 소정의 기억공간에 액세스하는 액세스 회수의 상한을 나타내는 제한 회수이며,
    상기 감시수단은, 과거에 상기 기억공간에 액세스한 액세스의 누적 회수를 기억하고 있으며, 상기 전송 데이터로부터 어드레스 정보를 추출하고, 추출한 어드레스 정보가 상기 어드레스 범위정보에 포함되는 경우에 상기 누적 회수에 1을 가산하며, 가산하여 얻어진 가산 후 회수가 상기 제한 회수를 넘는 경우에 상기 전송 데이터의 전송을 억제하는 것을 특징으로 하는 데이터 처리장치.
  49. 제 46 항에 있어서,
    상기 감시수단은 상기 프로세서에 접속되는 버스 상에서 전송되는 상기 전송 데이터가 전송제한조건을 만족하고 있는가 여부를 판단하는 것을 특징으로 하는 데이터 처리장치.
  50. 제 46 항에 있어서,
    상기 메모리 수단은, 암호키를 사용하여, 상기 프로세서에 의해 실행되고 있는 현재 프로그램과는 다른 애플리케이션 프로그램의 코드부분과 데이터 부분이 각각 암호화되어 생성된 암호화 코드 및 암호화 데이터를 기억하고 있고,
    상기 전송제한조건은 상기 메모리 수단 내에서 상기 암호화 데이터가 저장되어 있는 기억공간을 나타내는 어드레스 범위정보이며,
    상기 감시수단은, 상기 암호화 코드 및 암호화 데이터를 복호하기 위한 복호 키를 기억하고 있으며, 상기 전송 데이터로부터 어드레스 정보를 추출하고, 추출한 어드레스 정보가 상기 암호화 코드가 저장되어 있는 기억공간을 나타내는 어드레스 범위 내에 있는 경우에, 상기 복호 키를 사용하여 상기 전송 데이터에 의해 표시되는 기억공간에 존재하는 암호화 코드를 복호하여 복호 코드를 생성하며, 생성한 복호 코드를 상기 프로세서로 전송하고, 추출한 어드레스 정보가 상기 어드레스 범위정보에 포함되는 경우에 전송 데이터의 전송을 억제하는 것을 특징으로 데이터 처리장치.
  51. 제 46 항에 있어서,
    상기 감시수단은, 전송제한조건을 만족하고 있다고 판단하는 경우에, 상기 프로세서에 의해 실행 중인 상기 프로그램을 식별하는 식별정보를 프로그램 무효화 리스트에 더 추가하는 것을 특징으로 하는 데이터 처리장치.
  52. 제 1 항에 있어서,
    상기 데이터 처리장치로서,
    데이터를 기억하기 위한 메모리 수단과,
    복수의 처리순서로 구성되는 프로그램에 따라서 동작하고, 다음에 실행대상이 되는 명령 어드레스가 저장되어 있는 프로그램 카운터를 구비하는 프로세서와,
    상기 프로그램 카운터에 저장되어 있는 어드레스가 소정의 어드레스 범위 내에 포함되는가 여부를 판단하여, 소정의 어드레스 범위 내에 포함된다고 판단하는 경우에, 상기 프로세서에 대하여 프로그램 카운터에 소정의 값을 저장하도록 지시하는 감시수단을 구비하고,
    상기 프로세서는 상기 지시를 수신하면 프로그램 카운터에 상기 소정의 값을 저장하는 것을 특징으로 하는 데이터 처리장치.
  53. 보호대상인 시큐어 리소스의 이용이 허가되는 시큐어 모드와, 보호대상 외의 통상 리소스의 이용만이 허가되는 통상 모드를 스위칭하여 프로그램을 실행하는 데이터 처리장치에서 사용되는 데이터 처리방법으로,
    상기 데이터 처리장치는, 상기 통상 리소스를 이용하는 하나 이상의 처리순 서로 구성되는 통상 프로그램을 기억하고 있는 통상 기억수단과, 상기 시큐어 리소스를 이용하는 하나 이상의 처리순서로 구성되며, 적어도 상기 통상 프로그램을 호출하는 호출명령을 포함하는 시큐어 프로그램을 기억하고 있는 시큐어 기억수단을 구비하고,
    상기 데이터 처리방법은,
    시큐어 모드에서 다음에 실행해야 할 명령이 상기 호출명령인가 여부를 판단하는 판단스텝과,
    시큐어 모드에서 상기 호출명령이라고 판단되는 경우에 당해 호출명령에 의해 호출되는 상기 통상 프로그램을 나타내는 식별정보를 출력하는 출력스텝과,
    상기 호출명령이라고 판단되는 경우에 상기 시큐어 리소스를 보호하여, 시큐어 모드에서 통상 모드로 스위칭하는 스위칭스텝과,
    통상 모드에서 상기 식별정보를 수신하는 수신스텝과,
    통상 모드에서 수신한 상기 식별정보에 의해 표시되는 상기 통상 프로그램을 상기 통상 기억수단으로부터 판독하는 판독스텝과,
    통상 모드에서 판독한 통상 프로그램에 따라서 동작하는 처리스텝을 포함하는 것을 특징으로 하는 데이터 처리방법.
  54. 제 53 항에 있어서,
    제 1 오퍼레이팅 시스템과 제 2 오퍼레이팅 시스템을 스위칭하고, 각 오퍼레이팅 시스템에서 생성되는 프로세스를 실행상태, 실행대기상태, 휴지상태 중 어느 하나의 상태로 천이시켜서 프로세스를 실행하고 관리하는 상기 데이터 처리방법으로서,
    상기 제 1 오퍼레이팅 시스템에서 제 1 프로세스를 생성하는 제 1 생성스텝과,
    상기 제 2 오퍼레이팅 시스템에서 상기 제 1 프로세스와 대응하는 제 2 프로세스를 생성하는 제 2 생성스텝과,
    상기 제 1 오퍼레이팅 시스템에서 상기 제 1 프로세스의 상태천이를 검출하는 제 1 검출스텝과,
    상기 제 1 오퍼레이팅 시스템에서 검출된 상태천이를 나타내는 천이정보를 출력하는 제 1 출력스텝과,
    상기 제 1 오퍼레이팅 시스템을 상기 제 2 오퍼레이팅 시스템으로 스위칭하는 OS 스위칭스텝과,
    상기 제 2 오퍼레이팅 시스템에서 상기 천이정보를 취득하는 제 2 취득스텝과,
    취득한 상기 천이정보에 따라서 상기 제 2 프로세스의 상태를 천이시키는 제 2 천이스텝을 포함하는 것을 특징으로 하는 데이터 처리방법.
  55. 제 53 항에 있어서,
    프로그램에 따라서 동작하는 상기 데이터 처리장치에서 사용되는 상기 데이터 처리방법으로서,
    상기 데이터 처리장치는 복수의 처리순서로 구성되는 프로그램을 기억하고 있는 기억수단을 구비하며,
    상기 기억수단에 기억되어 있는 상기 프로그램이 부정한 것인가 여부를 판단하는 정당성 판단스텝과,
    부정한 것이라고 판단되는 경우에 상기 프로그램을 무효화하는 무효화 스텝을 포함하는 것을 특징으로 하는 데이터 처리방법.
  56. 제 53 항에 있어서,
    상기 데이터 처리장치에서 사용되는 데이터 처리방법으로,
    상기 데이터 처리장치는 데이터를 기억하기 위한 메모리 수단과 복수의 처리순서로 구성되는 프로그램에 따라서 동작하는 프로세서를 구비하고,
    상기 데이터 처리방법은,
    상기 메모리 수단과 상기 프로세서 사이에서 상기 프로세서로부터 출력되는 상기 메모리 수단 앞으로 전송하는 전송 데이터가 전송제한조건을 만족하고 있는가 여부를 판단하여, 전송제한조건을 만족하고 있다고 판단하는 경우에는 상기 메모리 수단으로 전송하는 전송 데이터의 전송을 억제하고, 전송제한조건을 만족하고 있지 않다고 판단하는 경우에는 상기 메모리 수단으로 전송하는 전송 데이터의 전송을 행하는 감시스텝을 포함하는 것을 특징으로 하는 데이터 처리방법.
  57. 보호대상인 시큐어 리소스의 이용이 허가되는 시큐어 모드와, 보호대상 외의 통상 리소스의 이용만이 허가되는 통상 모드를 스위칭하여 프로그램을 실행하는 데이터 처리장치에서 사용되는 데이터 처리 프로그램으로,
    상기 데이터 처리장치는, 상기 통상 리소스를 이용하는 하나 이상의 처리순서로 구성되는 통상 프로그램을 기억하고 있는 통상 기억수단과, 상기 시큐어 리소스를 이용하는 하나 이상의 처리순서로 구성되며, 적어도 상기 통상 프로그램을 호출하는 호출명령을 포함하는 시큐어 프로그램을 기억하고 있는 시큐어 기억수단을 구비하며,
    상기 데이터 처리 프로그램은,
    시큐어 모드에서 다음에 실행해야 할 명령이 상기 호출명령인가 여부를 판단하는 판단스텝과,
    시큐어 모드에서 상기 호출명령이라고 판단되는 경우에 당해 호출명령에 의해 호출되는 상기 통상 프로그램을 나타내는 식별정보를 출력하는 출력스텝과,
    상기 호출명령이라고 판단되는 경우에 시큐어 리소스를 보호하여 시큐어 모드에서 통상 모드로 스위칭하는 스위칭스텝과,
    통상 모드에서 상기 식별정보를 수신하는 수신스텝과,
    통상 모드에서 수신한 상기 식별정보에 의해 표시되는 상기 통상 프로그램을 상기 통상 기억수단으로부터 판독하는 판독스텝과,
    통상 모드에서 판독한 통상 프로그램에 따라서 동작하는 처리스텝을 포함하는 것을 특징으로 하는 데이터 처리 프로그램.
  58. 제 57 항에 있어서,
    제 1 오퍼레이팅 시스템과 제 2 오퍼레이팅 시스템을 스위칭하고, 각 오퍼레이팅 시스템에서 생성되는 프로세스를 실행상태, 실행대기상태, 휴지상태 중 어느 하나의 상태로 천이시켜서 프로세스를 실행하고 관리하는 상기 데이터 처리 프로그램으로,
    상기 제 1 오퍼레이팅 시스템에서 제 1 프로세스를 생성하는 제 1 생성스텝과,
    상기 제 2 오퍼레이팅 시스템에서 상기 제 1 프로세스와 대응하는 제 2 프로세스를 생성하는 제 2 생성스텝과,
    상기 제 1 오퍼레이팅 시스템에서 상기 제 1 프로세스의 상태천이를 검출하는 제 1 검출스텝과,
    상기 제 1 오퍼레이팅 시스템에서 검출된 상태천이를 나타내는 천이정보를 출력하는 제 1 출력스텝과,
    상기 제 1 오퍼레이팅 시스템을 상기 제 2 오퍼레이팅 시스템으로 스위칭하는 OS 스위칭스텝과,
    상기 제 2 오퍼레이팅 시스템에서 상기 천이정보를 취득하는 제 2 취득스텝과,
    취득한 상기 천이정보에 따라서 상기 제 2 프로세스의 상태를 천이시키는 제 2 천이스텝을 포함하는 것을 특징으로 하는 데이터 처리 프로그램.
  59. 제 57 항에 있어서,
    프로그램에 따라서 작동하는 상기 데이터 처리장치에서 사용되는 상기 데이터 처리 프로그램으로,
    상기 데이터 처리장치는 복수의 처리순서로 구성되는 프로그램을 기억하고 있는 기억수단을 구비하고,
    상기 기억수단에 기억되어 있는 상기 프로그램이 부정한 것인가 여부를 판단하는 정당성 판단스텝과,
    부정한 것이라고 판단되는 경우에 상기 프로그램을 무효화하는 무효화 스텝을 포함하는 것을 특징으로 하는 데이터 처리 프로그램.
  60. 제 57 항에 있어서,
    상기 데이터 처리장치에서 사용되는 데이터 처리 프로그램으로,
    상기 데이터 처리장치는 데이터를 기억하기 위한 메모리 수단과 복수의 처리순서로 구성되는 프로그램에 따라서 동작하는 프로세서를 구비하고,
    상기 데이터 처리 프로그램은,
    상기 메모리 수단과 상기 프로세서 사이에서 상기 프로세서로부터 출력되는 상기 메모리 수단 앞으로 전송하는 전송 데이터가 전송제한조건을 만족하고 있는가 여부를 판단하고, 전송제한조건을 만족하고 있다고 판단하는 경우에는 상기 메모리 수단으로 전송하는 전송 데이터의 전송을 억제하고, 전송제한조건을 만족하고 있지 않다고 판단하는 경우에는 상기 메모리 수단으로 전송하는 전송 데이터의 전송을 행하는 감시스텝을 포함하는 것을 특징으로 하는 데이터 처리 프로그램.
  61. 제 57 항에 있어서,
    상기 데이터 처리 프로그램은,
    컴퓨터 판독 가능한 기록매체에 기록되어 있는 것을 특징으로 하는 데이터 처리 프로그램.
KR1020067012914A 2003-11-28 2004-11-26 데이터 처리장치 KR101037006B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003399055 2003-11-28
JPJP-P-2003-00399055 2003-11-28

Publications (2)

Publication Number Publication Date
KR20060107826A KR20060107826A (ko) 2006-10-16
KR101037006B1 true KR101037006B1 (ko) 2011-05-25

Family

ID=34631589

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067012914A KR101037006B1 (ko) 2003-11-28 2004-11-26 데이터 처리장치

Country Status (5)

Country Link
US (1) US7788487B2 (ko)
EP (1) EP1688816A4 (ko)
KR (1) KR101037006B1 (ko)
CN (1) CN1886712B (ko)
WO (1) WO2005052769A1 (ko)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2852777B1 (fr) * 2003-03-21 2005-06-10 Gemplus Card Int Procede de protection d'un terminal de telecommunication de type telephone mobile
EP1709510A1 (en) * 2004-01-22 2006-10-11 Koninklijke Philips Electronics N.V. Method of authorizing access to content
TWI258696B (en) * 2004-05-04 2006-07-21 Intervideo Digital Technology Computer system capable of rendering encrypted multimedia and method thereof
JP4794269B2 (ja) * 2004-11-08 2011-10-19 パナソニック株式会社 セキュアデバイスおよび中継端末
WO2006129641A1 (ja) * 2005-06-01 2006-12-07 Matsushita Electric Industrial Co., Ltd. コンピュータシステム及びプログラム生成装置
US20070016961A1 (en) * 2005-07-11 2007-01-18 Vogler Dean H Application revocation using an application revocation list in a portable electronic device
US8510846B1 (en) * 2006-06-29 2013-08-13 Google Inc. Data encryption and isolation
WO2008007305A2 (en) * 2006-07-12 2008-01-17 Koninklijke Philips Electronics N.V. Method and system for obfuscating a gryptographic function
US7698542B2 (en) * 2006-08-25 2010-04-13 Infineon Technologies Ag Circuit and method for comparing program counter values
JP2008123482A (ja) * 2006-10-18 2008-05-29 Matsushita Electric Ind Co Ltd 記憶媒体制御方法
DE102006057093B4 (de) * 2006-12-04 2008-10-02 Infineon Technologies Ag Vorrichtung zur Auswahl einer virtuellen Kartenanwendung
EP2122531B1 (en) 2007-01-19 2014-10-01 BlackBerry Limited Selectively wiping a remote device
JP4903071B2 (ja) * 2007-03-15 2012-03-21 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
US20080244753A1 (en) * 2007-03-30 2008-10-02 Motorola, Inc. Instruction Transform for the Prevention and Propagation of Unauthorized Code Injection
US8181038B2 (en) * 2007-04-11 2012-05-15 Cyberlink Corp. Systems and methods for executing encrypted programs
US7958371B2 (en) * 2007-05-09 2011-06-07 Sony Computer Entertainment Inc. Methods and apparatus for secure operating system distribution in a multiprocessor system
WO2009004506A1 (en) * 2007-07-05 2009-01-08 Nxp B.V. Method for the improvement of microprocessor security
US9176897B2 (en) 2007-09-04 2015-11-03 Nintendo Co., Ltd. Writing area security system
WO2009031245A1 (ja) * 2007-09-04 2009-03-12 Nintendo Co., Ltd. ダウンロードセキュリティシステム
US9207990B2 (en) * 2007-09-28 2015-12-08 Hewlett-Packard Development Company, L.P. Method and system for migrating critical resources within computer systems
JP4371327B2 (ja) * 2007-10-24 2009-11-25 富士通株式会社 申請処理プログラム、申請処理方法、および仲介サーバ装置、並びに仲介サーバシステム
US8639941B2 (en) * 2007-12-05 2014-01-28 Bruce Buchanan Data security in mobile devices
US8826037B2 (en) * 2008-03-13 2014-09-02 Cyberlink Corp. Method for decrypting an encrypted instruction and system thereof
US20090292931A1 (en) * 2008-05-24 2009-11-26 Via Technology, Inc Apparatus and method for isolating a secure execution mode in a microprocessor
US8225390B2 (en) * 2008-06-27 2012-07-17 Microsoft Corporation Licensing protected content to application sets
US9367331B2 (en) 2009-07-20 2016-06-14 Google Technology Holdings LLC Multi-environment operating system
US9372711B2 (en) 2009-07-20 2016-06-21 Google Technology Holdings LLC System and method for initiating a multi-environment operating system
US9348633B2 (en) 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
US9389877B2 (en) 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
JP2013507698A (ja) * 2009-10-15 2013-03-04 エフティーエス コンピューターテクニク ジーエムビーエイチ 安全性に関連したおよび安全性に関連していないソフトウェア・コンポーネントを1つのハードウェア・プラットフォーム上で実行する方法
CN102725737B (zh) * 2009-12-04 2016-04-20 密码研究公司 可验证防泄漏的加密和解密
JP5565040B2 (ja) * 2010-03-30 2014-08-06 富士通株式会社 記憶装置、データ処理装置、登録方法、及びコンピュータプログラム
US20120079282A1 (en) * 2010-06-28 2012-03-29 Lionstone Capital Corporation Seamless end-to-end data obfuscation and encryption
JP5573489B2 (ja) * 2010-08-23 2014-08-20 ソニー株式会社 情報処理装置、および情報処理方法、並びにプログラム
JP5133387B2 (ja) * 2010-10-22 2013-01-30 シャープ株式会社 複合機、制御プログラムおよび記録媒体
WO2012086106A1 (ja) * 2010-12-21 2012-06-28 パナソニック株式会社 仮想計算機システム及び仮想計算機システム制御方法
CN102542219A (zh) * 2010-12-31 2012-07-04 富泰华工业(深圳)有限公司 具有记忆功能的电子装置及其存储卡读取方法
US20120192100A1 (en) * 2011-01-25 2012-07-26 Motorola-Mobility, Inc. Method and apparatus for locking and unlocking multiple operating system environments with a single gesture input
US9354900B2 (en) 2011-04-28 2016-05-31 Google Technology Holdings LLC Method and apparatus for presenting a window in a system having two operating system environments
JP5775738B2 (ja) * 2011-04-28 2015-09-09 富士通株式会社 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム
US9076020B2 (en) * 2011-05-13 2015-07-07 Microsoft Technology Licensing, Llc Protected mode for mobile communication and other devices
US20120331303A1 (en) * 2011-06-23 2012-12-27 Andersson Jonathan E Method and system for preventing execution of malware
US9710982B2 (en) 2011-12-23 2017-07-18 Microsoft Technology Licensing, Llc Hub key service
CN104040552B (zh) * 2011-12-29 2018-03-30 英特尔公司 安全地分发软件的方法、处理器、计算设备及安全地存储和执行应用的系统
KR20130101632A (ko) * 2012-02-16 2013-09-16 삼성전자주식회사 콘텐츠 보안 장치 및 방법
US20130293573A1 (en) 2012-05-02 2013-11-07 Motorola Mobility, Inc. Method and Apparatus for Displaying Active Operating System Environment Data with a Plurality of Concurrent Operating System Environments
US9342325B2 (en) 2012-05-17 2016-05-17 Google Technology Holdings LLC Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device
US9003475B1 (en) * 2012-06-05 2015-04-07 Symantec Corporation Systems and methods for applying data-loss-prevention policies
US9230076B2 (en) * 2012-08-30 2016-01-05 Microsoft Technology Licensing, Llc Mobile device child share
US10069703B2 (en) 2012-10-31 2018-09-04 Elwha Llc Methods and systems for monitoring and/or managing device data
US10091325B2 (en) 2012-10-30 2018-10-02 Elwha Llc Methods and systems for data services
US9619497B2 (en) 2012-10-30 2017-04-11 Elwah LLC Methods and systems for managing one or more services and/or device data
US10216957B2 (en) * 2012-11-26 2019-02-26 Elwha Llc Methods and systems for managing data and/or services for devices
US9626503B2 (en) 2012-11-26 2017-04-18 Elwha Llc Methods and systems for managing services and device data
US9088450B2 (en) 2012-10-31 2015-07-21 Elwha Llc Methods and systems for data services
US9886595B2 (en) * 2012-12-07 2018-02-06 Samsung Electronics Co., Ltd. Priority-based application execution method and apparatus of data processing device
US9846656B2 (en) * 2013-04-17 2017-12-19 Laurence H. Cooke Secure computing
GB2515047B (en) * 2013-06-12 2021-02-10 Advanced Risc Mach Ltd Security protection of software libraries in a data processing apparatus
KR20150070890A (ko) * 2013-12-17 2015-06-25 삼성전자주식회사 파일 처리 방법 및 이를 지원하는 전자 장치
JP6265783B2 (ja) * 2014-03-06 2018-01-24 キヤノン株式会社 暗号化/復号化システム及びその制御方法、並びにプログラム
US20160048688A1 (en) * 2014-08-14 2016-02-18 Google Inc. Restricting System Calls using Protected Storage
US20160147765A1 (en) * 2014-11-25 2016-05-26 Quixey, Inc. Techniques for Using Similarity to Enhance Relevance in Search Results
JP2016116134A (ja) * 2014-12-16 2016-06-23 パナソニックIpマネジメント株式会社 署名検証装置、署名生成装置、署名処理システム、署名検証方法及び署名生成方法
US10432547B2 (en) * 2016-03-18 2019-10-01 Hewlett-Packard Development Company, L.P. Verifying functionality restrictions of computing devices
JP7194736B2 (ja) * 2017-12-18 2022-12-22 コンヴィーダ ワイヤレス, エルエルシー IoT/M2Mサービス層のデータまたはサービスに対するコンテキストアウェア認証
KR20200021815A (ko) * 2018-08-21 2020-03-02 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
KR20200101211A (ko) * 2019-02-19 2020-08-27 삼성전자주식회사 전자 장치 및 이를 이용한 블록 체인의 전자 서명 서비스 방법
CN114051036A (zh) * 2021-09-23 2022-02-15 通号城市轨道交通技术有限公司 轨道交通信号系统数据同步方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318787A (ja) 2000-05-08 2001-11-16 Toshiba Corp マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
JP2002189633A (ja) 2000-12-21 2002-07-05 Nec Corp 仮想空間のメモリ保護方法及び装置
JP2002251326A (ja) 2001-02-22 2002-09-06 Hitachi Ltd 耐タンパ計算機システム
JP2002353960A (ja) 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809160A (en) * 1985-10-28 1989-02-28 Hewlett-Packard Company Privilege level checking instruction for implementing a secure hierarchical computer system
JPS62103146A (ja) * 1985-10-30 1987-05-13 Matsushita Electric Ind Co Ltd プリンタ−ヘツド制御回路
JPS62205443A (ja) * 1986-03-06 1987-09-10 Nec Corp アドレス発生回路
US5412717A (en) 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
ES2128393T3 (es) 1992-05-15 1999-05-16 Addison M Fischer Metodo y aparato para sistemas de ordenador con estructuras de datos de informacion para programas de autorizacion.
JPH08227356A (ja) 1994-12-21 1996-09-03 Tec Corp データ処理装置
JPH11175355A (ja) * 1997-12-15 1999-07-02 Sony Corp 情報処理装置及び方法、オペレーティングシステム並びにコンピュータ読み取り可能な媒体
US7290284B1 (en) * 1999-01-11 2007-10-30 Myspace Ab System for data processing a security critical activity
CA2395645A1 (en) * 1999-12-23 2001-06-28 General Instrument Corporation Dual-mode processor
JP2001256066A (ja) 2000-02-29 2001-09-21 Internatl Business Mach Corp <Ibm> コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置
US7475398B2 (en) * 2000-08-01 2009-01-06 Wind River Systems, Inc. System and method for implementing a smart system call
GB2376761A (en) * 2001-06-19 2002-12-24 Hewlett Packard Co An arrangement in which a process is run on a host operating system but may be switched to a guest system if it poses a security risk
US7191440B2 (en) * 2001-08-15 2007-03-13 Intel Corporation Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor
CN1230751C (zh) * 2001-12-31 2005-12-07 武汉瑞达电子有限公司 一卡多用安全智能卡
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
JP2003280756A (ja) * 2002-03-25 2003-10-02 Seiko Epson Corp 情報処理装置のデバッグ手段
US7127579B2 (en) * 2002-03-26 2006-10-24 Intel Corporation Hardened extended firmware interface framework
US7383587B2 (en) 2002-11-18 2008-06-03 Arm Limited Exception handling control in a secure processing system
GB2396451B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Delivering data processing requests to a suspended operating system
JP4447471B2 (ja) 2002-11-18 2010-04-07 エイアールエム リミテッド 安全処理システムにおける例外タイプ
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
GB2402785B (en) * 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Processor switching between secure and non-secure modes
GB2396712B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Handling multiple interrupts in a data processing system utilising multiple operating systems
CN1871568B (zh) * 2003-08-26 2010-04-28 松下电器产业株式会社 程序执行设备
US7076637B2 (en) * 2003-10-29 2006-07-11 Qualcomm Inc. System for providing transitions between operating modes of a device
US7120794B2 (en) * 2003-10-29 2006-10-10 Qualcomm Inc. System for invoking a privileged function in a device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318787A (ja) 2000-05-08 2001-11-16 Toshiba Corp マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
JP2002189633A (ja) 2000-12-21 2002-07-05 Nec Corp 仮想空間のメモリ保護方法及び装置
JP2002251326A (ja) 2001-02-22 2002-09-06 Hitachi Ltd 耐タンパ計算機システム
JP2002353960A (ja) 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法

Also Published As

Publication number Publication date
KR20060107826A (ko) 2006-10-16
CN1886712B (zh) 2010-09-08
WO2005052769A1 (ja) 2005-06-09
US7788487B2 (en) 2010-08-31
EP1688816A1 (en) 2006-08-09
CN1886712A (zh) 2006-12-27
US20070113079A1 (en) 2007-05-17
EP1688816A4 (en) 2012-04-25

Similar Documents

Publication Publication Date Title
KR101037006B1 (ko) 데이터 처리장치
KR100860162B1 (ko) 액세스 제어 티켓을 이용한 데이터 액세스 관리 시스템 및관리 방법
CN102171704B (zh) 用硬件加密存储设备进行外部加密和恢复管理
JP5475475B2 (ja) プログラム実行装置、制御方法、制御プログラム及び集積回路
EP2249280B1 (en) Information processor and method for controlling the same
KR100874061B1 (ko) 액세스 제어 티켓을 이용한 메모리 액세스 제어 시스템 및관리 방법
JP4828517B2 (ja) プログラム変換装置及びプログラム実行装置
US20090193521A1 (en) Electronic device, update server device, key update device
JP5097130B2 (ja) 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
JP4816012B2 (ja) 情報処理装置、ソフトウェアインストール方法、および光ディスク
JPWO2012124270A1 (ja) 改ざん監視システム、管理装置、保護制御モジュール及び検知モジュール
JP2004228786A (ja) 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
JP2008009631A (ja) 記憶装置及び記憶方法
WO2006051754A1 (ja) 機密情報処理装置
JP4629416B2 (ja) データ処理装置
US20050144438A1 (en) Microprocessor
JP2000076063A (ja) 認証システム、認証装置及び記録媒体
JP2004070674A (ja) 電子データ交換システムにおけるデータ保護装置及びデータ保護方法並びにそれに用いるプログラム
JP2005182774A5 (ko)
JP2001016195A (ja) 情報利用制御装置
CN115577352B (zh) 车规级芯片切换控制方法及装置
JP4293869B2 (ja) 画像処理システム、及び画像処理装置
JP2007011535A (ja) データファイル保護装置
JP5304304B2 (ja) セキュリティ強化システム、方法、プログラム及びusbメモリ
JP2010114593A (ja) データ転送システム、データ転送方法、データ送信装置およびデータ受信装置

Legal Events

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