KR102095614B1 - 메모리 보호 - Google Patents

메모리 보호 Download PDF

Info

Publication number
KR102095614B1
KR102095614B1 KR1020157002157A KR20157002157A KR102095614B1 KR 102095614 B1 KR102095614 B1 KR 102095614B1 KR 1020157002157 A KR1020157002157 A KR 1020157002157A KR 20157002157 A KR20157002157 A KR 20157002157A KR 102095614 B1 KR102095614 B1 KR 102095614B1
Authority
KR
South Korea
Prior art keywords
memory
protected
zone
protection
volatile memory
Prior art date
Application number
KR1020157002157A
Other languages
English (en)
Other versions
KR20150033695A (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 KR20150033695A publication Critical patent/KR20150033695A/ko
Application granted granted Critical
Publication of KR102095614B1 publication Critical patent/KR102095614B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • 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/77Protecting 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 smart cards
    • 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/79Protecting 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 semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/22Safety or protection circuits preventing unauthorised or accidental access to memory cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list

Landscapes

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

Abstract

집적-회로 장치(1)는 프로세서(7), 실행 코드를 저장하는 플래시 메모리(13), 및 메모리 보호 로직(9)을 포함한다. 메모리 보호 로직(9)은 메모리(13)의 보호된 구역에 대한 판독 보호 플래그의 상태를 결정하고; 프로세서(7)에 의한 메모리 판독 요청을 검출하고; 판독 요청이 메모리(13)의 보호된 구역 내 어드레스에 대한 것인지 여부를 결정하고; 프로세서(7)가 메모리(13)의 보호된 구역에 저장된 코드를 실행하면서 판독 요청을 발행하였는지 여부를 결정하고; 만일 보호된 구역에 대한 판독 보호 플래그가 설정되어 있으면, 하나 이상의 액세스 조건 중 적어도 하나가 충족되지 않는 한 보호된 구역 내 어드레스에 대한 판독 요청을 거부하도록 구성되며, 여기서 액세스 조건 중 적어도 하나는 프로세서(7)가 보호된 구역에 저장된 코드를 실행하면서 판독 요청을 발행한 것이다.

Description

메모리 보호{MEMORY PROTECTION}
본 발명은 집적 회로 장치에서 메모리 보호에 관한 것이다.
마이크로컨트롤러 또는 시스템-온-칩 장치는 일반적으로 실행 가능한 코드를 메모리에 저장한다. 이는 자체의 메모리 내에 칩 제조자에 의해 기록된 어떤 코드(예를 들면, 오퍼레이팅 시스템 또는 펌웨어 모듈) 및 고객 또는 사용자에 의해 기록된 다른 코드(예를 들면, 소프트웨어 애플리케이션)를 저장하였을 수 있다. 이들 코드는 종종 EEPROM 또는 플래시와 같은 비휘발성 메모리에 저장되기도 할 것이다.
사용자 코드 또는 외부의 디버깅 인터페이스가 칩 제조자에 의해 기록된 코드를 판독 또는 덮어쓸 수 없게 방지하면서, 칩 제조자의 코드에 대해 메모리 액세스를 제한하지 않는 것이 바람직하다. 이것은 칩 제조자의 코드가 임의의 상대방이 액세스할 수 있기를 원하지 않는 영업 비밀을 담고 있기 때문일 수 있다. 이것은 또한 사용자의 코드에서의 버그에 의한 칩 제조자의 코드의 의도하지 않은 손상을 방지하는데 도움이 될 수 있다.
미국 제 8,051,263 호는 메모리의 특정 구역에 대한 일련의 구성 가능한 메모리 보호 속성에 따라서 메모리 액세스 요청을 선택적으로 허가 또는 거부하는 메모리 보호 유닛을 기술하고 있다. 그 구역으로의 액세스는 실행 유닛이 관리된 동작 모드(a privileged mode of operation) 또는 비관리된 동작 모드에서 동작하고 있는지 여부에 달려 있을 수 있다.
그러한 메커니즘은 만일 사용자 코드가 비관리된 모드에서 실행되었을 경우 기밀을 요하는 코드를 담고 있는 메모리의 구역이 사용자 코드에 의해 판독되지 않게 보호하는데 사용될 수 있다.
그러나, 관리된 동작 모드에 있는 동안 악의적인 공격자가 프로세서로 하여금 기밀을 요하는 코드를 메모리로부터 판독하고, 그런 다음 그 콘텐츠를 공격자에게 출력하게 하는 것이 가능할 수 있다. 더욱이, 모든 프로세서가 관리된 및 비관리된 실행 모드를 지원하지는 않는다.
그러므로 본 발명은 상이한 접근 방법을 이용한다.
제 1 양태에서, 본 발명은 프로세서, 실행가능한 코드를 저장하기 위한 메모리, 및 메모리 보호 로직을 포함하는 집적-회로 장치를 제공하며, 여기서 메모리 보호 로직은,
메모리의 보호된 구역에 대한 판독 보호 플래그의 상태를 결정하도록 구성되고,
프로세서에 의한 메모리 판독 요청을 검출하도록 구성되고,
판독 요청이 메모리의 보호된 구역 내 어드레스에 대한 것인지 여부를 결정하도록 구성되고,
프로세서가 메모리의 보호된 구역에 저장된 코드를 실행하면서 판독 요청을 발행하였는지 여부를 결정하도록 구성되고,
만일 보호된 구역에 대한 판독 보호 플래그가 설정되어 있으면, 하나 이상의 액세스 조건 중 최소한 하나가 충족되지 않는 한 보호된 구역 내 어드레스에 대한 판독 요청을 거부하도록 구성되며, 여기서 액세스 조건 중 하나는 프로세서가 보호된 구역에 저장된 코드를 실행하면서 판독 요청을 발행하는 것이다.
제 2 양태에서, 본 발명은 프로세서 및 실행 가능한 코드를 저장하는 메모리를 포함하는 집적-회로 장치에서 메모리 액세스를 제어하는 방법을 제공하며, 이 방법은,
메모리의 보호된 구역에 대한 판독 보호 플래그의 상태를 결정하는 단계와,
프로세서에 의한 메모리 판독 요청을 검출하는 단계와,
판독 요청이 메모리의 보호된 구역 내 어드레스에 대한 것인지 여부를 결정하는 단계와,
프로세서가 메모리의 보호된 구역에 저장된 코드를 실행하면서 판독 요청을 발행하였는지 여부를 결정하는 단계와,
만일 보호된 구역에 대한 판독 보호 플래그가 설정되어 있으면, 하나 이상의 액세스 조건 중 최소한 하나가 충족되지 않는 한 보호된 구역 내 어드레스에 대한 판독 요청을 거부하는 단계를 포함하며, 여기서 액세스 조건 중 하나는 프로세서가 보호된 구역에 저장된 코드를 실행하면서 판독 요청을 발행하는 것이다.
또 다른 양태에서, 본 발명은 프로세서 및 실행 가능한 코드를 저장하는 메모리를 포함하는 집적-회로 장치에서 메모리 액세스를 제어하는 방법을 제공하며, 이 방법은,
메모리의 보호된 구역에 대한 판독 보호 플래그가 설정되어 있다고 결정하는 단계와,
프로세서에 의한 메모리 판독 요청을 검출하는 단계와,
판독 요청이 메모리의 보호된 구역 내 어드레스에 대한 것이라고 결정하는 단계와,
프로세서가 메모리의 보호된 구역에 저장된 코드를 실행하면서 판독 요청을 발행한 것이라고 결정하는 단계와,
판독 요청을 허용하는 단계를 포함한다.
그러므로, 본 발명에 따르면, 프로세서가 메모리의 보호된 구역으로의 판독 액세스를 요청할 때 프로세서에 의해 실행되는 코드의 위치가 그 요청을 허용할지 여부를 결정하도록 사용된다는 것이 본 기술에서 통상의 지식을 가진 자들에 의해 인식될 것이다. 보호된 구역 외부에 저장된 코드로부터 발생하는 요청은 (만일 판독 보호 플래그가 적절하게 설정되어 있으면) 거부될 수 있고, 반면에 보호된 구역 자체 내에 저장된 코드로부터의 요청은 허용된다. ARM (RTM)의 프로세서 아키텍처와 같은 많은 프로세서 아키텍처의 경우, 코드는 그 코드 자체가 저장되어 있는 구역으로의 데이터 판독 요청을 발행하는 것이 가능하여, 프로세서는 그 코드에 포함된 콘텐츠에 액세스할 수 있다는 사실이 중요하다.
보호는 바람직하게 프로세서와 무관하게 기능하도록 구성된 메모리 보호 로직에 의해 실시된다. 메모리 보호 로직은 바람직하게 프로세서로부터 분리된 하드웨어 로직을 포함한다. 그러므로, 메모리 보호 로직은 프로세서 내부의 관리자 모드에 의존하는 보호보다 악의적인 소프트웨어 코드에 의한 속임에 덜 걸리기 쉽다.
칩 제조자는 자기의 코드를 보호된 구역 내에 편리하게 저장할 수 있으며 자기 자신의 코드에 대하여 제한없는 메모리 액세스를 유지하면서, 고객의 코드가 칩 제조자의 코드를 판독하지 못하도록 하기 위하여 판독 보호 플래그를 설정할 수 있다. 구성 데이터와 같이 다른 기밀을 요하는 정보 또한 보호된 구역에 저장될 수 있다.
바람직하게 메모리 보호 로직은 만일 보호된 구역에 대한 판독 보호 플래그가 설정되어 있지 않으면 보호된 구역 내 어드레스에 대한 판독 요청을 허용하도록 구성된다. 이것은 장치 및 그의 소프트웨어의 초기 개발 단계 동안 유용할 수 있다. 유사하게, 메모리 보호 로직은 만일 기록 보호 플래그가 설정되어 있지 않으면 보호된 구역 내 어드레스에 대한 기록 요청을 허용하도록 바람직하게 구성된다.
바람직하게 메모리 보호 로직은 만일 보호된 구역에 대한 판독 보호 플래그가 설정되어 있으면, 프로세서가 보호된 구역에 저장된 코드를 실행하면서 판독 요청을 발행(이 경우에는 판독 요청이 허용됨)하지 않는 한, 보호된 구역 내 어드레스에 대한 판독 요청을 거부하도록 구성된다. 그러한 바람직한 실시예는 오직 하나의 전술한 액세스 조건을 갖는다. 그러나, 그럼에도 다른 실시예는 복수의 액세스 조건을 제공하며, 그 중 임의의 조건은 판독 보호 플래그를 효과적으로 무시할 수 있는데, 예를 들면, 만일 프로세서가 ROM에 저장된 제조자의 부트-로더 프로그램을 실행하면서 판독 요청을 발행하였다면 장치는 보호된 구역의 판독을 허용한다는 것으로 생각할 수 있다.
또한 유사하게 메모리 보호 로직은 보호된 구역에 대한 기록 보호 플래그의 상태를 결정하며 그리고 만일 보호된 구역에 대한 판독 보호 플래그가 설정되어 있으면, 프로세서가 보호된 구역에 저장된 코드를 실행하면서 기록 요청을 발행하지 않는 한 보호된 구역 내 어드레스에 대한 기록 요청을 거부하도록 구성될 수 있다. 판독 보호 플래그는 기록 보호 플래그로서도 작용할 수 있고, 또는 이들 플래그는 두 개의 별개의 플래그일 수 있다.
일련의 바람직한 실시예에서, 이 메모리는 플래시와 같은 비휘발성 메모리이다. 프로세서는 코드를 실행하기 위해 비휘발성 메모리로부터 직접 페치할 수 있거나, 그렇지 않으면 일부 실시예에서, 그 코드의 적어도 일부가 (예를 들면, 휘발성 메모리에) 캐시될 수 있다. 만일 장치가 그러한 캐시를 포함하고 있으면, 본 출원에서 보호된 구역에 저장된 코드를 실행한다는 말은 그러한 코드의 캐시된 카피를 실행하는 것을 포함한다.
다른 실시예에서, 메모리는 실행 가능한 코드를 위해 예약된 RAM의 일부와 같은 휘발성 메모리일 수 있으며, 보호된 구역은 휘발성 메모리의 일 구역이다. 장치의 전원을 켤 때 실행 가능한 코드는 (예를 들면, ROM 또는 플래시로부터) 그러한 메모리로 카피될 수 있다. 대안으로, 코드 또는 개별 명령어의 부분들은 장치가 사용 중에 있을 때 필요에 따라 휘발성 메모리의 보호된 구역으로 카피될 수 있다.
프로세서 및 메모리는 하나 이상의 버스에 접속될 수 있다. 메모리 보호 로직은 또한 이들 버스들 중 적어도 하나에 접속될 수 있다. 메모리 보호 로직은 바람직하게 메모리로의 모든 액세스(예를 들면, 모든 판독, 기록 및 명령어-페치 동작들)를 모니터하도록 구성된다.
메모리 보호 로직은 메모리 액세스 요청의 직전의 명령어-페치 동작의 어드레스가 보호된 구역 내에 있었던 것인지의 여부를 결정함으로써 프로세스가 메모리의 보호된 구역에 저장된 코드를 실행하면서 판독 요청을 발행하였는지 여부를 결정할 수 있다. 메모리 보호 로직은 페치된 명령어의 어드레스가 보호된 구역에 있는지 아닌지 여부에 따라서 매 명령어-페치 동작에 관하여 레지스터를 설정하도록 구성될 수 있다. 레지스터는 명령어 페치의 어드레스가 보호된 구역에 있는지 아닌지 여부에 따라서 설정되는 이진 플래그를 포함할 수 있다.
메모리 보호 로직은 메모리 버스의 트랜잭션-타입 정보를 사용하여 명령어-페치 동작을 식별(예를 들면, 명령어-페치 동작을 판독 요청과 구별)하도록 구성될 수 있다. 대안으로, 메모리 보호 로직은 프로세서 핀의 상태를 결정함으로써, 또는 (예를 들면, 별개의 데이터-페치 및 명령어-페치 버스를 갖는 장치에서) 페치 명령어를 전달하는 버스의 아이덴티티를 결정함으로써 명령어-페치 동작을 식별하도록 구성될 수 있다. ARM(RTM)의 Cortex-MO 프로세서를 이용할 때, 메모리 보호 로직은 Cortex-MO로부터의 HPROT[0] (Data/Opcode) 신호를 이용하여 오피코드 페치와 데이터 액세스 간을 구별할 수 있다.
보호된 구역은 복수의 이산적인 영역 또는 어드레스 범위를 포함할 수 있다. 그러나, 보호된 구역은 구현 로직을 단순화할 수 있는 단일의 연속 어드레스 범위로 정의되는 것이 바람직하다. 일부의 바람직한 실시예에서, 보호된 구역은 가변적이며 장치에 저장된, 예를 들면 비휘발성 메모리 내 구성 데이터로서 저장된 하나 이상의 어드레스로 정의된다.
보호된 구역은 사전결정된 일정한 어드레스와 메모리 어드레스 범위 내의 가변 지점 사이에서 연장할 수 있다. 일정한 어드레스는 편리하게 메모리의 기준 또는 끝 어드레스일 수 있고, 또는 장치의 전체 메모리 어드레스 공간의 경우에도, 예를 들면, 제로(0x0000 0000)일 수 있다. 그러므로 구역은 메모리 내부에서 보호된 구역의 변수 끝을 정의하는 어드레스인, 장치에 저장된 단일 값에 의해 간단히 명시될 수 있다.
이후 메모리 보호 유닛은 어드레스가 사전결정된 일정한 어드레스와 가변 메모리 어드레스 사이인지 아닌지 여부를 결정함으로써 판독 요청이 메모리의 보호된 구역 내 어드레스에 대한 것인지 여부를 결정하도록 구성될 수 있다. 이러한 동작은 비교적 소수의 로직 게이트를 이용하여 구현될 수 있다.
전술한 보호된 메모리 구역이 비휘발성 메모리 내에 있는 실시예에서, 장치는 또한 RAM과 같은 휘발성 메모리를 포함할 수 있다. 메모리 보호 로직은 만일 휘발성 메모리의 보호된 구역에 대한 판독 보호 플래그가 설정되어 있으면, 프로세스가 비휘발성 메모리의 보호된 구역에 저장된 코드를 실행하면서 판독 요청을 발행하지 않는 한 휘발성 메모리의 보호된 구역 내 어드레스에 대한 판독 요청을 거부하도록 추가적으로 구성될 수 있다. 이러한 방식으로, 보호된 RAM의 구역은 (예를 들면, 힙 스토리지(heap storage)용) 비휘발성 메모리의 보호된 구역에 저장된 코드에 의해 사용되면서, 보호된 구역 외부에 저장된 코드에 의한 판독 액세스로부터 보호받을 수 있다. 이로써 칩 제조자에 의해 기록된 코드가 RAM에 저장될 수 있는 기밀을 요하는 정보를 보호할 수 있다.
유사하게, 메모리 보호 로직은 만일 휘발성 메모리의 보호된 구역에 대한 기록 보호 플래그가 설정되어 있으면, 프로세스가 비휘발성 메모리의 보호된 구역에 저장된 코드를 실행하면서 기록 요청을 발행하지 않는 한 휘발성 메모리의 보호된 구역 내 어드레스에 대한 기록 요청을 거부하도록 구성될 수 있다. 이러한 방식으로, 보호된 구역 외부의 비휘발성 메모리에 저장된 고객 코드는 의도하지 않거나 악의적으로 비휘발성 메모리의 보호된 구역 내 코드에 속하는 휘발성 데이터를 변경 또는 덮어쓰는 것이 금지될 수 있다.
비휘발성 메모리 보호 플래그는 휘발성 메모리 보호 플래그로서도 작용할 수 있고, 또는 휘발성 메모리 플래그는 하나 이상의 별개의 플래그를 포함할 수 있다.
전술한 실시예들 중 임의의 실시예에서, 장치는 외부 디버거 또는 소프트웨어 로더에 의한 메모리 액세스를 가능하게 하는 인터페이스(예를 들면, 하나 이상의 핀)를 포함할 수 있다. 본 발명의 바람직한 실시예에서, 메모리 보호 로직은 보호된 구역에 대한 디버깅 보호 플래그가 설정되어 있으면 그러한 인터페이스를 통해 수신되는 휘발성 또는 비휘발성 메모리의 일부 또는 모든 보호된 구역 내 어드레스에 대한 판독 요청을 거부하도록 구성된다. 유사하게 휘발성 또는 비휘발성 메모리의 보호된 구역으로의 기록 액세스 및/또는 보호된 구역으로부터 명령어 페치를 위한 보호가 제공될 수 있다. 메모리 보호 로직은 디버거가 장치에서 메모리 버스의 버스 마스터로서 작용하는 때를 결정함으로써 메모리 액세스 요청이 디버깅 인터페이스로부터 발생하는 것으로서 식별하도록 구성될 수 있다. 프로세서가 ARM(RTM)의 Cortex-MO일 때, 프로세서는 Cortex-MO로부터 HMASTER 신호를 이용하여 프로세서 코어와 디버거 트랜잭션 간을 구별할 수 있다.
메모리 보호 로직은 또한 실행 가능한 코드를 위한 메모리의 사용자 구역에 대한 판독 보호 플래그의 상태를 결정하도록 구성될 수 있다. 이러한 사용자 구역은 이것으로 배제하지 않지만, 어드레스 공간 내 보호된 코드 구역에 인접한 일부 또는 모든 메모리를 포함할 수 있다. 메모리 보호 로직은 만일 사용자 구역에 대한 판독 보호 플래그가 설정되어 있으면 디버깅 인터페이스로부터 수신된 사용자 구역 내 어드레스에 대한 판독 및/또는 기록 요청을 거부하도록 구성될 수 있다. 이러한 방식으로, 고객 또는 다른 사용자는 그 사용자 애플리케이션 코드를 예를 들면, 기밀 유지의 목적을 위해 제 3자에 의한 무단 액세스로부터 보호할 수 있다.
일부 실시예에서, 장치는 무선 송신기 및/또는 수신기(즉, 라디오-온-어- 칩(a radio-on-a-chip))과 같은 집적된 무선 통신 로직을 포함한다. 무선 프로토콜 스택을 시행하는 코드를 포함하는 펌웨어 모듈은 코드 메모리의 보호된 구역에 저장될 수 있다. 펌웨어 모듈과 인터페이스하는 소프트웨어 애플리케이션은 보호된 구역의 외부에 저장될 수 있다.
본 발명의 실시예는 전통적인 오퍼레이팅 시스템을 갖지 않지만, 사용자가 프로세서 상에서 직접 실행을 위한 네이티브 코드(native code)를 개발할 수 있게 하는 장치에 특히 적합할 수 있다. 이것은 그러한 장치가 오퍼레이팅 시스템에 의존하여 메모리 액세스를 제어하며 그리고 장치 제조자가 장치에 설치될 수 있는 임의의 기밀 소프트웨어 라이브러리 또는 모듈을 보호할 수 없기 때문이다.
본 발명의 임의의 실시예에서, 판독 및/또는 기록 보호 플래그는 바람직하게 비휘발성 메모리에 저장된다. 사용 시, 플래그는 물론 레지스터 또는 RAM에서 캐시될 수 있다. 보호 플래그는 구성 설정 치들의 큰 집합 내의 그저 한 요소일 수 있다. 보호 플래그는 임의의 적절한 방식으로 인코딩될 수 있다. 일부 실시예에서, 각각의 그러한 보호 플래그는 이진 플래그 또는 비트 필드로서 저장된다.
보호 플래그 중 하나 이상은 비휘발성 메모리의 보호-구성 구역에 저장될 수 있다. 바람직하게 장치는 보호-구성 구역의 임의의 부분이 소거된 상태에 있지 않는 한 그 부분에 기록하는 것을 금지하도록 구성된 비휘발성 메모리 제어 로직을 포함한다. 바람직하게 비휘발성 메모리 제어 로직은 또한 비휘발성 메모리의 보호된 구역이 소거된 상태에 있는 경우에만 보호-구성 구역이 소거될 수 있도록 구성된다.
이러한 방식으로, 보호 플래그는 비휘발성 메모리의 보호된 구역에 저장된 임의의 데이터를 먼저 소거하지 않고는 재기록될 수 없다. 그래서 보호된 구역에 저장된 기밀을 요하는 실행 가능한 코드는 비휘발성 메모리에 대한 판독 보호 플래그를 리셋함으로써 간단히 판독될 수 없다.
이러한 사상은 그 자체의 권리에서 신규하며 독창적이다. 그러므로, 다른 양태에서, 본 발명은 프로세서, 비휘발성 메모리, 비휘발성 메모리 제어 로직, 및 메모리 보호 로직을 포함하는 집적-회로 장치를 제공하며, 여기에서,
메모리 보호 로직은 비휘발성 메모리의 보호-구성 구역에 저장된 보호 구성 데이터에 의존하여 비휘발성 메모리의 보호 가능한 구역으로의 액세스를 제어하도록 구성되고,
비휘발성 메모리 제어 로직은 보호-구성 구역의 임의의 부분이 소거된 상태에 있지 않는 한 그 부분에 기록하기를 금지하도록 구성되고,
비휘발성 메모리 제어 로직은 보호 가능한 구역이 소거된 상태에 있는 경우에만 보호-구성 구역이 소거될 수 있도록 구성된다.
다른 양태에서, 본 발명은 프로세서 및 비휘발성 메모리를 포함하는 집적-회로 장치에서 메모리 액세스를 제어하는 방법을 제공하며, 이 방법은,
비휘발성 메모리의 보호-구성 구역에 저장된 보호 구성 데이터에 의존하여 비휘발성 메모리의 보호 가능한 구역으로의 액세스를 제어하는 단계와,
보호-구성 구역의 임의의 부분이 소거된 상태에 있지 않는 한 그 부분에 기록하기를 금지하는 단계와,
보호 가능한 구역이 소거된 상태에 있는 경우에만 보호-구성 구역이 소거될 수 있도록 하는 단계를 포함한다.
전술한 양태 및 이들 실시예들의 특징은 해당하는 모든 곳에서 이들 양태의 실시예들의 옵션의 특징일 수 있다. 특히, 보호 가능한 구역은 앞에서 기술된 바와 같이 비휘발성 메모리의 보호된 구역일 수 있으며, 보호 구성 데이터는 앞에서 기술된 바와 같은 하나 이상의 보호 플래그를 포함할 수 있다.
바람직하게, 비휘발성 메모리 제어 로직은 프로세서와 관계 없이 동작한다. 비휘발성 메모리 제어 로직은 바람직하게 프로세서와 별개인 이산적인 로직 게이트를 포함한다. 이러한 방식으로, 악의적이거나 부주의한 프로그래머는 비휘발성 메모리 제어 로직을 바이패스하는 프로세서 상의 코드를 실행시킬 수 없다. 마찬가지로 메모리 보호 로직은 바람직한 실시예의 프로세서와 무관하다.
미국 제 6952778 호는 일련의 규칙에 따라서 내장형 메모리 내 메모리 블록에 대한 판독 및/또는 기록 보호를 제공하는 마이크로컨트롤러를 기술한다. 이러한 규칙들은 제각기 보안 레벨을 메모리 블록에 할당하며 관리용 비휘발성 메모리에 저장된다. 일단 초기에 최종 사용자의 요건에 따라서 프로그램되면, 블록에 대한 보안 레벨은 관리용 비휘발성 메모리가 소거되고 마이크로컨트롤러가 다시 초기화되지 않는 한 오로지 높아질 수 있을 뿐이다. 이것은 사용자-정의된 디폴트 보안 레벨이 복원되는 결과를 가져온다.
그러나, 그러한 접근 방법은 메모리 블록이 적절하게 보호되게 하기 위해 디폴트 보안 레벨의 성공적인 복원에 달려 있다. 만일 공격자가 마이크로컨트롤러를 다시 초기화하는 프로세스를 방해할 수 있다면, 메모리의 콘텐츠는 보호되지 않은 채로 있으며 공격자에 의해 판독 가능할 수 있다.
이에 반하여, 본 발명의 바람직한 실시예는 임의의 기밀을 요하는 정보가 먼저 장치로부터 소거된 경우에만 보호 구성 데이터가 확실하게 리셋될 수 있도록 전용의 비휘발성 메모리 제어 로직 및 메모리 보호 로직을 사용한다.
비휘발성 메모리 제어 로직은 비휘발성 메모리 제어 로직에 의해 제공되는 보호-구성 구역을 소거하기 위한 유일한 메커니즘이 보호 가능한 구역 및 보호-구성 구역을 둘 다 소거하는 명령어이도록 구성될 수 있다. 이 제어 로직은 장치 내 모든 비휘발성 메모리를 소거하라는 명령어일 수 있다.
만일 보호-구성 구역 및 보호 가능한 구역이 메모리의 상이한 페이지 또는 소거 가능한 블록을 포함하면, 비휘발성 메모리 제어 로직은 바람직하게 보호 가능한 구역을 형성하는 모든 페이지 또는 블록을 소거한 다음 보호-구성 구역의 부분을 형성하는 임의의 페이지 또는 블록을 소거하도록 구성된다. 이러한 방식으로, 만일 소거 동작이 완료하기 전에 중단되면, 보호 가능한 구역이 아직 충분히 소거되지 않았으면 보호 구성 데이터는 여전히 존재할 것이고, 그럼으로써 지속적인 보호를 제공하게 된다.
메모리 보호 로직은, 보호-구성 구역이 소거된 상태에 있을 때, 보호 가능한 구역으로의 액세스가 일련의 순서화된 제한 레벨 중 최고 레벨에 있도록 구성될 수 있다. 이것은 디폴트에 의한, 예를 들면 사용자가 소거 후에 새로운 구성 데이터를 설정하는 것을 빠트리는 경우에 보호 가능한 구역으로의 액세스를 제한함으로써 부가적인 보안을 제공할 수 있다.
보호-구성 구역이 소거된 상태에 있을 때 이 구역으로의 기록을 허용함으로써, 보호 구성 정보가 제조 또는 의뢰 중에 설정될 수 있으며, 또한 장치의 임의의 후속 재 프로그래밍 동안 설정될 수 있다.
비휘발성 메모리 제어 로직은 바람직하게 보호-구성 구역의 일부분에 기록하라는 명령어를 수신하고, 이에 응답하여, 그 부분이 기록을 허용하기 전 소거된 상태에 있는지 체크하도록 구성된다. 비휘발성 메모리 제어 로직은 그 부분을 판독하고 그 부분이 비휘발성 메모리의 타입에 대한 자연 소거된 상태에 있다고 결정함으로써 위와 같이 수행할 수 있다. 예를 들면, 플래시 메모리는 페이지가 소거된 후 모든 비트에 이진수 "1"을 담고 있다. 그러므로 메모리 제어 로직은 기록 동작을 허용하기 전에 그 부분의 모든 비트가 "1"인 것을 체크할 수 있다. 물론 다른 메모리 타입은 "0"을 판독할 수 있거나 또는 일부 다른 자연 소거된 상태를 가질 것이다.
대안으로, 비휘발성 메모리의 구역은 이 구역이 소거될 때 리셋되지만 제 1의 기록 동작이 그 구역에서 수행될 때는 비휘발성 메모리 제어 로직에 의해 설정되는 소거된 상태 플래그를 포함할 수 있다. 이 경우, 비휘발성 메모리 제어 로직은 하나 이상의 소거된 상태 플래그를 체크한 다음 보호-구성 구역의 일부분으로의 기록 동작을 허용할 수 있다.
메모리-보호 구성 구역은 비휘발성 메모리의 보호 가능한 구역을 정의하는 및/또는 앞에서 기술된 바와 같이 휘발성 메모리의 보호된 구역을 정의하는 하나 이상의 값을 저장할 수 있다. 이러한 방식으로, 공격자는 보호된 구역(들)의 콘텐츠를 먼저 파괴시키지 않고는 보호된 구역(들)의 정의를 변경할 수 없다.
본 출원에서 기술된 하나의 양태 또는 실시예의 옵션의 특징 또는 바람직한 특징은 어디나 적당한 곳이면 임의의 다른 양태 또는 실시예에 적용될 수 있다.
이제 본 발명의 특정한 바람직한 실시예가 오직 예를 들어서 첨부 도면을 참조하여 설명될 것이다.
도 1은 본 발명을 구현하는 마이크로컨트롤러의 개략도이다.
도 2는 마이크로컨트롤러 아키텍처 내부의 주요 소프트웨어 컴포넌트를 도시하는 개략도이다.
도 3은 마이크로컨트롤러의 개략적인 메모리 맵이다.
도 1은 저항-캐패시터 발진기를 포함할 수 있으며/있거나 오프-칩 수정 발진기(도시되지 않음)로부터 입력을 수신할 수 있는 클록 로직(3), 전력 관리 회로(5), 프로세서(7)(예를 들면, ARM(RTM) Cortex-MO), 메모리 보호 유닛(9), RAM(11), 플래시 메모리 컨트롤러(20), 플래시 메모리(13), 무선 통신 로직(17), 하나 이상의 주변 장치(15), 및 입력/출력 회로(19)를 포함하는 집적 회로 마이크로컨트롤러(1) 또는 라디오-온-어-칩(radio-on-a-chip)을 도시한다.
이들 컴포넌트들은 적당한 라인 및/또는 버스(도시되지 않음)를 이용하여 상호접속된다. 마이크로컨트롤러(1)는 하버드 아키텍처 또는 폰 노이만 아키텍처를 이용할 수 있다. 메모리 보호 유닛(9)은 프로세서(7)로부터 RAM(11) 및 플래시 메모리 컨트롤러(20)로 가는 모든 메모리 액세스 명령어를 가로채도록 구성된다.
마이크로컨트롤러(1)는 또한 데이터를 플래시 메모리(13)에 로딩하고 프로세서(7)를 디버깅하는데 사용될 수 있는 디버깅 인터페이스(18)를 갖고 있다. 마이크로컨트롤러는 RAM(11) 및 플래시(13)에 직접 액세스하지 않고, 대신에 메모리 보호 유닛(9) 및 플래시 메모리 컨트롤러(20)를 통해 이들 메모리에 액세스한다.
사용 시, 마이크로컨트롤러(1)는 파워 서플라이, 무선 안테나, 수정 발진기, 센서, 출력 장치 등과 같은 복수의 외부 컴포넌트들에 접속될 수 있다.
도 2는 마이크로컨트롤러(1)에 설치될 수 있는 소프트웨어 컴포넌트를 도시한다. 마이크로컨트롤러(1)와 인터페이싱하는 하드웨어는 ARM (RTM) Cortex Micro Controller Software Interface Standard와 같은 옵션의 하드웨어 추상화 계층(21)이다. 이것의 위쪽으로는 펌웨어 모듈(23) 및 별도의 소프트웨어 애플리케이션(27)이 존재한다.
펌웨어 모듈(23)은 복수개의 내장 소프트웨어 블록을 포함하는 이진 애플리케이션이다. 무선 프로토콜 블록(31)은 하나 이상의 무선 프로토콜 스택을 구현한다. 무선 이벤트 매니저(33)는 무선 통신 로직(17)에 대한 액세스 스케줄링 및 이벤트 멀티플렉싱을 제공한다. 라이브러리(35)는 난수(random number) 발생, 인터럽트 및 우선순위 구성, (예를 들면, 주변장치를 인에이블하고 디스에이블하기 위한) 전력 관리, 암호 기능 등과 같은 공유된 하드웨어 자원 관리 및 기능을 제공한다. 펌웨어 매니저(37)는 펌웨어 모듈을 인에이블하고 디스에이블하는 것, 그리고 무선 프로토콜 스택을 인에이블하고 디스페이블하는 것을 지원한다.
펌웨어 모듈(23)은 반드시 멀티-쓰레딩, 메모리 할당 등을 지원하지 않아도 된다는 점에서 완전한 오퍼레이팅 시스템일 필요는 없다.
펌웨어 모듈(23)을 위한 애플리케이션 인터페이스(application interface (API)(29))는 소프트웨어 애플리케이션(27)이 펌웨어 모듈(23)에 있는 함수를 불러오게 할 수 있다. 이것은 전적으로 시스템 콜을 이용하여 시행될 수 있다. ARM(RTM) 프로세서를 이용할 때, 각각의 API 함수 프로토타입은 컴파일 시간에서 연관된 수퍼바이저 콜(an associated supervisor call (SVC)) 넘버를 통해 펌웨어 함수에 맵핑된다. 이러한 맵핑은 함수가 정확하게 호출될 수 있도록 소프트웨어 애플리케이션(27)의 개발자에게 제공될 수 있다.
펌웨어 모듈(23)은 이벤트를 소프트웨어 인터럽트로서 소프트웨어 애플리케이션(27)에 전달할 수 있으며, 그의 콘텐츠는 소프트웨어 애플리케이션(27)에 의해 판독(폴(poll))될 때까지 버퍼링된다. 이러한 판독은 API 콜(예를 들면, event_get())을 통해 이루어진다.
도 3은 RAM(11)과 플래시(13)가 펌웨어 모듈(23)과 소프트웨어 애플리케이션(27) 사이에서 공유되는 방법을 도시한다. 플래시(13)는 실행 가능한 프로그램 코드를 저장하는 제로 (0x0000 0000)부터 SizeOfProgMem까지의 어드레스를 할당 받는다.
플래시 자체의 플래시 페이지에 있을 수 있는 플래시(13)의 다른 영역은 MemConfigStart부터 MemConfigEnd까지 연장하며 메모리 보호 유닛(9)에 의해 사용하기 위한 구성 데이터를 저장하는데 사용된다. 일련의 실시예에서, 이러한 페이지는 0x1000 0000부터 0x1000 07ff까지 연장하지만, 본 출원에서 언급된 모든 어드레스 값과 마찬가지로, 이들 값은 임의의 주어진 실시예에서 사용되는 특정한 프로세서 아키텍처에 좌우될 수 있다.
RAM(11)에는 0x2000 0000부터 위로 0x2000 0000 + SizeOfRAM으로까지 할당 된다.
플래시(13)의 프로그램 영역은 어드레스 CLENR0 (코드 길이 구역 0) 양쪽으로 두 개의 별개 구역을 포함한다. 제로와 CLENR0 사이의 구역 0는 펌웨어 모듈(23)이 로딩되는 구역이다. 펌웨어 인터럽트 벡터 테이블은 어드레스 제로에 저장된다. CLENR0로부터 위로 SizeOfProgMem까지 연장하는 구역 1은 소프트웨어 애플리케이션(27)이 로딩되는 구역이다. 이 구역은 또한 어드레스 CLENR0에서 인터럽트 벡터 테이블을 가질 수 있다.
RAM(11)은 유사하게 기준 어드레스 0x2000 000부터 RLENR0까지 구역 0 및 RLENR0로부터 위로 연장하는 구역 1을 갖는다. RAM 구역 0은 펌웨어 모듈(23)을 위한 힙 스토리지(heap storage)를 제공하는 반면 RAM 구역 1은 소프트웨어 애플리케이션(27)을 위한 힙 스토리지를 제공한다. 콜 스택은 펌웨어 모듈(23)과 소프트웨어 애플리케이션(27) 사이에서 공유되며 (0x2000 0000 + SizeOfRAM)로부터 아래로 증가한다. 콜 스택에 할당된 메모리는 소프트웨어 애플리케이션(27) 및 펌웨어 모듈(23) 모두의 요구에 맞게 충분히 커야 한다.
CLENR0 및 RLENR0의 값은 플래시 메모리(13)의 메모리-보호 구성 영역에 저장된다.
전원을 켜면, 플래시(13)의 메모리 보호 구성 영역에 저장된 관련 데이터는 메모리 보호 로직(9)에 액세스가능한 메모리 보호 구성 레지스터로 카피된다. 이들 레지스터들은 마이크로컨트롤러(1)의 전력 공급 동안에만 실행하는 하드웨어 상태 머신으로부터만 기록할 수 있게 되어, 이들 레지터들의 내용을 변경하는 유일한 방법은 플래시(13)의 메모리 보호 구성 영역 내 데이터를 변경하는 것이다.
메모리 보호 로직(9)은 프로세서(7)로부터 플래시 메모리(13) 및 RAM(11)으로의 모든 메모리 액세스 요청(예를 들면, 데이터 페치 또는 명령어 페치 동작)을 가로채도록 구성된다. 이것은 메모리 버스의 "트랜잭션 타입(transaction type)"으로부터 명령어-페치 동작을 식별할 수 있다. 프로세서(7)가 플래시 메모리(13)로부터 명령어를 페치할 때마다, 메모리 보호 로직(9)은 페치된 명령어의 어드레스가 CLENR0보다 적다면 "펌웨어 구역" 레지스터 내 단일-비트 플래그를 "1"로 업데이트하고 그 어드레스가 CLENR0보다 크거나 같으면 "0"으로 업데이트한다.
매 데이터 액세스 요청 마다, 메모리 보호 로직(9)은 액세스 요청의 소스가 펌웨어 모듈(23)로부터인지 또는 다른 곳인지를 "펌웨어 구역" 레지스터의 값을 체크함으로써 결정한다. 메모리 보호 로직은 액티브 메모리 버스 마스터의 아이덴티티를 결정함으로써 그 요청의 소스가 디버거 인터페이스(18)인지 아니면 직접-메모리 액세스(direct-memory access (DMA)) 유닛인지 검출하도록 구성될 수 있다. 또한 메모리 보호 로직은 메모리 보호 구성 레지스터에 액세스하여 "펌웨어 구역" 레지스터의 상태 및 버스 마스터의 아이덴티티에 기초하여 액세스 요청을 허용 또는 거부할지 여부를 결정한다.
몇몇의 바람직한 실시예에서, 소프트웨어 애플리케이션(27)은 플래시 구역 0 및 RAM 구역 0로의 판독 및 기록 액세스를 거부당한다. 이것은 펌웨어 모듈(23)의 비밀을 보호하며 펌웨어 모듈(23)에 할당된 메모리 위치에 소프트웨어 애플리케이션(27)에 의한 의도하지 않거나 악의적인 기록을 방지할 수 있고, 그럼으로써 강인성과 보안성이 증가될 수 있다. 소프트웨어 애플리케이션의 플래시 구역 1은 또한 예를 들면, 외부 디버깅 인터페이스(18)를 통한 역판독(read back)으로부터 보호하기 위해, 판독 액세스로부터 보호받을 수 있다.
도 4는 마이크로컨트롤러(1)가 플래시 메모리(13)를 무단 액세스로부터 보호하기 위해 구현할 수 있는 판정 테이블을 도시한다. 물론 대안의 구현도 가능하다.
플래시 메모리(13)의 메모리-보호 구성 구역에는 두 개의 이진 플래그가 저장되며 (부트 업을 통해 레지스터에 카피된다). 제 1 플래그는, 설정될 때, 디버깅 인터페이스(18)를 통한 모든 프로그램 플래시로의 데이터 판독 및 기록을 금지한다. 제 2 플래그는, 설정될 때, 구역 0 자체에서부터 실행하는 코드 이외의 것에 의한 구역 0 플래시 메모리로의 데이터 판독 및 기록 액세스를 금지한다. 프로세서(7)에 의한 실행 액세스(즉, 명령어 페치)는 데이터 판독 액세스가 거부될 때라도 여전히 허용된다.
만일 공격자가 플래시 메모리(13)의 메모리-보호 구성 영역에 저장된 데이터를 변경할 수 있었다면, 보호 메커니즘은 바이패스될 수도 있다. 그러나, 플래시 메모리 컨트롤러(20)는 메모리-보호 구성 영역이 소거된 상태가 아닌 한 이 영역에 기록하는 것을 방지한다. 또한, 플래시 메모리 컨트롤러(20)는 플래시 메모리(13)의 구역 0 및 1이 먼저 소거되어 있지 않는 한 메모리-보호 구성 영역이 소거되지 않게 한다. 플래시 메모리 컨트롤러는 이러한 조건을 실시하는 유한 상태 머신을 실행하는 디지털 로직을 사용한다.
만일 플래시 메모리 컨트롤러(20)가 메모리-보호 구성 영역 내 어드레스에 워드를 기록하라는 명령어를 수신하면, 먼저 그 어드레스에서 존재하는 콘텐츠를 판독할 것이며 만일 존재하는 콘텐츠가 모두 이 어드레스가 메모리-보호 구성 영역 플래시 메모리의 소거 이래로 기록되지 않았음을 나타내는 이진수 "1"이면 그 기록을 허용할 뿐일 것이다. 만일 체크 결과 그렇지 않으면, 플래시 메모리 컨트롤러는 기록하기를 거부할 것이며 프로세서(7) 예외를 발생할 수 있다.
만일 플래시 메모리 컨트롤러(20)가 플래시 메모리(13) 전체를 소거하라는 명령어를 수신하면, 플래시 메모리 컨트롤러는 메모리-보호 구성 영역을 소거하기 전에 먼저 플래시 구역 0 및 1의 콘텐츠를 먼저 소거함으로써 대응할 것이다. 이러한 이유 때문에, 메모리-보호 영역은 바람직하게 플래시 메모리(13)의 임의의 프로그램 영역과 별개인, 그 자체의 소거 가능한 플래시 페이지에 저장된다.
플래시 메모리 컨트롤러(20)는 바로 그 메모리-보호 구성 영역을 소거하라는 임의의 명령어를 거부할 것이다.
본 기술에서 통상의 지식을 가진 자라면, 마이크로컨트롤러(1)가 플래시 메모리(13)의 구역 0 이외에서 실행하는 코드가 무선 통신 로직(17), 전력 관리 회로(5), 직접-메모리 액세스(DMA) 컨트롤러, 또는 인터럽트 레지스터의 하위-레벨 함수와 관련된 레지스터와 같은 중요한 특징에 액세스하는 것을 방지하도록 구성될 수 있다는 것을 인식할 것이다.

Claims (29)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 프로세서, 비휘발성 메모리, 비휘발성 메모리 제어 로직, 및 메모리 보호 로직을 포함하는 집적-회로 장치로서,
    상기 메모리 보호 로직은 상기 비휘발성 메모리의 보호-구성 구역(protection-configuration region)에 저장된 보호 구성 데이터에 의존하여 상기 비휘발성 메모리의 보호 가능한 구역(protectable region)으로의 액세스를 제어하도록 구성되고,
    상기 비휘발성 메모리는 소거된-상태 플래그를 포함하는 구역을 포함하고, 상기 장치는 각각의 구역이 소거될 때 각각의 소거된-상태 플래그를 리셋하도록 구성되며,
    상기 비휘발성 메모리 제어 로직은 제 1 기록 동작이 각 구역에서 실행될 때 각각의 소거된-상태 플래그를 설정하도록 구성되고,
    상기 비휘발성 메모리 제어 로직은, 상기 보호-구성 구역의 일부분에 기록 동작을 허용하기 전에 하나 이상의 소거된 상태 플래그를 체크함으로써, 상기 보호-구성 구역의 임의의 부분이 소거된 상태에 있지 않는 한 상기 부분에 기록하기를 금지하도록 구성되며,
    상기 비휘발성 메모리 제어 로직은 상기 보호 가능한 구역이 소거된 상태에 있는 경우에만 상기 보호-구성 구역이 소거될 수 있도록 구성되는
    집적-회로 장치.
  20. 제 19 항에 있어서,
    상기 비휘발성 메모리 제어 로직 및 메모리 보호 로직 중 적어도 하나는 상기 프로세서와 별개의 로직 게이트를 포함하는
    집적-회로 장치.
  21. 제 19 항에 있어서,
    상기 비휘발성 메모리 제어 로직은 상기 비휘발성 메모리 제어 로직에 의해 제공된 상기 보호-구성 구역을 소거하기 위한 유일한 메커니즘이 상기 보호 가능한 구역 및 상기 보호-구성 구역을 둘 다 소거하는 명령이도록 구성되는
    집적-회로 장치.
  22. 제 19 항에 있어서,
    상기 보호-구성 구역 및 상기 보호 가능한 구역은 메모리의 상이한 페이지 또는 소거 가능한 블록을 포함하고, 상기 비휘발성 메모리 제어 로직은 상기 보호-구성 구역의 부분을 형성하는 임의의 페이지 또는 블록을 소거하기 이전에 상기 보호 가능한 구역을 형성하는 모든 페이지 또는 블록을 소거하도록 구성되는
    집적-회로 장치.
  23. 제 19 항에 있어서,
    상기 메모리 보호 로직은, 상기 보호-구성 구역이 소거된 상태에 있을 때, 상기 보호 가능한 구역으로의 액세스가 일련의 순서화된 제한 수준(an ordered set of restriction levels) 중 최고 수준에 있도록 구성되는
    집적-회로 장치.
  24. 제 19 항에 있어서,
    상기 비휘발성 메모리 제어 로직은 상기 보호-구성 구역의 일부분에 기록하라는 명령어를 수신하고, 이에 대응하여 상기 기록을 허용하기 전에 상기 일부분이 소거된 상태에 있는지 체크하도록 구성되는
    집적-회로 장치.
  25. 제 24 항에 있어서,
    상기 비휘발성 메모리는 자연 소거된 상태(a natural erased state)를 갖는 형태를 가지며, 상기 비휘발성 메모리 제어 로직은 상기 일부분을 판독하고 상기 일부분이 상기 자연 소거된 상태에 있는지 여부를 결정함으로써 상기 일부분이 소거된 상태에 있는 것을 체크하도록 구성되는
    집적-회로 장치.
  26. 삭제
  27. 제 19 항에 있어서,
    상기 비휘발성 메모리의 보호 가능한 구역 및 휘발성 메모리의 보호된 구역 중 적어도 하나를 정의하는 하나 이상의 값을 상기 보호-구성 구역 내에 저장하도록 구성되는
    집적-회로 장치.
  28. 제 19 항에 있어서,
    상기 보호 구성 데이터는 상기 비휘발성 메모리의 상기 보호 가능한 구역에 대한 판독 보호 플래그를 포함하고, 상기 메모리 보호 로직은,
    상기 판독 보호 플래그의 상태를 결정하도록 구성되고,
    상기 프로세서에 의한 메모리 판독 요청을 검출하도록 구성되고,
    상기 판독 요청이 상기 보호 가능한 구역 내 어드레스에 대한 것인지 여부를 결정하도록 구성되고,
    상기 프로세서가 상기 보호 가능한 구역에 저장된 코드를 실행하면서 상기 판독 요청을 발행하였는지 여부를 결정하도록 구성되고,
    상기 보호 가능한 구역에 대한 상기 판독 보호 플래그가 설정되어 있으면, 하나 이상의 액세스 조건 중 적어도 하나가 충족되지 않는 한 상기 보호 가능한 구역 내 어드레스에 대한 판독 요청을 거부하도록 구성 - 상기 액세스 조건 중 하나는 상기 프로세서가 상기 보호 가능한 구역에 저장된 코드를 실행하면서 상기 판독 요청을 발행한 것임 - 되는
    집적-회로 장치.
  29. 삭제
KR1020157002157A 2012-06-27 2013-06-26 메모리 보호 KR102095614B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1211422.9A GB2503470B (en) 2012-06-27 2012-06-27 Memory protection
GB1211422.9 2012-06-27
PCT/GB2013/051694 WO2014001803A2 (en) 2012-06-27 2013-06-26 Memory protection

Publications (2)

Publication Number Publication Date
KR20150033695A KR20150033695A (ko) 2015-04-01
KR102095614B1 true KR102095614B1 (ko) 2020-04-01

Family

ID=46704312

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157002157A KR102095614B1 (ko) 2012-06-27 2013-06-26 메모리 보호

Country Status (8)

Country Link
US (2) US9430409B2 (ko)
EP (2) EP2867776B1 (ko)
JP (1) JP6306578B2 (ko)
KR (1) KR102095614B1 (ko)
CN (1) CN104412242B (ko)
GB (3) GB2503470B (ko)
TW (1) TWI581099B (ko)
WO (1) WO2014001803A2 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140316873A1 (en) * 2013-04-22 2014-10-23 Codecard, Inc. Apparatus, system and methods to issue a prize to a user of a credit account based on user purchase activities
EP2808818B1 (en) * 2013-05-29 2016-07-13 Nxp B.V. Processing system
GB2521607B (en) * 2013-12-23 2016-03-23 Nordic Semiconductor Asa Integrated-Circuit Radio
US20150351999A1 (en) * 2014-01-15 2015-12-10 Getting in the Mood, LLC Heating and vibrating personal massager with accompanying cover
US20160180092A1 (en) * 2014-12-23 2016-06-23 Mcafee, Inc. Portable secure storage
CN104573421B (zh) 2014-12-30 2017-12-22 北京兆易创新科技股份有限公司 一种基于若干分区的mcu芯片信息保护方法和装置
CN104598402B (zh) * 2014-12-30 2017-11-10 北京兆易创新科技股份有限公司 一种闪存控制器和闪存控制器的控制方法
US10540524B2 (en) * 2014-12-31 2020-01-21 Mcafee, Llc Memory access protection using processor transactional memory support
US10157008B2 (en) * 2015-04-29 2018-12-18 Qualcomm Incorporated Systems and methods for optimizing memory power consumption in a heterogeneous system memory
US10983931B2 (en) 2015-04-30 2021-04-20 Microchip Technology Incorporated Central processing unit with enhanced instruction set
GB2539455A (en) 2015-06-16 2016-12-21 Nordic Semiconductor Asa Memory watch unit
WO2017061153A1 (ja) * 2015-10-09 2017-04-13 ソニー株式会社 メモリ、メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
US20170139844A1 (en) * 2015-11-17 2017-05-18 Silicon Laboratories Inc. Asymmetric memory
JP6742831B2 (ja) * 2016-06-14 2020-08-19 ルネサスエレクトロニクス株式会社 情報処理装置、読み出し制御方法、及びプログラム
US11416421B2 (en) 2016-07-19 2022-08-16 Cypress Semiconductor Corporation Context-based protection system
GB2557305A (en) * 2016-12-05 2018-06-20 Nordic Semiconductor Asa Memory protection logic
US10691803B2 (en) * 2016-12-13 2020-06-23 Amazon Technologies, Inc. Secure execution environment on a server
US10409981B2 (en) 2017-04-21 2019-09-10 International Business Machines Corporation In-process stack memory protection
US10587575B2 (en) * 2017-05-26 2020-03-10 Microsoft Technology Licensing, Llc Subsystem firewalls
US10346345B2 (en) 2017-05-26 2019-07-09 Microsoft Technology Licensing, Llc Core mapping
US10353815B2 (en) 2017-05-26 2019-07-16 Microsoft Technology Licensing, Llc Data security for multiple banks of memory
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
RU2677366C1 (ru) * 2017-10-27 2019-01-16 Юрий Алексеевич Шашлюк Устройство хранения данных и способ его работы
US10318438B1 (en) * 2017-12-07 2019-06-11 Nuvoton Technology Corporation Secure memory access using memory read restriction
US11132134B2 (en) * 2017-12-21 2021-09-28 Apple Inc. Flexible over-provisioning of storage space within solid-state storage devices (SSDs)
TWI650648B (zh) * 2018-02-09 2019-02-11 慧榮科技股份有限公司 系統晶片及存取系統晶片中記憶體的方法
US11036654B2 (en) * 2018-04-14 2021-06-15 Microsoft Technology Licensing, Llc NOP sled defense
GB201807257D0 (en) 2018-05-02 2018-06-13 Nordic Semiconductor Asa Cryptographic key distribution
GB201810533D0 (en) * 2018-06-27 2018-08-15 Nordic Semiconductor Asa Hardware protection of files in an intergrated-circuit device
FR3087020A1 (fr) * 2018-10-09 2020-04-10 Stmicroelectronics (Grenoble 2) Sas Procede d'acces a une memoire
US11210238B2 (en) * 2018-10-30 2021-12-28 Cypress Semiconductor Corporation Securing data logs in memory devices
JPWO2020095410A1 (ja) * 2018-11-08 2021-09-24 ソニーグループ株式会社 通信装置
US11036887B2 (en) * 2018-12-11 2021-06-15 Micron Technology, Inc. Memory data security
TWI682400B (zh) * 2019-03-04 2020-01-11 新唐科技股份有限公司 半導體裝置與資料保護方法
JP2021111112A (ja) * 2020-01-09 2021-08-02 キヤノン株式会社 画像形成装置、及びその制御方法
CN111625784B (zh) * 2020-05-29 2023-09-12 重庆小雨点小额贷款有限公司 一种应用的反调试方法、相关装置及存储介质
FR3118219B1 (fr) * 2020-12-17 2024-03-15 Stmicroelectronics Grand Ouest Sas Procédé de protection d’un système, par exemple un microcontrôleur, et sytème correspondant
JP7408593B2 (ja) * 2021-03-23 2024-01-05 株式会社東芝 制御装置、情報処理装置、および情報処理システム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023822A1 (en) * 2001-07-11 2003-01-30 Intel Corporation Memory access control system, apparatus, and method
US20090222596A1 (en) * 2007-12-06 2009-09-03 David Flynn Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4698750A (en) * 1984-12-27 1987-10-06 Motorola, Inc. Security for integrated circuit microcomputer with EEPROM
JPS6382534A (ja) 1986-09-26 1988-04-13 Matsushita Electric Ind Co Ltd メモリ保護装置
US5001670A (en) 1987-02-06 1991-03-19 Tektronix, Inc. Nonvolatile memory protection
US5469557A (en) * 1993-03-05 1995-11-21 Microchip Technology Incorporated Code protection in microcontroller with EEPROM fuses
US5564030A (en) * 1994-02-08 1996-10-08 Meridian Semiconductor, Inc. Circuit and method for detecting segment limit errors for code fetches
US5737760A (en) * 1995-10-06 1998-04-07 Motorola Inc. Microcontroller with security logic circuit which prevents reading of internal memory by external program
JP3489708B2 (ja) * 1996-10-23 2004-01-26 シャープ株式会社 不揮発性半導体記憶装置
JPH10228421A (ja) * 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
JP4000654B2 (ja) * 1997-02-27 2007-10-31 セイコーエプソン株式会社 半導体装置及び電子機器
US6446184B2 (en) * 1998-04-28 2002-09-03 International Business Machines Corporation Address re-mapping for memory module using presence detect data
JP2001051904A (ja) * 1999-08-11 2001-02-23 Hitachi Ltd 不揮発性半導体メモリを用いた外部記憶装置
US6895508B1 (en) 2000-09-07 2005-05-17 International Business Machines Corporation Stack memory protection
US6952778B1 (en) 2000-10-26 2005-10-04 Cypress Semiconductor Corporation Protecting access to microcontroller memory blocks
US7093097B2 (en) * 2001-11-27 2006-08-15 International Business Machines Corporation Dynamic self-tuning memory management method and system
US6883075B2 (en) 2002-01-17 2005-04-19 Silicon Storage Technology, Inc. Microcontroller having embedded non-volatile memory with read protection
JP4347582B2 (ja) * 2003-02-04 2009-10-21 パナソニック株式会社 情報処理装置
US7739516B2 (en) * 2004-03-05 2010-06-15 Microsoft Corporation Import address table verification
JP4563707B2 (ja) * 2004-03-25 2010-10-13 ルネサスエレクトロニクス株式会社 メモリ保護装置
US7210014B2 (en) 2004-05-27 2007-04-24 Microsoft Corporation Alternative methods in memory protection
US7343496B1 (en) 2004-08-13 2008-03-11 Zilog, Inc. Secure transaction microcontroller with secure boot loader
JPWO2006040798A1 (ja) * 2004-10-08 2008-05-15 株式会社ルネサステクノロジ 半導体集積回路装置および電子システム
US7516902B2 (en) 2004-11-19 2009-04-14 Proton World International N.V. Protection of a microcontroller
US7673345B2 (en) 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
JP4584044B2 (ja) * 2005-06-20 2010-11-17 ルネサスエレクトロニクス株式会社 半導体装置
JP4818793B2 (ja) 2006-04-20 2011-11-16 ルネサスエレクトロニクス株式会社 マイクロコンピュータ及びメモリアクセスの制御方法
US8438365B2 (en) * 2006-10-06 2013-05-07 Calos Fund Limited Liability Company Efficient data loading in a data-parallel processor
DE602007012519D1 (de) * 2007-04-05 2011-03-31 St Microelectronics Res & Dev Integrierte Schaltung mit beschränktem Datenzugang
US8051263B2 (en) 2007-05-04 2011-11-01 Atmel Corporation Configurable memory protection
US7917716B2 (en) 2007-08-31 2011-03-29 Standard Microsystems Corporation Memory protection for embedded controllers
US7895404B2 (en) * 2008-02-14 2011-02-22 Atmel Rousset S.A.S. Access rights on a memory map
US8001357B2 (en) * 2008-04-30 2011-08-16 Microsoft Corporation Providing a single drive letter user experience and regional based access control with respect to a storage device
US20100106926A1 (en) * 2008-10-25 2010-04-29 International Business Machines Corporation Second failure data capture problem determination using user selective memory protection to trace application failures
WO2011074168A1 (ja) * 2009-12-14 2011-06-23 パナソニック株式会社 情報処理装置
JP5793712B2 (ja) * 2010-03-01 2015-10-14 パナソニックIpマネジメント株式会社 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023822A1 (en) * 2001-07-11 2003-01-30 Intel Corporation Memory access control system, apparatus, and method
US20090222596A1 (en) * 2007-12-06 2009-09-03 David Flynn Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment

Also Published As

Publication number Publication date
GB2503583B (en) 2015-06-17
JP6306578B2 (ja) 2018-04-04
WO2014001803A2 (en) 2014-01-03
US20160299720A1 (en) 2016-10-13
EP2867776B1 (en) 2020-04-29
CN104412242A (zh) 2015-03-11
GB201405811D0 (en) 2014-05-14
GB2503470B (en) 2014-08-13
GB2513727A (en) 2014-11-05
GB2503583A (en) 2014-01-01
US9430409B2 (en) 2016-08-30
KR20150033695A (ko) 2015-04-01
GB2503470A9 (en) 2014-01-15
EP3702923B1 (en) 2023-06-21
GB201211422D0 (en) 2012-08-08
TWI581099B (zh) 2017-05-01
US20140006692A1 (en) 2014-01-02
GB2503470A (en) 2014-01-01
CN104412242B (zh) 2018-01-19
GB2513727B (en) 2015-06-24
JP2015525916A (ja) 2015-09-07
TW201409236A (zh) 2014-03-01
WO2014001803A3 (en) 2014-03-20
EP2867776A2 (en) 2015-05-06
GB201312526D0 (en) 2013-08-28
EP3702923A1 (en) 2020-09-02

Similar Documents

Publication Publication Date Title
KR102095614B1 (ko) 메모리 보호
US6292874B1 (en) Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
JP4818793B2 (ja) マイクロコンピュータ及びメモリアクセスの制御方法
JP4939387B2 (ja) データ処理装置及びアドレス空間保護方法
JP2001256460A (ja) 1チップマイクロコンピュータ及びそれを用いたicカード
CN110908932B (zh) 数据处理装置及其数据保护方法
US9891908B2 (en) Updatable integrated-circuit radio
GB2557305A (en) Memory protection logic
US20040243783A1 (en) Method and apparatus for multi-mode operation in a semiconductor circuit
US20230161486A1 (en) Method for managing a memory in a system-on-a-chip
TW201702884A (zh) 阻止記憶體溢出攻擊之精細粒度記憶體保護
CN116635855A (zh) 基于执行上下文管理可执行代码对数据内存的访问的装置和方法
WO2024027975A1 (en) Execution of instructions from trusted and untrusted memories
CN110569205A (zh) 安全系统单芯片及其操作方法

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