KR102017828B1 - 보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들 - Google Patents

보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들 Download PDF

Info

Publication number
KR102017828B1
KR102017828B1 KR1020120116890A KR20120116890A KR102017828B1 KR 102017828 B1 KR102017828 B1 KR 102017828B1 KR 1020120116890 A KR1020120116890 A KR 1020120116890A KR 20120116890 A KR20120116890 A KR 20120116890A KR 102017828 B1 KR102017828 B1 KR 102017828B1
Authority
KR
South Korea
Prior art keywords
data
security
sector
storage device
buffer descriptor
Prior art date
Application number
KR1020120116890A
Other languages
English (en)
Other versions
KR20140067180A (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 삼성전자 주식회사
Priority to KR1020120116890A priority Critical patent/KR102017828B1/ko
Priority to US14/017,623 priority patent/US9135459B2/en
Priority to AU2013242802A priority patent/AU2013242802B2/en
Priority to TW102135933A priority patent/TWI595379B/zh
Priority to NL2011611A priority patent/NL2011611B1/nl
Priority to DE102013111339.7A priority patent/DE102013111339A1/de
Priority to JP2013218234A priority patent/JP6298268B2/ja
Priority to CN201310495239.6A priority patent/CN103778075B/zh
Publication of KR20140067180A publication Critical patent/KR20140067180A/ko
Priority to US14/829,705 priority patent/US9785784B2/en
Application granted granted Critical
Publication of KR102017828B1 publication Critical patent/KR102017828B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • 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
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Abstract

호스트 컨트롤러 인터페이스의 동작 방법은 메인 메모리로부터 섹터 정보를 포함하는 버퍼 디스크립터를 수신하는 단계와, 상기 버퍼 디스크립터에 포함된 소스 어드레스를 이용하여 데이터를 패치하는 단계와, 상기 섹터 정보를 이용하여 보안 정책 테이블에 포함된 복수의 엔트리들 중 어느 하나를 선택하는 단계와, 상기 선택된 엔트리에 포함된 보안 정책을 이용하여 패치된 데이터의 암호화 여부를 결정하는 단계를 포함한다.

Description

보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들{SECURITY MANAGEMENT UNIT, HOST CONTROLLER INTERFACE INCLUDING THE SAME, METHOD FOR OPERATING THE HOST CONTROLLER INTERFACE, AND DEVICES INCLUDING THE HOST CONTROLLER INTERFACE}
본 발명의 개념에 따른 실시 예는 호스트 컨트롤러 인터페이스에 관한 것으로, 특히 스토리지 장치의 영역별로 보안 정책을 관리하는 보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들에 관한 것이다.
컴퓨터 시스템에서, 스토리지 장치에 저장되어 있는 데이터의 보안 (security)과 보호(protection)가 중요해지고 있다. 상기 데이터의 보안이란 스토리지 장치에 저장된 데이터를 허락되지않은 이용자가 리드(read)하여 리드된 데이터를 외부로 유출하지 못하도록 하는 것이다.
악의적 이용자는 스토리지 장치에 대한 정당한 사용자의 허락없이 상기 스토리지 장치로부터 출력되는 데이터를 추출하고, 추출된 데이터를 위조 및/또는 변조시킬 수 있다.
특히, 호스트 컨트롤러 인터페이스와 스토리지 장치 사이에 존재하는 버스를 통하여 데이터가 유출되는 것을 막기 위해, 상기 호스트 컨트롤러 인터페이스는 암호화 모듈을 장착해서 암호화된 데이터를 상기 스토리지 장치로 보내는 방법을 사용한다. 그러나, 스토리지 장치의 영역별로 데이터 보안 정책이 다르게 적용될 때, 데이터의 보안이 문제될 수 있다.
보안 프로세서만이 스토리지 장치의 보안 정책(security policy)을 관리할 수 있는데, 실제 시스템에서 보안 프로세서와 비-보안 프로세서 사이에서 스위칭될 때 오버헤드(overhead)가 발생한다. 이는 곧 컴퓨터 시스템의 성능 저하로 이어질 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 스토리지 장치의 영역별로 보안 정책을 다르게 관리할 수 있는 보안 정책 테이블을 그 안에 포함시켜, 상기 보안 정책의 변경에 따른 컴퓨터 시스템의 오버헤드를 최소화할 수 있는 보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들을 제공하는 것이다.
본 발명의 실시 예에 따른 호스트 컨트롤러 인터페이스의 동작 방법은 메인 메모리로부터 섹터 정보를 포함하는 버퍼 디스크립터를 수신하는 단계와, 상기 버퍼 디스크립터에 포함된 소스 어드레스를 이용하여 데이터를 패치하는 단계와, 상기 섹터 정보를 이용하여 보안 정책 테이블에 포함된 복수의 엔트리들 중 어느 하나를 선택하는 단계와, 상기 선택된 엔트리에 포함된 보안 정책을 이용하여 패치된 데이터의 암호화 여부를 결정하는 단계를 포함한다.
상기 버퍼 디스크립터는 상기 섹터 정보에 대응되는 스토리지(storage) 장치의 특정 영역을 액세스하기 위한 응용 프로그램에 의해서 생성된다.
상기 방법은 상기 섹터 정보에 대응되는 스토리지 장치의 특정 영역에 상기 데이터를 라이트할지의 여부를 판단하기 위하여, 상기 선택된 엔트리에 포함된 보안 레벨 정보와 응용 프로그램의 보안 레벨 정보를 서로 비교하는 단계를 더 포함한다.
상기 방법은 상기 섹터 정보에 대응되는 스토리지 장치의 특정 영역에 상기 데이터를 라이트할지의 여부를 판단하기 위하여, 상기 선택된 엔트리에 포함된 액세스 동작 정보와 상기 데이터의 입출력 동작 정보를 서로 비교하는 단계를 더 포함한다.
상기 선택된 엔트리는 상기 메인 메모리로부터 리드된 엔트리일 수 있다.
본 발명의 실시 예에 따른 보안 관리 유닛은 스토리지 장치에 포함된 복수의 영역들 각각에 대한 보안 정책을 관리하는 복수의 엔트리들을 포함하는 보안 정책 테이블과, 버퍼 디스크립터에 포함된 섹터 정보에 응답하여 상기 복수의 엔트리들 중 어느 하나를 선택하고, 선택된 엔트리에 포함된 보안 정책에 따라 데이터의 암호화 여부를 지시하는 제1제어 신호를 출력하는 섹터 액세스 제어 로직을 포함한다.
상기 보안 관리 유닛은 보안 CPU로부터 출력된 테이블 업데이트 명령에 응답하여, 상기 선택된 엔트리에 포함된 상기 보안 정책을 변경하는 테이블 액세스 제어 로직을 더 포함한다. 상기 보안 정책은 보안 레벨 정보와 액세스 동작 정보 중 적어도 하나를 포함한다.
실시 예에 따라 상기 섹터 액세스 제어 로직은 상기 섹터 정보와 보안 레벨 신호를 수신하고, 상기 선택된 엔트리에 포함된 보안 레벨 정보와 응용 프로그램의 보안 레벨 정보를 서로 비교하고 비교 결과에 따라 상기 스토리지 장치의 특정 영역에 대한 액세스 허용 여부를 지시하는 제2제어 신호를 출력한다.
다른 실시 예에 따라 상기 섹터 액세스 제어 로직은 상기 섹터 정보와 액세스 동작 신호를 수신하고, 상기 선택된 엔트리에 포함된 액세스 동작 정보와 데이터 액세스 동작 정보를 서로 비교하고 비교 결과에 따라 상기 스토리지 장치의 특정 영역에 대한 액세스 허용 여부를 지시하는 제2제어 신호를 출력한다.
상기 보안 관리 유닛은 호스트 컨트롤러 인터페이스의 일부로서 구현될 수 있다.
본 발명의 실시 예에 따른 호스트 컨트롤러 인터페이스는 메인 메모리로부터 출력된 버퍼 디스크립터에 포함된 소스 어드레스를 이용하여 상기 메인 메모리로부터 데이터를 리드하고, 상기 버퍼 디스크립터에 포함된 섹터 정보에 응답하여 섹터 키를 출력하는 스토리지 컨트롤러와, 상기 섹터 키에 응답해서 복수의 엔트리들 중에서 어느 하나를 선택하고, 선택된 엔트리에 포함된 보안 정책에 따라 제1제어 신호를 출력하는 보안 관리 유닛과, 상기 제1제어 신호에 기초하여 상기 데이터에 대한 암호화 동작 여부를 결정하는 데이터 보호기를 포함하고, 상기 복수의 엔트리들 각각은 스토리지 장치에 포함된 복수의 영역들 각각에 대한 보안 정책을 관리한다.
실시 예에 따라 상기 데이터 보호기는 상기 제1제어 신호와 상기 섹터 키에 응답하여 상기 암호화 동작을 수행한다.
다른 실시 예에 따라 상기 데이터 보호기는 상기 제1제어 신호와 상기 버퍼 디스크립터에 포함된 보안 키에 응답하여 상기 암호화 동작을 수행한다.
상기 호스트 컨트롤러 인터페이스는 상기 버퍼 디스크립터를 생성하는 응용 프로그램의 보안 레벨 정보를 저장하고, 상기 보안 레벨 정보를 나타내는 보안 레벨 신호를 상기 보안 관리 유닛으로 출력하는 트랜잭션 타입 레지스터를 더 포함한다.
본 발명의 실시 예에 따른 컴퓨팅 디바이스는 복수의 영역들을 포함하는 스토리지 장치와, 상기 복수의 영역들 중에서 어느 하나인 특정 영역을 액세스하는 응용 프로그램이 실행될 때, 버퍼 디스크립터를 생성하는 CPU(central processing unit)와, 상기 버퍼 디스크립터와 데이터를 저장하는 메인 메모리와, 상기 메인 메모리로부터 출력된 상기 버퍼 디스크립터에 포함된 소스 어드레스를 이용하여 상기 메인 메모리로부터 데이터를 리드하고, 상기 버퍼 디스크립터에 포함된 섹터 정보에 응답해서 복수의 엔트리들 중에서 어느 하나를 선택하고, 상기 선택된 엔트리에 포함된 보안 정책에 따라 상기 데이터에 대한 암호화 동작 여부를 결정하는 호스트 컨트롤러 인터페이스를 포함하고, 상기 복수의 엔트리들 각각은 상기 스토리지 장치에 포함된 상기 복수의 영역들 각각에 대한 보안 정책을 관리한다.
본 발명의 실시 예에 따른 임베디드 멀티 미디어 카드는 복수의 영역들을 포함하는 플래시 메모리와, 상기 복수의 영역들 중에서 어느 하나를 액세스하는 응용 프로그램이 실행될 때 버퍼 디스크립터를 생성하는 프로세서와, 상기 버퍼 디스크립터와 데이터를 저장하는 메인 메모리와, 상기 메인 메모리로부터 출력된 상기 버퍼 디스크립터에 포함된 소스 어드레스를 이용하여 상기 메인 메모리로부터 데이터를 리드하고, 상기 버퍼 디스크립터에 포함된 섹터 정보에 응답해서 복수의 엔트리들 중에서 어느 하나를 선택하고, 상기 선택된 엔트리에 포함된 보안 정책에 따라 상기 데이터에 대한 암호화 동작 여부를 결정하는 호스트 컨트롤러 인터페이스를 포함하고, 상기 복수의 엔트리들 각각은 상기 플래시 메모리에 포함된 상기 복수의 영역들 각각에 대한 보안 정책을 관리한다.
본 발명의 실시 예에 따른 호스트 컨트롤러 인터페이스는 보안 정책 테이블을 포함하는 보안 관리 유닛을 사용하여 스토리지 장치의 영역별로 서로 다른 보안 정책을 효율적으로 관리할 수 있는 효과가 있다.
본 발명의 실시 예에 따른 호스트 컨트롤러 인터페이스는 스토리지 장치의 영역별로 보안 정책이 달라지더라도 프로세서들 사이의 스위칭으로 인한 시스템의 성능저하없이 보안 관리 유닛을 이용하여 연속적으로 작업을 수행할 수 있도록 하는 효과가 있다.
본 발명의 실시 예에 따른 호스트 컨트롤러 인터페이스는 응용 프로그램이 데이터를 생성할 때 섹터별로 보안 키를 생성토록 하여, 암호화 권한을 갖는 다른 응용 프로그램이더라도 이미 스토리지 장치에 저장된 암호화 데이터를 리드할 수 없도록 하는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨터 시스템을 나타내는 블록도이다.
도 2는 본 발명의 다른 실시 예에 따른 컴퓨터 시스템을 나타내는 블록이다.
도 3 은 도 1의 저장 영역에 저장될 수 있는 버퍼 디스크립터의 일 예를 나타내는 도면이다.
도 4는 도 1의 스토리지 장치의 메모리 맵을 나타내는 블록도이다.
도 5는 도 1의 호스트 컨트롤러 인터페이스의 일 실시 예를 나타내는 블록도이다.
도 6은 도 5의 보안 관리 유닛에 포함되는 보안 정책 테이블의 일 실시 예를 나타내는 도면이다.
도 7은 도 5의 보안 관리 유닛의 내부 블록도이다.
도 8은 본 발명의 실시 예에 따른 직접 메모리 액세스 동작을 수행하기 위한 초기 셋팅 동작을 나타내는 순서도이다.
도 9a와 도 9b는 본 발명의 실시 예에 따른 직접 메모리 액세스 동작을 나타내는 순서도다.
도 10은 도 5의 보안 관리 유닛에 포함되는 보안 정책 테이블의 다른 실시 예를 나타내는 도면이다.
도 11은 도 9a의 전체 순서도에서 도 10에 도시된 보안 정책 테이블이 적용됨에 따라 달라지는 직접 메모리 액세스 동작의 일부를 나타내는 부분 순서도이다.
도 12는 본 발명의 실시 예에 따라 스토리지 장치가 eMMC(embedded multimedia card)일 때 보안 정책 테이블에 저장되는 신호들을 나타낸다.
도 13은 도 5의 보안 관리 유닛에 포함된 보안 정책 테이블의 또 다른 예를 나타내는 도면이다.
도 14는 도 1의 저장 영역에 저장될 수 있는 버퍼 디스크립터의 다른 실시 예를 나타내는 도면이다.
도 15는 도 1의 호스트 컨트롤러 인터페이스의 다른 실시 예를 나타내는 블록도이다.
도 16은 도 1의 호스트 컨트롤러 인터페이스의 또 다른 실시 예를 나타내는 블록도이다.
도 17은 도 1의 호스트 컨트롤러 인터페이스의 또 다른 실시 예를 나타내는 블록도이다.
도 18은 본 발명의 또 다른 실시 예에 따른 컴퓨터 시스템을 나타내는 블록이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
컴퓨터 시스템 또는 컴퓨팅 장치(computing device)는 응용 프로그램 (application program)을 실행하기 위한 프로세서를 포함하며, 상기 프로세서는 운영 체제(operating system)의 제어하에서 동작한다. 그리고, 특정한 응용 프로그램을 수행하기 위하여 필요한 데이터는 메인 메모리의 내부에 저장된다. 이때, 상기 메인 메모리에 저장되는 데이터는 응용 프로그램에 포함된 명령어 및/또는 상기 명령어가 프로세서에서 실행되는 동안 사용되는 실제 데이터일 수 있다.
하나 이상의 응용 프로그램에서 사용되는 데이터는 프로세서에서 실행되는 다른 응용 프로그램에 의하여 액세스 가능하지 않은 보안이 요구되는 데이터일 수 있다. 예를 들어, 스마트 카드의 경우, 복수의 응용 프로그램들 중 하나는 검증 (validation), 인증(authentication), 또는 복호화(decryption) 등을 수행하기 위하여 보안 키가 요구되는 데이터를 사용하는 보안 응용 프로그램일 수 있다. 상기 보안이 요구되는 데이터에 대한 보안을 유지하는 것은 해킹 프로그램에 의하여 액세스될 수 없도록 하는 것이 중요하다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨터 시스템을 나타내는 블록도이다. 도 1을 참조하면, 컴퓨터 시스템(1000)은 중앙 처리 장치(central processing unit(CPU); 1100), 메인 메모리(main memory; 1200), 메인 메모리 컨트롤러(main memory controller; 1300), 호스트 컨트롤러 인터페이스(host control interface; 1400) 및 스토리지 장치(storage device; 1500)를 포함한다.
컴퓨터 시스템(1000)은 이동 전화기 또는 노트북 등과 같은 모바일 기기, 퍼스널 컴퓨터, 서버 컴퓨터, 프로그램 가능한 가전 제품, 또는 메인 프레임 컴퓨터 등과 같이 범용 또는 특수 목적의 컴퓨터 시스템일 수 있다.
CPU(1100)는 컴퓨터 시스템(1000) 전체를 제어하는 장치이다. CPU(1100)는 보안 CPU(1110) 및 비-보안 CPU(1120)를 포함할 수 있다.
보안 CPU(1110)에서는 부팅(booting) 동작이나 인증 과정을 필요로 하는 응용 프로그램이 실행된다. 보안 CPU(1110)와 비교할 때, 비-보안 CPU(1120)가 동작 될 때에는 비-보안 CPU(1120)는 보안 모듈이나 암호화된 메모리 영역에 접근하지 못한다.
예를 들어, 모바일 운영 체제에서 공인 인증이 필요한 은행 애플리케이션 또는 증권 애플리케이션과 같이 보안 레벨이 높은 응용 프로그램은 보안 CPU(1110)에서 실행될 수 있다. 그리고, e-북(book)이나 게임 애플리케이션과 같이 보안 레벨이 낮은 응용 프로그램은 비-보안 CPU(1120)에서 실행될 수 있다.
스토리지 장치(1500)를 액세스하려는 응용 프로그램이 실행되면, CPU (1100)는 데이터를 리드할 디바이스(device)와 데이터가 라이트될 디바이스의 위치 정보를 저장하는 버퍼 디스크립터(BD)를 생성하고, 생성된 버퍼 디스크립터(BD)를 메인 메모리(1200)의 저장 영역(1210)에 저장한다.
메인 메모리(1200)는 시스템 메모리 또는 캐시 메모리 등과 같이 데이터를 단기적으로 또는 임시로 저장하는 저장 매체를 가리킨다. 메인 메모리(1200)는 파일 시스템 형식의 데이터를 저장하거나, CPU(1100)에서 생성된 버퍼 디스크립터 (BD)를 저장 영역(1210)에 저장할 수 있다.
CPU(1100)의 제어에 따라 메인 메모리 컨트롤러(1300)는 메인 메모리 (1200)를 제어한다. 메인 메모리 컨트롤러(1300)는 복수의 버스 인터페이스 포트를 지원하고 있어 보안 CPU(1110), 비-보안 CPU(1120) 및 호스트 컨트롤러 인터페이스 (1400)와 연결될 수 있다.
호스트 컨트롤러 인터페이스(1400)는 메인 메모리(1200)와 스토리지 장치 (1500) 사이에서 데이터(DATA와 DATA')를 전송하기 위한 하드웨어 기반의 인터페이스를 제공한다. 또한, 호스트 컨트롤러 인터페이스(1400)는 직접 메모리 액세스 (direct memory access(DMA)) 마스터 기능을 포함한다. 상기 DMA 마스터 기능을 가지는 호스트 컨트롤러 인터페이스(1400)는 보안 CPU(1110)에 의해 설정된 보안 레벨을 가지는 보안 트랜잭션(secure transaction)을 발생시키거나, 비-보안 레벨을 가지는 비-보안 트랜잭션(non-secure transaction)을 발생시킬 수 있다.
스토리지 장치(1500)는 소프트웨어 및 사용자 데이터 등과 같은 대용량 데이터를 장기적으로 저장할 수 있는 기록 매체를 가리킨다. 스토리지 장치(1500)는 보안이 필요한 데이터를 저장하는 암호화 영역(1510)과 일반적인 데이터를 저장하는 비-암호화 영역(1520)을 포함할 수 있다. 암호화 영역(1510) 내에 저장된 데이터를 보호하기 위해 인증된 응용 프로그램만이 암호화 영역(1510)에 접근할 수 있다.
본 발명의 실시 예에 따르면, 호스트 컨트롤러 인터페이스(1400)와 스토리지 장치(1500)는 SATA 인터페이스를 이용하여 통신할 수 있으며, 이때 주소 단위로서 섹터(sector)가 이용될 수 있다.
도 2는 본 발명의 다른 실시 예에 따른 컴퓨터 시스템을 나타내는 블록이다. 도 2를 참조하면, 컴퓨터 시스템(2000)은 CPU(2100), 메인 메모리(2200), 메인 메모리 컨트롤러(2300), 호스트 컨트롤러 인터페이스(2400) 및 스토리지 장치 (2500)를 포함한다. 각 구성 요소(2100, 2300, 및 2400)는 시스템 버스(2600)를 통하여 통신할 수 있다.
도 1의 컴퓨터 시스템(1000)과 비교하여, 도 2의 컴퓨터 시스템(2000)에서 메모리 컨트롤러(2300)는 하나의 버스 인터페이스 포트만을 지원한다. 따라서 CPU (2100)는 시스템 버스(2600)를 통하여 메모리 컨트롤러(2300)와 호스트 컨트롤러 인터페이스(2400)와 전기적으로 연결될 수 있다.
CPU(2100)는 보안 모드(2110) 및 비-보안 모드(2120) 중 어느 하나의 모드로 동작할 수 있다. 각 모드(2110과 2120)는 CPU(2100)에서 실행되는 응용 프로그램에 따라 결정될 수 있다. CPU(2100)가 비-보안 모드(2120)로 동작될 때에는 비-보안 모드(2120)에서 동작 중인 응용 프로그램은 보안 모듈이나 암호화된 메모리 영역에 접근할 수 없다.
다른 구성 요소들은 도 1의 컴퓨터 시스템(1000)의 구성 요소들과 동일하다.
도 3은 도 1의 저장 영역에 저장될 수 있는 버퍼 디스크립터의 일 예를 나타내는 도면이다.
도 1부터 도 3을 참조하면, 버퍼 디스크립터(10)는 소스 어드레스(source address; 11), 목적지 어드레스(destination address; 12), 데이터 길이(data length; 13) 및 다음 목적지 포인터(pointer to NEXT destination; 14)를 포함한다.
소스 어드레스(11)는 처리될 데이터가 저장되어 있는 영역의 주소 정보를 포함하고, 목적지 어드레스(12)는 처리된 데이터를 저장하려고 하는 영역의 주소 정보를 포함한다. 또한, 데이터 길이(13)는 전송하려는 데이터(DATA 또는 DATA')의 크기를 의미하며, 다음 목적지 포인터(14)는 버퍼 디스크립터(10)에 의한 메모리 액세스 동작, 예컨대 리드 동작 또는 라이트 동작이 완료된 후 다음 메모리 액세스 동작을 계속 진행하기 위한 포인터의 위치를 가리킨다.
리드 동작을 수행하기 위해 CPU(1100 또는 2100)는 응용 프로그램을 실행시키면서 스토리지 장치(1500 또는 2500)에 저장된 데이터(DATA')를 리드하기 위한 버퍼 디스크립터(10)를 생성할 수 있다. 이때, 버퍼 디스크립터(10)의 소스 어드레스(11)는 스토리지 장치(1500 또는 2500)의 어드레스를 포함하고, 목적지 어드레스 (12)는 메인 메모리(1200 또는 2200)의 어드레스를 포함할 수 있다.
라이트 동작을 수행하기 위해 CPU(1100 또는 2100)는 응용 프로그램을 실행시키면서 메인 메모리(1200 또는 2200)에 저장된 데이터(DATA)를 스토리지 장치 (1500 또는 2500)에 라이트 하기 위한 버퍼 디스크립터(10)를 생성할 수 있다.
이때, 버퍼 디스크립터(10)의 소스 어드레스(11)는 메인 메모리(1200 또는 2200)의 어드레스를 포함하고, 목적지 어드레스(12)로는 스토리지 장치(1500 또는 2500)의 어드레스를 포함할 수 있다.
각 호스트 컨트롤러 인터페이스(1400 또는 2400)의 구조와 동작은 도 5, 도 15, 도 16, 또는 도 17을 참조하여 상세히 설명될 것이다.
도 4는 도 1의 스토리지 장치의 메모리 맵을 나타내는 블록도이다. 스토리지 장치(1500)는 하드 디스크 드라이브(hard disk drive(HDD))와 같은 자기 저장 디바이스, 컴팩트 디스크(compact disk(CD))와 같은 광학 저장 디스크, 및 솔리드 스테이트 드라이브(solid state drive(SSD)), 멀티 미디어 카드(multimedia card(MMC)) 및 유니버설 플래시 스토리지(universal flash storage(UFS))와 같은 플래시 메모리 등으로 구현될 수 있다.
상기 HDD에서 정보는 고속으로 회전하는 자기 플래터(magnetic platter)에 저장되고 리드/라이트 헤드 블록에 의해서 자기 플래터로부터/로 리드/라이트된다. 상기 HDD와 비교하며, 상기 SSD는 고속 리드 동작을 수행하나 상대적으로 저속 라이트 동작을 수행한다.
MMC는 휴대폰, 컴퓨터, 또는 디지털 카메라 등과 같은 여러 디지털 기기의 자료를 저장하고 이동할 수 있도록 하는 탈착 또는 부착가능한 장치로서, 데이터를 저장하는 저장 공간과, 연산과 제어를 담당하는 부분으로 구성된다.
UFS는 소비 전력이 낮은 플래시 저장 장치이다. UFS는 SSD와 같은 저장 능력을 가지면서, 고속 시리얼 인터페이스(serial interface)를 사용되고, 랜덤 액세스 (random access) 기능을 향상시키기 위한 커맨드 큐잉(command queuing) 기능을 내장하며, 시리얼 인터페이스의 절전 기능을 내장할 수 있다.
일반적으로, 스토리지 장치(1500)는 CHS(실린더, 헤드, 섹터) 또는 논리적 블록 어드레스(logical block address(LBA))의 주소 단위를 가질 수 있다. LBA는 스토리지 장치(1500) 내에서 데이터 블록의 위치를 지정하는데 사용된다. LBA는 어드레스를 지칭하거나 블록(즉, 인덱스(index))을 지칭할 수 있다. 섹터 및 논리적 블록들은 512바이트 또는 1024 바이트와 같이 512 바이트의 정수 배가 될 수 있다.
도 4를 참조하면, 스토리지 장치(1500A)는 각각이 서로 다른 보안 정책을 가지는 복수의 영역들(31~38)을 포함할 수 있다. 스토리지 장치의 종류에 따라 복수의 영역들 각각은 세그먼트(segment) 단위, 섹터 단위, 또는 파티션(partition) 단위로 구분될 수 있다.
보안 정책은 응용 프로그램의 보안 레벨에 따라 DMA 동작 시에, 특정 영역에 대한 액세스 가능 여부, 특정 영역에 저장된 데이터가 암호화되어 있는지 여부, 및 라이트 동작이 가능하지 여부 등을 결정할 수 있다.
예를 들어, 제1영역(31)은 보안 레벨을 가지는 응용 프로그램에 의해서만 액세스 가능하고, 제1영역(31)에는 암호화된 데이터가 저장되고, 제1영역(31)에 대해서는 리드 동작만 가능하다.
제2영역(32)은 비-보안 레벨을 가지는 응용 프로그램에 의해서도 액세스 가능하고, 제2영역(32)에는 암호화되지 않은 데이터가 저장되고, 제2영역(32)에 대해서는 리드 동작과 라이트 동작이 모두 가능하다.
제3영역(33)은 보안 레벨을 가지는 응용 프로그램에 의해서만 액세스 가능하고, 제3영역(33)에는 암호화된 데이터가 저장되고, 제3영역(33)에 대해서는 리드 동작만이 가능하다.
제4영역(34)은 비-보안 레벨을 가지는 응용 프로그램에 의해서도 액세스 가능하고, 제4영역(34)에는 암호화된 데이터가 저장되고, 제4영역(34)에 대해서는 리드 동작만 가능하다.
제8영역(38)은 비-보안 레벨을 가지는 응용 프로그램에 의해서도 액세스 가능하고, 제8영역(38)에는 암호화된 데이터가 저장되고, 제8영역(38)에 대해서는 리드 동작만 가능하다.
도 4에는 8개의 영역들(31~38)을 갖는 스토리지 장치(1500A)가 도시되어 있으나, 이는 예시적인 것에 불과하며, 스토리지 장치(1500 또는 2500)에 포함된 복수의 영역들의 개수와 상기 복수의 영역들 각각에 대한 보안 정책에 대한 다양한 변형이 가능하다.
도 5는 도 1의 호스트 컨트롤러 인터페이스의 일 실시 예를 나타내는 블록도이다. 도 1 및 도 5를 참조하면, 호스트 컨트롤러 인터페이스(1400A)는 스토리지 컨트롤러(310), 보안 관리 유닛(320), 데이터 보호기(330) 및 트랜잭션 타입 레지스터(transaction type register; 340)를 포함한다.
스토리지 컨트롤러(310)는 스토리지 장치(1500)에 액세스 되는 데이터를 제어한다. 스토리지 장치(1500)에 데이터가 섹터(sector) 단위로 저장될 때, 상기 데이터에 대한 암호화 방법의 하나로서 섹터마다 섹터 키(SECTOR_KEY)를 할당하는 XTS AES 방법이 적용될 수 있다.
이때, 스토리지 컨트롤러(310)는 메인 메모리(1200)로부터 버퍼 디스크립터(buffer descriptor(BD))를 수신하고, 수신된 버퍼 디스크립터(BD)에 포함된 소스 어드레스를 이용하여 메인 메모리(1200)로부터 상기 소스 어드레스에 대응되는 저장 영역에 저장된 데이터(DATA)를 리드한다.
또한, 스토리지 컨트롤러(310)는 버퍼 디스크립터(BD)에 포함된 섹터 정보에 응답하여 데이터 보호기(330)로 섹터 키(SECTOR_KEY)를 출력할 수 있다. 버퍼 디스크립터(BD)에 포함된 섹터 정보는 스토리지 장치(1500)로 전달되는 섹터 주소 (sector address; SECTOR_ADD) 및 보안 관리 유닛(320)으로 전달되는 섹터 키 (SECTOR_KEY)를 생성하는 정보로서 사용될 수 있다. 이때, 스토리지 컨트롤러(310)가 섹터 정보를 어떻게 변환하는지에 상관없이 하나의 섹터 정보로부터 하나의 섹터 키(SECTOR_KEY)가 고유하게 생성될 수 있다.
보안 관리 유닛(320)은 각각이 스토리지 장치(1500)에 포함된 영역들 각각에 대한 보안 정책을 관리하는 엔트리들(entries)을 가지는 보안 정책 테이블을 포함한다. 보안 정책 테이블은 도 6을 참조하여 상세히 설명될 것이다.
따라서, 보안 관리 유닛(320)은 스토리지 컨트롤러(310)로부터 출력된 섹터 키(SECTOR_KEY)에 응답해서 엔트리들 중에서 어느 하나를 선택한다. 보안 관리 유닛(320)은 선택된 엔트리에 포함된 보안 정책에 따라 데이터(DATA)의 암호화 동작 여부를 결정하는 암/복호화지시 신호(ED)를 데이터 보호기(330)로 출력할 수 있다.
보안 관리 유닛(320)은 스토리지 컨트롤러(310)로부터 출력된 리드 동작 또는 라이트 동작을 의미하는 액세스 동작 신호(R/W)에 응답하여, 선택된 엔트리에 포함된 보안 정책에 따라 액세스 동작, 예컨대 리드 동작 또는 라이트 동작의 허용 여부를 결정하는 접근 지시 신호(IAE)를 스토리지 컨트롤러(310)로 출력할 수 있다.
데이터 보호기(330)는, 암/복호화 지시 신호(ED)에 기초하여, 호스트 컨트롤러 인터페이스(1400A)를 통해 저장 장치(1500)로/로부터 입/출력되는 데이터 (DATA 또는 DATA')에 대한 암호화 또는 복호화 동작을 수행할 수 있다.
예컨대, 데이터 보호기(330)는, 보안 관리 유닛(320)로부터 출력된 암/복호화 지시 신호(ED)에 기초하여, 데이터(DATA)에 대한 암호화 동작, 암호화된 데이터(DATA')에 대한 복호화 동작, 및 데이터(DATA)에 대한 바이패스(bypass) 동작 중 어느 하나를 수행할지를 결정할 수 있다. 데이터(DATA)에 대해 암호화 동작이 수행되어야 한다면, 데이터 보호기(330)는 스토리지 컨트롤러(310)로부터 출력된 섹터 키(SECTOR_KEY)를 이용하여 암호화 동작을 수행할 수 있다.
트랜잭션 타입 레지스터(340)는 버퍼 디스크립터(BD)를 생성하는 응용 프로그램의 보안 레벨 정보를 저장한다. 즉, 트랜잭션 타입 레지스터(340)는 호스트 컨트롤러 인터페이스(1400A)에 수행되는 직접 메모리 액세스 동작이 보안 레벨을 가지는 보안 트랜잭션 타입(secure transaction type)인지 또는 비-보안 레벨을 가지는 비-보안 트랜잭션 타입(Non secure transaction type) 인지를 나타내는 상태 정보를 저장한다. 그리고, 각 트랜잭션 타입에 따른 보안 레벨 신호(S/NS)를 보안 관리 유닛(320)에 전송한다.
이때, 보안 관리 유닛(320)의 동작, 데이터 보호기(330)의 동작, 및 트랜잭션 타입 레지스터(340)에 저장된 정보는 보안 CPU(1110)에 의해서만 변경 가능하다.
도 2의 호스트 컨트롤러 인터페이스(2400)의 구조와 동작은 도 1의 호스트 인터페이스(1400)의 구조와 동작과 실질적으로 동일하다.
도 6은 도 5의 보안 관리 유닛에 포함되는 보안 정책 테이블의 일 실시 예를 나타내는 도면이다. 도 6을 참조하면, 보안 정책 테이블(322A)은 각각이 스토리지 장치(1500)에 포함된 영역들 각각에 대한 보안 정책을 관리하는 엔트리들을 포함한다.
도 6에 예시적으로 도시된 보안 정책 테이블(322A)은 8개의 엔트리들 (41~48)을 포함할 수 있다. 각 엔트리(41~48)는 스토리지 장치(1500)에 포함된 영역들 각각의 범위를 표현하기 위하여 베이스 섹터 어드레스 레지스터(Base sector address register)에 저장된 섹터 주소를 시작 주소로 설정하고, 각 영역의 크기 (SIZE)를 설정할 수 있다. 이때 각 엔트리(41~48)에 해당되는 각 영역의 크기는 동일하게 또는 다르게 설정될 수 있다.
각 엔트리(41~48)에는 보안 정책 테이블(322A)의 각 엔트리(41~48)에 저장된 값의 유효성(VALID/INVALID)) 여부와 보안 정책이 저장된다. 상기 보안 정책은 각 엔트리(41~48)에 해당되는 스토리지 장치(1500)의 각 영역에 대한 액세스 허용 여부(READ/WRITE), 상기 각 영역에 대한 보안 레벨에 따른 액세스 허용 여부 (SECURE/NON-SECURE), 및 상기 각 영역에 대한 입출력 데이터의 암호화 동작 여부 (ENCRYPTION/NON-ENCRYPTION) 중 적어도 하나를 포함할 수 있다.
예를 들어, 제1엔트리(41)에 대한 유효성(VALID/INVALID)이 유효(VALID)이므로, 스토리지 장치(1500)의 제1영역에 해당하는 제1엔트리(41)에 저장된 값들은 유효하다. 상기 제1영역은 제1베이스 섹터 어드레스 레지스터(Base sector address register 1)에 저장된 주소로부터 A섹터(A sectors)의 크기를 가진다. 상기 제1영역에 대해서는 리드 동작(R)만 가능하고, 상기 제1영역은 보안 레벨(S)을 가지는 응용 프로그램에 의해서만 액세스 가능하며, 상기 제1영역에는 암호화된 데이터 (Enc)가 저장될 수 있다.
제2엔트리(42)에 대한 유효성(VALID/INVALID)이 유효(VALID)이므로, 스토리지 장치(1500)의 제2영역에 해당하는 제2엔트리(42)에 저장된 값들은 유효하다.상기 제2영역은 제2베이스 섹터 어드레스 레지스터(Base sector address register 2)에 저장된 주소로부터 B섹터(B sectors)의 크기를 가진다. 상기 제2영역에 대해서는 리드 동작 및 라이트 동작(R/W)이 모두 가능하고, 상기 제2영역은 보안 레벨 (S)을 가지는 응용 프로그램뿐만 아니라 비-보안 레벨(NS)을 가지는 응용 프로그램에 의해서도 액세스 가능하며, 상기 제2영역에는 암호화되지 않은 데이터(NonEnc)가 저장될 수 있다.
제3엔트리(43)에 대한 유효성(VALID/INVALID)이 유효(VALID)이므로, 스토리지 장치(1500)의 제3영역에 해당하는 제3엔트리(43)에 저장된 값들을 유효하다. 상기 제3영역은 제3베이스 섹터 어드레스 레지스터(Base sector address register 3)에 저장된 주소로부터 C섹터(C sectors)의 크기를 가진다. 상기 제3영역에 대해서는 리드 동작 및 라이트 동작(R/W)이 모두 가능하고, 상기 제3영역은 보안 레벨 (S)을 가지는 응용 프로그램에 의해서만 액세스 가능하며, 상기 제3영역에는 암호화된 데이터(Enc)가 저장될 수 있다.
제4엔트리(44)에 대한 유효성(VALID/INVALID)이 유효(VALID)이므로, 스토리지 장치(1500)의 제4영역에 해당하는 제4엔트리(44)에 저장된 값들은 유효하다. 상기 제4영역은 제4베이스 섹터 어드레스 레지스터(Base sector address register 4)에 저장된 주소로부터 D섹터(D sectors)의 크기를 가진다. 상기 제4영역에 대해서는 리드 동작(R)만 가능하고, 상기 제4영역은 보안 레벨(S)을 가지는 응용 프로그램뿐만 아니라 비-보안 레벨(NS)을 가지는 응용 프로그램에 의해서도 액세스 가능하며, 상기 제4영역에는 암호화된 데이터(Enc)가 저장될 수 있다.
제8엔트리(48)에 대한 유효성(VALID/INVALID)이 무효(INVALID)이므로, 스토리지 장치(1500)의 제8영역에 해당하는 제8엔트리(48)에 저장된 값들은 무효이다. 상기 제8영역은 제8베이스 섹터 어드레스 레지스터(Base sector address register 8)에 저장된 주소로부터 N섹터(N sectors)의 크기를 가진다.
보안 정책 테이블(322A)에서 영역을 설정하는 방법 및 서술되는 보안 정책의 종류는 실시 예에 따라 다양하게 변경될 수 있다.
도 7은 도 5의 보안 관리 유닛의 내부 블록도이다. 도 1, 도 5, 도 6 및 도 7을 참조하면, 보안 관리 유닛(320)은 테이블 액세스 제어 로직(table access control logic; 321), 섹터 액세스 제어 테이블(sector access control table; 322) 및 섹터 액세스 제어 로직(sector access control logic; 323)을 포함할 수 있다. 도 6에 도시된 보안 정책 테이블(322A)은 섹터 액세스 제어 테이블(322)의 일 실시 예이다.
테이블 액세스 제어 로직(321)은, 보안 CPU(1110)로부터 출력된 테이블 업데이트 명령(TU_CMD)에 응답하여, 섹터 액세스 제어 테이블(322)에 저장된 스토리지 장치(150)의 각 영역의 보안 정책을 변경할 수 있다. 만약, 비-보안 CPU(1120)로부터 테이블 업데이트 명령(TU_CMD)이 입력되면, 테이블 액세스 제어 로직(321)은 섹터 액세스 제어 테이블(322)에 보안 정책 변경 신호(TU)를 전달하지 않고, 비-보안 CPU(1120)에 에러 신호(TUE)를 전송한다.
테이블 액세스 제어 로직(321)은 보안 CPU(1110)로부터 출력된 테이블 업데이트 명령(TU_CMD)에 응답하여 섹터 액세스 제어 테이블(322)의 적어도 하나의 엔트리를 변경하기 위한 보안 정책 변경 신호(TU)를 생성할 수 있다.
보안 정책 테이블(322)로도 불릴 수 있는 섹터 액세스 제어 테이블은 도 6에서 상술한 바와 같이, 각각이 스토리지 장치(1500)에 포함된 복수의 영역들 각각에 대한 보안 정책을 관리하는 엔트리들을 포함한다.
섹터 액세스 제어 로직(323)은 스토리지 컨트롤러(310)로부터 섹터 키 (SECTOR_KEY)와 액세스 동작 신호(R/W)를 수신하고, 트랜잭션 타입 레지스터(340)로부터 보안 레벨 신호(S/NS)를 수신한다. 섹터 액세스 제어 로직(323)은 섹터 키 (SECTOR_KEY)에 응답하여 복수의 베이스 섹터 어드레스 레지스터들 중에서 어느 하나를 선택하기 위한 엔트리 선택 정보(SNI)를 보안 정책 테이블(322)로 전송한다. 보안 정책 테이블(322)은 엔트리 선택 정보(SNI)에 응답하여 선택된 베이스 섹터 어드레스 레지스터에 해당하는 선택 엔트리(SNE)를 섹터 액세스 제어 로직(323)으로 전송한다.
즉, 섹터 액세스 제어 로직(323)은 섹터 키(SECTOR_KEY)에 기초하여 보안 정책 테이블(322)의 엔트리들 중 어느 하나를 선택할 수 있다. 섹터 액세스 제어 로직(323)은 선택된 엔트리(SNE)에 포함된 보안 정책에 따라 데이터(DATA)의 암호화 여부를 지시하는 암/복호화지시 신호(ED)를 데이터 보호기(330)에 출력하고, 접근 지시 신호(IAE)를 스토리지 컨트롤러(310)에 출력할 수 있다.
스토리지 컨트롤러(310)는, 접근 지시 신호(IAE)에 응답하여, 섹터 주소 (SECTOR_ADD)와 암호화된 데이터(DATA')를 스토리지 장치(1500)로 출력할 수 있다. 스토리지 장치(1500)는 암호화된 데이터(DATA')를 섹터 주소(SECTOR_ADD)에 대응되는 영역에 저장할 수 있다. 이 경우 섹터 주소(SECTOR_ADD)는 목적지 어드레스(12)와 데이터 길이(13) 중에서 적어도 하나를 포함할 수 있다.
도 8은 본 발명의 실시 예에 따른 직접 메모리 액세스 동작을 수행하기 위한 초기 셋팅 동작을 나타내는 순서도이다.
도 1, 도 5 및 도 8을 참조하면, 보안 CPU(1110)는 보안 관리 유닛(320) 및 데이터 보호기(330)를 초기화한다(S110). 이후, 보안 CPU(1110)는 트랜잭션 타입 레지스터(340)를 비-보안 상태로 설정하므로, 비-보안 CPU(1120)가 실행된다 (S120). 비-보안 CPU(1120)에 의해 응용 프로그램이 동작하면, 비-보안 CPU(1120)는 버퍼 디스크립터(BD)를 생성하고, 생성된 버퍼 디스크립터(BD)는 메인 메모리 컨트롤러(1300)를 통해 메인 메모리(1200)의 저장 영역(1210)에 저장된다(S130).
버퍼 디스크립터(BD)의 시작 어드레스가 스토리지 컨트롤러(310)로 설정되면(S140), 상기 시작 어드레스는 시작 레지스터(311)에 설정된다(S150). 이후, 스토리지 컨트롤러(310)의 시작 레지스터(311)에 저장된 시작 어드레스에 따라 직접 메모리 액세스(DMA) 동작이 시작된다.
도 9a와 도 9b는 본 발명의 실시 예에 따른 직접 메모리 액세스 동작을 나타내는 순서도다. 도 1, 도 5, 도 9a 및 도 9b를 참조하면, 스토리지 컨트롤러 (310)는 시작 레지스터(311)에 저장된 시작 어드레스를 이용하여 메인 메모리 (1200)의 저장 영역(1210)으로부터 섹터 정보를 포함하는 버퍼 디스크립터(BD)를 읽어온다(S211). 이때, 버퍼 디스크립터(BD)는 섹터 정보에 대응되는 스토리지 장치(1500)의 특정 영역에 액세스하기 위한 응용 프로그램에 의해서 생성된다. 버퍼 디스크립터(BD)는 데이터 보호기(330)를 통하여 스토리지 컨트롤러(310)로 입력된다.
스토리지 컨트롤러(310)는 버퍼 디스크립터(BD)에 포함된 소스 어드레스(예컨대 도 3의 11)를 이용하여 메인 메모리(1200)의 저장 영역, 예컨대 상기 소스 어드레스에 해당하는 저장 영역에 저장되어 있는 데이터(DATA)를 패치(fetch) 한다(S212).
스토리지 컨트롤러(310)는 버퍼 디스크립터(BD)에 포함된 섹터 정보에 기초하여 섹터 키(SECTOR_KEY)를 생성하고, 섹터 키(SECTOR_KEY)를 보안 관리 유닛 (320)과 데이터 보호기(330)로 전송한다(S213).
보안 관리 유닛(320)은, 스토리지 컨트롤러(310)로부터 출력된 섹터 키 (SECTOR_KEY)에 응답하여, 보안 정책 테이블(322)에 포함된 복수의 엔트리들 중 어느 하나를 선택한다(S214). 이때, 보안 정책 테이블(322)은 각각이 스토리지 장치 (1500)에 포함된 영역들 각각에 대한 보안 정책을 관리하는 엔트리들을 포함한다.
보안 관리 유닛(320)은 선택된 엔트리에 포함된 보안 정책을 이용하여 패치된 데이터(DATA)의 암호화 여부를 결정한다(S215). 만약, 패치된 데이터(DATA)에 대한 암호화 동작이 필요하다면, 데이터 보호기(330)는 섹터 키(SECTOR_KEY)를 이용하여 데이터(DATA)를 암호화할 수 있다. 그러나 패치된 데이터(DATA)에 대한 암호화 동작이 필요하지 않다면, 데이터 보호기(330)는 데이터(DATA)를 바이패스하여 스토리지 컨트롤러(310)로 전송한다.
스토리지 장치(1500)의 특정 영역에 대한 데이터 라이트 여부를 판단하기 위한 제1판단 단계로서, 보안 관리 유닛(320)은 선택된 엔트리에 포함된 보안 레벨 정보와 응용 프로그램의 보안 레벨 정보를 비교한다(S216). 이때, 응용 프로그램의 보안 레벨 정보는 트랜잭션 타입 레지스터(340)에 저장되어 있다가 보안 레벨 신호 (S/NS)로서 보안 관리 유닛(320)으로 전달된다.
보안 관리 유닛(320)은, 보안 정책 테이블(예컨대, 도 6의 322A)에 포함된 보안 레벨 정보(예컨대, 도 6의 S 또는 NS)와 응용 프로그램의 보안 레벨 정보가 동일하면, 스토리지 장치(1500)의 해당 영역, 예컨대 해당 섹터 영역에 대한 응용 프로그램의 접근을 허용할 수 있다(S217).
그러나, 보안 관리 유닛(320)은, 보안 정책 테이블에 포함된 보안 레벨 정보와 응용 프로그램의 보안 레벨 정보가 동일하지 않으면, 스토리지 장치(1500)의 해당 영역, 예컨대 해당 섹터 영역에 대한 응용 프로그램의 접근을 허용하지 않는다(S223).
스토리지 장치(1500)의 특정 영역에 대한 데이터 라이트 여부를 판단하기 위한 제2판단 단계로서, 보안 관리 유닛(320)은 선택된 엔트리에 포함된 액세스 동작 정보와 데이터의 입출력 동작 정보를 비교한다(S218). 이때, 데이터의 입출력 동작 정보는 스토리지 컨트롤러(310)에서 액세스 동작 신호(R/W)로서 보안 관리 유닛 (320)으로 전송된다. 보안 관리 유닛(320)은, 보안 정책 테이블에 포함된 액세스 동작 정보와 데이터의 입출력 동작 정보가 동일하면, 스토리지 장치(1500)의 해당 영역, 예컨대 해당 섹터 영역에 대한 응용 프로그램의 접근을 허용할 수 있다 (S219).
그러나, 보안 관리 유닛(320)은, 보안 정책 테이블에 포함된 액세스 동작 정보와 데이터의 입출력 동작 정보가 동일하지 않으면, 스토리지 장치(1500)의 해당 영역, 예컨대 해당 섹터 영역에 대한 응용 프로그램의 접근을 허용하지 않는다 (S223).
도 9a와 도 9b에서는 각 판단 단계(S216과 S218)가 순차적으로 진행되는 실시 예가 도시되었지만, 본 발명의 다른 실시 예에 의하면 데이터 암호화 동작 단계 (S215), 제1판단 단계(S216) 및 제2판단 단계(S218)는 독립적으로 진행되거나 또는 적어도 2개의 단계가 동시에 진행될 수 있다.
스토리지 장치(1500)의 특정 영역에 대한 데이터 접근이 허용되면, 직접 메모리 액세스(DMA) 동작이 실행된다. 스토리지 컨트롤러(310)는 스토리지 장치 (1500)의 특정 영역에 대한 직접 메모리 액세스 동작이 완료되기를 기다린다 (S220).
직접 메모리 액세스(DMA) 동작이 완료되고, 버퍼 디스크립터(BD)가 연쇄적으로 구현되어 있는 경우, 스토리지 컨트롤러(310)는 다음 버퍼 디스크립터가 유효한지 체크한다(S221). 다음 버퍼 디스크립터가 유효한 경우, 스토리지 컨트롤러 (310)는 메인 메모리(1200)로부터 다음 버퍼 디스크립터를 읽어오는 단계로 되돌아간다(S211). 그러나, 다음 버퍼 디스크립터가 없거나 유효하지 않은 경우, 스토리지 컨트롤러(310)는 직접 메모리 액세스(DMA) 동작을 완료한다(S222).
스토리지 컨트롤러(310)는 직접 메모리 액세스(DMA) 동작이 성공적으로 완료되었거나 혹은 해당 섹터 영역에 접근하지 못해 직접 메모리 액세스(DMA) 동작이 실패한 경우에 대한 상태 정보를 생성하고, 비-보안 CPU(1120)는 스토리지 컨트롤러(310)로부터 상기 상태 정보를 수신한다(S225).
도 10과 도 11은 다른 실시 예에 따른 보안 정책 테이블 및 그 동작 방법을 나타내는 도면들이다. 스토리지 장치(1500)가 많은 영역들을 포함할 때 상기 많은 영역들 모두에 대한 엔트리들을 보안 관리 유닛(320)에 저장하면, 하드웨어 자원의 소모가 늘어난다. 메인 메모리(1200)에 모든 엔트리들을 포함하는 보안 정책 테이블이 저장되고, 보안 관리 유닛(320) 내의 테이블이 변환 색인 버퍼 (translation lookaside buffer(TLB))처럼 동작하면, 하드웨어 자원의 소모가 감소한다.
도 10은 도 5의 보안 관리 유닛에 포함되는 보안 정책 테이블의 다른 실시 예를 나타내는 도면이다.
도 10을 참조하면, 보안 정책 테이블(322B)은 각각이 스토리지 장치(1500)에 포함된 영역들 각각에 대한 보안 정책을 관리하는 엔트리들(51~55)을 포함한다.
보안 정책 테이블(322B)에 포함된 엔트리의 수는 다양하게 설정될 수 있으며, 각 엔트리에 해당하는 스토리지 장치(1500)의 영역의 크기는 동일하게 설정될 수 있다. 본 발명의 실시 예에 따르면, 보안 정책 테이블(322B)에는 가상(virtual) 어드레스가 저장되고, 상기 가상 어드레스는 물리 (physical) 어드레스와 일치하지 않을 수 있다.
각 엔트리(51~55)는 보안 정책 테이블(322B)의 각 엔트리(51~55)에 저장된 값의 유효성(VALID/INVALID)) 여부, 및 보안 정책이 저장된다. 상기 보안 정책은 각 엔트리(51~55)에 해당되는 스토리지 장치(1500)의 각 영역에 대한 리드 동작과 라이트 동작에 의한 액세스 허용 여부(READ/WRITE), 상기 각 영역에 대한 보안 레벨에 따른 액세스 허용 여부(SECURE/NON-SECURE), 및 상기 각 영역에 대한 입출력 데이터의 암호화 동작 여부(ENCRYPTION/NON-ENCRYPTION) 중 적어도 하나를 포함할 수 있다.
예를 들어, 제1엔트리(51)에 대한 유효성(VALID/INVALID)이 유효(VALID)이므로, 스토리지 장치(1500)의 제1영역에 해당하는 제1엔트리(51)에 저장된 값들은 유효하다. 상기 제1영역에 대해서는 리드 동작(R)만 가능하고, 상기 제1영역은 보안 레벨(S)을 가지는 응용 프로그램에 의해서만 액세스 가능하며, 상기 제1영역에는 암호화된 데이터(Enc)가 저장될 수 있다.
제2엔트리(52)에 대한 유효성(VALID/INVALID)이 유효(VALID)이므로, 스토리지 장치(1500)의 제2영역에 해당하는 제2엔트리(52)에 저장된 값들은 유효하다. 상기 제2영역에 대해서는 리드 동작과 라이트 동작(R/W)이 모두 가능하고, 상기 제2영역은 보안 레벨(S)을 가지는 응용 프로그램뿐만 아니라 비-보안 레벨(NS)을 가지는 응용 프로그램에 의해서도 액세스 가능하며, 상기 제2영역에는 암호화되지 않은 데이터(NonEnc)가 저장될 수 있다.
제3엔트리(53)에 대한 유효성(VALID/INVALID)이 유효(VALID)이므로, 스토리지 장치(1500)의 제3영역에 해당하는 제3엔트리(53)에 저장된 값들은 유효하다.상기 제3영역에 대해서는 리드 동작 및 라이트 동작(R/W)이 모두 가능하고, 상기 제3영역은 보안 레벨(S)을 가지는 응용 프로그램에 의해서만 액세스 가능하며, 상기 제3영역에는 암호화된 데이터(Enc)가 저장될 수 있다.
제4엔트리(54)에 대한 유효성(VALID/INVALID)이 유효(VALID)이므로, 스토리지 장치(1500)의 제4영역에 해당하는 제4엔트리(54)에 저장된 값들은 유효하다. 상기 제4영역에 대해서는 리드 동작(R)만 가능하고, 상기 제4영역은 비-보안 레벨 (NS)을 가지는 응용 프로그램에 의해서도 액세스 가능하며, 상기 제4영역에는 암호화된 데이터(Enc)가 저장될 수 있다.
마지막 엔트리(55)에 대한 유효성(VALID/INVALID)이 무효(INVALID)이므로, 스토리지 장치(1500)의 마지막 영역에 해당하는 마지막 엔트리(55)에 저장된 값들은 무효이다.
보안 정책 테이블(322B)에서 영역을 설정하는 방법 및 서술되는 보안 정책의 종류는 다양하게 변경될 수 있다.
도 11은 도 9a에 도시된 전체 순서도에서 도 10에 도시된 보안 정책 테이블이 적용됨에 따라 달라지는 직접 메모리 액세스 동작의 일부를 나타내는 부분 순서도이다.
도 1, 도 5, 도 9a, 도 10 및 도 11을 참조하면, 보안 관리 유닛(320)은, 스토리지 컨트롤러(310)로부터 출력된 섹터 키(SECTOR_KEY)에 응답하여, 보안 정책 테이블(322B)에 포함된 엔트리들 중 어느 하나를 선택 또는 검색한다(S311). 이때, 보안 정책 테이블(322B)은 각각이 스토리지 장치 (1500)에 포함된 영역들 각각에 대한 보안 정책을 관리하는 엔트리들을 포함한다.
보안 관리 유닛(320)은 보안 정책 테이블(322B)에 섹터 키(SECTOR_KEY)에 해당하는 엔트리가 포함되어 있는지를 판단한다(S312). 보안 정책 테이블(322B)이 선택된 엔트리를 포함하고 있지 않으면(S312), 스토리지 컨트롤러(310)는 메인 메모리(1200)에 저장되어 있는 보안 정책 테이블을 보안 관리 유닛(320)에 로딩하고, 보안 관리 유닛(320)은 해당 로드된 보안 정책 테이블로부터 해당하는 엔트리에 대한 보안 정책을 읽어온다(S313).
보안 정책 테이블(322B)이 선택된 엔트리를 포함하고 있으면, 선택된 엔트리에 포함된 보안 정책을 이용하여, 패치된 데이터(DATA)의 암호화 여부가 결정된다(S315). 만약, 패치된 데이터(DATA)에 대한 암호화 동작이 필요하면, 데이터 보호기(330)는 섹터 키(SECTOR_KEY)를 이용하여 데이터 (DATA)를 암호화할 수 있다.
그러나 데이터(DATA)에 대한 암호화 동작이 필요하지 않다면, 데이터 보호기(330)는 데이터(DATA)를 바이패스하여 스토리지 컨트롤러(310)로 전송한다.
도 12와 도 13은 스토리지 장치가 임베디드 멀티 미디어 카드일 때의 실시 예를 나타내는 도면이다. 멀티미디어 카드(MMC)는 플래시 메모리의 메모리 카드 표준이고, 임베디드 멀티 미디어 카드(eMMC)는 JEDEC에서 표준으로 정한 내장형 MMC에 대한 표준이다. eMMC는 하드 디스크나 컴팩트 디스크가 가지는 한계를 벗어나, 다양한 종류의 디지털 기기에서 사용할 수 있도록 멀티미디어 데이터를 저장하는 역할을 하고 있다.
도 12는 본 발명의 실시 예에 따라 스토리지 장치가 eMMC(embedded MMC)일 때 보안 정책 테이블에 저장되는 신호들을 나타낸다.
도 12를 참조하면, BEGIN은 파티션이 시작되는 섹터 주소를 나타내고, END는 파티션이 끝나는 섹터 주소를 나타낸다.
SR은 실행되는 응용 프로그램이 보안 레벨을 가질 때 리드 동작의 가능 여부를 의미하며, 그 값이 0일 때는 액세스가 불허된다.
SW는 실행되는 응용 프로그램이 보안 레벨을 가질 때 라이트 동작의 가능 여부를 의미하며, 그 값이 0일 때는 액세스가 불허된다.
NSR은 실행되는 응용 프로그램이 비- 보안 레벨을 가질 때 리드 동작의 가능 여부를 의미하며, 그 값이 0일 때는 액세스가 불허된다.
NSW는 실행되는 응용 프로그램이 비- 보안 레벨을 가질 때 라이트 동작의 가능 여부를 의미하며, 그 값이 0일 때는 액세스가 불허된다.
UFK는 암호화 시에 퓨즈 키(Fuse Key)의 이용 여부를 나타내며, 그 값이 0일 때에는 암호화 동작을 위해 레지스터에 저장된 키(register key)를 사용하고, 그렇지 않으면 이-퓨즈 키(e-fuse key)를 이용한다.
ECB는 ECB(Electronic codebook) 모드임을 나타내며, 그 값이 0이면 XTS 모드로 실행된다.
ENC는 암호화 동작 필요 여부를 의미하며, 그 값이 0일 때에는 섹터 데이터는 암호화 동작을 하지 않고 스토리지 장치에 액세스할 수 있다.
VALID는 테이블의 엔트리에 저장된 값의 유효성을 의미하며, 그 값이 0일 때에는 상기 엔트리에 저장된 값이 더 이상 유효하지 않다는 것을 나타낸다.
도 13은 도 5의 보안 관리 유닛에 포함된 보안 정책 테이블의 다른 예를 나타내는 도면이다.
도 12 및 도 13을 참조하면, 스토리지 장치(1500)의 일 실시 예인 임베디드 멀티 미디어 카드(1500C)는 각각이 서로 다른 보안 정책을 가지는 복수의 파티션들(71, 72, 및 73)을 포함한다. 보안 정책 테이블(322C)은 각각이 임베디드 멀티 미디어 카드(1500C)에 포함된 복수의 파티션들(71, 72, 및 73) 각각에 대한 보안 정책을 관리하는 엔트리들을 포함한다.
각 엔트리는 임베디드 멀티 미디어 카드(1500C)에 포함된 복수의 파티션들 (71, 72, 및 73)의 범위를 표현하기 위하여 시작 섹터 주소(BEGIN) 및 종료 섹터 주소(END)를 설정한다.
또한, 각 엔트리에는 보안 정책 테이블의 각 엔트리에 저장된 값의 유효성 (VALID) 여부 및 보안 정책이 저장된다. 상기 보안 정책은 도 12를 참조하여 설명한 바와 같이 각 엔트리에 해당되는 파티션에 대한 보안 레벨에서 리드 동작(SR), 보안 레벨에서 라이트 동작(SW), 비-보안 레벨에서 리드 동작(NSR), 비-보안 레벨 에서 라이트 동작(NSW), 암호화 모드(ECB) 및 입출력 데이터의 암호화 동작(ENC) 중 적어도 하나를 포함할 수 있다.
예를 들어, 제1엔트리(61)의 유효성(VALID)의 값이 1이므로, 스토리지 장치(1500)의 제1파티션(71)에 해당하는 제1엔트리(61)의 값들은 유효하다. 제1파티션(71)의 영역은 시작 주소인 00000000에 대응되는 영역부터 종료 주소인 000FFFFF에 대응되는 영역까지의 범위를 가진다. 제1파티션(71)에는 부트 프로그램 또는 부트 이미지가 저장되어있어서 비-보안 레벨에서 제1파티션(71)에 대해서는 리드 동작만이 가능하다. 그러나 제1파티션(71)에 저장되는 데이터에 대한 암호화 동작은 필요하지 않다.
제2엔트리(62)의 유효성(VALID)의 값이 1이므로, 스토리지 장치(1500)의 제2파티션(72)에 해당하는 제2엔트리(62)의 값들은 유효하다. 제2파티션(72)의 영역은 시작 주소인 00010000에 대응되는 영역부터 종료 주소인 00EFFFFF에 대응되는 영역까지의 범위를 가진다. 제2파티션(72)에는 유저 파일 시스템(User File system)이 저장되어 비-보안 레벨에서 제2파티션(72)에 대해서는 리드 동작 및 라이트 동작이 모두 가능하다. 그러나 제2파티션(72)에 저장되는 데이터에 대한 암호화 동작은 필요하다.
제3엔트리(63)의 유효성(VALID)의 값이 1이므로, 스토리지 장치(1500)의 제3파티션(73)에 해당하는 제3엔트리(63)의 값들은 유효하다. 제3파티션(73)의 영역은 시작 주소인 00F00000에 대응되는 영역부터 종료 주소인 00FFFFFF에 대응되는 영역까지의 범위를 가진다. 제3파티션(73)에는 보안 운영 체제 파일 시스템(Secure OS File system)이 저장되어 있어서 보안 레벨에서 제3파티션(73)에 대해서는 리드 동작 및 라이트 동작이 모두 가능하다. 더불어 제3파티션(73)에 저장되는 데이터에 대한 암호화 동작은 필요하다.
도 14와 도 15는 본 발명의 다른 실시 예에 따른 버퍼 디스크립터 및 호스트 컨트롤러 인터페이스를 나타내는 도면이다.
서로 다른 제1응용 프로그램 및 제2응용 프로그램이 CPU(1100)에서 실행될 수 있다. 이 경우에 상기 제1응용 프로그램은 스토리지 장치(1500)의 제1영역에 제1데이터를 암호화하여 저장하고, 상기 제2응용 프로그램은 스토리지 장치(1500)의 제2영역에 제2데이터를 저장할 수 있다.
이때, 제1데이터가 상기 제1영역에 해당되는 섹터 키를 이용하여 암호화 되어 저장되어 있고, 상기 제2응용 프로그램이 상기 제1영역에 해당되는 상기 섹터 키를 이용하여 데이터(DATA 또는 DATA')에 대한 암호화 또는 복호화 동작을 수행할 수 있다면, 상기 제2응용 프로그램은 상기 제1응용 프로그램에 의해 액세스 가능한 데이터를 리드할 수 있는 문제점이 발생할 수 있다.
이를 극복하기 위해서, 본 발명의 실시 예는 암호화 또는 복호화에 대한 권한을 가지는 응용 프로그램이라도 다른 응용 프로그램에 의해 생성된 데이터를 리드하지 못하도록, 버퍼 디스크립터(BD)에 보안 키를 추가할 수 있다.
도 14는 도 1의 저장 영역에 저장될 수 있는 버퍼 디스크립터의 다른 실시 예를 나타내는 도면이다. 도 1 및 도 14를 참조하면, 버퍼 디스크립터(20)는 소스 어드레스(21), 목적지 어드레스(22), 데이터 길이(23), 다음 목적지 포인터(24) 및 보안 키(25)를 포함한다.
소스 어드레스(21)는 처리될 데이터가 저장되어 있는 영역의 주소 정보를 포함하고, 목적지 어드레스(22)는 처리된 데이터를 저장하려는 영역의 주소 정보를 포함한다. 또한, 데이터 길이(23)는 전송하려는 또는 처리하려는 데이터의 크기 (size)를 의미하며, 다음 목적지 포인터(24)는 버퍼 디스크립터(20)에 의한 서비스 완료 후 다음 동작을 계속 진행하기 위한 포인터의 위치를 가리킨다. 더불어, 버퍼 디스크립터(20)는 영역, 예컨대 섹터 별로 보안키(25)를 저장할 수 있으며, 보안 키(25)는 실행되는 응용 프로그램마다 다르게 생성될 수 있다.
도 15는 도 1의 호스트 컨트롤러 인터페이스의 다른 실시 예를 나타내는 블록도이다.
도 5의 호스트 컨트롤러 인터페이스(1400A)는 데이터 (DATA)를 암호화하거나 암호화된 데이터(DATA')를 복호화하기 위하여 섹터 키(SECTOR_KEY)를 이용하였지만, 도 15의 호스트 컨트롤러 인터페이스(1400B)는 데이터(DATA)를 암호화하거나 암호화된 데이터(DATA')를 복호화하기 위하여 보안 키(Private_Key)를 이용할 수 있다.
도 1 및 도 15를 참조하면, 호스트 컨트롤러 인터페이스(1400B)는 스토리지 컨트롤러(410), 보안 관리 유닛(security management unit(SMU); 420), 데이터 보호기(data protector; 430) 및 트랜잭션 타입 레지스터(440)를 포함한다.
스토리지 컨트롤러(410)는 스토리지 장치(1500)에 액세스되는 데이터를 제어한다. 스토리지 컨트롤러(410)는 메인 메모리(1200)로부터 출력된 버퍼 디스크립터 (BD)에 포함된 소스 어드레스를 이용하여 메인 메모리(1210)로부터 데이터(DATA)를 리드한다. 또한, 스토리지 컨트롤러(410)는 버퍼 디스크립터(BD)에 포함된 보안 키 (Private_Key)를 데이터 보호기(430)로 출력할 수 있다.
버퍼 디스크립터(BD)의 포함된 섹터 정보는 스토리지 장치(1500)로 전달되는 섹터 주소(SECTOR_ADD) 및 보안 관리 유닛(420)으로 전달되는 섹터 키(SECTOR_KEY)를 생성하는데 사용될 수 있다.
보안 관리 유닛(420)은 스토리지 컨트롤러(410)로부터 출력된 섹터 키 (SECTOR_KEY)에 응답해서 보안 정책 테이블의 엔트리들 중에서 어느 하나를 선택하고, 선택된 엔트리에 포함된 보안 정책에 따라 데이터(DATA)의 암호화 동작 여부 또는 암호화된 데이터(DATA')의 복호화 여부를 결정하는 암/복호화 지시 신호(ED)를 출력할 수 있다.
암/복호화 지시 신호(ED)에 따라, 데이터 보호기(430)는 호스트 컨트롤러 인터페이스(1400B)를 통해 스토리지 장치(1500)로/로부터 입/출력되는 데이터(DATA 또는 DATA')에 대한 암호화 동작 또는 복호화 동작을 수행할 수 있다. 예컨대, 데이터 보호기(430)는, 보안 관리 유닛(420)로부터 출력된 암/복호화 지시 신호(ED)에 기초하여, 데이터(DATA)에 대한 암호화 동작, 데이터(DATA')에 대한 복호화 동작, 또는 데이터(DATA 또는 DATA')에 대한 바이패스 동작 중 어느 하나를 수행할지를 결정한다.
만약, 데이터(DATA)에 대한 암호화 동작을 수행해야 한다면, 데이터 보호기 (330)는 스토리지 컨트롤러(410)로부터 출력된 보안 키(Private_Key)를 이용하여 암호화 동작을 수행할 수 있다.
이때, 보안키(Private_Key)는 각 응용 프로그램이 실행될 때마다 서로 다르게 설정 또는 생성되므로, 다른 응용 프로그램들은 보안 키(Private_Key)를 알 수 없다. 따라서, 다른 응용 프로그램들이 암호화된 스토리지 영역(1500)에 저장된 데이터에 접근할 수 있다고 하더라고, 다른 응용 프로그램들은 상기 데이터를 라이트 할 때 사용되었던 보안 키(Private_Key)를 알 수 없어 스토리지 장치(1500)에 저장된 상기 데이터를 정확하게 복호화할 수 없다. 따라서 각각의 응용 프로그램에 의해 생성된 데이터는 더 안전하게 보호될 수 있다.
도 16 및 도 17은 도 1의 호스트 컨트롤러 인터페이스의 다른 실시 예들 나타내는 블록도 들이다. 본 발명의 실시 예에 따르면, 도 5의 보안 관리 유닛(320)과 동일 또는 유사한 기능을 수행하는 보안 관리 유닛은 호스트 컨트롤러 인터페이스의 내부에서 독립적으로 저장될 수 있지만, 다른 실시 예에 따르면 도 5의 보안 관리 유닛(320)과 동일 또는 유사한 기능을 수행하는 보안 관리 유닛은 스토리지 컨트롤러 또는 데이터 보호기 중 어느 하나에 내장될 수도 있다.
도 16은 도 1의 호스트 컨트롤러 인터페이스의 다른 실시 예를 나타내는 블록도이다. 도 1 및 도 16을 참조하면, 호스트 컨트롤러 인터페이스(1400C)는 스토리지 컨트롤러(510), 데이터 보호기(520) 및 트랜잭션 타입 레지스터(530)를 포함할 수 있다.
스토리지 컨트롤러(510)는 메인 메모리(1200)로부터 출력된 버퍼 디스크립터(BD)에 포함된 소스 어드레스를 이용하여 메인 메모리(1200)로부터 데이터(DATA)를 리드하고, 버퍼 디스크립터(BD)에 포함된 섹터 정보에 응답하여 섹터 키 (SECTOR_KEY)를 데이터 보호기(520)로 출력할 수 있다.
스토리지 컨트롤러(510)는 스토리지 장치(1500)에 포함된 영역들 각각에 대한 보안 정책을 관리하는 보안 관리 유닛(511)을 포함한다. 보안 관리 유닛(511)은 버퍼 디스크립터(BD)에 포함된 섹터 정보에 응답하여 보안 정책 테이블의 엔트리들 중에서 어느 하나를 선택한다. 보안 관리 유닛(511)은 선택된 엔트리에 포함된 보안 정책에 따라 데이터(DATA)의 암호화 동작 여부를 결정하는 암/복호화 지시 신호(ED)를 데이터 보호기(520)로 출력할 수 있다.
도 5의 보안 관리 유닛(320)의 구조와 기능은 도 16의 보안 관리 유닛(511)의 구조와 기능과 실질적으로 동일하다.트랜잭션 타입 레지스터(340)과 실질적으로 동일한 기능을 수행하는 트랜잭션 타입 레지스터(530)는 버퍼 디스크립터 (BD)를 생성하는 응용 프로그램의 보안 레벨 정보를 저장하고, 보안 레벨 신호 (S/NS)를 스토리지 컨트롤러(510)에 전송한다. 스토리지 컨트롤러(510)는 입력된 보안 레벨 신호(S/NS) 및 보안 관리 유닛(511)에 포함된 보안 정책 테이블을 참조하여, 스토리지 장치(1500)의 특정 영역에 대한 데이터의 액세스 여부를 판단할 수 있다.
도 17은 도 1의 호스트 컨트롤러 인터페이스의 또 다른 실시 예를 나타내는 블록도이다. 도 1 및 도 17을 참조하면, 호스트 컨트롤러 인터페이스(1400D)는 스토리지 컨트롤러(610) 및 데이터 보호기(620)를 포함할 수 있다. 데이터 보호기(620)는 트랜잭션 타입 레지스터(621), 보안 관리 유닛(SMU; 622) 및 보안 엔진 (security engine; 623)을 포함할 수 있다.
스토리지 컨트롤러(610)는 메인 메모리(1200)로부터 출력된 버퍼 디스크립터(BD)에 포함된 소스 어드레스를 이용하여 메인 메모리(1200)로부터 데이터(DATA)를 리드하고, 버퍼 디스크립터(BD)에 포함된 섹터 정보에 응답하여 섹터 키 (SECTOR_KEY)를 데이터 보호기(620)로 출력할 수 있다. 스토리지 컨트롤러(610)는 리드 동작 또는 라이트 동작을 수행하기 위한 액세스 동작 신호(R/W)를 데이터 보호기(620)로 출력한다.
데이터 보호기(620)는 스토리지 장치(1500)에 포함된 영역들 각각에 대한 보안 정책을 관리하는 보안 관리 유닛(622)을 포함한다. 보안 관리 유닛 (622)은 섹터 키(SECTOR_KEY)에 응답하여 보안 정책 테이블의 엔트리들 중에서 어느 하나를 선택하고, 선택된 엔트리에 포함된 보안 정책에 따라 접근 지시 신호(IAE)를 스토리지 컨트롤러(610)로 출력하고 스토리지 컨트롤러 (610)는 접근 지시 신호(IAE)에 기초하여 스토리지 장치(1500)에 대한 데이터의 액세스를 제어할 수 있다.
도 18은 본 발명의 또 다른 실시 예에 따른 컴퓨터 시스템을 나타내는 블록도이다. 도 18을 참조하면, 컴퓨터 시스템(3000)은 이동 전화기(cellular phone), 스마트 폰(smart phone), PDA(personal digital assistant), 스마트 패드 (smart pad) 또는 무선 통신 장치로 구현될 수 있다. 상기 스마트 패드는 태블릿(tablet) PC를 포함한다.
컴퓨터 시스템(3000)은 버스(3100)에 전기적으로 연결되는 마이크로 프로세서(3200), 캐시 메모리(3210), ROM(read only memory; 3300), 메인 메모리 (3400), 메인 메모리 컨트롤러(3410), 스토리지 장치(3500), 호스트 컨트롤러 인터페이스(3510), 입출력 컨트롤러(I/O controller; 3610), 입출력 디바이스(I/O device; 3600), 디스플레이 디바이스(display device; 3700) 및 디스플레이 컨트롤러(display controller; 3710)를 포함할 수 있다.
마이크로 프로세서(3200)는 컴퓨터 시스템(3000) 전체를 제어하는 장치이다. 마이크로 프로세서(3200)는 복수의 코어들을 포함하는 멀티 코어 프로세서로 구현될 수 있다.
캐시 메모리(3210)는 마이크로 프로세서(3200)와 근접하게 위치한다. 캐시 메모리(3210)는 상대적으로 빠른 동작 속도를 갖는 마이크로 프로세서(3200)와 상대적으로 느린 동작 속도를 갖는 메인 메모리(3400)에서 사이에서 두 장치 (3200과 3210) 간의 데이터 처리 속도를 완충해 주기 위해 사용되는 고속의 기억 장치이다. ROM(3300)은 읽기 전용 기억 장치로 부트 코드 등을 저장할 수 있다.
메인 메모리(1200 또는 2200)와 실질적으로 동일한 기능을 수행하는 메인 메모리(3400)는 DRAM(dynamic random aaccess memory), SRAM(static random access memory) 또는 모바일 DRAM 등으로 구현될 수 있다. 메인 메모리 컨트롤러(1300 또는 2300)와 실질적으로 동일한 기능을 수행하는 메인 메모리 컨트롤러(3410)는 메인 메모리(3400)를 제어한다.
스토리지 장치(1500 또는 2500)와 실질적으로 동일한 기능을 수행하는 스토리지 장치(3500)는 하드디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD), 또는 레이드(redundant array of independent disk(RAID)) 등일 수 있다.
스토리지 장치(3500)는 불휘발성 메모리 장치로 구현될 수 있으며, 상기 불휘발성 메모리 장치는 EPROM(Erasable Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(Flash Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), 또는 FRAM(Ferroelectric Random Access Memory) 등을 포함할 수 있다.
호스트 컨트롤러 인터페이스(1400 또는 2400)와 실질적으로 동일한 기능을 수행하는 호스트 컨트롤러 인터페이스(3510)는 스토리지 장치(3500)의 영역별 보안 정책을 관리할 수 있다. 상기 보안 정책은 하나 이상의 응용 프로그램에서 사용되는 데이터가 보안상 민감한 데이터인 경우에는, 마이크로 프로세서(3200)에서 실행되는 다른 응용 프로그램에 의하여 액세스 가능하지 않도록 관리할 수 있다.
디스플레이 컨트롤러(3710)는 디스플레이 디바이스(3700)의 동작을 제어한다.
입출력 장치(3700)는 마이크로 프로세서(3200)의 동작을 제어하기 위한 제어 신호 또는 마이크로 프로세서(3200)에 의하여 처리될 데이터를 입 출력 할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키 패드(keypad), 또는 키보드로 구현될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000, 2000, 및 3000: 컴퓨터 시스템
1110: 보안 CPU
1120: 비 보안 CPU
1200, 및 2200: 메인 메모리
1400, 1400A, 1400B, 1400C, 및 400D: 호스트 컨트롤러 인터페이스
1500, 1500C, 및 2500: 스토리지 장치
310, 410, 510, 및 610: 스토리지 컨트롤러
320, 420, 511, 및 622: 보안 관리 유닛
330, 430, 520: 데이터 보호기
340, 440, 530, 621: 트랜잭션 타입 레지스터
322A, 322B, 및 322C: 보안 정책 테이블

Claims (20)

  1. 메인 메모리에 저장되고, 상기 메인 메모리의 소스 어드레스 및 스토리지 장치의 섹터 정보를 포함하는 버퍼 디스크립터를, 상기 메인 메모리로부터 수신하는 단계;
    상기 소스 어드레스에 상응하는 영역에 저장된 데이터를 리드하는 단계;
    상기 섹터 정보를 이용하여 보안 정책 테이블에 포함된 복수의 엔트리들 중 어느 하나를 선택하는 단계; 및
    상기 선택된 엔트리에 포함된 보안 정책을 이용하여 상기 데이터의 암호화 여부를 결정하는 단계를 포함하는 호스트 컨트롤러 인터페이스의 동작 방법.
  2. 제1항에 있어서,
    상기 버퍼 디스크립터는 상기 섹터 정보에 대응되는 스토리지(storage) 장치의 특정 영역을 액세스하기 위한 응용 프로그램에 의해서 생성되는 호스트 컨트롤러 인터페이스의 동작 방법.
  3. 제1항에 있어서,
    상기 섹터 정보에 대응되는 스토리지 장치의 특정 영역에 상기 데이터를 라이트할지의 여부를 판단하기 위하여, 상기 선택된 엔트리에 포함된 보안 레벨 정보와 응용 프로그램의 보안 레벨 정보를 서로 비교하는 단계를 더 포함하는 호스트 컨트롤러 인터페이스의 동작 방법.
  4. 제1항에 있어서,
    상기 섹터 정보에 대응되는 스토리지 장치의 특정 영역에 상기 데이터를 라이트할지의 여부를 판단하기 위하여, 상기 선택된 엔트리에 포함된 액세스 동작 정보와 상기 데이터의 입출력 동작 정보를 서로 비교하는 단계를 더 포함하는 호스트 컨트롤러 인터페이스의 동작 방법.
  5. 제1항에 있어서,
    상기 선택된 엔트리는 상기 메인 메모리로부터 리드된 호스트 컨트롤러 인터페이스의 동작 방법.
  6. 스토리지 장치에 포함된 복수의 영역들 각각에 대한 보안 정책을 관리하는 복수의 엔트리들을 포함하는 보안 정책 테이블;
    버퍼 디스크립터에 포함된 섹터 정보에 응답하여 상기 복수의 엔트리들 중 어느 하나를 선택하고, 선택된 엔트리에 포함된 보안 정책에 따라 데이터의 암호화 여부를 지시하는 제1제어 신호를 출력하는 섹터 액세스 제어 로직을 포함하는 보안 관리 유닛.
  7. 제6항에 있어서, 상기 보안 관리 유닛은,
    보안 CPU로부터 출력된 테이블 업데이트 명령에 응답하여, 상기 선택된 엔트리에 포함된 상기 보안 정책을 변경하는 테이블 액세스 제어 로직을 더 포함하는 보안 관리 유닛.
  8. 제6항에 있어서,
    상기 보안 정책은 보안 레벨 정보와 액세스 동작 정보 중 적어도 하나를 포함하는 보안 관리 유닛.
  9. 제8항에 있어서, 상기 섹터 액세스 제어 로직은,
    상기 섹터 정보와 보안 레벨 신호를 수신하고, 상기 선택된 엔트리에 포함된 보안 레벨 정보와 응용 프로그램의 보안 레벨 정보를 서로 비교하고 비교 결과에 따라 상기 스토리지 장치의 특정 영역에 대한 액세스 허용 여부를 지시하는 제2제어 신호를 출력하는 보안 관리 유닛.
  10. 제8항에 있어서, 상기 섹터 액세스 제어 로직은,
    상기 섹터 정보와 액세스 동작 신호를 수신하고, 상기 선택된 엔트리에 포함된 액세스 동작 정보와 데이터 액세스 동작 정보를 서로 비교하고 비교 결과에 따라 상기 스토리지 장치의 특정 영역에 대한 액세스 허용 여부를 지시하는 제2제어 신호를 출력하는 보안 관리 유닛.
  11. 제6항에 있어서,
    상기 보안 관리 유닛은 호스트 컨트롤러 인터페이스의 일부로서 구현되는 보안 관리 유닛.
  12. 메인 메모리로부터 출력된 버퍼 디스크립터에 포함된 소스 어드레스를 이용하여 상기 메인 메모리로부터 데이터를 리드하고, 상기 버퍼 디스크립터에 포함된 섹터 정보에 응답하여 섹터 키를 출력하는 스토리지 컨트롤러;
    상기 섹터 키에 응답해서 복수의 엔트리들 중에서 어느 하나를 선택하고, 선택된 엔트리에 포함된 보안 정책에 따라 제1제어 신호를 출력하는 보안 관리 유닛; 및
    상기 제1제어 신호에 기초하여 상기 데이터에 대한 암호화 동작 여부를 결정하는 데이터 보호기를 포함하고,
    상기 복수의 엔트리들 각각은 스토리지 장치에 포함된 복수의 영역들 각각에 대한 보안 정책을 관리하는 호스트 컨트롤러 인터페이스.
  13. 제12항에 있어서,
    상기 데이터 보호기는 상기 제1제어 신호와 상기 섹터 키에 응답하여 상기 암호화 동작을 수행하는 호스트 컨트롤러 인터페이스.
  14. 제12항에 있어서,
    상기 데이터 보호기는 상기 제1제어 신호와 상기 버퍼 디스크립터에 포함된 보안 키에 응답하여 상기 암호화 동작을 수행하는 호스트 컨트롤러 인터페이스.
  15. 제12항에 있어서,
    상기 버퍼 디스크립터를 생성하는 응용 프로그램의 보안 레벨 정보를 저장하고, 상기 보안 레벨 정보를 나타내는 보안 레벨 신호를 상기 보안 관리 유닛으로 출력하는 트랜잭션 타입 레지스터를 더 포함하는 호스트 컨트롤러 인터페이스.
  16. 제15항에 있어서, 상기 보안 관리 유닛은,
    상기 섹터 정보 및 상기 보안 레벨 신호를 수신하고, 상기 선택된 엔트리에 포함된 보안 레벨 정보와 상기 보안 레벨 신호를 서로 비교하고 비교 결과에 따라 상기 스토리지 장치의 특정 영역에 대한 액세스 허용 여부를 지시하는 제2제어 신호를 출력하는 호스트 컨트롤러 인터페이스.
  17. 제12항에 있어서, 상기 보안 관리 유닛은
    상기 섹터 정보 및 상기 스토리지 컨트롤러로부터 출력된 액세스 동작 신호를 수신하고, 상기 선택된 엔트리에 포함된 액세스 동작 정보와 데이터 액세스 동작 정보를 서로 비교하고 비교 결과에 따라 상기 스토리지 장치의 특정 영역에 대한 액세스 허용 여부를 지시하는 제2제어 신호를 출력하는 호스트 컨트롤러 인터페이스.
  18. 복수의 영역들을 포함하는 스토리지 장치;
    상기 복수의 영역들 중에서 어느 하나인 특정 영역을 액세스하는 응용 프로그램이 실행될 때, 버퍼 디스크립터를 생성하는 CPU(central processing unit);
    상기 버퍼 디스크립터와 데이터를 저장하는 메인 메모리; 및
    상기 메인 메모리로부터 출력된 상기 버퍼 디스크립터에 포함된 소스 어드레스를 이용하여 상기 메인 메모리로부터 데이터를 리드하고, 상기 버퍼 디스크립터에 포함된 섹터 정보에 응답해서 복수의 엔트리들 중에서 어느 하나를 선택하고, 상기 선택된 엔트리에 포함된 보안 정책에 따라 상기 데이터에 대한 암호화 동작 여부를 결정하는 호스트 컨트롤러 인터페이스를 포함하고,
    상기 복수의 엔트리들 각각은 상기 스토리지 장치에 포함된 상기 복수의 영역들 각각에 대한 보안 정책을 관리하는 컴퓨팅 디바이스(computing device).
  19. 제18항에 있어서, 상기 호스트 컨트롤러 인터페이스는,
    상기 소스 어드레스를 이용하여 상기 메인 메모리로부터 상기 데이터를 리드하고, 상기 섹터 정보에 응답하여 섹터 키를 출력하는 스토리지 컨트롤러;
    상기 섹터 키에 응답해서 상기 복수의 엔트리들 중에서 어느 하나를 선택하고, 상기 선택된 엔트리에 포함된 상기 보안 정책에 따라 제1제어 신호를 출력하는 보안 관리 유닛; 및
    상기 제1제어 신호에 기초하여 상기 데이터에 대한 암호화 동작 여부를 결정하는 데이터 보호기를 포함하는 컴퓨팅 디바이스.
  20. 복수의 영역들을 포함하는 플래시 메모리;
    상기 복수의 영역들 중에서 어느 하나를 액세스하는 응용 프로그램이 실행될 때 버퍼 디스크립터를 생성하는 프로세서;
    상기 버퍼 디스크립터와 데이터를 저장하는 메인 메모리; 및
    상기 메인 메모리로부터 출력된 상기 버퍼 디스크립터에 포함된 소스 어드레스를 이용하여 상기 메인 메모리로부터 데이터를 리드하고, 상기 버퍼 디스크립터에 포함된 섹터 정보에 응답해서 복수의 엔트리들 중에서 어느 하나를 선택하고, 상기 선택된 엔트리에 포함된 보안 정책에 따라 상기 데이터에 대한 암호화 동작 여부를 결정하는 호스트 컨트롤러 인터페이스를 포함하고,
    상기 복수의 엔트리들 각각은 상기 플래시 메모리에 포함된 상기 복수의 영역들 각각에 대한 보안 정책을 관리하는 임베디드 멀티 미디어 카드.
KR1020120116890A 2012-10-19 2012-10-19 보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들 KR102017828B1 (ko)

Priority Applications (9)

Application Number Priority Date Filing Date Title
KR1020120116890A KR102017828B1 (ko) 2012-10-19 2012-10-19 보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들
US14/017,623 US9135459B2 (en) 2012-10-19 2013-09-04 Security management unit, host controller interface including same, method operating host controller interface, and devices including host controller interface
TW102135933A TWI595379B (zh) 2012-10-19 2013-10-04 安全管理單元、含有其的主機控制介面、主機控制介面的操作方法以及含有主機控制介面的裝置
AU2013242802A AU2013242802B2 (en) 2012-10-19 2013-10-04 Security management unit, host controller interface including the same, method for operating host controller interface, and devices including host controller interface
NL2011611A NL2011611B1 (en) 2012-10-19 2013-10-15 Security management unit, host controller interface including same, method operating host controller interface, and devices including host controller interface.
DE102013111339.7A DE102013111339A1 (de) 2012-10-19 2013-10-15 Sicherheitsverwaltungseinheit, Hostcontrollerschnittstelle mit derselben, Verfahren zum Betreiben einer Hostcontrollerschnittstelle und Vorrichtungen mit einer Hostcontrollerschnittstelle
JP2013218234A JP6298268B2 (ja) 2012-10-19 2013-10-21 セキュリティ管理ユニットとそれを含むホストコントローラインターフェース及びその動作方法、並びにホストコントローラインターフェースを含むコンピュータシステム
CN201310495239.6A CN103778075B (zh) 2012-10-19 2013-10-21 安全管理单元、包括它的主机控制器接口及其操作方法
US14/829,705 US9785784B2 (en) 2012-10-19 2015-08-19 Security management unit, host controller interface including same, method operating host controller interface, and devices including host controller interface

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120116890A KR102017828B1 (ko) 2012-10-19 2012-10-19 보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들

Publications (2)

Publication Number Publication Date
KR20140067180A KR20140067180A (ko) 2014-06-05
KR102017828B1 true KR102017828B1 (ko) 2019-09-03

Family

ID=50437163

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120116890A KR102017828B1 (ko) 2012-10-19 2012-10-19 보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들

Country Status (8)

Country Link
US (2) US9135459B2 (ko)
JP (1) JP6298268B2 (ko)
KR (1) KR102017828B1 (ko)
CN (1) CN103778075B (ko)
AU (1) AU2013242802B2 (ko)
DE (1) DE102013111339A1 (ko)
NL (1) NL2011611B1 (ko)
TW (1) TWI595379B (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9355261B2 (en) 2013-03-14 2016-05-31 Appsense Limited Secure data management
US9215251B2 (en) * 2013-09-11 2015-12-15 Appsense Limited Apparatus, systems, and methods for managing data security
CN104063641B (zh) 2014-06-23 2017-11-24 华为技术有限公司 硬盘安全访问控制方法和硬盘
CN105528306B (zh) * 2014-09-28 2019-01-25 宇龙计算机通信科技(深圳)有限公司 一种双系统终端的数据读写方法及双系统终端
CN105653467A (zh) * 2015-05-21 2016-06-08 宇龙计算机通信科技(深圳)有限公司 一种存储空间分配方法及装置
CN106533652A (zh) * 2015-09-15 2017-03-22 中兴通讯股份有限公司 一种基于xts-sm4的存储加解密方法及装置
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
KR102353058B1 (ko) 2016-02-02 2022-01-20 삼성전자주식회사 시스템 온 칩 및 그것의 동작 방법
DE102016210788B4 (de) * 2016-02-18 2023-06-07 Volkswagen Aktiengesellschaft Komponente zur Verarbeitung eines schützenswerten Datums und Verfahren zur Umsetzung einer Sicherheitsfunktion zum Schutz eines schützenswerten Datums in einer solchen Komponente
US10891396B2 (en) * 2016-05-27 2021-01-12 Samsung Electronics Co., Ltd. Electronic circuit performing encryption/decryption operation to prevent side- channel analysis attack, and electronic device including the same
US10133505B1 (en) * 2016-09-29 2018-11-20 EMC IP Holding Company LLC Cooperative host and data storage system services for compression and encryption
JP2018088165A (ja) * 2016-11-29 2018-06-07 日本電産サンキョー株式会社 カードリーダ及びカードリーダの制御方法
US10936211B2 (en) * 2017-09-07 2021-03-02 Arm Ip Ltd Optimized storage protection
JP6762924B2 (ja) * 2017-12-01 2020-09-30 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
US10936212B2 (en) * 2018-01-04 2021-03-02 Montage Technology Co., Ltd. Memory controller, method for performing access control to memory module
US10983711B2 (en) * 2018-01-04 2021-04-20 Montage Technology Co., Ltd. Memory controller, method for performing access control to memory module
CN110059028A (zh) * 2018-01-17 2019-07-26 瑞昱半导体股份有限公司 数据储存芯片及数据存取方法
EP3540618B1 (en) * 2018-03-15 2023-01-25 Rohde & Schwarz GmbH & Co. KG Portable storage apparatus
CN112074837A (zh) 2018-03-23 2020-12-11 美光科技公司 存储装置认证的修改
DE112019002587T5 (de) * 2018-05-23 2021-05-06 Microsemi Storage Solutions, Inc. Verfahren und vorrichtung für eine streu-/sammelverarbeitungsmaschine in einer speichersteuerung für zwischenspeicherungsanwendungen
US11288404B2 (en) 2019-06-14 2022-03-29 Infineon Technologies Ag Resource protection
JP7246032B2 (ja) * 2019-07-12 2023-03-27 パナソニックIpマネジメント株式会社 車載セキュアストレージシステム
TWI791138B (zh) * 2019-09-12 2023-02-01 新唐科技股份有限公司 序列周邊介面快閃記憶體之安全裝置
US11582607B2 (en) 2020-07-10 2023-02-14 Western Digital Technologies, Inc. Wireless security protocol
KR20220041586A (ko) * 2020-09-25 2022-04-01 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 전자 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090319741A1 (en) * 2008-06-24 2009-12-24 Nagravision Sa Secure memory management system and method

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4713753A (en) * 1985-02-21 1987-12-15 Honeywell Inc. Secure data processing system architecture with format control
US5787169A (en) 1995-12-28 1998-07-28 International Business Machines Corp. Method and apparatus for controlling access to encrypted data files in a computer system
JPH1153263A (ja) 1997-07-31 1999-02-26 T I F:Kk メモリ管理方式
DE19805299A1 (de) * 1998-02-10 1999-08-12 Deutz Ag Elektronische Regeleinrichtung
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
KR20000026335A (ko) * 1998-10-20 2000-05-15 윤종용 실시간 제어가 가능한 다중 채널 직접 메모리 액세스 시스템
US6151664A (en) * 1999-06-09 2000-11-21 International Business Machines Corporation Programmable SRAM and DRAM cache interface with preset access priorities
US7987510B2 (en) * 2001-03-28 2011-07-26 Rovi Solutions Corporation Self-protecting digital content
US7073059B2 (en) * 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
US20040064723A1 (en) * 2001-10-31 2004-04-01 Barnes Brian C. Method and apparatus for physical address-based security to determine target security
TWI225647B (en) * 2002-04-01 2004-12-21 Sony Corp Recording method and apparatus, and editing method apparatus
AU2003201838A1 (en) * 2002-04-01 2003-10-23 Sony Corporation Reproducing method, reproducing apparatus, and data accessing method
US6851056B2 (en) 2002-04-18 2005-02-01 International Business Machines Corporation Control function employing a requesting master id and a data address to qualify data access within an integrated system
CN1276363C (zh) * 2002-11-13 2006-09-20 深圳市朗科科技有限公司 借助半导体存储装置实现数据安全存储和算法存储的方法
US7121639B2 (en) * 2002-12-02 2006-10-17 Silverbrook Research Pty Ltd Data rate equalisation to account for relatively different printhead widths
JP2005056305A (ja) 2003-08-07 2005-03-03 Matsushita Electric Ind Co Ltd メモリ領域に分割領域を持つ情報記憶装置
US7631181B2 (en) * 2003-09-22 2009-12-08 Canon Kabushiki Kaisha Communication apparatus and method, and program for applying security policy
US20060149918A1 (en) 2004-12-30 2006-07-06 Rudelic John C Memory with modifiable address map
US8161524B2 (en) 2005-01-13 2012-04-17 Samsung Electronics Co., Ltd. Method and portable storage device for allocating secure area in insecure area
JP4791741B2 (ja) * 2005-03-16 2011-10-12 株式会社リコー データ処理装置とデータ処理方法
US7734933B1 (en) * 2005-06-17 2010-06-08 Rockwell Collins, Inc. System for providing secure and trusted computing environments through a secure computing module
US7716720B1 (en) * 2005-06-17 2010-05-11 Rockwell Collins, Inc. System for providing secure and trusted computing environments
US8127145B2 (en) * 2006-03-23 2012-02-28 Harris Corporation Computer architecture for an electronic device providing a secure file system
US8352999B1 (en) * 2006-07-21 2013-01-08 Cadence Design Systems, Inc. Method for managing data in a shared computing environment
US20080072070A1 (en) * 2006-08-29 2008-03-20 General Dynamics C4 Systems, Inc. Secure virtual RAM
JP2008059245A (ja) 2006-08-31 2008-03-13 Yoshikawa Rf System Kk データキャリア及びデータキャリアシステム
JP2008077366A (ja) * 2006-09-21 2008-04-03 Hitachi Ltd 記憶制御装置及び記憶制御装置の暗号化機能制御方法
JP2008090519A (ja) 2006-09-29 2008-04-17 Toshiba Corp 記憶装置
JP2008129803A (ja) 2006-11-20 2008-06-05 Cnac Ltd ファイルサーバ、プログラム、記録媒体及び管理サーバ
JP4854483B2 (ja) * 2006-11-30 2012-01-18 キヤノン株式会社 データ入出力装置
JP2009110275A (ja) 2007-10-30 2009-05-21 Sharp Corp 表示入力装置及びその視差補正方法
KR101484110B1 (ko) 2008-02-29 2015-01-28 삼성전자주식회사 메모리 컨트롤러 및 그에 따른 메모리 장치
WO2009110275A1 (ja) * 2008-03-03 2009-09-11 日本電気株式会社 機密情報漏洩防止システム及び機密情報漏洩防止方法
KR100945181B1 (ko) 2008-03-26 2010-03-03 한양대학교 산학협력단 파일명을 이용하여 데이터를 보호하는 저장 시스템, 미들시스템 및 데이터 관리 방법
US8272028B2 (en) * 2008-10-15 2012-09-18 Ricoh Company, Ltd. Approach for managing access to electronic documents on network devices using document retention policies and document security policies
US9104618B2 (en) 2008-12-18 2015-08-11 Sandisk Technologies Inc. Managing access to an address range in a storage device
JP2010267240A (ja) 2009-04-16 2010-11-25 Toshiba Corp 記録装置
JP5465920B2 (ja) * 2009-05-14 2014-04-09 キヤノン電子株式会社 情報処理装置、制御方法、コンピュータプログラム及び記憶媒体
JP5592293B2 (ja) 2010-03-12 2014-09-17 パナソニック株式会社 不揮発性記憶装置、アクセス装置及び不揮発性記憶システム
KR101378608B1 (ko) 2011-04-13 2014-03-27 씨제이제일제당 (주) 바이러스 감염 억제 활성을 갖는 신규 분리한 락토바실러스 퍼멘텀 균주

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090319741A1 (en) * 2008-06-24 2009-12-24 Nagravision Sa Secure memory management system and method

Also Published As

Publication number Publication date
JP2014086089A (ja) 2014-05-12
NL2011611B1 (en) 2017-05-23
CN103778075A (zh) 2014-05-07
AU2013242802A1 (en) 2014-05-08
JP6298268B2 (ja) 2018-03-20
US9785784B2 (en) 2017-10-10
DE102013111339A1 (de) 2014-04-24
KR20140067180A (ko) 2014-06-05
US20150356308A1 (en) 2015-12-10
NL2011611A (en) 2014-04-23
US20140115656A1 (en) 2014-04-24
TW201428536A (zh) 2014-07-16
US9135459B2 (en) 2015-09-15
CN103778075B (zh) 2017-01-18
TWI595379B (zh) 2017-08-11
AU2013242802B2 (en) 2018-05-31

Similar Documents

Publication Publication Date Title
KR102017828B1 (ko) 보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들
KR102107711B1 (ko) 처리 시스템에서의 직접 메모리 액세스 인가
US9529735B2 (en) Secure data encryption in shared storage using namespaces
KR101378639B1 (ko) 프로세서 메인 메모리의 메모리 콘텐츠를 위한 보안 보호
US6681304B1 (en) Method and device for providing hidden storage in non-volatile memory
US9094190B2 (en) Method of managing key for secure storage of data and apparatus therefor
US20140156961A1 (en) Access to Memory Region Including Confidential Information
US8589669B2 (en) Data protecting method, memory controller and memory storage device
TW202418133A (zh) 用於容許安全通訊之積體電路、方法及電腦系統
US11782744B2 (en) Data processing system and method for accessing data in the data processing system
US20060085629A1 (en) Mapping a reset vector
Lee et al. FESSD: A fast encrypted ssd employing on-chip access-control memory
US20230071555A1 (en) Memory system for data encryption
US11720384B2 (en) Program code protection in a data processing system
US11113399B2 (en) Electronic apparatus and control method of electronic apparatus
KR20230064538A (ko) 메모리 컨트롤러 및 스토리지 장치

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