KR20060119876A - 프로그램 실행장치 - Google Patents

프로그램 실행장치 Download PDF

Info

Publication number
KR20060119876A
KR20060119876A KR1020067003694A KR20067003694A KR20060119876A KR 20060119876 A KR20060119876 A KR 20060119876A KR 1020067003694 A KR1020067003694 A KR 1020067003694A KR 20067003694 A KR20067003694 A KR 20067003694A KR 20060119876 A KR20060119876 A KR 20060119876A
Authority
KR
South Korea
Prior art keywords
program
key
unit
data
execution
Prior art date
Application number
KR1020067003694A
Other languages
English (en)
Other versions
KR101059257B1 (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=34213903&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20060119876(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 마츠시타 덴끼 산교 가부시키가이샤 filed Critical 마츠시타 덴끼 산교 가부시키가이샤
Publication of KR20060119876A publication Critical patent/KR20060119876A/ko
Application granted granted Critical
Publication of KR101059257B1 publication Critical patent/KR101059257B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/86Secure or tamper-resistant housings
    • G06F21/87Secure or tamper-resistant housings by means of encapsulation, e.g. for integrated circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/105Multiple levels of security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • 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/2153Using hardware token as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

부정한 분석과 변경에 대해 프로그램을 보호할 수 있는 프로그램 실행장치가 제공된다. 프로그램 실행장치는 실행부, 제 1 보호부, 및 제 2 보호부를 포함한다. 실행부는 제 1 프로그램과 제 2 프로그램을 실행하고, 실행을 제어할 수 있는 외부장치와 연결된다. 제 1 보호부는 실행부가 제 1 프로그램을 실행하고 있는 동안 상기 실행부를 상기 외부장치로부터 연결을 끊는다. 제 2 보호부는 실행부가 상기 제 2 프로그램을 실행하고 있는 동안 상기 제 1 프로그램을 보호한다.
프로그램, 보호, 인증, 암호화, 인터럽트, 복호, 해독, 탬퍼, 개찬

Description

프로그램 실행장치{PROGRAM EXECUTION DEVICE}
본 발명은 부정한 변경이나 분석에 대해 프로그램을 보호하는 기술에 관한 것이다.
최근 들어, PC와 인터넷의 광범위한 사용은 소프트웨어와 같은 디지털 콘텐츠의 용이한 복제나 편집을 가능하게 한다. 이에 따라, 부정한(unauthorized) 변경과 분석에 대해 소프트웨어를 보호하기 위하여 변형-억제(tamper-resistance) 기술이 요구된다.
변형-억제 기술에 대한 연구가 오랫동안 수행되어 왔다. 예를 들어, 논문 "역 분석 및 위조에 대한 소프트웨어의 보호"(니케이 일렉트로닉스, 1998. 1. 5, 209-220 페이지)는 부정한 소프트웨어 분석을 방지하기 위한 기본 원칙과 구체적인 방법을 기술하고 있다. 또한, 논문 "소프트웨어 변형-억제 기술"(후지 제록스 기술보고서, No. 13, 20-28 페이지)은 부정한 소프트웨어 분석의 방지에 관한 기술적 문제와 대책을 다루고 있다.
이들 연구에 불구하고, 악의의 사용자에 대해 프로그램을 보호하기 위한 더 다양한 기술이 여전히 요구되고 있다.
상기한 문제점을 고려하여, 본 발명은 부정한 변경과 분석을 방지함으로써 프로그램을 안전하게 실행할 수 있는 프로그램 실행장치를 제공하는 것을 목적으로 한다.
상기한 목적은, 상기 실행을 제어할 수 있는 외부장치와 연결되고, 제 1 프로그램과 제 2 프로그램을 실행하는 실행부; 상기 실행부가 상기 제 1 프로그램을 실행하고 있는 동안 상기 실행부를 상기 외부장치로부터 연결을 끊는 제 1 보호부; 및 상기 실행부가 상기 제 2 프로그램을 실행하고 있는 동안 상기 제 1 프로그램을 보호하는 제 2 보호부를 포함하는 프로그램 실행장치에 의해 달성될 수 있다.
이 구성에 의하면, 제 1 프로그램은 하드웨어를 이용한 외부공격이나 소프트웨어를 이용한 공격 모두로부터 보호될 수 있다. 또한, 외부장치와 연결을 끊음으로써 높은 보안 레벨을 달성할 수 있다.
여기서, 상기 제 2 보호부는 상기 실행부가 상기 제 1 프로그램을 실행할 때 데이터를 기록하는 메모리 영역을 포함할 수 있고, 상기 제 2 보호부는 상기 실행부가 상기 제 1 프로그램에서 상기 제 2 프로그램으로 전환하기 바로 전에 상기 메모리 영역의 데이터를 암호화하고, 상기 실행부가 상기 제 2 프로그램에서 상기 제 1 프로그램으로 다시 전환한 후 상기 메모리 영역의 상기 암호화 데이터를 복호한다.
여기서, 제 1 프로그램은 상기 제 2 프로그램을 호출하는 호출 프로그램을 포함하며, 상기 제 2 보호부는 상기 실행부가 상기 제 1 프로그램의 상기 호출 프로그램을 실행하기 바로 전에 상기 메모리 영역의 데이터를 암호화한다.
이들 구성에 의하면, 메모리 영역의 데이터는 제어가 제 1 프로그램에서 제 2 프로그램으로 옮겨지기 전에 암호화된다. 이와 같이, 제 1 프로그램이 사용한 데이터는 다른 프로그램으로부터 보호할 수 있고, 이는 소프트웨어를 이용한 제 1 프로그램의 부정한 분석을 방지할 수 있다. 또한, 메모리 영역의 데이터만을 암호화함으로써 메모리 사용을 줄일 수 있다. 이것은 CPU 처리속도와 메모리 용량과 같은 자원이 제한된 이동전화나 PDA 등의 장치가 높은 보안 레벨을 유지하도록 할 수 있다.
여기서, 인터럽트(interrupt)를 검출하는 인터럽트 검출부를 추가로 포함할 수 있고, 상기 제 2 프로그램은 상기 인터럽트가 일어날 때 수행될 동작을 나타내고, 상기 실행부가 상기 제 1 프로그램을 실행하고 있는 동안 상기 인터럽트 검출부는 상기 인터럽트를 검출하고, 상기 제 2 보호부는 상기 제 1 프로그램에서 상기 제 2 프로그램으로 전환하기 전에 상기 메모리 영역의 데이터를 암호화한다.
이 구성에 의하면, 제 1 프로그램이 사용한 데이터는 인터럽트를 처리하기 위하여 제어가 제 1 프로그램에서 제 2 프로그램으로 옮겨지기 전에 암호화된다. 이것은 인터럽트에 의해 소프트웨어를 사용하여 수행되는 부정한 분석으로부터 제 1 프로그램을 보호한다.
여기서, 프로그램 실행장치는 인터럽트를 검출하는 인터럽트 검출부; 및
상기 제 1 프로그램을 암호화함으로써 생성되는 암호화 프로그램을 저장하는 저장부를 추가로 포함할 수 있으며, 상기 제 2 프로그램은, 상기 인터럽트가 일어날 때, 수행될 동작을 나타내고, 상기 제 2 보호부는 프로그램 키를 취득하고, 상기 취득한 프로그램 키를 이용하여 상기 암호화 프로그램을 복호하여 상기 제 1 프로그램을 취득하며, 이어 상기 프로그램 키를 삭제하고, 상기 제 2 보호부는 상기 프로그램 키의 취득에서 상기 프로그램 키의 삭제까지 상기 실행부가 상기 제 2 프로그램을 실행하는 것을 금지한다.
이 구성에 따르면, 암호화 프로그램을 복호하기 위한 프로그램 키가 삭제될 때까지 인터럽트는 수락되지 않는다. 따라서, 프로그램 키는 인터럽트에 의해 수행되는 부정한 분석으로부터 보호되고, 이에 따라 제 1 프로그램의 부정한 분석을 금지할 수 있다.
여기서, 상기 제 2 보호부는, (a) 상기 제 1 프로그램을 포함하는 처리 프로그램의 적어도 한 부분에 기초하여 상기 처리 프로그램이 생성될 때 생성되는 제 1 변형 검출값을 취득하고, (b) 상기 처리 프로그램의 적어도 한 부분에 기초하여 제 2 변형 검출값을 생성하며, (c) 상기 제 1 변형 검출값과 상기 제 2 변형 검출값이 다르면 상기 실행부가 상기 제 1 프로그램을 실행하는 것을 금지한다.
이 구성에 따르면, 처리 프로그램이 변형된 것으로 판정되면, 제 1 프로그램의 실행은 금지된다. 이것은 제 1 프로그램이 변형된 경우에 손해를 최소화한다.
여기서, 상기 처리 프로그램은 상기 제 1 변형 검출값을 포함하며, 상기 제 2 보호부는 상기 처리 프로그램으로부터 상기 제 1 변형 검출값을 취득한다.
이 구성에 따르면, 처리 프로그램은 처리 프로그램의 적어도 한 부분에 기초하여 생성된 제 1 변형 검출값을 포함한다. 이에 따라, 처리 프로그램이 변형된 때와 같이 변경될 필요가 있는 경우, 그 변경은 프로그램 실행장치의 다른 처리 프로그램을 변경하지 않고 처리 프로그램에만 이루어질 수 있다.
도 1은 본 발명의 일 실시예가 관련한 시큐어(secure) 처리 시스템의 전체 구성을 보여준다.
도 2는 도 1에 나타낸 인증국 장치의 구성을 나타내는 블록도이다.
도 3은 도 2에 나타낸 컴파일러의 동작을 나타내는 플로차트이다.
도 4는 도 1에 나타낸 메모리 카드의 구성을 보여주는 블록도이다.
도 5는 도 1에 나타낸 휴대단말의 구성을 나타내는 블록도이다.
도 6은 도 5에 나타낸 메모리에 저장된 프로그램을 나타낸다.
도 7은 도 6에 나타낸 제 2 시큐어 처리 프로그램의 데이터 구조를 나타낸다.
도 8은 도 7에 나타낸 호출 프로그램의 데이터 구조를 나타낸다.
도 9는 도 7에 나타낸 인터럽트 핸들러의 처리를 나타내는 플로차트이다.
도 10은 도 6에 나타낸 제 1 시큐어 처리 프로그램의 데이터 구조를 나타낸다.
도 11은 도 6에 나타낸 벡터 테이블의 데이터 구조를 나타낸다.
도 12는 도 5에 나타낸 CPU의 동작을 나타내는 플로차트이다.
도 13은 음악 데이터 재생처리를 나타내는 플로차트이다.
도 14는 음악 데이터 재생처리를 나타내는 플로차트이다.
도 15는 음악 데이터 재생처리를 나타내는 플로차트이다.
도 16은 음악 데이터 재생처리를 나타내는 플로차트이다.
도 17은 음악 데이터 재생처리를 나타내는 플로차트이다.
도 18은 인증처리를 나타내는 플로차트이다.
도 19는 인터럽트가 발생할 때 CPU의 동작을 나타내는 플로차트이다.
다음은 도면을 참조하여 본 발명의 일 실시예를 상세하게 기술한다.
1. 시큐어 처리 시스템(1)의 구성
도 1은 본 발명의 일 실시예가 관련한 시큐어(secure) 처리 시스템의 전체 구성을 보여준다. 도면에서, 시큐어 처리 시스템(1)은 인증국 장치(100), 롬(ROM) 라이터(200), 휴대단말(300), 및 메모리 카드(400)로 구성된다.
시큐어 처리 시스템(1)은 휴대단말(300)에서 실행되는 프로그램을 부정한 분석과 변경으로부터 보호한다. 보호할 프로그램은 인증국 장치(100)에서 생성되고, 롬 라이터(200)에 의해 롬에 기록된다. 이어 프로그램을 실행하는 롬이 휴대단말(300)에 설치된다.
이 실시예에서, 보호할 프로그램은, 일 예로서, 메모리 카드(400)에 기록된 암호화 음악 데이터를 해독하기 위한 암호화 음악데이터 해독 프로그램이다.
1.1. 인증국 장치(100)
인증국 장치(100)는 영역확보 프로그램(511), 인터럽트금지 프로그램(512), 호출 프로그램(513), 키 수신 프로그램(514), 실행 플래그(515), 인터럽트 핸들러(518), 복호 프로그램(516), 및 도 7에 나타낸 시큐어 프로그램을 포함하는 제 2 시큐어 처리 프로그램을 생성한다. 시큐어 프로그램은 보호할 필요가 있는 암호화 음악데이터 복호프로그램(524)을 포함한다. 생성된 제 2 시큐어 처리 프로그램은 롬 라이터(200)에 의해 롬에 기록되고 휴대단말(300)에 설치된다. 프로그램 각각은 후술한다.
도 2는 인증국 장치(100)의 구성을 나타낸다. 도면에서, 인증국 장치(100)는 컴파일러(101), 프로그램 암호화부(102), 키 암호화부(103), 해시값 산출부(104), 데이터 매입부(105), 기억부(106), 및 송신부(107)를 포함한다.
인증국 장치(100)는 실제 마이크로프로세서, 롬, 램, 하드 디스크 유닛, 표시유닛, 및 키보드를 포함하는 컴퓨터 시스템에 의해 실현된다. 인증국 장치(100)의 기능은 램이나 하드 디스크 유닛에 저장된 컴퓨터 프로그램을 마이크로프로세서가 실행함으로써 달성된다.
(1) 컴파일러(101)
컴파일러(101)는 보호 프로그램, 호출 프로그램(513), 복호 프로그램(516), 및 시큐어 프로그램의 소스 코드의 입력을 수신한다. 보호 프로그램은 영역확보 프로그램(511), 인터럽트금지 프로그램(512), 키 수신 프로그램(514), 실행 플래그(515), 및 인터럽트 핸들러(518)로 구성된다. 호출 프로그램(513)은 제 2 시큐어 처리 프로그램이 변형되었는지를 검출하는데 필요한 데이터를 전송하는데 이용된다. 호출 프로그램(513)은 휴대단말(300)의 메모리에 TRS영역 프로그램의 시작 어드레스를 포함한다. TRS영역 프로그램은 제 2 시큐어 처리 프로그램의 복호 프로그램(516) 및 암호화 프로그램(517)에 대응한다. 암호화 프로그램(517)은 시큐어 프 로그램을 암호화함으로써 생성된다.
호출 프로그램(513), 복호 프로그램(516), 시큐어 프로그램, 및 보호 프로그램의 소스 코드를 수신한 경우, 컴파일러(101)는 각 프로그램을 컴파일한다.
도 3은 도 2에 나타낸 컴파일러(101)의 동작을 나타내는 플로차트이다.
컴파일러(101)는 자구 해석(S621)과 구문 해석(S622)을 수행한다. 마지막으로, 컴파일러(101)는 컴퓨터가 실행할 수 있는 프로그램을 표현하는 바이너리 데이터를 생성한다(S623).
컴파일러(101)는 호출 프로그램(513)의 바이너리 데이터와 보호 프로그램의 바이너리 데이터를 데이터 매입부(105)에 출력한다. 컴파일러(101)는 또한 복호 프로그램(516)의 바이너리 데이터와 시큐어 프로그램의 바이너리 데이터를 프로그램 암호화부(102)에 출력한다.
(2) 프로그램 암호화부(102)
프로그램 암호화부(102)는 복호 프로그램(516)의 바이너리 데이터와 시큐어 프로그램의 바이너리 데이터를 수신한다. 프로그램 암호화부(102)는 또한 프로그램 키를 수신한다. 프로그램 암호화부(102)는 암호화 알고리즘 E1에 따라 프로그램 키를 이용하여 시큐어 프로그램을 암호화하여 암호화 프로그램(517)을 생성한다. 일 예로, 암호화 알고리즘 E1은 AES(Advanced Encryption Standard) 알고리즘이다. AES는 당업계에 잘 알려져 있어 여기서는 그에 대한 설명을 생략한다. AES 이외의 알고리즘이 암호화 알고리즘 E1으로 이용될 수 있다.
프로그램 암호화부(102)는 복호 프로그램(516)과 암호화 프로그램(517)을 TRS영역 프로그램으로서 데이터 매입부(105)에 출력한다.
프로그램 암호화부(102)는 또한 TRS영역 프로그램을 해시값 산출부(104)에 출력한다.
(3) 키 암호화부(103)
키 암호화부(103)는 프로그램 키와 마스터 키를 수신한다.
키 암호화부(103)는 암호화 알고리즘 E1에 따라 미스터 키를 이용하여 프로그램 키를 암호화하여 암호화 키를 생성한다. 키 암호화부(103)는 암호화 키를 데이터 매입부(105)에 출력한다.
(4) 해시값 산출부(104)
해시값 산출부(104)는 제 2 시큐어 처리 프로그램의 적어도 한 부분의 해시값을 산출한다.
이 실시예에서, 해시값 산출부(104)는 TRS영역 프로그램과 비밀 키를 수신하고, 해시함수에 따라 비밀 키를 이용하여 TRS영역 프로그램의 해시값을 산출한다.
예를 들어, HMAC(Keyed-Hashing for Message Authentication)에 대해 사용되는 알고리즘이 해시값을 산출하는데 이용될 수 있다.
H를 해시함수, K를 비밀 키, text를 해시될 데이터, opad를 64회의 바이트 값 0x36으로 구성된 문자열, 그리고 ipad를 64회의 바이트 값 0x5c로 구성된 문자열이라고 하면, 해시값 산출을 위한 알고리즘은 H(K XOR opad , H(K XOR ipad, text)로 표현된다.
해시값 산출부(104)는 또한 TRS영역 프로그램의 바이너리 사이즈를 산출한 다.
해시값 산출부(104)는 해시값과 바이너리 사이즈를 데이터 매입부(105)에 출력한다.
(5) 데이터 매입부(105)
데이터 매입부(105)는 호출 프로그램(513)의 바이너리 데이터와 보호 프로그램의 바이너리 데이터를 컴파일러(101)로부터 수신하고, 해시값과 바이너리 사이즈를 해시값 산출부(104)로부터 수신한다. 데이터 매입부(105)는 또한 키 암호화부(103)로부터 암호화 키를 수신하고, 프로그램 암호화부(102)로부터 TRS영역 프로그램을 수신한다.
데이터 매입부(105)는 호출 프로그램(513)의 해시값을 변경 검출값으로 매입(embed)한다. 데이터 매입부(105)는 또한 호출 프로그램(513)의 바이너리 사이즈와 암호화 키를 매입한다. 데이터 매입부(105)는 결과의 호출 프로그램(513)을 보호 프로그램에 포함하고, 보호 프로그램과 TRS영역 프로그램을 결합하여 제 2 시큐어 처리 프로그램을 형성한다. 데이터 매입부(105)는 제 2 시큐어 처리 프로그램을 기억부(106)에 기록한다.
(6) 기억부(106)
기억부(106)는 데이터 매입부(105)가 기록한 제 2 시큐어 처리 프로그램을 기억한다.
(7) 송신부(107)
송신부(107)는 기억부(106)에 기억된 제 2 시큐어 처리 프로그램을 롬 라이 터(200)에 출력한다.
1.2 롬 라이터(200)
롬 라이터(200)는 인증국 장치(100)에 연결된다. 롬 라이터(200)는 제 2 시큐어 처리 프로그램을 인증국 장치(100)로부터 수신하고, 제 2 시큐어 처리 프로그램을 롬에 기록한다. 제 2 시큐어 처리 프로그램이 기록된 롬은 휴대단말(300)에 설치된다.
1.3 메모리 카드(400)
도 4는 도 1에 나타낸 메모리 카드(400)의 구성을 보여주는 블록도이다. 도면에서, 메모리 카드(400)는 제어부(401), 입출력부(402), 인증부(403), 및 정보기억부(404)를 포함한다.
(1) 입출력부(402)
입출력부(402)는, 메모리 카드(400)가 휴대단말(300)에 연결될 때, 제어부(401)와 휴대단말(300) 간의 데이터 전송을 수행한다.
(2) 정보기억부(404)
정보기억부(404)는 데이터영역(410)과 시큐어영역(420)을 구비한다.
데이터영역(410)은 암호화 음악데이터(411)를 저장한다. 암호화 음악데이터(411)는 암호화 알고리즘 E1에 따라 타이틀 키(421)를 이용하여 MP3 음악데이터를 암호화함으로써 생성된다.
시큐어영역(420)은 타이틀 키(421)를 저장한다. 휴대단말(300)은, 인증부(403)와의 상호 인증에 성공한 때에만 시큐어영역(420)에 액세스할 수 있다.
여기서, 정보기억부(404)에 저장된 데이터는 메모리 카드(400)에 고유한 정보를 이용하여 암호화될 수 있다.
(3) 인증부(403)
인증부(403)는 CPRM(Content Protection for Recordable Media)에 기초하여 휴대단말(300)과 상호 인증을 수행한다. 상호 인증이 성공적이면, 인증부(403)는 휴대단말(300)과 공유 키를 구축하고, 공유 키를 제어부(401)에 출력한다. CPRM은 당업계에 잘 알려져 있어 여기서는 이에 대한 설명을 생략한다. CPRM 이외의 다른 방법이 상호 인증을 위해 이용될 수 있다.
(4) 제어부(401)
제어부(401)는 휴대단말(300)과 입출력부(402)를 통하여 데이터 전송을 수행한다. 제어부(401)는, 휴대단말(300)이 인증부(403)와 상호 인증에 성공하여야만, 휴대단말(300)이 시큐어영역(420)에 저장된 데이터를 액세스하도록 허락한다. 시큐어영역(420)에 저장된 데이터를 출력할 때, 제어부(401)는 인증부(403)로부터 수신한 공유 키를 이용하여 데이터를 암호화한다.
한편, 제어부(401)는 상호 인증 없이 데이터영역(410)에 저장된 데이터를 액세스하도록 허락한다.
1.4 휴대단말(300)
도 5는 도 1에 나타낸 휴대단말의 구성을 나타내는 블록도이다. 도면에서, 휴대단말(300)은 CPU(301), 디버거 인터페이스(302), 디버거 무효화회로(303), 인터럽트 컨트롤러(304), 메모리(305), 메모리카드 인터페이스(306), 입력부(307), 표시부(308), 스피커(309), 디코더(310), 마이크(312), 변환부(313), 무선제어부(314), 무선부(315), 및 안테나(316)를 포함한다. 휴대단말(300)의 이들 구성요소들은 버스(317)로 연결된다. 또한, 인터럽트 컨트롤러(304)는 인터럽트 라인(318)에 의해 CPU(301)에 연결된다.
다음은 휴대단말(300)의 각 구성요소를 기술한다.
(1) 디버거 무효화회로(303)와 디버거 인터페이스(302)
디버거 무효화회로(303)는 CPU(301)와 디버거 인터페이스(302) 사이에 제공되어 CPU(301)와 디버거 인터페이스(302)를 연결/절단한다.
CPU(301)로부터 "유효(enable)"를 나타내는 디버거 제어신호를 수신한 경우, 디버거 무효화회로(303)는 CPU(301)를 디버거 인터페이스(302)에 연결한다. CPU(301)로부터 "무효(disable)"를 나타내는 디버거 제어신호를 수신한 경우, 디버거 무효화회로(303)는 CPU(301)를 디버거 인터페이스(302)에 절단한다.
CPU(301)와 디버거 인터페이스(302)가 서로 연결될 때, 디버거 인터페이스(302)에 연결된 외부 디버거 장치가 유효하다. CPU(301)와 디버거 인터페이스(302)가 서로 절단되면, 디버거 장치는 무효하다. 예를 들어, 디버거 무효화회로(303)는 스위치에 의해 달성될 수 있다. 여기서, CPU(301)와 디버거 인터페이스(302) 사이의 연결/절단은 스위치 회로에 의해 물리적으로 이루어지거나 전기적으로 이루어질 수 있다.
디버거 인터페이스(302)는 휴대단말(300)과 디버거 장치를 연결하는데 이용된다.
(2) 메모리(305)
메모리(305)는, 도 6에 나타낸 바와 같이, 제 1 시큐어처리 프로그램(501), 제 2 시큐어처리 프로그램(502), 벡터 테이블(503), 음악 재생프로그램(504), 및 애플리케이션(505)을 저장한다.
(A) 제 2 시큐어처리 프로그램(502)
제 2 시큐어처리 프로그램(502)은 인증국 장치(100)에 의해 생성되고 롬 라이터(200)에 의해 롬에 저장된다.
도 7은 도 6에 나타낸 제 2 시큐어 처리 프로그램의 데이터 구조를 나타낸다. 다음은 제 2 시큐어처리 프로그램(502)을 구성하는 각 프로그램을 설명한다.
(영역확보 프로그램(511))
영역확보 프로그램(511)은 인증 프로그램(523)과 암호화 음악데이터 복호프로그램(524)을 실행할 때 사용되는 메모리 영역을 동적으로 확보하기 위한 메모리 공간을 메모리(305)에서 확보한다.
(인터럽트금지 프로그램(512))
인터럽트금지 프로그램(512)은 인터럽트를 금지(마스크)한다.
(호출 프로그램(513))
호출 프로그램(513)은 제 1 시큐어처리 프로그램(501)을 호출한다.
호출 프로그램(513)은, 도 8에 나타낸 바와 같이, 변형 검출값(541), TRS영역 선두 어드레스(542), 바이너리 사이즈(543), 및 암호화 키(544)로 구성된 변형 검출데이터를 포함한다. 제 1 시큐어처리 프로그램(501)을 호출할 때, 호출 프로그 램(513)은 인증국 장치(100)의 데이터 매입부(105)에 의해 매입된 이 변형 검출데이터를 제 1 시큐어처리 프로그램(501)에 송신한다.
여기서, 변형 검출값(541)은 제 2 시큐어처리 프로그램(502)의 TRS영역 프로그램에 대해 인증국 장치(100)의 해시값 산출부(104)가 산출한 해시값이다.
TRS영역 선두 어드레스(542)는 해시값 산출에 대상으로 되는 TRS영역 프로그램의 메모리(305) 내 선구 어드레스이다.
바이너리 사이즈(543)는 TRS영역 프로그램의 바이너리 사이즈이다.
암호화 키(544)는 마스터 키를 이용하여 인증국 장치(100)의 키 암호화부(103)가 암호화한 프로그램 키이다.
(키 수신 프로그램(514))
키 수신 프로그램(514)은 제 1 시큐어처리 프로그램(501)으로부터 프로그램 키를 수신하고, 프로그램 키를 복호 프로그램(516)에 송신한다.
(실행 플래그(515))
실행 플래그(515)는 시큐어 프로그램이 실행되고 있는 지의 여부를 보여준다. 복호 프로그램(516)이 암호화 프로그램(517)을 복호하기 바로 전에, 실행 플래그(515)는 시큐어 프로그램이 실행되고 있는 것을 나타내는 ON으로 설정된다. 암호화 프로그램(517)을 복호함으로써 취득한 시큐어 프로그램의 실행이 완료한 때, 실행 플래그(515)는 OFF로 설정된다.
(복호 프로그램(516))
복호 프로그램(516)은 키 수신 프로그램(514)으로부터 프로그램 키를 수신하 고, 복호 알고리즘 D1에 따라 프로그램 키를 이용하여 암호화 프로그램(517)을 복호하여 시큐어 프로그램을 취득한다. 여기서, 복호 알고리즘 D1은 암호화 알고리즘 E1의 반대이다.
예를 들어, 국제특허출원공개 WO 04/013744(2004. 2. 12. 공개)에 개시된 기술은 암호화 프로그램(517)을 복호하는데 이용될 수 있다. 이 기술에 따르면, 암호화 프로그램(517)은 작은 부분 단위로 메모리에 로드되고 복호된다. 이것은 전체 시큐어 프로그램이 메모리에 존재하는 것을 방지한다. 따라서, 부정한 자가 메모리의 데이터를 액세스할 때에도, 전체 시큐어 프로그램을 취득할 수 없다.
(암호화 프로그램(517))
암호화 프로그램(517)은, 도 7에 나타낸 바와 같이, 시큐어 프로그램을 암호화함으로써 생성된다. 시큐어 프로그램은 인터럽트금지 해제 프로그램(521), 영역 초기화 프로그램(522), 인증 프로그램(523), 암호화 음악데이터 복호프로그램(524), 영역 키(525), 영역 암호화 프로그램(526), 영역 복호 프로그램(527), 및 영역 종료처리 프로그램(528)을 포함한다. 암호화 프로그램(517)에서, 인터럽트금지 해제 프로그램(521), 영역 초기화 프로그램(522), 인증 프로그램(523), 영역 키(525), 영역 암호화 프로그램(526), 영역 복호 프로그램(527), 및 영역 종료처리 프로그램(528)은 다른 프로그램으로부터 암호화 음악데이터 복호프로그램(524)을 보호한다.
(a) 인터럽트금지 해제 프로그램(521)
인터럽트금지 프로그램(521)은 인터럽트금지 프로그램(512)이 행한 인터럽트 금지를 해제한다.
(b) 영역 초기화 프로그램(522)
영역 초기화 프로그램(522)은 영역확보 프로그램(511)이 확보한 메모리 공간을 초기화하여 암호화의 대상이 되는 메모리 영역을 메모리 공간에서 확보한다.
이 메모리 영역은 인증 프로그램(523)과 암호화 음악데이터 복호프로그램(524)의 실행 중에 사용되는 데이터를 기록하기 위하여 확보한다.
(c) 인증 프로그램(523)
인증 프로그램(523)은 인증 키(531)를 포함한다.
인증 프로그램(523)은 일방향 인증을 수행하여 제 1 시큐어처리 프로그램(501)이 유효한지를 판정한다.
(d) 암호화 음악데이터 복호프로그램(524)
암호화 음악데이터 복호프로그램(524)은 메모리 카드(400)에 저장된 암호화 음악데이터(411)를 복호 알고리즘 D1에 따라 타이틀 키(421)를 이용하여 복호하여 음악 데이터를 취득한다.
(e) 영역 키(525)
영역 키(525)는 영역 초기화 프로그램(522)에 의해 확보된 메모리 영역의 데이터를 암호화하고 영역 복호 프로그램(527)에 의해 메모리 영역의 암호화 데이터를 복호하기 위하여 영역 암호화 프로그램(526)에 의해 사용된다.
(f) 영역 암호화 프로그램(526)
영역 암호화 프로그램(526)은 암호화 알고리즘 E2에 따라 영역 키(525)를 이 용하여 메모리 영역의 데이터를 암호화한다. 여기서, 암호화 알고리즘 E2는 암호화 알고리즘 E1 보다 빠른 처리를 가능하게 한다. 일 예로서, 암호화 알고리즘 E2는 XOR 연산이다. 선택적으로, XOR 연산 이외의 알고리즘이 암호화 알고리즘 E2로 사용될 수 있으며, CPU(301)의 처리용량과 요구되는 보안레벨에 기초하여 결정된다.
영역 암호화 프로그램(526)은, 제 2 시큐어처리 프로그램(502)이 제어를 제 1 시큐어처리 프로그램(501)에 옮기기 위하여 제 1 시큐어처리 프로그램(501)을 호출하기 전에 메모리 영역의 데이터를 암호화한다.
(g) 영역 복호 프로그램(527)
영역 복호 프로그램(527)은, 제어가 제 1 시큐어처리 프로그램(501)으로부터 제 2 시큐어처리 프로그램(502)으로 돌아올 때, 복호 알고리즘 D2에 따라 영역 키(525)를 이용하여 메모리 영역의 암호화 데이터를 복호하여 원래의 평문 데이터를 취득한다.
(h) 영역 종료처리 프로그램(528)
영역 종료처리 프로그램(528)은 영역 초기화 프로그램(522)에 의해 확보된 메모리 영역을 해제하고, 제 1 시큐어처리 프로그램(501)의 종료함수를 호출하여 음악데이터 재생처리를 종료한다.
(인터럽트 핸들러(518))
인터럽트 핸들러(518)는 제 2 시큐어처리 프로그램(502)의 실행 중 인터럽트가 일어난 경우 실행된다. 인터럽트 핸들러(518)는 암호화/복호 키(미도시)를 포함한다.
도 9는 인터럽트 핸들러(518)의 처리를 나타내는 플로차트이다. 인터럽트 핸들러(518)는 실제 컴퓨터 프로그램이지만, 도 9는 인터럽트 핸들러(518)의 처리를 설명의 편의를 위하여 플로차트로 나타낸다.
인터럽트 핸들러(518)는 실행 플래그(515)를 판독하고(S611), 실행 플래그(515)가 ON 또는 OFF인지를 판정한다(S612). 실행 플래그(515)가 ON이면(S612:ON), 인터럽트 핸들러(518)는 암호화 알고리즘 E2에 따라 암호화/복호 키를 이용하여 메모리 영역의 데이터를 암호화한다(S613). 이후, 인터럽트 핸들러(518)는 인터럽트를 처리한다. 실행 플래그(515)가 OFF이면(S612:OFF), 인터럽트 핸들러(518)는 메모리 영역의 데이터를 암호화하지 않고 인터럽트를 처리한다.
인터럽트를 처리한 후, 실행 플래그(515)가 ON이면(S614: ON), 인터럽트 핸들러(518)는, 원래의 처리로 돌아가기 전에, 복호 알고리즘 D2에 따라 암호화/복호 키를 이용하여 메모리 영역의 암호화 데이터를 복호한다(S615). 실행 플래그(515)가 OFF이면(S614:OFF), 인터럽트 핸들러(518)는 메모리 영역의 데이터를 복호하지 않고 원래의 처리로 돌아간다.
(B) 제 1 시큐어처리 프로그램(501)
도 10은 제 1 시큐어처리 프로그램(501)의 데이터 구조를 나타낸다. 도면에서, 제 1 시큐어처리 프로그램(501)은 회로절단 프로그램(551), 변형검출 프로그램(552), 키 복호 프로그램(553), 키 송신 프로그램(554), 인증 프로그램(555), 데이터 판독 프로그램(556), 및 회로접속 프로그램(557)을 포함한다. 제 1 시큐어처리 프로그램(501)은 CPU(301)의 시큐어 처리모드에서 실행된다. 시큐어 처리모드는 후 술한다.
(회로절단 프로그램(551))
회로절단 프로그램(551)은, 제 1 시큐어처리 프로그램(501)이 시작될 때, 디버거 무효화회로(303)에 "무효"를 나타내는 디버거 제어신호를 출력한다.
(변형검출 프로그램(552))
변형검출 프로그램(552)은 비밀 키(562)를 포함하고, 제 2 시큐어처리 프로그램(502)이 변형되었는지를 검출한다. 이와 같이 함으로써, 변형검출 프로그램(552)은 변형 검출값(541), TRS영역 선두 어드레스(542), 및 암호화 키(544)를 포함하는 변형 검출 데이터를 제 2 시큐어처리 프로그램(502)의 호출 프로그램(513)으로부터 취득한다.
변형검출 프로그램(552)은 TRS영역 프로그램으로서 TRS영역 선두 어드레스(542)가 지정하는 메모리(305)의 위치로부터 바이너리 사이즈(543)에 대응하는 데이터량을 판독한다. 변형검출 프로그램(552)은 해시함수에 따라 비밀 키(562)를 이용하여 TRS영역 프로그램의 해시값을 산출한다. 변형검출 프로그램(552)은 산출한 해시값과 변형 검출값(541)을 비교한다. 두 값이 일치하면, 변형검출 프로그램(552)은 제 2 시큐어처리 프로그램(502)이 변형되지 않은 것으로 판정한다. 두 값이 일치하지 않으면, 변형검출 프로그램(552)은 제 2 시큐어처리 프로그램(502)이 변형된 것으로 판정하고, 이어지는 처리를 중단한다.
(키 복호 프로그램(553))
키 복호 프로그램(553)은 마스터 키(563)를 포함한다. 변형검출 프로그램 (552)이 제 2 시큐어처리 프로그램(502)이 변형되지 않은 것으로 판정하면, 키 복호 프로그램(553)은 복호 알고리즘 D1에 따라 마스터 키(563)를 이용하여 암호화 키(544)를 복호하여 프로그램 키를 취득한다. 키 복호 프로그램(553)은 프로그램 키를 키 송신 프로그램(554)에 송신한다.
(키 송신 프로그램(554))
키 송신 프로그램(554)은 키 복호 프로그램(553)으로부터 프로그램 키를 수신하고, 프로그램 키를 제 2 시큐어처리 프로그램(502)에 송신한다.
(인증 프로그램(555))
인증 프로그램(555)은 인증 키(565)를 포함하고, 인증 키(565)를 이용하여 제 2 시큐어처리 프로그램(502)에 의한 인증을 행한다. 인증이 성공적이면, 인증 프로그램(555)은 제 2 시큐어처리 프로그램(502)과 공유 세션 키를 구축한다. 제 1 시큐어처리 프로그램(501)과 제 2 시큐어처리 프로그램(502) 간에 이어서 전송된 데이터는 이 세션 키를 이용하여 암호화된다.
(데이터 판독 프로그램(556))
데이터 판독 프로그램(556)은 CPRM에 기초하여 메모리 카드(400)와 상호 인증을 수행한다. 상호 인증이 성공하면, 데이터 판독 프로그램(556)은 메모리 카드(400)의 시큐어영역(420)에 액세스하여 타이틀 키(421)를 취득한다.
(회로접속 프로그램(557))
회로접속 프로그램(557)은 "유효"를 나타내는 디버거 제어신호를 디버거 무효화회로(303)에 출력한다.
(C) 벡터 테이블(503)
도 11은 벡터 테이블(503)의 데이터 구조를 나타낸다. 설명된 바와 같이, 벡터 테이블(503)은 소프트웨어 인터럽트, 어보트(abort), 및 하드웨어 인터럽트가 일어날 때 실행될 명령 어드레스를 나타낸다.
(D) 음악 재생프로그램(504)
음악 재생프로그램(504)은 제 2 시큐어처리 프로그램(502)이 복호한 음악 데이터를 재생한다. 음악 재생프로그램(504)은 음악 데이터를 디코더(310)의 버퍼(311)에 출력한다.
(E) 애플리케이션(505)
애플리케이션(505)은 사용자 조작의 입력을 수신한다. 사용자 조작이 메모리 카드(400)의 음악 데이터를 재생하는 것이면, 애플리케이션(505)은 제 2 시큐어처리 프로그램(502)을 시작한다.
(3) CPU(301)
CPU(301)는 메모리(305)에 저장된 프로그램에 따라 동작한다. CPU(301)의 동작은 디버거 인터페이스(302)와 연결된 디버거 장치로부터 발행된 명령에 의해 제어된다.
도 12는 CPU(301)의 동작을 나타내는 플로차트이다. CPU(301)는 메모리(305)에 저장된 프로그램의 명령을 페치(fetch)하고(S601), 명령을 디코드하여(S602), 실행한다(S603). 이어 CPU(301)는 프로그램 카운터를 증분하여(S604) 다음 명령을 페치한다.
여기서, CPU(301)는 시큐어 처리모드 또는 정상 처리모드에서 동작한다. 정상 처리모드에서, CPU(301)는 정상 처리를 수행한다. 시큐어 처리모드에서, CPU(301)는 높은 보안레벨을 갖는 처리를 수행하여 메모리(305)의 데이터가 외부로부터 액세스할 수 없게 한다.
CPU(301)는 시큐어 처리모드에서 제 1 시큐어처리 프로그램(501)을 실행하고, 정상 처리모드에서 제 2 시큐어처리 프로그램(502)을 실행한다.
인터럽트가 일어날 때, 인터럽트 컨트롤러(304)는 인터럽트 라인(318)을 통하여 인터럽트 신호를 출력한다. 인터럽트가 인터럽트금지 프로그램(512)에 의해 무효로 되면, CPU(301)는 인터럽트 신호를 거부한다. 인터럽트가 무효로 되지 않으면, CPU(301)는 인터럽트 신호를 받아들이고, 도 11에 도시된 벡터 테이블(503)을 참조하여 인터럽트 신호에 대응하는 어드레스를 판독한다. CPU(301)는 판독된 어드레스의 인터럽트 핸들러에 따라 인터럽트를 처리한다. 인터럽트를 처리한 후, CPU(301)는 원래의 처리로 복귀한다.
제 2 시큐어처리 프로그램(502)을 실행 중 인터럽트 신호를 수신한 경우, CPU(301)는 벡터 테이블(503)을 참조하여 도 9에 도시된 인터럽트 핸들러(518)를 실행한다.
(4) 입력부(307)
입력부(307)는 사용자 조작을 수신한다.
그 입력을 수신한 경우, 입력부(307)는 인터럽트 컨트롤러(304)에 인터럽트를 통보한다.
(5) 인터럽트 컨트롤러(304)
인터럽트 컨트롤러(304)는, 입력부(307) 또는 무선제어부(314)가 인터럽트 컨트롤러(304)에 메일 수신, 호출 수신, 또는 사용자 조작과 같은 인터럽트를 통보한 경우, 인터럽트 라인(318)을 통하여 CPU(301)에 인터럽트 신호를 출력한다.
(6) 인터럽트 컨트롤러(304)
디코더(310)는 버퍼(311)를 포함한다. 버퍼(311)는 CPU(301)로부터 수신한 음악 데이터를 버퍼링한다. 스피커(309)는 버퍼(311)의 음악 데이터로부터 오디오 신호를 생성하고, 이 오디오 신호를 출력한다.
(7) 메모리카드 인터페이스(306)
메모리카드 인터페이스(306)는 휴대단말(300)과 메모리 카드(400)를 연결하는데 이용된다. 메모리카드 인터페이스(306)는 메모리 카드(400)에 데이터를 출력하고, 메모리 카드(400)로부터 데이터를 수신하여 CPU(301)에 제어하에 이를 CPU(301)에 출력한다.
(8) 무선제어부(314), 무선부(315), 및 안테나(316)
안테나(316), 무선부(315), 및 무선제어부(314)는 휴대단말(300)이 무선기지국과 휴대단말 네트워크를 통하여 연결되는 장치와 음성 또는 정보를 송수신한다.
안테나(316)와 무선부(315)를 통하여 메일이나 호출을 수신한 경우, 무선제어부(314)는 인터럽트 컨트롤러(304)에 인터럽트를 통보한다.
(9) 마이크(312) 및 변환부(313)
변환부(313)는 마이크(312)에서 수신한 음성을 전기적 신호로 변환하고, 이 를 무선제어부(314)에 출력한다.
2. 시큐어 처리 시스템(1)의 동작
2.1. 인증국 장치(100)의 동작
컴파일러(101)는 호출 프로그램(513)의 소스 코드와 보호 프로그램의 소스 코드를 수신하고, 이 소스 코드를 호출 프로그램(513)의 바이너리 데이터 및 보호 프로그램의 바이너리 데이터로 컴파일한다. 컴파일러(101)는 바이너리 데이터를 데이터 매입부(105)로 출력한다. 또한, 컴파일러(101)는 복호 프로그램(516)의 소스 코드와 시큐어 프로그램의 소스 코드의 입력을 수신하고, 이 소스 코드를 복호 프로그램(516)의 바이너리 데이터 및 시큐어 프로그램의 바이너리 데이터로 컴파일한다. 컴파일러(101)는 바이너리 데이터를 프로그램 암호화부(102)에 출력한다.
프로그램 암호화부(102)는 복호 프로그램(516)의 바이너리 데이터와 시큐어 프로그램의 바이너리 데이터를 수신한다. 프로그램 암호화부(102)는 또한 프로그램 키를 수신한다. 프로그램 암호화부(102)는 프로그램 키를 이용하여 시큐어 프로그램을 암호화하여 암호화 프로그램(517)을 생성한다. 프로그램 암호화부(102)는 복호 프로그램(516)과 암호화 프로그램(517)을 데이터 매입부(105)와 해시값 산출부(104)에 TRS영역 프로그램으로서 출력한다.
해시값 산출부(104)는 TRS영역 프로그램을 수신한다. 또한, 해시값 산출부(104)는 비밀 키를 수신한다. 해시값 산출부(104)는 해시 함수에 따라 비밀 키를 이용하여 TRS영역 프로그램의 해시값을 산출한다. 또한, 해시값 산출부(104)는 TRS영역 프로그램의 바이너리 사이즈를 산출한다. 해시값 산출부(104)는 해시값과 바 이너리 사이즈를 데이터 매입부(105)에 출력한다.
키 암호화부(103)는 프로그램 키와 마스터 키를 수신하고, 마스터 키를 이용하여 프로그램 키를 암호화하여 암호화 키를 생성한다. 키 암호화부(103)는 암호화 키를 데이터 매입부(105)에 출력한다.
데이터 매입부(105)는 호출 프로그램(513)의 컴파일러(101)로부터 바이너리 데이터를, 해시값 산출부(104)로부터 해시값과 바이너리 사이즈를, 그리고 키 암호화부(103)로부터 암호화 키를 수신한다. 데이터 매입부(105)는 호출 프로그램(513)의 해시값을 변형 검출값(541)으로 매입한다. 또한, 데이터 매입부(105)는 호출 프로그램(513)의 바이너리 사이즈와 암호화 키를 바이너리 사이즈(543) 및 암호화 키(544)로 매입한다. 데이터 매입부(105)는 컴파일러(101)로부터 보호 프로그램의 바이너리 데이터와 프로그램 암호화부(102)로부터 TRS영역 프로그램을 추가로 수신한다. 데이터 매입부(105)는 보호 프로그램의 호출 프로그램(513)을 포함하고, 보호 프로그램과 TRS영역 프로그램을 결합하여 제 2 시큐어처리 프로그램(502)을 형성한다. 데이터 매입부(105)는 제 2 시큐어처리 프로그램(502)을 기억부(106)에 기록한다.
송신부(107)는 제 2 시큐어처리 프로그램(502)을 기억부(106)로부터 판독하고, 제 2 시큐어처리 프로그램(502)을 롬 라이터(200)에 출력한다.
2.2. 휴대단말(300)의 음악데이터 재생동작
(1) 재생
도 13 내지 17을 참조하여, 휴대단말(300)이 프로그램의 실행을 통하여 메모 리 카드(400)에 기록된 음악데이터를 재생하는 동작을 설명한다.
입력부(307)를 통하여 메모리 카드(400)의 음악데이터를 재생하라는 사용자 조작의 입력을 수신한 경우, 애플리케이션(505)은 제 2 시큐어처리 프로그램(502)을 시작한다(S701).
제 2 시큐어처리 프로그램(502)에서, 영역확보 프로그램(511)은 시큐어 프로그램의 실행 중 메모리 영역을 동적으로 확보하기 위한 가상 메모리 공간을 메모리(305)에서 확보한다(S702). 또한, 인터럽트금지 프로그램(512)은 인터럽트를 무효로 한다(S703). 이와 같이, 인터럽트를 이용한 부정한 프로그램 분석과 변경은 금지된다. 인터럽트의 무효는 인터럽트가 유효로 될 때까지 유효하다. 다음, 호출 프로그램(513)은 제 1 시큐어처리 프로그램(501)을 호출하고, 변형 검출값(541), TRS영역 선두 어드레스(542), 바이너리 사이즈(543), 및 암호화 키(544)로 구성된 변형 검출 데이터를 제 1 시큐어처리 프로그램(501)에 송신한다(S704).
제 1 시큐어처리 프로그램(501)은 제 2 시큐어처리 프로그램(502)으로부터 변형 검출 데이터를 수신한다(S705). 제 1 시큐어처리 프로그램(501)에서, 회로절단 프로그램(551)은 "무효"를 나타내는 디버거 제어신호를 디버거 무효화회로(303)에 출력한다(S706). 그 결과, 디버거 무효화회로(303)는 디버거 장치와 연결을 절단한다. 이와 같이, 디버거 장치를 이용한 부정한 프로그램 분석과 변형은 금지된다.
다음, 변형검출 프로그램(552)은 다음의 처리를 수행한다.
변형검출 프로그램(552)은 TRS영역 프로그램으로서 TRS영역 선두 어드레스 (542)가 지정하는 메모리(305)의 위치로부터 바이너리 사이즈(543)에 대응하는 데이터량을 판독한다. 변형검출 프로그램(552)은 해시함수에 따라 비밀 키(562)를 이용하여 TRS영역 프로그램의 해시값을 산출한다(S709).
변형검출 프로그램(552)은 산출한 해시값과 변형 검출값(541)을 비교한다(S710). 두 값이 일치하지 않으면(S710:NO), 변형검출 프로그램(552)은 제 2 시큐어처리 프로그램(502)이 변형된 것으로 판정하고, 이어지는 처리를 중단한다. 회로접속 프로그램(557)은 "유효"를 나타내는 디버거 제어신호를 디버거 무효화회로(303)에 출력하고(S737), 동작을 종료한다.
두 값이 일치하면(S710:YES), 변형검출 프로그램(552)은 제 2 시큐어처리 프로그램(502)이 변형되지 않은 것으로 판정한다. 따라서, 키 복호 프로그램(553)은 마스터 키(563)를 이용하여 암호화 키(544)를 복호하여 프로그램 키를 취득한다(S711). 키 복호 프로그램(553)은 프로그램 키를 키 송신 프로그램(554)에 송신한다. 키 송신 프로그램(554)은 프로그램 키를 제 2 시큐어처리 프로그램(502)에 송신한다(S712). 또한, 실행 플래그(515)는 ON으로 설정된다(S714). 이후, 복호 프로그램(516)은 프로그램 키를 이용하여 암호화 프로그램(517)을 복호하여 시큐어 프로그램을 취득한다(S715). 이와 같이 한 후, 복호 프로그램(516)은 프로그램 키를 삭제한다(S716).
시큐어 프로그램은 다음의 처리를 수행한다(S717).
시큐어 프로그램에서, 인터럽트금지 해제 프로그램(521)은 단계 S703에서 행한 인터럽트의 무효를 해제한다. 이어, 인터럽트가 일어나면, 시큐어 프로그램은 인터럽트를 처리하기 위하여 대기한다. 인터럽트가 일어날 때 수행될 처리는 후술한다.
다음, 영역 초기화 프로그램(522)은 인증 프로그램(523)과 암호화 음악데이터 복호프로그램(524)이 사용할 데이터가 저장될 메모리 영역을 확보한다(S719).
인증 프로그램(523)은 인증절차(후술함)에 따라 제 1 시큐어처리 프로그램(501)을 인증한다(S720). 제 1 시큐어처리 프로그램(501)의 인증 프로그램(555)은 인증 프로그램(523)에 의한 인증을 행한다. 인증이 실패하면, 제 2 시큐어처리 프로그램(502)은 이어지는 처리를 중단하고, 제 1 시큐어처리 프로그램(501)의 회로접속 프로그램(557)은 동작을 종료하기 전에 "유효"를 나타내는 디버거 제어신호를 디버거 무효화회로(303)에 출력한다(S737).
인증이 성공하면, 제 2 시큐어처리 프로그램(502)과 제 1 시큐어처리 프로그램(501)은 공유 세션 키를 구축한다. 제 2 시큐어처리 프로그램(502)과 제 1 시큐어처리 프로그램(501) 간에 이어서 전송되는 데이터는 이 세션 키를 이용하여 암호화된다.
인증이 성공하면, 제 2 시큐어처리 프로그램(502)은 음악 재생프로그램(504)에 제어를 옮긴다.
음악 재생프로그램(504)은 메모리 카드(400)로부터 암호화 음악데이터(411)를 판독한다(S721). 음악 재생프로그램(504)은 또한 제 2 시큐어처리 프로그램(502)에 암호화 음악데이터(411)를 복호하도록 요구한다(S722).
암호화 음악데이터(411)를 복호하라는 요구를 수신한 경우, 제 2 시큐어처리 프로그램(502)은 영역 암호화 프로그램(526)을 호출한다. 영역 암호화 프로그램(526)은 단계 S719에서 확보된 메모리 영역의 데이터를 영역 키(525)를 이용하여 암호화한다(S723). 이후, 제 2 시큐어처리 프로그램(502)은 제 1 시큐어처리 프로그램(501)에 타이틀 키(421)를 취득하라고 요구한다(S724).
제 1 시큐어처리 프로그램(501)에서, 데이터 판독 프로그램(556)은 메모리 카드(400)의 인증부(403)와 상호 인증을 수행한다(S725). 상호 인증이 성공하면(S726:YES), 데이터 판독 프로그램(556)은 메모리 카드(400)의 시큐어영역(420)에 액세스하여 타이틀 키(421)를 취득한다(S727). 상호 인증이 실패하면, 데이터 판독 프로그램(556)은 타이틀 키(421)를 취득할 수 없다. 이 경우, 회로접속 프로그램(557)은 "유효"를 나타내는 디버거 제어신호를 디버거 무효화회로(303)에 출력하고(S737), 동작을 종료한다.
제 1 시큐어처리 프로그램(501)은 세션 키를 이용하여 타이틀 키(421)를 암호화하고, 암호화 타이틀 키를 생성한다(S728). 제 1 시큐어처리 프로그램(501)은 암호화 타이틀 키를 제 2 시큐어처리 프로그램(502)에 송신한다.
제 2 시큐어처리 프로그램(502)에서, 영역 복호 프로그램(527)은 영역 키(525)를 이용하여 메모리 영역의 암호화 데이터를 복호하여 원래의 데이터를 복구한다(S729). 인증 프로그램(523)은 세션 키를 이용하여 암호화 타이틀 키를 복호하여 타이틀 키(421)를 취득한다(S730). 이어서, 암호화 음악데이터 복호프로그램(524)은 음악 재생프로그램(504)이 메모리 카드(400)로부터 판독한 암호화 음악데이터(411)를 타이틀 키(421)를 이용하여 복호한다(S731). 그 결과, 음악데이터를 취득한다. 암호화 음악데이터 복호프로그램(524)은 음악데이터를 음악 재생프로그램(504)에 송신한다.
음악 재생프로그램(504)은 음악데이터를 재생한다(S732).
음악데이터의 재생이 완료되면(S733), 음악 재생프로그램(504)은 제 2 시큐어처리 프로그램(502)에 제어를 옮긴다. 제 2 시큐어처리 프로그램(502)에서, 영역 종료처리 프로그램(528)은 단계 S719에서 확보한 메모리 영역을 해제하고(S734), 제 1 시큐어처리 프로그램(501)의 종료 함수를 호출한다(S735). 또한, 실행 플래그(515)는 OFF로 설정된다(S736).
제 1 시큐어처리 프로그램(501)에서, 회로접속 프로그램(557)은 "유효"를 나타내는 디버거 제어신호를 디버거 무효화회로(303)에 출력하고(S737), 동작을 종료한다.
(2) 인증
도 18을 참조하여 단계 S720에서 제 2 시큐어처리 프로그램(502)에 의한 제 1 시큐어처리 프로그램(501)의 인증절차를 설명한다.
제 2 시큐어처리 프로그램(502)은 난수 R0을 생성하고, 난수 R0을 제 1 시큐어처리 프로그램(501)에 송신한다(S751).
제 1 시큐어처리 프로그램(501)은 난수 R0를 수신하고, 인증 키(565)를 이용하여 난수 R0을 암호화하여 인증 값 R1을 생성한다(S752). 제 1 시큐어처리 프로그램(501)은 인증 값 R1을 제 2 시큐어처리 프로그램(502)에 송신한다(S753).
제 2 시큐어처리 프로그램(502)은 제 1 시큐어처리 프로그램(501)으로부터 인증 값 R1을 수신한다. 제 2 시큐어처리 프로그램(502)은 인증 키(531)를 이용하여 난수 R0을 암호화하여 인증 값 R2를 생성한다(S754). 제 2 시큐어처리 프로그램(502)은 인증 값 R1을 인증 값 R와 비교한다(S755). 두 값이 일치하지 않으면(S755:NO), 제 2 시큐어처리 프로그램(502)은 "다름(mismatch)"을 나타내는 판정 결과를 제 1 시큐어처리 프로그램(501)에 송신하고(S756), 처리를 종료한다. 두 값이 일치하면(S755:YES), 제 2 시큐어처리 프로그램(502)은 "동일(match)"을 나타내는 판정 결과를 제 1 시큐어처리 프로그램(501)에 송신한다(S757). 이어 제 2 시큐어처리 프로그램(502)은 일방향 함수를 이용하여 난수 R0와 인증 키(531)로부터 세션 키를 생성한다(S759).
수신한 판정 결과가 "다름"을 나타내면(S758:NO), 제 1 시큐어처리 프로그램(501)은 처리를 종료한다. 수신한 판정 결과가 "같음"을 나타내면(S758:YES), 제 1 시큐어처리 프로그램(501)은 일방향 함수를 이용하여 난수 R0과 인증 키(565)로부터 세션 키를 생성한다(S760).
따라서, 제 2 시큐어처리 프로그램(502)은 제 1 시큐어처리 프로그램(501)을 인증하고, 인증이 성공하면 세션 키를 공유한다. 제 1 시큐어처리 프로그램(501)과 제 2 시큐어처리 프로그램(502) 간에 이어서 전송되는 데이터는 이 세션 키를 이용하여 암호화된다.
(3) 인터럽트
도 19를 참조하여 제 2 시큐어처리 프로그램(502)의 실행 중 인터럽트가 일어난 경우 CPU(301)의 동작을 설명한다. 여기서, 인터럽트는 일 예로 메일 수신이 다.
인터럽트 컨트롤러(304)로부터 인터럽트 신호를 수신한 경우(S771), CPU(301)는 벡터 테이블(503)을 판독하고(S772), 벡터 테이블(503)에 따라 인터럽트 핸들러(518)를 실행한다(S773).
먼저, CPU(301)는 실행 플래그(515)를 판독한다(S774). 실행 플래그(515)가 ON이면(S775:ON), CPU(301)는 암호화/복호 키를 이용하여 메모리 영역의 데이터를 암호화한다(S776). 또한, CPU(301)는 컨텍스트(context)를 저장하고(S777), 메일 수신 처리를 수행한다(S778). 실행 플래그(515)가 OFF이면(S775:OFF), CPU(301)는 메모리 영역의 데이터를 암호화하지 않고 단계 S777과 S778을 수행한다.
메일 수신 처리 후, 실행 플래그(515)가 ON이면(S779:ON), CPU(301)는 메모리 영역의 데이터를 복호하고(S780), 원래의 처리로 돌아간다. 실행 플래그(515)가 OFF이면(S779:OFF), CPU(301)는 메모리 영역의 데이터를 복호하지 않고 원래의 처리로 돌아간다.
3. 변형예
본 발명은 상기 실시예에 의해 기술되었지만, 상기에 한정되지 않는다는 것은 분명하다. 아래에 변형예가 주어진다.
(1) 상기 실시예는 휴대단말이 실행하는 암호화 음악데이터 복호 프로그램을 보호하는 예를 기술하였지만, 본 발명은 이것에 한정되지 않는다.
보호할 프로그램을 실행하는 장치의 예로 DVD 플레이어, DVD 리코더, PC, 및 PDA를 포함한다.
또한, 보호할 프로그램의 예로 휴대단말에서 비디오 콘텐츠나 게임을 재생할 때 사용되는 복호 프로그램, 및 DVD 리코더에 콘텐츠를 기록할 때 사용되는 기록 프로그램을 포함한다. 따라서, 본 발명은 부정한 분석과 변형에 대해 보호할 필요가 있는 어떠한 프로그램에도 적용할 수 있다.
(2) 상기 실시예는 해시값이 변형 검출 값으로 사용되는 경우를 기술하였지만, TRS영역 프로그램에 고유한 어떠한 값도 변형 검출 값으로 이용될 수 있다. 예를 들어, TRS영역 프로그램에 대한 디지털 서명이나 TRS영역 프로그램을 암호화함으로써 생성되는 데이터가 변형 검출 값으로 이용될 수 있다. 또한, 실시예에서 이용된 것과 다른 알고리즘이 해시값을 산출하는데 적용될 수 있다.
상기한 실시예는 변형 검출 값이 TRS영역 프로그램에 대해 생성되는 경우를 기술하였지만, 변형 검출 값은 대신 TRS영역 프로그램의 적어도 한 부분에 대해 생성될 수 있다. 선택적으로, 변형 검출 값은 제 2 시큐어처리 프로그램의 적어도 한 부분에 대해 생성될 수 있다.
또한, 변형 검출은 TRS영역 프로그램이나 제 2 시큐어처리 프로그램의 적어도 한 부분에 대한 매칭을 수행함으로써, 또는 TRS영역 프로그램이나 제 2 시큐어처리 프로그램의 적어도 한 부분에 유사(pseudo)-난수를 매입함으로써 실행될 수 있다. 다시 말해, 프로그램이 변형되었는지를 검출할 수 있는 어떠한 변형 검출도 적용할 수 있다.
상기한 실시예는 변형 검출이 디버거 무효화회로가 디버거 장치의 연결을 끊은 후 수행되는 경우를 기술한다. 대안으로, 디버거 무효화회로의 연결 차단 전에 변형 검출이 수행될 수 있다. 이러한 경우, 변형이 검출되지 않으면, 디버거 무효화회로는 이어지는 처리로 진행하도록 디버거 장치를 연결 차단한다.
(3) 상기한 실시예는 제 2 시큐어처리 프로그램의 호출 프로그램이 변형 검출 데이터를 제 1 시큐어처리 프로그램으로 송신하는 경우를 기술한다. 대안으로, 제 2 시큐어처리 프로그램 이외의 다른 프로그램이 변형 검출 데이터를 제 1 시큐어처리 프로그램에 송신할 수 있다. 이 경우, 제 2 시큐어처리 프로그램의 호출 프로그램은 제 1 시큐어처리 프로그램을 호출한다. 반면, 제 1 시큐어처리 프로그램에 변형 검출 데이터를 송신하는 송신 프로그램은 메모리(305)에 저장된다. 이에 따라, 제 2 시큐어처리 프로그램에 의해 호출된 경우, 제 1 시큐어처리 프로그램은 송신 프로그램에 변형 검출 데이터를 송신하도록 요구한다. 송신 프로그램은 응답으로 변형 검출 데이터를 제 1 시큐어처리 프로그램에 송신한다.
그 경우, 인증국 장치는 제 2 시큐어처리 프로그램의 보호 프로그램에 이 송신 프로그램을 포함하지 않지만, 제 2 시큐어처리 프로그램과 별개로 이를 생성한다.
또한, 제 1 시큐어처리 프로그램은 미리 제 2 시큐어처리 프로그램의 변형 검출 데이터를 포함할 수 있다.
(4) 상기한 실시예는 제 2 시큐어처리 프로그램이 제 1 시큐어처리 프로그램에 대해 일방향 인증을 수행하는 것을 기술하지만, 제 2 시큐어처리 프로그램과 제 1 시큐어처리 프로그램은 양방향 인증을 수행할 수 있다. 또한, 상기한 실시예는 챌린지-레스폰스(challenge-response) 인증방법의 이용을 기술하지만, 프로그램을 인증하기 위한 다른 인증방법이 동일하게 이용될 수 있다.
상기한 실시예는 인증 값 R1과 R2가 인증 키를 이용하여 난수 R0을 암호화함으로써 생성되는 경우를 기술하지만, 이들은 대신 난수 R0에 일방향 함수를 적용함으로써 생성될 수 있다.
상기한 실시예는 세션 키가 일방향 함수를 이용하여 난수 R0과 인증 키로부터 생성되는 경우를 기술하지만, 세션 키는 대신 암호화에 의해 생성될 수 있다.
(5) 상기한 실시예는 영역 암호화 프로그램이 제 2 시큐어처리 프로그램으로부터 제 1 시큐어처리 프로그램으로 제어가 옮겨지기 전에 메모리 영역의 데이터를 암호화하는 경우를 기술한다. 또한, 영역 암호화 프로그램은, 제 2 시큐어처리 프로그램이 외부함수를 호출하는 경우와 같이 제어가 제 2 시큐어처리 프로그램으로부터 다른 프로그램으로 전송되는 경우, 데이터를 보호하기 위하여 메모리 영역의 데이터를 암호화할 수 있다.
그러한 경우, 제어가 제 2 시큐어처리 프로그램으로 돌아오면, 영역 복호 프로그램은 메모리 영역의 암호화 데이터를 복호하여 원래의 데이터를 복구한다.
(6) 고유한 마스터 키는 보호할 프로그램을 실행하는 각 장치에 부여될 수 있다. 이 경우, 부정한 사용자가 한 장치의 마스터 키를 훔쳐서 이 마스터 키를 이용하여 다른 장치를 공격하려고 시도하더라도, 부정한 사용자는 다른 장치를 올바르게 동작할 수 없다. 이는 부정한 행위에 의해 기인하는 손해를 최소화할 수 있다.
(7) 상기한 실시예는 제 1 시큐어처리 프로그램과 제 2 시큐어처리 프로그램 이 각각 인증 키를 포함하는 경우를 기술한다. 선택적으로, 인증 키는 프로그램 키나 변형 검출값에 기초하여 산출될 수 있다.
또한, 인증국 장치는 마스터 키를 이용하여 인증 키를 암호화할 수 있다. 이 경우, 암호화 프로그램을 복호하기 위한 프로그램 키는 인증 키에 기초하여 산출할 수 있다.
인증에 사용되는 키와 암호화 프로그램의 복호에 사용되는 키가 이와 같이 종속관계를 가질 때, 어떠한 키도 암호화될 수 있다. 또한, 가령 다른 키를 이용하여 암호화 키를 암호화함으로써 더 많은 수의 키를 이용하여 다수의 암호화 단계가 수행될 수 있다.
(8) 본 발명은 또한 상기한 방법에 적용된다. 이 방법은 컴퓨터에 의해 실행되는 컴퓨터 프로그램에 의해 달성될 수 있다. 이러한 컴퓨터 프로그램은 디지털 신호로 분배될 수 있다.
본 발명은 상기한 컴퓨터 프로그램이나 디지털 신호가 기록되는 컴퓨터-판독가능한 저장매체, 가령 플렉시블 디스크, 하드 디스크, CD-ROM, MO, DVD, DVD-ROM, DVD-RAM, BD, 또는 반도체 메모리에 의해 달성될 수 있다. 반대로, 본 발명은 이러한 저장매체에 기록되는 컴퓨터 프로그램이나 디지털 신호에 의해서도 달성될 수 있다.
본 발명을 달성하는 컴퓨터 프로그램이나 디지털 신호는, 전기통신선, 유무선 통신선, 또는 인터넷을 통하여 전송될 수 있다.
또한, 본 발명은 컴퓨터 프로그램에 따라 동작하는 마이크로프로세서와 이 컴퓨터 프로그램을 저장하는 메모리를 포함하는 컴퓨터 시스템일 수 있다.
또한, 컴퓨터 프로그램 또는 디지털 신호를 기록매체 장치에 전송함으로써, 또는 컴퓨터 프로그램 또는 디지털 신호를 네트워크 등을 통하여 전송함으로써, 컴퓨터 프로그램 또는 디지털 신호는 다른 독립된 컴퓨터 시스템에 제공될 수 있다. 이 독립된 컴퓨터 시스템은 컴퓨터 프로그램과 디지털 신호를 본 발명과 같이 작용하도록 실행할 수 있다.
(9) 본 발명은 상기한 실시예와 변형예의 임의의 조합일 수 있다.
본 발명은 컴퓨터 프로그램이나 영화, 음악 등의 디지털 콘텐츠와 같은 소프트웨어를 제공하는 소프트웨어 산업에 재현하여 연속적으로 사용할 수 있다. 또한, 본 발명은 전기제품 등의 제조산업에서 제조되고 판매될 수 있다.

Claims (11)

  1. 프로그램 실행장치로서,
    상기 실행을 제어할 수 있는 외부장치와 연결되고, 제 1 프로그램과 제 2 프로그램을 실행하는 실행부;
    상기 실행부가 상기 제 1 프로그램을 실행하고 있는 동안 상기 실행부를 상기 외부장치로부터 연결을 끊는 제 1 보호부; 및
    상기 실행부가 상기 제 2 프로그램을 실행하고 있는 동안 상기 제 1 프로그램을 보호하는 제 2 보호부를 포함하는 것을 특징으로 하는 프로그램 실행장치.
  2. 청구항 1에 있어서,
    상기 제 2 보호부는 상기 실행부가 상기 제 1 프로그램을 실행할 때 데이터를 기록하는 메모리 영역을 포함하며,
    상기 제 2 보호부는 상기 실행부가 상기 제 1 프로그램에서 상기 제 2 프로그램으로 전환하기 바로 전에 상기 메모리 영역의 데이터를 암호화하고, 상기 실행부가 상기 제 2 프로그램에서 상기 제 1 프로그램으로 다시 전환한 후 상기 메모리 영역의 상기 암호화 데이터를 복호하는 것을 특징으로 하는 프로그램 실행장치.
  3. 청구항 2에 있어서,
    상기 제 1 프로그램은 상기 제 2 프로그램을 호출하는 호출 프로그램을 포함 하며,
    상기 제 2 보호부는 상기 실행부가 상기 제 1 프로그램의 상기 호출 프로그램을 실행하기 바로 전에 상기 메모리 영역의 데이터를 암호화하는 것을 특징으로 하는 프로그램 실행장치.
  4. 청구항 2에 있어서,
    인터럽트(interrupt)를 검출하는 인터럽트 검출부를 추가로 포함하며,
    상기 제 2 프로그램은 상기 인터럽트가 일어날 때 수행될 동작을 나타내고,
    상기 실행부가 상기 제 1 프로그램을 실행하고 있는 동안 상기 인터럽트 검출부는 상기 인터럽트를 검출하고, 상기 제 2 보호부는 상기 제 1 프로그램에서 상기 제 2 프로그램으로 전환하기 전에 상기 메모리 영역의 데이터를 암호화하는 것을 특징으로 하는 프로그램 실행장치.
  5. 청구항 1에 있어서,
    인터럽트를 검출하는 인터럽트 검출부; 및
    상기 제 1 프로그램을 암호화함으로써 생성되는 암호화 프로그램을 저장하는 저장부를 추가로 포함하며,
    상기 제 2 프로그램은, 상기 인터럽트가 일어날 때, 수행될 동작을 나타내고,
    상기 제 2 보호부는 프로그램 키를 취득하고, 상기 취득한 프로그램 키를 이 용하여 상기 암호화 프로그램을 복호하여 상기 제 1 프로그램을 취득하며, 이어 상기 프로그램 키를 삭제하고,
    상기 제 2 보호부는 상기 프로그램 키의 취득에서 상기 프로그램 키의 삭제까지 상기 실행부가 상기 제 2 프로그램을 실행하는 것을 금지하는 것을 특징으로 하는 프로그램 실행장치.
  6. 청구항 1에 있어서,
    상기 제 2 보호부는, (a) 상기 제 1 프로그램을 포함하는 처리 프로그램의 적어도 한 부분에 기초하여 상기 처리 프로그램이 생성될 때 생성되는 제 1 변형 검출값을 취득하고, (b) 상기 처리 프로그램의 적어도 한 부분에 기초하여 제 2 변형 검출값을 생성하며, (c) 상기 제 1 변형 검출값과 상기 제 2 변형 검출값이 다르면 상기 실행부가 상기 제 1 프로그램을 실행하는 것을 금지하는 것을 특징으로 하는 프로그램 실행장치.
  7. 청구항 6에 있어서,
    상기 처리 프로그램은 상기 제 1 변형 검출값을 포함하며,
    상기 제 2 보호부는 상기 처리 프로그램으로부터 상기 제 1 변형 검출값을 취득하는 것을 특징으로 하는 프로그램 실행장치.
  8. 인증국 장치로서,
    보호할 프로그램을 포함하는 처리 프로그램의 적어도 한 부분에 기초하여 변형 검출값을 생성하는 변형 검출값 생성부; 및
    상기 변형 검출값을 상기 처리 프로그램에 매입(embed)하는 매입부를 포함하는 것을 특징으로 하는 인증국 장치.
  9. 청구항 8에 있어서,
    보호할 상기 프로그램을 실행하는 프로그램 실행장치에 대응하는 디바이스 키를 이용하여, 보호할 상기 프로그램을 암호화함으로써 생성되는 암호화 프로그램을 복호하기 위한 프로그램 키를 암호화하는 키 암호화부; 및
    상기 매입부는 상기 암호화 프로그램 키를 상기 처리 프로그램에 추가로 매입하는 것을 특징으로 하는 인증국 장치.
  10. 보호할 프로그램을 실행하고, 상기 보호할 프로그램을 실행할 때 데이터를 기록하는데 이용되는 메모리 영역을 구비한 프로그램 실행장치에 사용하기 위한 컴퓨터 판독가능한 프로그램으로서,
    상기 실행이 상기 보호할 프로그램에서 다른 프로그램으로 전환하기 바로 전에 상기 메모리 영역의 데이터를 암호화하기 위한 코드; 및
    상기 실행이 상기 보호할 프로그램에서 다른 프로그램으로 전환한 후 상기 메모리 영역의 암호화 데이터를 복호하기 위한 코드를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 프로그램.
  11. 청구항 10에 있어서,
    상기 프로그램 실행장치는 상기 보호할 프로그램을 암호화함으로써 생성되는 암호화 프로그램을 보유하고,
    상기 컴퓨터 판독가능한 프로그램은,
    프로그램 키를 취득하기 위한 코드;
    상기 보호할 프로그램을 취득하기 위해 상기 프로그램 키를 이용하여 상기 암호화 프로그램을 복호하기 위한 코드;
    상기 프로그램 키를 삭제하기 위한 코드; 및
    상기 프로그램 키의 취득에서 상기 프로그램 키의 삭제까지 상기 다른 프로그램의 실행을 금지하기 위한 코드를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 프로그램.
KR1020067003694A 2003-08-26 2004-08-26 프로그램 실행장치 KR101059257B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003301554 2003-08-26
JPJP-P-2003-00301554 2003-08-26
PCT/JP2004/012666 WO2005020043A2 (en) 2003-08-26 2004-08-26 Program execution device

Publications (2)

Publication Number Publication Date
KR20060119876A true KR20060119876A (ko) 2006-11-24
KR101059257B1 KR101059257B1 (ko) 2011-08-24

Family

ID=34213903

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067003694A KR101059257B1 (ko) 2003-08-26 2004-08-26 프로그램 실행장치

Country Status (6)

Country Link
US (13) US7533276B2 (ko)
EP (3) EP3798874A1 (ko)
JP (2) JP4892018B2 (ko)
KR (1) KR101059257B1 (ko)
CN (2) CN1871568B (ko)
WO (1) WO2005020043A2 (ko)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3798874A1 (en) 2003-08-26 2021-03-31 Panasonic Intellectual Property Corporation of America Program execution device
KR101037006B1 (ko) * 2003-11-28 2011-05-25 파나소닉 주식회사 데이터 처리장치
US8793602B2 (en) 2004-01-15 2014-07-29 The Mathworks, Inc. System and method for scheduling the execution of model components using model events
US8683426B2 (en) * 2005-06-28 2014-03-25 The Mathworks, Inc. Systems and methods for modeling execution behavior
US20060184803A1 (en) * 2005-02-12 2006-08-17 Rainer Ulrich Method and system for digital rights management in a mobile multimedia processor
US7395385B2 (en) * 2005-02-12 2008-07-01 Broadcom Corporation Memory management for a mobile multimedia processor
US20060182129A1 (en) * 2005-02-16 2006-08-17 Mutch Karl N Distributed markup and processing apparatus and method
CN100424611C (zh) * 2005-07-28 2008-10-08 国际商业机器公司 用于处理加密软件的方法和中央处理单元
JP4631658B2 (ja) * 2005-11-09 2011-02-16 ソニー株式会社 デジタル放送受信システム及びデジタル放送受信装置
JP2007215162A (ja) * 2006-01-11 2007-08-23 Canon Inc 情報処理装置及びその制御方法、プログラム、記憶媒体
TWI330795B (en) * 2006-11-17 2010-09-21 Via Tech Inc Playing systems and methods with integrated music, lyrics and song information
US7882365B2 (en) * 2006-12-22 2011-02-01 Spansion Llc Systems and methods for distinguishing between actual data and erased/blank memory with regard to encrypted data
US20080229115A1 (en) * 2007-03-16 2008-09-18 Microsoft Corporation Provision of functionality via obfuscated software
US8571211B2 (en) * 2007-05-14 2013-10-29 Samsung Electronics Co., Ltd Method and apparatus for generating security key in a mobile communication system
JPWO2009013825A1 (ja) * 2007-07-25 2010-09-30 パナソニック株式会社 情報処理装置、及び改竄検証方法
US20110035601A1 (en) * 2007-12-21 2011-02-10 University Of Virginia Patent Foundation System, method and computer program product for protecting software via continuous anti-tampering and obfuscation transforms
US20090172420A1 (en) * 2007-12-31 2009-07-02 Kabushiki Kaisha Toshiba Tamper resistant method and apparatus for a storage device
JP5269067B2 (ja) * 2008-03-14 2013-08-21 パナソニック株式会社 プログラム実行装置およびその制御方法
CN101686124B (zh) * 2008-09-23 2016-11-09 Vixs系统公司 保护加密信号的安全模块及与之结合使用的系统和方法
US9117071B2 (en) * 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8677329B2 (en) 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US8281154B2 (en) * 2009-07-23 2012-10-02 International Business Machines Corporation Encrypting data in volatile memory
US9135434B2 (en) * 2010-04-19 2015-09-15 Appcentral, Inc. System and method for third party creation of applications for mobile appliances
JP2012084071A (ja) 2010-10-14 2012-04-26 Toshiba Corp デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置
JP2012173870A (ja) * 2011-02-18 2012-09-10 Toshiba Corp 半導体装置及びメモリ保護方法
JP5225412B2 (ja) * 2011-03-03 2013-07-03 株式会社東芝 通信装置および通信方法
JP5775738B2 (ja) 2011-04-28 2015-09-09 富士通株式会社 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム
US8661527B2 (en) * 2011-08-31 2014-02-25 Kabushiki Kaisha Toshiba Authenticator, authenticatee and authentication method
US9152770B2 (en) * 2011-09-13 2015-10-06 Panasonic Intellectual Property Management Co., Ltd. Content reproduction system, information processing terminal, media server, secure device, and server secure device
JP5275432B2 (ja) 2011-11-11 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
JP5112555B1 (ja) 2011-12-02 2013-01-09 株式会社東芝 メモリカード、ストレージメディア、及びコントローラ
JP5204290B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、システム、及び装置
JP5100884B1 (ja) 2011-12-02 2012-12-19 株式会社東芝 メモリ装置
JP5204291B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、装置、システム
CN104025500B (zh) 2011-12-29 2017-07-25 英特尔公司 使用在物理上不可克隆的函数的安全密钥存储
JP5275482B2 (ja) 2012-01-16 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
US9742563B2 (en) * 2012-09-28 2017-08-22 Intel Corporation Secure provisioning of secret keys during integrated circuit manufacturing
US8938792B2 (en) 2012-12-28 2015-01-20 Intel Corporation Device authentication using a physically unclonable functions based key generation system
US9201811B2 (en) 2013-02-14 2015-12-01 Kabushiki Kaisha Toshiba Device and authentication method therefor
US8984294B2 (en) 2013-02-15 2015-03-17 Kabushiki Kaisha Toshiba System of authenticating an individual memory device via reading data including prohibited data and readable data
CN104346299B (zh) * 2013-08-01 2018-03-06 展讯通信(上海)有限公司 一种移动终端更新的控制方法和装置
JP6265783B2 (ja) * 2014-03-06 2018-01-24 キヤノン株式会社 暗号化/復号化システム及びその制御方法、並びにプログラム
US11068580B2 (en) * 2015-09-07 2021-07-20 Karamba Security Ltd. Context-based secure controller operation and malware prevention
US10475034B2 (en) 2016-02-12 2019-11-12 Square, Inc. Physical and logical detections for fraud and tampering
CN108781407B (zh) * 2016-03-10 2021-01-08 瑞典爱立信有限公司 无线资源控制连接建立
CN105930721B (zh) * 2016-04-28 2018-11-23 北京小米移动软件有限公司 一种管理应用程序的方法和装置
WO2018127816A1 (en) * 2017-01-03 2018-07-12 Karamba Security Mode-based controller security and malware prevention
US10169563B2 (en) 2017-01-27 2019-01-01 International Business Machines Corporation Encryption authorization dongle having volatile memory
US11496507B2 (en) * 2017-03-09 2022-11-08 Nec Corporation Abnormality detection device, abnormality detection method and abnormality detection program
JP6463435B1 (ja) * 2017-10-04 2019-02-06 三菱電機株式会社 制御装置および制御方法
JP7000895B2 (ja) * 2018-02-09 2022-01-19 株式会社デンソー 配布対象データの配布システム、及び配布対象データの取得方法
US11182794B1 (en) 2018-03-29 2021-11-23 Square, Inc. Detecting unauthorized devices using proximity sensor(s)
US11257072B1 (en) 2018-03-29 2022-02-22 Square, Inc. Detecting unauthorized devices
US11105850B2 (en) * 2018-05-24 2021-08-31 Seagate Technology Llc Secure debug system for electronic devices
US10733291B1 (en) * 2018-06-11 2020-08-04 Square, Inc. Bi-directional communication protocol based device security

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4590552A (en) * 1982-06-30 1986-05-20 Texas Instruments Incorporated Security bit for designating the security status of information stored in a nonvolatile memory
US4558176A (en) * 1982-09-20 1985-12-10 Arnold Mark G Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
US5475826A (en) * 1993-11-19 1995-12-12 Fischer; Addison M. Method for protecting a volatile file using a single hash
JP3344810B2 (ja) * 1994-03-02 2002-11-18 松下電器産業株式会社 ソフトウェア保護システム
US20120166807A1 (en) * 1996-08-12 2012-06-28 Intertrust Technologies Corp. Systems and Methods Using Cryptography to Protect Secure Computing Environments
CA2225805C (en) 1995-06-29 2002-11-12 Allan E. Alcorn Electronic casino gaming system with improved play capacity, authentication and security
US5757914A (en) * 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
JP3627384B2 (ja) * 1996-01-17 2005-03-09 富士ゼロックス株式会社 ソフトウェアの保護機能付き情報処理装置及びソフトウェアの保護機能付き情報処理方法
US5944821A (en) * 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US6202153B1 (en) * 1996-11-22 2001-03-13 Voltaire Advanced Data Security Ltd. Security switching device
US5969632A (en) * 1996-11-22 1999-10-19 Diamant; Erez Information security method and apparatus
US6523119B2 (en) * 1996-12-04 2003-02-18 Rainbow Technologies, Inc. Software protection device and method
US6094724A (en) * 1997-11-26 2000-07-25 Atmel Corporation Secure memory having anti-wire tapping
US5991399A (en) * 1997-12-18 1999-11-23 Intel Corporation Method for securely distributing a conditional use private key to a trusted entity on a remote system
WO2000019299A1 (en) 1998-09-25 2000-04-06 Hughes Electronics Corporation An apparatus for providing a secure processing environment
US6374402B1 (en) * 1998-11-16 2002-04-16 Into Networks, Inc. Method and apparatus for installation abstraction in a secure content delivery system
JP3389186B2 (ja) * 1999-04-27 2003-03-24 松下電器産業株式会社 半導体メモリカード及び読み出し装置
JP4395302B2 (ja) 1999-04-27 2010-01-06 パナソニック株式会社 半導体メモリカード及びその制御方法
US7143445B1 (en) * 1999-05-31 2006-11-28 Sony Corporation Information processing apparatus, information processing method, and program storage medium
US7099479B1 (en) * 1999-08-27 2006-08-29 Sony Corporation Information transmission system, transmitter, and transmission method as well as information reception system, receiver and reception method
DE19962547A1 (de) * 1999-12-23 2001-09-13 Pag Parkhaus Ag Remontierbares Parkhaus
US6983374B2 (en) 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
US7043641B1 (en) * 2000-03-08 2006-05-09 Igt Encryption in a secure computerized gaming system
US6990579B1 (en) * 2000-03-31 2006-01-24 Intel Corporation Platform and method for remote attestation of a platform
JP2004503860A (ja) * 2000-06-12 2004-02-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ処理方法及び保護された命令の実行のための装置
US7477742B2 (en) * 2000-07-06 2009-01-13 Fujitsu Limited Method and apparatus for controlling contents utilization, and a computer product
ES2180391B1 (es) * 2000-09-25 2003-12-16 Telesincro S A Circuito integrado.
JP4153653B2 (ja) * 2000-10-31 2008-09-24 株式会社東芝 マイクロプロセッサおよびデータ保護方法
US6938164B1 (en) * 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
JP4074057B2 (ja) 2000-12-28 2008-04-09 株式会社東芝 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法
JP4098478B2 (ja) 2001-01-31 2008-06-11 株式会社東芝 マイクロプロセッサ
SG160187A1 (en) * 2001-02-16 2010-04-29 Sony Corp Data processing method and its apparatus
JP2002244757A (ja) * 2001-02-19 2002-08-30 Sony Corp 半導体回路
JP3995894B2 (ja) * 2001-03-16 2007-10-24 日本電信電話株式会社 アプリケーション又はデータ格納メモリを具えた装置の使用可能記憶容量増大方法
US20020144138A1 (en) * 2001-03-29 2002-10-03 Maliszewski Richard L. Method for maintaining a security perimeter during the handling of digital content
US20030037237A1 (en) * 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
US20020157002A1 (en) * 2001-04-18 2002-10-24 Messerges Thomas S. System and method for secure and convenient management of digital electronic content
US6925570B2 (en) * 2001-05-15 2005-08-02 International Business Machines Corporation Method and system for setting a secure computer environment
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
JP3837368B2 (ja) * 2001-08-08 2006-10-25 松下電器産業株式会社 著作権保護システム、記録機器及び復号機器
JP4145118B2 (ja) 2001-11-26 2008-09-03 松下電器産業株式会社 アプリケーション認証システム
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
US7063440B2 (en) * 2002-06-03 2006-06-20 Everbrite, Llc LED accent lighting units
JP4475894B2 (ja) 2002-08-01 2010-06-09 パナソニック株式会社 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法
WO2004013744A2 (en) 2002-08-01 2004-02-12 Matsushita Electric Industrial Co., Ltd. Apparatuses and methods for decrypting encrypted blocks of data and locating the decrypted blocks of data in memory space used for execution
US7478248B2 (en) * 2002-11-27 2009-01-13 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for securing data on a portable storage device
EP3798874A1 (en) * 2003-08-26 2021-03-31 Panasonic Intellectual Property Corporation of America Program execution device
DE60312704T2 (de) * 2003-12-12 2007-12-06 Banksys S.A. Elektronische Datenverarbeitungseinrichtung
CN1655507A (zh) * 2004-02-02 2005-08-17 松下电器产业株式会社 进行卡应用间数据交换的保密装置和移动终端
US7886345B2 (en) * 2004-07-02 2011-02-08 Emc Corporation Password-protection module
US7584366B2 (en) * 2004-07-08 2009-09-01 At&T Intellectual Property I, L.P. Methods, systems and computer program products for detecting tampering of electronic equipment based on constrained time to obtain computational result
JP4391375B2 (ja) * 2004-09-30 2009-12-24 フェリカネットワークス株式会社 情報管理装置および方法、並びにプログラム
US7509419B2 (en) * 2005-01-13 2009-03-24 International Business Machines Corporation Method for providing remote access redirect capability in a channel adapter of a system area network
CN101379537B (zh) * 2006-02-06 2010-09-08 松下电器产业株式会社 安全处理装置、方法和程序
US7845005B2 (en) * 2006-02-07 2010-11-30 International Business Machines Corporation Method for preventing malicious software installation on an internet-connected computer
US7519830B2 (en) * 2006-08-03 2009-04-14 Motorola, Inc. Secure storage of data
US20080077767A1 (en) * 2006-09-27 2008-03-27 Khosravi Hormuzd M Method and apparatus for secure page swapping in virtual memory systems
JP4956292B2 (ja) * 2007-06-25 2012-06-20 パナソニック株式会社 情報セキュリティ装置およびカウンタ制御方法
JP5152571B2 (ja) 2008-03-24 2013-02-27 スタンレー電気株式会社 車両前照灯
EP2068068B1 (en) * 2007-12-07 2013-11-20 Stanley Electric Co., Ltd. Vehicle headlamp
US8549631B2 (en) * 2009-02-12 2013-10-01 Ahnlab, Inc. Internet site security system and method thereto
US8938625B2 (en) * 2011-06-29 2015-01-20 Sonic Ip, Inc. Systems and methods for securing cryptographic data using timestamps
US20130004142A1 (en) * 2011-06-29 2013-01-03 Rovi Corp. Systems and methods for device authentication including timestamp validation
US8695060B2 (en) * 2011-10-10 2014-04-08 Openpeak Inc. System and method for creating secure applications
US20180096143A1 (en) * 2016-09-30 2018-04-05 Li Xiaoning Secure change log for drive analysis
US10855465B2 (en) * 2016-11-10 2020-12-01 Ernest Brickell Audited use of a cryptographic key
US10521613B1 (en) * 2018-08-08 2019-12-31 Carlos Manuel Gonzalez Adaptive standalone secure software

Also Published As

Publication number Publication date
JP2011253558A (ja) 2011-12-15
US8181040B2 (en) 2012-05-15
US7533276B2 (en) 2009-05-12
CN1871568A (zh) 2006-11-29
WO2005020043A3 (en) 2005-06-30
US8522053B2 (en) 2013-08-27
US20060294369A1 (en) 2006-12-28
US10970424B2 (en) 2021-04-06
KR101059257B1 (ko) 2011-08-24
US20210192095A1 (en) 2021-06-24
US20230306145A1 (en) 2023-09-28
US11651113B2 (en) 2023-05-16
CN1871568B (zh) 2010-04-28
CN101853352B (zh) 2013-01-30
US20130312064A1 (en) 2013-11-21
JP4892018B2 (ja) 2012-03-07
WO2005020043A2 (en) 2005-03-03
CN101853352A (zh) 2010-10-06
JP2009151805A (ja) 2009-07-09
US20180247089A1 (en) 2018-08-30
US9218485B2 (en) 2015-12-22
US20140380503A1 (en) 2014-12-25
US20190251300A1 (en) 2019-08-15
US20180025184A1 (en) 2018-01-25
US20120198243A1 (en) 2012-08-02
EP3798874A1 (en) 2021-03-31
US9811691B2 (en) 2017-11-07
EP3043232A1 (en) 2016-07-13
US8874938B2 (en) 2014-10-28
US10607036B2 (en) 2020-03-31
US10108821B2 (en) 2018-10-23
EP1680724B1 (en) 2019-05-08
US20170061165A1 (en) 2017-03-02
EP1680724A2 (en) 2006-07-19
US9524404B2 (en) 2016-12-20
US20090150685A1 (en) 2009-06-11
US20200167509A1 (en) 2020-05-28
US10318768B2 (en) 2019-06-11
US20160070938A1 (en) 2016-03-10
JP5291159B2 (ja) 2013-09-18

Similar Documents

Publication Publication Date Title
KR101059257B1 (ko) 프로그램 실행장치
EP1276106B1 (en) Digital work protection system, recording medium apparatus, transmission apparatus, and playback apparatus
US20100241855A1 (en) Systems and Methods for Secure Execution of Code Using a Hardware Protection Module
JP4691337B2 (ja) プログラム実行装置、認証局装置
JP4564572B1 (ja) 送信装置、受信装置及びコンテンツ送受信方法
US9026794B2 (en) Information processing device and information processing method, and program
JP2007158559A (ja) 記録装置及び記録方法
KR20090012979A (ko) 복사 제어 정보에 따르지 않는 디지털 컨텐트의 사용을방지하는 방법 및 이를 위한 장치

Legal Events

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

Payment date: 20141117

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150716

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160701

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170720

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180719

Year of fee payment: 8