KR100924050B1 - 정보 처리 장치, 프로그램 로딩 방법, 기록 매체,프로그램 갱신 방법 및 회로 소자 - Google Patents

정보 처리 장치, 프로그램 로딩 방법, 기록 매체,프로그램 갱신 방법 및 회로 소자 Download PDF

Info

Publication number
KR100924050B1
KR100924050B1 KR1020030017352A KR20030017352A KR100924050B1 KR 100924050 B1 KR100924050 B1 KR 100924050B1 KR 1020030017352 A KR1020030017352 A KR 1020030017352A KR 20030017352 A KR20030017352 A KR 20030017352A KR 100924050 B1 KR100924050 B1 KR 100924050B1
Authority
KR
South Korea
Prior art keywords
program
data
verification
encrypted
predetermined
Prior art date
Application number
KR1020030017352A
Other languages
English (en)
Other versions
KR20030090493A (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 KR20030090493A publication Critical patent/KR20030090493A/ko
Application granted granted Critical
Publication of KR100924050B1 publication Critical patent/KR100924050B1/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
    • 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
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/72Protecting 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 in cryptographic circuits
    • 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
    • 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
    • G06F21/80Protecting 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 in storage media based on magnetic or optical technology, e.g. disks with sectors
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • 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
    • 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/2147Locking files
    • 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

Abstract

프로그램 갱신 시의 프로그램 데이터의 누설을 방지한다.
제어부는 제1 프로그램의 갱신을 요구하는 프로그램 갱신 요구에 응답하여, 제2 프로그램을 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신부와, 암호화 프로그램 데이터 수신부에서 수신한 암호화 프로그램 데이터를 소정의 복호 키를 이용하여 제2 프로그램으로 복호하는 복호부와, 복호부에 의해 암호화 프로그램 데이터로부터 복호된 제2 프로그램을 기억부에 기입하는 프로그램 기입부와, 복호부에서 복호된 제2 프로그램 및 기억부에 기입된 제2 프로그램의 외부 장치로부터의 추출을 제한하는 추출 제한부를 구비함으로써 실현한다.
Figure R1020030017352
정보 처리 장치, 기록 매체, 프로그램, 위법 복사, 복호, 암호화

Description

정보 처리 장치, 프로그램 로딩 방법, 기록 매체, 프로그램 갱신 방법 및 회로 소자{INFORMATION PROCESSING APPARATUS, PROGRAM LOADING METHOD, RECORDING MEDIUM, PROGRAM UPDATING METHOD AND CIRCUIT DEVICE}
도 1은 본 발명의 제1 실시 형태로서 나타내는 DVD-ROM 드라이브의 구성을 설명하기 위한 블록도.
도 2는 암호화에 대하여 설명하기 위한 도면.
도 3은 본 발명의 실시 형태로서 나타내는 DVD-ROM 드라이브에 있어서, 펌웨어를 갱신할 때의 동작에 대하여 설명하기 위한 흐름도.
도 4는 동 DVD-ROM 드라이브에 있어서, 업데이트 함수에 의한 펌웨어 갱신 동작에 대하여 설명하기 위한 제1 흐름도.
도 5는 동 DVD-ROM 드라이브에 있어서, 업데이트 함수에 의한 펌웨어 갱신 동작에 대하여 설명하기 위한 제2 흐름도.
도 6은 동 DVD-ROM 드라이브에 있어서, 펌웨어 갱신 처리 후, 갱신이 성공되었는지 여부를 확인하는 동작에 대하여 설명하기 위한 흐름도.
도 7은 동 DVD-ROM 드라이브의 CPU의 다른 구성을 설명하기 위한 블록도.
도 8은 본 발명의 제2 실시 형태로서 나타내는 DVD-ROM 드라이브의 구성을 설명하기 위한 블록도.
도 9는 동 DVD-ROM 드라이브의 복호부의 구성에 대하여 설명하기 위한 도면.
도 10은 동 DVD-ROM 드라이브의 암호화부의 구성에 대하여 설명하기 위한 도면.
도 11은 동 DVD-ROM 드라이브에 있어서, 업데이트 함수에 의한 펌웨어 갱신 동작에 대하여 설명하기 위한 제1 흐름도.
도 12는 동 DVD-ROM 드라이브에 있어서, 업데이트 함수에 의한 펌웨어 갱신 동작에 대하여 설명하기 위한 제2 흐름도.
도 13은 동 DVD-ROM 드라이브에 있어서, 펌웨어 갱신 처리 후, 갱신이 성공되었는지 여부를 확인하는 동작에 대하여 설명하기 위한 흐름도.
도 14는 본 발명의 제3 실시 형태로서 나타내는 DVD-ROM 드라이브의 구성을 설명하기 위한 블록도.
도 15는 동 DVD-ROM 드라이브의 복호부의 구성에 대하여 설명하기 위한 도면.
도 16은 동 DVD-ROM 드라이브에 있어서, 마이크로 프로그램을 로딩할 때의 동작에 대하여 설명하기 위한 흐름도.
도 17은 개찬 방지를 위한 검증 프로그램이 첨부된 암호화 프로그램이 생성될 때의 동작에 대하여 설명하기 위한 흐름도.
도 18은 검증 프로그램이 첨부된 암호화 프로그램을 실행하는 DVD-ROM 드라이브의 동작에 대하여 설명하기 위한 흐름도.
도 19는 검증 프로그램의 동작을 설명하기 위한 흐름도.
도 20은 검증 프로그램, 검증 데이터가 첨부된 프로그램 본체를 도시한 도면.
도 21은 해시 함수에 대하여 설명하기 위한 도면.
도 22는 검증 프로그램 및 검증 데이터가 첨부된 프로그램 본체를 암호화한 모습을 나타낸 도면.
도 23은 암호화된 데이터에 Check Sum 데이터를 첨부한 모습을 나타낸 도면.
<도면의 주요 부분에 대한 간단한 설명>
1 : DVD-ROM(Digital Versatile Disc-Read Only Memory)
2 : 광학 픽업 유닛
3 : 스핀들 모터
4 : 리드 프로세서
5 : 광학 픽업 유닛 드라이버
6 : 스핀들 모터 드라이버
7 : DVD 디코더
8 : 버퍼 메모리
9 : CPU(Central Processing Unit)
20 : CPU 코어
21 : 부팅 ROM(Read Only Memory)
21a : 암호화 처리부
22 : 플래시 ROM
23 : RAM(Random Access Memory)
31 : 외부 버스 컨트롤러
본 발명은 정보 처리 장치의 프로그램 갱신에 관한 것이다. 특히, 프로그램의 갱신 또는 로딩 시에, 프로그램 데이터의 누설을 저지함으로써 프로그램이 개찬되는 것을 방지하는 정보 처리 장치, 프로그램 로딩 방법, 기록 매체, 프로그램 갱신 방법 및 회로 소자에 관한 것이다.
DVD(Digital Versatile Disc)는 영화 1편분 상당의 영상과 음성의 디지털 데이터를 기록할 수 있는 기록 용량을 갖는 광 디스크이며, ROM(DVD-ROM: DVD-Read Only Memory)으로서 이용되고 있다.
DVD-ROM은 열화가 없는 디지털 데이터를 기록하고 있기 때문에, 기억되어 있는 디지털 데이터의 위법 복사나 위법 이용을 방지하기 위해서 몇 가지 프로텍트 기능이 갖추어져 있다.
예를 들면, DVD-ROM을 재생할 때의 프로텍트 기능으로서는 지역 코드(RC: Regional Code)에 의한 재생 제한이 있다. 지역 코드란, 세계를 6개로 나누어 각각에 부여한 번호를 말한다. 예를 들면, 미국의 지역 코드는 "1"이고, 일본의 지역 코드는 "2"이다.
지역 코드는 DVD-ROM과 DVD-ROM을 재생하는 DVD-ROM 드라이브 또는 DVD 재생 어플리케이션에 각각 주어지고, 각각의 지역 코드가 일치하지 않으면 재생을 할 수 없게 되어 있다. 예를 들면, 일본에서 생산된 DVD-ROM 드라이브에는 지역 코드 "2"가 주어져 있기 때문에, 미국에서 생산된 지역 코드 "1"의 DVD-ROM을 재생할 수는 없다. 이것은 영화 등의 콘텐츠 제작자를 보호할 목적으로 부가된 프로텍트 기능이다.
또한, DVD-ROM에는 디지털 복사를 방지하는 프로텍트 기능 또는 시스템이 있다. 이것은 CSS(Content Scrambling System)라고 불리며, 파일 자체는 하드디스크 등에 복사 가능하지만, 복사한 파일을 재생시키면 암호화된 데이터이기 때문에, MPEG(Moving Picture Experts Group) 데이터의 디코딩을 할 수 없게 함으로써 디지털 복사를 방지하고 있다.
그 밖에, DVD-ROM에는 아날로그 출력된 데이터의 복사를 방지하는 프로텍트 기능이나, 디지털 기기 사이에서의 디지털 데이터의 복사 세대를 관리하여 제한하는 프로텍트 기능 등이 있다.
이러한 프로텍트 기능은 DVD-ROM 드라이브 내의 소정의 ROM에 기입된 펌웨어라고 불리는 프로그램에 의해서 실행된다. 펌웨어는 하드웨어를 직접적으로 제어하는 소프트웨어를 ROM에 기입하여 하드웨어 내에 조립한 것이다.
DVD-ROM 드라이브의 소정의 ROM에 기입된 프로텍트 기능을 실행하는 펌웨어에 의해서, 부정하게 작성된 DVD 비디오를 배제할 수 있다.
그런데, 일반적으로, 이러한 펌웨어를 다시 기입하거나 변경하는 것은 곤란하다. 그러나, 예를 들면 PC(Personal Computer) 등에 접속하여 PC의 제어에 의해 서 작동하는 DVD-ROM 드라이브 등에서는, PC의 OS(Operating System)가 업데이트되는 것에 수반하여 펌웨어도 업데이트할 필요가 생긴다. 따라서, 이러한 DVD-ROM에서는 펌웨어의 갱신을 가능하게 하는 구성으로 되어 있다.
또한, PC와 DVD-ROM 드라이브의 접속이 잘 맞지 않는 경우 등에도, DVD-ROM 드라이브의 펌웨어를 갱신함으로써 개선시킬 수 있다.
펌웨어를 갱신 가능하게 하기 위해서는, 그 펌웨어를 저장하는 ROM에 데이터의 전기적 소거가 가능한 PROM인 EEPROM(Electrically Erasable Programmable Read-Only Memory) 등의, 소위 플래시 메모리가 이용된다.
그러나, 이러한 펌웨어를 갱신하는 경우, 펌웨어를 DVD-ROM 드라이브의 메이커가 제공하는 홈페이지 등에서 인터넷으로 간단히 다운로딩할 수 있기 때문에, 사용자는 펌웨어를 간단히 입수할 수 있다.
또한, 사용자는 입수한 펌웨어를 개찬하여, DVD-ROM 드라이브의 소정의 플래시 메모리에 저장함으로써, 상기한 DVD-ROM의 프로텍트 기능을 무효화시킨다고 하는 문제가 있다.
상기한 펌웨어에 한하지 않고 프로그램의 개찬은 프로그램의 전송을 필요로 하는 장치에는 반드시 발생하는 문제이다. 개찬 프로그램을 사용한 장치는 기대한 동작과 다른 동작을 하거나, 또한 최악의 경우에는 고장을 일으킨다고 하는 문제도 포함하고 있다.
따라서, 본 발명은 프로그램의 갱신 또는 로딩 시에, 외부에 프로그램 데이 터가 누설됨으로써 발생하는 프로그램의 개찬을 저지하여, 디지털 데이터의 부정 이용을 방지하는 정보 처리 장치, 프로그램 로딩 방법, 기록 매체, 프로그램 갱신 방법 및 회로 소자를 제공하는 것을 목적으로 한다.
일 양상에서, 본 발명에 따른 정보 처리 장치는, 소정의 프로그램을 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 수단과, 상기 암호화 프로그램 데이터 수신 수단에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호 키를 이용하여 상기 소정의 프로그램으로 복호하는 복호 수단과, 상기 복호 수단에 의해 상기 암호화 프로그램 데이터로부터 복호된 상기 소정의 프로그램을 기억하는 기억 수단과, 상기 기억 수단에 기억된 상기 소정의 프로그램을 판독하는 프로그램 판독 수단과, 상기 판독 수단에 의해서 판독된 상기 소정의 프로그램에 기초하여 해당 정보 처리 장치의 소정의 동작을 제어하는 제어 수단을 구비하는 것을 특징으로 한다.
다른 양상에서, 본 발명에 따른 프로그램 로딩 방법은, 정보 처리 장치에 소정의 프로그램을 로딩하기 위한 프로그램 로딩 방법에 있어서, 상기 소정의 프로그램을 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계와, 상기 암호화 프로그램 데이터 수신 단계에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호 키를 이용하여 상기 소정의 프로그램으로 복호하는 복호 단계와, 상기 복호 단계에서 상기 암호화 프로그램 데이터로부터 복호된 상기 소정의 프로그램을 기억 수단에 기억하는 기억 단계를 포함하는 것 을 특징으로 한다.
또 다른 양상에서, 본 발명에 따른 기록 매체는, 정보 처리 장치에 소정의 프로그램을 로딩하기 위한 프로그램이 기록된 기록 매체에 있어서, 상기 소정의 프로그램을 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계와, 상기 암호화 프로그램 데이터 수신 단계에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호 키를 이용하여 상기 소정의 프로그램으로 복호하는 복호 단계와, 상기 복호 단계에서 상기 암호화 프로그램 데이터로부터 복호된 상기 소정의 프로그램을 기억 수단에 기억하는 기억 단계를 포함하는 것을 특징으로 하는 프로그램이 기입되어 있다.
또 다른 양상에서, 본 발명에 따른 정보 처리 장치는, 제1 프로그램이 기억된 기억 수단과, 상기 기억 수단에 기억되어 있는 상기 제1 프로그램을 판독하고, 판독한 상기 제1 프로그램에 기초하여 해당 정보 처리 장치의 소정의 동작을 제어하는 제어 수단을 갖는 제어부를 갖는 정보 처리 장치에 있어서, 상기 제1 프로그램의 갱신을 요구하는 프로그램 갱신 요구에 응답하여, 제2 프로그램을 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 수단과, 상기 암호화 프로그램 데이터 수신 수단에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호 키를 이용하여 상기 제2 프로그램으로 복호하는 복호 수단과, 상기 암호화 프로그램 데이터로부터 상기 복호 수단에 의해 복호된 상기 제2 프로그램을 상기 제어부에 송신하기 위한 프로그램 송신 수단을 포함하는 것을 특징으로 한다. 상기 제어부는 상기 송신 수단에 의해 송신된 제2 프로그램을 수신하기 위한 프로그램 수신 수단과, 상기 프로그램 수신 수단에 의해 수신된 상기 제2 프로그램을 상기 기억 수단에 기입하기 위한 프로그램 기입 수단을 포함한다.
또 다른 양상에서, 본 발명에 따른 프로그램 갱신 방법은, 제1 프로그램이 기억된 기억 수단과, 상기 기억 수단에 기억되어 있는 상기 제1 프로그램을 판독하고, 판독한 상기 제1 프로그램에 기초하여 해당 정보 처리 장치의 소정의 동작을 제어하는 제어 수단을 갖는 제어부를 갖는 정보 처리 장치의 프로그램 갱신 방법에 있어서, 상기 제1 프로그램의 갱신을 요구하는 프로그램 갱신 요구에 응답하여, 제2 프로그램을 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계와, 상기 수신한 암호화 프로그램 데이터를 소정의 복호 키를 이용하여 상기 제2 프로그램으로 복호하는 복호 단계와, 상기 복호 단계에 의해 상기 암호화 프로그램 데이터로부터 복호된 제2 프로그램을 송신하는 프로그램 송신 단계와, 상기 프로그램 송신 단계에 의해 상기 제어부에 송신된 제2 프로그램을 수신하는 프로그램 수신 단계와, 상기 기억 수단에서 상기 프로그램 수신 단계에서 수신된 제2 프로그램을 기입하는 프로그램 기입 단계를 포함하는 것을 특징으로 한다.
또 다른 양상에서, 본 발명에 따른 소정 데이터 처리를 행하기 위한 데이터 처리부를 갖는 정보 처리 장치에 있어서, 상기 데이터 처리부는 소정 프로그램을 소정 암호화 키로 암호화한 암호화된 프로그램 데이터를 수신하기 위한 암호화 프로그램 수신 수단, 상기 암호화된 프로그램 데이터 수신 수단에서 수신된 암호화된 프로그램 데이터를 소정 복호키를 이용하여 소정 프로그램으로 복호하기 위한 복호 수단, 상기 복호 수단에 의해 상기 암호화된 프로그램 데이터로부터 복호된 소정 프로그램을 기억하기 위한 기억 수단, 상기 기억 수단에 기억된 소정 프로그램을 판독하기 위한 프로그램 판독 수단, 프로그램 판독 수단에 의해 판독된 소정 프로그램에 기초하여 상기 데이터 처리부에서 소정 데이터 처리 동작을 제어하는 제1 제어 수단, 및 상기 복호 수단에 의해 복호된 소정 프로그램과 상기 기억 수단에 기억된 소정 프로그램을 외부 장치로부터 추출하는 것을 제한하는 추출 제한 수단을 포함한다.
또 다른 양상에서, 본 발명은 소정 데이터 처리를 실행하는 데이터 처리부를 갖는 정보 처리 장치에서의 프로그램 로딩 방법을 제공하기 위한 것으로서, 이 방법은 소정 프로그램 -소정 프로그램은 상기 데이터 처리부에서 소정 데이터 처리를 실행하기 위한 프로그램임- 을 소정 암호화 키로 암호화한 암호화된 프로그램 데이터를 수신하는 암화화 프로그램 데이터 수신 단계, 상기 암호화 프로그램 데이터 수신 단계에서 수신된 암호화된 프로그램 데이터를 소정 암호화 키를 이용하여 소정 프로그램으로 복호하는 복호 단계, 복호된 소정 프로그램이 외부 장치로부터 추출되는 것을 제한하는 추출 제한 단계, 및 암호화된 프로그램 데이터로부터 복호 단계에서 복호된 소정 프로그램을 기억 수단에 기억시키는 기억 단계를 포함한다.
또 다른 양상에서, 본 발명은 정보 처리 장치내에 제공된 데이터 처리부에서 소정 프로그램을 로딩하기 위한 프로그램이 기입되어 있으며, 상기 데이터 처리부는 소정 데이터 처리를 실행하는 기록 매체를 제공하기 위한 것으로, 이 기록 매체는 상기 소정의 프로그램 -상기 소정 프로그램은 데이터 처리부에서 소정 데이터 처리 동작을 실행하기 위한 프로그램임- 을 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계, 상기 암호화 프로그램 데이터 수신 단계에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호 키를 이용하여 복호하는 복호 단계, 외부 장치로부터의 복호된 소정 프로그램의 추출을 제한하는 추출 제한 단계, 및 상기 복호 단계에서 상기 암호화 프로그램 데이터로부터 복호된 상기 소정의 프로그램을 기억 수단에 기억하는 기억 단계를 포함한다.
또 다른 양상에서, 본 발명은 소정 데이터 처리를 행하는데 적합한 정보 처리 장치의 데이터 처리 수단을 집적화한 회로 소자를 제공하기 위한 것으로서, 이 회로 소자는 소정의 프로그램을 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 수단, 상기 암호화 프로그램 데이터 수신 수단에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호 키를 이용하여 상기 소정의 프로그램으로 복호하는 복호 수단, 상기 복호 수단에 의해 상기 암호화 프로그램 데이터로부터 복호된 상기 소정의 프로그램을 기억하는 기억 수단, 상기 기억 수단에 기억된 상기 소정의 프로그램을 판독하는 프로그램 판독 수단, 및 상기 복호 수단에서 복호된 상기 소정의 프로그램 및 상기 기억 수단에 기억된 상기 소정의 프로그램의 추출을 제한하는 추출 제한 수단을 집적화하여 이루어진다.
본 발명에 따른 정보 처리 장치에서, 암호화된 프로그램 데이터는 소정 복호 키를 이용하는 복호 수단에 의해 복호되고, 복호 프로그램은 기억 수단에 기억되고, 그렇게 기억된 프로그램이 판독되며 정보 처리 장치의 소정 동작은 판독 프로 그램에 기초하여 제어 수단에 의해 제어되어, 프로그램 로딩동안 외부로의 프로그램 누설이 방지되며, 이는 프로그램 로딩시 누설될 수 있는 프로그램 데이터의 불법적인 행위를 방지할 수 있다.
예를 들면, DVD-ROM 드라이브의 펌웨어의 갱신, DVD-ROM의 인증되지않은 복사 또는 DVD-ROM의 재생 제한의 무효로 인한 펌웨어 데이터의 누설시 발생될 수 있는 지역 코드(RC)에 의한 재생 제한의 무효와 같은 불법 행위를 방지할 수 있다.
본 발명에 따른 프로그램 로딩 방법에 의해, 암호화된 프로그램 데이터는 소정 복호 키를 이용하여 복호 단계에 의해 프로그램으로 복호되고, 이렇게 복호된 프로그램은 기억 수단에 기억되며, 프로그램 로딩시 외부로의 프로그램 데이터의 누설이 방지되어 프로그램 로딩시 외부로 누설된 프로그램 데이터를 실행하는 불법적인 행위를 방지할 수 있다.
예를 들면, DVD-ROM 드라이브의 펌웨어의 갱신, DVD-ROM의 인증되지 않은 복사 또는 DVD-ROM의 재생 제한의 무효로 인한 펌웨어 데이터의 누설시 발생될 수 있는 지역 코드(RC)에 의한 재생 제한의 무효와 같은 불법 행위를 방지할 수 있다.
본 발명에 따른 기록 매체에는 암호화된 프로그램 데이터를 소정 복호 키를 이용하여 프로그램으로 복호하고, 복호 프로그램을 기억 수단에 기억하는 프로그램이 기입되어 있으며, 이는 프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행위를 방지할 수 있게 한다.
예를 들면, DVD-ROM 드라이브의 펌웨어의 갱신, DVD-ROM의 인증되지 않은 복사 또는 DVD-ROM의 재생 제한의 무효로 인한 펌웨어 데이터의 누설시 발생될 수 있 는 지역 코드(RC)에 의한 재생 제한의 무효와 같은 불법 행위를 방지할 수 있다.
본 발명에 따른 정보 처리 장치에서, 소정 암호화 키를 이용하여 제2 프로그램을 암호화한 암호화된 프로그램 데이터는 프로그램 갱신 요구에 응답하여 소정 암호화 키를 이용하여 제어부내의 복호 수단에서 제2 프로그램으로 복호되고, 복호된 제2 프로그램은 기억 수단내의 프로그램 기입 수단에 의해 기입되어 제1 프로그램이 갱신되고, 복호 수단에 의해 복호된 제2 프로그램과 기억 수단에 기입된 제2 프로그램의 외부 장치로부터의 추출이 추출 제한 수단에 의해 제한되어, 프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행위를 방지할 수 있다.
예를 들면, DVD-ROM 드라이브의 펌웨어의 갱신, DVD-ROM의 인증되지 않은 복사 또는 DVD-ROM의 재생 제한의 무효로 인한 펌웨어 데이터의 누설시 발생될 수 있는 지역 코드(RC)에 의한 재생 제한의 무효와 같은 불법 행위를 방지할 수 있다.
본 발명의 정보 처리 장치는 제어부의 구조를 새롭게 구성할 필요가 없기 때문에 저가로 제조될 수 있다.
게다가, 본 발명의 정보 처리 장치는 프로그램 갱신시에만 제어부에서의 복호 처리에 영향을 미치고, 통상의 동작 동안의 처리 동작은 더 낮게 되지 않아도 된다.
본 발명에 따른 프로그램 갱신 방법에서, 제2 프로그램을 소정 암호화 키로 암호화한 암호화된 프로그램 데이터는 프로그램 갱신 요구에 응답하여 소정 복호 키를 이용하여 복호 단계에서 제2 프로그램으로 복호되고, 이 복호된 제2 프로그램은 프로그램 기입 단계에서 기억 수단에 기입되어 제1 프로그램이 갱신되고, 복호 단계에서 복호된 제2 프로그램과 기억 수단에 기입된 제2 프로그램으로부터의 추출이 추출 제한 단계에서 제한되어, 프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행위를 방지할 수 있다.
예를 들면, DVD-ROM 드라이브의 펌웨어의 갱신, DVD-ROM의 인증되지 않은 복사 또는 DVD-ROM의 재생 제한의 무효로 인한 펌웨어 데이터의 누설시 발생될 수 있는 지역 코드(RC)에 의한 재생 제한의 무효와 같은 불법 행위를 방지할 수 있다.
게다가, 본 발명의 프로그램 갱신 방법에서, 암호화/복호화는 제1 프로그램을 갱신할 때에만 제어부에서 수행되고, 통상의 동작 동안의 제어부의 처리 동작은 더 낮게 되지 않아도 된다.
프로그램이 기입되어 있는 본 발명의 기록 매체에서는, 복호 단계에서 제2 프로그램을 소정 암호화 키로 암호화한 암호화된 프로그램 데이터를 프로그램 갱신 요구에 응답하여, 소정 복호 키를 이용하여 제2 프로그램으로 복호하고, 이 복호된 제2 프로그램은 프로그램 기입 단계에서 기억 수단에 기입되어 제1 프로그램이 갱신되고, 복호 단계에서 복호된 제2 프로그램과 기억 수단에 기입된 제2 프로그램을 외부 장치로부터 추출하는 것이 추출 제한 단계에 의해 제한되어,프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행위를 방지할 수 있다.
예를 들면, DVD-ROM 드라이브의 펌웨어의 갱신, DVD-ROM의 인증되지 않은 복사 또는 DVD-ROM의 재생 제한의 무효로 인한 펌웨어 데이터의 누설시 발생될 수 있는 지역 코드(RC)에 의한 재생 제한의 무효와 같은 불법 행위를 방지할 수 있다.
게다가, 본 발명의 기록 매체 상에 기입된 프로그램에서, 암호화/복호화는 제1 프로그램을 갱신할 때에만 제어부에서 수행되고, 통상의 동작 동안의 제어부의 처리 동작은 더 낮게 되지 않아도 된다.
본 발명에 따른 회로 소자에서는, 복호 단계에서 제2 프로그램을 소정 암호화 키로 암호화한 암호화된 프로그램 데이터를 프로그램 갱신 요구에 응답하여, 소정 복호 키를 이용하여 제2 프로그램으로 복호하고, 이 복호된 제2 프로그램은 프로그램 기입 단계에서 기억 수단에 기입되어 제1 프로그램이 갱신되고, 복호 단계에서 복호된 제2 프로그램과 기억 수단에 기입된 제2 프로그램을 외부 장치로부터 추출하는 것이 추출 제한 단계에 의해 제한되어,프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행위를 방지할 수 있다.
예를 들면, DVD-ROM 드라이브의 펌웨어의 갱신, DVD-ROM의 인증되지 않은 복사 또는 DVD-ROM의 재생 제한의 무효로 인한 펌웨어 데이터의 누설시 발생될 수 있는 지역 코드(RC)에 의한 재생 제한의 무효와 같은 불법 행위를 방지할 수 있다.
게다가, 본 발명의 회로 소자에서, 암호화/복호화는 제1 프로그램을 갱신할 때에만 제어부에서 수행되고, 통상의 동작 동안의 제어부의 처리 동작은 더 낮게 되지 않아도 된다.
본 발명에 따른 정보 처리 장치에서, 소정 암호화 키를 이용하여 암호화된 암호화된 프로그램 데이터는 데이터 처리부내의 복호 수단에서, 프로그램 갱신 요구에 응답하여 소정 복호 키를 이용하여 제2 프로그램으로 복호되어, 제어부로 송신되고, 제어부내의 프로그램 기입 수단에서 복호된 제2 프로그램은 제어부내의 기억 수단에 기입되어 제1 프로그램이 갱신되며, 이는 프로그램 로딩시 누설된 프로 그램 데이터를 사용하는 불법적인 행휘를 방지할 수 있게 한다.
예를 들면, DVD-ROM 드라이브의 펌웨어의 갱신, DVD-ROM의 인증되지 않은 복사 또는 DVD-ROM의 재생 제한의 무효로 인한 펌웨어 데이터의 누설시 발생될 수 있는 지역 코드(RC)에 의한 재생 제한의 무효와 같은 불법 행위를 방지할 수 있다.
본 발명에 따른 프로그램 갱신 방법에서, 소정 암호 키를 이용하여 암호화된 제2 프로그램에 대응하는 암호화된 프로그램 데이터는 소정의 복호 키를 이용하는 복호 단계에서 프로그램 갱신 요구에 응답하여 제2 프로그램으로 복호되고, 프로그램 기입 단계에서 복호된 제2 프로그램은 제어부내의 기억 수단에 기입되어 제1 프로그램이 갱신되며, 이는 프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행휘를 방지할 수 있게 한다.
예를 들면, DVD-ROM 드라이브의 펌웨어의 갱신, DVD-ROM의 인증되지 않은 복사 또는 DVD-ROM의 재생 제한의 무효로 인한 펌웨어 데이터의 누설시 발생될 수 있는 지역 코드(RC)에 의한 재생 제한의 무효와 같은 불법 행위를 방지할 수 있다.
본 발명에 따른 기록 매체에서, 소정 암호 키를 이용하여 암호화된 제2 프로그램에 대응하는 암호화된 프로그램 데이터는 소정의 복호 키를 이용하는 복호 단계에서 프로그램 갱신 요구에 응답하여 제2 프로그램으로 복호되고, 프로그램 기입 단계에서 복호된 제2 프로그램은 제어부내의 기억 수단에 기입되어 제1 프로그램이 갱신되며, 이는 프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행휘를 방지할 수 있게 한다.
예를 들면, DVD-ROM 드라이브의 펌웨어의 갱신, DVD-ROM의 인증되지 않은 복 사 또는 DVD-ROM의 재생 제한의 무효로 인한 펌웨어 데이터의 누설시 발생될 수 있는 지역 코드(RC)에 의한 재생 제한의 무효와 같은 불법 행위를 방지할 수 있다.
본 발명에 따른, 프로그램이 기입된 기록 매체에서, 소정 암호 키를 이용하여 암호화된 제2 프로그램에 대응하는 암호화된 프로그램 데이터는 소정의 복호 키를 이용하는 복호 단계에서 프로그램 갱신 요구에 응답하여 제2 프로그램으로 복호되어 제어부로 송신되고, 프로그램 기입 단계에서 복호된 제2 프로그램은 제어부내의 기억 수단에 기입되어 제1 프로그램이 갱신되며, 이는 프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행휘를 방지할 수 있게 한다.
예를 들면, DVD-ROM 드라이브의 펌웨어의 갱신, DVD-ROM의 인증되지 않은 복사 또는 DVD-ROM의 재생 제한의 무효로 인한 펌웨어 데이터의 누설시 발생될 수 있는 지역 코드(RC)에 의한 재생 제한의 무효와 같은 불법 행위를 방지할 수 있다.
본 발명에 따른 정보 처리 장치에서, 소정 암호화 키 데이터를 이용하여 암호화된 소정 프로그램에 대응하는 암호화된 프로그램 데이터는 데이터 처리부내의 복호 수단에 의해 소정 프로그램으로 복호되고, 이렇게 복호된 프로그램은 데이터 처리부내의 기억 수단에 기억되고, 복호 수단에 의해 복호된 소정 프로그램과 기억 수단에 기억된 소정 프로그램의 외부 장치로부터의 추출이 추출 제한 수단에 의해 제한되어 프로그램 로딩동안 프로그램 데이터의 외부로의 누설이 방지되기 때문에, 프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행위를 방지할 수 있다.
본 발명에 따른 프로그램 로딩 방법에서, 소정 암호 키를 이용하여 암호화된 소정 프로그램에 대응하는 암호화된 프로그램 데이터는 복호 단계에서 소정 프로그램으로 복호되고, 이렇게 복호된 프로그램은 데이터 처리부내의 기억 수단에 기억되고 복호 단계에서 복호된 소정 프로그램과 기억 수단에 기억된 소정 프로그램의 외부 장치로부터의 추출이 추출 제한 단계에서 제한되어 프로그램 로딩동안 프로그램 데이터의 외부로의 누설이 방지되기 때문에, 프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행위를 방지할 수 있다.
본 발명에 따른 기록 매체에서, 소정 암호화 키로 암호화한 소정 프로그램에 대응하는 암호화된 프로그램 데이터는 복호 단계에서 소정 프로그램으로 복호되고, 이렇게 복호된 프로그램은 데이터 처리부내의 기억 수단에 기억되고 복호 단계에서 복호된 소정 프로그램과 기억 수단에 기억된 소정 프로그램의 외부 장치로부터의 추출이 추출 제한 단계에서 제한되어 프로그램 로딩동안 프로그램 데이터의 외부로의 누설이 방지되기 때문에, 프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행위를 방지할 수 있다.
본 발명에 따른 회로 소자에서, 소정 암호화 키 데이터를 이용하여 암호화된 소정 프로그램에 대응하는 암호화된 프로그램 데이터는 복호 수단에 의해 소정 프로그램으로 복호되고, 이렇게 복호된 프로그램은 기억 수단에 기억되고 복호 수단에 의해 복호된 소정 프로그램과 기억 수단에 기억된 소정 프로그램의 외부 장치로부터의 추출이 추출 제한 수단에 의해 제한되어 프로그램 로딩동안 프로그램 데이터의 외부로의 누설이 방지되기 때문에, 프로그램 로딩시 누설된 프로그램 데이터를 사용하는 불법적인 행위를 방지할 수 있다.
본 발명의 다른 목적, 특징 및 이점들은 도면에 나타난 바와 같이 본 발명의 실시예를 참조할 시 보다 명백해질 것이다.
이하, 본 발명에 따른 정보 처리 장치, 프로그램 로딩 방법, 기록 매체, 프로그램 갱신 방법 및 회로 소자의 실시 형태를 도면을 참조하여 상세히 설명한다.
우선, 도 1에 제1 실시 형태로서 나타내는 DVD-ROM 드라이브의 구성에 대하여 설명한다.
DVD-ROM 드라이브는 DVD-ROM(Digital Versatile Disc-Read Only Memory)(1)을 소정의 개소에 장착하여, 장착한 DVD-ROM(1)을 재생하는 장치이다. DVD-ROM 드라이브는 PC(Personal Computer)(10)에 접속되고, 장착한 DVD-ROM(1)의 재생 동작 등의 각종 동작은 접속된 PC(10)에 의해서 제어된다.
DVD-ROM 드라이브는 광학 픽업 유닛(2)과, 스핀들 모터(3)와, 리드 프로세서(4)와, 광학 픽업 유닛 드라이버(5)와, 스핀들 모터 드라이버(6)와, DVD 디코더(7)와, 버퍼 메모리(8)와, CPU(9)를 갖는다.
광학 픽업 유닛(2)은, 도시하지 않지만, 소정의 파장의 레이저광을 출사하는 레이저 다이오드와, 레이저 다이오드로부터 출사된 소정의 파장의 레이저광을 DVD-ROM(1)의 데이터 기록면에 집광하여 출사하고, DVD-ROM(1)의 데이터 기록면에서 반사된 반사광을 집광하여 출사하는 대물 렌즈와, 소정의 제어 신호에 따라서 상기 대물 렌즈를 탑재하여 대물 렌즈를 구동시켜 포커스 조정 및 트랙킹 조정을 행하는 2축 액추에이터와, DVD-ROM(1)의 데이터 기록면에서 반사된 반사광을 수광하여 전기 신호로 변환함으로써 데이터 기록면의 피트의 유무를 검출하는 광 검출기를 구 비하고 있다. 광 검출기에서 검출된 전기 신호는 일반적으로 RF(Radio Frequency) 신호라고 불리고 있다.
또한, 해당 광학 픽업 유닛(2)에는 그 광학 픽업 유닛(2)을 DVD-ROM(1)의 반경 방향으로 구동시키는 슬레드 모터(sled motor)가 구비되어 있다.
게다가, 해당 DVD-ROM 드라이브가, 도시하지 않은 디스크 트레이에 DVD-ROM(1)을 탑재하여 로딩하는 기구를 구비하고 있는 경우에는, 이 디스크 트레이를 동작시키는 로딩 모터도 이 광학 픽업 유닛(2)에 구비되어 있어도 된다.
스핀들 모터(3)는 장착된 DVD-ROM(1)을 회전 구동시키는 모터이다.
워드 프로세서(4)는 광학 픽업 유닛(2)이 구비하는 광 검출기로 검출된 RF 신호로부터 DVD 판독용 EFM+(Eight to Fourteen Plus Modulation) 신호와, 포커스 서보용의 FE(Focus Error) 신호, 트랙킹 서보용의 TE(Tracking Error) 신호, Pull-in 신호를 생성하여, 후술하는 DVD 디코더(7)의 서보 제어부(12)에 송출한다.
광학 픽업 유닛 드라이버(5)는, 소정의 제어 신호에 따라서 상기한 광학 픽업 유닛(2)의 도시하지 않은 2축 액추에이터, 슬레드 모터, 로딩 모터를 각각 구동시키는 드라이버 IC(Integrated Circuit)이다.
스핀들 모터 드라이버(6)는 소정의 제어 신호에 따라서 상기한 스핀들 모터(3)를 구동시키는 드라이버 IC이다.
DVD 디코더(7)는 DVD 신호 처리부(11), 서보 제어부(12), 디스크 회전 제어부(13), 메모리 제어부(14), ATAPI(AT Attachment with Packet Interface)(15), CPU I/F(16)를 구비하고 있다.
DVD 신호 처리부(11)는 RS-PC 복호기, 어드레스 검출을 위한 ID 처리, 8/16 변환 회로, 기록 가능 미디어인지 여부를 판정하기 위한 워블(Wobble) 검출기를 구비하고 있다.
서보 제어부(12)는 리드 프로세서(4)로부터 송신된 FE 신호, TE 신호, Pull-in 신호에 따라서, 광학 픽업 유닛(2)의 2축 액추에이터와 슬레드 모터를 구동 제어하기 위한 제어 신호를 생성하여 광학 픽업 유닛 드라이버(5)로 송출한다.
디스크 회전 제어부(13)는 DVD-ROM(1)을 장착한 스핀들 모터(3)의 회전을 제어하는 제어 신호를 생성하여 스핀들 모터 드라이버(6)로 송출한다.
메모리 제어부(14)는 버퍼 메모리(8)로 데이터의 기입 및 판독을 제어한다.
ATAPI(15)는 PC(10)와 그 DVD-ROM 드라이브를 접속하여 데이터의 교환을 행하기 위한 인터페이스이다.
또, PC(10)와 접속하기 위한 인터페이스는 이 ATAPI(15) 이외에도, 예를 들면, SCSI(Small Computer System Interface), USB(Universal Serial Bus), IEEE(Institute of Electrical and Electronics Engineers) 1394 등이어도 된다.
CPU I/F(16)는 해당 DVD 디코더(7)와 CPU(9)를 접속하여, CPU(9)로부터 해당 DVD 디코더(7)를 제어하기 위한 인터페이스이다. 또한, CPU I/F(16)는 버퍼 메모리(8)에 기억되어 있는 데이터를 판독하기도 하고, 버퍼 메모리(8)에 데이터를 기입하기도 한다.
버퍼 메모리(8)는 예를 들면 DRAM(Dynamic Random-Access Memory) 등의 랜덤 액세스 가능한 메모리로, DVD 신호 처리부(11)로부터 송출된 데이터, PC(10)로부터 송출된 데이터, CPU(9)로부터 송출된 데이터를 일시적으로 기억한다.
CPU(9)는 CPU I/F(16)로 DVD 디코더(7)와 접속되어, DVD-ROM 드라이브의 각 기능을 통괄적으로 제어한다. CPU(9)의 구성 및 기능에 대해서는 뒤에 상세히 설명하기로 한다.
PC(10)는 DVD-ROM 드라이브와 DVD 디코더(7)의 ATAPI(15) 등으로 접속되어, DVD-ROM 드라이브의 동작, 예를 들면 재생, 정지, 데이터 검색 등을 소정의 커맨드를 입력함으로써 제어한다. 사용자는 PC(10)을 통하여 DVD-ROM(1)의 각종 데이터를 이용할 수 있다.
계속해서, CPU(9)의 구성에 대하여 상세히 설명한다.
CPU(9)는 CPU 코어(20)와, 부팅 ROM(21)과, 플래시 ROM(22)과, RAM(23)과, 입출력 포트(24)와, 기입 타이밍 제어용 타이머(25)와, 인터럽트 제어 회로(26)와, 직렬 통신 회로(27)와, 32bit 버스(28), 16bit 버스(29)와, 브릿지 회로(30)와, 외부 버스 컨트롤러(31)를 구비하고 있다.
CPU 코어(20)는 CPU(9)에서의 중심 부분으로 사칙 연산이나 비교 판단을 하는 논리 연산 장치나 가산 회로, 레지스터 등을 구비하고 있다.
부팅 ROM(21)은 예를 들면 데이터의 전기적 소거가 가능한 프로그래머블 ROM인 EEPROM(Electrically Erasable Programmable Read-Only Memory) 등의 소위 플래시 메모리이다.
부팅 ROM(21)에는 플래시 ROM(22)에 기억된 프로그램을 업데이트할 때에 기동시키는 부팅 프로그램을 저장하고 있다. 이 부팅 프로그램을 기동시키기 위해서 는, 예를 들면 CPU(9)에 설치된 단자에 소정의 전압을 인가함으로써 실행한다. 상기한 단자에 소정의 전압이 인가되면, 부팅 프로그램이 선두 어드레스에서 판독되어 부팅 프로그램이 실행된다.
또한 부팅 ROM(21)은, 암호화되어 송신된 펌웨어를 해독하기 위해서 이용하는 공통 키를 프로그램으로서 저장함과 함께, 이 공통 키를 이용하여 암호화된 펌웨어를 해독하는 암호 해독 알고리즘을 저장한 암호화 처리부(21a)를 구비하고 있다.
플래시 ROM(22)은 부팅 ROM(21)과 마찬가지로, 예를 들면 데이터의 전기적 소거가 가능한 PROM인 EEPROM 등의 소위 플래시 메모리이다.
플래시 ROM(22)에는 펌웨어가 저장되는데, 해당 DVD-ROM 드라이브의 재생 제한을 하는 프로그램인 펌웨어가 저장된다. 플래시 ROM(22)에 저장된 펌웨어는 DVD-ROM 드라이브의 소정의 동작, 예를 들면 DVD-ROM(1)의 재생이나 디지털 복사를 제한하는 프로그램이다.
또한, 플래시 ROM(22) 대신에 TMR(Tunneling Magneto Resistive) 소자를 이용한 MRAM(Magnetic Random Access Memory)를 사용해도 된다. MRAM은 자기에 의해서 데이터를 기억하는 메모리이기 때문에 데이터의 오버라이트가 가능하다. 따라서, 펌웨어를 갱신할 때에, MRAM에 기억되어 있는 데이터, 즉 갱신 전의 펌웨어의 소거 동작이 불필요하다.
여기서, 도 2를 이용하여 공통 키에 대하여 설명한다.
도 2에 도시한 바와 같이, 예를 들면, 평문 데이터를 암호화할 때는 소정의 암호화 키를 이용하여 암호화 데이터로 변환하고, 다시 암호화 데이터를 복호할 때는 소정의 복호 키를 이용하여 평문 데이터로 한다.
다시 말해서, 암호화 키는 평문 데이터나 정보를 암호화할 때에 이용되고, 복호 키는 암호화된 데이터나 정보를 원래의 평문 데이터나 정보로 복귀할 때에 이용된다.
공통 키란, 전술한 바와 같이 데이터를 암호화할 때에 이용하는 암호화 키와, 암호화된 데이터를 복호할 때에 이용하는 복호 키가 공통인 키를 말한다. 이 공통 키의 정보는 공개되지 않고 비밀로 하여 놓기 때문에 비밀 키라고도 불린다.
또, 부팅 ROM(21) 및 플래시 ROM(22)는 2개의 서로 다른 플래시 ROM을 이용하도록 기재하고 있지만, 이것을 하나의 플래시 ROM으로 하고, 이 플래시 ROM의 기억 영역을 부팅 영역, 프로그램 영역과 같이 분할하도록 하여도 무방하다.
RAM(23)은 기억 내용 유지를 위한 리프레시 동작이 불필요하고 고속 액세스 가능한 SRAM(Static Random Access Memory) 등이고, 플래시 ROM(22)에 저장되어 있는 펌웨어를 업데이트할 때에 데이터 및 업데이트용 프로그램의 전개 영역이 된다.
일반적으로 플래시 메모리에서는, 해당 플래시 메모리에 기억되어 있는 데이터를 업데이트할 때, 자기 자신이 프로그램을 실행할 수 없다. 따라서, 펌웨어의 업데이트 시에는, 버퍼 메모리(8)로부터 전송되는 펌웨어의 데이터와 함께 업데이트용의 업데이트 함수가 부팅 ROM(21)으로부터 RAM(23)에 복사된다.
입출력 포트(24)는 해당 CPU(9)에 데이터의 입력 포트, 및 해당 CPU(9)로부터 출력하는 데이터의 출력 포트이다.
기입 타이밍 제어용 타이머(25)는 플래시 ROM(22)의 펌웨어를 업데이트할 때의 기입 타이밍을 제어한다.
인터럽트 제어 회로(26)는 소정의 인터럽트 발생에 따라서 현재 실행 중인 처리를 중단하고 인터럽트 프로그램을 실행시키도록 제어하는 회로이다.
직렬 통신 회로(27)는 직렬 데이터를 송수신하는 인터페이스이다.
32bit 버스(28)는 한번에 32bit의 데이터를 전송 가능한 버스이다.
16bit 버스(29)는 한번에 16bit의 데이터를 전송 가능한 버스이다.
브릿지 회로(30)는 32bit 버스(28)와 16bit 버스(29)를 접속하는 회로이다.
외부 버스 컨트롤러(31)는 해당 CPU(9)와 외부 장치인 DVD 디코더(7) 사이에서 전송되는 데이터를 감시하고, DVD 디코더(7)와의 데이터 입출력을 제어한다. 또한, 외부 버스 컨트롤러(31)는 해당 CPU(9) 내의 부팅 ROM(21) 및 플래시 ROM(22)에 저장되어 있는 프로그램과 RAM(23)을 사용자 레벨에서는 참조할 수 없는 보호 기능을 갖추고 있다. 이에 의해, 공통 키, 암호화 처리부(21a) 및 복호된 펌웨어를 CPU(9)로부터 추출하는 것을 제한할 수 있다.
계속해서, 도 3에 도시하는 흐름도를 이용하여, 플래시 ROM(22)에 기억된 펌웨어를 업데이트할 때의 동작에 대하여 설명한다.
우선, 단계 S1에 있어서, CPU(9)의 CPU 코어(20)는 부팅 단자에 가해진 전압이 HIGH 레벨(High Level)인 경우, 공정을 단계 S2로 진행시키고, LOW 레벨(Low Level)인 경우, 공정을 단계 S4로 진행시킨다.
단계 S2로부터의 공정은 플래시 ROM(22)에 기억되어 있는 프로그램을 실행하 는 공정이고, 단계 S4로부터의 공정은 부팅 ROM(21)에 기억되어 있는 부팅 프로그램을 기동시켜, 펌웨어를 업데이트하는 공정이다.
단계 S2에 있어서, CPU 코어(20)는 플래시 ROM(22)의 프로그램, 예를 들면 펌웨어 등이 기록되어 있는 프로그램 영역의 선두 어드레스에 액세스한다.
단계 S3에 있어서, CPU 코어(20)는 액세스한 플래시 ROM(22)의 프로그램 영역에 기억되어 있는 프로그램에 따라서, DVD-ROM(1)에 대하여 통상 처리, 예를 들면 재생 처리 및 데이터 검색 처리 등을 실행한다.
단계 S4에 있어서, 부팅 단자에 LOW 레벨의 전압이 가해진 것에 응답하여, 부팅 ROM(21)의 부팅 프로그램이 기억되어 있는 부팅 영역의 선두 어드레스가 CPU 코어(20)에 판독되어, 부팅 프로그램이 기동된다.
단계 S5에 있어서, CPU 코어(20)는 해당 DVD-ROM 드라이브의 전 포트를 초기화한다. 이에 의해 DVD-ROM 드라이브의 메카니즘계 및 전기계의 파괴가 방지된다.
단계 S6에 있어서, CPU 코어(20)는 PC(10)로부터 Not Ready 상태에서 실행 가능한 커맨드가 입력되었는지 여부를 판단한다. 여기서 말하는 Not Ready 상태란, 해당 DVD-ROM 드라이브에 DVD-ROM(1)이 장착되어 있지 않거나, 혹은 DVD-ROM(1)이 CPU(9)에 인식되어 있지 않은 상태를 나타내며, Not Ready 상태에서 실행 가능한 커맨드란, DVD-ROM(1)이 인식되어 있지 않더라도 실행 가능한 커맨드이다. 예를 들면, DVD-ROM(1)으로부터 소정의 데이터를 판독하라고 하는 커맨드는, Not Ready에서는 실행 불가능한 커맨드이다.
Not Ready 상태에서 실행 가능한 커맨드가 입력된 경우에는 공정을 단계 S8 로 진행시키고, 실행 불가능한 커맨드가 입력된 경우에는 공정을 단계 S7로 진행시킨다.
단계 S7에 있어서, CPU 코어(20)는 Not Ready 상태에서 실행 불가능한 커맨드가 입력된 것에 응답하여, Check Condition Status에서 커맨드를 완료시켜, 공정을 다시 단계 S6으로 복귀시킨다.
단계 S8에 있어서, CPU 코어(20)는 플래시 ROM(22)의 프로그램 갱신을 지시하는 라이트 버퍼 커맨드(Write Buffer Command)와는 다른 커맨드가 PC(10)로부터 송신된 경우에는 공정을 단계 S9로 진행시키고, 라이트 버퍼 커맨드가 송신된 경우에는 공정을 단계 S10으로 진행시킨다.
단계 S9에 있어서, CPU 코어(20)는 라이트 버퍼 커맨드와는 다른 커맨드가 입력된 것에 응답하여, 입력된 커맨드를 실행한다.
PC(10)는 DVD-ROM 드라이브에 라이트 버퍼 커맨드를 송신한 후, 업데이트할 펌웨어를 공통 키로 암호화한 펌웨어 암호화 데이터를 바이너리 파일(binary file)로서 DVD-ROM 드라이브에 송신한다.
단계 S10에 있어서, CPU 코어(20)는, 라이트 버퍼 커맨드를 수신한 것에 응답하여, 버퍼 메모리(8)의 데이터 기억 영역의 소정의 어드레스 N으로부터 2×M(M은 자연수)KB분의 영역을 확보하여, PC(10)로부터 송신되는 바이너리 파일을 상기 확보한 데이터 기억 영역에 기억시킨다.
CPU 코어(20)는 바이너리 파일을 수신하면, 전 바이너리 데이터를 가산하여 Check Sum 데이터를 생성하고, 바이너리 파일과 함께 버퍼 메모리(8)에 기억시킨 다. Check Sum 데이터는 전송되어 온 프로그램이 에러 없이 수신되었음을 확인하기 위한 데이터로, 송신된 모든 데이터를 가산함으로써 얻어진다.
단계 S11에 있어서, CPU 코어(20)는 단계 S10에서 버퍼 메모리(8)에 저장한 Check Sum 데이터를 검증하고, 송신된 펌웨어 암호화 데이터가 올바르게 수신되었는지 여부를 확인한다. 올바르게 수신되어 있는 경우에는 공정을 단계 S13으로 진행시키고, 올바르게 수신되어 있지 않은 경우에는 공정을 단계 S12로 진행시킨다.
단계 S12에 있어서, CPU 코어(20)는 단계 S11에서의 Check Sum 데이터의 검증 결과로부터 바이너리 파일이 올바르게 송신되지 않았음을, Check Condition Status에서 커맨드를 완료시킴으로써 PC(10)에 알려, 공정을 다시 단계 S6으로 복귀시킨다.
단계 S13에 있어서, CPU 코어(20)는 부팅 ROM(21)에 기억되어 있는, 펌웨어를 업데이트할 때에 사용하는 업데이트(update) 함수를 RAM(23)에 복사한다.
업데이트 함수는 RAM(23)에 복사되고, RAM(23)에 전개됨으로써 펌웨어를 플래시 ROM(22)에 업데이트하기 위한 업데이트 프로그램으로서 기능한다.
계속해서, 도 4에 도시하는 흐름도를 이용하여 업데이트(update) 함수에 의한 처리 동작에 대하여 설명한다.
단계 S21에 있어서, CPU 코어(20)는 RAM(23)에 저장된 업데이트 함수의 선두 어드레스에 액세스하여, 업데이트 함수에 의한 펌웨어의 플래시 ROM(22)으로의 업데이트를 개시한다.
단계 S22에 있어서, CPU 코어(20)는 인터럽트 제어 회로(26)를 제어하여 모 든 인터럽트 프로그램의 실행과 예외 처리의 실행을 금지한다.
또한, CPU 코어(20)는 PC(10)로부터 입력된 라이트 버퍼 커맨드를 수신한 것에 응답하여, 플래시 ROM(22)의 펌웨어 저장 영역에 기억되어 있는 데이터를 소거한다.
또, 플래시 ROM(22) 대신에 상술한 MRAM을 사용한 경우, 해당 MRAM이 데이터의 오버라이트가 가능이기 때문에 기억되어 있는 펌웨어의 소거 동작은 불필요해진다.
단계 S23에 있어서, CPU 코어(20)는 플래시 ROM(22)에의 기입 타이밍을 제어하는 기입 타이밍 제어용 타이머(25)를 기동시킨다.
이하, 플래시 ROM(22)에 데이터를 기입할 때는, 기입 타이밍 제어용 타이머(25)의 타이밍 제어에 기초하여 실행된다.
단계 S24에 있어서, CPU 코어(20)는 펌웨어 암호화 데이터의 바이너리 파일이 기억되어 있는 버퍼 메모리(8)의 어드레스 번호 N과, 펌웨어를 기억시키는 플래시 ROM(22)의 어드레스 번호 0에 액세스를 한다.
단계 S25에 있어서, CPU 코어(20)는 버퍼 메모리(8)의 어드레스 번호 N으로부터 2KB분의 어드레스 번호까지의 데이터를 판독하여 RAM(23)에 복사한다.
단계 S26에 있어서, CPU 코어(20)는 RAM(23) 내에 복사된 2KB분의 데이터를 8Byte마다 판독하여, 부팅 ROM(21) 내의 공통 키와, 암호화 처리부(21a)에 기억되어 있는 암호 해독 알고리즘에 의해 복호한다. CPU 코어(20)는 복호한 2KB분의 데이터, 즉 암호 해독된 펌웨어 데이터를 다시 RAM(23) 내에 기억시켜 전개한다.
단계 S27에 있어서, CPU 코어(20)는 RAM(23) 내에 기억된 2KB의 펌웨어 데이터를 RAM(23)로부터 판독하여, 플래시 ROM(22)의 어드레스 번호 0부터 기입한다.
단계 S28에 있어서, CPU 코어(20)는 플래시 ROM(22)에 기억시킨 펌웨어 데이터의 최종 어드레스 번호가, 2×M(M은 자연수)으로 되면 공정을 단계 S30으로 진행시키고, 그렇지 않은 경우에는 공정을 단계 S29로 진행시킨다.
단계 S29에 있어서, CPU 코어(20)는 버퍼 메모리(8)의 어드레스 번호 및 플래시 ROM(22)의 어드레스 번호를 2KB 늘린 어드레스 번호에 액세스를 한다. 이 공정이 종료되면 단계 S25로 되돌아간다.
단계 S30에 있어서, CPU 코어(20)는 플래시 ROM(22)에의 기입 타이밍을 제어하는 기입 타이밍 제어용 타이머(25)를 정지시킨다.
단계 S31에 있어서, 단계 S28에서 플래시 ROM(22)에 기억된 펌웨어 데이터의 최종 어드레스 번호가 2×M(M은 자연수)이라고 판정되고, 단계 S30에서 기입 타이밍 제어용 타이머(25)가 정지됨으로써, 펌웨어의 플래시 ROM(22)에의 업데이트가 완료된다.
단계 S32에 있어서, 단계 S31에서 펌웨어의 업데이트가 완료된 것에 응답하여, CPU 코어(20)는 플래시 ROM(22)의 프로그램 영역의 선두 어드레스에 액세스를 한다.
단계 S33에 있어서, CPU 코어(20)는 액세스한 플래시 ROM(22)의 프로그램 영역에 기억되어 있는 프로그램, 즉 갱신된 후의 펌웨어에 따라서, DVD-ROM(1)에 대하여 통상 처리, 예를 들면 재생 처리 및 데이터 검색 처리 등을 실행한다.
본 발명을 적용한 DVD-ROM 드라이브에서는, 플래시 ROM(22)에 저장되어 있는 펌웨어를 업데이트할 때, PC(10)로부터 공통 키를 이용하여 암호화한 펌웨어 암호화 데이터를, CPU(9) 내의 부팅 ROM(21)의 암호화 처리부에서 공통 키를 이용하여 복호하고, 플래시 ROM(22)에 기입함으로써, 외부에 펌웨어 데이터가 누설되는 것을 방지할 수 있다.
또한, 도 4에 도시한 흐름도에서는, 암호화된 펌웨어 암호화 데이터를 PC(10)로부터 수신하고, 수신한 펌웨어 암호화 데이터를 해독하여 플래시 ROM(22)에 기입하는 수법에 대하여 기재하고 있지만, PC(10)로부터 암호화되어 있지 않은 데이터가 송신된 경우에는, 도 5에 도시한 바와 같이, 도 4의 단계 S25 내지 단계 S27의 공정을 단계 S25a와 같이, 버퍼 메모리(8)로부터 직접 플래시 ROM(22)에 직접 기입하도록 변경함으로써 실행하는 것이 가능해진다.
다음에, 도 6에 도시하는 흐름도를 이용하여, 플래시 ROM(22)에 펌웨어를 업데이트한 결과를 PC(10)로 검증할 때의 처리 동작에 대하여 설명한다.
단계 S41에 있어서, PC(10)는 플래시 ROM(22)에 저장되어 있는 펌웨어의 전송을 요구하는 리드 버퍼 커맨드(Read Buffer Command)를 DVD-ROM 드라이브에 송신한다.
단계 S42에 있어서, PC(10)로부터 송신된 리드 버퍼 커맨드를 수신한 것에 응답하여, CPU 코어(20)는 플래시 ROM(22)의 선두 어드레스로부터 플래시 ROM(22)에 기억되어 있는 펌웨어의 2KB분의 데이터를 판독한다.
단계 S43에 있어서, CPU 코어(20)는 판독한 2KB분의 데이터를 RAM(23) 또는 해당 CPU 코어(20)의 레지스터에 기입하여 기억시킨다.
단계 S44에 있어서, CPU 코어(20)는 부팅 ROM(21)의 암호화 처리부(21a)를 제어하고, 공통 키를 이용하여 암호화 처리부(21a)에 저장되어 있는 암호 해독 알고리즘에 따라서, RAM(23) 또는 해당 CPU 코어(20)의 레지스터에 기억되어 있는 2KB분의 펌웨어 데이터를 판독하여 암호화한다.
단계 S45에 있어서, CPU 코어(20)는 암호화한 2KB분의 펌웨어 데이터를 버퍼 메모리(8)로 전송하여 저장시킨다.
단계 S46에 있어서, CPU 코어(20)는 플래시 ROM(22)에 저장되어 있는 펌웨어 데이터를 전부 판독했는지 여부를 검출한다. 펌웨어 데이터를 전부 판독한 경우에는 공정을 단계 S47로 진행시키고, 또한 모든 펌웨어 데이터가 판독되어 있지 않은 경우에는 공정을 단계 S42로 복귀시킨다.
단계 S47에 있어서, 플래시 ROM(22)에 저장되어 있는 펌웨어 데이터가 전부 판독되고 암호화되어 버퍼 메모리(8)에 저장된 것에 응답하여, CPU 코어(20)는, 버퍼 메모리(8)에 저장되어 있는 펌웨어 암호화 데이터를 PC(10)로 전송한다.
전송된 펌웨어 암호화 데이터는 PC(10)에 의해 암호화된 그대로, 원 데이터와 비교되어 일치가 확인된다.
이와 같이 하여 PC(10)는, DVD-ROM 드라이브의 플래시 ROM(22)에 펌웨어가 확실하게 갱신되어 있는지 여부를 검증할 수 있다. 그 때에, CPU(9) 내에서 펌웨어는 암호화되어 PC(10)로 송신되므로, 도중의 송신 경로 등에서 평문의 펌웨어를 입수할 수는 없기 때문에, 펌웨어의 해석이나 개찬 등을 방지할 수 있다.
또한, 상기한 바와 같이, 도 1의 구성의 DVD-ROM 드라이브의 CPU(9)에서는 펌웨어 암호화 데이터의 복호를 부팅 ROM(21)에 기억되어 있는 암호 해독 알고리즘이라는 프로그램으로 실행하고 있다. 대안적으로, 도 7에 도시한 바와 같이 프로그램인 암호 처리부를 공통 키 암호화 처리부(32)와 같이 하드웨어화하고, CPU(9)를 재구성하여도 된다.
이와 같이 공통 키 암호화 처리부(32)를 구비하는 CPU(9)는 암호화 처리가 고속으로 되기 때문에, 펌웨어의 업데이트를 보다 고속으로 실행시킬 수 있다. 이 때의 업데이트 처리의 동작은 상기한 도 3과 도 4에 도시한 흐름도와 마찬가지의 동작이기 때문에 생략한다.
상기 설명에서는, PC(10)로부터 송신되는 암호화된 펌웨어를 CPU(9) 자신이 해독하고, CPU(9)에 구비된 플래시 ROM(22)에 업로딩하는 구성으로 되어 있었다. CPU(9)는 암호화된 펌웨어를 해독하는 암호화 처리부로서 부팅 ROM(21)을 구비하고 있다.
이와 같이, CPU(9)에 구비된 부팅 ROM(21)과 같이 암호화된 펌웨어의 암호를 해독하는 암호화 처리부를 도 1에 도시한 DVD 디코더(7)에 탑재하는 것도 가능하다. 암호화 처리부를 탑재하도록 DVD 디코더(7)를 커스터마이즈하는 것은 보다 현실적인 구성이라고 할 수 있다.
도 8에 제2 실시 형태로서 나타낸, DVD 디코더에 암호화된 펌웨어를 해독하는 복호부(17)를 탑재시킨 DVD-ROM 드라이브에 대하여 설명한다.
도 8에 도시한 DVD-ROM 드라이브에서의 DVD 디코더(207)는, PC(10)로부터 입 력되는 암호화된 펌웨어를 해독하기 위한 복호부(217)와, 플래시 ROM(38)에 저장된 평문의 펌웨어를 PC(10)에 의해 검증할 때에 암호화하는 암호화부(218)가, 도 1에 도시한 DVD 디코더(217)에 부가된 구성으로 되어 있다.
복호부(217)와 암호화부(218)는 암호화의 수법으로서, 키 스트림(키 스트림)이라고 불리는 난수(의사 난수)를 암호화 키로 하여 평문을 암호화하는 공통 키 암호의 하나인 스트림 암호를 해석할 수 있다. 스트림 암호 방식에 의한 암호화 및 복호는 1 비트 또는 수 비트(예를 들면, 1 바이트)의 소 데이터 블록마다 순차 행해진다.
복호부(217)는 스트림 암호에 대응하고 있는 경우에는, 도 9에 도시한 바와 같이 SEED 데이터 저장부(217a)와, 난수 생성부(217b)와, 배타적 논리합 연산부(217c)를 구비하고 있다.
SEED 데이터 저장부(217a)는 난수 생성부(217b)의 초기 입력치이고 공통 키에 상당하는 SEED 데이터를 저장하고 있으며, CPU 코어(36)로부터의 지시에 따라서 저장하고 있는 SEED 데이터를 난수 생성부(217b)에 출력한다.
또한, SEED 데이터 저장부(217a)에 저장되는 SEED 데이터는, 고정된 값이 미리 저장되어 있어도 되고, CPU 코어(36)로부터 적시 설정 가능하게 하여도 된다.
난수 생성부(217b)는 SEED 데이터 저장부(217a)에서 SEED 데이터가 입력된 것에 응답하여 소정의 알고리즘으로 난수를 생성하여, 배타적 논리합 연산부(217c)에 출력한다.
배타적 논리합 연산부(217c)는, 버퍼 메모리(8)로부터 소정의 데이터 길이 단위로 판독되는, 암호화된 펌웨어 데이터인 펌웨어 암호화 데이터와, 상기 난수 생성부(217b)로부터 출력되는 난수에 의해 배타적 논리합을 취함으로써 복호하여, 복호된 평문의 펌웨어 데이터를 CPU(35) 내의 플래시 ROM(38)로 출력한다.
암호화부(218)는 스트림 암호에 대응하고 있는 경우에는 도 10에 도시한 바와 같이, SEED 데이터 저장부(218a), 난수 생성부(218b), 배타적 논리합 연산부(218c)를 구비하고 있다.
SEED 데이터 저장부(218a)는 난수 생성부(218b)의 초기 입력치이며 공통 키에 상당하는 SEED 데이터를 저장하고 있고, CPU 코어(36)로부터의 지시에 응답하여 저장하고 있는 SEED 데이터를 난수 생성부(218b)에 출력한다.
또한, SEED 데이터 저장부(218a)에 저장되는 SEED 데이터는, 고정된 값이 미리 저장되어 있어도 되고, CPU 코어(36)로부터 적시 설정 가능하게 하여도 된다.
또, SEED 데이터 저장부(218a)로부터 난수 생성부(218b)에 입력되는 SEED 데이터는, 상기한 복호부(217)에 있어서 SEED 데이터 저장부(217a)로부터 난수 생성부(217b)에 입력되는 SEED 데이터와 동일한 데이터이다.
난수 생성부(218b)는 SEED 데이터 저장부(218a)로부터 SEED 데이터가 입력된 것에 응답하여 소정의 알고리즘으로 난수를 생성하여 배타적 논리합 연산부(218c)에 출력한다.
또, 난수 생성부(218a)에서 난수 생성에 이용하는 알고리즘은, 상기한 복호부(217)의 난수 생성부(217b)에서 난수 생성에 이용하는 알고리즘과 동일한 것이다.
배타적 논리합 연산부(218c)는 플래시 메모리(38)로부터 소정의 데이터 길이 단위로 판독되는, 평문의 펌웨어 데이터와, 상기 난수 생성부(218b)로부터 출력되는 난수에 의해 배타적 논리합을 취함으로써 암호화하여, 암호화된 펌웨어 암호화 데이터를 버퍼 메모리(8)로 출력한다.
CPU(35)는 CPU 코어(36), RAM(37) 및 플래시 ROM(38)를 구비하고 있다. CPU(35)는 CPU I/F(216)를 통하여 DVD 디코더(207)와 접속되어 있다.
CPU 코어(36)는 도 1에 도시한 CPU 코어(20)와 마찬가지로, CPU(35)의 중심 부분에서 사칙 연산이나 비교 판단을 하는 논리 연산 장치나 가산 회로, 레지스터 등을 구비하고 있다.
RAM(37)은 도 1에 도시한 RAM(23)과 마찬가지로, 기억 내용 유지를 위한 리프레시 동작이 불필요하고 고속 액세스 가능한 SRAM 등이고, 플래시 ROM(38) 내에 저장되어 있는 펌웨어를 업데이트할 때에 데이터 및 업데이트용 프로그램의 전개 영역이 된다.
플래시 ROM(38)은 예를 들면, 데이터의 전기적 소거가 가능한 PROM인 EEPROM 등의 소위 플래시 메모리이다. 플래시 ROM(38)은 도 1에 도시한 플래시 ROM(22)과 마찬가지로, 해당 DVD-ROM 드라이브의 재생 제한을 하는 프로그램인 펌웨어가 저장된다.
DVD 디코더(207)의 복호부(217)에서 복호된 평문의 펌웨어 데이터는, CPU I/F(216)를 통하여 CPU(35) 내의 플래시 ROM(38)에 출력된다.
또, 플래시 ROM(38)에서도, 도 1에 도시한 DVD-ROM 드라이브의 CPU(9) 내에 구비된 플래시 ROM(22)과 마찬가지로 TMR 소자를 이용한 MRAM을 사용하는 것도 가능하다.
도 8에 도시한 DVD-ROM 드라이브에서는, DVD 디코더(207)에 의해 복호된 평문의 펌웨어 데이터는 평문 그대로 CPU(35)에 전송되게 된다. 그 때문에, 전송될 때에 배선 등이 조작되어, 평문의 펌웨어 데이터가 숨겨져 보일 가능성이 있다.
따라서, 평문의 펌웨어가 흐르는 개소인 DVD 디코더(207)와, CPU(35)의 사이의 배선을, 다층 기판을 사용하여 내층에 실시하도록 하거나, 반도체 패키지를 핀이 아닌 볼그리드 어레이 등으로 한다고 하는 처리가 필요하게 된다.
또, 도 8에 도시한 DVD-ROM 드라이브의 DVD 디코더(207), CPU(35) 이외의 기능부에 관해서는, 도 1에 도시한 DVD-ROM 드라이브가 구비하는 기능부와 동일하기 때문에 설명을 생략한다.
다음에, 도 11 및 도 12에 도시하는 흐름도를 이용하여, 플래시 ROM(38)에 기억된 펌웨어를 업데이트할 때의 동작에 대하여 설명한다. 우선, 도 11에 도시하는 흐름도를 이용하여, 업데이트(update) 함수가 RAM(37)에 판독되기까지의 동작에 대하여 설명한다.
단계 S101에 있어서, CPU 코어(36)는 PC(10)로부터 송신받아, 수신한 커맨드가 라이트 버퍼 커맨드(Write Buffer Command)인지 여부를 판정한다. 라이트 버퍼 커맨드가 아닌 경우에는 공정을 단계 S102로 진행시키고, 라이트 버퍼 커맨드인 경우에는 공정을 단계 S103으로 진행시킨다.
단계 S102에 있어서, CPU 코어(36)는, PC(10)으로부터 송신된 라이트 버퍼 커맨드에, 플래시 ROM(38)에 기억되어 있는 펌웨어를 갱신할 것을 지시하는 파라미터가 부가되어 있는지 여부를 검출하여, 부가되어 있지 않은 경우에는 공정을 단계 S103으로 진행시키고, 부가되어 있는 경우에는 공정을 단계 S104로 진행시킨다.
단계 S103에 있어서, CPU 코어(36)는 PC(10)로부터 송신된 커맨드가 라이트 버퍼 커맨드가 아닌 것에 응답하여, 송신된 커맨드를 실행한다. 또한, CPU 코어(36)는, 송신된 커맨드가, 라이트 버퍼 커맨드이지만 펌웨어를 갱신할 것을 지시하는 파라미터가 부가되어 있지 않은 것에 응답하여, PC(10)로부터 송신되는 펌웨어 이외의 데이터를 버퍼 메모리(8)에 기입하도록 제어한다. 단계 S103의 공정이 종료되면 공정은 단계 S101로 되돌아간다.
PC(10)는 DVD-ROM 드라이브에 라이트 버퍼 커맨드를 송신한 후, 갱신할 펌웨어를 스트림 암호화 방식으로 암호화한 펌웨어 암호화 데이터를 바이너리 파일로서 DVD-ROM 드라이브에 송신한다.
단계 S104에 있어서, CPU 코어(36)는 라이트 버퍼 커맨드를 수신한 것에 응답하여, 버퍼 메모리(8)의 데이터 기억 영역의 소정의 어드레스 N으로부터 M(M은 자연수)Byte분의 영역을 확보하고, PC(10)로부터 송신되는 바이너리 파일을 상기 확보한 데이터 기억 영역에 기억시킨다.
단계 S105에 있어서, CPU 코어(36)는 전송된 바이너리 파일의 Check Sum을 확인한다. 송신되는 바이너리 파일에는 Check Sum 데이터가 첨부되어 있다. CPU 코어(36)는 이 첨부된 Check Sum 데이터와, 송신된 바이너리 파일의 바이너리 데이터의 가산치를 비교하여, 일치한 경우에는 올바르게 바이너리 파일이 송신된 것으 로 보고 공정을 단계 S107로 진행시키고, 일치하지 않은 경우에는 바이너리 파일의 송신이 실패하였다고 보고 공정을 단계 S106으로 진행시킨다.
단계 S106에 있어서, CPU 코어(36)는 단계 S105에서의 Check Sum 데이터의 검증 결과로부터 올바르게 바이너리 파일이 송신되지 않았음을, Check Condition Status에서 커맨드를 완료시킴으로써 PC(10)에 알려, 공정을 다시 단계 S101로 복귀시킨다.
단계 S107에 있어서, CPU 코어(36)는 플래시 ROM(38)에 저장되어 있는 플래시 ROM(38)의 펌웨어를 갱신하는 업데이트 함수를 RAM(37)에 복사하고, RAM(37)에서 CPU 코어(36)의 프로그램을 실행할 수 있는 상태로 한다.
그 후, CPU 코어(36)는 플래시 ROM(38)의 펌웨어 저장 영역에 기억되어 있는 데이터, 즉 갱신 전의 펌웨어를 소거한다. 또, 이 소거 동작은 플래시 ROM(38)이 오버라이트 가능한 MRAM인 경우, 생략되게 된다.
계속해서, 도 12에 도시하는 흐름도를 이용하여 업데이트(update) 함수에 의한 처리 동작에 대하여 설명한다.
단계 S111에 있어서, CPU 코어(36)는 RAM(37)에 저장된 업데이트 함수의 선두 어드레스를 액세스하여, 업데이트 함수에 의한 펌웨어의 플래시 ROM(38)에의 업데이트를 개시한다.
단계 S112에 있어서, CPU 코어(36)는 도시하지 않은 인터럽트 제어 회로를 제어하여 모든 인터럽트 프로그램의 실행과, 예외 처리의 실행을 금지한다.
단계 S113에 있어서, CPU 코어(36)는 플래시 ROM(38)에의 기입 타이밍을 제 어하는 도시하지 않은 기입 타이밍 제어용 타이머를 기동한다. 이하, 플래시 ROM(38)에 데이터를 기입할 때는 기입 타이밍 제어용 타이머의 타이밍 제어에 기초하여 실행된다.
단계 S114에 있어서, CPU 코어(36)는 펌웨어 암호화 데이터의 바이너리 파일이 기억되어 있는 버퍼 메모리(8)의 어드레스 번호 N과, 펌웨어를 기억시키는 플래시 ROM(38)의 어드레스 번호 0에 액세스를 한다.
단계 S115에 있어서, CPU 코어(36)는 버퍼 메모리(8)의 어드레스 번호 N부터 복호하기 좋은 단위마다(예를 들면, 1Byte의 데이터) 판독하고, 복호부(17)에서 복호 처리를 하여 평문으로 한다. CPU 코어(36)는 복호되어 평문인 펌웨어 데이터를 해당 CPU 코어(36) 내의 레지스터 또는 RAM(37)에 저장한다.
또한, CPU 코어(36)는 해당 CPU 코어(36) 내의 레지스터 또는 RAM(37)에 저장된 펌웨어 데이터를 판독하여, 플래시 ROM(38)의 어드레스 번호 O부터 기입한다.
단계 S116에 있어서, CPU 코어(36)는 플래시 ROM(38)에 펌웨어 데이터가 전부 기입되었는지 여부를 판단한다. CPU 코어(36)는 어드레스 번호가 M이 아닌 경우에는 공정을 단계 S117로 진행시키고, 어드레스 번호가 M이 되면 공정을 단계 S118로 진행시킨다.
단계 S117에 있어서, CPU 코어(36)는 버퍼 메모리(8)의 어드레스 번호 및 플래시 ROM(38)의 어드레스 번호를 1Byte 늘린 어드레스 번호에 액세스를 한다. 이 공정이 종료되면 단계 S115로 되돌아가, 버퍼 메모리(8)가 액세스한 어드레스 번호로부터 펌웨어 암호 데이터를 판독하고, 복호 처리를 하여 복호된 평문의 펌웨어 데이터를 플래시 ROM(38)가 액세스한 어드레스 번호에 기입한다.
단계 S118에 있어서, CPU 코어(36)는 플래시 ROM(38)에의 기입 타이밍을 제어하는 도시하지 않은 기입 타이밍 제어용 타이머를 정지시킨다.
단계 S119에 있어서, 단계 S116에서, 플래시 ROM(38)에 기억된 펌웨어 데이터의 최종 어드레스 번호가 M이라고 판정되고, 단계 S118에서, 도시하지 않은 기입 타이밍 제어용 타이머가 정지됨으로써, 펌웨어의 플래시 ROM(38)에의 업데이트가 완료된다.
이와 같이 하여, 본 발명을 적용한 도 8에 도시하는 DVD-ROM 드라이브에서는, 플래시 ROM(38)에 저장되어 있는 펌웨어를 업데이트할 때, PC(10)에서 스트림 암호 방식으로 암호화된 펌웨어 암호화 데이터를, DVD 디코더(207) 내의 복호부(217)에 의해 복호하여, CPU(35) 내의 플래시 ROM(38)에 기입한다.
DVD 디코더(207)와 CPU(35)의 교환에서는, 평문의 펌웨어 데이터가 전송되게 되지만, 배선 처리나 반도체 패키지의 단자 부분이 노출되지 않는다고 하는 실장 레벨을 연구함으로써, 펌웨어 데이터의 누설을 방지할 수 있다.
다음에, 도 13에 도시하는 흐름도를 이용하여, 플래시 ROM(38)에 펌웨어를 업데이트한 결과를 PC(10)로 검증할 때의 처리 동작에 대하여 설명한다.
단계 S121에 있어서, CPU 코어(36)는 PC(10)로부터 송신받아, 수신한 커맨드가 리드 버퍼 커맨드(Read Buffer Command)인지 여부를 판정한다. 리드 버퍼 커맨드가 아닌 경우에는 공정을 단계 S123으로 진행시키고, 리드 버퍼 커맨드인 경우에는 공정을 단계 S122로 진행시킨다.
단계 S122에 있어서, CPU 코어(36)는 PC(10)로부터 송신된 리드 버퍼 커맨드에, 플래시 ROM(38)에 기억되어 있는 펌웨어를 판독할 것을 지시하는 파라미터가 부가되어 있는지 여부를 검출하여, 부가되어 있지 않은 경우에는 공정을 단계 S123으로 진행시키고, 부가되어 있는 경우에는 공정을 단계 S124로 진행시킨다.
단계 S123에 있어서, CPU 코어(36)는 PC(10)로부터 송신된 커맨드가 리드 버퍼 커맨드가 아닌 것에 응답하여, 송신된 커맨드를 실행한다. 또한, CPU 코어(36)는, 송신된 커맨드가, 리드 버퍼 커맨드이지만 펌웨어를 갱신할 것을 지시하는 파라미터가 부가되어 있지 않은 것에 응답하여, 펌웨어 이외의 데이터를 버퍼 메모리(8)에 판독하도록 제어한다. 단계 S123이 종료되면 공정은 종료된다.
PC(10)는 DVD-ROM 드라이브에 리드 버퍼 커맨드를 송신한 후, 갱신할 펌웨어를 스트림 암호화 방식으로 암호화한 펌웨어 암호화 데이터를 바이너리 파일로서 DVD-ROM 드라이브에 송신한다.
단계 S124에 있어서, CPU 코어(36)는 버퍼 메모리(8)의 어드레스 번호 N과, 펌웨어가 기억되어 있는 플래시 ROM(38)의 어드레스 번호 O에 액세스를 한다.
단계 S125에 있어서, CPU 코어(36)는 플래시 ROM(38)의 어드레스 번호 0부터 복호하기 좋은 단위마다(예를 들면, 1Byte의 데이터) 판독하여, 해당 CPU 코어(36) 내의 레지스터 또는 RAM(37)에 저장한다.
또한, CPU 코어(36)는 그 CPU 코어(36) 내의 레지스터 또는 RAM(37)에 저장된 평문인 펌웨어 데이터를 판독하여, DVD 디코더(207)의 암호화부(18)에서 암호화 처리를 하여 펌웨어 암호화 데이터로 한다. CPU 코어(36)는 암호화된 펌웨어 암호 화 데이터를 버퍼 메모리(8)의 어드레스 번호 N부터 기입한다.
단계 S126에 있어서, CPU 코어(36)는 플래시 ROM(38)으로부터 펌웨어 데이터가 전부 판독되었는지 여부를 판단한다. CPU 코어(36)는 어드레스 번호가 M이 아닌 경우에는 공정을 단계 S127로 진행시키고, 어드레스 번호가 M이 되면 공정을 단계 S128로 진행시킨다.
단계 S127에 있어서, CPU 코어(36)는 버퍼 메모리(8)의 어드레스 번호 및 플래시 ROM(38)의 어드레스 번호를 1Byte 늘린 어드레스 번호에 액세스한다. 이 공정이 종료되면 단계 S125로 되돌아가, 플래시 ROM(38)이 액세스한 어드레스 번호로부터 펌웨어 데이터를 판독하고, 암호화 처리를 하여 암호화된 펌웨어 암호화 데이터를 버퍼 메모리(8)의 액세스한 어드레스 번호에 기입한다.
단계 S128에 있어서, 플래시 ROM(38)에 저장되어 있는 펌웨어 데이터가 전부 판독되고, 암호화되어 버퍼 메모리(8)에 저장된 것에 응답하여, CPU 코어(36)는, 버퍼 메모리(8)에 저장되어 있는 펌웨어 암호화 데이터를 PC(10)로 전송한다.
전송된 펌웨어 암호화 데이터는 PC(10)에서 암호화된 그대로 원 데이터와 비교되어 일치가 확인된다.
이와 같이 하여, PC(10)는 DVD-ROM 드라이브의 플래시 ROM(38)에 펌웨어가 확실하게 갱신되어 있는지 여부를 검증할 수 있다.
DVD 디코더(207)와 CPU(35)의 교환에서는 평문의 펌웨어 데이터가 전송되게 되지만, 배선 처리나 반도체 패키지의 단자 부분이 노출되지 않는다고 하는 실장 레벨을 연구함으로써, 펌웨어 데이터의 누설을 방지할 수 있다.
그런데, 일반적으로, PC(Personal Computer) 등에서 실행되는 프로그램은 HD(Hard Disk) 등의 보조 기억 장치에 기억되어 있고, PC의 전원 기동 시에 RAM(Random Access Memory) 등의 주기억 장치에 로딩된다. CPU는 주기억 장치에 로딩된 프로그램을 판독하여 프로그램을 실행한다.
이와 같이, CPU가 실행하는 프로그램을 주기억 장치에 로딩하기 위해서는, CPU 코어 내에 상주, 또는 상기 HD로부터 최초로 판독되는 IPL(Initial Program Loader)에 의해서 행해진다.
한편, 제1 실시 형태로서 도 1을 이용하여 설명한 DVD-ROM 드라이브, 및 제2 실시 형태로서 도 8을 이용하여 설명한 DVD-ROM 드라이브에서는, DVD 디코더에 CPU를 구비하고 있는 경우가 있다. 이와 같이, DVD 데이터에 구비된 CPU도 상술한 PC와 마찬가지로 외부의 기억부에 저장되어 있는 프로그램을 RAM에 판독하고, RAM에 판독한 프로그램을 실행시킴으로써 DVD 디코드 등의 소정의 처리를 행하게 된다.
따라서, 외부의 기억부에 저장되어 있는 프로그램은, DVD 디코더 내의 RAM에 판독될 때 훔쳐 보여져, 프로그램의 해석이나 개찬이라는 행위가 이루어질 가능성이 있기 때문에 암호화하여 저장해야 한다.
또, 이하의 설명에서는, DVD 디코더가 구비하는 CPU가 실행하는 프로그램을 마이크로 프로그램이라고 하고, 그 데이터를 마이크로 프로그램 데이터라고 한다. 또한, 마이크로 프로그램 데이터가 암호화된 것은 암호화 마이크로 프로그램 데이터라고 한다.
도 14에 제3 실시 형태로서 나타내는 DVD-ROM 드라이브에서는, DVD 디코더로 서, 도 1에 도시한 DVD 디코더(7)에, 내부 CPU 코어(341), SRAM(342) 및 복호부(343)를 부가한 DVD 디코더(307)를 구비하고 있다. 내부 CPU 코어(341), SRAM(342) 및 복호부(343)는, 메모리 제어부(314), CPU I/F(316)와 내부 버스로 접속되어 있다. 또한, 도 14에 도시한 DVD-ROM 드라이브에서는, 외부 CPU(45)와, DVD 디코더(307)에 판독되는 암호화된 마이크로 프로그램 데이터(암호화 마이크로 프로그램 데이터)가 저장된 플래시 ROM(46)을 구비하고 있다.
내부 CPU 코어(341)는 DVD 디코더(307) 제어용의 마이크로 컨트롤러이다. 내부 CPU 코어(341)는 자신이 실행하는 마이크로 프로그램을 SRAM(342)에 판독하게 하게 하기 위한 프로그램인 IPL을 저장하고 있다. DVD-ROM 드라이브에 전원이 투입되면 IPL이 기동하게 된다.
SRAM(342)는 내부 CPU 코어(341)에서 실행하는 마이크로 프로그램 데이터를 저장하는 내부 CPU 코어(341)에 대한 주기억 장치이다. SRAM(342)에는 IPL에 의해서 플래시 ROM(46)로부터 판독된 암호화 마이크로 프로그램 데이터가 복호부(343)에 의해 복호되어 저장된다.
복호부(343)는 플래시 ROM(46)에 저장되어 있는 암호화된 마이크로 프로그램 데이터(암호화 마이크로 프로그램 데이터)를 복호하여 SRAM(342)의 프로그램 영역으로 전송하기 위한 복호 회로이다. 복호부(343)는 공통 키 암호(블록 암호, 스트림 암호)화 방식으로 암호화된 마이크로 프로그램 데이터(암호화 마이크로 프로그램 데이터)를 복호한다.
복호부(343)는 스트림 암호에 대응하고 있는 경우에는, 도 15에 도시한 바와 같이, SEED 데이터 저장부(343a), 난수 생성부(343b), 배타적 논리합 연산부(343c)를 구비하고 있다.
SEED 데이터 저장부(343a)는 난수 생성부(343b)의 초기 입력치이며 공통 키에 상당하는 SEED 데이터를 저장하고 있고, 내부 CPU 코어(341)로부터의 지시에 응답하여 저장하고 있는 SEED 데이터를 난수 생성부(343b)에 출력한다.
또한, SEED 데이터 저장부(343a)에 저장되는 SEED 데이터는, 고정된 값이 미리 저장되어 있어도 되고, 내부 CPU 코어(341)로부터 적시 설정 가능하게 하여도 된다.
난수 생성부(343b)는 SEED 데이터 저장부(343a)에서 SEED 데이터가 입력된 것에 응답하여 소정의 알고리즘으로 난수를 생성하여 배타적 논리합 연산부(343c)에 출력한다.
배타적 논리합 연산부(343c)는, 플래시 ROM(46)으로부터 소정의 데이터 길이 단위로 판독되는, 암호화된 마이크로 프로그램 데이터인 암호화 마이크로 프로그램 데이터와, 상기 난수 생성부(343b)로부터 출력되는 난수에 의해 배타적 논리합을 취함으로써 복호하여, 복호된 평문의 마이크로 프로그램 데이터를 DVD 디코더(307) 내의 SRAM(342)으로 출력한다.
또한, DVD 디코더(307)의 CPU I/F(316)는, 그 DVD 디코더(307) 내의 SRAM(342)에 저장되어 있는 마이크로 프로그램 데이터, 복호부(343)의 SEED 데이터 저장부(343a)에 저장되어 있는 SEED 데이터, 난수 생성부(343b)의 난수 생성 알고리즘을 사용자 레벨에서는 참조할 수 없는 보호 기능을 갖추고 있다. 이에 의해, 복호된 평문의 마이크로 프로그램 데이터, 및 암호화 마이크로 프로그램 데이터를 복호하기 위한 복호 기능을 추출하는 것을 제한할 수 있다.
외부 CPU(45)는 DVD-ROM 드라이브를 통괄적으로 제어하는 제어부이며, 사칙 연산이나 비교 판단을 하는 논리 연산 장치나 가산 회로, 레지스터 등을 구비하고 있다.
플래시 ROM(46)은 예를 들면, 데이터의 전기적 소거가 가능한 PROM인 EEPROM 등의 소위 플래시 메모리이다. 플래시 ROM(46)는 내부 CPU 코어(341)의 실행 프로그램이 암호화된 암호화 마이크로 프로그램 데이터를 저장하고 있다.
계속해서, 도 16에 도시하는 흐름도를 이용하여, 도 14에 도시하는 DVD-ROM 드라이브의 기동 시의 동작에 대하여 설명한다.
단계 S131에 있어서, 전원 투입 리셋에 의해 내부 CPU 코어(341) 내에 상주하는 IPL이 기동된다. IPL이 기동됨과 동시에, 복호부(343)에서는 SEED 데이터를 난수 생성부(343b)가 취득함으로써 초기화가 행해진다.
단계 S132에 있어서, 내부 CPU 코어(341)에서 실행되는 IPL에 의해서, 플래시 ROM(46)의 선두 어드레스로부터, 해당 플래시 ROM(46)에 저장되어 있는 암호화 마이크로 프로그램 데이터의 판독이 개시된다. 판독된 암호화 마이크로 프로그램 데이터는, 복호부(343)에 입력되고 난수 생성부(343a)에서의 출력 데이터와 배타적 논리합을 취하여 평문인 마이크로 프로그램 데이터로 복호된다. 복호된 마이크로 프로그램 데이터는 SRAM(342)에 기입된다.
단계 S133에 있어서, 내부 CPU 코어(341)에서 실행되는 IPL에 의해서, 플래 시 ROM(46) 내에 저장되어 있는 암호화 마이크로 프로그램 데이터가 소정의 량만큼 판독되었는지 여부가 판정된다. 소정량의 암호화 마이크로 프로그램 데이터가 판독된 경우에는, 공정을 단계 S134로 진행시키고, 소정량의 암호화 마이크로 프로그램 데이터가 판독되어 있지 않은 경우에는, 플래시 ROM(46)으로부터의 판독, 복호부(343)에서의 복호, SRAM(342)에의 기입이 실행된다.
단계 S134에 있어서, 내부 CPU 코어(341)에서 실행되는 IPL에 의해서, 플래시 ROM(46)로부터의 판독이 완료되면, 내부 CPU 코어(341)는 내장하는 프로그램 카운터의 값을 SRAM(342)의 선두 어드레스로 하고, SRAM(342) 내에 기입된 평문인 마이크로 프로그램 데이터를 실행한다.
이와 같이 하여, 플래시 ROM(46)에 저장되어 있는 암호화 마이크로 프로그램 데이터는, 도 14에 도시하는 DVD-ROM 드라이브가 기동됨과 함께 IPL에 의해서 판독되고, DVD 디코더(307) 내에서 복호되어, SRAM(342)에 기입된다. 따라서, DVD 디코더(307) 내부 CPU 코어(341)가 실행하는 마이크로 프로그램은, 해당 DVD 디코더(307) 내에서 암호가 복호되기 때문에, 프로그램의 해석이나 개찬을 방지할 수 있다.
상기한 바와 같이, DVD-ROM 드라이브의 펌웨어를 갱신할 때, 암호화하여 PC(10)로부터 DVD-ROM 드라이브에 전송하고, 도 1에 도시한 CPU(9) 내 또는 도 8에 도시한 DVD 디코더(207) 내에서 복호하여 CPU 내의 플래시 ROM에 갱신함으로써, 갱신 시의 해석이나 개찬을 방지할 수 있다. 또한, 도 14에 도시한 DVD-ROM 드라이브와 같이 기동 시에 로딩할 프로그램도 암호화한 채로 복호하는 회로 내에 판독하 고, 그 회로 내에서 암호를 복호함으로써 로딩 시의 프로그램의 해석이나 개찬을 방지할 수 있다.
또, 도 14를 이용하여 설명한 DVD-ROM 드라이브에 있어서, SRAM(342)에 저장하는 마이크로 프로그램은, DVD 디코더(307)에 버스로 접속된 플래시 ROM(46)으로부터 공급되는 것으로 하고 있지만, 예를 들면, 판독 전용 ROM, 디스크형 기록 매체, 리무버블 반도체 메모리 등, 어떤 것이어도 상관없다.
또한, 도 14를 이용하여 설명한 DVD-ROM 드라이브에서는, 플래시 ROM(46)으로부터 복호부(343)를 경유한 SRAM(342)에의 마이크로 프로그램의 판독 처리를, DVD 디코더(307)에 내장되어 있는 내부 CPU 코어(341)가 구비하는 IPL에 의해서 실행했었지만, DVD 디코더(307)의 외부에 있는 CPU, 예를 들면 외부 CPU(45) 등의 제어에 의해서 실시하도록 하여도 무방하다.
그러나, 상기와 같이 암호화된 프로그램의 복호 후의 데이터 누설을 방지할 수 있었다고 해도, 암호화된 그대로 프로그램이 개찬된다고 하는 것도 생각된다.
예를 들면, 도 1에 도시한 DVD-ROM 드라이브에서, 펌웨어가 암호화된 채로 개찬되면, 플래시 ROM(22)에는 그대로 개찬된 데이터가 저장되게 되어, 콘텐츠의 위법 복제, 드라이브의 동작 불량 등을 야기하여 버릴 가능성이 있다.
그래서, 갱신할 프로그램 본체에 프로그램이 개찬되었음을 검증하는 검증 프로그램을 첨부하여 DVD-ROM 드라이브에 송신한다고 하는 수법이 고려될 수 있다. 갱신하는 프로그램 본체에 이 검증 프로그램을 첨부하면, DVD-ROM 드라이브에서 갱신된 프로그램을 실행하면, 우선 프로그램 본체에 첨부한 검증 프로그램이 기동되 어, 갱신된 프로그램이 개정되어 있는지 여부를 검증할 수 있다.
도 17 내지 도 19에 도시하는 흐름도를 이용하여, 상기한 암호화 데이터의 개찬을 방지하여 프로그램의 갱신을 하는 동작에 대하여 설명한다. 또, 설명을 위해 프로그램을 갱신하는 드라이브로서 도 8에 도시한 DVD-ROM 드라이브를 이용한다.
우선, 도 17에 도시한 흐름도를 이용하여 검증 프로그램을 첨부한 프로그램 본체를 DVD-ROM 드라이브에 송신하기까지의 동작에 대하여 설명한다.
단계 S141에 있어서, 예를 들면, 드라이브 제조 회사 등에 따라 DVD-ROM 드라이브에 송신하는 프로그램이 작성된다. 작성되는 프로그램 본체에는 상기한 프로그램의 개찬을 검증하기 위한 검증 프로그램이 첨부되어 있다.
단계 S142에 있어서, 드라이브 제조 회사는 배포할 프로그램으로부터 검증 데이터를 생성하고, 도 20에 도시한 바와 같이 생성한 검증 데이터를 프로그램에 부가한다.
이 검증 데이터는 해시 함수를 이용하여 프로그램 본체를 연산함으로써 얻어지는 해시값이다. 예를 들면, 도 21에 도시한 바와 같이 해시 함수로서, 미국 상공부에 소속된 표준화 기관 NIST에 의해서 정해진 해시 알고리즘인 SHA(Secure Hash Algorithm)를 더욱 개량한 SHA-1을 사용할 수 있다. SHA-1은 264 비트 미만의 데이터 길이로부터 160 비트 길이의 해시값(검증 데이터)을 생성하는 알고리즘이다.
단계 S143에 있어서, 드라이브 제조 회사는 검증 데이터가 부가된 프로그램 을, 도 22에 도시한 바와 같이 검증 데이터도 포함시켜 암호화한다.
단계 S144에 있어서, 드라이브 제조 회사는 암호화된 프로그램으로부터 Check Sum 데이터를 산출하여, 도 23에 도시한 바와 같이 Check Sum 데이터를 부가한다. 부가할 데이터는 Check Sum 데이터 대신에, 재차 해시 함수에 의해 구한 해시값이더라도 무방하다. Check Sum 데이터가 부가됨으로써 프로그램은 송신 가능한 데이터로 된다.
송신 가능한 데이터는 예를 들면 ROM 미디어 등을 사용하여 사용자(PC10)에게 배포된다.
단계 S145에 있어서, PC(10)는 DVD-ROM 드라이브에 송신 가능해진 데이터(프로그램)를 송신한다.
다음에, 도 18에 도시하는 흐름도를 이용하여, PC(10)로부터 송신된 암호화 데이터의 개찬 방지 조치가 취해진 프로그램을 수신하는 DVD-ROM 드라이브의 동작에 대하여 설명한다.
단계 S151에 있어서, DVD-ROM 드라이브는 PC(10)로부터 라이트 버퍼 커맨드와 함께 송신되는 프로그램을 수신하면, 프로그램에 첨부된 Check Sum 데이터와, 송신된 프로그램 암호화 데이터의 가산치를 비교한다. 일치하지 않은 경우에는 공정을 단계 S152로 진행시키고, 일치한 경우에는 공정을 단계 S153으로 진행시킨다.
단계 S152에 있어서, Check Sum 데이터의 비교 결과로부터 프로그램 암호화 데이터가 올바르게 송신되지 않았음을 Check Condition Status에서 커맨드 완료시킴으로써 PC1O에 알려, 공정을 다시 단계 S151로 복귀시킨다.
단계 S153에 있어서, 복호부(17)는 프로그램 암호화 데이터를 복호한다. 복호된 데이터에는 검증 데이터가 부가되어 있고, 프로그램 본체에는 검증 프로그램이 기술되어 있다.
단계 S154에 있어서, 복호된 프로그램 데이터는 플래시 ROM(38)에 저장된다.
단계 S155에 있어서, 플래시 ROM(38)에 저장된 프로그램이 기동되면, 우선 처음에 검증 프로그램이 동작한다.
다음에, 도 19에 도시하는 흐름도를 이용하여 검증 프로그램의 동작을 설명한다.
단계 S161에 있어서, 기동된 검증 프로그램은 프로그램 본체의 해시값을 해시 함수에 의해 계산한다.
단계 S162에 있어서, 검증 프로그램은, 해시값이 계산되면 프로그램 본체에 첨부된 검증 데이터와 계산된 해시값을 비교하여, 일치한 경우에는 공정을 단계 S163으로 진행시키고, 일치하지 않은 경우에는 공정을 단계 S164로 진행시킨다.
단계 S163에 있어서, DVD-ROM 드라이브는, 첨부된 검증 데이터와 계산한 해시값이 서로 일치하고, 플래시 ROM(38)에 저장된 프로그램이 개찬되어 있지 않은 프로그램이라고 판정된 것에 응답하여, 플래시 ROM(38)에 저장된 프로그램 본체를 실행한다.
단계 S164에 있어서, DVD-ROM 드라이브는, 첨부된 검증 데이터와 계산한 해시값이 서로 일치하지 않고, 플래시 ROM(38)에 저장된 펌웨어가 개찬된 프로그램이라고 판정된 것에 응답하여, Not Ready 상태로 되어, 아무 동작도 하지 않는 안정 된 상태가 된다.
이와 같이 하여, 송신할 프로그램 본체에, 해시 함수에 의해서 산출된 검증 데이터를 부가하여 송신함으로써, DVD-ROM 드라이브는 암호화 데이터 그 자체가 개찬된 경우에도 개찬되었음을 검증할 수 있다.
또, 상술한 본 발명의 제1 실시 형태 및 제2 실시 형태로서 나타내는 DVD-ROM 드라이브에서는, 펌웨어를 갱신할 때, 갱신할 펌웨어를 PC(10)로부터 송신되도록 하고 있지만, 펌웨어는 예를 들면, 해당 DVD-ROM 드라이브로 재생 가능한 DVD-ROM(1)에 기록되어 있어도 된다. DVD-ROM(1)에 펌웨어 암호화 데이터를 파일로서 기억함으로써, DVD-ROM 드라이브는 이 DVD-ROM(1)을 재생함으로써 갱신할 펌웨어를 취득할 수 있다.
마찬가지로, 본 발명의 제3 실시 형태로서 나타내는 DVD-ROM 드라이브에서는, 암호화 마이크로 프로그램 데이터를 파일로서 기록한 DVD-ROM(1)를 재생함으로써 마이크로 프로그램을 로딩하도록 하여도 된다.
또한, 이 DVD-ROM(1)에는 본 발명의 제1 실시 형태로서 나타낸 DVD-ROM 드라이브의 부팅 ROM(21)에 기입되어 있는 펌웨어 갱신 시에 기동되는 프로그램이 기입되어 있어도 되며, 상기와 같이 DVD-ROM 드라이브는 DVD-ROM(1)을 재생함으로써 펌웨어를 갱신시킬 수 있다.
마찬가지로, DVD-ROM(1)에는 본 발명의 제2 실시 형태로서 나타낸 DVD-ROM 드라이브에 의해 펌웨어 갱신 시에 기동되는 프로그램이 기입되어 있어도 되며, 상기와 같이 DVD-ROM 드라이브는 DVD-ROM(1)을 재생함으로써 펌웨어를 갱신시킬 수 있다.
마찬가지로, DVD-ROM(1)에는 본 발명의 제3 실시 형태로서 도시한 DVD-ROM 드라이브에 의해 마이크로 프로그램을 로딩할 때에 기동되는 프로그램이 기입되어 있어도 되며, 상기와 같이 DVD-ROM 드라이브는 DVD-ROM(1)을 재생함으로써 마이크로 프로그램을 로딩시킬 수 있다.
또한, 본 발명의 제1 실시 형태 및 제2 실시 형태로서 도시한 DVD-ROM 드라이브에 있어서, 메모리스틱(등록 상표) 등의 리무버블 반도체 메모리에 대응한 반도체 메모리용 슬롯을 마련하고, 상기한 DVD-ROM(1) 대신에 펌웨어 암호화 데이터를 상기 리무버블 반도체 메모리에 기록하여 펌웨어를 갱신하도록 하여도 좋다.
마찬가지로, 본 발명의 제3 실시 형태로서 나타낸 DVD-ROM 드라이브에서도, 암호화 마이크로 프로그램 데이터를 상기 리무버블 반도체 메모리에 기록하여 마이크로 프로그램을 로딩하도록 하여도 된다.
그리고 또한, 상기한 바와 같이 본 발명의 제1 실시 형태, 제2 실시 형태 및 제3 실시 형태로서 DVD-ROM 드라이브를 적용하고 있지만, 본 발명은 이것에 한정되는 것이 아니고, CD-ROM, 데이터가 기록된 CD-R, CD-RW, DVD-RAM, DVD-R/RW, DVD+R/RW를 기록 재생 가능한 디스크 장치 전반에 적용하는 것이 가능하다.
또한, 본 발명을 적용한 제1 실시 형태, 제2 실시 형태 및 제3 실시 형태로서 DVD-ROM 드라이브를 이용하였지만, 본 발명은 이것에 한정되는 것이 아니고, 어떠한 보안이 필요한 처리 장치 전반에 적용 가능하다.
또한, 펌웨어 또는 마이크로 프로그램을 암호화하고 복호하는 수법으로서 공통 키를 이용한 암호화 수법을 이용하고 있지만, 본 발명은 이것에 한정되는 것이 아니고, 공개 키 방식이나 그 이외의 암호화 알고리즘을 적용해도 상관없다.
게다가, 본 발명을 적용한 제1 내지 제3 실시 형태로서 도시한 DVD-ROM 드라이브에서는, 펌웨어나 마이크로 프로그램을 대상으로 하고 있지만, 해당 DVD-ROM 드라이브 내의 재기입 가능한 레지스터 메모리의 설정치와 같은 데이터를 대상으로 하여 갱신 또는 설정 등을 해도 무방하다.

Claims (61)

  1. 소정의 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 소정의 프로그램을 상기 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 수단과,
    상기 암호화 프로그램 데이터 수신 수단에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 수단과,
    상기 복호 수단에서 상기 암호화 프로그램 데이터로부터 복호된 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 기억하는 기억 수단과,
    상기 기억 수단에 기억된 상기 소정의 프로그램을 판독하는 프로그램 판독 수단과,
    상기 판독 수단에 의해 판독된 상기 소정의 프로그램에 기초하여 해당 정보 처리 장치의 소정의 동작을 제어하는 제어 수단
    을 포함하고,
    상기 제어 수단은, 상기 소정의 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 소정의 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하고, 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하고,
    상기 판독 수단은, 상기 제어 수단에 의해 비교된 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억되어 있는 상기 소정의 프로그램을 판독하는 정보 처리 장치.
  2. 제1항에 있어서,
    상기 암호화 프로그램 데이터 수신 수단은, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 정보 처리 장치.
  3. 제1항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 수단을 포함하고,
    상기 암호화 프로그램 데이터 수신 수단은, 상기 재생 수단에서 재생된 상기 암호화 프로그램 데이터를 수신하는 정보 처리 장치.
  4. 제1항에 있어서,
    상기 암호화 프로그램 데이터가 기억된 암호화 프로그램 데이터 기억 수단과,
    상기 암호화 프로그램 데이터 기억 수단에 기억되어 있는 상기 암호화 프로그램 데이터를 판독하는 암호화 프로그램 데이터 판독 수단을 포함하고,
    상기 암호화 프로그램 데이터 수신 수단은, 상기 암호화 프로그램 데이터 판독 수단에 의해서 판독된 상기 암호화 프로그램 데이터를 수신하는 정보 처리 장치.
  5. 정보 처리 장치에 소정의 프로그램을 로딩하기 위한 프로그램 로딩 방법으로서,
    상기 소정의 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 소정의 프로그램을 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계와,
    상기 암호화 프로그램 데이터 수신 단계에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 단계와,
    상기 복호 단계에서 상기 암호화 프로그램 데이터로부터 복호된 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 기억 수단에 기억하는 기억 단계와,
    상기 소정의 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 소정의 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하는 검증 데이터 산출 단계와,
    상기 검증 데이터 산출 단계에서 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하는 검증 데이터 비교 단계와,
    상기 검증 데이터 비교 단계에 의해 비교된 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억된 상기 소정의 프로그램을 판독하는 프로그램 판독 단계와,
    상기 판독 단계에 의해 판독된 상기 소정의 프로그램에 기초하여 해당 정보 처리 장치의 소정의 동작을 제어하는 제어 단계
    를 포함하는 프로그램 로딩 방법.
  6. 제5항에 있어서,
    상기 암호화 프로그램 데이터 수신 단계는, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 프로그램 로딩 방법.
  7. 제5항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 단계를 포함하고,
    상기 암호화 프로그램 데이터 수신 단계는, 상기 재생 단계에서 재생된 상기 암호화 프로그램 데이터를 수신하는 프로그램 로딩 방법.
  8. 제5항에 있어서,
    상기 암호화 프로그램 데이터가 기억되어 있는 해당 정보 처리 장치 내에 제공되는 암호화 프로그램 데이터 기억 수단으로부터 상기 암호화 프로그램 데이터를 판독하는 암호화 프로그램 데이터 판독 단계를 포함하고,
    상기 암호화 프로그램 데이터 수신 단계는, 상기 암호화 프로그램 판독 단계에 의해 판독된 상기 암호화 프로그램 데이터를 수신하는 프로그램 로딩 방법.
  9. 정보 처리 장치에 소정의 프로그램을 로딩하기 위한 프로그램을 기록한 기록 매체로서,
    상기 소정의 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 소정의 프로그램을 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계와,
    상기 암호화 프로그램 데이터 수신 단계에서 수신한 상기 암호화 프로그램 데이터와 상기 암호화 검증 데이터와 상기 암호화 검증 프로그램을 소정의 복호키를 이용하여, 각각 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 단계와,
    상기 복호 단계에서 복호된 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 기억 수단에 기억하는 기억 단계와,
    상기 소정의 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 소정의 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하는 검증 데이터 산출 단계와,
    상기 검증 데이터 산출 단계에서 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하는 검증 데이터 비교 단계와,
    상기 검증 데이터 비교 단계에 의해 비교된 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억된 상기 소정의 프로그램을 판독하는 프로그램 판독 단계와,
    상기 판독 단계에 의해 판독된 상기 소정의 프로그램에 기초하여 해당 정보 처리 장치의 소정의 동작을 제어하는 제어 단계를 포함하는 프로그램을 기록한 기록 매체.
  10. 제9항에 있어서,
    상기 암호화 프로그램 데이터 수신 단계는, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 프로그램을 기록한 기록 매체.
  11. 제9항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 단계를 포함하고,
    상기 암호화 프로그램 데이터 수신 단계는, 상기 재생 단계에서 재생된 상기 암호화 프로그램 데이터를 수신하는 프로그램을 기록한 기록 매체.
  12. 제9항에 있어서,
    상기 암호화 프로그램 데이터가 기억되어 있는 해당 정보 처리 장치에 제공되는 암호화 프로그램 데이터 기억 수단으로부터 상기 암호화 프로그램 데이터를 판독하는 암호화 프로그램 데이터 판독 단계를 포함하고,
    상기 암호화 프로그램 데이터 수신 단계는, 상기 암호화 프로그램 판독 단계에 의해 판독된 상기 암호화 프로그램 데이터를 수신하는 프로그램을 기록한 기록 매체.
  13. 제1 프로그램이 기억된 기억 수단과, 상기 기억 수단에 기억되어 있는 상기 제1 프로그램을 판독하고, 판독한 상기 제1 프로그램에 기초하여 해당 정보 처리 장치의 소정의 동작을 제어하는 제어 수단을 갖는 제어부를 포함하는 정보 처리 장치로서,
    상기 제어부는,
    상기 제1 프로그램의 갱신을 요구하는 프로그램 갱신 요구에 따라, 제2 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 제2 프로그램을 상기 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 수단과,
    상기 암호화 프로그램 데이터 수신 수단에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 수단과,
    상기 복호 수단에서 상기 암호화 프로그램 데이터로부터 복호된 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을, 상기 기억 수단에 기입하는 프로그램 기입 수단과,
    상기 복호 수단에서 복호된 제2 프로그램 및 상기 기억 수단에 기입된 제2 프로그램의 외부 장치로부터의 추출을 제한하는 추출 제한 수단
    을 포함하고,
    상기 제어 수단은, 상기 제2 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 제2 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하고, 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하고, 비교한 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억되어 있는 상기 제2 프로그램을 판독하는 정보 처리 장치.
  14. 제13항에 있어서,
    상기 암호화 프로그램 데이터 수신 수단은, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 정보 처리 장치.
  15. 제13항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 수단을 포함하고,
    상기 제어 수단은, 상기 프로그램 갱신 요구에 응답하여, 상기 기록 매체를 재생시키도록 상기 재생 수단을 제어하고,
    상기 암호화 프로그램 데이터 수신 수단은, 상기 재생 수단에서 재생된 상기 암호화 프로그램 데이터를 수신하는 정보 처리 장치.
  16. 제1 프로그램이 기억된 기억 수단과, 상기 기억 수단에 기억되어 있는 상기 제1 프로그램을 판독하고, 판독한 상기 제1 프로그램에 기초하여 해당 정보 처리 장치의 소정의 동작을 제어하는 제어 수단을 갖는 제어부를 포함하는 정보 처리 장치의 프로그램 갱신 방법으로서,
    상기 제1 프로그램의 갱신을 요구하는 프로그램 갱신 요구에 응답하여, 제2 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 제2 프로그램을 상기 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계와,
    상기 수신한 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 단계와,
    상기 복호 단계에서 복호된 제2 프로그램의 외부 장치로부터의 추출을 제한하는 추출 제한 단계와,
    상기 암호화 프로그램 데이터로부터 복호된 제2 프로그램을, 상기 기억 수단에 기입하는 프로그램 기입 단계와,
    상기 제어 수단에서 상기 제2 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 제2 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하는 검증 데이터 산출 단계와,
    상기 검증 데이터 산출 단계에서 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하는 검증 데이터 비교 단계와,
    상기 검증 데이터 비교 단계에 의해 비교된 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억되어 있는 상기 제2 프로그램을 판독하는 프로그램 판독 단계
    를 포함하는 프로그램 갱신 방법.
  17. 제16항에 있어서,
    상기 암호화 프로그램 데이터 수신 단계는, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 프로그램 갱신 방법.
  18. 제16항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 단계를 포함하고,
    상기 재생 단계는, 상기 프로그램 갱신 요구의 수신한 것에 응답하여 상기 기록 매체를 재생시키고,
    상기 암호화 프로그램 데이터 수신 단계는, 상기 재생된 암호화 프로그램 데이터를 수신하는 프로그램 갱신 방법.
  19. 제1 프로그램이 기억된 기억 수단과, 상기 기억 수단에 기억되어 있는 상기 제1 프로그램을 판독하고, 판독한 상기 제1 프로그램에 기초해서 소정의 동작을 제어하는 제어 수단을 갖는 제어부를 포함하는 정보 처리 장치의 상기 제1 프로그램을 갱신하기 위한 프로그램을 기록한 기록 매체로서,
    상기 제1 프로그램의 갱신을 요구하는 프로그램 갱신 요구에 응답하여, 제2 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 제2 프로그램을 상기 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계와,
    상기 수신한 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 단계와,
    상기 복호 단계에서 복호된 제2 프로그램의 외부 장치로부터의 추출을 제한하는 추출 제한 단계와,
    상기 암호화 프로그램 데이터로부터 복호된 제2 프로그램을 상기 기억 수단에 기입하는 프로그램 기입 단계와,
    상기 제어 수단에서 상기 제2 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 제2 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하는 검증 데이터 산출 단계와,
    상기 검증 데이터 산출 단계에서 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하는 검증 데이터 비교 단계와,
    상기 검증 데이터 비교 단계에 의해 비교된 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억되어 있는 상기 제2 프로그램을 판독하는 프로그램 판독 단계를 포함하는 프로그램을 기록한 기록 매체.
  20. 제19항에 있어서,
    상기 암호화 프로그램 데이터 수신 단계는, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 프로그램을 기록한 기록 매체.
  21. 제19항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 해당 기록 매체를 재생하는 재생 단계를 포함하고,
    상기 재생 단계는, 상기 프로그램 갱신 요구를 수신한 것에 응답하여 해당 기록 매체에 기록되어 있는 상기 암호화 프로그램 데이터를 재생시키고,
    상기 암호화 프로그램 데이터 수신 단계는, 상기 재생된 상기 암호화 프로그램 데이터를 수신하는 프로그램을 기록한 기록 매체.
  22. 제1 프로그램이 기억된 기억 수단과, 상기 기억 수단에 기억되어 있는 상기 제1 프로그램을 판독하고, 판독한 상기 제1 프로그램에 기초하여 정보 처리 장치의 소정의 동작을 제어하는 제어 수단을 집적화한 회로 소자로서,
    상기 제1 프로그램의 갱신을 요구하는 프로그램 갱신 요구에 응답하여, 제2 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 제2 프로그램을 상기 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 수단과,
    상기 암호화 프로그램 데이터 수신 수단에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 수단과,
    상기 복호 수단에서 상기 암호화 프로그램 데이터로부터 복호된 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을, 상기 기억 수단에 기입하는 프로그램 기입 수단과,
    상기 복호 수단에서 복호된 제2 프로그램 및 상기 기억 수단에 기입된 제2 프로그램의 외부 장치로부터의 추출을 제한하는 추출 제한 수단을 집적화하고,
    상기 제어 수단은, 상기 제2 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 제2 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하고, 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하고, 비교한 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억되어 있는 상기 제2 프로그램을 판독하는 회로 소자.
  23. 제22항에 있어서,
    상기 암호화 프로그램 데이터 수신 수단은, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 회로 소자.
  24. 제22항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 수단을 구비한 정보 처리 장치에 제공되어,
    상기 제어 수단은, 상기 프로그램 갱신 요구에 응답하여, 상기 기록 매체를 재생시키도록 상기 재생 수단을 제어하고,
    상기 암호화 프로그램 데이터 수신 수단은, 상기 정보 처리 장치의 재생 수단에서 재생된 상기 암호화 프로그램 데이터를 수신하는 회로 소자.
  25. 제1 프로그램이 기억된 기억 수단과, 상기 기억 수단에 기억되어 있는 상기 제1 프로그램을 판독하고, 판독한 상기 제1 프로그램에 기초하여 해당 정보 처리 장치의 소정의 동작을 제어하는 제어 수단을 갖는 제어부를 포함하는 정보 처리 장치로서,
    상기 제1 프로그램의 갱신을 요구하는 프로그램 갱신 요구에 응답하여, 제2 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 제2 프로그램을 상기 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 수단과,
    상기 암호화 프로그램 데이터 수신 수단에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 수단과,
    상기 복호 수단에서 상기 암호화 프로그램 데이터로부터 복호된 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 상기 제어부에 송신하는 프로그램 송신 수단
    을 포함하고,
    상기 제어부는,
    상기 송신 수단에 의해 송신된 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 수신하는 프로그램 수신 수단과, 상기 프로그램 수신 수단에서 수신한 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 상기 기억 수단에 기입하는 프로그램 기입 수단을 포함하고,
    상기 제어 수단은, 상기 제2 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 제2 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하고, 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하고, 비교한 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억되어 있는 상기 제2 프로그램을 판독하는 정보 처리 장치.
  26. 제25항에 있어서,
    상기 암호화 프로그램 데이터 수신 수단은, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 정보 처리 장치.
  27. 제25항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 수단을 포함하고,
    상기 제어 수단은, 상기 프로그램 갱신 요구에 응답하여, 상기 기록 매체를 재생시키도록 상기 재생 수단을 제어하고,
    상기 암호화 프로그램 데이터 수신 수단은, 상기 재생 수단에서 재생된 상기 암호화 프로그램 데이터를 수신하는 정보 처리 장치.
  28. 제25항에 있어서,
    상기 프로그램 송신 수단과 상기 프로그램 수신 수단을 접속하는 배선을 다층기판의 내층에서 실시하는 정보 처리 장치.
  29. 제25항에 있어서,
    상기 제어부는, 볼그리드 어레이인 정보 처리 장치.
  30. 제1 프로그램이 기억된 기억 수단과, 상기 기억 수단에 기억되어 있는 상기 제1 프로그램을 판독하고, 판독한 상기 제1 프로그램에 기초하여 해당 정보 처리 장치의 소정의 동작을 제어하는 제어 수단을 갖는 제어부를 포함하는 정보 처리 장치의 프로그램 갱신 방법으로서,
    상기 제1 프로그램의 갱신을 요구하는 프로그램 갱신 요구에 응답하여, 제2 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 제2 프로그램을 상기 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계와,
    상기 암호화 프로그램 데이터 수신 단계에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 단계와,
    상기 복호 단계에서 상기 암호화 프로그램 데이터로부터 복호된 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 상기 제어부에 송신하는 프로그램 송신 단계와,
    상기 프로그램 송신 단계에 의해 상기 제어부에 송신된 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 수신하는 프로그램 수신 단계와,
    상기 프로그램 수신 단계에서 수신한 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 상기 기억 수단에 기입하는 프로그램 기입 단계와,
    상기 제어 수단에서 상기 제2 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 제2 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하는 검증 데이터 산출 단계와,
    상기 검증 데이터 산출 단계에서 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하는 검증 데이터 비교 단계와,
    상기 검증 데이터 비교 단계에 의해 비교된 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억되어 있는 상기 제2 프로그램을 판독하는 프로그램 판독 단계
    를 포함하는 프로그램 갱신 방법.
  31. 제30항에 있어서,
    상기 암호화 프로그램 데이터 수신 단계는, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 프로그램 갱신 방법.
  32. 제30항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 단계를 포함하고,
    상기 재생 단계는, 상기 프로그램 갱신 요구를 수신한 것에 응답하여 상기 기록 매체를 재생시키고,
    상기 암호화 프로그램 데이터 수신 단계는, 상기 재생 단계에서 재생된 상기 암호화 프로그램 데이터를 수신하는 프로그램 갱신 방법.
  33. 제1 프로그램이 기억된 기억 수단과, 상기 기억 수단에 기억되어 있는 상기 제1 프로그램을 판독하고, 판독한 상기 제1 프로그램에 기초하여 해당 정보 처리 장치의 소정의 동작을 제어하는 제어 수단을 갖는 제어부를 포함하는 정보 처리 장치의 상기 제1 프로그램을 갱신하기 위한 프로그램을 기록한 기록 매체로서,
    상기 제1 프로그램의 갱신을 요구하는 프로그램 갱신 요구에 응답하여, 제2 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 제2 프로그램을 상기 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계와,
    상기 암호화 프로그램 데이터 수신 단계에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 단계와,
    상기 복호 단계에서 상기 암호화 프로그램 데이터로부터 복호된 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 상기 제어부에 송신하는 프로그램 송신 단계와,
    상기 프로그램 송신 단계에 의해 상기 제어부에 송신된 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 수신하는 프로그램 수신 단계와,
    상기 프로그램 수신 단계에서 수신한 상기 제2 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 상기 기억 수단에 기입하는 프로그램 기입 단계와,
    상기 제어 수단에서 상기 제2 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 제2 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하는 검증 데이터 산출 단계와,
    상기 검증 데이터 산출 단계에서 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하는 검증 데이터 비교 단계와,
    상기 검증 데이터 비교 단계에 의해 비교된 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억되어 있는 상기 제2 프로그램을 판독하는 프로그램 판독 단계를 포함하는 프로그램을 기록한 기록 매체.
  34. 제33항에 있어서,
    상기 암호화 프로그램 데이터 수신 단계는, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 프로그램을 기록한 기록 매체.
  35. 제33항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 단계를 포함하고,
    상기 재생 단계는, 상기 프로그램 갱신 요구를 수신한 것에 응답하여 상기 기록 매체를 재생시키고,
    상기 암호화 프로그램 데이터 수신 단계는, 상기 재생 단계에서 재생된 상기 암호화 프로그램 데이터를 수신하는 프로그램을 기록한 기록 매체.
  36. 소정의 데이터 처리를 행하는 데이터 처리부를 포함하는 정보 처리 장치로서,
    상기 데이터 처리부는, 소정의 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 소정의 프로그램을 상기 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 수단과,
    상기 암호화 프로그램 데이터 수신 수단에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 수단과,
    상기 복호 수단에서 상기 암호화 프로그램 데이터로부터 복호된 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 기억하는 기억 수단과,
    상기 기억 수단에 기억된 상기 소정의 프로그램을 판독하는 프로그램 판독 수단과,
    상기 프로그램 판독 수단에 의해 판독된 상기 소정의 프로그램에 기초하여, 해당 데이터 처리부에 있어서의 소정의 데이터 처리 동작을 제어하는 제1 제어 수단과,
    상기 복호 수단에서 복호된 상기 소정의 프로그램 및 상기 기억 수단에 기억된 상기 소정의 프로그램의 외부 장치로부터의 추출을 제한하는 추출 제한 수단
    을 포함하고,
    상기 제1 제어 수단은, 상기 소정의 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 소정의 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하고, 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하고,
    상기 프로그램 판독 수단은, 상기 제1 제어 수단에 의해 비교된 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억되어 있는 상기 소정의 프로그램을 판독하는 정보 처리 장치.
  37. 제36항에 있어서,
    상기 암호화 프로그램 데이터가 기억된 암호화 프로그램 데이터 기억 수단을 포함하고,
    상기 제1 제어 수단은, 상기 암호화 프로그램 데이터 기억 수단에 기억되어 있는 상기 암호화 프로그램 데이터를 판독하고,
    상기 암호화 프로그램 데이터 수신 수단은, 상기 제1 제어 수단에 의해 판독된 상기 암호화 프로그램 데이터를 수신하는 정보 처리 장치.
  38. 제36항에 있어서,
    상기 암호화 프로그램 데이터 기억 수단에 기억되어 있는 상기 암호화 프로그램 데이터를 판독하는 제2 제어 수단을 포함하고,
    상기 암호화 프로그램 데이터 수신 수단은, 상기 제2 제어 수단에 의해 판독된 상기 암호화 프로그램 데이터를 수신하는 정보 처리 장치.
  39. 제36항에 있어서,
    상기 암호화 프로그램 데이터 수신 수단은, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 정보 처리 장치.
  40. 제36항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 수단을 포함하고,
    상기 제1 제어 수단은, 상기 기록 매체를 재생시키도록 상기 재생 수단을 제어하고,
    상기 암호화 프로그램 데이터 수신 수단은, 상기 재생 수단에서 재생된 상기 암호화 프로그램 데이터를 수신하는 정보 처리 장치.
  41. 소정의 데이터 처리를 행하는 데이터 처리부를 포함하는 정보 처리 장치의 상기 데이터 처리부에서의 프로그램 로딩 방법으로서,
    소정의 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 소정의 프로그램을 상기 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계와,
    상기 프로그램 데이터 수신 단계에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 단계와,
    상기 복호 단계에서 복호된 상기 소정의 프로그램의 외부 장치로부터의 추출을 제한하는 추출 제한 단계와,
    상기 복호 단계에서 상기 암호화 프로그램 데이터로부터 복호된 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 기억 수단에 기억시키는 기억 단계와,
    상기 소정의 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 소정의 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하는 검증 데이터 산출 단계와,
    상기 검증 데이터 산출 단계에 의해 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하는 검증 데이터 비교 단계와,
    상기 검증 데이터 비교 단계에 의해 비교된 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억된 상기 소정의 프로그램을 판독하는 프로그램 판독 단계와,
    상기 프로그램 판독 단계에 의해 판독된 상기 소정의 프로그램에 기초하여, 해당 데이터 처리부에 있어서의 소정의 데이터 처리 동작을 제어하는 제어 단계
    를 포함하는 프로그램 로딩 방법.
  42. 제41항에 있어서,
    상기 제어 단계는, 상기 암호화 프로그램 데이터가 기억되어 있는 해당 정보 처리 장치에 제공되는 암호화 프로그램 데이터 기억 수단으로부터 상기 암호화 프로그램 데이터를 판독하고,
    상기 암호화 프로그램 데이터 수신 단계는, 판독된 상기 암호화 프로그램 데이터를 수신하는 프로그램 로딩 방법.
  43. 제41항에 있어서,
    상기 암호화 프로그램 데이터 수신 단계는, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 프로그램 로딩 방법.
  44. 제41항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 단계를 포함하고,
    상기 암호화 프로그램 데이터 수신 단계는, 상기 재생 단계에서 재생된 상기 암호화 프로그램 데이터를 수신하는 프로그램 로딩 방법.
  45. 소정의 데이터 처리를 행하는 데이터 처리부를 포함하는 정보 처리 장치의 상기 데이터 처리부에서 소정의 프로그램을 로딩하기 위한 프로그램을 기록한 기록 매체로서,
    상기 소정의 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 소정의 프로그램을 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 단계와,
    상기 프로그램 데이터 수신 단계에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 단계와,
    상기 복호 단계에서 복호된 상기 소정의 프로그램의 외부 장치로부터의 추출을 제한하는 추출 제한 단계와,
    상기 복호 단계에서 상기 암호화 프로그램 데이터로부터 복호된 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 기억 수단에 기억하는 기억 단계와,
    상기 소정의 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 소정의 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하는 검증 데이터 산출 단계와,
    상기 검증 데이터 산출 단계에 의해 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하는 검증 데이터 비교 단계와,
    상기 검증 데이터 비교 단계에 의해 비교된 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억된 상기 소정의 프로그램을 판독하는 프로그램 판독 단계와,
    상기 프로그램 판독 단계에 의해 판독된 상기 소정의 프로그램에 기초하여, 상기 데이터 처리부에 있어서의 소정의 데이터 처리 동작을 제어하는 제어 단계를 포함하는 프로그램이 기록된 기록 매체.
  46. 제45항에 있어서,
    상기 제어 단계는, 상기 암호화 프로그램 데이터가 기억되어 있는 해당 정보 처리 장치에 제공되는 암호화 프로그램 데이터 기억 수단에 기억되어 있는 상기 암호화 프로그램 데이터를 판독하고,
    상기 암호화 프로그램 데이터 수신 단계는, 상기 제어 단계에 의해 판독된 상기 암호화 프로그램 데이터를 수신하는 프로그램이 기록된 기록 매체.
  47. 제45항에 있어서,
    상기 암호화 프로그램 데이터 수신 단계는, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 프로그램이 기록된 기록 매체.
  48. 제45항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 단계를 포함하고,
    상기 암호화 프로그램 데이터 수신 단계는, 상기 재생 단계에서 재생된 상기 암호화 프로그램 데이터를 수신하는 프로그램이 기록된 기록 매체.
  49. 정보 처리 장치의 소정의 데이터 처리를 행하는 데이터 처리 수단을 집적화한 회로 소자로서,
    소정의 프로그램의 프로그램 데이터로부터 소정의 연산에 의해 산출된 제1 검증 데이터와 상기 소정의 연산을 하는 프로그램인 검증 프로그램이, 각각 소정의 암호화 키로 암호화된 암호화 검증 데이터와 암호화 검증 프로그램을 포함하고, 상기 소정의 프로그램을 상기 소정의 암호화 키로 암호화한 암호화 프로그램 데이터를 수신하는 암호화 프로그램 데이터 수신 수단과,
    상기 암호화 프로그램 데이터 수신 수단에서 수신한 상기 암호화 프로그램 데이터를 소정의 복호키를 이용하여, 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램에서 복호하는 복호 수단과,
    상기 복호 수단에서 상기 암호화 프로그램 데이터로부터 복호된 상기 소정의 프로그램과 상기 제1 검증 데이터와 상기 검증 프로그램을 기억하는 기억 수단과,
    상기 기억 수단에 기억된 상기 소정의 프로그램을 판독하는 프로그램 판독 수단과,
    상기 프로그램 판독 수단에 의해 판독된 상기 소정의 프로그램에 기초하여, 상기 데이터 처리 수단에 있어서의 소정의 데이터 처리 동작을 제어하는 제1 제어 수단과,
    상기 복호 수단에서 복호된 상기 소정의 프로그램 및 상기 기억 수단에 기억된 상기 소정의 프로그램의 외부 장치로부터의 추출을 제한하는 추출 제한 수단을 집적화하고,
    상기 제1 제어 수단은, 상기 소정의 프로그램을 실행하기 전에, 상기 검증 프로그램에 기초하여, 상기 기억 수단에 기억된 상기 소정의 프로그램의 프로그램 데이터로부터 제2 검증 데이터를 산출하고, 산출된 상기 제2 검증 데이터와, 상기 기억 수단에 기억되어 있는 상기 제1 검증 데이터를 비교하고,
    상기 프로그램 판독 수단은, 상기 제1 제어 수단에 의해 비교된 상기 제1 검증 데이터와, 상기 제2 검증 데이터의 일치에 응답하여, 상기 기억 수단에 기억되어 있는 상기 소정의 프로그램을 판독하는 회로 소자.
  50. 제49항에 있어서,
    상기 암호화 프로그램 데이터가 기억된 암호화 프로그램 데이터 기억 수단을 포함하는 정보 처리 장치에 제공되어,
    상기 제1 제어 수단은, 상기 암호화 프로그램 데이터 기억 수단에 기억되어 있는 상기 암호화 프로그램 데이터를 판독하고,
    상기 암호화 프로그램 데이터 수신 수단은, 상기 제1 제어 수단에 의해 판독된 상기 암호화 프로그램 데이터를 수신하는 회로 소자.
  51. 제49항에 있어서,
    제2 제어 수단을 포함하는 상기 정보 처리 장치에 제공되어,
    상기 제2 제어 수단은, 상기 암호화 프로그램 데이터 기억 수단에 기억되어 있는 상기 암호화 프로그램 데이터를 판독하고,
    상기 암호화 프로그램 데이터 수신 수단은, 상기 제2 제어 수단에 의해 판독된 상기 암호화 프로그램 데이터를 수신하는 회로 소자.
  52. 제49항에 있어서,
    상기 암호화 프로그램 데이터 수신 수단은, 외부 장치로부터 송신되는 상기 암호화 프로그램 데이터를 수신하는 회로 소자.
  53. 제49항에 있어서,
    상기 암호화 프로그램 데이터가 기록된 기록 매체를 재생하는 재생 수단을 포함하는 정보 처리 장치에 제공되어,
    상기 제1 제어 수단은, 상기 기록 매체를 재생시키도록 상기 재생 수단을 제어하고,
    상기 암호화 프로그램 데이터 수신 수단은, 상기 재생 수단에서 재생된 상기 암호화 프로그램 데이터를 수신하는 회로 소자.
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
KR1020030017352A 2002-05-20 2003-03-20 정보 처리 장치, 프로그램 로딩 방법, 기록 매체,프로그램 갱신 방법 및 회로 소자 KR100924050B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2002-00145264 2002-05-20
JP2002145264A JP4288893B2 (ja) 2001-09-26 2002-05-20 情報処理装置、プログラムロード方法、記録媒体、プログラム更新方法及び回路素子

Publications (2)

Publication Number Publication Date
KR20030090493A KR20030090493A (ko) 2003-11-28
KR100924050B1 true KR100924050B1 (ko) 2009-10-27

Family

ID=29545075

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030017352A KR100924050B1 (ko) 2002-05-20 2003-03-20 정보 처리 장치, 프로그램 로딩 방법, 기록 매체,프로그램 갱신 방법 및 회로 소자

Country Status (7)

Country Link
US (2) US20040006703A1 (ko)
EP (2) EP1369765B1 (ko)
JP (1) JP4288893B2 (ko)
KR (1) KR100924050B1 (ko)
CN (2) CN100511253C (ko)
DE (2) DE60324977D1 (ko)
TW (1) TWI247285B (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3097655B2 (ja) * 1998-05-11 2000-10-10 日本電気株式会社 データ伝送方式
EP1795991A1 (en) 2002-07-30 2007-06-13 Fujitsu Limited Method and apparatus for reproducing information using a security module
JP4576100B2 (ja) * 2002-07-30 2010-11-04 富士通株式会社 情報再生装置、セキュアモジュールおよび情報再生方法
US7975147B1 (en) * 2003-03-31 2011-07-05 Hewlett-Packard Development Company, L.P. Electronic device network supporting enciphering and deciphering and update generation in electronic devices
KR100604828B1 (ko) * 2004-01-09 2006-07-28 삼성전자주식회사 펌웨어 암호화 방법 및 해독 방법과 그 처리 장치
JP2005332221A (ja) * 2004-05-20 2005-12-02 Renesas Technology Corp 記憶装置
EP1607821A1 (fr) 2004-06-17 2005-12-21 Nagracard S.A. Méthode de mise à jour sécurisée de logiciel dans un mobile de sécurité
JP4717398B2 (ja) * 2004-09-10 2011-07-06 キヤノン株式会社 データ処理装置の制御方法
US8379858B2 (en) * 2005-09-16 2013-02-19 International Business Machines Corporation Generating key information for mutual access among multiple computers
US7533290B2 (en) * 2006-02-21 2009-05-12 Realtek Semiconductor Corp. Microcode updating error handling apparatus and method thereof
CN101132573A (zh) * 2006-08-23 2008-02-27 中兴通讯股份有限公司 一种终端批量升级的实现方法
JP2008072317A (ja) * 2006-09-13 2008-03-27 Ricoh Co Ltd 画像処理装置
TWI398755B (zh) * 2006-12-22 2013-06-11 Hon Hai Prec Ind Co Ltd 嵌入式系統恢復方法
US8423794B2 (en) * 2006-12-28 2013-04-16 Sandisk Technologies Inc. Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications
WO2009007468A2 (en) * 2008-09-26 2009-01-15 Phonak Ag Wireless updating of hearing devices
CN101751279B (zh) * 2009-12-29 2014-01-22 北京握奇数据系统有限公司 一种芯片及片上操作系统下载的方法
CN103310813B (zh) * 2012-03-16 2016-05-11 深圳市隆科电子有限公司 Dvd专用伺服马达音频处理解码板
US9894066B2 (en) 2014-07-30 2018-02-13 Master Lock Company Llc Wireless firmware updates
US9600949B2 (en) 2014-07-30 2017-03-21 Master Lock Company Llc Wireless key management for authentication
EP3082290A1 (en) * 2015-04-17 2016-10-19 Gemalto Sa Device for managing multiple accesses to a secure module of a system on chip of an apparatus
EP4113287B1 (en) 2015-09-14 2024-03-06 Panasonic Intellectual Property Corporation of America Gateway device, in-vehicle network system, and firmware update method
JP6675271B2 (ja) * 2015-09-14 2020-04-01 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America ゲートウェイ装置、車載ネットワークシステム及びファームウェア更新方法
WO2017049557A1 (zh) 2015-09-24 2017-03-30 广东欧珀移动通信有限公司 为适配器升级的方法、移动终端和适配器
EP3362931B1 (en) * 2015-10-14 2020-03-18 Master Lock Company LLC Wireless firmware updates
CN107194242B (zh) * 2017-03-30 2019-11-08 百富计算机技术(深圳)有限公司 固件升级方法和装置
KR20210046418A (ko) * 2019-10-18 2021-04-28 삼성전자주식회사 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6010336A (ja) * 1983-06-30 1985-01-19 Fujitsu Ltd プログラム盗用防止モニタ方式
JPH08195952A (ja) * 1995-01-19 1996-07-30 Sony Corp データ受信処理装置およびデータ受信処理方法並びに放送方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69534757T2 (de) * 1994-09-15 2006-08-31 International Business Machines Corp. System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
US6049671A (en) * 1996-04-18 2000-04-11 Microsoft Corporation Method for identifying and obtaining computer software from a network computer
US5844986A (en) * 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US6163455A (en) * 1999-01-11 2000-12-19 Intel Corporation Thermal attachment bracket for mini cartridge package technology
US6892323B2 (en) * 1999-05-05 2005-05-10 Giga-Byte Technology Co., Ltd. Dual basic input/output system for a computer
CN1263026C (zh) * 2000-08-16 2006-07-05 皇家菲利浦电子有限公司 用于控制数字作品的发行和使用的方法和装置
EP1191421A3 (en) * 2000-09-21 2003-05-07 Matsushita Electric Industrial Co., Ltd. Tamper resistant software protection method with renewable security mechanism
US7389415B1 (en) * 2000-12-27 2008-06-17 Cisco Technology, Inc. Enabling cryptographic features in a cryptographic device using MAC addresses
US6901343B2 (en) * 2001-01-10 2005-05-31 Matsushita Electric Industrial Co., Ltd. Multilayer board in which wiring of signal line that requires tamper-resistance is covered by component or foil, design apparatus, method, and program for the multilayer board, and medium recording the program
US6651188B2 (en) * 2001-06-29 2003-11-18 Intel Corporation Automatic replacement of corrupted BIOS image

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6010336A (ja) * 1983-06-30 1985-01-19 Fujitsu Ltd プログラム盗用防止モニタ方式
JPH08195952A (ja) * 1995-01-19 1996-07-30 Sony Corp データ受信処理装置およびデータ受信処理方法並びに放送方法

Also Published As

Publication number Publication date
JP2003173215A (ja) 2003-06-20
CN100559486C (zh) 2009-11-11
DE60309625D1 (de) 2006-12-28
CN1822164A (zh) 2006-08-23
TWI247285B (en) 2006-01-11
JP4288893B2 (ja) 2009-07-01
CN100511253C (zh) 2009-07-08
EP1742136B1 (en) 2008-11-26
EP1742136A1 (en) 2007-01-10
US20040006703A1 (en) 2004-01-08
US20070136611A1 (en) 2007-06-14
DE60309625T2 (de) 2007-09-20
TW200307250A (en) 2003-12-01
CN1461003A (zh) 2003-12-10
EP1369765B1 (en) 2006-11-15
KR20030090493A (ko) 2003-11-28
DE60324977D1 (de) 2009-01-08
EP1369765A3 (en) 2004-04-07
EP1369765A2 (en) 2003-12-10

Similar Documents

Publication Publication Date Title
KR100924050B1 (ko) 정보 처리 장치, 프로그램 로딩 방법, 기록 매체,프로그램 갱신 방법 및 회로 소자
JP4889638B2 (ja) 検証方法、検証プログラム、記録媒体、情報処理装置、集積回路
JP5382555B2 (ja) システムオンアチップ(SoC)、ディスクプレーヤ、および方法
KR100568641B1 (ko) 디스크 드라이브 장치
US20040034787A1 (en) Video and/or audio information reading apparatus, information recording apparatus, optical disk reproducing apparatus, optical disk recording apparatus, information reading method, information recording method, program, and storage medium
JP5189764B2 (ja) 次世代メディアプレーヤ向けデュアルバーチャルマシン及びトラステッドプラットフォームモジュールアーキテクチャ
US7975151B2 (en) Decryption key table access control on ASIC or ASSP
US20060015754A1 (en) E-fuses for storing security version data
JPH1027426A (ja) 記録媒体、インストール動作管理方法
JP2012014416A (ja) 記録装置、書き込み装置、読み出し装置、及び記録装置の制御方法
JP2007133608A (ja) 情報処理装置、ソフトウェアインストール方法、および光ディスク
JP2003208755A (ja) 記録方法、記録装置、再生方法及び再生装置
JP2000330870A (ja) コンテンツ処理システムおよびコンテンツ保護方法
JP2008299448A (ja) データ記憶装置及び暗号鍵に関する情報の更新方法
TW200402038A (en) Data reproduction apparatus, data recording apparatus, circuit element, data reproduction method and data recording method
JP2010146127A (ja) データ記憶装置及びデータ記憶装置の解析方法
KR20080088911A (ko) 메모리의 배드정보를 암호화키로 사용하는 데이터저장카드, 연결장치 및 그 방법
JP3862935B2 (ja) データ処理装置およびデータ処理方法
JP2002197787A (ja) 情報記録装置と情報記録方法
JP4537431B2 (ja) マイクロプロセッサ
JP2006031780A (ja) 情報記録媒体、記録方法、アクセス方法、情報記録装置、処理装置、プログラム及び記録媒体
KR20080012724A (ko) 기록매체, 데이터 기록방법 및 기록장치와 데이터 재생방법및 재생장치
KR20000005307A (ko) 디스크 드라이브장치 및 컴퓨터장치
JP2005128637A (ja) ドライブ検査方法、及びドライブ検査プログラム

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: 20121015

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131011

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141010

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee