KR20180045039A - 보안 서브시스템 - Google Patents

보안 서브시스템 Download PDF

Info

Publication number
KR20180045039A
KR20180045039A KR1020187010837A KR20187010837A KR20180045039A KR 20180045039 A KR20180045039 A KR 20180045039A KR 1020187010837 A KR1020187010837 A KR 1020187010837A KR 20187010837 A KR20187010837 A KR 20187010837A KR 20180045039 A KR20180045039 A KR 20180045039A
Authority
KR
South Korea
Prior art keywords
security
operations
secure
secret data
memory
Prior art date
Application number
KR1020187010837A
Other languages
English (en)
Other versions
KR102139179B1 (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 KR20180045039A publication Critical patent/KR20180045039A/ko
Application granted granted Critical
Publication of KR102139179B1 publication Critical patent/KR102139179B1/ko

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting 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 application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Storage Device Security (AREA)

Abstract

전용 보안 프로세서로 보안 동작들을 수행하기 위한 장치들 및 방법들이 일 실시예에서 설명된다. 장치는 보안 동작들을 정의하는 보안 펌웨어, 보안 동작들에 제한된 동작들의 셋을 수행하고 보안 펌웨어를 실행시키도록 구성된 프로세서, 및 보안 동작들을 수행하기 위한 지시들을 수신하도록 구성되고 프로세서에 의해 액세스 가능한 복수의 보안 하드웨어 레지스터들을 포함한다. 복수의 보안 지원 하드웨어 회로들로 보안 동작들을 수행하기 위한 장치가 다른 실시예에서 설명된다. 장치는 보안 동작들을 수행하기 위한 명령을 수신하도록 구성된 하나 이상의 보안 하드웨어 레지스터들 및 하나 이상의 비밀 데이터 객체들을 이용하여 이산의 보안 동작들을 수행하도록 구성된 하나 이상의 보안 지원 하드웨어 회로들을 포함한다.

Description

보안 서브시스템
데이터 보안은 스토리지 시스템들 예컨대 고체 상태 드라이브들 (SSD(solid state drive)들), 하드 디스크 드라이브들 (HDD들), 테이프 드라이브들, 광 드라이브들, 등의 제조에서 우선 사항이다. 비밀 데이터 오브젝트들, 예컨대 암호화 키들에 대한 액세스를 방지하는 것은, 개인들, 비즈니스들, 및 정부들에 보안 희생 없이 전자적으로 저장된 정보의 양을 증가시키는 것에 순응하기 위한 스토리지 시스템의 능력에 확신을 제공한다. 전통적인 스토리지 시스템들은 보안 동작들을 수행하기 위한 프로세서 및 내부 SOC (system on chip) 메모리내에 저장된 비밀 데이터 객체들, 및 보안 정보, 예컨대 암호화 키들에 근거하여 동작들을 수행하고 액세스하기 위한 펌웨어를 포함하는 단일 시스템 온 칩 SOC 디자인상에 제어기를 통합한다. 이런 구성들에서, SOC의 경계(boundary) (예를 들어, SOC의 컴포넌트들을 액세스하는 다양한 연결들 및 수단들)는 암호화 키들을 도출하기 위해 사용되는 비밀 데이터 객체들, 예컨대 암호화 키들 또는 키들이 안전함이 보장될 수 있는 가장 작은 경계이다. 즉, 비밀 데이터 객체들은 단지 SOC 만큼 안전한 하여야 하고, SOC의 컴포넌트들을 액세스할 수 있는 임의의 디바이스 (예를 들어, 프로세서)도 또한 비밀 데이터 객체들을 액세스할 수 있다.
본 출원은 전용 보안 프로세서로 보안 동작들을 수행하기 위한 장치들 및 방법들에 관한 것이다.
일 측면에서, 장치는 하나 이상의 비밀 데이터 객체들을 저장하도록 구성된 메모리 디바이스, 상기 보안 펌웨어를 실행시키고 상기 하나 이상의 비밀 데이터 객체들을 조작하기 위한 복수의 동작들에 제한된 동작들의 셋을 수행하도록 구성된 프로세서, 및 액세스 가능한 상기 보안 동작들을 수행하기 위한 지시들을 수신하도록 구성되고 상기 프로세서에 의해 액세스 가능한 복수의 보안 하드웨어 레지스터들을 포함한다.
다른 측면에서, 장치는 하나 이상의 비밀 데이터 객체들을 저장하기 위한 내부 메모리 디바이스, 상기 하나 이상의 비밀 데이터 객체들을 이용하여 동작을 수행하기 위한 명령을 수신하도록 구성된 하나 이상의 보안 하드웨어 레지스터들, 및상기 하나 이상의 비밀 데이터 객체들을 이용하여 이산의(discrete) 동작들을 수행하도록 구성된 하나 이상의 보안 지원 하드웨어 회로들을 포함한다.
다른 측면에서, 방법은 보안 하드웨어 레지스터에서, 하나 이상의 비밀 데이터 객체들을 이용하여 보안 동작을 실행하기 위한 요청을 수신하는 단계, 전용 보안 프로세서로, 상기 보안 동작을 실행하는 단계, 및 상기 보안 동작 실행에 응답하는 값을 보안되지 않은 하드웨어 레지스터에 송신하는 단계를 포함하되, 상기 보안 하드웨어 레지스터, 상기 하나 이상의 비밀 데이터 객체들, 및 상기 전용 보안 프로세서는 보안 경계(secure boundary)내에 위치된다.
다른 측면에서, 장치는 메모리 동작들을 수행하기 위한 지시들을 수신하도록 구성된 메모리 액세스 회로로서, 상기 메모리 동작들 중 적어도 하나는 비밀 데이터 객체를 조작하는, 상기 메모리 액세스 회로, 상기 비밀 데이터 객체를 조작함으로써 상기 적어도 하나의 메모리 동작을 수행하기 위한 상기 메모리 액세스 회로로부터 지시들을 수신하도록 구성된 보안 서브시스템 회로를 포함한다.
다른 측면에서, 방법은 하나 이상의 비밀 데이터 객체들을 수반하는 보안 동작을 실행하기 위한 요청을 보안 하드웨어 레지스터에서 수신하는 단계, 상기 보안 동작을 실행하도록 구성된 복수의 보안 지원 하드웨어 회로들 중 하나 이상을 식별하는 단계, 및 상기 하나 이상의 식별된 보안 지원 하드웨어 회로들을 이용하여 상기 보안 동작을 실행하는 단계를 포함한다.
도 1은 본 발명의 실시예들에 따른 데이터 스토리지를 포함하는 장치의 기능 블럭 다이어그램이다.
도 2는 본 발명의 실시예들에 따른 보안 서브시스템을 갖는 데이터 스토리지를 포함하는 장치의 기능 블럭 다이어그램이다.
도 3 은 도 2의 실시예에 따른 보안 동작(secure operation)들을 수행하기 위한 동작 단계들을 도시하는 플로우 차트이다.
도 4는 본 발명의 실시예들에 따른 보안 서브시스템을 갖는 데이터 스토리지를 포함하는 장치의 기능 블럭 다이어그램이다.
도 5는 도 4의 실시예에 따른 보안 동작들을 수행하기 위한 동작 단계들을 도시하는 플로우 차트이다.
도 6은 본 발명의 실시예에 따른 보안 동작들을 수행하기 위한 동작 단계들을 도시하는 플로우 차트이다.
본 개시는 어떤 보안 관련 결점들을 겪는 전통적인 데이터 스토리지 시스템들을 인지한다. 예를 들어, 전통적인 시스템들은 보안 펌웨어 및 보안되지 않은 스토리지 시스템 펌웨어 양쪽으로부터의 명령들을 경험하는 하나 이상의 공통 마이크로프로세서들을 사용한다. 비밀 정보를 핸들링하고 보안 동작들을 수행하는 시스템 자원들은 시스템 마이크로프로세서 상에서 운용하는 임의의 펌웨어에 의해 액세스 가능하기 때문에, 비밀 정보는 단지 보안 펌웨어만큼 스토리지 시스템 펌웨어에 의한 조작에 영향을 받기 쉽다. 따라서, 시스템의 보안을 보장할 때, 임의의 비-보안 관련 컴포넌트들을 포함하는 전체 SOC는, 임의의 보안 요건들을 충족하여야만 하는데, 왜냐하면 보안되지 않은 컴포넌트들에 대한 인가받지 않은 액세스는 비밀 정보를 손상시키고 보안 구멍들로 이어질 수 있기 때문이다. 본 출원에서 개시된 실시예들은 비밀 데이터 객체들의 인가받지 않은 액세스에 대비하여 보호하기 위해 보안 컴포넌트와 보안되지 않은 컴포넌트 사이에 통신을 제한하면서 범용 컴포넌트들로부터의 보안 정보를 핸들링하고 보안 동작을 수행하는 컴포넌트들을 격리시키는 보안 서브시스템에 관한 것이다.
이제 도면들로 가서, 도 1 은 전체적으로 (100)으로 지정된 장치의 기능 블럭 다이어그램이다(예를 들어, 집적 회로, 메모리 디바이스, 메모리 시스템, 전자 디바이스 또는 시스템, 스마트 폰, 태블릿, 컴퓨터, 서버, 등). 본 발명의 실시예에 따른 장치 (100)는 데이터 스토리지 시스템(data storage system) (102)를 포함한다. 데이터 스토리지 시스템 (102)은 보안 데이터 동작들, 예컨대 데이터 암호화 및 복호화를 수행하는 것이 가능한 메모리 시스템이다. 데이터 스토리지 시스템 (102)은 또한 하나 이상의 메모리들 또는 스토리지 매체에서 암호화된 데이터를 포함하여 데이터를 저장 및 검색할 수 있다. 데이터 스토리지 시스템 (102)은 전체적으로 제어기 (104), 동적 메모리 (106), 외부 (제어기에 대하여) 비휘발성 메모리 (108), 스토리지 매체 (110)를 포함하고, 호스트 디바이스 (116)에 연결될 수 있다.
제어기 (104)는 보안 동작들을 실행하고 비밀 데이터 객체들, 예컨대 보안 서브시스템내에 암호화 키들을 저장하는 것이 가능한 컴포넌트들의 임의 조합일 수 있다. 제어기 (104)는 수행될 동작들 및 컴포넌트들의 용도에 기초하여 시스템 컴포넌트들과 보안 컴포넌트들 사이의 통신을 제한할 수 있다. 이런 제한된 통신을 달성하기 위해서, 제어기 (104)는 스토리지 제어기 회로부 (114), 보안 서브시스템 (112), 및 메모리/매체 인터페이스들 (118)을 포함한다. 다양한 실시예들에서, 보안 서브시스템 (112), 스토리지 제어기 회로부 (114), 및/또는 메모리/매체 인터페이스들 (118)은 단일 집적 회로의 부품들일 수 있고, 여기서 그것들간에 경계들은 회로 연결들에 의해 정의된다. 다른 실시예들에서, 보안 서브시스템 (112)은 스토리지 제어기 회로부 (114), 및/또는 메모리/매체 인터페이스들 (118)에 연결될 수 있는 이산 회로(discrtet chip) 또는 칩일 수 있다. 보안 서브시스템 (112)은 보안 동작들을 수행하고 비밀 데이터를 저장하도록 구성된 많은 컴포넌트들을 포함할 수 있다. 보안 서브시스템 (112)은 비밀 데이터 객체들에 밀접하게 결부되는 전반적인 보안 동작들을 수행하기 위한 많은 시스템 컴포넌트들을 포함할 수 있다.
보안 서브시스템 (112)은 예를 들어, 전용 보안 프로세서, 보안 하드웨어 레지스터(register)들, 보안 지원 하드웨어, 보안 펌웨어, 암호화 및 복호화 동작들을 수행하기 위한 컴포넌트들, 및 내부 스토리지, 예컨대 랜덤 액세스 메모리 (RAM) 및/또는 비 휘발성 메모리를 포함할 수 있다. 스토리지 제어기 회로부 (114)는 비밀 데이터 객체들에 밀접하게 결부되지 않는 전반적인 제어기 동작들을 수행하기 위한 많은 시스템 컴포넌트들을 포함할 수 있다. 스토리지 제어기 회로부 (114)는 예를 들어, 하나 이상의 프로세싱 엘리먼트들, 시스템 하드웨어 레지스터들, 시스템 펌웨어, 시스템 지원 하드웨어, 호스트, 메모리, 및 매체 인터페이스들, 및/또는 판독 및 기록 데이터 경로 제어 회로들을 포함할 수 있다. 메모리/매체 인터페이스들 (118)은 보안 서브시스템 (112)와 하나 이상의 외부 스토리지 디바이스들 (예를 들어, 동적 메모리 (106), 외부 비휘발성 메모리 (108), 및/또는 스토리지 매체 (110)) 간에 통신을 가능하게 하는 하나 이상의 인터페이스들을 포함할 수 있다. 제어기 (104)의 상세한 실시예들은 도면들 2 및 4에 대하여 이하에서 더 상세하게 논의된다.
동적 메모리 (106)는 예를 들어, 동적 랜덤 액세스 메모리 (DRAM)일 수 있다. 동적 메모리 (106)는 메모리/매체 인터페이스들 (118)을 통하여 제어기 (104)에 의해 액세스 가능할 수 있다. 제어기 (104)의 하나 이상의 컴포넌트들, 예컨대 보안 서브시스템 (112) 및/또는 스토리지 제어기 회로부 (114)는 메모리/매체 인터페이스들 (118)를 통하여 동적 메모리 (106)를 액세스할 수 있다. 제어기 (104)는 동적 메모리 (106)상에 데이터를 저장 및/또는 검색할 수 있다. 다양한 실시예들에서, 동적 메모리 (106)는 제어기 (104)내 하나 이상의 서브시스템들 (예를 들어, 보안 서브시스템 (112) 및/또는 메모리 액세스 회로부 (114))을 포함하여 제어기 (104)에 의한 사용을 위한 그 위에 저장된 암호화된 데이터, 예컨대 프로그램 지시들 또는 다른 정보를 가질 수 있다. 외부 비휘발성 메모리 (108)는 예를 들어, 플래시 메모리 디바이스, 예컨대 NOR 플래시일 수 있다. 외부 비휘발성 메모리 (108)는 제어기 (104)의 하나 이상의 서브시스템들, 예컨대 보안 서브시스템 (112) 및/또는 스토리지 제어기 회로부 (114)를 포함하여 제어기 (104)에 의해 액세스 가능할 수 있다. 제어기 (104)는 외부 비휘발성 메모리 (108)상에 데이터를 저장 및/또는 검색할 수 있다. 다양한 실시예들에서, 외부 비휘발성 메모리 (108)는 제어기 (104)내 하나 이상의 서브시스템들에 의한 것을 (예를 들어, 보안 서브시스템 (112) 및/또는 스토리지 제어기 회로부 (114)) 포함하여 제어기 (104)에 의한 사용을 위한 그 위에 저장된 암호화된 데이터, 예컨대 프로그램 지시들 또는 다른 정보를 가질 수 있다.
스토리지 매체 (110)는 많은 어레이들의 메모리 셀들 (예를 들어, 비-휘발성 메모리 셀)를 포함할 수 있다. 어레이들은 예를 들어 NAND 아키텍처를 갖는 플래시 어레이들일 수 있다. 그러나, 실시예들은 특정 타입의 메모리 어레이 또는 어레이 아키텍처에 제한되지 않는다. 메모리 셀들은 예를 들어 다수의 물리 페이지들을 포함하는 다수의 블록들로 그룹화될 수 있다. 다수의 블록들은 메모리 셀들의 플레인에 포함될 수 있고 어레이는 다수의 플레인들을 포함할 수 있다. 일 예로서, 메모리 디바이스는 페이지마다 8KB(kilobytes)의 사용자 데이터, 블록마다 128 페이지들의 사용자 데이터, 플레인마다 2048 블록들, 및 디바이스마다 16 플레인들을 저장하도록 구성될 수 있다.
동작시에, 데이터는 예를 들어, 데이터의 페이지(page)로서 스토리지 매체 (110)에 기록 및/또는 스토리지 매체로부터 판독될 수 있다. 데이터는 페이지 유닛들 위에 매핑된 섹터들 (예를 들어, 호스트 섹터들)로 지칭된 데이터 세그먼트들에 호스트 (예를 들어, 호스트 디바이스 (116))로부터/호스트로 발송될 수 있다. 보안 서브시스템 (104)은 모든 비밀 데이터 객체들 (예를 들어, 암호화/복호화 키들)이 보안 서브시스템 (112)내에 잔존하는 것을 보장하면서 스토리지 매체 (110)와 호스트 디바이스 (116) 사이에 데이터 전송을 가능하게 하기 위해 필요한 임의의 암호화 또는 복호화를 수행할 수 있다.
호스트 디바이스 (116)는 비밀 정보를 이용 및/또는 생성하는 것이 가능한 임의의 호스트 시스템 예컨대 퍼스널 랩탑 컴퓨터, 데스크탑 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 개인 디지털 보조장치, 또는 임의의 다른 프로그램 가능한 전자 디바이스일 수 있다. 다양한 실시예들에서, 호스트 디바이스 (116)는 데이터 스토리지 시스템 (102)를 통하여 스토리지 매체 (110)로부터 데이터를 요청하거나 또는 스토리지 매체 (110)에 기록될 데이터를 제공할 수 있다. 제어기 (104)는 하나 이상의 서브시스템들, 예컨대 보안 서브시스템 (112) 및/또는 스토리지 제어기 회로부 (114)를 이용하여 요청들을 수신하고 요청된 기능들을 수행할 수 있어서 비밀 데이터 객체들은 보안 서브시스템 (112)내에 잔존하고 보안 서브시스템 (112)에 대하여 외부에 임의의 시스템들 또는 컴포넌트들에 의해 액세스 가능하지 않다.
도 2는 본 발명의 실시예들에 따른 데이터 스토리지 시스템(202)를 포함하여 전체적으로 (200)으로 지정된 장치의 기능 블럭 다이어그램이다. 데이터 스토리지 시스템 (202)는 전체적으로 보안 서브시스템 (212), 스토리지 제어기 회로부 (214), 및 메모리/매체 인터페이스들 (254)를 갖는 제어기 (204), 동적 메모리 (206), 외부 비휘발성 메모리 (208), 및 스토리지 매체 (210)를 포함한다. 호스트 디바이스 (216)는 데이터 스토리지 시스템 (202)에 결합될 수 있다. 다양한 실시예들에서, 장치(200)는 도 1에 대하여 상기에서 설명된 장치(100)으로 구현될 수 있다. 구체적으로, 동적 메모리 (206), 외부 비휘발성 메모리 (208), 스토리지 매체 (210), 및 호스트 디바이스 (216)는 개별적으로, 도 1에 동적 메모리 (106), 외부 비휘발성 메모리 (108), 스토리지 매체 (110), 및 호스트 디바이스 (116)에 대하여 상기에서 설명된 것처럼 각각 구현될 수 있다.
제어기 (204)는 데이터 스토리지 및 검색에 관련된 비밀 데이터 조작 및/또는 귀결되는 보안 동작들을 포함하는 동작들을 수행하기위한 많은 컴포넌트들을 포함할 수 있다. 제어기 (204)의 컴포넌트들은 보안 동작들, 예컨대 데이터의 암호화 및 복호화를 수행하고, 그리고 비밀 데이터 객체들, 예컨대 암호화 키들을 조작하기 위한 보안 서브시스템 (212)을 포함할 수 있다. 일 실시예에서, 보안 서브시스템 (212)은 제어기 (204) 내부에 인스턴스화(instantiate)된 칩 또는 자체로서 완비된(self-contained) 집적 회로이다. 다른 실시예에서, 보안 서브시스템 (212)은 SOC의 집적 회로 서브시스템일 수 있다. 보안 서브시스템 (212)은 물리적 경계일 수 있고 및/또는 보안 서브시스템 (212)과 데이터 스토리지 시스템 (202)의 다른 컴포넌트들 사이에 연결들의 유형들 및 수에 의해 정의될 수 있는 보안 경계(secure boundary)에 의해 둘러싸일 수 있다. 제어기 (204)는 비밀 데이터 객체들에 대한 액세스를 필요로 하지 않는 제어기 기능들을 수행하기 위한 스토리지 제어기 회로부 (214)를 더 포함할 수 있다. 예를 들어, 스토리지 제어기 회로부 (214)는 데이터 스토리지 시스템 (202)과 호스트 디바이스 (216) 사이에 통신을 위한 인터페이스를 제공할 수 있다. 예를 들어, 스토리지 제어기 회로부 (214)는 착신하는(incoming) 판독 및 기록 요청들을 수신할 수 있고 보안 동작들이 보안 서브시스템 (212)에 의해 수행되는 것을 요청할 수 있다.
메모리/매체 인터페이스들 (254)은 전반적으로 하나 이상의 외부 스토리지 디바이스들 (예를 들어, 동적 메모리 (206), 외부 비휘발성 메모리 (208), 및/또는 스토리지 매체 (210))과 통신 가능하게 하는 하나 이상의 인터페이스들을 포함할 수 있다. 메모리/매체 인터페이스들 (254)은 메모리 인터페이스 (252) 및 매체 인터페이스 (250)를 포함할 수 있다. 메모리 인터페이스 (252)는 보안 서브시스템 (212)의 전송 제어 (234)와 동적 메모리 (206) 및/또는 외부 비휘발성 메모리 (208) 사이의 인터페이스를 제공한다. 상기에서 설명된 것 처럼, 비밀 데이터 객체들을 복호화하기 위한 키가 보안 서브시스템 (212)내에 저장된 채로 있거나 또는 보안 서브시스템 (212)의 외측 스토리지에 대하여 그 자체가 암호화되는 한 일부 비밀 데이터 객체들은 보안 서브시스템 (212)에 대하여 외부에 암호화되어 저장될 수 있다. 메모리 인터페이스 (252)는 전송 제어 (234) 사이에 통신 인터페이스일 수 있어서 보안 서브시스템에 외부 위치됨에도 불구하고 보안 서브시스템 (212)에 의해 제어될 수 있다. 메모리 인터페이스 (252)는 예를 들어, 스토리지 제어기 회로부 (214)의 하나 이상의 컴포넌트들에 의해 또한 제어될 수 있다. 매체 인터페이스 (250)는 호스트 인터페이스 (244)에 발행된 명령들 (예를 들어, 판독/기록 명령들)을 통하여 호스트 디바이스 (216)를 위해 스토리지 매체 (210)를 액세스할 수 있다. 매체 인터페이스 (250)는 스토리지, 액세스, 판독 데이터, 기록 데이터, 삭제 데이터를 할당할 수 있고, 및/또는 스토리지 매체 (210)에 대하여 다른 관리 동작들을 수행할 수 있다.
도 2의 실시예에서, 보안 서브시스템 (212)는 보안 하드웨어 레지스터들 (218), 보안 프로세서 (220), 보안 펌웨어 (222), 보안 지원 하드웨어 (224), 내부 비휘발성 메모리 (226), 내부 RAM (228), 암호화 회로 (230), 복호화 회로 (232), 및 전송 제어 회로 (234)를 포함한다. 보안 하드웨어 레지스터들 (218)은 복수의 하드웨어 레지스터들을 포함할 수 있다. 다양한 실시예들에서, 보안 하드웨어 레지스터들 (218)은 레지스터 파일내 범용 레지스터들일 수 있다. 보안 하드웨어 레지스터들 (218)의 서브셋은 보안 서브시스템 (212)에 대하여 외부에 있는 하나 이상의 컴포넌트들, 예컨대 스토리지 제어기 회로부 (214)의 하나 이상의 컴포넌트들 (이하에 설명되는)에 의해 액세스 가능할 수 있다. 외부 컴포넌트들은 보안 서브시스템 (212)내에서 보안 동작들을 수행하기 위한 정보 예컨대 명령들 및 또는 데이터를 보안 하드웨어 레지스터들 (218)의 서브셋에 기록할 수 있다. 보안 하드웨어 레지스터들 (218)에 외부 컴포넌트들에 의한 액세스는 보안 하드웨어 레지스터들 (218)에 대한 서브셋에 제한될 수 있지만, 보안 서브시스템 (212)에 내부 컴포넌트들 (예를 들어, 보안 프로세서 (220))은 보안 하드웨어 레지스터들 (218)의 전체를 액세스할 수 있다. 다양한 실시예들에서, 보안 하드웨어 레지스터들 (218)은 보안 프로세서 (220)에 의해 수행될 보안 동작을 위한 요청이 수신되었다는 것을 보안 펌웨어 (222)를 실행하는 보안 프로세서 (220)에 통지하도록 구성될 수 있다.
도 2의 실시예에서, 보안 서브시스템 (212)은 비밀 데이터 객체들, 예컨대 암호화 키들을 수반, 생성 및/또는 조작하는 보안 동작들을 수행하기 위한 전용 프로세서 또는 마이크로컨트롤러일 수 있는 보안 프로세서 (220)를 포함한다. 다양한 실시예들에서, 보안 프로세서 (220)는 보안 동작들을 수행하는 것이 가능한 범용 프로세서 또는 특별한 용도 프로세서일 수 있다. 보안 프로세서 (220)는 보안 서브시스템 (212)내에서 보안 동작들을 수행하기 위한 명령들 및/또는 데이터를 수신하기 위해 보안 하드웨어 레지스터들 (218)를 액세스할 수 있다. 보안 프로세서 (220)는 보안 펌웨어 (222)를 액세스 및 실행시킬 수 있다. 다양한 실시예들에서, 보안 펌웨어 (222)는 보안 프로세서 (220)가 수행할 수 있는 동작들을 제어할 수 있다. 예를 들어, 보안 펌웨어 (222)는 보안 프로세서 (220)가 수행할 수 있는 완전한 보안 동작들의 셋을 정의할 수 있다. 보안 프로세서는 보안 펌웨어 (222)에 의해 정의된 보안 동작들의 셋에 제한된 동작들을 수행하도록 구성될 수 있다. 보안 펌웨어 (222)는 보안 서브시스템 (212) 내에 그리고 보안 서브시스템 (212)에 대하여 외부 양쪽에 보안 프로세서 (220)가 통신할 수 있는 컴포넌트들을 또한 정의할 수 있다.
보안 지원 하드웨어 회로 (224)는 보안 서브시스템 (212)에 의해 수행되는 다양한 이산 동작들의 하드웨어 실행을 제공할 수 있다. 당해 기술분야의 통상의 기술자들은 장치 (200)의 다양한 실시예들은 임의 개수의 보안 지원 하드웨어 회로들 (224)을 포함할 수 있거나, 또는 어떠한 보안 지원 하드웨어 회로들 (224)도 포함하지 않을 수 있다는 것을 인식할 것이다. 보안 지원 하드웨어 회로 (224)는 한정되는 것은 아니지만, 데이터 암호화 및 복호화, 시그니처(signature) 계산 및 체크, 및/또는 랜덤 번호 생성을 포함하여 특정 기능들을 수행하기 위한 다양한 회로들을 포함할 수 있다. 이런 동작들은 보안 서브시스템 (212)의 동작 요건들을 충족시키기 위해 실행되는 프로세스들에 단계들일 수 있다. 이와 같이, 보안 지원 하드웨어 회로 (224)는 다양한 하드웨어 서브모듈들을 포함할 수 있고, 각각은 보안 프로세서 (220)에 실행되고 보안 펌웨어 (222)에 의해 제어될 수 있다. 보안 지원 하드웨어 회로 (224)에 의해 수행된 동작들은 보안 동작들의 컴포넌트 동작들, 예컨대 클라이언트 인증, 암호화 키 생성, 키 식별, 키 선택, 및 검색일 수 있다. 다양한 실시예들에서, 보안 지원 하드웨어 회로 (224)는 보안 지원 하드웨어 회로 (224)에 의해 또는 보안 지원 하드웨어 회로에 제공되는 임의의 데이터가 보안 서브시스템 (212)의 외측으로부터 액세스 가능하지 않도록 보안 프로세서 (220)상에서 실행하는 보안 펌웨어 (222)에 의해 완전히 제어된다.
도 2의 실시예에서, 내부 비휘발성 메모리 (226) 및 내부 RAM (228)은 보안 서브시스템 (212)내 다양한 컴포넌트들에 의한 사용을 위한 내부 메모리들을 제공할 수 있다. 내부 비휘발성 메모리 (226) 및 내부 RAM (228) 둘 모두는 보안 펌웨어 (222)를 실행시키는 보안 프로세서 (220)에 의해 액세스될 수 있다. 내부 비휘발성 메모리 (226)는 파워 다운 및 파워 업 사이클들에 걸쳐서 영구적(persistent)인 것을 필요로 할 수 있는 비밀 데이터 객체들 또는 다른 정보를 수용할 수 있다. 내부 RAM (228)은 보안 서브시스템 (212)의 에 의해 사용되는 버퍼 데이터일 수 있다. 예를 들어, 내부 RAM (228)은 외부 스토리지 (예를 들어, 동적 메모리 (206) 및/또는 외부 비휘발성 메모리 (208))로부터 암호화된 비밀 데이터 객체들을 수신할 수 있거나 또는 외부 스토리지 (예를 들어, 동적 메모리 (206) 및/또는 외부 비휘발성 메모리 (208))내 스토리지를 위해 암호화된 비밀 데이터 객체들을 버퍼링할 수 있다. 만약 비밀 데이터 객체들이 보안 서브시스템 (212)내에 잔존하는 비밀 암호화 키에 의해 먼저 암호화된다면 비밀 데이터 객체들은 보안 서브시스템 (212)에 대하여 외부에 저장될 수 있다. 다양한 실시예들에서, 내부 RAM (228)은 전송 제어 회로 (234)를 통하여 동적 메모리 (206) 및/또는 외부 비휘발성 메모리 (208)와 통신할 수 있다. 전송 제어 회로 (234)는 메모리 인터페이스 (252)를 통하여 보안 서브시스템 (212)과 외부 시스템들, 예컨대 스토리지 제어기 회로부 (214), 동적 메모리 (206), 및/또는 외부 비휘발성 메모리 (208) 간의 데이터 전송을 위한 인터페이스를 제공할 수 있다. 당해 기술분야의 통상의 기술자들은 다양한 실시예들이 내부 비휘발성 메모리 (226) 및 내부 RAM (228)을 포함하지 않을 수 있다는 것을 인식할 것이다. 이런 실시예들에서, 보안 서브시스템 (212)은 보안 서브시스템 (212)에 외부에, 예를 들어, 동적 메모리 (206) 및/또는 외부 비휘발성 메모리 (208)에 스토리지를 위한 비밀 정보를 암호화할 수 있다.
암호화 회로 (230) 및 복호화 회로 (232)는 보안 서브시스템 (212) 내부에 상주할 수 있고 (예를 들어, 기록 동작 동안에) 스토리지 제어기 회로부에 의해 제공되거나 또는 (예를 들어, 판독 동작 동안에) 스토리지 제어기 회로부 (214)에 의해 요청된 데이터에 개별적으로 기초하여 암호화 및 복호화 기능들을 수행할 수 있다. 다양한 실시예들에서, 암호화 회로 (230)는 스토리지 제어기 회로부 (214)로부터 암호화를 데이터를 수신한다. 보안 펌웨어 (222)를 실행시키는 보안 프로세서 (220)는 암호화 키 (예를 들어, 내부 비휘발성 메모리 (226)에 저장된 암호화 키)를 암호화 회로 (230)에 제공한다. 암호화 회로 (230)는 제공된 암호화 키를 이용하여 수신된 데이터를 암호화할 수 있고 스토리지 매체 (210)에 저장되도록 암호화된 정보를 메모리/매체 인터페이스들 (254)내 매체 인터페이스 (250)에 제공할 수 있다. 보안 서브시스템 (212)내에서 암호화 기능을 수행함으로써, 모든 비밀 데이터 객체들 (예를 들어, 암호화 키)이 보안 서브시스템 (212)내에 잔존하고 보안 서브시스템 (212)을 정의하는 보안 경계의 외측 컴포넌트들에 액세스될 수 없다. 복호화 회로 (232)가 유사한 방식으로 동작한다. 구체적으로, 복호화 회로 (232)는 스토리지 매체 (210)에 저장된 암호화된 데이터를 검색하기 위한 요청을 수신한다. 복호화 회로는 매체 인터페이스 (250)를 통하여 스토리지 매체 (210)로부터 암호화된 데이터를 검색한다. 보안 펌웨어 (222)를 실행시키는 보안 프로세서 (220)는 복호화 키를 복호화 회로 (232)에 제공한다. 복호화 회로 (232)는 제공된 복호화 키를 이용하여 요청된 데이터를 복호화하고 복호화된 데이터를 스토리지 제어기 회로부 (214)에 제공한다. 보안 서브시스템 (212)내에서 복호화 기능을 수행함으로써, 임의의 비밀 데이터 객체들 (예를 들어, 복호화 키)이 보안 서브시스템 (212)내에 잔존하고 보안 서브시스템 (212)을 정의하는 보안 경계의 외측 컴포넌트들에 액세스될 수 없다.
도 2의 실시예에서, 스토리지 제어기 회로부 (214)는 하나 이상의 시스템 프로세서들 (236), 시스템 하드웨어 레지스터들 (238), 스토리지 시스템 펌웨어 (240), 시스템 지원 하드웨어 (242), 호스트 인터페이스 (244), 기록 데이터 경로 제어 회로 (246), 및 판독 데이터 경로 제어 회로 (248)를 포함한다. 시스템 프로세서는 보안 서브시스템 (212)과 통신하고 비밀 데이터 객체들에 밀접하게 결부되지 않는 동작들을 수행하기 위한 하나 이상의 범용 프로세서들 또는 하나 이상의 특화된 프로세서들 또는 마이크로컨트롤러들일 수 있다. 시스템 프로세서 (236)는 보안 서브시스템 (212)의 보안 경계를 가로질러 보안 하드웨어 레지스터들 (218)로 명령들 및/또는 정보 (예를 들어, 명령 파라미터들)을 제공할 수 있다. 상기에서 논의된 바와 같이, 시스템 프로세서 (236)는 보안 하드웨어 레지스터들 (218)의 서브셋에 대한 액세스(예를 들어, 거기로부터 판독하고 거기에 기록하는 능력)을 가질 수 있다. 보안 서브시스템 (212)내에 비밀 데이터 객체들에 대한 시스템 프로세서 (236)에 의한 액세스를 제한함으로써, 해당 비밀 데이터 객체들의 보안이 증가될 수 있다. 시스템 프로세서 (236)는 스토리지 시스템 펌웨어 (240)를 실행시킬 수 있다. 스토리지 시스템 펌웨어 (240)는 시스템 프로세서 (236)가 수행할 수 있는 동작들을 정의할 수 있다. 추가적으로, 스토리지 시스템 펌웨어 (240)는 보안 프로세서 (220)에 의한 실행을 위해 보안 하드웨어 레지스터들 (218)로 시스템 프로세서 (236)에 의해 어떤 명령들이 제출될 수 있는지를 정의할 수 있다. 이와 같이, 스토리지 제어기 회로부 (214)와 보안 서브시스템 (212)사이의 통신의 유형들 및 컨텐츠는 보안 서브시스템 (212)에 저장된 비밀 데이터 객체들의 보안을 증가시키기 위해서 제한되고 제어될 수 있다.
시스템 하드웨어 레지스터들 (238)은 복수의 하드웨어 레지스터들을 포함할 수 있다. 다양한 실시예들에서, 시스템 하드웨어 레지스터들 (238)은 레지스터 파일내 범용 레지스터들일 수 있다. 시스템 하드웨어 레지스터들 (238)의 전체 또는 서브셋은 보안 서브시스템 (212)의 보안 경계 안쪽에 하나 이상의 컴포넌트들 예컨대 보안 프로세서 (238)에 의해 액세스 가능할 수 있다. 보안 서브시스템 (212)의 컴포넌트들은 시스템 하드웨어 레지스터들 (238)의 서브셋에 정보, 예컨대 보안 동작이 성공적으로 완료된지 확인을 기록할 수 있다. 시스템 하드웨어 레지스터들 (238)에 보안 서브시스템(212)의 컴포넌트들에 의한 액세스는 시스템 하드웨어 레지스터들 (238)에 대한 서브셋에 제한될 수 있지만, 보안 서브시스템 (212)에 대한 외부 컴포넌트들 (예를 들어, 시스템 프로세서 (236))은 시스템 하드웨어 레지스터들 (238)의 전체를 액세스할 수 있다.
호스트 인터페이스 (244)는 표준화된 인터페이스 또는 특화된 인터페이스의 형태로 있을 수 있다. 예를 들어, 호스트 인터페이스(106)는 다른 커넥터들 및 인터페이스들 중에서, SATA(serial advanced technology attachment), PCIe(peripheral component interconnect express), 또는 USB(universal serial bus)일 수 있다. 일반적으로, 인터페이스 (106)는 제어 신호들, 어드레스 정보, 데이터, 및 데이터 스토리지 시스템 (202)과 호스트 디바이스 (216) 사이의 다른 신호들을 전달하기 위한 통신 메커니즘을 제공한다. 다양한 실시예들에서, 호스트 인터페이스 (244)는 호스트 디바이스 (216)로부터 암호화되어 스토리지 매체 (210)에 기록될 기록 명령들 및 데이터를 수신할 수 있다. 호스트 인터페이스 (244)는 판독 명령들을 복호화하기 위해 수신할 수 있고 스토리지 매체 (210)에 저장된 데이터를 리턴할 수 있다.
기록 데이터 경로 제어 회로 (246)는 호스트 인터페이스 (244)로부터 보안 서브시스템 (212) 내 암호화 회로 (230)로 기록 데이터를 가이드하고 제어한다. 기록 데이터 경로 제어 회로는 스토리지 시스템 펌웨어 (240)를 실행시키는 시스템 프로세서 (236)에 의해 제어될 수 있다. 예를 들어, 호스트 인터페이스 (244)는 호스트 디바이스 (216)로부터 스토리지 매체 (210)에 기록될 기록 요청 및 데이터를 수신할 수 있다. 시스템 프로세서 (236)는 기록 동작을 수행하기 위해 보안 하드웨어 레지스터들 (218)에 암호화 명령을 기록할 수 있다. 보안 하드웨어 레지스터들 (218)은 암호화 명령이 수신된 것을 보안 펌웨어 (222)를 실행시키는 보안 프로세서 (220)에 통지할 수 있다. 보안 프로세서 (220)는 암호화 회로 (230)에 암호화 키를 제공할 수 있다. 시스템 프로세서 (236)는 암호화되어 저장될 데이터를 보안 서브시스템 (212)의 보안 경계를 가로질러 암호화 회로 (230)로 제공할 것을 기록 데이터 경로 제어 회로 (246)에 지시할 수 있다. 암호화 회로 (230)는 그런 다음 보안 프로세서 (220)에 의해 제공된 암호화 키를 이용하여 수신된 데이터를 암호화할 수 있다. 따라서, 모든 비밀 데이터 객체들 (예를 들어, 암호화 키)이 보안 서브시스템 (212)내에 잔존하고 보안 서브시스템 (212)에 대하여 외부 컴포넌트들에 의해 액세스 가능하지 않다. 암호화된 데이터는 그런 다음 메모리/매체 인터페이스들 (254)내 매체 인터페이스 (250)에 제공될 수 있고 스토리지 매체 (210)상에 저장될 수 있다.
판독 데이터 경로 제어 회로 (248)는 보안 서브시스템 (212)내 복호화 회로 (232)로부터 호스트 인터페이스 (244)로의 판독 데이터 흐름(flow)을 가이드 및 제어한다. 판독 데이터 경로 제어 회로(248)는 스토리지 시스템 펌웨어 (240)를 실행시키는 시스템 프로세서 (236)에 의해 제어될 수 있다. 예를 들어, 호스트 인터페이스 (244)는 암호화된 포맷으로 스토리지 매체 (210)에 저장된 데이터에 대하여 호스트 디바이스 (216)로부터 판독 요청을 수신할 수 있다. 시스템 프로세서는 보안 서브시스템 (212)내 보안 하드웨어 레지스터들 (218)에 식별된 데이터에 대한 판독 요청을 기록할 수 있다. 보안 하드웨어 레지스터들 (218)은 판독 요청이 수신된 것을 보안 펌웨어 (222)를 실행시키는 보안 프로세서 (220)에 통지할 수 있다. 보안 프로세서 (220)는 복호화 회로 (232)에 요청된 데이터와 연관된 암호화 키를 제공할 수 있다. 복호화 회로 (232)는 매체 인터페이스 (250)를 통하여 스토리지 매체 (210)로부터 요청된 암호화된 데이터를 검색할 수 있다. 복호화 회로 (232)는 그런 다음 보안 프로세서 (220)에 의해 제공된 복호화 키를 이용하여 요청된 데이터를 복호화할 수 있고 판독 데이터 경로 제어 (248)에 복호화된 데이터를 제공할 수 있다. 판독 데이터 경로 제어 회로 (248)는 복호화된 데이터를 호스트 디바이스 (216)에 제공하는 호스트 인터페이스 (244)로 복호화된 데이터를 제공할 수 있다.
도 3 은 도 2의 실시예에 따른 보안 동작들을 프로세싱 하기 위해 전체적으로 (300)으로 지정된 동작 단계들을 도시하는 플로우 차트이다. 동작(302)에서, 보안 서브시스템 (예를 들어, 보안 서브시스템 (212))은 하나 이상의 보안 하드웨어 레지스터들 (예를 들어, 보안 하드웨어 레지스터들 (218))에서 명령을 수신한다. 명령은 보안 서브시스템에 대하여 외부 디바이스, 예컨대 시스템 프로세서 (예를 들어, 시스템 프로세서 (236))로부터 수신될 수 있다. 명령은 보안 서브시스템내에 저장된 암호화 키들에 밀접하게 결부된(implicate) 비밀 데이터 객체들, 예컨대 판독 또는 기록 명령들에 밀접하게 결부된 특정 보안 동작을 실행시키는 지시들을 포함할 수 있다. 명령은 보안 동작을 수행하기 위한 임의의 필요한 파라미터들을 더 포함할 수 있다. 도 2에 대하여 상기에서 논의된 바와 같이, 명령은 시스템 프로세서 (236)에 액세스 가능한 보안 하드웨어 레지스터들 (218)의 서브셋중 하나 이상에서 수신될 수 있다. 시스템 프로세서 (236)에 의해 액세스 가능하지 않은 해당 보안 하드웨어 레지스터들은 시스템 프로세서 (236)로부터 명령들을 수신할 수 없다. 보안 하드웨어 레지스터들 (218)에 대한 액세스를 제한함으로써, 보안 서브시스템 (212)내에 저장된 비밀 데이터 객체들의 보안이 증가될 수 있다.
동작(304)에서, 보안 서브시스템 (212) 또는 그것의 컴포넌트는 명령이 수신되었다는 것을 보안 프로세서 (220)에 통지한다. 보안 하드웨어 레지스터들 (218)은 명령을 수신한 것에 응답하여 보안 프로세서 (220)로 보안 서브시스템 (212)내 내부 버스를 통하여 통지를 송신하도록 구성될 수 있다. 보안 펌웨어 (222)를 실행시키는 보안 프로세서 (220)는 수신된 명령이 어떻게 프로세스 되어야 하는지를 결정할 수 있다. 상기에서 논의된 바와 같이, 보안 프로세서 (220)는 보안 펌웨어 (222)에 의해 정의된 특정 보안 동작들을 수행하도록 제한될 수 있다. 이런 실시예들에서, 보안 프로세서 (220)는 요청된 명령이 보안 펌웨어 (222)에 의해 허용된 경우에만 요청된 명령을 실행할 수 있다. 만약 수신된 명령이 보안 펌웨어 (222)에 의해 정의된 허용된 보안 동작에 해당하지 않으면, 그러면 보안 프로세서 (220)는 예를 들어, 시스템 하드웨어 레지스터들 (238)에 대한 예외의 설명을 기록함으로써 수신된 명령이 보안 펌웨어 (222)에 의해 허용되지 않는 것을 나타내는 예외(exception) 또는 에러를 리턴(return)할 수 있다.
수신된 명령이 허용된 명령인 경우, 보안 서브시스템 (212)은 동작(306)에서 수신된 명령에 기초하여 보안 프로세서 (220) 및/또는 보안 지원 하드웨어 (예를 들어, 보안 지원 하드웨어 회로 (224))로 보안 동작을 실행한다. 보안 프로세서 (220)는 수신된 명령 (예를 들어, 기록 동작, 판독 동작, 암호화/복호화 동작들, 암호화 키 생성, 등)에 의해 요청된 보안 동작을 실행할 수 있다. 보안 동작의 실행 전에, 실행 동안에 및 실행에 이어, 보안 서브시스템 (212)은 모든 비밀 데이터 객체들이 암호화되지 않는 한 보안 경계내에 잔존하는 것을 보장할 수 있다.
동작(308)에서, 보안 서브시스템 (212)은 시스템 하드웨어 레지스터들 (238)에 응답을 송신한다. 보안 프로세서 (220)는 보안 서브시스템 (212)의 보안 경계를 가로질러 응답을 송신할 수 있다. 다양한 실시예들에서, 응답은 수신된 명령에 기초한 적절한 값 또는 값들의 셋일 수 있다. 예를 들어, 응답은 수신된 명령이 성공적으로 완료되었다는 표시일 수 있다. 시스템 프로세서 (236)는 시스템 하드웨어 레지스터들 (238)로부터 값을 판독할 수 있고 응답을 해석할 수 있다.
도 4는 본 발명의 실시예들에 따른 데이터 스토리지 시스템(402)를 포함하여 전체적으로 (400)으로 지정된 장치의 기능 블럭 다이어그램이다. 데이터 스토리지 시스템 (402)은 보안 서브시스템 (412), 스토리지 제어기 회로부 (414), 및 메모리/매체 인터페이스들 (454), 동적 메모리 (406)를 포함하는 제어기 (404), 외부 비휘발성 메모리 (408), 및 스토리지 매체 (410)를 포함할 수 있다. 다양한 실시예들에서, 메모리 매체 인터페이스들 (454) (메모리 인터페이스 (452) 및 매체 인터페이스 (450)를 포함), 동적 메모리 (406), 외부 비휘발성 메모리 (408), 및 스토리지 매체 (410)는 개별적으로 도 1의 실시예에서 메모리/매체 인터페이스들 (118), 동적 메모리 (106), 외부 비휘발성 메모리 (108), 및 스토리지 매체 (110) 및/또는 도 2의 실시예에서 메모리/매체 인터페이스들 (254) (메모리 인터페이스 (252) 및 매체 인터페이스 (250)를 포함), 동적 메모리 (206), 외부 비휘발성 메모리 (208), 및 스토리지 매체 (210)에 대하여 상기에서 설명된 것 처럼 구현될 수 있다. 데이터 스토리지 시스템 (402)는 호스트 디바이스 (416)에 결합될 수 있다. 호스트 디바이스 (416)는 개별적으로 도면들 1 및 2의 실시예들에 호스트 디바이스 (116) 및 호스트 디바이스 (216)에 대하여 상기에서 설명된 것 처럼 구현될 수 있다. 제어기 (404)는 도 1에 제어기 (104)로 구현될 수 있다.
도 4의 실시예에서, 보안 서브시스템 (412)은 복수의 보안 하드웨어 레지스터들 (418), 보안 지원 하드웨어 회로들 (420), 내부 RAM (424), 내부 비휘발성 메모리 (422), 보안 제어 회로 (426), 암호화 회로 (428), 복호화 회로 (430), 및 전송 제어 회로 (432)를 포함한다. 보안 하드웨어 레지스터들 (418), 내부 RAM (424), 내부 비휘발성 메모리 (422), 암호화 회로 (428), 복호화 회로 (430), 및 전송 제어 회로 (432)는 개별적으로, 도 2의 실시예의 보안 하드웨어 레지스터들 (218), 내부 RAM (228), 내부 비휘발성 메모리 (226), 암호화 회로 (230), 복호화 회로 (232), 및 전송 제어 회로 (234)에 대하여 상기에서 설명된 것 처럼 구현될 수 있다. 도 4의 실시예에서, 보안 지원 하드웨어 회로들은 전용 보안 프로세서의 부존재시에 보안 경계내에서 보안 동작들을 수행하는 기능을 제공한다.
보안 제어 회로 (426)는 보안 서브시스템 (412)내 컴포넌트들간에 통신 기능을 제공한다. 추가적으로, 보안 제어 회로 (426)는 보안 서브시스템 (412)와 스토리지 제어기 회로부 (414) 사이의 통신 경로를 제공할 수 있다. 보안 제어 회로 (426)의 특정 기능들은 이하에서 보다 상세하게 설명된다.
보안 지원 하드웨어 회로들 (420)은 이산의 보안 동작들을 완전하게 실행시키도록 구성된 복수의 하드웨어 회로들일 수 있다. 보안 지원 하드웨어 회로들 (420)에 의해 수행되는 이산의 보안 동작들의 예들은 랜덤 번호 생성, 암호화 키 생성, 시그니처 계산, 대칭 암호화 또는 복호화], 비대칭 암호화 또는 복호화, 데이터 조작 동작들, 및 데이터 움직임 동작들을 포함하지만, 이것에 한정되지는 않는다. 하나 이상의 보안 지원 하드웨어 회로들 (420)은 상기에서 설명된 것 처럼 에 대하여 도 2에 대하여 상기에서 설명된 것 처럼 보안 하드웨어 레지스터들 (418)가 명령을 수신한 것에 응답하여 트리거링 될 수 있다. 어떤 실시예들에서, 보안 하드웨어 레지스터들 (418)에 특정한 레지스터 위치들은 특정한 보안 지원 하드웨어 회로들 (420)에 해당할 수 있다. 보안 하드웨어 레지스터들 (418)은 보안 제어 회로 (426)를 통하여 명령 (및 임의의 관련된 파라미터들)이 하나 이상의 보안 지원 하드웨어 회로들 (420)에 의한 실행을 위해 보안 하드웨어 레지스터들 (418)에 의해 수신되었다는 것을 하나 이상의 보안 지원 하드웨어 회로들 (420)에 통지를 제공할 수 있다. 일단 보안 지원 하드웨어 회로들 (420)이 보안 동작의 실행을 완료한 후에, 보안 지원 하드웨어 회로 (420)는 보안 하드웨어 레지스터들 (418)에 또는 스토리지 제어기 회로부 (414)에 다시 보안 동작의 완료를 나타내는 값을 제공할 수 있다.
보안 지원 하드웨어 회로 (420)는 보안 서브시스템 (412)에 대하여 외부의 컴포넌트들(예를 들어, 메모리 액세스 하드웨어 (414))에 액세스될 수 없고 및/또는 보안 서브시스템 (412)내에 유지되는 비밀 데이터 객체들 (예를 들어, 암호화 키들)을 사용, 액세스, 생성 또는 다른 식으로 밀접하게 결부될 수 있다. 비밀 데이터 객체들의 보안을 유지하기 위해서, 보안 지원 하드웨어 회로 (420)는 스토리지 제어기 회로부 (414)에 의해 액세스 가능하지 않은 보안 하드웨어 레지스터들 (418)내 레지스터 위치들 또는 내부 메모리 시스템, 예컨대 내부 RAM (424), 내부 비휘발성 메모리 (422)에 비밀 데이터 객체들을 저장할 수 있다. 비밀 데이터 객체들은 또한 비밀 데이터 객체들을 복호화하기 위한 키들이 보안 서브시스템 (412)내에 잔존하는 한 메모리/매체 인터페이스들 (454)를 통하여 외부 메모리 디바이스, 예컨대 동적 메모리 (406) 및/또는 외부 비휘발성 메모리 (408)에 암호화되어 저장될 수 있다.
특정 보안 지원 하드웨어 회로 (420)의 예들이 이제 설명될 것이다. 이 논의는 단지 예제의 방식으로 제공되고, 상이한 보안 동작들을 수행하는 추가 회로들이 본 개시의 범위를 일탈하지 않고서 가능하다는 것이 이해되어야 한다.
제 1 예제에서, 보안 지원 하드웨어 회로 (420)는 랜덤 번호 생성을 가능하게 한다. 랜덤 번호를 생성하기 위한 명령이 적용가능한 보안 지원 하드웨어 회로 (420)에 통지하는 보안 하드웨어 레지스터들 (418)에서 수신될 수 있다. 보안 지원 하드웨어 회로 (420)는 제너레이터로부터 랜덤 비트들의 시퀀스를 생성하고, 예를 들어, 결정론적 랜덤 비트 제너레이터에 의한 조건 알고리즘(conditioning algorithm)에 따라 정의된 길이, 조건 축적된 값의 보유 레지스터(holding register)로 비트들의 시퀀스를 축적하고, 결과를 내부 메모리 위치 (예를 들어, 내부 RAM (424))에 기록하고, 완료 통지를 스토리지 제어기 회로부 (414)에 송신한다.
제 2 예제에서, 보안 지원 하드웨어 회로 (420)는 암호화 키 생성을 가능하게 한다. 암호화 키들의 생성은 암호화 키로서 역할을 하는 랜덤 번호 생성 보안 지원 하드웨어 회로 (420)에 의해 생성된 앞에서 생성된 비밀 데이터 객체, 예컨대 랜덤 번호에 의존할 수 있다. 암호화 키 생성 보안 지원 하드웨어 회로 (420)는 암호화 키를 생성하기 위해 임의의 적절한 변환 기능을 구현할 수 있다. 동작시에, 스토리지 제어기 회로부 (414)의 컴포넌트는 암호화 키를 생성하기 위한 명령을 보안 하드웨어 레지스터들 (418)에 제공할 수 있고 앞에서 생성된 랜덤 번호에 어드레스를 공급할 수 있고, 변환을 파라미터로 나타내고(parameterize), 결과 암호화 키에 대한 위치를 정의한다. 암호화 키 생성 보안 지원 하드웨어 회로 (420)는 암호화 키를 생성하고 결과 암호화 키를 지정된 위치에 저장하기 위해 지정된 위치에서 랜덤 번호에 기초하여 정의된 변환을 수행할 수 있다. 암호화 키 생성 보안 지원 하드웨어 회로 (420)는 그런 다음 암호화 키가 성공적으로 생성되었는지 및 암호화 키의 위치를 스토리지 제어기 회로부 (414)에 통지(notice), 예컨대 이벤트 인터럽트(event interrupt)를 송신할 수 있다.
제 3 예제에서, 보안 지원 하드웨어 회로 (420)는 시그니처 계산을 가능하게 한다. 시그니처 계산 보안 지원 하드웨어 회로 (420)는 시그니처 값을 첨부 또는 체크함으로써 정보의 유효성(validation)을 요구하는 보안 동작들에 대하여 사용될 수 있다. 스토리지 제어기 회로부 (414)는 보안 하드웨어 레지스터들 (418)에 동작 코드, 디지털 방식으로 사인되거나 또는 체크될 값의 어드레스, 값의 길이, 시그니처 계산 그 자체의 파라미터들, 및 결과 시그니처 또는 시그니처 체크 결과에 대한 위치를 기록할 수 있다. 시그니처 계산 보안 지원 하드웨어 회로 (420)는 그런 다음 제공된 파라미터들에 기초하여 시그니처 값을 생성 또는 체크할 수 있고 결과를 지정된 위치에 저장할 수 있다. 시그니처 계산 보안 지원 하드웨어 회로 (420)는 그런 다음 시그니처 값이 성공적으로 생성되거나 또는 체크되었는지 및 결과의 위치를 스토리지 제어기 회로부 (414)에 통지, 예컨대 이벤트 인터럽트를 송신할 수 있다.
제 4 예제에서, 보안 지원 하드웨어 회로 (420)는 대칭(symmetric) 암호화 및/또는 복호화를 가능하게 한다. 대칭 암호화 보안 지원 하드웨어 회로 (420)는 보안 서브시스템 (412)의 보안 경계 외측에 이동될 비밀 데이터 객체들 또는 다른 데이터를 은닉하기 위해 사용될 수 있다. 스토리지 제어기 회로부 (414)는 동작을 정의하고 (예를 들어, 암호화 또는 복호화할지 여부), 임의의 피연산자(operand)들 (예를 들어, 암호화/복호화 키), 초기화 벡터, 적용가능한 경우, 암호화/복호화될 데이터의 위치 및 길이, 및 결과를 저장할 위치/길이를 정의하는 보안 하드웨어 레지스터들 (418)를 액세스 할 수 있다. 대칭 암호화 보안 지원 하드웨어 회로 (420)는 그런 다음 데이터가 성공적으로 암호화/복호화되었는지 및 결과의 위치를 스토리지 제어기 회로부 (414)에 통지, 예컨대 이벤트 인터럽트를 송신할 수 있다.
제 5 예제에서, 보안 지원 하드웨어 회로 (420)는 RSA 또는 다른 알고리즘들에 기초하여 비대칭(asymmetric) 암호화 및/또는 복호화 예컨대 공중 키(public key)/사설 키(private key) 동작들을 가능하게 한다. 대칭 암호화 보안 지원 하드웨어 회로 (420)는 보안 서브시스템 (412)의 보안 경계 외측에 이동될 비밀 데이터 객체들 또는 다른 데이터를 은닉하기 위해 사용될 수 있다. 스토리지 제어기 회로부 (414)는 동작을 정의하고 (예를 들어, 암호화또는 복호화할지 여부), 임의의 피연산자들 (예를 들어, 암호화 및 복호화 키), 초기화 벡터, 적용가능한 경우, 암호화/복호화될 데이터의 위치 및 길이, 및 결과를 저장할 위치/길이를 정의하는, 보안 하드웨어 레지스터들 (418)를 액세스 할 수 있다. 비대칭 암호화 보안 지원 하드웨어 회로 (420)는 그런 다음 데이터가 성공적으로 암호화 또는 복호화되었는지 및 결과의 위치를 스토리지 제어기 회로부 (414)에 통지, 예컨대 이벤트 인터럽트를 송신할 수 있다.
제 6 예제에서, 하나 이상의 보안 지원 하드웨어 회로들 (420)이 데이터 조작 기능들을 수행할 수 있다. 예를 들어, 데이터 조작(data manipulation)은 스토리지 제어기 회로부 (414)에 의해 액세스 가능하지 않은 위치(예를 들어, 내부 RAM (424) 또는 내부 비휘발성 메모리 (422))로부터의 키 값을 스토리지 제어기 회로부 (414)가 간접적으로 액세스 키 값을 위치(예를 들어, 보안 하드웨어 레지스터들 (418))에 전송하는 것을 포함할 수 있다.
제 7 예제에서, 하나 이상의 보안 지원 하드웨어 회로들 (420)이 데이터 이동 기능들을 수행할 수 있다. 데이터 이동 보안 지원 하드웨어 회로의 일 예제는 보안 서브시스템 (412)과 외부 메모리 디바이스들, 예컨대 동적 메모리 (406) 및/또는 외부 비휘발성 메모리 (408) 사이의 데이터 전송을 지원하는 전송 제어 회로 (432)일 수 있다.
스토리지 제어기 회로부 (414)는 시스템 프로세서 (434), 스토리지 시스템 펌웨어 (436), 보안 펌웨어 (438), 시스템 하드웨어 레지스터들 (440), 시스템 지원 하드웨어 (442), 호스트 인터페이스 (444), 기록 데이터 경로 제어 회로 (446), 및 판독 데이터 경로 제어 회로 (448)를 포함할 수 있다. 시스템 프로세서 (434), 스토리지 시스템 펌웨어 (436), 시스템 하드웨어 레지스터들 (440), 시스템 지원 하드웨어 (442), 호스트 인터페이스 (444), 기록 데이터 경로 제어 회로 (446), 판독 데이터 경로 제어 회로 (448)는 개별적으로, 도 2에 시스템 프로세서 (236), 스토리지 시스템 펌웨어 (240), 시스템 하드웨어 레지스터들 (238), 시스템 지원 하드웨어 (242), 호스트 인터페이스 (244), 기록 데이터 경로 제어 회로 (246), 판독 데이터 경로 제어 회로 (248)에 대하여 상기에서 설명된 것 처럼 구현될 수 있다.
도 4의 실시예는 스토리지 제어기 회로부 (414)에 보안 펌웨어 (438)를 포함하고 시스템 프로세서 (434)는 스토리지 시스템 펌웨어 (436) 및 보안 펌웨어 (438) 양쪽을 실행시킬 책임이 있다. 보안 펌웨어 (438)는 보안 지원 하드웨어 회로들 (420)에 의해 실행될 보안 서브시스템 (412)의 시스템 프로세서 (434)에 의해 요청될 수 있는 특정 보안 동작들을 정의한다. 따라서, 수행될 동작들 및 보안 서브시스템 (412)내에 저장된 비밀 데이터 객체들 에 대한 액세스는 보안 서브시스템 (412)내에 전용 보안 프로세서를 요구하지 않고서 유지될 수 있다.
도 5 은 도 4의 실시예에 따른 보안 동작들을 수행하기 위해 전체적으로 (500)으로 지정된 동작 단계들을 도시하는 플로우 차트이다.
동작(502)에서, 보안 서브시스템(412)은 하나 이상의 보안 하드웨어 레지스터들 (418)에서 명령을 수신한다. 예를 들어, 보안 펌웨어 (438)를 실행시키는 시스템 프로세서 (434)는 보안 서브시스템 (412)내에 유지된 비밀 데이터 객체들을 생성, 이동, 수정 또는 다른식으로 밀접하게 결부되는 하나 이상의 보안 동작들을 수행하기 위한 명령을 송신할 수 있다. 다양한 실시예들에서, 시스템 프로세서 (434)는 보안 하드웨어 레지스터들 (418)의 서브셋을 액세스하는 것에 제한될 수 있다. 동작(504)에서, 보안 서브시스템(412)은 보안 동작을 수행하기 위해 하나 이상의 적용가능한 보안 지원 하드웨어 회로들 (410)을 식별한다. 보안 서브시스템(412)은 예를 들어, 수신된 명령을 디코딩함으로써 하나 이상의 적용가능한 보안 지원 하드웨어 회로들을 식별할 수 있다. 다양한 실시예들에서, 수신된 명령은 동작을 수행하기 위한 특정 보안 지원 하드웨어 회로 (420)를 표시할 수 있다. 일부 실시예들에서, 명령은 특정 보안 지원 하드웨어 회로들 (420)에 해당할 수 있는 특정 보안 하드웨어 레지스터 (418)에서 수신될 수 있다. 이런 실시예들에서, 보안 제어 회로 (426)는 명령의 수신 검출에 기초하여 적용가능한 보안 지원 하드웨어 회로 (420)에 수신된 명령을 자동으로 전송할 수 있다.
동작(506)에서, 보안 서브시스템은 적용가능한 보안 지원 하드웨어 회로 (420), 또는 다른 컴포넌트들 (예를 들어, 암호화 회로 (428) 또는 복호화 회로 (430))로 보안 동작을 수행함으로써 요청된 명령을 실행한다. 이산의 보안 동작들을 수행하기 위한 다양한 예제 보안 지원 하드웨어 회로들 (420)이 도 4에 대하여 상기에서 설명된다. 동작(508)에서, 보안 서브시스템 (412)은 시스템 하드웨어 레지스터들 (440)에 결과를 기록한다. 다양한 실시예들에서, 결과는 보안 동작이 성공적으로 완료되었는지 및/또는 임의의 그 결과로 생긴 데이터 (예를 들어, 복호화된 데이터)의 위치를 나타내는 값을 포함할 수 있다. 보안 제어 회로 (426)는 보안 서브시스템 (412)과 시스템 하드웨어 레지스터들 (440)사이의 통신 인터페이스를 제공할 수 있다.
도 6 은 본 발명의 실시예에 따른 보안 동작들을 수행하기 위해 전체적으로 (600)으로 지정된 동작 단계들을 도시하는 플로우 차트이다.
동작(602)에서, 보안 서브시스템은 보안 하드웨어 레지스터들 (예를 들어, 보안 하드웨어 레지스터들 (218, 418))에서 명령을 수신한다. 동작(604)에서, 보안 서브시스템은 수신된 명령이 기록 명령인지 여부를 결정한다. 다양한 실시예들에서, 보안 서브시스템은 명령이 기록된 특정한 하드웨어 레지스터 덕분에 또는 보안 프로세서 (예를 들어, 보안 프로세서 (220))에 의해 해석된 명령의 포맷에 기초하여 수신된 명령이 기록 명령인지 여부를 결정할 수 있다. 만약 보안 서브시스템이 수신된 명령이 기록 명령 (결정 블럭 (604), 예(YES) 분기)인 것을 결정하면, 그러면 보안 서브시스템은 동작(606)에서 기록될 데이터를 수신한다. 동작(608)에서, 보안 서브시스템은 암호화 회로 (예를 들어, 암호화 회로들 (230,428))를 이용하여 데이터를 암호화한다. 동작 (610)에서, 보안 서브시스템은 암호화된 데이터를 외부 메모리, 예컨대 스토리지 매체 (210,410)에 저장한다. 동작(624)에서, 보안 서브시스템은 시스템 하드웨어 레지스터들에 결과를 송신한다. 다양한 실시예들에서, 결과는 데이터가 성공적으로 암호화되었는지, 스토리지 매체(210, 410)에 기록되었는지를 나타내는 값을 포함할 수 있다.
만약 보안 서브시스템이 수신된 명령이 기록 명령이 아닌 것 (결정 블럭 (604), 아니오(NO) 분기)을 결정하면, 그러면 보안 서브시스템은 동작(612)에서 수신된 명령이 판독 명령인지 여부를 결정한다. 만약 보안 서브시스템이 수신된 명령이 판독 명령 (결정 블럭 (612), 예(YES) 분기)인 것을 결정하면, 그러면 보안 서브시스템은 동작(614)에서 외부 메모리 디바이스, 예컨대 스토리지 매체 (210,410)로부터 판독될 데이터를 검색한다. 동작(616)에서, 보안 서브시스템은 복호화 회로 (예를 들어, 복호화 회로들 (232,430))를 이용하여 검색된 데이터를 복호화한다. 동작 (618)에서, 보안 서브시스템은 보안 서브시스템에 대하여 외부 위치에 복호화된 데이터를 전송한다. 예를 들어, 보안 서브시스템은 복호화된 데이터를 판독 데이터 경로 제어 회로 (예를 들어, 판독 데이터 경로 제어 회로들 (248,448))에 제공할 수 있다. 동작(624)에서, 보안 서브시스템은 시스템 하드웨어 레지스터들에 결과를 송신한다. 다양한 실시예들에서, 결과는 데이터가 성공적으로 검색되었는지, 복호화되었는지, 판독 데이터 경로 제어 회로에 제공되었는지를 나타내는 값을 포함할 수 있다.
만약 보안 서브시스템이 수신된 명령이 판독 명령이 아닌 것 (결정 블럭 (612), 아니오(NO) 분기)을 결정하면, 그러면 보안 서브시스템은 동작(620)에서 어떤 유형의 보안 동작이 요청된지 여부를 결정한다. 동작(622)에서, 보안 서브시스템은 결정된 유형의 동작에 기초하여 보안 동작을 실행한다. 보안 동작은 예를 들어, 보안 프로세서, 예컨대 보안 프로세서 (220)에 의해, 또는 하나 이상의 보안 하드웨어 지원 회로들, 예컨대 보안 하드웨어 지원 회로들 (224,420)에 의해 실행될 수 있다. 동작(624)에서, 보안 서브시스템은 보안 동작이 성공적으로 완료되었다는 것을 표시할 수 있는, 결과를 시스템 하드웨어 레지스터들에 송신한다.

Claims (34)

  1. 장치에 있어서,
    하나 이상의 비밀 데이터 객체들을 저장하도록 구성된 메모리 디바이스;
    상기 보안 펌웨어를 실행시키고 상기 하나 이상의 비밀 데이터 객체들을 조작하기 위한 복수의 동작들에 제한된 동작들의 셋을 수행하도록 구성된 프로세서 ; 및
    액세스 가능한 상기 보안 동작들을 수행하기 위한 지시들을 수신하도록 구성되고 상기 프로세서에 의해 액세스 가능한 복수의 보안 하드웨어 레지스터들을 포함하는, 장치.
  2. 청구항 1에 있어서,
    메모리 디바이스상에 저장되고 하나 이상의 비밀 데이터 객체들을 조작하기 위해 상기 프로세서에 의해 실행 가능한 복수의 동작들을 정의하는 보안 펌웨어를 더 포함하는, 장치.
  3. 청구항 1에 있어서, 상기 하나 이상의 비밀 데이터 객체들은 적어도 하나의 암호화 키를 포함하는, 장치.
  4. 청구항 1에 있어서,
    상기 하나 이상의 비밀 데이터 객체들을 조작하는 적어도 하나의 동작을 수행하도록 구성된 적어도 하나의 보안 지원(assist) 하드웨어 회로를 더 포함하는, 장치.
  5. 청구항 4에 있어서, 상기 적어도 하나의 동작은 데이터 암호화, 데이터 복호화, 시그니처(signature) 계산 및 체크, 및 랜덤 번호 생성 중 적어도 하나를 포함하는, 장치.
  6. 청구항 1에 있어서,
    복수의 데이터를 수신하고 하나 이상의 비밀 데이터 객체들에 기초하여 상기 복수의 데이터를 암호화하도록 구성된 암호화 회로를 더 포함하는, 장치.
  7. 장치에 있어서,
    하나 이상의 비밀 데이터 객체들을 저장하기 위한 내부 메모리 디바이스;
    상기 하나 이상의 비밀 데이터 객체들을 이용하여 동작을 수행하기 위한 명령을 수신하도록 구성된 하나 이상의 보안 하드웨어 레지스터(register)들; 및
    상기 하나 이상의 비밀 데이터 객체들을 이용하여 이산의(discrete) 동작들을 수행하도록 구성된 하나 이상의 보안 지원 하드웨어 회로들을 포함하는, 장치.
  8. 청구항 7에 있어서, 상기 비밀 데이터 객체들은 상기 장치의 외측에 디바이스들에 액세스될 수 없는, 장치.
  9. 청구항 7에 있어서, 상기 이산의 동작들은 랜덤 번호 생성, 암호화 키 생성, 시그니처 계산, 시그니처 검증(signature verification), 대칭 암호화, 대칭 복호화, 비대칭 암호화, 및 비대칭 복호화 중 적어도 하나를 포함하는, 장치.
  10. 청구항 7에 있어서, 상기 하나 이상의 보안 하드웨어 레지스터들의 각각은 상이한 보안 지원 하드웨어 회로에 대응하는, 장치.
  11. 청구항 7에 있어서, 상기 명령들은 상기 장치에 외부에 메모리상에 저장된 보안 펌웨어를 실행시키는 시스템 프로세서로부터 수신된, 장치.
  12. 장치에 있어서,
    하나 이상의 비밀 데이터 객체들을 수반하는 하나 이상의 보안 동작을 수행하도록 구성된 보안 서브시스템;
    상기 보안 서브시스템이 상기 하나 이상의 보안 동작들을 수행하는 것을 요청하도록 구성된 메모리 액세스 회로를 포함하는, 장치.
  13. 청구항 12에 있어서,
    상기 하나 이상의 비밀 데이터 객체들을 저장하도록 구성된 하나 이상의 스토리지 디바이스들을 더 포함하는, 장치.
  14. 청구항 12에 있어서, 상기 보안 서브시스템은 :
    상기 하나 이상의 보안 동작들의 수행을 제어하도록 구성되고 상기 하나 이상의 메모리 디바이스들상에 저장된 보안 펌웨어; 및
    상기 하나 이상의 보안 동작들을 수행하고 상기 보안 펌웨어를 실행하도록 구성된 보안 프로세서를 포함하는, 장치.
  15. 청구항 14에 있어서, 상기 보안 서브시스템은 :
    상기 보안 서브시스템이 상기 하나 이상의 보안 동작들을 수행하는 상기 요청을 제어하도록 구성되고 상기 시스템 프로세서에 의한 실행을 위한 보안 펌웨어를 포함하는, 장치.
  16. 청구항 12에 있어서, 상기 메모리 액세스 회로는 :
    상기 보안 서브시스템이 상기 하나 이상의 보안 동작들을 수행하는 것을 요청하도록 구성된 시스템 프로세서를 포함하는, 장치.
  17. 청구항 12에 있어서, 상기 보안 서브시스템은 :
    하나 이상의 이산의 보안 동작들을 수행하도록 구성된 하나 이상의 보안 지원 하드웨어 회로들을 포함하는, 장치.
  18. 청구항 12에 있어서, 상기 보안 서브시스템은 :
    상기 하나 이상의 비밀 데이터 객체들을 이용하여 데이터를 암호화하도록 구성된 암호화 회로; 및
    상기 하나 이상의 비밀 데이터 객체들을 이용하여 데이터를 복호화하도록 구성된 복호화 회로를 포함하는, 장치.
  19. 방법에 있어서,
    보안 하드웨어 레지스터에서, 하나 이상의 비밀 데이터 객체들을 이용하여 보안 동작을 실행하기 위한 요청을 수신하는 단계;
    전용 보안 프로세서로, 상기 보안 동작을 실행하는 단계; 및
    상기 보안 동작 실행에 응답하는 값을 보안되지 않은(unsecure) 하드웨어 레지스터에 송신하는 단계를 포함하되,
    상기 보안 하드웨어 레지스터, 상기 하나 이상의 비밀 데이터 객체들, 및 상기 전용 보안 프로세서는 보안 경계(secure boundary)내에 위치되는, 방법.
  20. 청구항 19에 있어서,
    상기 보안 동작을 수행하기 위한 상기 수신된 요청을 상기 전용 보안 프로세서에 통지하는 단계를 더 포함하는, 방법.
  21. 청구항 19에 있어서, 상기 전용 보안 프로세서는 상기 보안 경계내 메모리 디바이스상에 저장된 전용 보안 펌웨어에 기초하여 상기 보안 동작을 실행하는, 방법.
  22. 청구항 21에 있어서, 상기 전용 보안 펌웨어는 제한된 수의 보안 동작들을 정의하는, 방법.
  23. 청구항 19에 있어서, 상기 보안 동작을 실행하는 단계는 :
    상기 하나 이상의 비밀 데이터 객체들을 이용하여 데이터를 암호화하는 단계; 및
    상기 보안 경계에 외부에 스토리지 디바이스에 상기 암호화된 데이터를 저장하는 단계를 포함하는, 방법.
  24. 청구항 19에 있어서, 상기 보안 동작을 실행하는 단계는 :
    상기 보안 경계에 외부에 스토리지 디바이스로부터 암호화된 데이터를 검색하는 단계; 및
    상기 하나 이상의 비밀 데이터 객체들을 이용하여 상기 암호화된 데이터를 복호화하는 단계를 포함하는, 방법.
  25. 장치에 있어서,
    메모리 동작들을 수행하기 위한 지시들을 수신하도록 구성된 메모리 액세스 회로로서, 상기 메모리 동작들 중 적어도 하나는 비밀 데이터 객체를 조작하는, 상기 메모리 액세스 회로;
    상기 비밀 데이터 객체를 조작함으로써 상기 적어도 하나의 메모리 동작을 수행하기 위한 상기 메모리 액세스 회로로부터 지시들을 수신하도록 구성된 보안 서브시스템 회로를 포함하는, 장치.
  26. 청구항 25에 있어서, 상기 보안 서브시스템 회로는 제한된 수의 동작들을 수행하기 위한 프로세서를 포함하고, 상기 제한된 수의 동작들은 상기 비밀 데이터 객체를 조작하는 상기 적어도 하나의 메모리 동작을 포함하는, 장치.
  27. 청구항 25에 있어서, 상기 보안 서브시스템 회로는 제한된 수의 동작들을 수행하기 위한 복수의 이산의 하드웨어 회로들을 포함하고, 상기 제한된 수의 동작들은 상기 비밀 데이터 객체를 조작하는 상기 적어도 하나의 메모리 동작을 포함하는, 장치.
  28. 청구항 25에 있어서, 상기 보안 서브시스템 회로는 :
    복수의 보안 하드웨어 레지스터들을 포함하되; 상기 복수의 보안 하드웨어 레지스터들의 서브셋은 상기 비밀 데이터 객체를 조작함으로써 상기 적어도 하나의 메모리 동작을 수행하기 위한 상기 지시들을 수신하도록 구성된, 장치.
  29. 방법에 있어서,
    하나 이상의 비밀 데이터 객체들을 수반하는 보안 동작을 실행하기 위한 요청을 보안 하드웨어 레지스터에서 수신하는 단계;
    상기 보안 동작을 실행하도록 구성된 복수의 보안 지원 하드웨어 회로들 중 하나 이상을 식별하는 단계; 및
    상기 하나 이상의 식별된 보안 지원 하드웨어 회로들을 이용하여 상기 보안 동작을 실행하는 단계를 포함하는, 방법.
  30. 청구항 29에 있어서,
    상기 보안 동작 실행에 응답하는 값을 보안되지 않은 하드웨어 레지스터에 송신하는 단계를 더 포함하되,
    상기 보안 하드웨어 레지스터, 상기 하나 이상의 비밀 데이터 객체들, 및 상기 전용 보안 프로세서는 보안 경계내에 메모리상에 저장된, 방법.
  31. 청구항 29에 있어서, 상기 보안 하드웨어 레지스터는 상기 하나 이상의 보안 지원 하드웨어 회로들에 대응하는, 방법.
  32. 청구항 29에 있어서, 상기 보안 동작은 암호화 또는 복호화 동작을 포함하는, 방법.
  33. 청구항 32에 있어서, 상기 하나 이상의 비밀 데이터 객체들은 하나 이상의 암호화 키들을 포함하는, 방법.
  34. 청구항 29에 있어서, 상기 요청은 보안 펌웨어를 실행시키는 메모리 시스템 프로세서로부터 수신된, 방법.
KR1020187010837A 2015-10-06 2016-09-28 보안 서브시스템 KR102139179B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/876,600 2015-10-06
US14/876,600 US9864879B2 (en) 2015-10-06 2015-10-06 Secure subsystem
PCT/US2016/054106 WO2017062242A1 (en) 2015-10-06 2016-09-28 Secure subsystem

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020207021507A Division KR102176612B1 (ko) 2015-10-06 2016-09-28 보안 서브시스템

Publications (2)

Publication Number Publication Date
KR20180045039A true KR20180045039A (ko) 2018-05-03
KR102139179B1 KR102139179B1 (ko) 2020-07-30

Family

ID=58447919

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020187010837A KR102139179B1 (ko) 2015-10-06 2016-09-28 보안 서브시스템
KR1020207021507A KR102176612B1 (ko) 2015-10-06 2016-09-28 보안 서브시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020207021507A KR102176612B1 (ko) 2015-10-06 2016-09-28 보안 서브시스템

Country Status (6)

Country Link
US (3) US9864879B2 (ko)
EP (1) EP3360047B1 (ko)
KR (2) KR102139179B1 (ko)
CN (2) CN108139984B (ko)
TW (2) TWI672610B (ko)
WO (1) WO2017062242A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9864879B2 (en) 2015-10-06 2018-01-09 Micron Technology, Inc. Secure subsystem
US20190042781A1 (en) * 2017-08-04 2019-02-07 Bitdefender IPR Management Ltd. Secure Storage Device
DE102017118164A1 (de) * 2017-08-09 2019-02-14 Infineon Technologies Ag Kryptographische schaltung und datenverarbeitung
CN108683647B (zh) * 2018-04-28 2020-09-11 重庆交通大学 一种基于多重加密的数据传输方法
CN110490008B (zh) * 2018-05-14 2021-08-10 英韧科技(上海)有限公司 安全装置及安全芯片
CN110580420B (zh) * 2018-06-11 2023-03-28 阿里巴巴集团控股有限公司 基于集成芯片的数据处理方法、计算机设备、存储介质
CN108958779A (zh) * 2018-09-20 2018-12-07 广东美的暖通设备有限公司 固件升级管理方法、装置及计算机可读存储介质
CN112231719A (zh) * 2019-07-15 2021-01-15 美光科技公司 密码密钥管理
US11264063B2 (en) 2019-08-21 2022-03-01 Macronix International Co., Ltd. Memory device having security command decoder and security logic circuitry performing encryption/decryption commands from a requesting host
US20230074708A1 (en) * 2021-09-08 2023-03-09 Qualcomm Incorporated Devices and methods utilizing sensor information for increased trust level
US11960769B2 (en) 2022-02-14 2024-04-16 Macronix International Co., Ltd. High performance secure read in secure memory providing a continuous output of encrypted information and specific context
US11796591B1 (en) * 2022-04-04 2023-10-24 Ambarella International Lp Smart storage of shutdown LBIST status
CN115391845B (zh) * 2022-10-28 2023-01-06 摩尔线程智能科技(北京)有限责任公司 密钥管理设备和方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110044451A1 (en) * 2007-07-25 2011-02-24 Panasonic Corporation Information processing apparatus and falsification verification method
US8332931B1 (en) * 2008-09-04 2012-12-11 Marvell International Ltd. Processing commands according to authorization

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
FR2788353B1 (fr) * 1999-01-11 2001-02-23 St Microelectronics Sa Microprocesseur avec circuits de protection pour securiser l'acces a ses registres
AUPQ993100A0 (en) * 2000-09-06 2000-09-28 Software Engineering Australia (Western Australia) Limited System and method for transmitting and storing sensitive data transmitted over a communications network
US6631453B1 (en) * 2001-02-14 2003-10-07 Zecurity Secure data storage device
BRPI0315450B1 (pt) * 2002-10-31 2019-12-17 Ericsson Telefon Ab L M circuito eletrônico à prova de violação para implementação em um dispositivo, dispositivo implementado com um circuito eletrônico à prova de violação, e, método de gerenciamento de dados de segurança para um dispositivo
US8566616B1 (en) * 2004-09-10 2013-10-22 Altera Corporation Method and apparatus for protecting designs in SRAM-based programmable logic devices and the like
US9177176B2 (en) 2006-02-27 2015-11-03 Broadcom Corporation Method and system for secure system-on-a-chip architecture for multimedia data processing
US8683212B2 (en) 2006-10-06 2014-03-25 Broadcom Corporation Method and system for securely loading code in a security processor
JP4912921B2 (ja) * 2007-02-27 2012-04-11 富士通セミコンダクター株式会社 セキュアプロセッサシステム、セキュアプロセッサ及びセキュアプロセッサシステムの制御方法
US8171309B1 (en) 2007-11-16 2012-05-01 Marvell International Ltd. Secure memory controlled access
US8379856B2 (en) * 2009-06-17 2013-02-19 Empire Technology Development Llc Hardware based cryptography
JP2011013789A (ja) * 2009-06-30 2011-01-20 Toshiba Corp 情報処理装置および情報処理方法
US8295481B2 (en) * 2009-08-31 2012-10-23 International Business Machines Corporation Virtualization of cryptographic keys
US8645714B2 (en) 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
TWI437489B (zh) 2010-05-25 2014-05-11 Via Tech Inc 微處理器以及相關的操作方法、以及加密、解密方法
US8613074B2 (en) * 2010-09-30 2013-12-17 Micron Technology, Inc. Security protection for memory content of processor main memory
US8495443B1 (en) * 2011-05-31 2013-07-23 Apple Inc. Secure register scan bypass
US9405707B2 (en) 2011-12-20 2016-08-02 Intel Corporation Secure replay protected storage
KR102013841B1 (ko) 2012-08-06 2019-08-23 삼성전자주식회사 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치
US8775757B2 (en) 2012-09-25 2014-07-08 Apple Inc. Trust zone support in system on a chip having security enclave processor
KR20140073384A (ko) * 2012-12-06 2014-06-16 삼성전자주식회사 보안 부팅을 수행하는 칩 시스템과 이를 이용하는 화상형성장치 및 그 보안 부팅 방법
US20140310536A1 (en) 2013-04-16 2014-10-16 Qualcomm Incorporated Storage device assisted inline encryption and decryption
KR20150017526A (ko) * 2013-08-07 2015-02-17 삼성전자주식회사 메모리 명령 스케줄러 및 메모리 명령 스케줄링 방법
KR102240830B1 (ko) * 2013-08-30 2021-04-19 삼성전자주식회사 키 관리자를 포함하는 데이터 프로세싱 시스템 및 및 키 관리자의 동작 방법
US9864879B2 (en) 2015-10-06 2018-01-09 Micron Technology, Inc. Secure subsystem

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110044451A1 (en) * 2007-07-25 2011-02-24 Panasonic Corporation Information processing apparatus and falsification verification method
US8332931B1 (en) * 2008-09-04 2012-12-11 Marvell International Ltd. Processing commands according to authorization

Also Published As

Publication number Publication date
TWI633457B (zh) 2018-08-21
US20180089469A1 (en) 2018-03-29
EP3360047A1 (en) 2018-08-15
KR102139179B1 (ko) 2020-07-30
KR102176612B1 (ko) 2020-11-10
TW201837774A (zh) 2018-10-16
US10068109B2 (en) 2018-09-04
EP3360047B1 (en) 2021-07-07
TWI672610B (zh) 2019-09-21
CN114417436A (zh) 2022-04-29
US20170098102A1 (en) 2017-04-06
KR20200092421A (ko) 2020-08-03
US20180357449A1 (en) 2018-12-13
CN108139984A (zh) 2018-06-08
WO2017062242A1 (en) 2017-04-13
US9864879B2 (en) 2018-01-09
US10503934B2 (en) 2019-12-10
TW201723918A (zh) 2017-07-01
CN108139984B (zh) 2022-01-25
EP3360047A4 (en) 2019-03-20

Similar Documents

Publication Publication Date Title
US10503934B2 (en) Secure subsystem
TWI447583B (zh) 資料保護方法、記憶體控制器與記憶體儲存裝置
US11736276B2 (en) Delegation of cryptographic key to a memory sub-system
US20220158823A1 (en) Validating data stored in memory using cryptographic hashes
US20230032885A1 (en) Mechanism to Support Writing Files Into a File System Mounted in a Secure Memory Device
US20150227755A1 (en) Encryption and decryption methods of a mobile storage on a file-by-file basis
US20190199735A1 (en) Device and method for verifying integrity of firmware
TW202101236A (zh) 使用者資料的加解密方法及裝置
US20220123932A1 (en) Data storage device encryption
TW202011248A (zh) 資料儲存裝置以及其操作方法
US9058295B2 (en) Encrypt data of storage device
US11709785B2 (en) Just-in-time post-processing computation capabilities for encrypted data
US20140208125A1 (en) Encryption and decryption device for portable storage device and encryption and decryption method thereof
TW202403773A (zh) 半導體裝置及用以管理其之安全操作的系統與方法
TW202036349A (zh) 電腦系統及其虛擬硬碟的加解密方法
WO2022086603A1 (en) Data storage device encryption
KR20130049542A (ko) 메모리 소자 및 이를 포함하는 메모리 시스템
CN115408729A (zh) 供应用程序存取安全存储器装置的独立于供应商的设施
Sun et al. A new approach for data protection in case of the physical device being stolen-Using hybrid storage

Legal Events

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