KR100973733B1 - 메모리 카드 제어기 펌웨어의 하드웨어 드라이버 무결성체크 - Google Patents

메모리 카드 제어기 펌웨어의 하드웨어 드라이버 무결성체크 Download PDF

Info

Publication number
KR100973733B1
KR100973733B1 KR1020087006251A KR20087006251A KR100973733B1 KR 100973733 B1 KR100973733 B1 KR 100973733B1 KR 1020087006251 A KR1020087006251 A KR 1020087006251A KR 20087006251 A KR20087006251 A KR 20087006251A KR 100973733 B1 KR100973733 B1 KR 100973733B1
Authority
KR
South Korea
Prior art keywords
firmware
memory
integrity
memory card
data
Prior art date
Application number
KR1020087006251A
Other languages
English (en)
Other versions
KR20080045708A (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
Priority claimed from US11/284,623 external-priority patent/US7536540B2/en
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20080045708A publication Critical patent/KR20080045708A/ko
Application granted granted Critical
Publication of KR100973733B1 publication Critical patent/KR100973733B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 시스템은 제어기의 하드웨어로 구현되는 암호화 엔진을 포함한다. 메모리 시스템을 기동할 때, 부트스트랩 메커니즘이 이행되며 실행시 펌웨어의 제1 부분은 실행될 펌웨어의 또 다른 부분에서 가져온다. 암호화 엔진의 하드웨어는 펌웨어의 적어도 제1 부분의 무결성을 검증하는데 사용된다. 그러므로, 시스템을 작동시키도록 의도된 펌웨어만이 실행될 것이다.

Description

메모리 카드 제어기 펌웨어의 하드웨어 드라이버 무결성 체크{HARDWARE DRIVER INTEGRITY CHECK OF MEMORY CARD CONTROLLER FIRMWARE}
발명은 일반적으로 안전한(secure) 콘텐트 및 이 콘텐트의 암호화를 갖춘 메모리 카드들에 관한 것으로, 특히 안전한 메모리 카드들을 작동시키는 펌웨어의 무결성을 검증하는 것에 관한 것이다.
시판되는 메모리 카드들이 공장에서 출하하기 전에 이들의 기능성을 검증하고, 일단 이들이 공장에서 출하되면 이들 카드들이 해커들로부터 확실히 안전할 수 있게 하는 것이 중요하다. 디지털 권한 관리의 출현 및 이를테면 음악 및 영화 등과 같은 보호된 콘텐트의 확산으로, 카드의 콘텐츠가 확실히 자유롭게 카피될 수 없게 할 필요성이 있다. 해커가 이를 행하려고 시도할 수 있는 한 방법은 카드의 콘텐츠 해적행위가 가능하기 위해서 메모리 카드를 작동시키는 펌웨어를 개조(alter) 혹은 심지어는 교체하는 것이다. 이에 따라, 항시 카드에 작동하는 펌웨어의 무결성 및 신뢰성 둘 다를 확실하게 하는 시스템을 제공하는 것이 필수적이다.
발명의 요약
펌웨어의 무결성을 검증하는 것은 안전하고 신뢰성 있는 메모리 카드를 작동 시키는 중요한 면이다. 본 발명은 메모리 카드, USB(universal serial bus) 플래시 드라이브, 혹은 이외 다른 메모리 시스템을 작동시키는 펌웨어의 무결성을 검증한다. 펌웨어의 무결성은 펌웨어가 실행되기 전에 검증된다. 이것은 공장 펌웨어가 아닌 펌웨어의 실행이 수행되는 것을 방지한다. 이것은 콘텐트가 자유롭게 카피되는 것으로부터 보호되게 한 암호화 알고리즘들을 포함하는 안전 메커니즘들을 공장 펌웨어가 포함하기 때문에 특히 중요하다. 메모리 카드에 구현되었을 때 본 발명은 안전한 콘텐트가 카피될 수 있게 할 수 있는 비-공장 펌웨어 혹은 개조된(altered) 공장 펌웨어를 카드가 작동시키는 것을 방지한다. 이에 따라, 해커는 부정한 펌웨어를 작동하게 카드를 "속일 수(trick)" 없다. 검증 프로세스는 임의의 저장된 데이터의 무결성을 검증하는 데에도 사용될 수 있다.
본 발명의 일 면은 메모리 저장장치의 작동을 시작하기 위한 방법에 있어서, 상기 장치의 대량저장 유닛에 펌웨어를 제공하는 단계; 상기 펌웨어를 암호화 엔진에 통과시키는 단계; 상기 암호화 엔진으로 상기 펌웨어에 대한 해시 값들을 계산하는 단계; 상기 계산된 해시 값들을 저장된 해시 값들과 비교하는 단계; 및 상기 계산된 해시 값들이 상기 저장된 해시 값들에 일치한다면 상기 펌웨어를 실행하는 단계를 포함하는, 방법을 포함한다.
본 발명의 또 다른 면은 대량 저장장치에 있어서, 플래시 메모리, 독출전용 메모리, 상기 대량 저장장치의 데이터 저장 작동들을 제어하는 제1 세트의 명령들로서, 상기 제1 세트는 상기 플래시 메모리에 저장된 것인, 상기 제1 세트의 명령들; 및 상기 플래시에서 실행가능 랜덤 액세스 메모리에 제1 세트의 명령들을 섀 도(shadow)하는 제2 세트의 명령들로서, 상기 제2 세트는 독출전용 메모리에 주재하는, 상기 제2 세트의 명령들을 포함하는, 대량 저장장치를 포함한다. 암호화 엔진은 상기 대량 저장장치의 하드웨어 회로로 구현되며 상기 플래시 메모리에 저장되고 이로부터 독출되는 데이터를 암호화 및 해독할 수 있다. 상기 암호화 엔진은 상기 제1 세트의 명령들의 무결성을 검증하게 작동할 수 있다.
본 발명의 또 다른 면은 메모리 저장장치의 작동을 시작하는 또 다른 방법을 포함한다. 방법은 상기 장치의 대량저장 유닛에 펌웨어를 제공하는 단계 및 상기 펌웨어를 상기 대량 저장유닛에서 랜덤 액세스 메모리에 카피하는 독출전용 메모리 내 제1 세트의 명령들을 실행하는 단계를 포함한다. 방법은 또한, 부팅 펌웨어의 무결성을 암호화 엔진을 사용하여 검증하는 단계; 및 상기 무결성이 검증된 후에, 랜덤 액세스 메모리로부터 상기 펌웨어를 마이크로프로세서로 실행하는 단계를 포함한다.
본 발명의 추가 면들, 잇점들 및 특징들은 본 발명의 예들의 다음 설명에 포함되며, 이 설명은 첨부한 도면들과 함께 취해질 것이며, 다른 것이 표시되지 않는한 도면들 전체에 걸쳐 동일 참조부호들은 동일 특징을 기술하는데 사용된다. 여기에 참조로 하는 모든 특허들, 특허출원들, 논문들 및 그외 공보들은 모든 목적들을 위해 이들 전체를 이 참조문헌으로 여기 포함시킨다.
도 1a는 본 발명의 실시예에 따른 시스템(10)의 개략도이다.
도 1b는 본 발명의 또 다른 실시예에 따른 시스템(10)의 개략도이다.
도 2는 도 1에 도시된 플래시 메모리의 메모리 공간도이다.
도 3은 부트 로더(200a)의 개략도이다.
도 4는 펌웨어의 하드웨어 기반의 무결성 체크를 포함하는 부팅 프로세스의 부분의 흐름도이다.
도 5는 도 4의 무결성 검증 프로세스(410)의 흐름도이다.
도 6은 부팅 동안에 하드웨어 루프의 흐름도이다.
도 7은 부팅 동안에 펌웨어 루프의 흐름도이다.
메시지 인증 코드("MAC")는 콘텐트의 무결성을 입증하는데 사용되는 일부 콘텐트(혹은 메시지)로부터 계산되는 수이다. 이것의 목적은 콘텐트가 개조(alter)되었는지를 검출하는 것이다. 메시지 인증 코드는 메시지 및 어떤 비밀 데이터로부터 계산되는 해시(hash)이다. 비밀 데이터를 알지 않고는 위조하기 어렵다. MAC은 비밀 키를 사용하는 DES 혹은 AES 암호들(cipher)에 기초한 알고리즘을 사용하여 계산된다. 이어서 MAC은 저장되거나 메시지와 함께 보내진다. 수신측은 동일 알고리즘 및 비밀 키를 사용하여 MAC을 재계산하고 이를 저장되어 있는 혹은 보내진 것과 비교한다. 이들이 동일하다면, 콘텐트 혹은 메시지는 무단변경되지 않은 것으로 한다.
DES(데이터 암호화 표준)은 56비트 키를 사용하는 NIST-표준 크립토그래픽 암호이다. 1977에서 NIST에 의해 채택되었으나, 공식적인 표준으로서 2001년에 AES로 대체되었다. DES는, 전자 코드 북(ECB)가 가장 많이 사용되는 것으로 4개의 서 로 다른 작동 모드들에서 64 비트 블록들을 처리하는 대칭 블록 암호이다.
3중 DES는 몇 개의 복수회 패스(pass) 방법들을 추가함으로써 보안성을 증가시켰는데, 예를 들면, 제1 키로 암호화하고, 결과들을 제2 키로 해독(decrypt)하고 이를 다시 제3 키로 암호화한다. 그러나, 추가의 패스들은 프로세스에 상당한 계산시간을 추가한다. DES는 가장 강력한 보안성을 요구하지 않는 애플리케이션들에서 여전히 사용된다.
진보된 암호화 표준("AES")은 128비트의 블록길이 및 128, 192 혹은 256 비트의 키 길이들을 사용하는 NIST-표준 크립토그래픽 암호이다. 2001년에 3중 DES 방법을 공식적으로 대체한 AES는 벨기에의 Joan Daemen 및 Vincent Rijmen에 의해 개발된 라인달(Rijndael) 알고리즘을 사용한다. AES는 3 패스 대신 1 패스로 암호화될 수 있고, 이의 키 크기는 3중 DES의 168 비트들보다 크다.
보안 해시 알고리즘(SHA-1)은 20바이트 출력을 생성한다. NIST 및 NSA는 이것을 디지털 서명 표준에 사용하기 위해 설계하였으며 현재 널리 사용되고 있다. MD5는 본 발명에 채용될 수 있는 또 다른 해시 함수이다. 위에 언급된 표준들 및 여러 가지 다른 알고리즘들은 본 발명에 이용될 수 있는 해시 함수들 및 값들의 실례가 되는 예들이다. 현재 사용가능하고 향후 개발될 다른 유형들의 해시 함수들 및 값들이 본 발명에 이용될 수 있다.
위에 언급된 표준들 및 다양한 다른 알고리즘들 및/또는 표준이 크립토그래피의 당업자들에 공지되어 있을지라도, 다음 간행물들은 정보를 제공하며 각각의 전부를 참조문헌으로 여기 포함시킨다. http://www.faqs.org/rfcs/rfc3566.html에 서 입수될 수 있는 것으로서, 820 West Diamond Ave, Room 677, Gaithersburg, MD 20899에 NIST-National Institute of Standards and Technology에 Sheila Frankel에 의한 RFC 3566-The AES-XCBC-MAC-96 Algorithm and Its Use With IPsec; http://www.engr.mun.ca/~howard/PAPERS/necec_2003b.pdf에서 입수될 수 있는 것으로서, Performance Comparison of Message Authentication Code(MAC) Algorithms for the Internet Protocol Security (IPSEC) by Janaka Deepakumara, Howard M. Heys and R. Venkatesan, Electrical and Computer Engineering, Memorial University of Newfoundland, St. John's, NL, Canada, A1B3S7; 및 http://csrc.nist.gov/CryptoToolkit/modes/proposedmodes/xcbc-mac/xcbc-mac- spec.pdf에서 입수될 수 있는 것으로서, Comments to NIST concerning AES Modes of Operations:A Suggestion for Handling Arbitrary-Length Messages with the CBC MAC by John Black, University of Nevada, Reno, Phillip Rogaway, University of California at Davis.
메모리 시스템 구조
본 발명의 여러 면들이 구현될 수 있는 메모리 시스템의 예가 도 1a에 블록도로 도시되었다. 도 1a에 도시된 바와 같이, 메모리 시스템(10)은 중앙처리 유닛(CPU) 또는 "제어기"(12), 버퍼 관리 유닛(BMU)(14), 호스트 인터페이스 모듈(HIM)(16), 플래시 인터페이스 모듈(FIM)(18), 플래시 메모리(20) 및 주변 액세 스 모듈(22)을 포함한다. 메모리 시스템(10)은 호스트 인터페이스 버스(26) 및 포트(26a)를 통해 호스트 장치(24)와 통신한다. NAND 유형일 수 있는 플래시 메모리(20)는 호스트 장치(24)를 위한 데이터 저장장치를 제공한다. CPU(12)를 위한 소프트웨어 코드는 플래시 메모리(20)에 저장될 수도 있다. FIM(18)은 플래시 인터페이스 버스(28)를 통해 플래시 메모리(20)에 접속되며 어떤 경우들에 있어서는 플래시 메모리(20)가 착탈가능 구성성분인 경우, 도시되지 않은 포트에 접속된다. HIM(16)은 디지털 카메라, 개인용 컴퓨터, PDA(personal digital assistant) 및 MP-3 플레이어들, 셀룰라 전화 혹은 이외 다른 디지털 장치들과 같이 호스트 시스템에 접속하는데 적합하다. 주변 액세스 모듈(22)은 CPU(12)와 통신을 위해 이를테면 FIM, HIM 및 BMU와 같은 적합한 제어기 모듈을 선택한다. 일 실시예에서, 점선 박스 내 시스템(10)의 모든 구성성분들은 이를테면 메모리 카드에 단일 유닛으로 내장되고 바람직하게는 카드 내에 내장될 수 있다.
버퍼 관리유닛(14)은 호스트 다이렉트 메모리 액세스 유닛(HDMA)(32), 플래시 다이렉트 메모리 액세스 유닛(FDMA)(34), 아비터(arbiter)(36), CPU 버스 아비터(35), 레지스터들(33), 펌웨어 무결성 회로(FWIC)(31), 버퍼 랜덤 액세스 메모리(BRAM)(38), 및 암호화 엔진(40)이라고도 하는 크립토(crypto) 엔진(40)을 포함한다. 아비터(36)는 임의의 시간에 단지 한 마스터 혹은 개시자(initiator)(HDMA(32), FDMA(34) 혹은 CPU(12)일 수 있는)만이 활성이 될 수 있고 슬레이브 혹은 타겟이 BRAM(38)이도록 하는 공유 버스 아비터이다. 아비터는 적합한 개시자 요청을 BRAM(38)에 보내는 것(channeling)을 행한다. HDMA(32) 및 FDMA(34)는 HIM(16), FIM(18) 및 BRAM(38) 혹은 RAM(11)간에 데이터가 수송되게 한다. CPU 버스 아비터(35)는 시스템 버스(15)를 통해 크립토 엔진(40) 및 플래시 DMA(34)에서 RAM(11)으로 직접 데이터 전송될 수 있게 하며, 이것은 이를테면 크립토 엔진을 우회하는 것이 요망될 때와 같은 어떤 상황들에서 사용된다. HDMA(32) 및 FDMA(34)의 작동은 통상적인 것으로, 여기에서는 상세히 기술될 필요는 없다. BRAM(38)은 호스트 장치(24)와 플래시 메모리(20)간에 전달되는 데이터를 저장하는데 사용된다. HDMA(32) 및 FDMA(34)는 HIM(16)/FIM(18) 및 BRAM(38) 혹은 CPU RAM(12a)간에 데이터를 전송하고 섹터 완료를 나타낸다.
플래시 메모리(20)로부터 데이터가 호스트 장치(24)에 의해 독출될 때, 메모리(20) 내 암호화된 데이터가 버스(28)를 통해, FIM(18), FDMA(34), 및 암호화된 데이터가 해독되는 곳인 크립토 엔진(40)에 페치(fetch)되고 BRAM(38)에 저장된다. 이어서, 해독된 데이터는 BRAM(38)로부터, HDMA(32), HIM(16), 및 버스(26)를 통해 호스트 장치(24)에 보내진다. 메모리(20)에 저장된 데이터가 암호화되게 한 것들에 비교해 다른 키 및/또는 알고리즘에 의해, 호스트 장치(24)에 보내지는 데이터가 다시 암호화되도록, BRAM(38)로부터 페치되는 데이터는 이것이 HDMA(32)에 전달되기 전에 크립토 엔진(40)에 의해 다시 암호화될 수도 있다. 대안적으로, 위에 기술된 프로세스에서 권한없는 액세스에 취약할 수 있을 해독된 데이터를 BRAM(38)에 저장하기보다는, 메모리(20)로부터의 데이터는 BRAM(38)에 보내지기 전에 크립토 엔진(40)에 의해 다시 해독되어 암호화될 수 있다. 이어서, BRAM(38) 내 암호화된 데이터는 전처럼 호스트 장치(24)에 보내진다. 이것은 독출 프로세스동안의 데이터 스트림을 예시한다.
데이터가 호스트 장치(24)에 의해 메모리(20)에 기입될 때, 데이터 스트림의 방향은 반대가 된다. 예를 들면, 암호화되지 않은 데이터가 호스트 장치에 의해, 버스(26), HIM(16), HDMA(32)을 통해 크립토 엔진(40)에 보내진다면, 이러한 데이터는 BRAM(38)에 저장되기 전에 엔진(40)에 의해 암호화될 수도 있다. 대안적으로, 암호화되지 않은 데이터는 BRAM(38)에 저장될 수 있다. 이어서, 데이터는 메모리(20)로 가는 중에 FDMA(34)에 보내지기 전에 암호화된다.
도 1b는 시스템(10)의 또 다른 실시예를 도시한 것이다. 이 바람직한 실시예에서, 암호화 엔진(40) 및 펌웨어 무결성 회로(31)가 제어기(12)의 일부로서 도시되었다. 이들 구성성분들이 제어기의 일부인 것인 바람직하나, 이들은 어떤 실시예들에선 제어기 패키지에 일체화되지 않을 수도 있다. 앞에서 기술된 바와 같이, RAM(11), 플래시 메모리(20), 및 제어기(12)는 시스템 버스(15)에 모두 접속된다. 호스트 인터페이스 버스(26)는 호스트 장치(24)(도시생략)와 통신한다.
펌웨어 무결성 검증
도 2는 시스템(10)을 작동시키는 펌웨어(200)를 포함하는 플래시 메모리의 메모리 공간의 예시도이다. 시스템 펌웨어(200)는, 플래시 메모리(20) 내 주재하며 바람직하게는 변경될 수 없는 부트 로더(BLR) 부분(200a), 및 플래시 메모리(20)에 주재하며 필요하다면 수시로 변경될 수 있는 시스템 펌웨어(200b)를 포함한다. 추 가의 펌웨어는, 어떤 실시예들에서, 직접 혹은 섀도(shadowed) 카피로부터 실행될 때 BLR 부분(200a)을 가리키는 ROM(13) 내에 있을 수 있다. 시스템 펌웨어(200)의 크기는 이로부터 실행되는 RAM 모듈보다 더 크며, 따라서 시스템 펌웨어는 오버레이들이라 하는 보다 작은 부분들로 분할된다. 바람직한 실시예들에서 BLR의 무결성 검증은 예상 값들이 데이터 자체에 저장되는 고유의 즉각적(on the fly) 계산을 이용하며 카피는 플래시 메모리(20) 이외의 메모리 내 레지스터들에 임시로 저장된다. 그러나, 어떤 실시예들에서, BLR의 무결성을 검증하는데 사용되는 기술은 시스템 펌웨어(200b)의 무결성을 검증하는데 사용될 수 있다. 앞에서 언급된 바와 같이, 어떠한 해시 값 및 해싱 기술이든 사용될 수 있는데, 그러나 현재로서는 MAC 혹은 SHA-1 값들이 바람직하고, 단순화를 위해서 한 혹은 다른 값들의 사용이 바람직한 실시예에서 기술될 것이다. 일반적으로, SHA-1 다이제스트들은 대안적으로는 MAC 값들 대신에 사용될 수 있고, 그 반대도 될 수 있다. MAC 값들을 사용하는 잇점은 이들이 하드웨어 및 이들을 생성한 하드웨어의 키에 연관된다는 것이다. SHA-1 값들은, 단순히 데이터 자체에 기초하여, 주어진 데이터 세트에 대해 생성될 수 있으나, MAC 값들은 키 없이는 재 생성될 수 없고, 따라서 보다 확고한 보안성을 제공한다. 구체적으로, 암호화 엔진(40)의 비휘발성 메모리에 저장된 키(99)는 MAC 값들을 생성하는데 사용되어야 하기 때문에, 다른 프로세서는 MAC 값들을 재 생성하는데 이용될 수 없다. 예를 들면, 해커는 펌웨어 및 연관된 MAC 값들을 복제하기 위해 시스템 밖의 다른 프로세서를 사용할 수 없다.
또한, 플래시 메모리 내에는 다양한 사용자 데이터 파일들(204)이 저장된다. 도시되지 않은 다양한 다른 프로그램들 및 데이터가 플래시 메모리(도시생략) 내에 저장될 수 있다. 또한, 이들 파일들은 유사 혹은 다른 방식으로 암호화되고 무결성이 검증될 수 있다.
도 3은 무결성 체크 모드에 있을 때 시스템(10)에 의해 이용되는 일부 데이터 섹터들의 구조를 도시한 것이다. 특히, BLR은 바람직하게 이 구조를 이용한다. BLR 코드(307) 자체는 BLR(201a)을 구성하기 위해 다른 데이터 사이에 개재된 것으로 나타나 있다. BLR 코드(307)가 로딩되기 전에, 어떤 구성정보가 로딩된다. 구성정보는 파일 식별(FID) 섹터들(1, 7) 내에 내포된다. BLR 코드(307) 다음엔 메시지 인증 코드 섹터(309)가 온다. MAC 섹터(309) 내에는 BLR 코드(307)의 대응 부분에 대한 MAC 값이 있다. 이것은 후술하는 도 5에서 계산되는 값과 비교되는 MAC 값이다. MAC 섹터는 MAC이 항시 섹터의 마지막 128 비트들을 점유하도록 가변 길이들의 데이터를 수용하기 위해 제로로 패딩된다. BLR 코드(307)는 BLR 부분(200a) 내 플래시 메모리(20)에 저장되고, 구성정보는 플래시 메모리(20)에 저장될 수도 있다.
도 4는 BLR 코드 및 펌웨어의 무결성을 검증하는 것을 포함한, 시스템(10)을 부팅 및 작동시키는 프로세스들을 도시한 것이다. 특히, 도 4는 펌웨어(200)의 BLR 부분(200a)에 관계된 무결성 검증 프로세스의 전반적인 개요를 포함한다. 바람직한 실시예에서, 시스템 펌웨어(200b) 및 애플리케이션 펌웨어의 검증은 BLR의 검증과는 별개이며 이 검증 후에 행해진다. 펌웨어는 BLR에 의해 한꺼번에 로딩되지 않는다는 것에 주목할 만하다. BLR은 몇 개의 모듈들만을 로딩하며(RAM 주재 펌웨어) 다른 모듈들(오버레이들)은 필요에 따라서 로딩되며 RAM 내 동일 위치(들)에 교환 된다.
시스템(10)이 기동할 때 시스템(10)은 단계 404에 보인 바와 같이, 무결성 체크 모드에서 기동할 것이다. 일반적으로, 이 모드에서 크립토 엔진(40)은 위에 논의되고 도 5에 상세히 예시된 바와 같이 모든 인입 데이터의 MAC 값을 계산한다. 이 프로세스는 인입 데이터가 가변 길이를 가질 수 있고 NAND 플래시 메모리(20) 내 임의의 위치들에 저장될 수 있을 것을 확실하게 한다. 바람직한 실시예에서 데이터는 데이터가 기입되었던 순서와 동일하게 독출될 것이며 독출되는 마지막 블록은 MAC을 내포할 것이다. MAC 비교의 결과는 언제든 체크할 펌웨어에 대해 이용될 수 있다. 도 4에 도시된 개개의 단계들이 이제 기술될 것이다.
단계 410에서, 시스템은 도 5의 흐름도에 상세히 보인 프로세스에 따라서, BLR의 무결성을 체크한다. 이것은 플래시 메모리(20)로부터의 다른 데이터가 검증되는 바와 동일한 방식으로(시스템이 무결성 체크 모드에 있는 동안), BLR이 크립토 엔진(40)을 통과할 때, 행해진다. 단계 420에서, 시스템은 단계 410에서 수행된 무결성 체크의 결과를 체크한다. 이것은, 문제가 있는지 여부를 나타내는 것인, 도 5에 도시된 프로세스(200)의 무결성 체크의 단계 270에 저장된 결과들(플래그들 혹은 이외 다른 표시자들)을 체크함으로써 행해진다. BLR이 OK가 아니면, 시스템은 단계 430에 보인 바와 같이 시스템을 제품반환위임(RMA) 상태로서 알려진 실패 분석 상태로 만들기 위해서 호스트 지령을 기다릴 것이다. 이에 대해서 그리고 이와 다른 작동상태들 혹은 모드들에 대한 보다 상세한 것에 대해서는, 전체를 이 참조문헌으로 여기 포함시키는, Holtzman 등의 "SECURE MEMORY CARD WITH LIFE CYCLE PHASES" 명칭의 함께 계류중의 미국특허출원 11/053,273을 참조할 수 있다. 그러나, BLR이 OK이면, 시스템은 단계 440에서 BLR을 실행할 것이다. 부팅이 종료되었을 때, 시스템은 도 4의 단계 440에 보인 바와 같이, BLR 자체에 내포된 명령들에 기초하여 무결성 체크 모드를 떠날 것이다. BLR은 수많은 명령들 혹은 "단계들"을 포함한다. 이들 중에서 단계 440a에서는 BLR이 크립토 엔진(40)을 정규 모드로 재구성한다. 즉 크립토 엔진(40)을 무결성 체크 모드로부터 나오게 한다. 또한 BLR은, 단계 440b에 나타낸 바와 같이, 시스템으로 하여금 시스템 펌웨어(200b)의 무결성을 체크하게 하는 명령들을 내포한다.
도 5는 도 4에 관하여 논의된 바와 같이, 무결성 검증 프로세스(410)의 흐름도이다. 이것은 시스템이 무결성 체크 모드에 있을 때 플래시 메모리(20)에 저장된 데이터를 독출하여 해시하는 전반적인 프로세스를 도시한 것이다. NAND형 플래시 메모리의 독출이 본 목적들을 위해 기술될 것이지만, 본 발명은 대량 저장 목적들을 위해 사용되는 임의의 유형의 메모리 혹은 미디어에 사용될 수 있다. 다시, MAC 값들의 사용이 예시 및 기술되지만, 그외 다른 해시 값들이 사용될 수도 있다. 도 2b의 테이블은 일반적으로 각 엔트리에 대해 대응하는 시작 바이트 및 바이트 수(도시생략)를 포함할 것이다. 일반적으로 말하여, 전체 프로세스는, 바람직한 실시예에서, 페이지 단위로 NAND의 무결성을 검증하는데 사용된다. 프로세스는 NAND에 저장된 임의의 데이터의 무결성을 검증할 것이다. 데이터가 펌웨어인 경우에, 펌웨어 무결성이 검증된다. 이러한 페이지별 비교가 바람직하나, 보다 작은 혹은 보다 큰 단위의 비교가 행해질 수도 있다.
바람직한 실시예에서 무결성 검증 프로세스는 도 5에 도시된 바와 같이 고유 계산 및 제어 루프를 이용한다. 루프는 연속적인 계산 및 비교 작동을 포함한다. 전형적으로, 검증 방법들에서, 어떤 유형의 "정확한" 혹은 예상 값이 미리 저장되고 계산된 값과 비교된다. 도 5에 도시된 프로세스를 갖는 바람직한 실시예에서, "정확한" 혹은 예상 값은 "테스트되는 데이터" 자체 내에 저장된다. 구체적으로, 기술된 바람직한 실시예들에서, 이것은 데이터 블록들의 마지막 128비트들에 있다. 독출되는 섹터의 마지막 128비트들은, 실제적인 목적들을 위해서, 정확한 섹터가 독출될 때, 이전에 저장된 MAC(혹은 이외 해시 값)에만 대응할 것이다. 마지막 이외의 페이지에서 (오 긍정(false positive) 일치가 발생할 매우 작은 확률이 실제 목적들을 위해 무시될 수 있다.
단계 210에서, NAND 블록(i)이 독출된다. 다음에 단계 215에서, 블록이 체크되고 필요하다면 ECC 회로로 선택적으로 정정된다. ECC는 공지되어 있으며 데이터 내 물리적 오류들을 정정하는데 사용될 수 있다. 무결성 검증 프로세스와 함께 ECC의 사용이 바람직하나, 이것은 필수는 아니며, 무결성은 단계 215를 포함하여 혹은 포함하지 않고 검증된다. 단계 220에서 해시 값, 바람직하게는 바람직한 실시예에서 MAC 값이 계산된다. 블록(i)에 대한 MAC이 계산될지라도, 무결성 검증 프로세스(410)에서, 결과적인 MAC은 블록들(0 내지 (i))를 커버하며 다음과 같이 수학적으로 표현될 수 있다.
MAC[0...(i)] = MAC[MAC[0...(i-1)], block(i)].
단계 220에서 계산한 후에, 단계 260에서 비교가 수행된다. 단계 260에서, 제어기의 하드웨어, 특히 FWIC(31)는 블록(i)의 마지막 128비트들을 이전에 저장된 MAC, 즉 MAC[0...(i-1)]과 비교한다. 단계 270에서, 비교의 결과는 시스템의 메모리에 저장된다. 처음에 단계 260의 비교가 수행되어, MAC 레지스터에 "저장된" 값은 실제로는 적합한 저장된 MAC 값이 아니고, 레지스터에 있게 되는 어떤 값일 것이며, 그러므로 랜덤한 것으로서 간주될 수 있다. 이어서, 비교의 결과는 단계 270에서 저장될 것이다. 제1 블록에 대해서, 비교는 체크되지 않을 것이다. 단계 230에서는, 단계 220에서 계산된 MAC 값이 제어기의 레지스터, 바람직하게는 FWIC(31)의 레지스터에 저장될 것이다. 다음에 단계 235에서, (i)의 값이 1만큼 증분되도록 카운터가 증분될 것이며 단계 210에서 다음 블록이 다시 독출될 것이다. 루프는 모든 블록들(i)이 독출될 때까지 계속될 것이다. 마지막 블록이 독출되고, 이에 따라 암호화 엔진에 의해 처리될 때, 마지막 128 비트들이 단계 230에서 저장된 MAC과 일치한다면, 비교는 일치를 가져올 것이며 단계 270에서 저장된 결과는 무결성이 하드웨어에 의해 검증되었음을 반영할 것이다. BLR의 마지막 페이지가 독출되었을 때만 일치는 무결성이 검증되었음을 나타내는데 사용될 것이다. 모든 이전의 일치들(오(false) 참 값들)은 무시될 것이다. 값들이 서로 다르다면 이것은 데이터의 무결성에 문제가 있음을 나타낼 것이다. 반대로, 값들이 같다면 데이터의 무결성이 확실시된다.
일치가 발생한 후에, MAC 값은 다시 단계 230에서 업데이트될 것이지만, 그러나 이것은 영향을 미치지 않는 루프의 용장성 작동이다. 이러한 계속적인 계산 프로세스로 하드웨어는 정의되지 않은 콘텐트 크기를 검증할 수 있게 된다. 즉, MAC 값들은 적합하게 계산될 수 있고, 블록들의 수 혹은 블록들에 의해 포함된 파일의 크기를 먼저 확인할 필요없이 무결성이 하드웨어에 의해 검증될 수 있다.
위에 기술된 프로세스는 메모리 카드의 플래시 메모리(20) 내에 주재하는 임의의 데이터에 대해서, 어떤 작동 상태들 혹은 모드들에서, 특히 무결성 체크 모드에서 사용된다. 본 발명에 따른 메모리 카드의 바람직한 실시예에서, 이 데이터의 일부는 실행시 메모리 카드를 작동시키는 펌웨어이다. 특히, 시스템(10)의 시동에서, 시스템이 이의 정규의 작동 상태 혹은 테스트 상태에 있을 때, 크립토 엔진(40)은 임의의 인입 데이터의 무결성을 검증하기 위해 자신을 초기화한다(무결성 체크 모드에서 시작함으로써). 데이터가 펌웨어인 경우가 되었을 때, 펌웨어의 무결성은 데이터가 BMU(14) 및 특히 크립토 엔진(40)을 통과할 때 검증된다. 저장된 결과(무결성 자체가 아닌)는, 일 실시예에서 ROM(13)에 저장된 코드에 명령들을 포함하는 소프트웨어에 의해 체크될 수 있다. ROM(13)에 저장된 코드가 결과를 체크하고 데이터의 흐름을 개시할 수 있을지라도, 플래시 메모리 내 펌웨어의 무결성을 검증하는데 포함되지는 않는 것에 유의한다. 즉, 코드는 펌웨어를 검증하기 위해서 펌웨어의 어떠한 수치적 계산들 혹은 데이터 조작을 수행하지 않는다. 부트 로더(BLR) 부분 및 어떤 실시예들에선 펌웨어의 다른 부분들을 포함하여, 펌웨어의 무결성을 검증하는 것은 제어기(12) 혹은 BMU(14), FWIC(31) 및 크립토 엔진(40)의 하드웨어이다.
도 5에 기술된 프로세스는 하드웨어(HW) 및 펌웨어(FW) 둘 다를 포함한다. 언급된 바와 같이, 하드웨어는 무결성 체크를 수행하고, 반면 펌웨어는 단순히, HW 무결성 체크의 끝에서 설정된 플래그를 체크한다. HW 및 SW 기능들 혹은 "루프"들은 도 6 및 도 7에 각각 보다 상세히 도시되었다.
도 6을 참조하면, 시스템은 단계 320에서 시동된다. 단계 322에서, 제어기 하드웨어는 FW 무결성 모드를 개시한다. 이것은 2개의 주요한 활동들을 포함한다. 제1 활동은 도 1의 FWIC(31)를 활성화하는 것이다. 일단 활성화된 FWIC(31)은 도 6의 나머지 단계들을 편성하고 그럼으로써 크립토 엔진(40)과 함께, 펌웨어의 BLR 부분의 무결성을 체크할 것이다. 제2 활동은 크립토 엔진(40)에 의한 사용을 위해 크립토그래픽 알고리즘을 선택하는 것을 포함한다. 앞에서 언급된 바와 같이, 크립토 엔진(40)의 하드웨어는 여러 가지 서로 다른 알고리즘들로 데이터를 암호화 및 해독하게 구성된다.
단계 328에서 제어기 하드웨어는 인입 블록의 다이제스트를 계산한다. 이 계산은 크립토 엔진(40)에 의해 수행된다. 다음에, 단계 330에서, 단계 328에서 계산된 다이제스트는 이전 다이제스트의 값과 비교된다. 앞에서 논의된 바와 같이, 값을 보유하는 레지스터는 루프의 매 반복에서 체크되고 비교될 것이지만, 그러나 첫 번째 반복에서, 레지스터 내 값은 랜덤할 것이다. 이어서, 무결성을 나타내는 플래그가 단계 332에서 설정된다. HW가 펌웨어의 BLR 부분의 무결성을 검증하였음을 확인하기 위해서, 시스템의 펌웨어에 의해 체크될 것은 이 플래그이다.
도 7은 HW가 도 6에서 무결성을 체크할 동안 행해지는 펌웨어 루프를 도시한 것이다. 단계 320에서 시스템이 시동된 후에, 단계 340에서 CPU가 초기화된다. 이어서, 구성 데이터(바람직한 실시예에서 도 3의 FID(1))는 단계 342에서 제1 유효 페이지로부터 독출된다. 다음에, 단계 344에서 시스템은 BLR(201A)의 시작 및 끝 페이지들을 추출한다. 일단 이것을 알게되면, 모든 BLR 페이지들이 독출된다. 각 페이지가 독출될 때 오류정정 코드들(ECC)이 생성된다. 앞에서 언급된 바와 같이, ECC 회로 작동은 공지되어 있고, 어떤 한계까지, 데이터 내 물리적 오류들을 정정하는데 사용될 수 있다. 무결성 검증 프로세스와 함께 ECC의 사용이 바람직하나, 필수는 아니며 ECC의 사용과 함께 혹은 사용없이 무결성이 검증된다. 페이지가 독출된 후에 이 페이지는 단계 348에서 ECC 회로로 체크되고, OK가 아니면 이 페이지는 ECC 정정 메커니즘으로 정정될 것이며, 혹은 대안적 페이지가 단계 352에서 인출(retrieve)될 것이다. 정정된 혹은 새로운 페이지가 단계 354에서 OK인 것으로 판정되면 시스템은 단계 350에서 독출할 페이지들이 더 있는지를 보기 위해 체크할 것이다. 이 경우에 해당된다면, 시스템은 단계 346으로 되돌아가 또 다른 페이지를 독출할 것이다. 정정된 혹은 대안적 카피가 단계 354에서 OK가 아님을 단계 354에서 나타낸다면, 단계 356에서 실패 상태가 표시될 것이다. 단계 350에서 판정된 더 이상의 페이지들이 없고, 실패가 표시되지 않는다면, 시스템은 단계 360에서 무결성 플래그(도 6에 도시된 바와 같은 하드웨어에 의해 설정되었던)를 체크할 것이다. HW에 의해 검증된 바와 같이 플래그가 단계 360에서 BLR이 OK임을 나타낸다면, BLR이 단계 362에서 실행될 것이다. 이 실행은 도 4의 단계 440에서 보인 것과 동일하다.
이 무결정 체크가 펌웨어의 부분, 즉 BLR에 대해서만 수행되나, 모든 펌웨어는 이러한 식으로 체크될 수 있을 것이고 이 설명은 펌웨어 부트스트랩을 채용하는 바람직한 실시예에 관계된 것임을 알 것이다. 또한, 이 출원에서 사용되는 메모리 카드라는 용어는 USB 플래시 드라이브의 폼 팩터도 포괄한다.
본 발명의 여러 면들이 본 발명의 실시예들에 관하여 기술되었을지라도, 본 발명은 첨부된 청구항들의 전 범위 내에서 보호되게 한 것임을 알 것이다.

Claims (24)

  1. 메모리 카드에 있어서,
    플래시 메모리 셀들;
    암호화 하드웨어를 구비한 제어기;
    랜덤 액세스 메모리; 및
    플래시 메모리에 저장된 펌웨어로서, 상기 펌웨어는 부트 코드를 포함하고, 상기 펌웨어는 상기 플래시 메모리 셀들로의 데이터 쓰기 및 상기 플래시 메모리 셀들로부터의 데이터 읽기를 제어함;
    을 포함하고,
    상기 펌웨어가 상기 랜덤 액세스 메모리로 업로드될 때 상기 펌웨어의 무결성이 상기 암호화 하드웨어에 의해 계산된 암호화 값들로 검증되는 것을 특징으로 하는 메모리 카드.
  2. 제1항에 있어서, 상기 메모리 카드는 초기 부팅 프로세스의 끝에서, 상기 펌웨어 무결성이 검증되었음을 나타내는 플래그를 체크하기 위한 명령들을 더 포함하는, 메모리 카드.
  3. 제1항에 있어서, 상기 펌웨어의 무결성은 상기 펌웨어가 상기 랜덤 액세스 메모리에 업로딩될 때 계산된 해시 값들로 검증되는, 메모리 카드.
  4. 제1항에 있어서, 상기 펌웨어의 무결성을 검증하는 것은 상기 펌웨어에 대한 MAC 값들을 이용하는 것을 포함하는, 메모리 카드.
  5. 제1항에 있어서, 상기 플래시 메모리 셀들은 NAND 종류로 이루어지고, 중간 MAC 값이 한 그룹의 NAND 페이지들에 대해 계산되는, 메모리 카드.
  6. 제5항에 있어서, 상기 무결성을 검증하는 것은 상기 한 그룹의 페이지들에 대한 상기 MAC 값들을 또 다른 한 페이지 혹은 한 그룹의 페이지들에 저장된 MAC 값과 비교하는 것을 더 포함하는, 메모리 카드.
  7. 제1항에 있어서, 상기 펌웨어는 부트-로더 부분 및 주 부분을 포함하는, 메모리 카드.
  8. 제7항에 있어서, 상기 부트 로더 부분의 무결성은 시스템 레벨 펌웨어가 상기 랜덤 액세스 메모리에 업로딩될 때 상기 제어기 암호화 하드웨어에 의해 계산된 암호화 값들로 검증되는, 메모리 카드.
  9. 제1항에 있어서, 상기 제어기는 상기 펌웨어의 무결성 체크를 관리하는 펌웨어 무결성 회로를 포함하는, 메모리 카드.
  10. 제1항에 있어서, 상기 펌웨어의 무결성을 검증하는 것은 상기 펌웨어에 대한 SHA-1 값들을 이용하는 것을 포함하는, 메모리 카드.
  11. 휴대용 플래시 메모리 저장 장치에 있어서,
    플래시 메모리;
    상기 플래시 메모리에 상주하는 데이터로서, 상기 데이터는 사용자 파일들 및 펌웨어를 포함하고, 상기 데이터의 일부는 암호화된 포맷으로 저장될 수 있고, 상기 펌웨어는 부트 코드를 포함함; 및
    상기 플래시 메모리로 전송 중에 데이터를 암호화하는 것과 상기 플래시 메모리로부터 데이터를 복호화하는 것을 포함하는 데이터 조작을 수행하는 암호 엔진으로서, 상기 암호 엔진의 데이터 조작은 상기 펌웨어의 무결성을 검증하는데 또한 사용됨;
    을 포함하는 것을 특징으로 하는 휴대용 플래시 메모리 저장 장치.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 메모리 카드에 있어서,
    플래시 메모리를 포함하는 대량 저장 매체;
    읽기 전용 메모리;
    부트 코드를 포함하는 펌웨어;
    상기 읽기 전용 메모리에 상주하는 코드; 및
    상기 펌웨어의 무결성을 검증하는데 사용되는 암호 엔진;
    을 포함하는 것을 특징으로 하는 메모리 카드.
  17. 제16항에 있어서, 상기 읽기 전용 메모리 및 상기 읽기 전용 메모리에 상주하는 상기 코드는 상기 펌웨어의 적어도 일부분의 무결성을 검증하는데 사용되지 않는 것을 특징으로 하는 메모리 카드.
  18. 제17항에 있어서, 상기 읽기 전용 메모리에 의해 검증되지 않는 상기 펌웨어의 부분은 부트 로더를 포함하는 것을 특징으로 하는 메모리 카드.
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
KR1020087006251A 2005-09-14 2006-09-13 메모리 카드 제어기 펌웨어의 하드웨어 드라이버 무결성체크 KR100973733B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US71734705P 2005-09-14 2005-09-14
US60/717,347 2005-09-14
US11/284,623 US7536540B2 (en) 2005-09-14 2005-11-21 Method of hardware driver integrity check of memory card controller firmware
US11/285,600 US8966284B2 (en) 2005-09-14 2005-11-21 Hardware driver integrity check of memory card controller firmware
US11/284,623 2005-11-21
US11/285,600 2005-11-21

Publications (2)

Publication Number Publication Date
KR20080045708A KR20080045708A (ko) 2008-05-23
KR100973733B1 true KR100973733B1 (ko) 2010-08-04

Family

ID=37597492

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087006251A KR100973733B1 (ko) 2005-09-14 2006-09-13 메모리 카드 제어기 펌웨어의 하드웨어 드라이버 무결성체크

Country Status (5)

Country Link
EP (2) EP1934880A2 (ko)
JP (2) JP5089593B2 (ko)
KR (1) KR100973733B1 (ko)
CN (1) CN102142070B (ko)
WO (1) WO2007033322A2 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7748031B2 (en) 2005-07-08 2010-06-29 Sandisk Corporation Mass storage device with automated credentials loading
JP2014191372A (ja) * 2013-03-26 2014-10-06 Mega Chips Corp 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム
WO2016071743A1 (en) * 2014-11-07 2016-05-12 Elliptic Technologies Inc. Integrity protection for data storage
CN104809398A (zh) * 2015-04-21 2015-07-29 深圳怡化电脑股份有限公司 密码键盘引导程序固件防篡改方法及装置
KR101795457B1 (ko) * 2016-09-27 2017-11-10 시큐리티플랫폼 주식회사 보안 기능이 강화된 디바이스의 초기화 방법 및 디바이스의 펌웨어 업데이트 방법
KR101887974B1 (ko) * 2016-12-01 2018-08-13 현대오트론 주식회사 엔진제어기의 안전부팅을 위한 시스템 및 방법
KR102089435B1 (ko) * 2018-04-11 2020-03-16 고려대학교 세종산학협력단 안전한 usb 장치를 보장하는 부트 방법
KR102545102B1 (ko) * 2018-05-15 2023-06-19 현대자동차주식회사 차량용 제어기 및 그 업데이트 방법
KR102286794B1 (ko) * 2018-08-16 2021-08-06 경희대학교 산학협력단 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법
JP6808793B1 (ja) * 2019-09-20 2021-01-06 レノボ・シンガポール・プライベート・リミテッド 情報処理装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004092886A2 (en) * 2003-04-08 2004-10-28 Qualcomm Incorporated Associating software with hardware using cryptography

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH039427A (ja) * 1989-06-07 1991-01-17 Koufu Nippon Denki Kk マイクロプログラム制御装置
US5327305A (en) 1992-08-14 1994-07-05 Conner Peripherals, Inc. Tape format detection system
US6708274B2 (en) * 1998-04-30 2004-03-16 Intel Corporation Cryptographically protected paging subsystem
US6735696B1 (en) * 1998-08-14 2004-05-11 Intel Corporation Digital content protection using a secure booting method and apparatus
JP3219064B2 (ja) * 1998-12-28 2001-10-15 インターナショナル・ビジネス・マシーンズ・コーポレーション デジタルデータ認証システム
EP1161716B1 (en) * 1999-02-15 2013-11-27 Hewlett-Packard Development Company, L.P. Trusted computing platform
AUPQ321699A0 (en) * 1999-09-30 1999-10-28 Aristocrat Leisure Industries Pty Ltd Gaming security system
US20030041242A1 (en) * 2001-05-11 2003-02-27 Sarver Patel Message authentication system and method
US6907522B2 (en) * 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
US20040025027A1 (en) * 2002-07-30 2004-02-05 Eric Balard Secure protection method for access to protected resources in a processor
US7082525B2 (en) * 2002-10-02 2006-07-25 Sandisk Corporation Booting from non-linear memory
US7246266B2 (en) * 2002-11-21 2007-07-17 Chris Sneed Method and apparatus for firmware restoration in modems
JP4467246B2 (ja) * 2003-03-13 2010-05-26 パナソニック株式会社 メモリカード
US7491122B2 (en) * 2003-07-09 2009-02-17 Wms Gaming Inc. Gaming machine having targeted run-time software authentication
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
US20050190393A1 (en) * 2004-02-27 2005-09-01 Agilent Technologies, Inc. Programmable controller system and method for supporting various operational modes in peripheral devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004092886A2 (en) * 2003-04-08 2004-10-28 Qualcomm Incorporated Associating software with hardware using cryptography

Also Published As

Publication number Publication date
WO2007033322A2 (en) 2007-03-22
WO2007033322A3 (en) 2007-05-10
JP2009508272A (ja) 2009-02-26
KR20080045708A (ko) 2008-05-23
JP5411896B2 (ja) 2014-02-12
CN102142070A (zh) 2011-08-03
EP2320345A3 (en) 2011-08-10
EP1934880A2 (en) 2008-06-25
EP2320345A2 (en) 2011-05-11
JP2011210278A (ja) 2011-10-20
CN102142070B (zh) 2013-11-06
JP5089593B2 (ja) 2012-12-05

Similar Documents

Publication Publication Date Title
US8966284B2 (en) Hardware driver integrity check of memory card controller firmware
KR100973733B1 (ko) 메모리 카드 제어기 펌웨어의 하드웨어 드라이버 무결성체크
CN107667499B (zh) 带密钥散列消息认证码处理器、方法、系统和指令
US7475254B2 (en) Method for authenticating software using protected master key
US9298947B2 (en) Method for protecting the integrity of a fixed-length data structure
US11693754B2 (en) Aggregate GHASH-based message authentication code (MAC) over multiple cachelines with incremental updates
WO2013012461A1 (en) Secure boot information with validation control data specifying a validation technique
JP2004503006A (ja) 悪質コード検出方法
US20170060775A1 (en) Methods and architecture for encrypting and decrypting data
TWI524208B (zh) Encryption and Decryption of Function Library of Open System
WO2006071725A2 (en) Memory system with in-stream data encryption/decryption
US8311212B2 (en) Method of processing data protected against attacks by generating errors and associated device
US8407479B2 (en) Data authentication and tamper detection
EP0962850A2 (en) A method for protecting embedded system software and embedded system
US9213864B2 (en) Data processing apparatus and validity verification method
JP2011123229A (ja) プログラムコード暗号化装置及びプログラム
CN111357003A (zh) 预操作系统环境中的数据保护
Chaves et al. Reconfigurable cryptographic processor
JP2009080515A (ja) セキュアなロードシーケンスを提供する方法および装置
CN117610004A (zh) 固件校验方法、系统启动方法、装置、系统、设备及介质
CN116982047A (zh) 安全密码协处理器
JP2024513716A (ja) 読み取り専用メモリ(rom)のセキュリティ
TW202326482A (zh) 在一開蓋竄改事件中使一安全啟動失敗的電腦系統
JP2004280678A (ja) データ処理装置、およびデータ処理方法
JP2004240719A (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
LAPS Lapse due to unpaid annual fee