KR101207823B1 - 무선 디바이스를 위한 점진적인 부팅 - Google Patents

무선 디바이스를 위한 점진적인 부팅 Download PDF

Info

Publication number
KR101207823B1
KR101207823B1 KR1020117030186A KR20117030186A KR101207823B1 KR 101207823 B1 KR101207823 B1 KR 101207823B1 KR 1020117030186 A KR1020117030186 A KR 1020117030186A KR 20117030186 A KR20117030186 A KR 20117030186A KR 101207823 B1 KR101207823 B1 KR 101207823B1
Authority
KR
South Korea
Prior art keywords
page
code image
hash
pages
wireless device
Prior art date
Application number
KR1020117030186A
Other languages
English (en)
Other versions
KR20110138304A (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 KR20110138304A publication Critical patent/KR20110138304A/ko
Application granted granted Critical
Publication of KR101207823B1 publication Critical patent/KR101207823B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Circuits Of Receivers In General (AREA)

Abstract

무선 디바이스에 대한 인지된 부팅 시간을 감소시키기 위해 점진적인 부팅을 실시하는 기술이 기재된다. 벌크 비휘발성 메모리 내에 저장되는 프로그램 코드는 복수의 코드 이미지들로 분할될 수도 있다. 제 1 코드 이미지는 무선 디바이스의 기본 기능을 지원하도록 사용된 프로그램 코드를 포함할 수도 있다. 제 2 코드 이미지는 나머지 프로그램 코드들을 포함할 수도 있다. 점진적인 부팅에 있어서, 제 1 코드 이미지는 벌크 비휘발성 메모리로부터 먼저 로딩될 수도 있다. 일단 제 1 코드 이미지가 로딩되면, 무선 디바이스를 동작시키고 사용자에게 실용적이다. 무선 디바이스가 동작하는 동안, 제 2 코드 이미지는 벌크 비휘발성 메모리로부터 백그라운드 태스크로서 및/또는 온-디맨드로서 로딩될 수도 있다.

Description

무선 디바이스를 위한 점진적인 부팅{PROGRESSIVE BOOT FOR A WIRELESS DEVICE}
본원은 일반적으로 전자 공학에 관한 것으로, 보다 상세하게는 무선 디바이스의 전원을 켤 때 부팅하는 기술에 관한 것이다.
무선 디바이스 (예를 들어, 셀룰러 전화기) 는 통상적으로 그 무선 디바이스 내의 하드웨어를 제어하고 다양한 설계 기능을 지원하는 프로그램 코드에 기초하여 동작한다. 프로그램 코드는 벌크 비휘발성 메모리 내에 저장될 수도 있고 전원을 켤 때 보다 빠른 휘발성 메모리로 로딩될 수도 있다. 벌크 비휘발성 메모리는 많은 양의 데이터를 경제적으로 저장할 수 있지만 한번에 1 페이지만을 액세스할 수 있는 NAND 플래시일 수도 있다. 페이지는 NAND 플래시로부터 검색될 수 있는 최소 단위의 데이터일 수도 있고 4 킬로바이트 (KB) 이거나 일부 다른 사이즈일 수도 있다. 보다 빠른 휘발성 메모리는 랜덤 액세스를 지원할 수 있는 동기식 동적 램 (SDRAM) 일 수도 있다. 메모리는 원하는 저장 용량과 액세스 능력을 제공하고 가능한 한 경제적인 것으로 선택될 수도 있다.
무선 디바이스에 전원이 켜진 경우, 모든 프로그램 코드들은 벌크 비휘발성 메모리로부터 보다 빠른 휘발성 메모리로 로딩될 수도 있다. 일단 모든 프로그램 코드들이 로딩되었다면, 무선 디바이스는 사용자 입력을 수신하고 사용자 선택 기능을 수행하도록 인에이블될 수도 있다. 전원을 켤 때 로딩할 프로그램 코드들의 양이 많을 수도 있고, 부팅 시간이 상대적으로 길 수도 있다. 따라서, 사용자는 무선 디바이스가 동작하기 전 늘어난 시간의 기간을 대기할 필요가 있을 수도 있다.
제 1 및 제 2 코드 이미지를 무선 디바이스를 위해 사용된 메모리 디바이스로 프로그래밍하도록 구성된 프로세서를 포함하며, 제 1 코드 이미지는, 무선 디바이스를 부팅하고 무선 디바이스를 동작시키기 위해서 메모리 디바이스로부터 로딩되며, 제 2 코드 이미지는, 무선 디바이스를 추가로 부팅하기 위해 무선 디바이스가 동작하는 동안 메모리 디바이스로부터 로딩된다.
다른 양태에서, 방법은, 제 1 코드 이미지를 무선 디바이스를 위해 사용된 메모리 디바이스로 프로그래밍하는 단계로서, 제 1 코드 이미지는 무선 디바이스를 부팅하고 무선 디바이스를 동작시키기 위해서 메모리 디바이스로부터 로딩되는, 상기 제 1 코드 이미지를 프로그래밍하는 단계를 포함한다. 이 방법은 또한, 제 2 코드 이미지를 메모리 디바이스로 프로그래밍하는 단계로서, 제 2 코드 이미지는 무선 디바이스를 추가로 부팅하기 위해 무선 디바이스가 동작하는 동안 메모리 디바이스로부터 로딩되는, 상기 제 2 코드 이미지를 프로그래밍하는 단계를 포함한다.
다른 양태에서, 장치는, 제 1 모드 이미지를 무선 디바이스를 위해 사용된 메모리 디바이스로 프로그래밍하는 수단으로서, 제 1 코드 이미지는 메모리 디바이스를 부팅하고 무선 디바이스를 동작시키기 위해 메모리 디바이스로부터 로딩되는, 상기 제 1 코드 이미지를 프로그래밍하는 수단과, 제 2 코드 이미지를 메모리 디바이스로 프로그래밍하는 수단으로서, 제 2 코드 이미지는 무선 디바이스를 추가로 부팅하기 위해 무선 디바이스가 동작하는 동안 메모리 디바이스로부터 로딩되는, 상기 제 2 코드 이미지를 프로그래밍하는 수단을 포함한다.
다른 양태에서, 장치는, 무선 디바이스를 부팅하기 위해 메모리 코드 이미지를 외부 메모리로부터 로딩하도록 구성된 메모리 제어기와, 제 1 코드 이미지를 로딩한 후 무선 디바이스를 동작시키도록 구성된 메인 제어기를 포함하고, 메모리 제어기는, 무선 디바이스를 추가로 부팅하기 위해 무선 디바이스가 동작하는 동안 외부 메모리로부터 제 2 코드 이미지를 로딩하도록 더 구성된다.
다른 양태에서, 방법은, 무선 디바이스를 부팅하기 위해 외부 메모리로부터 제 1 코드 이미지를 로딩하는 단계, 제 1 코드 이미지의 로딩 단계 이후 무선 디바이스를 동작시키는 단계, 및 무선 디바이스를 추가로 부팅하기 위해 무선 디바이스가 동작하는 동안 외부 메모리로부터 제 2 코드 이미지를 로딩하는 단계를 포함한다.
다른 양태에서, 장치는, 무선 디바이스를 부팅하기 위해 외부 메모리로부터 제 1 코드 이미지를 로딩하는 수단, 제 1 코드 이미지의 로딩 단계 이후 무선 디바이스를 동작시키는 수단, 및 무선 디바이스를 추가로 부팅하기 위해 무선 디바이스가 동작하는 동안 외부 메모리로부터 제 2 코드 이미지를 로딩하는 수단을 포함한다.
다른 양태에서, 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로서, 컴퓨터 판독가능 매체는, 무선 디바이스를 부팅하기 위해서 컴퓨터로 하여금 외부 메모리로부터 제 1 코드 이미지를 로딩하게 하는 코드, 제 1 코드 이미지의 로딩 이후 컴퓨터로 하여금 무선 디바이스를 동작시키게 하는 코드, 및 컴퓨터로 하여금 무선 디바이스를 추가로 부팅하기 위해 무선 디바이스가 동작하는 동안 외부 메모리로부터 제 2 코드 이미지를 로딩하게 하는 코드를 포함한다.
다른 양태에서, 장치는, 외부 메모리로부터 코드 이미지의 복수의 페이지들을 검색하고, 페이지에 대한 보안 정보에 기초하여 외부 메모리로부터 검색된 각각의 페이지를 인증하도록 구성된 메모리 제어기를 포함하고, 복수의 페이지들은 별개의 보안 정보와 연관된다.
다른 양태에서, 방법은, 외부 메모리로부터 코드 이미지의 복수의 페이지들을 검색하는 단계로서, 복수의 페이지들은 별개의 보안 정보와 연관되는, 상기 검색 단계, 및 페이지에 대한 보안 정보에 기초하여 외부 메모리로부터 검색된 각각의 페이지를 인증하는 단계를 포함한다.
다른 양태에서, 장치는, 외부 메모리로부터 코드 이미지의 복수의 페이지들을 검색하는 수단으로서, 복수의 페이지들은 별개의 보안 정보와 연관되는, 상기 검색 수단, 및 페이지에 대한 보안 정보에 기초하여 외부 메모리로부터 검색된 각각의 페이지를 인증하는 수단을 포함한다.
도 1은 무선 통신 장치의 블록도를 도시한다.
도 2는 NAND 플래시의 논페이지 (non-paged) 및 페이지 세그먼트의 프로그래밍을 도시한다.
도 3은 제 2 코드 이미지 및 해시 다이제스트 테이블을 도시한다.
도 4는 제 1 및 제 2 코드 이미지들의 로딩 및 인증을 도시한다.
도 5는 제 1 코드 이미지의 모듈을 도시한다.
도 6은 무선 디바이스에서의 SDRAM을 도시한다.
도 7은 제 2 코드 이미지의 페이지들의 로드 상태의 트랙을 유지하는데 사용된 2 레벨 구조를 도시한다.
도 8은 메모리 디바이스를 프로그래밍하는 프로세스를 도시한다.
도 9는 전원을 켤 때 무선 디바이스를 점진적으로 부팅하는 프로세스를 도시한다.
도 10은 제 2 코드 이미지를 인증하는 프로세스를 도시한다.
도 11은 프로그래밍 스테이션을 도시한다.
본원에 기재된 부팅 기술은 무선 통신 디바이스, 휴대용 디바이스, 게임 디바이스, 컴퓨팅 디바이스, 가전 제품, 컴퓨터 등과 같은 다양한 전자 디바이스를 위해 사용될 수도 있다. 명료하게, 본 기술은 NAND 플래시 메모리 및 SDRAM과 같은 메모리를 갖는 무선 통신 디바이스에 대하여 아래에 기술된다.
도 1은 본 발명의 양태에 따른 무선 통신 디바이스 (100) 의 블록도를 도시하며, 무선 통신 디바이스는 셀룰러 전화기, 개인 디지털 보조기 (PDA), 핸드셋, 휴대용 디바이스, 무선 모듈, 단말기, 모뎀 등일 수도 있다. 무선 디바이스 (100) 는 송신 경로 및 수신 경로를 통해 하나 이상의 무선 통신 시스템에 양방향 통신을 제공할 수 있을 수도 있다. 송신 경로에서, 디지털부 (120) 는 무선 디바이스 (100) 에 의해 송신되는 데이터를 제공할 수도 있다. 송신기 (TMTR; 114) 는 이 데이터를 처리하여 무선 주파수 (RF) 출력 신호를 생성하며, 이 출력신호는 안테나 (112) 를 통해 기지국으로 송신될 수도 있다. 수신 경로에서, 기지국에 의해 송신된 신호는 안테나 (112) 에 의해 수신될 수도 있고 수신기 (RCVR; 116) 로 제공될 수도 있다. 수신기 (116) 는 이 수신된 신호를 컨디셔닝하고 디지털화하고 추가 처리를 위해 샘플들을 디지털부 (120) 에 제공할 수도 있다.
디지털부 (120) 는 무선 디바이스 (100) 에 대한 디지털 처리를 지원하는 다양한 처리, 인터페이스, 및 메모리 유닛을 포함할 수도 있다. 도 1에 도시된 설계에서, 디지털부 (120) 는 모뎀 프로세서 (122), 중앙 처리 유닛 (CPU)/축소 명령 집합 컴퓨터 (RISC; 124), 메인 제어기 (130), 정적 램 (SRAM; 132), 읽기 전용 메모리 (ROM; 134), NAND 플래시 제어기 (140), 및 SDRAM 제어기 (142) 를 포함하며, 이들 모두는 하나 이상의 버스들 (160) 을 통해 서로 통신할 수도 있다. 모뎀 프로세서 (122) 는 데이터 송신 및 수신에 대한 처리, 예를 들어, 인코딩, 변조, 복조, 디코딩 등을 수행할 수도 있다. CPU/RISC (124) 는 무선 디바이스 (100) 에 대한 범용 처리, 예를 들어, 오디오, 비디오, 그래픽, 및/또는 다른 애플리케이션들에 대한 처리를 수행할 수도 있다. 메인 제어기 (130) 는 디지털부 (120) 내의 다양한 유닛의 동작을 지시할 수도 있다. SRAM (132) 은 디지털부 (120) 내의 제어기 및 프로세서에 의해 사용된 프로그램 코드 및 데이터를 저장할 수도 있다. ROM (134) 은 부팅 코드 (136) 및 루트 공중 키 (138) 를 저장할 수도 있다. 부팅 코드 (136) 는 전원을 켤 때의 부팅의 최초 부분을 수행할 수도 있고 무선 디바이스 (100) 에 전원이 켜진 경우 NAND 플래시 (150) 로부터 로딩 프로그램 코드를 시작할 수도 있다. 루트 공중 키 (138) 는, 예를 들어 NAND 플래시 (150) 로부터 로딩된 프로그램 코드들을 인증하기 위해 보안 기능을 위해 사용될 수도 있다.
NAND 플래시 제어기 (140) 는 NAND 플래시 (150) 와 디지털부 (120) 사이에서 데이터의 이송을 용이하게 할 수도 있다. SDRAM 제어기 (142) 는 SDRAM (152) 과 디지털부 (120) 사이에서 데이터의 이송을 용이하게 할 수도 있다. 메인 제어기 (130) 는 NAND 플래시 제어기 (140) 및/또는 SDRAM 제어기 (142) 의 동작을 지시할 수도 있다. 예를 들어, 메인 제어기 (130) 는, 예를 들어 무선 디바이스 (100) 가 전원이 켜진 경우, 부팅하는 동안 NAND 플래시 (150) 로부터 SDRAM (152) 으로 프로그램 코드들의 로딩을 지시할 수도 있다.
NAND 플래시 (150) 및 SDRAM (152) 은 디지털부 (120) 내의 처리 유닛에 대용량 저장을 제공할 수도 있다. NAND 플래시 (150) 는 디지털부 (120) 에 의해 사용된 프로그램 코드 및 데이터를 위하여 비휘발성 저장을 제공할 수도 있다. NAND 플래시 (150) 는 다른 유형의 비휘발성 메모리, 예를 들어, NOR 플래시로 대체될 수도 있다. SDRAM (152) 은 저장부에, 디지털부 (120) 에 의해 사용된 프로그램 코드 및 데이터를 위한 랜덤 액세스 용량을 제공할 수도 있다. SDRAM (152) 은 또한 다른 유형의 휘발성 메모리, 예를 들어, SRAM, DRAM 등으로 대체될 수도 있다.
통상적으로, 디지털부 (120) 는 임의의 수의 처리, 인터페이스, 및 메모리 유닛들을 포함할 수도 있다. 디지털부 (120) 는 또한 하나 이상의 디지털 신호 프로세서 (DSP), 마이크로 프로세서, RISC 프로세서 등으로 구현될 수도 있다. 디지털부 (120) 는 하나 이상의 주문형 반도체 (ASIC) 및/또는 몇몇 다른 유형의 집적 회로 (IC) 상에서 제조될 수도 있다.
도 1에 도시된 바와 같이, 무선 디바이스 (100) 는 다른 유형의 메모리를 구비한 메모리 아키텍처를 이용할 수도 있다. SDRAM (152) 은 일단 전원이 제거되면 데이터를 잃는 휘발성 메모리이다. SDRAM (152) 은 랜덤 방식으로 액세스될 수도 있고 보통 메인 런타임 메모리로서 사용된다. NAND 플래시 (150) 는 전원이 제거된 후에도 데이터를 보유할 수 있는 비휘발성 메모리이다. NAND 플래시 (150) 는 큰 저장 용량, 계속된 메모리 액세스를 위한 양호한 속도 및 저비용을 갖는다. 그러나, NAND 플래시 (150) 는 랜덤 메모리 액세스에 대하여 불량항 성능을 가지며, 통상적으로 한번에 1 페이지씩 페이지 단위로 액세스되며, 각각의 페이지는 특정 사이즈 (예를 들어 4 KB) 이다.
도 1의 메모리 아키텍처는 NAND 플래시 (150) 및 SDRAM (152) 둘 모두를 포함하고 저비용으로 랜덤 액세스를 갖는 큰 저장 용량을 제공할 수 있다. 이 메모리 아키텍처에 있어서, 프로그램 코드는 NAND 플래시 (150) 에 영구적으로 저장될 수도 있다. 프로그램 코드는 무선 디바이스 (100) 내의 하드웨어를 제어할 수도 있고 다양한 설계 기능 및 특징을 지원할 수도 있다. 전원이 켜질 때, 무선 디바이스 (100) 는, 프로그램 코드를 NAND 플래시 (150) 로부터 SDRAM (152) 으로 이송하는 단계를 수반할 수도 있는 부팅을 수행할 수도 있다. NAND 플래시 (150) 는 많은 양의 프로그램 코드들을 저장할 수도 있다. 따라서, 전원을 켤때 프로그램 코드 모두를 NAND 플래시 (150) 로부터 SDRAM (152) 으로 로딩하는 시간의 양이 상대적으로 길다.
일 양태에서, NAND 플래시 (150) 에 저장되는 프로그램 코드는 NAND 플래시 (150) 의 상이한 세그먼트에 저장될 수도 있는 복수의 코드 이미지들로 분할될 수도 있다. 또한, 세그먼트는 파티션, 섹션 등으로 지칭될 수도 있다. 일 설계에서, 프로그램 코드는 제 1 및 제 2 코드 이미지로 분할될 수도 있다. 제 1 코드 이미지는 무선 디바이스 (100) 의 기본 기능을 지원하도록 사용된 프로그램 코드를 포함할 수도 있고 NAND 플래시 (150) 의 논페이지 세그먼트에 저장될 수도 있다. 제 2 코드 이미지는 나머지 프로그램 코드들을 포함할 수도 있고 NAND 플래시 (150) 의 페이지 세그먼트에 저장될 수도 있다. 전원을 켤 때의 점진적인 부팅에 있어서, 제 1 코드 이미지가 NAND 플래시 (150) 의 논페이지 세그먼트로부터 SDRAM (152) 으로 로딩될 수도 있다. 일단 제 1 코드 이미지가 로딩되었다면, 무선 디바이스 (100) 는 인에이블될 수도 있고 사용자에 대해 기능하는 것으로 나타날 수도 있다. 무선 디바이스 (100) 가 동작하는 동안, 제 2 코드 이미지는 NAND 플래시 (150) 의 페이지 세그먼트로부터 SDRAM (152) 으로, 예를 들어, 백그라운드 태스크로서 및/또는 온-디맨드로서 로딩될 수도 있다. 점진적인 부팅은 전원을 켤 때 무선 디바이스 (100) 를 인에이블하는 시간의 양을 단축시킬 수도 있으며, 이는 사용자 경험을 개선하고 다른 이점을 제공한다.
NAND 플래시 (150) 내에 저장된 프로그램 코드는 무선 디바이스 (100), 다양한 설계된 특징 및 기능을 지원하는 상위 계층 애플리케이션들의 동작을 제어하는 코드들, 팩토리 테스트 코드들, 및/또는 다른 유형의 코드들을 포함할 수도 있다. 인증된 프로그램 코드들을 실행시키고, 인증되지 않은 프로그램 코드들이 실행되는 것을 방지하기 위해서, NAND 플래시 (150) 에 저장된 프로그램 코드들이 사용을 위해 인증되었는지 여부를 확인하는 것이 바람직하거나 필수적일 수도 있다. 또한, 점진적인 부팅을 위해 사용된 복수의 코드 이미지들에 대하여 효율적인 방식으로 보안을 제공하는 것이 바람직할 수도 있다.
다른 양태에서, 전체 제 1 코드 이미지에 대하여 그리고 제 2 코드 이미지의 각각의 페이지에 대하여도 인증을 수행함으로써 점진적인 부팅에 효율적으로 보안을 제공할 수도 있다. 제 1 코드 이미지는 전원을 켤 때 완전히 NAND 플래시 (150) 로부터 먼저 로딩될 수도 있고 로딩될 때 인증될 수도 있다. 제 2 코드 이미지는 페이지들로 분할되어 NAND 플래시 (150) 로부터 한번에 1 페이지씩 로딩될 수도 있다. 제 2 코드 이미지의 페이지들은 메모리 액세스에 따라서 상이한 순서로 로딩될 수도 있다. 제 2 코드 이미지의 각각의 페이지는, 그 페이지가 제 2 코드 이미지의 다른 페이지들을 고려하지 않고 로딩되거나 사용되도록 개별적으로 인증될 수도 있다.
도 2는, 본 발명의 양태에 따라서 논페이지 세그먼트 (210) 및 페이지 세그먼트 (220) 를 포함하는 NAND 플래시 (150) 의 설계를 도시한다. 이 설계에서, 논페이지 세그먼트 (210) 는 제 1 코드 이미지 (212), 해시 다이제스트 테이블 (214), 증명서 (216), 및 디지털 서명 (218) 을 저장한다. 증명서 (216) 는 논페이지 세그먼트 (210) 및 페이지 세그먼트 (220) 를 인증하기 위해서 사용된 암호 정보를 포함할 수도 있다. 디지털 서명 (218) 은 제 1 코드 이미지 (212) 및 해시 테이블 (214) 둘 모두에 대하여 생성될 수도 있고 두 개의 파트를 인증하기 위해서 사용될 수도 있다. 제 1 코드 이미지 (212) 는, 무선 디바이스 (100) 를 인에이블하기 전에 NAND 플래시 (150) 로부터 로딩되는 프로그램 코드들 및/또는 데이터, 예를 들어, 드라이버, 사용자 인터페이스 (UI), 모뎀 등을 위한 코드들을 포함할 수도 있다. 테이블 (214) 은 제 2 코드 이미지 (222) 의 개별 페이지들에 대한 암호 해시 다이제스트를 포함할 수도 있다. 제 2 코드 이미지 (222) 는 무선 디바이스 (100) 를 인에이블한 후 NAND 플래시 (150) 로부터 로딩되는 프로그램 코드들 및/또는 데이터, 예를 들어, 애플리케이션을 위한 코드들을 포함할 수도 있다. 일반적으로 코드 이미지는 프로그램 코드들, 데이터 등을 포함할 수도 있다.
도 2는 또한 NAND 플래시 (150) 의 논페이지 세그먼트 (210) 및 페이지 세그먼트 (220) 를 프로그래밍하는 프로세스 (200) 의 설계를 도시한다. 프로세스 (200) 는 NAND 플래시 (150) 의 제조, 무선 디바이스 (100) 의 준비 동안 수행될 수도 있다. 도 2의 설계는 암호 키들의 2개의 세트: (1) 개인 키 x 및 공중 키 x로도 지칭되는, 논페이지 세그먼트 (210) 를 서명하고 인증하는 개인 키 및 공중 키의 세트, 및 (2) 루트 개인 키 r 및 루트 공중 키 r로도 지칭되는, 소스 엔터티를 인증하는 개인 키 및 공중 키의 세트를 이용한다. 루트 개인 키 r 및 개인 키 x는 비밀이고 소스 엔터티에만 알려지며, 소스 엔터티는 소스 코드 판매회사, 제조자 등일 수도 있다. 루트 공중 키 r은 무선 디바이스 (100) 에 이용가능하게 만들어지고 루트 개인 키 r에 의해 생성된 디지털 서명을 검증하는데 사용된다. 공중 키 x는 개인 키 x에 의해 생성된 디지털 서명을 검증하는데 사용되고 증명서 (216) 로 보내질 수도 있다.
사인 기능 (232) 은 공중 키 x에 대한 디지털 서명과 가능하게는 루트 개인 키 r을 이용한 다른 정보를 생성할 수도 있다. 이 디지털 서명은 서명 cx로도 지칭될 수도 있고 소스 엔터티를 인증하는데 사용될 수도 있다. 사인 기능 (232) 은 RSA (Rivest, Shamir 및 Adleman) 알고리즘, 디지털 서명 알고리즘 (DSA), 또는 몇몇 다른 암호 (디지털 서명 또는 인크립션) 알고리즘을 구현할 수도 있다. 증명서 생성기 (234) 는 서명 cx, 공중 키 x, 그리고 가능하게는 소스 엔터티의 식별자, 사용을 위해 선택된 암호 알고리즘, 증명서의 만기일 등과 같은 다른 정보를 포함하는 증명서를 형성할 수도 있다. 이 증명서는 NAND 플래시 (150) 내에 X.509 증명서로서 저장되거나 본 기술에 알려진 몇몇 다른 포맷으로 저장될 수도 있다. 루트 공중 키 r은 임의의 방식으로 무선 디바이스 (100) 에 이용가능하게 만들어질 수도 있고 도 1의 무선 디바이스 (100) 내의 ROM (134) 에 안전하게 저장될 수도 있다.
도 2에 도시된 설계에서, 제 2 코드 이미지 (222) 가 먼저 처리되고 저장될 수도 있고, 제 1 코드 이미지 (212) 가 다음으로 처리되고 저장될 수도 있다. 페이지 분할 유닛 (252) 은 제 2 코드 이미지 (222) 를 수신하고 특정 사이즈 (예를 들어, 4KB) 의 페이지들로 분할할 수도 있고 한번에 1 페이지씩 보안 해시 기능 (254) 에 제공할 수도 있고 또한 NAND 플래시 (150) 에 제공할 수도 있다. 보안 해시 기능 (254) 은 유닛 (252) 으로부터의 각각의 페이지를 보안 해시 알고리즘을 이용하여 해시할 수도 있고 그 페이지에 대한 해시 다이제스트를 제공한다. 기능 (254) 은 SHA-1 (Secure Hash Algorithm), (SHA-224, SHA-256, SHA-384 및 SHA-512를 포함하는) SHA-2, MD-4 (Message Digest), MD-5, 또는 본 기술에 알려진 몇몇 다른 보안 해시 알고리즘을 구현할 수도 있다. 보안 해시 알고리즘은 암호 특성을 가지므로, 입력 메시지와 (의사 랜덤 비트 스트링인) 그 다이제스트 사이의 기능이 비가역적이고 2개의 입력 메시지들을 동일한 다이제스트로 맵핑하는 가능도는 매우 작다. 보안 해시 알고리즘은 임의의 길이의 입력 메시지를 수신할 수도 있고 고정 길이의 해시 다이제스트를 제공할 수도 있다. 테이블 생성기 (256) 는 제 2 코드 이미지 (222) 의 모든 페이지들에 대한 해시 다이제스트들의 테이블을 생성할 수도 있고 이 테이블을 NAND 플래시 (150) 내의 해시 다이제스트 테이블 (214) 로서 저장할 수도 있다.
제 1 코드 이미지 (212) 는 멀티플렉서 (Mux; 242) 에 제공될 수도 있고 또한 NAND 플래시 (150) 에 저장될 수도 있다. 멀티플렉서 (242) 는 또한 해시 다이제스트 테이블 (214) 을 생성기 (256) 로부터 수신할 수도 있고 제 1 코드 이미지 (212) 와 해시 다이제스트 테이블 (214) 을 보안 해시 기능 (244) 에 순차적으로 제공할 수도 있다. 기능 (244) 은 제 1 코드 이미지 (212) 및 해시 다이제스트 테이블 (214) 둘 모두를 보안 해시 알고리즘을 이용하여 해시할 수도 있고, 다이제스트 x로 지칭될 수도 있는 해시 다이제스트를 제공할 수도 있다. 기능 (244) 은 SHA-1, SHA-2, MD-5, 또는 몇몇 다른 보안 해시 알고리즘을 구현할 수도 있다. 사인 기능 (246) 은 개인 키 x를 이용하여 다이제스트 x에 대한 디지털 서명을 생성할 수도 있다. 이 디지털 서명은 NAND 플래시 (150) 내에 디지털 서명 (218) 으로서 저장될 수도 있다. 사인 기능 (246) 은 RSA, DSA, 또는 몇몇 다른 암호 알고리즘을 구현할 수도 있다. 사인 기능 (232, 246) 은 몇몇 또는 상이한 암호 알고리즘을 구현할 수도 있다.
도 3은 NAND 플래시 (150) 내의 제 2 코드 이미지 (222) 및 해시 다이제스트 테이블 (214) 의 다이제스트를 도시한다. 이 설계에서, 제 2 코드 이미지 (222) 는 0 내지 N-1의 N개의 페이지들로 분할될 수도 있고, 여기서 N은 정수 값일 수도 있다. 각각의 코드 페이지는 보안 해시 알고리즘 (Hash) 을 이용하여 해시되어 대응하는 해시 다이제스트를 생성할 수도 있다. 해시 다이제스트 테이블 (214) 은 N 코드 페이지에 대한 N 개의 해시 다이제스트를 저장할 수도 있다.
도 4는 본 발명의 양태에 따라서 NAND 플래시 (150) 의 논페이지 세그먼트 (210) 및 페이지 세그먼트 (220) 를 로딩하고 인증하는 프로세스 (400) 의 설계를 도시한다. 프로세스 (400) 는 무선 디바이스 (100) 가 전원이 켜지는 경우 등에서 수행될 수도 있다. 검증 기능 (432) 은 도 1의 무선 디바이스 (100) 내의, NAND 플래시 (150) 로부터의 증명서 (216) 와 ROM (134) 으로부터의 루트 공중 키 r을 수신할 수도 있다. 검증 기능 (432) 은 증명서 (216) 로부터 서명 cx와 공중 키 x를 추출하고, 루트 공중 키 r을 이용하여 서명 cx를 검증하고, 그리고 서명 cx가 검증된다면 공중 키 x를 제공할 수도 있다. 제 3 자에 의한 증명서 x의 어떤 부정한 사용도 서명 cx에 의해 검증되지 않았음이 쉽게 검출될 수 있다.
멀티플렉서 (442) 는 제 1 코드 이미지 (212) 및 해시 다이제스트 테이블 (214) 을 수신할 수도 있으며 이 둘 모두를 보안 해시 기능 (444) 에 순차적으로 제공할 수도 있다. 기능 (444) 은 제 1 코드 이미지 (212) 및 해시 다이제스트 테이블 (214) 둘 모두를 해시할 수도 있고 다이제스트 x'로 지칭될 수도 있는 해시 다이제스트를 제공할 수도 있다. 기능 (444) 은 도 2의 보안 해시 기능 (244) 에 의해 사용된 동일한 보안 해시 알고리즘을 구현할 수도 있다. 검증 기능 (446) 은 보안 해시 기능 (444) 으로부터 다이제스트 x', NAND 플래시 (150) 로부터 디지털 서명 x, 및 검증 기능 (432) 으로부터 공중 키 x를 수신할 수도 있다. 검증 기능 (446) 은 공중 키 x 및 다이제스트 x'를 이용하여 디지털 서명 (218) 을 검증할 수도 있고 디지털 서명 (218) 이 검증되었는지 여부를 나타낼 수도 있다. 공중 키 x는 루트 공중 키 r을 이용하여 인증된다. 따라서, 제 3 자에 의한 디지털 서명 (218), 제 1 코드 이미지 (212), 및/또는 해시 다이제스트 테이블 (214) 의 어떤 부정 사용도 디지털 서명 (218) 이 검증되지 않았음이 쉽게 검출될 수 있다.
디지털 서명 (218) 이 검증된다면, 제 1 코드 이미지 (212) 가 사용을 위해 제공될 수도 있고, 해시 다이제스트 테이블 (214) 이 테이블 (456) 에 저장될 수도 있다. 무선 디바이스 (100) 는, 일단 제 1 코드 이미지 (212) 가 NAND 플래시 (150) 로부터 SDRAM (152) 으로 로딩되었다면 인에이블될 수도 있다. 디지털 서명 (218) 이 검증되지 않은 경우, 로딩 프로세스가 중단되고, 에러 메시지가 제공될 수도 있다.
무선 디바이스 (100) 를 인에이블한 이후, 제 2 코드 이미지 (222) 는 한번에 1 페이지씩 NAND 플래시 (150) 로부터 SDRAM (152) 으로 백그라운드 태스크로서 및/또는 온-디맨드로서 로딩될 수도 있다. 보안 해시 기능 (454) 은 NAND 플래시 (150) 로부터 검색된 페이지를 해시할 수도 있고 그 검색된 페이지에 대한 해시 다이제스트 y'을 제공할 수도 있다. 기능 (454) 은 도 2의 보안 해시 기능 (254) 에 의해 사용된 동일한 보안 해시 알고리즘을 구현할 수도 있다. 검증 기능 (458) 은 보안 해시 기능 (454) 으로부터 해시 다이제스트 y'와 테이블 (456) 로부터 검색된 페이지에 대한 인증된 해시 다이제스트 y를 수신할 수도 있다. 검증 기능 (458) 은 2개의 해시 다이제스트 y'와 y를 비교하고 2개의 다이제스트가 일치한다면 검색된 페이지를 인증된 것으로 선언할 수도 있다. 해시 다이제스트 테이블 (214) 은 루트 공중 키 r를 이용하여 인증될 수도 있다. 보안 해시 알고리즘의 암호 특성은, 다른 페이지를 동일한 해시 다이제스트 y에 매핑할 가능도가 매우 작은 것을 보장한다. 따라서, 제 3 자에 의한 페이지의 어떤 부정 사용도 2개의 해시 다이제스트들 간의 불일치에 의해 쉽게 검출될 수 있다. 다이제스트가 일치한다면 검색된 페이지가 사용을 위해 제공된다. 해시 다이제스트가 일치하지 않는다면, 로딩 프로세스가 중단될 수도 있고 에러 메시지가 제공될 수도 있다.
도 2 내지 도 4는 논페이지 세그먼트 (210) 및 페이지 세그먼트 (220) 의 점진적인 부팅을 지원하고 세그먼트 (210, 220) 에 저장된 코드 이미지의 인증을 더 지원하는 NAND 플래시 (150) 의 일 설계를 도시한다. 일반적으로, NAND 플래시 (150) 는 P 코드 이미지들을 P 페이지 세그먼트에 그리고 Q 코드 이미지를 Q 논페이지 세그먼트에 저장할 수도 있으며, P 및 Q는 1 이상의 각각 임의의 정수 값일 수도 있다. Q 논페이지 세그먼트로부터의 코드 이미지는 무선 디바이스 (100) 를 인에이블하기 전에 NAND 플래시 (150) 로부터 로딩될 수도 있다. P 페이지 세그먼트로부터의 코드 이미지는 무선 디바이스 (100) 를 인에이블 한 후 NAND 플래시 (150) 로부터 로딩될 수도 있다.
논페이지 및 페이지 세그먼트에 저장된 코드 이미지들에 대한 보안은 다양한 방식으로 구현될 수도 있다. 일반적으로, 인증을 위해 사용된 보안 정보는 하나 이상의 증명서, 디지털 서명, 해시 다이제스트 등을 포함할 수도 있다. 논페이지 세그먼트로부터의 코드 이미지 (또는 단순하게, 논페이지 코드 이미지) 를 인증하는데 사용된 보안 정보는 그 논페이지 세그먼트, 지정된 논페이지 세그먼트 등에 저장될 수도 있다. 페이지 세그먼트로부터의 코드 이미지 (또는 단순하게, 페이지 코드 세그먼트) 를 인증하는데 사용된 보안 정보는 그 페이지 세그먼트에, 다른 페이지 세그먼트, 논페이지 세그먼트 등에 저장될 수도 있다. 보안 정보는 페이지 코드 이미지의 각각의 페이지에 제공되어 각각의 페이지가 개별적으로 로딩되고 인증되게 할 수도 있다. 또한, 보안 정보는 전체 페이지 코드 이미지에 제공될 수도 있다. 일 설계에서, 일 논페이지 세그먼트는 상술된 바와 같이 논페이지 및 페이지 세그먼트 모두에 대한 보안 정보를 저장할 수도 있다. 다른 설계에서, 인증은, 각각의 세그먼트가 로딩되는 다음 페이지에 대한 보안 정보를 저장하는 데이지 체인 방식으로 수행될 수도 있다. 또한, 논페이지 및 페이지 코드 이미지들의 인증은 다른 방식으로 수행될 수도 있다.
명료함을 위해서, 다음 설명은 도 2 내지 도 4에 도시된 구조의 사용을 가정하고, NAND 플래시 (150) 는 논페이지 세그먼트 (210) 와 페이지 세그먼트 (220) 를 포함한다. 논페이지 세그먼트 (210) 는 무선 디바이스 (100) 의 기본 기능을 지원하는 프로그램 코드, 점진적인 부팅을 지원하는 코드 등을 포함할 수도 있다. 페이지 세그먼트 (220) 는 무선 디바이스 (100) 에 대한 남은 프로그램 코드들을 포함할 수도 있다.
도 5는 NAND 플래시 (150) 의 논페이지 세그먼트 (210) 에 저장된 제 1 코드 이미지 (212) 의 설계를 도시한다. 이 설계에서, 제 1 코드 이미지 (212) 는 점진적인 부팅을 지원하는 모듈 (510), 드라이버 (530), 사용자 인터페이스 (UI) 코드 (540), 및 모뎀 코드 (550) 를 포함한다.
모듈 (510) 내에서, 헤더 (512) 는 페이지 및 논페이지 세그먼트들의 수, 각각의 세그먼트의 시작 어드레스 및 사이즈, 각각의 세그먼트 헤더의 위치 등과 같은 NAND 플래시 (150) 에 대한 관련 정보를 포함할 수도 있다. 부팅 로더 (518) 는 NAND 플래시 (150) 로부터 SDRAM (152) 로 논페이지 세그먼트 (210) 의 로딩을 다룰 수도 있다. NAND 드라이버 (516) 는 NAND 플래시 (150) 로부터 페이지를 검색하고 이들 페이지를 SDRAM (152) 에 복사할 수도 있다. 메모리 관리자 (518) 는 NAND 플래시 (150) 로부터 SDRAM (152) 으로의 페이지 세그먼트 (220) 의 로딩을 다룰 수도 있고 제 2 코드 이미지 (222) 의 어느 페이지들이 로딩되었는지 기록할 수도 있다. 어보트 핸들러 (520) 는, NAND 플래시 (150) 로부터 로딩되지 않았던 제 2 코드 이미지 (222) 의 페이지들의 메모리 액세스로 인한 페이지 결함을 다룰 수도 있다. 페이지 결함이 발생하는 경우, 어보트 핸들러 (520) 는 현재 태스크의 콘텍스트를 저장할 수도 있고 이후 요청된 페이지를 비롯한 하나 이상의 페이지들을 로딩할 것을 페이저 핸들러 (522) 에 요청한다. 페이저 핸들러 (522) 는 NAND 플래시 (150) 로부터의 제 2 코드 이미지 (222) 의 요청된 페이지들의 온-디맨드 페이징 및 백그라운드를 다룰 수도 있다. 부팅 로더 (514) 및 페이저 핸들러 (522) 는 NAND 플래시 (150) 로부터 특정 페이지들을 검색하고 이들 페이지들을 SDRAM (152) 에 복사할 것을 NAND 드라이버 (516) 에 요청할 수도 있다.
드라이버 (530) 는 액정 디스플레이 (LCD), 키보드, 마이크로폰, 스피커 등과 같은 입력/출력 (I/O) 디바이스를 지원할 수도 있다. UI 코드 (540) 는, 전원을 켤 때 애니메이션이 디스플레이되는 것, 키패드 입력의 수신, 눌러진 캐릭터를 LCD 상에 디스플레이하는 것 등과 같은 다양한 UI 기능을 지원할 수도 있다. UI 코드 (540) 는 무선 디바이스 (100) 에 대한 수명 표시를 제공할 수도 있고, 무선 디바이스가 동작하는 것을 사용자가 인식할 수 있도록 사용자 입력을 수신할 수도 있다. 모뎀 코드 (550) 는, 예를 들어 송신기 (114) 및 수신기 (116) 를 초기화하는 것, 무선 시스템에 대하여 탐색하는 것, 호를 발하고 수신하는 것, 호에 대한 처리 (예를 들어, 인코딩 및 디코딩) 를 수행하는 것과 같이 무선 통신을 지원하도록 다양한 기능을 수행할 수도 있다.
도 5는 논페이지 세그먼트 (210) 의 일 설계를 도시한다. 논페이지 세그먼트 (210) 는 또한 도 5에 도시되지 않은 상이한 모듈 및/또는 다른 모듈을 포함할 수도 있다. 예를 들어, 논페이지 세그먼트 (210) 는 팩토리 테스트 코드, BREW (Binary Runtime Environment for Wireless) 애플리케이션 실행 환경 (AEE) 코드 등을 포함할 수도 있다.
도 6은 도 1의 무선 디바이스 (100) 에서의 SDRAM (152) 의 설계를 도시한다. 제 1 코드 이미지 (212) 는 점진적인 부팅의 제 1 부분 동안 NAND 플래시 (150) 로부터 검색되어 SDRAM (152) 에 저장될 수도 있다. 제 2 코드 이미지 (222) 의 페이지 0 내지 N-1은 점진적인 부팅의 제 2 부분 동안 NAND 플래시 (150) 로부터 임의의 순서로 검색되어 SDRAM (152) 의 적절한 위치에 저장될 수도 있다.
제 2 코드 이미지 (222) 의 백그라운드 로딩은 제 1 코드 이미지 (212) 가 SDRAM (152) 으로 로딩된 후에 개시할 수도 있다. 백그라운드 로딩에 있어서, 제 2 코드 이미지 (222) 의 N개의 페이지들은 한번에 1 페이지씩 그리고 NAND 플래시 (150) 로부터 순차적인 순서로 검색되고, 인증되어, SDRAM (152) 의 대응 위치에 저장될 수도 있다. 전체 제 2 코드 이미지 (222) 는 2차 로드 시간으로도 지칭될 수도 있는 특정량의 시간에서 SDRAM (152) 으로 완벽하게 로딩될 수도 있다. 백그라운드 로딩에는 무선 디바이스 (100) 에 의해 수행된 다른 태스크들 보다 더 낮은 우선권이 주어질 수도 있다. 따라서, 2차 로드 시간은 가변일 수도 있으며 제 2 코드 이미지 (222) 의 사이즈, NAND 플래시 (150) 와 SDRAM (152) 간의 송신률, 무선 디바이스 (100) 에서의 활동량 등과 같은 다양한 인자에 의존할 수도 있다.
백그라운드 로딩을 수행하는 동안, 아직 로딩되지 않았던 제 2 코드 이미지 (222) 의 페이지가 액세스될 수도 있고, 페이지 결함이 발생할 수도 있다. 요청된 페이지는 NAND 플래시 (150) 로부터 온-디맨드로 로딩되고 사용을 위해 제공될 수도 있다. 일 설계에서, 요청된 페이지만이 NAND 플래시 (150) 로부터 로딩된다. 다른 설계에서, 요청된 페이지 및 하나 이상의 인근의 페이지들이 NAND 플래시 (150) 로부터 로딩될 수도 있다. 이 설계는 반복된 페이지 결함을 방지할 수도 있으므로 성능을 개선시킨다. 요청된 페이지의 온-디맨드 페이징의 완료 이후, 제 2 코드 이미지 (222) 의 남은 페이지들의 백그라운드 로딩이 재개될 수도 있다.
메모리 관리자 (518) 는 제 2 코드 이미지 (222) 의 페이지가 NAND 플래시 (150) 로부터 로딩되었음을 기록할 수도 있다. 이 정보는, 요청된 페이지가 SDRAM (152) 에 저장되었는지 또는 NAND 플래시 (150) 로부터 검색되어야 하는지 여부를 결정하는데 사용될 수도 있다. 제 2 코드 이미지 (222) 의 페이지의 로드 상태는 다양한 방식으로 저장될 수도 있다.
도 7은 제 2 코드 이미지 (222) 의 주어진 페이지가 SDRAM (152) 에 저장되었는지 여부를 결정하는데 사용될 수도 있는 2-레벨 구조 (700) 의 설계를 도시한다. 이 설계에서, 32 비트 메모리 어드레스 (702) 는 비트 0 내지 31을 포함할 수도 있고 0 내지 4 기가바이트 (GB) 의 어드레스 범위를 가질 수도 있다. 어드레스 범위는 4096개의 섹션으로 분할될 수도 있으며, 각각의 어드레스 섹션은 1 메가바이트 (MB) 를 커버한다. 각각의 어드레스 섹션은 256 페이지를 커버할 수도 있고, 각각의 페이지는 4 KB일 수도 있다.
구조 (700) 는, 각각의 어드레스 섹션에 대해 1 엔트리로, 4096 어드레스 섹션에 대해 4096 개의 엔트리를 갖는 하나의 메인 테이블 (710) 을 포함할 수도 있다. 구조 (700) 는 또한 각각의 어드레스 섹션을 위한 일 페이지 테이블 (720) 을 더 포함할 수도 있다. 각각의 페이지 테이블은, 각각이 페이지에 대해 1 엔트리, 256 페이지에 대해 256 엔트리를 포함할 수도 있다.
일 설계에서, 제 2 코드 이미지 (222) 의 임의의 페이지를 로딩하기 전에 메인 테이블과 전체 제 2 코드 이미지 (222) 에 대한 페이지 테이블이 생성되고 초기화될 수도 있다. 예를 들어, 페이징을 위한 64 MB의 가상 메모리를 지원하기 위해 일 메인 테이블과 64 페이지 테이블이 SDRAM (152) 내에 생성될 수도 있다. 메인 테이블의 각각의 엔트리는 그 메인 테이블 엔트리에 대응하는 페이지 테이블의 시작에 대한 포인터를 포함할 수도 있다. 각각의 페이지 테이블의 256 엔트리는 미리결정된 값으로 초기화되어, 이들 엔트리에 의해 커버된 256 페이지가 SDRAM (152) 으로 로딩되지 않았음 (또는 이들 256 페이지에 대한 액세스 허가가 없음) 을 나타낼 수도 있다. 페이지가 NAND 플래시 (150) 로부터 SDRAM (152) 으로 로딩되는 경우, 그 페이지를 커버하는 페이지 테이블이 확인될 수도 있고, 그리고 그 페이지에 대한 엔트리가 업데이트되어 페이지가 SDRAM (152) 으로 로딩되었음을 나타낼 수도 있다.
제 2 코드 이미지 (222) 가 NAND 플래시 (150) 로부터 로딩되는 동안, SDRAM (152) 의 각각의 메모리 액세스를 체크하여 요청된 페이지가 SDRAM (152) 에 저장되었는지 여부를 결정할 수도 있다. 메모리 액세스를 위한 메모리 어드레스의 12개의 최상위 비트 (MSB) 는 메인 테이블 내의 엔트리에 액세스하기 위해 사용될 수도 있다. 이 메인 테이블로부터의 포인터는, 메모리 어드레스를 커버하는 어드레스 섹션에 대한 페이지 테이블의 시작을 결정하는데 사용될 수도 있다. 메모리 어드레스의 8개의 다음 MSB는 액세스되는 페이지에 대한 페이지 테이블 엔트리를 결정하는데 사용될 수도 있다. 이 페이지 테이블 엔트리를 체크하여 액세스되는 페이지가 SDRAM (152) 으로 로딩되었는지 여부를 결정할 수도 있다. 페이지가 로딩되었다면, SDRAM (152) 이 액세스되어 요청된 프로그램 코드 또는 데이터를 획득할 수도 있다. 페이지가 로딩되지 않았다면, 어보트 핸들러 (520) 에 통지될 수도 있고, 요청된 페이지가 SDRAM (152) 으로 로딩될 수도 있다.
메인 테이블 및 페이지 테이블은, 제 2 코드 이미지 (222) 의 개별 페이지가 SDRAM (152) 으로 로딩되었는지 여부를 결정하는데 사용될 수도 있다. 제 2 코드 이미지 (222) 의 N개의 페이지 전부가 SDRAM (152) 으로 로딩되었는지 여부를 나타내기 위해 인디케이터가 사용될 수도 있다. 이 인디케이터는, 일 값 (예를 들어, 0) 으로 초기화될 수도 있고, 일단 제 2 코드 이미지 (222) 의 페이지들 모두가 SDRAM (152) 으로 로딩되었다면 다른 값 (예를 들어, 1) 으로 설정될 수도 있다. 메인 테이블 및 페이지 테이블은 전체 제 2 코드 이미지 (222) 가 로딩된 이후에 삭제될 수도 있다.
도 7은 제 2 코드 이미지 (222) 의 페이지가 SDRAM (152) 으로 로딩되었는지 여부를 결정하는 구조 (700) 의 일 설계를 도시한다. 구조 (700) 는 메모리 보호를 위해 사용된 구조와 유사하여 어느 페이지가 액세스 가능한지를 기록할 수도 있다. 이와 같이, 구조 (700) 는 메모리 보호를 위해 사용된 구조와 유사한 방식으로 구현 및 업데이트될 수도 있다.
또한, 제 2 코드 이미지 (222) 의 어느 페이지가 SDRAM (152) 으로 로딩되었는지를 기록하기 위해 다양한 다른 구조가 사용될 수도 있다. 예를 들어, 각각의 페이지에 대하여 일 비트를 포함하는 비트 맵이 사용될 수도 있다. 각각의 페이지에 대한 비트는 페이지가 SDRAM (152) 으로 로딩되지 않았다면 일 값 (예를 들어, 0) 으로 설정되고 또는 페이지가 로딩되었다면 다른 값 (예를 들어, 1) 으로 설정될 수도 있다.
도 8은 본 발명의 양태에 따라서, 예를 들어, 제조 또는 제공 단계 동안 메모리 디바이스를 프로그래밍하기 위한 프로세스 (800) 의 설계를 도시한다. 제 1 보안 정보가 제 1 코드 이미지 그리고 가능하게는 다른 정보에 기초하여 생성될 수도 있다 (블록 812). 제 2 보안 정보는 제 2 코드 이미지에 기초하여 생성될 수도 있다 (블록 814). 제 1 코드 이미지는 무선 디바이스를 위해 사용된 메모리 디바이스로 프로그래밍될 수도 있다 (블록 816). 무선 디바이스를 부팅하고 무선 디바이스를 동작시키기 위해서 제 1 코드 이미지가 메모리 디바이스로부터 로딩될 수도 있다. 제 2 코드 이미지가 메모리 디바이스로 프로그래밍될 수도 있다 (블록 818). 무선 디바이스가 그 무선 디바이스를 추가로 또는 전적으로 부팅하기 위해 동작하는 동안 제 2 코드 이미지는 메모리 디바이스로부터 로딩될 수도 있다. 제 1 및 제 2 보안 정보는 메모리 디바이스로 프로그래밍될 수도 있고 제 1 및 제 2 코드 이미지를 각각 인증하기 위해 사용될 수도 있다 (블록 820).
블록 814에서, 제 2 코드 이미지는 복수의 페이지들로 분할될 수도 있으며, 각각의 페이지는 보안 해시 알고리즘에 의해 해시되어 그 페이지에 대한 해시 다이제스트를 획득할 수도 있다. 블록 820에서, 복수의 페이지들에 대한 해시 다이제스트의 테이블이 생성되어 메모리 디바이스로 프로그래밍될 수도 있다. 블록 812에 있어서, 디지털 서명이 제 1 코드 이미지, 개인 키, 및 제 2 페이지 코드 이미지에 대한 해시 다이제스트의 테이블에 기초하여 생성될 수도 있다. 개인 키에 대응하는 공중 키를 포함하는 증명서가 생성될 수도 있다. 블록 820에서, 증명서 및 디지털 서명이 메모리 디바이스로 프로그래밍될 수도 있다.
도 9는 본 발명의 양태에 따라서 전원을 켤 때 무선 디바이스의 점진적인 부팅을 수행하는 프로세스 (900) 의 설계를 도시한다. 제 1 코드 이미지는 무선 디바이스를 부팅하기 위해 외부 메모리로부터 로딩될 수도 있다, 예를 들어, NAND 플래시로부터 SDRAM으로 로딩될 수도 있다 (블록 912). 제 1 코드 이미지에 대한 제 1 보안 정보는 외부 메모리로부터 획득될 수도 있다 (블록 914). 제 1 코드 이미지는 제 1 보안 정보에 기초하여 인증될 수도 있다 (블록 916). 무선 디바이스는 제 1 코드 이미지를 로딩하고 인증한 후 동작될 수도 있다 (블록 918). 동작 동안, 무선 디바이스는 키패드 입력을 처리할 수 있고, 무선 시스템과 호를 구축할 수도 있다.
무선 디바이스를 추가로 부팅하기 위해 무선 디바이스가 동작하는 동안 제 2 코드 이미지가 외부 메모리로부터 로딩될 수도 있다 (블록 920). 제 2 코드 이미지에 대한 제 2 보안 정보는 외부 메모리로부터 획득될 수도 있다 (블록 922). 제 2 코드 이미지는 제 2 보안 정보에 기초하여 인증될 수도 있다 (블록 924). 인증된 경우, 제 2 코드 이미지의 실행이 인에이블될 수도 있다 (블록 926).
블록 920에서, 제 2 코드 이미지는 무선 디바이스가 동작하는 동안 백그라운드 태스크 및/또는 온-디맨드로서 로딩될 수도 있다. 온-디맨드 로딩에 있어서, 제 2 코드 이미지의 페이지에 대한 메모리 액세스가 수신될 수도 있다. 액세스되는 페이지를 포함하여 제 2 코드 이미지의 페이지들의 미리결정된 수가 메모리 액세스에 응답하여 외부 메모리로부터 로딩될 수도 있다.
제 2 코드 이미지는 외부 메모리로부터 한번에 1 페이지씩 로딩될 수도 있는 복수의 페이지들을 포함할 수도 있다. 로딩되었던 제 2 코드 이미지의 페이지들과 로딩되지 않았던 제 2 코드 이미지의 페이지들을 기록하기 위해 적어도 하나의 테이블이 유지될 수도 있다. 예를 들어, 복수의 어드레스 범위들에 대해 복수의 엔트리들을 갖는 메인 테이블이 유지될 수도 있다. 복수의 어드레스 범위들에 대한 복수의 페이지 테이블 또한 유지될 수도 있으며, 각각의 어드레스 범위에 대해 1 페이지 테이블이며, 각각의 페이지 테이블이 그 페이지 테이블에 대한 어드레스 범위 내에서 복수의 페이지들에 대한 복수의 엔트리들을 포함한다. 메인 테이블의 각각의 엔트리는 대응하는 페이지 테이블에 대한 포인터를 포함할 수도 있다. 대응하는 페이지 테이블의 각각의 엔트리는 연관된 페이지가 로딩되었는지 그리고 액세스 가능한지 여부를 나타낼 수도 있다. 테이블(들)은 제 2 코드 이미지를 로딩하기 전에 생성될 수도 있고 제 2 코드 이미지를 로딩한 후 삭제될 수도 있다.
블록 916에서, 제 1 보안 정보는 증명서와 디지털 서명을 포함할 수도 있다. 증명서는, 무선 디바이스에서 안정하게 저장될 수도 있는 루트 공중 키에 기초하여 인증될 수도 있다. 제 1 코드 이미지는 디지털 서명과, 증명서로부터의 공중 키에 기초하여 인증될 수도 있다. 블록 924에서, 제 2 보안 정보는 제 1 보안 정보에 기초하여 인증될 수도 있는 적어도 하나의 해시 다이제스트를 포함할 수도 있다. 이후, 제 2 코드 이미지는 적어도 하나의 해시 다이제스트에 기초하여 인증될 수도 있다.
도 10은 본 발명의 양태에 따라서, 코드 이미지를 인증하는 프로세스 (1000) 의 설계를 도시한다. 프로세스 (1000) 는 도 9의 블록 920 내지 블록 924 를 위해 사용될 수도 있다. 코드 이미지의 복수의 페이지들은 외부 메모리로부터 검색될 수도 있으며, 이 복수의 페이지는 별개의 보안 정보와 연관된다 (블록 1012). 복수의 페이지들은 한번에 한 페이지씩, 코드 이미지의 페이지들에 대한 메모리 액세스에 기초하여 결정된 무작위 순서 또는 (예를 들어, 백그라운드 로딩을 위해) 미리결정된 순서 중 어느 하나로 검색될 수도 있다. 외부 메모리로부터 검색된 각각의 페이지는 그 페이지에 대한 보안 정보에 기초하여 인증될 수도 있다 (블록 1014). 일 설계에서, 복수의 페이지들에 대한 해시 다이제스트의 테이블이 외부 메모리로부터 검색되어 인증될 수도 있다. 각각의 검색된 페이지는 보안 해시 알고리즘에 기초하여 해시되어 그 페이지에 대해 생성된 해시 다이제스트를 획득할 수도 있다. 생성된 해시 다이제스트가, 해시 다이제스트의 테이블로부터일 수도 있는 페이지에 대해 인증된 해시 다이제스트와 일치한다면 검색된 페이지는 인증된 것으로 선언될 수도 있다.
도 11은 본 발명의 양태에 따른, NAND 플래시 (150) 에 대한 프로그래밍 스테이션 (1100) 의 설계의 블록도를 도시한다. 프로그래밍 스테이션 (1100) 은 제어기/프로세서 (1110), 메모리 (1112), 프로그래밍 툴 (1114), 및 데이터베이스 (1116) 를 포함한다. 제어기/프로세서 (1110) 는 도 2에 도시된 보안 처리를 수행할 수도 있고 프로그래밍 스테이션 (1100) 의 동작을 추가로 지시할 수도 있다. 메모리 (1112) 는 제어기/프로세서 (1110) 에 의해 사용된 데이터 및 코드를 저장할 수도 있다. 프로그래밍 툴 (1114) 은 예를 들어, 도 2에 도시된 바와 같이 NAND 플래시 (150) 를 프로그래밍할 수도 있다. 데이터베이스 (1116) 은 NAND 플래시 (150), 암호 키 등으로 프로그래밍되는 코드 이미지들을 저장할 수도 있다. 프로그래밍 스테이션 (1100) 은 도 8의 프로세스 (800) 및/또는 다른 프로세스를 수행하여 메모리를 프로그램밍할 수도 있다.
명료함을 위해서, 부팅 기술을 NAND 플래시 및 SDRAM을 이용한 메모리 구성에 대해 설명하였다. 또한, 부팅 기술은 다른 메모리 구성 및 다른 유형의 메모리들을 위해 사용될 수도 있다. 부팅 기술은 임의의 수의 논페이지 및 페이지 코드 이미지, 임의의 수의 논페이지 및 페이지 세그먼트, 임의의 페이지 사이즈 등을 위해 추가로 사용될 수도 있다.
본원에 기재된 부팅 기술은 일정한 이점을 제공할 수도 있다. 전원을 켤때 메모리 로딩을 위한 부팅 시간이 더 짧게 인식되는 것이 달성될 수도 있다. 이것은, 팩토리 테스트 코드가 논페이지 세그먼트에 저장되고 먼저 로딩될 수도 있기 때문에 더 짧은 팩토리 테스트 시간을 발생시킬 수도 있다. 무선 디바이스가 로딩 프로세스를 완료하지 않았더라도, 팩토리 테스트 코드는 이러한 코드들의 초기 로딩에 의존할 수도 있고 전원이 켜진 직후 무선 디바이스에 말하여 테스트 장비를 구비할 수도 있다. 더 짧게 인식된 부팅 시간은 전원이 켜진 후 사용자 대기 시간의 양을 감소시킬 수도 있고 따라서 사용자 경험을 개선시킬 수도 있다.
당업자는, 정보 및 신호는 다양한 상이한 테크놀러지들 및 테크닉들 중 어느 것을 이용하여 나타내어질 수도 있다는 것을 이해한다. 예를 들어, 상기 설명 전체에 걸쳐서 언급될 수도 있는 데이터, 명령, 커맨드, 정보, 신호, 비트, 심볼, 및 칩은 전압, 전류, 전자기파, 자기장 또는 자기 입자들, 광학계 또는 광학 입자들, 또는 그 임의의 조합으로 나타내어질 수도 있다.
당업자는 또한, 본원에 개시와 연결하여 설명된 다양한 예시적인 논리 블록, 모듈, 회로 및 알고리즘 단계는 전자식 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합으로서 구현될 수도 있다는 것을 이해한다. 하드웨어 및 소프트웨어의 이 상호교환가능성을 명백하게 설명하기 위해서, 다양한 예시적인 컴포넌트, 블록, 모듈, 회로 및 단계가 그 기능의 관하여 일반적으로 상술되었다. 이러한 기능이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정 애플리케이션 및 전체 시스템에 부과된 설계 제약들에 의존한다. 당업자는 각각의 특정 애플리케이션에 대하여 다양한 방식으로 설명된 기능을 구현할 수도 있지만, 이러한 구현 결정은 본 개시의 범위로부터 일탈하는 것으로 해석되어서는 안된다.
본 개시와 연결하여 설명된 다양한 예시적인 논리 블록, 모듈, 및 회로는 범용 프로세서, 디지털 신호 처리기들 (DSP), 주문형 집적 반도체 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA) 또는 다른 프로그램가능한 논리 디바이스, 별개의 게이트 또는 트랜지스터 로직, 별개의 하드웨어 컴포넌트, 또는 본원에 설명된 기능을 수행하도록 설계된 그 임의의 조합으로 구현 또는 수행될 수도 있다. 범용 프로세서는 마이크로프로세서이지만, 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로컨트롤러, 또는 스테이트 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스의 조합, 예를 들어, DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다.
본원에 개시와 연결하여 설명된 방법 또는 알고리즘의 단계는 프로세서에 의해 실행된 하드웨어, 소프트웨어 모듈, 또는 이 둘의 결합에 직접적으로 수록될 수도 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드웨어 디스크, 착탈가능 디스크, CD-ROM, 또는 임의의 다른 형태의 본 기술에 공지된 저장 매체에 존재할 수도 있다. 예시적인 저장 매체는 프로세서에 커플링되어, 이 프로세서로 하여금 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록하게 한다. 대안으로, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서 및 저장 매체는 ASIC으로 존재할 수도 있다. ASIC은 사용자 단말기에 존재할 수도 있다. 대안으로, 프로세서 및 저장 매체는 사용자 단말기 내의 별개의 컴포넌트로서 존재할 수도 있다.
하나 이상의 예시적인 설계에서, 설명된 기능은 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현된다면, 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 메체에 저장될 수도 있고 송신될 수도 있다. 컴퓨터 판독가능 매체는, 컴퓨터 프로그램을 일 위치에서 다른 위치로 용이하게 이송시킬 수 있는 임의의 매체를 포함한 통신 매체 및 컴퓨터 저장 매체 둘 다를 포함한다. 저장 매체는, 범용 또는 특수 목적용 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수도 있다. 예로써, 이러한 컴퓨터 판독가능 매체는, RAM, ROM, EEPROM, CD-ROM, 또는 원하는 프로그램 수단을 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하는데 사용될 수 있고 범용 또는 특수 목적용 컴퓨터, 또는 범용 또는 특수 목적용 프로세서에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있지만, 이것으로 한정되지 않는다. 또한, 임의의 접속은 정확하게 컴퓨터 판독가능 매체로 지칭된다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스티드 페어 케이블, 디지털 가입자 회선 (DSL) 또는 적외선, 라디오, 및 마이크로웨이브와 같은 무선 테크놀러지들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신된다면, 동축 케이블, 광섬유 케이블, 트위스티드 페어 케이블, DSL, 또는 적외선, 라디오, 및 마이크로웨이브와 같은 무선 테크놀러지들은 매체의 정의에 포함된다. 본원에 사용된 디스크 (disk 및 disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광디스크, DVD (Digital Versatile Disc), 플로피 디스크 및 블루레이 디스크를 포함하고, 디스크 (disk) 는 통상적으로 자기적으로 데이터를 재생하는 반면, 디스크 (disc) 는 레이저를 이용하여 광학적으로 데이터를 재생한다. 상기의 조합 또한 컴퓨터 판독가능 매체의 범위 내에 포함된다.
본 개시의 앞의 설명은 당업자로 하여금 본 개시를 제작하거나 이용할 수 있게 제공된다. 본 개시에 대한 다양한 수정은 당업자에게 자명할 것이고, 본원에 정의된 일반적인 원리는 본 개시의 범위로부터 벗어남 없이 다양한 변경에 적용될 수도 있다. 따라서, 본 개시는 본원에 설명된 실시예 및 설계들로 제한되도록 의도되지 않으며 본원에 개시된 원리 및 신규한 특성들과 일치하는 최광의의 범위를 따른다.

Claims (11)

  1. 무선 디바이스를 부팅하기 위한 장치로서,
    코드 이미지의 복수의 페이지들을 외부 메모리로부터 검색하고, 페이지에 대한 보안 정보에 기초하여 상기 외부 메모리로부터 검색된 각각의 페이지를 인증하도록 구성된 메모리 제어기를 포함하고,
    상기 복수의 페이지들은 별개의 보안 정보와 연관되며,
    상기 메모리 제어기는 상기 외부 메모리로부터 상기 코드 이미지의 상기 복수의 페이지들에 대한 해시 다이제스트들의 테이블을 검색하고, 상기 해시 다이제스트들의 테이블을 인증하고, 그리고 상기 해시 다이제스트들의 인증된 테이블에 기초하여 상기 코드 이미지의 상기 복수의 페이지들을 인증하도록 구성되며,
    상기 코드 이미지의 각각의 페이지에 대한 보안 정보는 상기 해시 다이제스트들의 테이블 내의 해시 다이제스트를 포함하는, 무선 디바이스를 부팅하기 위한 장치.
  2. 제 1 항에 있어서,
    상기 외부 메모리로부터 검색된 각각의 페이지에 있어서, 상기 메모리 제어기는 생성된 해시 다이제스트를 획득하기 위해 보안 해시 알고리즘에 기초하여 상기 검색된 페이지를 해시하고, 그리고 상기 생성된 해시 다이제스트가 상기 해시 다이제스트들의 인증된 테이블에 있는 상기 페이지에 대해 인증된 해시 다이제스트와 일치한다면 상기 검색된 페이지를 인증된 것으로 선언하도록 구성되는, 무선 디바이스를 부팅하기 위한 장치.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 메모리 제어기는 상기 코드 이미지의 상기 복수의 페이지들을 한번에 1 페이지씩 그리고 미리결정된 순서로 상기 외부 메모리로부터 검색하도록 구성되는, 무선 디바이스를 부팅하기 위한 장치.
  5. 제 1 항에 있어서,
    상기 메모리 제어기는, 한번에 1 페이지씩 그리고 상기 코드 이미지의 페이지들에 대한 메모리 액세스에 기초하여 결정된 랜덤 순서로, 상기 코드 이미지의 상기 복수의 페이지들을 검색하도록 구성되는, 무선 디바이스를 부팅하기 위한 장치.
  6. 무선 디바이스를 부팅하기 위한 방법으로서,
    상기 방법은 상기 무선 디바이스에 의해 수행되고,
    상기 방법은,
    외부 메모리로부터 코드 이미지의 복수의 페이지들을 검색하는 단계로서, 상기 복수의 페이지들은 별개의 보안 정보와 연관되는, 상기 복수의 페이지들의 검색 단계; 및
    상기 페이지에 대한 보안 정보에 기초하여 상기 외부 메모리로부터 검색된 각각의 페이지를 인증하는 단계를 포함하고,
    상기 방법은,
    상기 외부 메모리로부터 상기 코드 이미지의 상기 복수의 페이지들에 대한 해시 다이제스트들의 테이블을 검색하는 단계로서, 상기 코드 이미지의 각각의 페이지에 대한 상기 보안 정보는 상기 해시 다이제스트들의 테이블 내의 해시 다이제스트를 포함하는, 상기 해시 다이제스트들의 테이블의 검색 단계; 및
    상기 해시 다이제스트들의 테이블을 인증하는 단계를 더 포함하며,
    상기 외부 메모리로부터 검색된 각각의 페이지는 상기 페이지에 대해 인증된 해시 다이제스트에 기초하여 인증되는, 무선 디바이스를 부팅하기 위한 방법.
  7. 제 6 항에 있어서,
    상기 외부 메모리로부터 검색된 각각의 페이지를 인증하는 단계는,
    생성된 해시 다이제스트를 획득하기 위해 보안 해시 알고리즘에 기초하여 상기 검색된 페이지를 해시하는 단계, 및
    상기 생성된 해시 다이제스트가 상기 페이지에 대해 인증된 해시 다이제스트와 일치한다면 상기 검색된 페이지를 인증된 것으로 선언하는 단계를 포함하는, 무선 디바이스를 부팅하기 위한 방법.
  8. 삭제
  9. 외부 메모리로부터 코드 이미지의 복수의 페이지들을 검색하는 수단으로서, 상기 복수의 페이지들은 별개의 보안 정보와 연관되는, 상기 복수의 페이지들의 검색 수단;
    상기 페이지에 대한 보안 정보에 기초하여 상기 외부 메모리로부터 검색된 각각의 페이지를 인증하는 수단;
    상기 외부 메모리로부터 상기 코드 이미지의 상기 복수의 페이지들에 대한 해시 다이제스트들의 테이블을 검색하는 수단으로서, 상기 코드 이미지의 각각의 페이지에 대한 상기 보안 정보는 상기 해시 다이제스트들의 테이블 내의 해시 다이제스트를 포함하는, 상기 해시 다이제스트들의 테이블의 검색 수단; 및
    상기 해시 다이제스트들의 테이블을 인증하는 수단을 포함하며,
    상기 외부 메모리로부터 검색된 각각의 페이지는 상기 페이지에 대해 인증된 해시 다이제스트에 기초하여 인증되는, 무선 디바이스를 부팅하기 위한 장치.
  10. 제 9 항에 있어서,
    상기 외부 메모리로부터 검색된 각각의 페이지를 인증하는 수단은,
    생성된 해시 다이제스트를 획득하기 위해 보안 해시 알고리즘에 기초하여 상기 검색된 페이지를 해시하는 수단, 및
    상기 생성된 해시 다이제스트가 상기 페이지에 대해 인증된 해시 다이제스트와 일치한다면 상기 검색된 페이지를 인증된 것으로 선언하는 수단을 포함하는, 무선 디바이스를 부팅하기 위한 장치.
  11. 삭제
KR1020117030186A 2007-10-26 2008-10-21 무선 디바이스를 위한 점진적인 부팅 KR101207823B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/925,567 US8683213B2 (en) 2007-10-26 2007-10-26 Progressive boot for a wireless device
US11/925,567 2007-10-26
PCT/US2008/080653 WO2009055394A2 (en) 2007-10-26 2008-10-21 Progressive boot for a wireless device

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020107011430A Division KR101170335B1 (ko) 2007-10-26 2008-10-21 무선 디바이스를 위한 점진적인 부팅

Publications (2)

Publication Number Publication Date
KR20110138304A KR20110138304A (ko) 2011-12-26
KR101207823B1 true KR101207823B1 (ko) 2012-12-04

Family

ID=40342629

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020117030186A KR101207823B1 (ko) 2007-10-26 2008-10-21 무선 디바이스를 위한 점진적인 부팅
KR1020107011430A KR101170335B1 (ko) 2007-10-26 2008-10-21 무선 디바이스를 위한 점진적인 부팅

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020107011430A KR101170335B1 (ko) 2007-10-26 2008-10-21 무선 디바이스를 위한 점진적인 부팅

Country Status (10)

Country Link
US (1) US8683213B2 (ko)
EP (1) EP2210174B1 (ko)
JP (2) JP5936820B2 (ko)
KR (2) KR101207823B1 (ko)
CN (1) CN101836187B (ko)
BR (1) BRPI0818710A2 (ko)
CA (1) CA2701279C (ko)
RU (1) RU2456663C2 (ko)
TW (1) TWI450195B (ko)
WO (1) WO2009055394A2 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291226B2 (en) * 2006-02-10 2012-10-16 Qualcomm Incorporated Method and apparatus for securely booting from an external storage device
US20090254898A1 (en) * 2008-04-08 2009-10-08 Microsoft Corporation Converting a device from one system to another
US8072811B2 (en) * 2008-05-07 2011-12-06 Aplus Flash Technology, Inc, NAND based NMOS NOR flash memory cell, a NAND based NMOS NOR flash memory array, and a method of forming a NAND based NMOS NOR flash memory array
KR101181957B1 (ko) * 2008-11-18 2012-09-12 한국전자통신연구원 소프트웨어 기반의 무선 단말에서의 소프트웨어 재구성 방법 및 장치
JP5422308B2 (ja) 2009-08-31 2014-02-19 任天堂株式会社 情報処理装置
SG184853A1 (en) * 2010-04-12 2012-11-29 Interdigital Patent Holdings Staged control release in boot process
US8310885B2 (en) * 2010-04-28 2012-11-13 International Business Machines Corporation Measuring SDRAM control signal timing
TWI456577B (zh) * 2010-08-10 2014-10-11 Hon Hai Prec Ind Co Ltd 反及閘快閃記憶體啓動裝置及使用方法
US8423724B2 (en) * 2010-09-08 2013-04-16 Smart Modular Technologies, Inc. Dynamic back-up storage system with rapid restore and method of operation thereof
JP5765561B2 (ja) * 2011-05-11 2015-08-19 横河電機株式会社 表示器を備える機器
US8949586B2 (en) * 2011-10-06 2015-02-03 Cisco Technology, Inc. System and method for authenticating computer system boot instructions during booting by using a public key associated with a processor and a monitoring device
JP5776480B2 (ja) * 2011-10-07 2015-09-09 株式会社リコー 情報処理装置、正当性検証方法、正当性検証プログラム
KR20130081459A (ko) * 2012-01-09 2013-07-17 삼성전자주식회사 휴대단말기의 pre―load 어플리케이션 탑재를 위한 메모리 영역구분 장치
JP2016513839A (ja) 2013-03-15 2016-05-16 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法
US9195406B2 (en) 2013-06-28 2015-11-24 Micron Technology, Inc. Operation management in a memory device
JP2015022373A (ja) * 2013-07-16 2015-02-02 株式会社リコー 制御装置及びその起動処理方法、並びにその制御装置を備えた画像形成装置
KR102538096B1 (ko) * 2016-09-13 2023-05-31 삼성전자주식회사 어플리케이션을 검증하는 디바이스 및 방법
CN106656502B (zh) * 2016-09-26 2020-09-01 上海兆芯集成电路有限公司 计算机系统及安全执行的方法
KR102617354B1 (ko) * 2017-01-05 2023-12-26 삼성전자주식회사 보안 부트 시퀀서 및 보안 부트 장치
US11003537B2 (en) * 2018-05-29 2021-05-11 Micron Technology, Inc. Determining validity of data read from memory by a controller
US11250135B1 (en) 2018-07-31 2022-02-15 Marvell Asia Pte, Ltd. Method and apparatus for authorizing unlocking of a device
US10942654B2 (en) * 2018-11-01 2021-03-09 EMC IP Holding Company LLC Hash-based data recovery from remote storage system
US11271720B2 (en) * 2019-03-25 2022-03-08 Micron Technology, Inc. Validating data stored in memory using cryptographic hashes
US11159514B2 (en) * 2020-02-27 2021-10-26 Bank Of America Corporation System for authenticating process operations on a network using context locked progressive session tokens

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192610A1 (en) 2006-02-10 2007-08-16 Chun Dexter T Method and apparatus for securely booting from an external storage device

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5610981A (en) 1992-06-04 1997-03-11 Integrated Technologies Of America, Inc. Preboot protection for a data security system with anti-intrusion capability
JPH0793980A (ja) 1993-09-24 1995-04-07 Toshiba Emi Ltd データ記録再生装置
TW266241B (en) 1995-02-06 1995-12-21 Komatsu Mfg Co Ltd Revolving-type low altitude embarkation operation car
CA2225805C (en) 1995-06-29 2002-11-12 Allan E. Alcorn Electronic casino gaming system with improved play capacity, authentication and security
US5643086A (en) 1995-06-29 1997-07-01 Silicon Gaming, Inc. Electronic casino gaming apparatus with improved play capacity, authentication and security
US6708274B2 (en) 1998-04-30 2004-03-16 Intel Corporation Cryptographically protected paging subsystem
US20010007131A1 (en) 1997-09-11 2001-07-05 Leonard J. Galasso Method for validating expansion roms using cryptography
US6185678B1 (en) 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US6463535B1 (en) 1998-10-05 2002-10-08 Intel Corporation System and method for verifying the integrity and authorization of software before execution in a local platform
US7409546B2 (en) * 1999-10-20 2008-08-05 Tivo Inc. Cryptographically signed filesystem
US6565443B1 (en) 1999-09-14 2003-05-20 Innovative Gaming Corporation System and method for verifying the contents of a mass storage device before granting access to computer readable data stored on the device
US6595856B1 (en) 2000-01-04 2003-07-22 Sigma Game, Inc. Electronic security technique for gaming software
US6601167B1 (en) 2000-01-14 2003-07-29 Advanced Micro Devices, Inc. Computer system initialization with boot program stored in sequential access memory, controlled by a boot loader to control and execute the boot program
US6625729B1 (en) 2000-03-31 2003-09-23 Hewlett-Packard Company, L.P. Computer system having security features for authenticating different components
JP3971890B2 (ja) 2000-11-01 2007-09-05 日本電信電話株式会社 署名検証支援装置、署名検証支援方法、及び電子署名検証方法
US20030018892A1 (en) 2001-07-19 2003-01-23 Jose Tello Computer with a modified north bridge, security engine and smart card having a secure boot capability and method for secure booting a computer
DE10208442A1 (de) 2001-09-27 2003-05-15 Marc Delling Hochsicherheits-Server als Datenverarbeitungsanlage
US6944757B2 (en) * 2001-10-16 2005-09-13 Dell Products L.P. Method for allowing CD removal when booting embedded OS from a CD-ROM device
US7434068B2 (en) 2001-10-19 2008-10-07 Intel Corporation Content protection in non-volatile storage devices
US20030084298A1 (en) * 2001-10-25 2003-05-01 Messerges Thomas S. Method for efficient hashing of digital content
TWI228220B (en) 2002-03-08 2005-02-21 Samsung Electronics Co Ltd System boot using NAND flash memory and method thereof
JP4675031B2 (ja) 2002-04-23 2011-04-20 パナソニック株式会社 サーバ装置及びプログラム管理システム
US7620811B2 (en) 2002-04-23 2009-11-17 Panasonic Corporation Server device and program management system
JP4492025B2 (ja) 2002-05-21 2010-06-30 株式会社デンソー 電子制御装置のデータ格納方法
KR100469669B1 (ko) 2002-09-24 2005-02-02 삼성전자주식회사 플래시 메모리를 이용하여 부팅되는 시스템 장치 및 그시스템 부팅 방법
JP4073301B2 (ja) 2002-10-15 2008-04-09 株式会社リコー 情報処理装置
JP4323163B2 (ja) 2002-11-25 2009-09-02 三菱電機株式会社 サーバ装置
JP2004265286A (ja) 2003-03-04 2004-09-24 Fujitsu Ltd 環境に応じて選択されたセキュリティ・ポリシーに従うモバイル機器の管理
US20050091496A1 (en) 2003-10-23 2005-04-28 Hyser Chris D. Method and system for distributed key management in a secure boot environment
JP2005157528A (ja) 2003-11-21 2005-06-16 Fuji Xerox Co Ltd メモリ装置
JP4534498B2 (ja) 2004-01-28 2010-09-01 ソニー株式会社 半導体装置およびその起動処理方法
US7401234B2 (en) 2004-03-01 2008-07-15 Freescale Semiconductor, Inc. Autonomous memory checker for runtime security assurance and method therefore
JP4604543B2 (ja) * 2004-04-30 2011-01-05 日本電気株式会社 計算機、計算機起動方法、管理サーバ装置およびプログラム
US7694121B2 (en) 2004-06-30 2010-04-06 Microsoft Corporation System and method for protected operating system boot using state validation
JP2006059116A (ja) * 2004-08-19 2006-03-02 Sony Ericsson Mobilecommunications Japan Inc 携帯端末
JP2006146485A (ja) 2004-11-18 2006-06-08 Toshiba Corp 携帯端末
JP2006163714A (ja) * 2004-12-06 2006-06-22 Fuji Photo Film Co Ltd 撮影装置
US20060133495A1 (en) 2004-12-22 2006-06-22 Yan Ye Temporal error concealment for video communications
JP2006178909A (ja) 2004-12-24 2006-07-06 Tdk Corp メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4489030B2 (ja) 2005-02-07 2010-06-23 株式会社ソニー・コンピュータエンタテインメント プロセッサ内にセキュアな起動シーケンスを提供する方法および装置
JP4373943B2 (ja) 2005-02-28 2009-11-25 Tdk株式会社 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
KR100626391B1 (ko) 2005-04-01 2006-09-20 삼성전자주식회사 원낸드 플래시 메모리 및 그것을 포함한 데이터 처리시스템
TWI266241B (en) * 2005-07-01 2006-11-11 Via Tech Inc Method for booting up a computer system
JP4130453B2 (ja) * 2005-07-28 2008-08-06 京セラ株式会社 無線通信装置
JP4661505B2 (ja) * 2005-09-30 2011-03-30 ソニー株式会社 情報処理装置、情報処理方法及びそのプログラム
US20070143530A1 (en) 2005-12-15 2007-06-21 Rudelic John C Method and apparatus for multi-block updates with secure flash memory
JP4921000B2 (ja) * 2006-03-15 2012-04-18 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、及びプログラム
US8750387B2 (en) 2006-04-04 2014-06-10 Qualcomm Incorporated Adaptive encoder-assisted frame rate up conversion
JP2007282067A (ja) * 2006-04-11 2007-10-25 Hitachi Ltd デジタル放送受信装置
US8429643B2 (en) * 2007-09-05 2013-04-23 Microsoft Corporation Secure upgrade of firmware update in constrained memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192610A1 (en) 2006-02-10 2007-08-16 Chun Dexter T Method and apparatus for securely booting from an external storage device

Also Published As

Publication number Publication date
JP2016001481A (ja) 2016-01-07
KR101170335B1 (ko) 2012-08-02
CN101836187B (zh) 2013-10-30
KR20100075658A (ko) 2010-07-02
CN101836187A (zh) 2010-09-15
EP2210174B1 (en) 2018-08-29
TWI450195B (zh) 2014-08-21
JP5936820B2 (ja) 2016-06-22
JP2011501321A (ja) 2011-01-06
US8683213B2 (en) 2014-03-25
WO2009055394A2 (en) 2009-04-30
EP2210174A2 (en) 2010-07-28
WO2009055394A3 (en) 2009-09-24
CA2701279A1 (en) 2009-04-30
RU2010121177A (ru) 2011-12-10
TW200935308A (en) 2009-08-16
BRPI0818710A2 (pt) 2015-05-05
RU2456663C2 (ru) 2012-07-20
CA2701279C (en) 2015-11-24
US20090113558A1 (en) 2009-04-30
KR20110138304A (ko) 2011-12-26

Similar Documents

Publication Publication Date Title
KR101207823B1 (ko) 무선 디바이스를 위한 점진적인 부팅
KR101049647B1 (ko) 외부 저장 디바이스로부터 안전하게 부팅하기 위한 방법 및 장치
US8560823B1 (en) Trusted modular firmware update using digital certificate
KR101690845B1 (ko) 하나 이상의 샌드박싱된 애플리케이션에 대한 파일 시스템 액세스
CA2744358C (en) Method, apparatus, and computer program product for managing software versions
US8417969B2 (en) Storage volume protection supporting legacy systems
KR20060108710A (ko) 신뢰성 있는 이동 플랫폼 구조
US11893118B2 (en) Transfer of ownership of a computing device via a security processor
US20170255775A1 (en) Software verification systems with multiple verification paths
US20220382874A1 (en) Secure computation environment
US9336410B2 (en) Nonvolatile memory internal signature generation
CN112579990A (zh) 一种电机控制程序的加密方法、装置及终端设备
CN117610083A (zh) 文件校验方法、装置、电子设备及计算机存储介质
CN113946850A (zh) 一种密钥的使用方法、装置、电子及存储介质

Legal Events

Date Code Title Description
A107 Divisional application of patent
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: 20150930

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 8