KR102263880B1 - 호스트 컨트롤러 및 시스템-온-칩 - Google Patents

호스트 컨트롤러 및 시스템-온-칩 Download PDF

Info

Publication number
KR102263880B1
KR102263880B1 KR1020140075099A KR20140075099A KR102263880B1 KR 102263880 B1 KR102263880 B1 KR 102263880B1 KR 1020140075099 A KR1020140075099 A KR 1020140075099A KR 20140075099 A KR20140075099 A KR 20140075099A KR 102263880 B1 KR102263880 B1 KR 102263880B1
Authority
KR
South Korea
Prior art keywords
encryption
disk
file
storage device
encryption operation
Prior art date
Application number
KR1020140075099A
Other languages
English (en)
Other versions
KR20150145854A (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 KR1020140075099A priority Critical patent/KR102263880B1/ko
Priority to US14/657,006 priority patent/US9721113B2/en
Publication of KR20150145854A publication Critical patent/KR20150145854A/ko
Application granted granted Critical
Publication of KR102263880B1 publication Critical patent/KR102263880B1/ko

Links

Images

Classifications

    • 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/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • G06F21/805Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors using a security table for the storage sub-system
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Abstract

저장 장치를 제어하는 호스트 컨트롤러는, 시스템 메모리와 통신하는 시스템 메모리 인터페이스, 저장 장치와 통신하는 저장 장치 인터페이스, 시스템 메모리로부터 저장 장치에 기입되는 데이터를 암호화하는 암호화부, 및 프로세서에 의해 제공된 커맨드를 분석하여 상기 커맨드로부터 파일 암호화 정보 및 디스크 암호화 정보를 추출하고, 파일 암호화 정보에 기초하여 파일 암호화 동작을 선택적으로 수행하도록 암호화부를 제어하고, 디스크 암호화 정보에 기초하여 디스크 암호화 동작을 선택적으로 수행하도록 암호화부를 제어하는 제어부를 포함한다. 이에 따라, 호스트 컨트롤러가 파일 암호화 기능 및 디스크 암호화 기능을 지원하므로, 저장 장치의 보안이 강화될 수 있다.

Description

호스트 컨트롤러 및 시스템-온-칩{HOST CONTROLLER AND SYSTEM-ON-CHIP}
본 발명은 반도체 장치에 관한 것으로서, 더욱 상세하게는 저장 장치를 제어하는 호스트 컨트롤러 및 호스트 컨트롤러를 포함하는 시스템-온-칩에 관한 것이다.
범용 플래시 저장 장치(Universal Flash Storage; UFS), 메모리 카드(Memory Card), 솔리드 스테이트 드라이브(Solid State Drive; SSD), 하드 디스크 드라이브(Hard Disk Drive; HDD) 등과 같은 저장 장치는 컴퓨터, 스마트폰과 같은 컴퓨팅 시스템의 보조기억장치로 사용되어 컴퓨팅 시스템에서 생성된 데이터를 저장할 수 있다. 한편, 이러한 저장 장치는 컴퓨팅 시스템에 탈부착될 수 있으므로, 하나의 컴퓨팅 시스템에 부착되어 저장 장치에 데이터가 저장된 후, 상기 저장 장치가 다른 컴퓨팅 시스템에 부착되어 데이터가 상기 다른 컴퓨팅 시스템에 의해 독출될 수 있다. 따라서, 저장 장치가 도난 또는 분실되는 경우 정보가 유출될 수 있다.
본 발명의 일 목적은 보안이 강화된 호스트 컨트롤러를 제공하는 것이다.
본 발명의 다른 목적은 보안이 강화된 호스트 컨트롤러를 포함하는 시스템-온-칩을 제공하는 것이다.
다만, 본 발명의 해결하고자 하는 과제는 상기 언급된 과제에 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 저장 장치를 제어하는 호스트 컨트롤러는, 시스템 메모리와 통신하는 시스템 메모리 인터페이스, 상기 저장 장치와 통신하는 저장 장치 인터페이스, 상기 시스템 메모리로부터 상기 저장 장치에 기입되는 데이터를 암호화하는 암호화부, 및 프로세서에 의해 제공된 커맨드를 분석하여 상기 커맨드로부터 파일 암호화 정보 및 디스크 암호화 정보를 추출하고, 상기 파일 암호화 정보에 기초하여 파일 암호화 동작을 선택적으로 수행하도록 상기 암호화부를 제어하고, 상기 디스크 암호화 정보에 기초하여 디스크 암호화 동작을 선택적으로 수행하도록 상기 암호화부를 제어하는 제어부를 포함한다.
일 실시예에서, 상기 제어부는, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 상기 시스템 메모리 인터페이스에서 상기 저장 장치 인터페이스로 상기 데이터가 바이패스되도록 상기 암호화부를 제어하고, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 상기 데이터에 대한 상기 파일 암호화 동작을 수행하도록 상기 암호화부를 제어하며, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 데이터에 대한 상기 디스크 암호화 동작을 수행하도록 상기 암호화부를 제어하며, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 데이터에 대한 상기 파일 암호화 동작 및 상기 디스크 암호화 동작을 순차적으로 수행하도록 상기 암호화부를 제어할 수 있다.
일 실시예에서, 상기 커맨드는 상기 시스템 메모리에 저장된 상기 데이터에 관련된 정보를 나타내는 물리 영역 설명 테이블(Physical Region Description Table; PRDT)를 포함할 수 있다.
일 실시예에서, 상기 물리 영역 설명 테이블은, 상기 시스템 메모리에서의 상기 데이터의 어드레스를 나타내는 데이터 베이스 어드레스(Data Base Address) 필드, 상기 데이터의 바이트 수를 나타내는 데이터 바이트 카운트(Data Byte Count) 필드, 상기 디스크 암호화 정보로서 상기 디스크 암호화 동작이 수행되어야 하는지 여부를 나타내는 디스크 알고리즘 셀렉터(Disk Algorithm Selector) 필드, 및 상기 파일 암호화 정보로서 상기 파일 암호화 동작이 수행되어야 하는지 여부를 나타내는 파일 알고리즘 셀렉터(File Algorithm Selector) 필드를 포함할 수 있다.
일 실시예에서, 상기 디스크 알고리즘 셀렉터 필드는 상기 디스크 암호화 동작에서 사용되는 암호화 알고리즘의 종류를 더욱 나타내고, 상기 파일 알고리즘 셀렉터 필드는 상기 파일 암호화 동작에서 사용되는 암호화 알고리즘의 종류를 더욱 나타낼 수 있다.
일 실시예에서, 상기 물리 영역 설명 테이블은, 상기 디스크 암호화 정보로서, 상기 디스크 암호화 동작에 사용되는 암호화 키의 길이를 나타내는 디스크 키 길이(Disk Key Length; DKL) 필드, 및 상기 디스크 암호화 동작에 사용되는 초기화 벡터를 나타내는 디스크 초기화 벡터(Disk Initialization Vector; Disk IV) 필드를 더 포함할 수 있다.
일 실시예에서, 상기 물리 영역 설명 테이블은, 상기 파일 암호화 정보로서, 상기 파일 암호화 동작에 사용되는 암호화 키의 길이를 나타내는 파일 키 길이(File Key Length; FKL) 필드, 상기 파일 암호화 동작에 사용되는 초기화 벡터를 나타내는 파일 초기화 벡터(File Initialization Vector; File IV) 필드, 상기 파일 암호화 동작에 사용되는 암호화 키를 나타내는 파일 암호화 키(File Encryption Key) 필드, 및 상기 파일 암호화 동작에 사용되는 트윅 키(Tweak Key)를 나타내는 파일 트윅 키(File Tweak Key) 필드를 더 포함할 수 있다.
일 실시예에서, 상기 암호화부는, 상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제1 암호화 엔진, 상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제2 암호화 엔진, 및 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이의 데이터 경로를 형성하는 데이터 경로 형성부를 포함할 수 있다.
일 실시예에서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 제어부는, 상기 파일 암호화 동작을 수행하도록 상기 제1 암호화 엔진을 제어하고, 상기 디스크 암호화 동작을 수행하도록 상기 제2 암호화 엔진을 제어하며, 상기 시스템 메모리로부터 상기 시스템 메모리 인터페이스를 통하여 제공된 상기 데이터가 상기 제1 암호화 엔진 및 상기 제2 암호화 엔진을 순차적으로 경유하여 상기 저장 장치 인터페이스에 제공되도록 상기 데이터 경로 형성부를 제어할 수 있다.
일 실시예에서, 상기 제1 암호화 엔진 및 상기 제2 암호화 엔진을 순차적으로 경유하여 상기 저장 장치 인터페이스에 제공된 상기 데이터는 상기 저장 장치 인터페이스를 통하여 상기 저장 장치에 저장되고, 상기 저장 장치로부터 상기 데이터가 독출될 때, 상기 제어부는, 상기 저장 장치로부터 상기 저장 장치 인터페이스를 통하여 제공된 상기 데이터가 상기 제2 암호화 엔진 및 상기 제1 암호화 엔진을 순차적으로 경유하여 상기 시스템 메모리 인터페이스에 제공되도록 상기 데이터 경로 형성부를 제어할 수 있다.
일 실시예에서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 상기 제어부는, 상기 파일 암호화 동작을 수행하도록 상기 제1 암호화 엔진을 제어하고, 상기 파일 암호화 동작을 수행하도록 상기 제2 암호화 엔진을 제어하며, 상기 제1 암호화 엔진 및 상기 제2 암호화 엔진이 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이에서 병렬로 연결되도록 상기 데이터 경로 형성부를 제어할 수 있다.
일 실시예에서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 제어부는, 상기 디스크 암호화 동작을 수행하도록 상기 제1 암호화 엔진을 제어하고, 상기 디스크 암호화 동작을 수행하도록 상기 제2 암호화 엔진을 제어하며, 상기 제1 암호화 엔진 및 상기 제2 암호화 엔진이 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이에서 병렬로 연결되도록 상기 데이터 경로 형성부를 제어할 수 있다.
일 실시예에서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 상기 제어부는, 상기 시스템 메모리 인터페이스 및 상기 저장 장치 인터페이스가 상기 제1 및 제2 암호화 엔진들을 바이패스하여 서로 연결되도록 상기 데이터 경로 형성부를 제어할 수 있다.
일 실시예에서, 상기 암호화부는, 상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 암호화 엔진, 상기 암호화 엔진에 의해 암호화된 상기 데이터를 일시적으로 저장하는 버퍼부, 및 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이의 데이터 경로를 형성하는 데이터 경로 형성부를 포함할 수 있다.
일 실시예에서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 제어부는, 제1 시간 구간 동안, 상기 파일 암호화 동작을 수행하도록 상기 암호화 엔진을 제어하고, 상기 시스템 메모리로부터 상기 시스템 메모리 인터페이스를 통하여 제공된 상기 데이터가 상기 암호화 엔진을 경유하여 상기 버퍼부에 저장되도록 상기 데이터 경로 형성부를 제어하고, 상기 제1 시간 구간 이후 제2 시간 구간 동안, 상기 디스크 암호화 동작을 수행하도록 상기 암호화 엔진을 제어하고, 상기 버퍼부에 저장된 상기 데이터가 상기 암호화 엔진을 경유하여 상기 저장 장치 인터페이스에 제공되도록 상기 데이터 경로 형성부를 제어할 수 있다.
일 실시예에서, 상기 암호화부는, 상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제1 암호화 엔진, 상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제2 암호화 엔진, 상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제3 암호화 엔진, 상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제4 암호화 엔진, 및 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이의 데이터 경로를 형성하는 데이터 경로 형성부를 포함할 수 있다.
일 실시예에서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 제어부는, 상기 파일 암호화 동작을 수행하도록 상기 제1 및 제3 암호화 엔진들을 제어하고, 상기 디스크 암호화 동작을 수행하도록 상기 제2 및 제4 암호화 엔진들을 제어하며, 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이에서 상기 제1 암호화 엔진 및 상기 제2 암호화 엔진이 서로 직렬로 연결된 제1 데이터 경로, 및 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이에서 상기 제3 암호화 엔진 및 상기 제4 암호화 엔진이 서로 직렬로 연결된 제2 데이터 경로가 형성되도록 상기 데이터 경로 형성부를 제어할 수 있다.
일 실시예에서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 상기 제어부는, 상기 파일 암호화 동작을 수행하도록 상기 제1 내지 제4 암호화 엔진들을 제어하고, 상기 제1 내지 제4 암호화 엔진들이 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이에서 병렬로 연결되도록 상기 데이터 경로 형성부를 제어할 수 있다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 시스템-온-칩은 적어도 하나의 프로세서, 및 저장 장치를 제어하는 호스트 컨트롤러를 포함한다. 상기 호스트 컨트롤러는, 시스템 메모리와 통신하는 시스템 메모리 인터페이스, 상기 저장 장치와 통신하는 저장 장치 인터페이스, 상기 시스템 메모리로부터 상기 저장 장치에 기입되는 데이터를 암호화하는 암호화부, 및 상기 프로세서에 의해 제공된 커맨드를 분석하여 상기 커맨드로부터 파일 암호화 정보 및 디스크 암호화 정보를 추출하고, 상기 파일 암호화 정보에 기초하여 파일 암호화 동작을 선택적으로 수행하도록 상기 암호화부를 제어하고, 상기 디스크 암호화 정보에 기초하여 디스크 암호화 동작을 선택적으로 수행하도록 상기 암호화부를 제어하는 제어부를 포함한다.
일 실시예에서, 상기 호스트 컨트롤러에 의해 제어되는 상기 저장 장치는, 범용 플래시 저장 장치(Universal Flash Storage; UFS), 메모리 카드(Memory Card), 솔리드 스테이트 드라이브(Solid State Drive; SSD) 또는 하드 디스크 드라이브(Hard Disk Drive; HDD)일 수 있다.
상기와 같은 본 발명의 실시예들에 따른 호스트 컨트롤러 및 시스템-온-칩은 디스크 암호화(Disk Encryption) 기능 및 파일 암호화(File Encryption) 기능을 모두 제공하여 저장 장치에 대한 보안을 강화시킬 수 있다.
또한, 본 발명의 실시예들에 따른 호스트 컨트롤러 및 시스템-온-칩은, 하드웨어로 구현된 암호화부가 파일 암호화 동작 및 디스크 암호화 동작을 수행함으로써, 높은 처리량(through-put)을 가질 수 있다.
다만, 본 발명의 효과는 상기 언급한 효과에 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.
도 1은 본 발명의 실시예들에 따른 시스템-온-칩을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 호스트 컨트롤러에 의해 수행되는 암호화 동작의 예들을 설명하기 위한 도면이다.
도 3은 본 발명의 실시예들에 따른 호스트 컨트롤러에 의해 수행되는 디스크 암호화 동작을 설명하기 위한 도면이다.
도 4는 본 발명의 실시예들에 따른 호스트 컨트롤러에 의해 수행되는 파일 암호화 동작을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예들에 따른 호스트 컨트롤러를 나타내는 블록도이다
도 6은 본 발명의 일 실시예에 따른 호스트 컨트롤러를 나타내는 블록도이다.
도 7a 및 도 7b는 본 발명의 일 실시예에 따른 호스트 컨트롤러의 구동 방법을 나타내는 순서도이다.
도 8은 파일 암호화 정보 및 디스크 암호화 정보를 포함하는 물리 영역 설명 테이블(Physical Region Description Table; PRDT)의 일 예를 나타내는 도면이다.
도 9a 내지 도 9d는 도 6의 호스트 컨트롤러의 동작의 예들을 설명하기 위한 도면들이다.
도 10은 본 발명의 다른 실시예에 따른 호스트 컨트롤러를 나타내는 블록도이다.
도 11은 본 발명의 또 다른 실시예에 따른 호스트 컨트롤러를 나타내는 블록도이다.
도 12는 본 발명의 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 13a 내지 도 13c는 본 발명의 실시예들에 따른 호스트 컨트롤러에 의해 제어되는 저장 장치의 예들을 나타내는 도면들이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 시스템-온-칩을 포함하는 컴퓨팅 시스템을 나타내는 블록도이고, 도 2는 본 발명의 실시예들에 따른 호스트 컨트롤러에 의해 수행되는 암호화 동작의 예들을 설명하기 위한 도면이며, 도 3은 본 발명의 실시예들에 따른 호스트 컨트롤러에 의해 수행되는 디스크 암호화 동작을 설명하기 위한 도면이고, 도 4는 본 발명의 실시예들에 따른 호스트 컨트롤러에 의해 수행되는 파일 암호화 동작을 설명하기 위한 도면이다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 프로세서(130)를 포함하는 시스템-온-칩(110), 시스템 메모리(150) 및 컴퓨팅 시스템(100)에 장착된 저장 장치(300)를 포함할 수 있다. 실시예에 따라, 컴퓨팅 시스템(100)은 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인용 컴퓨터(Personal Computer; PC), 서버 컴퓨터(Server Computer), 워크스테이션(Workstation), 노트북 컴퓨터(Laptop Computer), 개인 정보 단말기(Personal Digital Assistant; PDA), 휴대형 멀티미디어 플레이어(Portable Multimedia Player; PMP), 디지털 카메라(Digital Camera), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 내비게이션(Navigation) 시스템 등과 같은 임의의 컴퓨팅 시스템일 수 있다.
시스템-온-칩(110)은 컴퓨팅 시스템(100)을 구동시킬 수 있다. 실시예에 따라, 시스템-온-칩(110)은 어플리케이션 프로세서(Application Processor; AP), 모바일 SoC(Mobile System on Chip), 멀티미디어(Multimedia) SoC, ASIC(Application-Specific Integrated Circuit), 또는 이와 유사한 장치 또는 시스템일 수 있다. 시스템-온-칩(110)은 중앙 처리 장치(Central Processing Unit; CPU) 또는 마이크로프로세서(Microprocessor)와 같은 프로세서(130), 및 저장 장치(300)를 제어하는 호스트 컨트롤러(200)를 포함할 수 있다. 또한, 시스템-온-칩(110)은, 실시예에 따라, 메모리부, 파워 제어부, 입출력 인터페이스, 버스 등을 더 포함할 수 있다.
프로세서(130)는 시스템-온-칩(110)의 전반적인 동작을 제어할 수 있다. 프로세서(130)는 시스템 메모리(150)에 연결될 수 있다. 프로세서(130)는 시스템 메모리(150)로부터 데이터를 독출하여 독출된 데이터를 처리하고, 시스템 메모리(150)에 처리된 데이터를 기입할 수 있다. 또한, 프로세서(130)는 호스트 컨트롤러(200)에 저장 장치(300)를 제어하기 위한 커맨드를 제공할 수 있다. 호스트 컨트롤러(200)는 프로세서(130)로부터 제공된 커맨드에 응답하여 저장 장치(300)를 제어할 수 있다.
시스템 메모리(150)는 컴퓨팅 시스템(100)의 메인 메모리(Main Memory)일 수 있고, 컴퓨팅 시스템(100)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, 시스템 메모리(150)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), 모바일 DRAM, DDR SDRAM, LPDDR SDRAM, GDDR SDRAM, RDRAM 등과 같은 휘발성 메모리로 구현될 수 있다.
저장 장치(300)는 컴퓨팅 시스템(100)의 보조기억장치로 사용될 수 있고, 컴퓨팅 시스템(100)에서 생성된 또는 처리된 데이터를 저장하거나, 저장된 데이터를 컴퓨팅 시스템(100) 제공할 수 있다. 일 실시예에서, 저장 장치(300)는 컴퓨팅 시스템(100)에 탈착 가능하도록 장착될 수 있다. 실시예에 따라, 저장 장치(300)는 범용 플래시 저장 장치(Universal Flash Storage; UFS), 메모리 카드(Memory Card), 솔리드 스테이트 드라이브(Solid State Drive; SSD), 하드 디스크 드라이브(Hard Disk Drive; HDD) 등과 같은 임의의 저장 장치일 수 있다. 저장 장치(300)는 호스트 컨트롤러(200)에 의해 제어될 수 있다.
호스트 컨트롤러(200)는 프로세서(130)에 의해 제공된 커맨드에 응답하여 저장 장치(300)를 제어할 수 있다. 예를 들어, 호스트 컨트롤러(200)는 상기 커맨드에 응답하여 저장 장치(300)에 데이터를 기입하거나, 저장 장치(300)로부터 데이터를 독출할 수 있다. 일 실시예에서, 프로세서(130)는 커맨드를 시스템 메모리(150)에 저장하고, 호스트 컨트롤러(200)는 시스템 메모리(150)로부터 상기 커맨드를 독출함으로써 상기 커맨드를 제공받을 수 있다. 다른 실시예에서, 프로세서(130)는 호스트 컨트롤러(200)에 시스템-온-칩(110)의 내부 버스를 통하여 커맨드를 제공할 수 있다.
호스트 컨트롤러(200)는, 저장 장치(300)에 데이터를 기입할 때, 상기 데이터에 대한 파일 암호화(File Encryption) 동작을 선택적으로 수행할 수 있고, 또한 상기 데이터에 대한 디스크 암호화(Disk Encryption) 동작을 선택적으로 수행할 수 있다. 예를 들어, 호스트 컨트롤러(200)는 프로세서(130)에 의해 제공된 커맨드를 분석하여 상기 커맨드로부터 파일 암호화 정보 및 디스크 암호화 정보를 추출하고, 상기 파일 암호화 정보에 기초하여 파일 암호화 동작을 선택적으로 수행하고, 상기 디스크 암호화 정보에 기초하여 디스크 암호화 동작을 선택적으로 수행할 수 있다. 이에 따라, 호스트 컨트롤러(200)는, 저장 장치(300)에 데이터를 기입할 때, 암호화 동작을 수행하지 않거나, 상기 파일 암호화 동작 및 상기 디스크 암호화 동작 중 하나를 수행하거나, 상기 파일 암호화 동작 및 상기 디스크 암호화 동작을 모두 수행할 수 있다.
도 2에 도시된 바와 같이, 호스트 컨트롤러(200)는, 프로세서(130)에 의해 제공된 커맨드에 응답하여, 시스템 메모리(150)에 저장된 데이터(151, 152, 153, 154)를 저장 장치(300)에 기입할 수 있고, 저장 장치(300)에 기입된 데이터(301, 302, 303, 304)를 독출하여 시스템 메모리(150)에 저장할 수 있다. 한편, 호스트 컨트롤러(200)는, 저장 장치(300)에 데이터(151, 152, 153, 154)를 기입할 때, 파일 암호화 동작을 선택적으로 수행할 수 있고, 또한 디스크 암호화 동작을 선택적으로 수행할 수 있다.
예를 들어, 시스템 메모리(150)에 저장된 제1 데이터(151)의 보안이 중요하지 않은 경우, 호스트 컨트롤러(200)는 제1 데이터(151)에 대한 암호화 동작을 수행하지 않고, 저장 장치(300)에 제1 데이터(301)를 기입할 수 있다. 또한, 저장 장치(300)로부터 제1 데이터(301)를 독출할 때, 호스트 컨트롤러(200)는 제1 데이터(301)에 대한 복호화 동작을 수행하지 않고, 시스템 메모리(150)에 제1 데이터(151)를 저장할 수 있다.
한편, 보안이 요구되는 데이터 또는 민감한 데이터를 저장 장치(300)에 기입할 때, 호스트 컨트롤러(200)는 파일 암호화 동작 및 디스크 암호화 동작 중 적어도 하나를 수행할 수 있다. 예를 들어, 호스트 컨트롤러(200)는 제2 데이터(152)에 대한 파일 암호화 동작을 수행하여 저장 장치(300)에 암호화된 제2 데이터(302)를 기입할 수 있다. 한편, 저장 장치(300)로부터 암호화 제2 데이터(302)를 독출할 때, 호스트 컨트롤러(200)는 제2 데이터(302)에 대한 파일 복호화 동작(즉, 상기 파일 암호화 동작에 상응하는 복호화 동작)을 수행하여 시스템 메모리(150)에 원본의 제2 데이터(152)를 저장할 수 있다. 또한, 호스트 컨트롤러(200)는 제3 데이터(153)에 대한 디스크 암호화 동작을 수행하여 저장 장치(300)에 암호화된 제3 데이터(303)를 기입할 수 있다. 한편, 저장 장치(300)로부터 암호화된 제3 데이터(303)를 독출할 때, 호스트 컨트롤러(200)는 제3 데이터(303)에 대한 디스크 복호화 동작(즉, 상기 디스크 암호화 동작에 상응하는 복호화 동작)을 수행하여 시스템 메모리(150)에 원본의 제3 데이터(153)를 저장할 수 있다. 또한, 호스트 컨트롤러(200)는 제4 데이터(154)에 대한 파일 암호화 동작 및 디스크 암호화 동작을 순차적으로 수행하여 저장 장치(300)에 암호화된 제4 데이터(304)를 기입할 수 있다. 한편, 저장 장치(300)로부터 암호화된 제4 데이터(304)를 독출할 때, 호스트 컨트롤러(200)는 제4 데이터(304)에 대한 디스크 복호화 동작 및 파일 복호화 동작을 순차적으로 수행하여 시스템 메모리(150)에 원본의 제4 데이터(154)를 저장할 수 있다.
여기서, 상기 디스크 암호화 동작은 저장 장치(300)의 하나의 파티션에 포함된 각각의 섹터들에 대하여 동일한 암호화 키(즉, 상기 파티션에 상응하는 디스크 암호화 키)를 이용하여 수행되는 암호화 동작을 의미할 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 저장 장치(300)는 복수의 파티션들(310, 320, 330)을 포함할 수 있고, 상기 디스크 암호화 동작은, 각 파티션에 포함된 각각의 섹터들에 데이터가 저장될 때, 상기 파티션에 상응하는 동일한 암호화 키를 이용하여 수행되는 암호화 동작을 의미할 수 있다. 예를 들어, 제1 파티션(310)에 포함된 각각의 섹터들(1, 2, 3, 4, 5, 6, 7, 8)에 데이터가 기입될 때, 상기 데이터는 제1 파티션(310)에 상응하는 동일한 암호화 키를 이용하여 암호화될 수 있고, 이러한 동작은 상기 디스크 암호화 동작으로 불릴 수 있다. 일 실시예에서, 각각의 파티션들(310, 320, 330)에 대하여 서로 다른 암호화 키들을 이용하여 상기 디스크 암호화 동작이 수행될 수 있다. 다른 실시예에서, 파티션들(310, 320, 330) 중 적어도 두 개에 대하여 동일한 암호화 키를 이용하여 상기 디스크 암호화 동작이 수행될 수 있다.
또한, 여기서, 상기 파일 암호화 동작은 저장 장치(300)의 각각의 섹터들에 대하여 서로 다른 암호화 키들을 이용하여 수행되는 암호화 동작을 의미하거나, 저장 장치(300)에 기입될 각각의 파일들에 대하여 서로 다른 암호화 키들을 이용하여 수행되는 암호화 동작을 의미할 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 저장 장치(300)는 복수의 파티션들(310, 320, 330)을 포함할 수 있고, 각 파티션(310, 320, 330)은 복수의 섹터들(1 내지 24)을 포함할 수 있다. 하나의 파일(350)은 하나의 섹터에 저장되거나, 도 4에 도시된 바와 같이, 복수의 섹터들(2, 5, 7)에 저장될 수 있다. 한편, 파일(350)이 섹터들(2, 5, 7)에 저장될 때, 다른 파일이 저장될 때 사용되는 암호화 키와 다른 암호화 키(즉, 파일(350)에 상응하는 파일 암호화 키)를 이용하여 암호화될 수 있고, 이러한 동작은 상기 파일 암호화 동작으로 불릴 수 있다.
상술한 바와 같이, 본 발명의 실시예들에 따른 호스트 컨트롤러(200) 및 호스트 컨트롤러(200)를 포함하는 시스템-온-칩(110)은, 파일 암호화(File Encryption) 기능 및 디스크 암호화(Disk Encryption) 기능을 모두 지원할 수 있다. 즉, 저장 장치(300)에 데이터가 기입될 때, 파일 암호화 동작 및/또는 디스크 암호화 동작이 수행될 수 있고, 이에 따라 저장 장치(300)가 도난 또는 분실되더라도, 저장 장치(300)에 기록된 정보가 유출되지 않을 수 있다. 또한, 파일 암호화 기능 및 디스크 암호화 기능이 프로세서(130)에 의해 소프트웨어적으로 구현된 것이 아니고, 호스트 컨트롤러(200)에 의해 하드웨어적으로 구현되므로, 본 발명의 실시예들에 따른 호스트 컨트롤러(200) 및 호스트 컨트롤러(200)를 포함하는 시스템-온-칩(110)은 높은 처리량(through-put)을 가질 수 있다. 게다가, 프로세서(130)에 비하여 상대적으로 낮은 클록 주파수를 가지는 호스트 컨트롤러(200)에 의해 파일 암호화 동작 및/또는 디스크 암호화 동작이 수행되므로, 전력 소모가 감소될 수 있다.
도 5는 본 발명의 실시예들에 따른 호스트 컨트롤러를 나타내는 블록도이다
도 5를 참조하면, 저장 장치를 제어하는 호스트 컨트롤러(200)는 시스템 메모리 인터페이스(210), 저장 장치 인터페이스(230), 암호화부(250) 및 제어부(270)를 포함할 수 있다.
시스템 메모리 인터페이스(210)는 시스템 메모리와 통신할 수 있다. 예를 들어, 시스템 메모리 인터페이스(210)는 시스템 메모리로부터 데이터를 독출할 수 있고, 시스템 메모리에 데이터를 기입할 수 있다. 저장 장치 인터페이스(230)는 저장 장치와 통신할 수 있다. 예를 들어, 저장 장치 인터페이스(230)는 저장 장치에 데이터를 기입할 수 있고, 저장 장치로부터 데이터를 독출할 수 있다.
암호화부(250)는 시스템 메모리 인터페이스(210)와 저장 장치 인터페이스(230) 사이에 연결될 수 있다. 암호화부(250)는 데이터를 암호화하거나, 복호화할 수 있다. 예를 들어, 암호화부(250)는 시스템 메모리 인터페이스(210)를 통하여 시스템 메모리로부터 독출된 데이터를 암호화하여, 저장 장치 인터페이스(230)를 통하여 저장 장치에 암호화된 데이터가 기입되도록 할 수 있다. 또한, 암호화부(250)는 저장 장치 인터페이스(230)를 통하여 저장 장치로부터 독출된 암호화된 데이터를 복호화하여, 시스템 메모리 인터페이스(210)를 통하여 시스템 메모리에 원본 데이터가 저장되도록 할 수 있다.
제어부(270)는 호스트 컨트롤러(200)의 동작을 제어할 수 있다. 예를 들어, 제어부(270)는 시스템 메모리에 저장된 데이터가 저장 장치에 기입되고, 저장 장치로부터 독출된 데이터가 시스템 메모리에 저장되도록 시스템 메모리 인터페이스(210) 및 저장 장치 인터페이스(230)를 제어할 수 있다. 또한, 제어부(270)는 저장 장치에 기입될 데이터를 암호화하고, 저장 장치로부터 독출된 암호화된 데이터를 복호화하도록 암호화부(250)를 제어할 수 있다.
예를 들어, 제어부(270)는 프로세서에 의해 제공된 커맨드(CMD)에 응답하여 시스템 메모리에 저장된 데이터가 저장 장치에 기입되도록 시스템 메모리 인터페이스(210), 저장 장치 인터페이스(230) 및 암호화부(250)를 제어할 수 있다. 일 실시예에서, 프로세서가 시스템 메모리에 커맨드(CMD)를 기입하고, 제어부(270)가 시스템 메모리로부터 커맨드(CMD)를 독출함으로써, 제어부(270)가 상기 프로세서로부터 커맨드(CMD)를 제공받을 수 있다. 예를 들어, 커맨드(CMD)는 시스템 메모리에 UFS(Universal Flash Storage) 전송 프로토콜(UFS Transfer Protocol; UTP) 커맨드 디스크립터(UTP Command Descriptor)의 형태, 또는 UTP 커맨드 디스크립터를 포함하는 UTP 전송 요청 디스크립터(UTP Transfer Request Descriptor)의 형태로 저장될 수 있다. 다른 실시예에서, 제어부(270)는 프로세서로부터 내부 버스를 통하여 커맨드를 제공받을 수 있다. 제어부(270)는 프로세서에 의해 제공된 커맨드(CMD)에 응답하여 파일 암호화 동작 및 디스크 암호화 동작 각각을 선택적으로 수행하도록 암호화부(250)를 제어할 수 있다.
프로세서에 의해 제공된 커맨드(CMD)는 파일 암호화 동작이 수행되어야 하는지 여부를 포함하는 파일 암호화 정보, 및 디스크 암호화 동작이 수행되어야 하는지 여부를 포함하는 디스크 암호화 정보를 포함할 수 있다. 제어부(270)는 프로세서에 의해 제공된 커맨드(CMD)를 분석하여 커맨드(CMD)로부터 상기 파일 암호화 정보 및 상기 디스크 암호화 정보를 추출하고, 상기 파일 암호화 정보에 기초하여 파일 암호화 동작을 선택적으로 수행하도록 암호화부(250)를 제어하고, 또한 상기 디스크 암호화 정보에 기초하여 디스크 암호화 동작을 선택적으로 수행하도록 암호화부(250)를 제어할 수 있다.
예를 들어, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 제어부(270)는 시스템 메모리 인터페이스(210)에서 저장 장치 인터페이스(230)로 데이터가 바이패스되도록(즉, 암호화부(250)에 포함된 암호화 엔진을 바이패스하도록) 상기 암호화부를 제어할 수 있다. 또한, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 제어부(270)는 상기 파일 암호화 동작을 수행하도록 암호화부(250)를 제어할 수 있다. 또한, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 제어부(270)는 상기 디스크 암호화 동작을 수행하도록 암호화부(250)를 제어할 수 있다. 또한, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 제어부(270)는 상기 파일 암호화 동작 및 상기 디스크 암호화 동작을 순차적으로 수행하도록 암호화부(250)를 제어할 수 있다. 한편, 실시예에 따라, 상기 파일 암호화 동작이 수행된 후 상기 디스크 암호화 동작이 수행되거나, 상기 디스크 암호화 동작이 수행된 후 상기 파일 암호화 동작이 수행될 수 있다.
상술한 바와 같이, 본 발명의 실시예들에 따른 호스트 컨트롤러(200)는 암호화부(250)를 통하여 파일 암호화(File Encryption) 기능 및 디스크 암호화(Disk Encryption) 기능을 모두 지원할 수 있다. 이에 따라, 저장 장치에 대한 보안이 강화될 수 있다. 또한, 본 발명의 실시예들에 따른 호스트 컨트롤러(200)는 하드웨어적으로 구현된 암호화부(250)를 이용하여 파일 암호화 동작 및/또는 디스크 암호화 동작을 수행하므로, 호스트 컨트롤러(200)는 높은 처리량(through-put)을 가질 수 있다.
도 6은 본 발명의 일 실시예에 따른 호스트 컨트롤러를 나타내는 블록도이다.
도 6을 참조하면, 저장 장치를 제어하는 호스트 컨트롤러(400)는 시스템 메모리 인터페이스(410), 저장 장치 인터페이스(430), 암호화부(450) 및 제어부(470)를 포함할 수 있다.
시스템 메모리 인터페이스(410)는 시스템 메모리와 통신할 수 있다. 시스템 메모리 인터페이스(410)는 시스템 메모리 DMA(Direct Memory Access)부(411) 및 시스템 메모리 FIFO(First-In First-Out)부(413)를 포함할 수 있다. 시스템 메모리 DMA부(411)는 시스템 메모리로부터 데이터를 독출하여 시스템 메모리 FIFO부(413)에 저장할 수 있다. 시스템 메모리 DMA부(411)가 프로세서를 통하지 않고 시스템 메모리에 직접 접근함으로써, 시스템 메모리와 호스트 컨트롤러(400) 사이의 데이터 전송이 보다 효율적으로 수행될 수 있다. 시스템 메모리 FIFO부(413)는 시스템 메모리로부터 독출된 데이터를 일시적으로 저장하고, 시스템 메모리 FIFO부(413)에 저장된 데이터는 암호화부(450) 및 저장 장치 인터페이스(430)를 통하여 저장 장치에 기입될 수 있다. 또한, 시스템 메모리 FIFO부(413)에는 저장 장치 인터페이스(430)에 의해 저장 장치로부터 독출된 데이터가 암호화부(450)를 통하여 일시적으로 저장될 수 있고, 시스템 메모리 FIFO부(413)에 저장된 데이터는 시스템 메모리 DMA부(411)를 통하여 시스템 메모리에 저장될 수 있다.
저장 장치 인터페이스(430)는 저장 장치와 통신할 수 있다. 저장 장치 인터페이스(430)는 저장 장치 컨트롤러(431) 및 저장 장치 FIFO부(433)를 포함할 수 있다. 저장 장치 컨트롤러(431)는 저장 장치를 제어하여 저장 장치로부터 데이터를 독출할 수 있고, 독출된 데이터를 저장 장치 FIFO부(433)에 저장할 수 있다. 저장 장치 FIFO부(433)는 저장 장치로부터 독출된 데이터를 일시적으로 저장하고, 저장 장치 FIFO부(433)에 저장된 데이터는 암호화부(450) 및 시스템 메모리 인터페이스(410)를 통하여 시스템 메모리에 저장될 수 있다. 또한, 저장 장치 FIFO부(433)에는 시스템 메모리 인터페이스(410)에 의해 시스템 메모리로부터 독출된 데이터가 암호화부(450)를 통하여 일시적으로 저장될 수 있고, 저장 장치 FIFO부(433)에 저장된 데이터는 저장 장치 컨트롤러(431)에 의해 저장 장치에 기입될 수 있다.
암호화부(450)는 시스템 메모리 인터페이스(410)와 저장 장치 인터페이스(430) 사이에 연결될 수 있다. 암호화부(450)는 데이터를 암호화하거나, 복호화할 수 있다. 암호화부(450)는 제1 암호화 엔진(451), 제2 암호화 엔진(453) 및 데이터 경로 형성부(460)를 포함할 수 있다. 제1 및 제2 암호화 엔진들(451, 453) 각각은, 저장 장치에 데이터가 기입될 때, 파일 암호화 동작 또는 디스크 암호화 동작을 수행할 수 있고, 저장 장치로부터 데이터가 독출될 때, 파일 복호화 동작(즉, 상기 파일 암호화 동작에 상응하는 복호화 동작) 또는 디스크 복호화 동작(즉, 상기 디스크 암호화 동작에 상응하는 복호화 동작)을 수행할 수 있다. 데이터 경로 형성부(460)는, 제어부(470)에 의해 제어되어, 시스템 메모리 인터페이스(410)와 저장 장치 인터페이스(430) 사이에 데이터 경로를 형성할 수 있다. 일 실시예에서, 데이터 경로 형성부(460)는, 상기 데이터 경로를 형성하도록, 시스템 메모리 인터페이스(410)에 연결된 제1 스위치(461) 및 저장 장치 인터페이스(430)에 연결된 제2 스위치(463)를 포함할 수 있다.
제어부(470)는 프로세서로부터 제공된 커맨드(CMD)에 응답하여 호스트 컨트롤러(400)의 동작을 제어할 수 있다. 예를 들어, 제어부(470)는 커맨드 DMA부(471), 커맨드 분석부(473), 데이터 흐름 제어부(481), 암호화 엔진 제어부(483) 및 디스크 암호화 키 저장부(485)를 포함할 수 있다.
프로세서는 시스템 메모리에 커맨드(CMD)를 기입할 수 있다. 일 실시예에서, 프로세서는 시스템 메모리에 커맨드(CMD)로서 UTP 전송 요청 디스크립터(UTP Transfer Request Descriptor)를 기입할 수 있다. 커맨드 DMA부(471)는 시스템 메모리로부터 커맨드(CMD)로서 상기 UTP 전송 요청 디스크립터를 독출할 수 있다. 한편, 도 6에는 제어부(470)가 시스템 메모리로부터 커맨드(CMD)를 독출하기 위한 별도의 DMA부, 즉 커맨드 DMA부(471)를 포함하는 예가 도시되어 있으나, 실시예에 따라, 제어부(470)는 시스템 메모리 인터페이스(410)에 포함된 시스템 메모리 DMA부(411)를 통하여 시스템 메모리로부터 커맨드(CMD)를 독출할 수 있다.
커맨드 분석부(473)는 커맨드 DMA부(471)를 통하여 수신된 커맨드(CMD)를 분석할 수 있다. 예를 들어, 커맨드 분석부(473)는 커맨드(CMD)를 파싱(Parsing)하는 커맨드 파서(475), 및 커맨드 파서(475)를 통하여 커맨드(CMD)로부터 추출된 정보를 저장하는 커맨드 버퍼(477)를 포함할 수 있다.
일 실시예에서, 커맨드(CMD)는 상기 UTP 전송 요청 디스크립터의 형태로 제어부(470)에 제공될 수 있고, 상기 UTP 전송 요청 디스크립터는 데이터의 전송 방향을 나타내는 데이터 방향(Data Direction; DD) 필드, 및 UTP 커맨드 디스크립터의 어드레스를 나타내는 UTP 커맨드 디스크립터 베이스 어드레스(UTP Command Descriptor Base Address; UCDBA) 필드를 포함할 수 있다. 커맨드 DMA부(471)는 시스템 메모리로부터 UCDBA 필드가 나타내는 어드레스에 저장된 UTP 커맨드 디스크립터를 독출할 수 있다. 상기 UTP 커맨드 디스크립터는 시스템 메모리에 저장된 데이터에 관련된 정보를 나타내는 물리 영역 설명 테이블(Physical Region Description Table; PRDT)를 포함할 수 있다. 상기 물리 영역 설명 테이블은 파일 암호화 동작에 대한 파일 암호화 정보 및 디스크 암호화 동작에 대한 디스크 암호화 정보를 포함할 수 있다. 커맨드 분석부(473)는 상기 물리 영역 설명 테이블로부터 상기 파일 암호화 정보 및 디스크 암호화 정보를 추출할 수 있다. 예를 들어, 상기 파일 암호화 정보는 파일 암호화 동작이 수행되어야 하는지 여부에 대한 정보, 파일 암호화 동작에 사용되는 알고리즘에 대한 정보, 파일 암호화 동작에 사용되는 파일 암호화 키의 길이에 대한 정보, 파일 암호화 동작에 사용되는 파일 암호화 키(File Encryption Key), 파일 암호화 동작에 사용되는 파일 트윅 키(File Tweak Key) 및 파일 암호화 동작에 사용되는 파일 초기화 벡터(File Initialization Vector; File IV)를 포함할 수 있다. 또한, 예를 들어, 상기 디스크 암호화 정보는 디스크 암호화 동작이 수행되어야 하는지 여부에 대한 정보, 디스크 암호화 동작에 사용되는 알고리즘에 대한 정보, 및 디스크 암호화 동작에 사용되는 디스크 초기화 벡터를 포함할 수 있다.
한편, 파일 암호화 동작은 각각의 섹터들에 대하여 서로 다른 파일 암호화 키들을 이용하므로, 상기 파일 암호화 키는 커맨드(CMD)(즉, 커맨드(CMD)에 포함된 상기 물리 영역 설명 테이블)를 통하여 전송될 수 있고, 디스크 암호화 동작은 하나의 파티션에 포함된 각각의 섹터들에 대하여 동일한 디스크 암호화 키를 이용하므로, 상기 디스크 암호화 키는 디스크 암호화 키 저장부(485)에 미리 저장될 수 있다. 일 실시예에서, 호스트 컨트롤러(400)가 초기화될 때, 또는 호스트 컨트롤러(400)의 구동 중, 프로세서는 디스크 암호화 키 저장부(485)에 (일 예에서, 디스크 트윅 키와 함께) 상기 디스크 암호화 키를 미리 저장할 수 있다. 일 실시예에서, 디스크 암호화 키 저장부(485)는 호스트 컨트롤러(400)의 특정 기능 레지스터(Special Function Register; SFR)의 형태로 구현될 수 있다. 실시예에 따라, 저장 장치는 복수의 파티션들을 포함할 수 있고, 디스크 암호화 키 저장부(485)에는 각각의 파티션들에 대하여 서로 다른 디스크 암호화 키들이 저장될 수 있다.
데이터 흐름 제어부(481)는 커맨드 분석부(473)에 의해 추출된 상기 파일 암호화 정보 및 상기 디스크 암호화 정보에 기초하여 암호화부(450)의 데이터 경로 형성부(460)를 제어할 수 있다. 또한, 암호화 엔진 제어부(483)는 커맨드 분석부(473)에 의해 추출된 상기 파일 암호화 정보 및 디스크 암호화 정보에 기초하여 제1 암호화 엔진(451) 및 제2 암호화 엔진(453)을 제어할 수 있다.
일 예에서, 상기 데이터 방향 필드가 저장 장치에 데이터가 기입되어야 함을 나타내고, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 암호화 엔진 제어부(483)는 파일 암호화 동작을 수행하도록 제1 암호화 엔진(451)을 제어하고, 디스크 암호화 동작을 수행하도록 제2 암호화 엔진(453)을 제어할 수 있다. 일 실시예에서, 암호화 엔진 제어부(483)는, 상기 파일 암호화 동작을 수행하도록, 제1 암호화 엔진(451)에 상기 파일 암호화 정보에 포함된 파일 암호화 키(KEY1) 및 상기 파일 암호화 정보에 포함된 파일 초기화 벡터(IV1)를 제공할 수 있다. 또한, 암호화 엔진 제어부(483)는, 상기 디스크 암호화 동작을 수행하도록, 제2 암호화 엔진(453)에 디스크 암호화 키 저장부(485)에 저장된 디스크 암호화 키(KEY2) 및 상기 디스크 암호화 정보에 포함된 디스크 초기화 벡터(IV2)를 제공할 수 있다. 데이터 흐름 제어부(481)는 시스템 메모리 인터페이스(410)와 저장 장치 인터페이스(430) 사이에서 제1 암호화 엔진(451) 및 제2 암호화 엔진(453)이 직렬 연결되도록 데이터 경로 형성부(460)를 제어할 수 있다. 예를 들어, 데이터 흐름 제어부(481)는 제1 암호화 엔진(451) 및 제2 암호화 엔진(453)이 직렬 연결되도록 데이터 경로 형성부(460)에 포함된 제1 및 제2 스위치들(461, 463)에 스위칭 신호(SWS)를 인가할 수 있다. 이에 따라, 시스템 메모리 인터페이스(410)를 통하여 시스템 메모리로부터 독출된 데이터에 대하여 제1 암호화 엔진(451)에 의해 파일 암호화 동작이 수행되고, 제2 암호화 엔진(453)에 의해 디스크 암호화 동작이 수행될 수 있다. 이와 같이, 파일 암호화 동작 및 디스크 암호화 동작이 수행된 데이터는 저장 장치 인터페이스(430)를 통하여 저장 장치에 기입될 수 있다.
한편, 파일 암호화 동작 및 디스크 암호화 동작이 순차적으로 수행된 후 저장 장치에 저장된 데이터가 상기 저장 장치로부터 독출될 때, 데이터 흐름 제어부(481)는 제1 암호화 엔진(451) 및 제2 암호화 엔진(453)이 직렬 연결되도록 데이터 경로 형성부(460)를 제어하고, 암호화 엔진 제어부(483)는 파일 복호화 동작 및 디스크 복호화 동작을 각각 수행하도록 제1 암호화 엔진(451) 및 제2 암호화 엔진(453)을 제어할 수 있다. 이에 따라, 상기 데이터에 대하여 제2 암호화 엔진(453)에 의한 디스크 복호화 동작 및 제1 암호화 엔진(451)에 의한 파일 복호화 동작이 순차적으로 수행될 수 있고, 원본 데이터가 복원될 수 있다.
다른 예에서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 암호화 엔진 제어부(483)는 상기 파일 암호화 동작을 수행하도록 제1 및 제2 암호화 엔진들(451, 453)을 제어할 수 있고, 데이터 흐름 제어부(481)는 시스템 메모리 인터페이스(410)와 저장 장치 인터페이스(430) 사이에서 제1 암호화 엔진(451) 및 제2 암호화 엔진(453)이 병렬 연결되도록 데이터 경로 형성부(460)를 제어할 수 있다. 따라서, 제1 암호화 엔진(451)에 의한 파일 암호화 동작 및 제2 암호화 엔진(453)에 의한 파일 암호화 동작이 동시에 수행됨으로써, 상기 파일 암호화 동작의 처리 시간이 단축될 수 있다.
또 다른 예에서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 암호화 엔진 제어부(483)는 상기 디스크 암호화 동작을 수행하도록 제1 및 제2 암호화 엔진들(451, 453)을 제어할 수 있고, 데이터 흐름 제어부(481)는 시스템 메모리 인터페이스(410)와 저장 장치 인터페이스(430) 사이에서 제1 암호화 엔진(451) 및 제2 암호화 엔진(453)이 병렬 연결되도록 데이터 경로 형성부(460)를 제어할 수 있다. 따라서, 제1 암호화 엔진(451)에 의한 디스크 암호화 동작 및 제2 암호화 엔진(453)에 의한 디스크 암호화 동작이 동시에 수행됨으로써, 상기 디스크 암호화 동작의 처리 시간이 단축될 수 있다.
또 다른 예에서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 데이터 흐름 제어부(481)는 시스템 메모리 인터페이스(410)와 저장 장치 인터페이스(430)가 제1 및 제2 암호화 엔진들(451, 453)을 바이패스하여 서로 연결되도록 데이터 경로 형성부(460)를 제어할 수 있다. 따라서, 제1 및 제2 암호화 엔진들(451, 453)에 의한 암호화 동작이 수행되지 않을 수 있다.
상술한 바와 같이, 본 발명의 실시예들에 따른 호스트 컨트롤러(400)는 암호화부(450)를 통하여 파일 암호화(File Encryption) 기능 및 디스크 암호화(Disk Encryption) 기능을 모두 지원할 수 있다. 이에 따라, 저장 장치에 대한 보안이 강화될 수 있다. 또한, 본 발명의 실시예들에 따른 호스트 컨트롤러(400)는 하드웨어적으로 구현된 암호화부(450)를 이용하여 파일 암호화 동작 및/또는 디스크 암호화 동작을 수행하므로, 호스트 컨트롤러(400)는 높은 처리량(through-put)을 가질 수 있다. 또한, 본 발명의 실시예들에 따른 호스트 컨트롤러(400)는 두 개의 암호화 엔진들(451, 453)을 직렬 연결하여 파일 암호화 동작 및 디스크 암호화 동작을 순차적으로 수행할 수 있고, 파일 암호화 동작 및 디스크 암호화 동작 중 하나가 수행될 때, 두 개의 암호화 엔진들(451, 453)을 병렬 연결하여 처리 시간을 단축시킬 수 있다.
도 7a 및 도 7b는 본 발명의 일 실시예에 따른 호스트 컨트롤러의 구동 방법을 나타내는 순서도이고, 도 8은 파일 암호화 정보 및 디스크 암호화 정보를 포함하는 물리 영역 설명 테이블(Physical Region Description Table; PRDT)의 일 예를 나타내는 도면이며, 도 9a 내지 도 9d는 도 6의 호스트 컨트롤러의 동작의 예들을 설명하기 위한 도면들이다.
도 6, 도 7a 및 도 7b를 참조하면, 제어부(470)는 프로세서에 의해 제공된 커맨드(CMD)를 분석할 수 있다(S500). 일 실시예에서, 커맨드(CMD)는 UTP 전송 요청 디스크립터의 형태로 제공될 수 있고, 상기 UTP 전송 요청 디스크립터는 데이터의 전송 방향을 나타내는 데이터 방향(Data Direction; DD) 필드를 포함할 수 있다. 제어부(470)는 상기 데이터 방향 필드에 기초하여 기입 동작이 수행되어야 하는지 또는 독출 동작이 수행되어야 하는지를 판단할 수 있다(S510).
커맨드(CMD)가 기입 동작을 나타내는 경우(S510: WRITE), 호스트 컨트롤러(400)는 시스템 메모리에 저장된 데이터를 저장 장치에 기입할 수 있다. 또한, 제어부(470)는 커맨드(CMD)에 포함된 파일 암호화 정보에 기초하여 파일 암호화 동작이 수행되어야 하는지 여부를 판단하고(S520), 커맨드(CMD)에 포함된 디스크 암호화 정보에 기초하여 디스크 암호화 동작이 수행되어야 하는지 여부를 판단할 수 있다(S522, S524). 일 실시예에서, 상기 UTP 전송 요청 디스크립터는 UTP 커맨드 디스크립터의 어드레스를 나타내는 UCDBA 필드를 포함할 수 있고, 제어부(470)는 시스템 메모리로부터 UCDBA 필드가 나타내는 어드레스에 저장된 UTP 커맨드 디스크립터를 독출할 수 있다. 상기 UTP 커맨드 디스크립터는, 기입 또는 독출될 데이터에 대한 정보, 상기 파일 암호화 정보 및 상기 디스크 암호화 정보를 포함하는 물리 영역 설명 테이블(Physical Region Description Table; PRDT)를 포함할 수 있다.
예를 들어, 도 8에 도시된 바와 같이, 물리 영역 설명 테이블(600)은 상기 시스템 메모리에서의 상기 데이터의 어드레스를 나타내는 데이터 베이스 어드레스(Data Base Address) 필드, 상기 데이터의 바이트 수를 나타내는 데이터 바이트 카운트(Data Byte Count) 필드, 상기 디스크 암호화 정보로서 상기 디스크 암호화 동작이 수행되어야 하는지 여부를 나타내는 디스크 알고리즘 셀렉터(Disk Algorithm Selector; DAS) 필드, 및 상기 파일 암호화 정보로서 상기 파일 암호화 동작이 수행되어야 하는지 여부를 나타내는 파일 알고리즘 셀렉터(File Algorithm Selector; FAS) 필드를 포함할 수 있다. 제어부(470)는 상기 FAS 필드를 참조하여 상기 파일 암호화 동작을 선택적으로 수행하도록 암호화 엔진(450)을 제어하고, 상기 DAS 필드를 참조하여 상기 디스크 암호화 동작을 선택적으로 수행하도록 암호화 엔진(450)을 제어할 수 있다.
일 실시예에서, 상기 DAS 필드는 상기 디스크 암호화 동작에서 사용되는 암호화 알고리즘의 종류를 더욱 나타낼 수 있고, 상기 FAS 필드는 상기 파일 암호화 동작에서 사용되는 암호화 알고리즘의 종류를 더욱 나타낼 수 있다. 예를 들어, '00'의 값을 가지는 상기 DAS 필드는 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 수 있고, '01'의 값을 가지는 상기 DAS 필드는 CBC(Cipher Block Chaining) 모드의 고급 암호화 표준(Advanced Encryption Standard; AES)(AES-CBC)의 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 수 있고, '10'의 값을 가지는 상기 DAS 필드는 XTS(XEX(Xor-Encrypt-Xor)-based tweaked-codebook mode with ciphertext stealing) 모드의 고급 암호화 표준(AES-XTS)의 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 수 있다. 또한, '00'의 값을 가지는 상기 FAS 필드는 상기 파일 암호화 동작이 수행되지 않아야 함을 나타낼 수 있고, '01'의 값을 가지는 상기 FAS 필드는 CBC 모드의 고급 암호화 표준 (AES-CBC)의 상기 파일 암호화 동작이 수행되어야 함을 나타낼 수 있고, '10'의 값을 가지는 상기 FAS 필드는 XTS 모드의 고급 암호화 표준(AES-XTS)의 상기 파일 암호화 동작이 수행되어야 함을 나타낼 수 있다. 한편, 도 8에는 상기 파일 암호화 동작 및 상기 디스크 암호화 동작에서 AES-CBC 또는 AES-XTS의 암호화 알고리즘이 사용되는 예가 도시되어 있으나, 실시예에 따라, 호스트 컨트롤러(400)는 상기 파일 암호화 동작 및 상기 디스크 암호화 동작에서 다양한 암호화 알고리즘을 사용할 수 있다. 예를 들어, 호스트 컨트롤러(400)는 DES(Data Encryption Standard), T-DES(Tripple-Data Encryption Standard), AES-ESSIV(Encrypted Salt-Sector Initialization Vector), AES-LRW(Liskov, Rivest, and Wagner), AES-XEX(Xor-Encrypt-Xor) 등의 암호화 알고리즘을 사용할 수 있다.
또한, 일 실시예에서, 물리 영역 설명 테이블(600)은, 상기 디스크 암호화 정보로서, 상기 디스크 암호화 동작에 사용되는 암호화 키의 길이를 나타내는 디스크 키 길이(Disk Key Length; DKL) 필드, 및 상기 디스크 암호화 동작에 사용되는 초기화 벡터를 나타내는 디스크 초기화 벡터(Disk Initialization Vector; Disk IV) 필드를 더 포함할 수 있다.
또한, 일 실시예에서, 물리 영역 설명 테이블(600)은, 상기 파일 암호화 정보로서, 상기 파일 암호화 동작에 사용되는 암호화 키의 길이를 나타내는 파일 키 길이(File Key Length; FKL) 필드, 상기 파일 암호화 동작에 사용되는 초기화 벡터를 나타내는 파일 초기화 벡터(File Initialization Vector; File IV) 필드, 상기 파일 암호화 동작에 사용되는 암호화 키를 나타내는 파일 암호화 키(File Encryption Key) 필드, 및 상기 파일 암호화 동작에 사용되는 트윅 키(Tweak Key)를 나타내는 파일 트윅 키(File Tweak Key) 필드를 더 포함할 수 있다.
상기 FAS 필드가 상기 파일 암호화 동작이 수행되어야 함을 나타내고(S520: YES), 상기 DAS 필드가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때(S522: YES), 제어부(470)는, 도 9a에 도시된 바와 같이, 제1 및 제2 암호화 엔진들(451a, 453a)을 직렬로 연결시키는 스위칭 신호(SWS)를 데이터 경로 형성부(460a)에 제공할 수 있다(S532). 이에 따라, 시스템 메모리 인터페이스(410)로부터 제1 암호화 엔진(451a) 및 제2 암호화 엔진(453a)을 순차적으로 경유하여 저장 장치 인터페이스(430)에 연결되는 데이터 경로가 형성될 수 있다. 이 때, 제어부(470)는, 파일 암호화 동작을 수행하도록 제1 암호화 엔진(451a)에 (경우에 따라, 파일 트윅 키와 함께) 파일 암호화 키(FEK) 및 파일 초기화 벡터(FIV)를 제공하고, 디스크 암호화 동작을 수행하도록 제2 암호화 엔진(453a)에 (경우에 따라, 디스크 트윅 키와 함께) 디스크 암호화 키(DEK) 및 디스크 초기화 벡터(DIV)를 제공할 수 있다. 이에 따라, 시스템 메모리로부터 독출된 데이터에 대하여 제1 암호화 엔진(451a)에 의한 파일 암호화 동작 및 제2 암호화 엔진(453a)에 의한 디스크 암호화 동작이 순차적으로 수행될 수 있다(S542). 파일 및 디스크 암호화된 데이터는 저장 장치 인터페이스(430)를 통하여 저장 장치에 기입될 수 있다(S550).
또한, 상기 FAS 필드가 상기 파일 암호화 동작이 수행되어야 함을 나타내고(S520: YES), 상기 DAS 필드가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때(S522: NO), 제어부(470)는, 도 9b에 도시된 바와 같이, 제1 및 제2 암호화 엔진들(451b, 453b)을 병렬로 연결시키는 스위칭 신호(SWS)를 데이터 경로 형성부(460b)에 제공할 수 있다(S534). 또한, 제어부(470)는, 파일 암호화 동작을 수행하도록 제1 및 제2 암호화 엔진들(451b, 453b)에 (경우에 따라, 파일 트윅 키와 함께) 파일 암호화 키(FEK) 및 파일 초기화 벡터(FIV)를 제공할 수 있다. 이에 따라, 시스템 메모리로부터 독출된 데이터에 대하여 제1 및 제2 암호화 엔진들(451b, 453b)에 의한 파일 암호화 동작이 병렬적으로 수행될 수 있고(S544), 파일 암호화 동작이 보다 신속하게 수행될 수 있다. 파일 암호화된 데이터는 저장 장치 인터페이스(430)를 통하여 저장 장치에 기입될 수 있다(S550).
또한, 상기 FAS 필드가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고(S520: NO), 상기 DAS 필드가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때(S524: YES), 제어부(470)는, 도 9c에 도시된 바와 같이, 제1 및 제2 암호화 엔진들(451c, 453c)을 병렬로 연결시키는 스위칭 신호(SWS)를 데이터 경로 형성부(460c)에 제공할 수 있다(S536). 또한, 제어부(470)는, 디스크 암호화 동작을 수행하도록 제1 및 제2 암호화 엔진들(451c, 453c)에 (경우에 따라, 디스크 트윅 키와 함께) 디스크 암호화 키(DEK) 및 디스크 초기화 벡터(DIV)를 제공할 수 있다. 이에 따라, 시스템 메모리로부터 독출된 데이터에 대하여 제1 및 제2 암호화 엔진들(451c, 453c)에 의한 디스크 암호화 동작이 병렬적으로 수행될 수 있고(S546), 디스크 암호화 동작이 보다 신속하게 수행될 수 있다. 디스크 암호화된 데이터는 저장 장치 인터페이스(430)를 통하여 저장 장치에 기입될 수 있다(S550).
또한, 상기 FAS 필드가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고(S520: NO), 상기 DAS 필드가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때(S524: NO), 제어부(470)는, 도 9d에 도시된 바와 같이, 제1 및 제2 암호화 엔진들(451d, 453d)을 바이패스(bypass)하여 시스템 메모리 인터페이스(410)와 저장 장치 인터페이스(430)를 서로 연결시키는 스위칭 신호(SWS)를 데이터 경로 형성부(460d)에 제공할 수 있다(S538). 이에 따라, 시스템 메모리로부터 독출된 데이터가 암호화되지 않고, 저장 장치 인터페이스(430)를 통하여 저장 장치에 기입될 수 있다(S550).
커맨드(CMD)가 독출 동작을 나타내는 경우(S510: READ), 호스트 컨트롤러(400)는 저장 장치로부터 데이터를 독출하여 시스템 메모리에 저장할 수 있다. 또한, 제어부(470)는 상기 FAS 필드를 참조하여 파일 복호화 동작이 수행되어야 하는지 여부를 판단하고(S560), 상기 DAS 필드를 참조하여 디스크 복호화 동작이 수행되어야 하는지 여부를 판단할 수 있다(S562, S564).
상기 FAS 필드가 상기 파일 복호화 동작이 수행되어야 함을 나타내고(S560: YES), 상기 DAS 필드가 상기 디스크 복호화 동작이 수행되어야 함을 나타낼 때(S562: YES), 도 9a에 도시된 바와 같이, 데이터 경로 형성부(460a)는 제어부(470)에 의해 제어되어 제1 및 제2 암호화 엔진들(451a, 453a)을 직렬로 연결시킬 수 있다(S572). 제어부(470)는 파일 복호화 동작 및 디스크 복호화 동작을 각각 수행하도록 제1 암호화 엔진(451a) 및 제2 암호화 엔진(453a)을 제어할 수 있다. 이에 따라, 저장 장치로부터 독출된 데이터(예를 들어, 파일 및 디스크 암호화된 데이터)에 대하여 제2 암호화 엔진(453a)에 의한 디스크 복호화 동작 및 제1 암호화 엔진(451a)에 의한 파일 복호화 동작이 순차적으로 수행될 수 있다(S582). 이에 따라, 원본 데이터가 시스템 메모리에 저장될 수 있다(S590).
상기 FAS 필드가 상기 파일 복호화 동작이 수행되어야 함을 나타내고(S560: YES), 상기 DAS 필드가 상기 디스크 복호화 동작이 수행되지 않아야 함을 나타낼 때(S562: NO), 도 9b에 도시된 바와 같이, 데이터 경로 형성부(460b)는 제어부(470)에 의해 제어되어 제1 및 제2 암호화 엔진들(451b, 453b)을 병렬로 연결시킬 수 있다(S574). 제어부(470)는 파일 복호화 동작을 각각 수행하도록 제1 및 제2 암호화 엔진들(451b, 453b)을 제어할 수 있다. 이에 따라, 저장 장치로부터 독출된 데이터(예를 들어, 파일 암호화된 데이터)에 대하여 제1 및 제2 암호화 엔진들(451b, 453b)에 의한 파일 복호화 동작이 병렬적으로 수행될 수 있고(S584), 파일 복호화 동작이 보다 신속하게 수행될 수 있다. 이에 따라, 원본 데이터가 시스템 메모리에 저장될 수 있다(S590).
상기 FAS 필드가 상기 파일 복호화 동작이 수행되지 않아야 함을 나타내고(S560: NO), 상기 DAS 필드가 상기 디스크 복호화 동작이 수행되어야 함을 나타낼 때(S564: YES), 도 9c에 도시된 바와 같이, 데이터 경로 형성부(460c)는 제어부(470)에 의해 제어되어 제1 및 제2 암호화 엔진들(451c, 453c)을 병렬로 연결시킬 수 있다(S576). 제어부(470)는 디스크 복호화 동작을 각각 수행하도록 제1 및 제2 암호화 엔진들(451c, 453c)을 제어할 수 있다. 이에 따라, 저장 장치로부터 독출된 데이터(예를 들어, 디스크 암호화된 데이터)에 대하여 제1 및 제2 암호화 엔진들(451c, 453c)에 의한 디스크 복호화 동작이 병렬적으로 수행될 수 있고(S586), 디스크 복호화 동작이 보다 신속하게 수행될 수 있다. 이에 따라, 원본 데이터가 시스템 메모리에 저장될 수 있다(S590).
상기 FAS 필드가 상기 파일 복호화 동작이 수행되지 않아야 함을 나타내고(S560: NO), 상기 DAS 필드가 상기 디스크 복호화 동작이 수행되지 않아야 함을 나타낼 때(S564: YES), 도 9d에 도시된 바와 같이, 데이터 경로 형성부(460d)는 제어부(470)에 의해 제어되어 제1 및 제2 암호화 엔진들(451d, 453d)을 바이패스(bypass)하여 시스템 메모리 인터페이스(410)와 저장 장치 인터페이스(430)를 서로 연결시킬 수 있다(S578). 이에 따라, 저장 장치로부터 독출된 데이터(예를 들어, 암호화 되지 않은 데이터)가 그대로 시스템 메모리에 저장될 수 있다(S590).
도 10은 본 발명의 다른 실시예에 따른 호스트 컨트롤러를 나타내는 블록도이다.
도 10을 참조하면, 저장 장치를 제어하는 호스트 컨트롤러(700)는 시스템 메모리 인터페이스(710), 저장 장치 인터페이스(730), 암호화부(750) 및 제어부(770)를 포함할 수 있다. 한편, 도 10의 호스트 컨트롤러(700)는, 암호화부(750)의 구성을 제외하고, 도 6의 호스트 컨트롤러(400)와 유사한 구성을 가질 수 있다.
시스템 메모리 인터페이스(710)는 시스템 메모리와 통신할 수 있고, 저장 장치 인터페이스(730)는 저장 장치와 통신할 수 있다. 암호화부(750)는 시스템 메모리 인터페이스(710)와 저장 장치 인터페이스(730) 사이에 연결될 수 있다. 암호화부(750)는 파일 암호화 동작 또는 디스크 암호화 동작을 수행하는 암호화 엔진(755), 암호화 엔진(750)에 의해 암호화된 데이터를 일시적으로 저장하는 버퍼부(757), 및 시스템 메모리 인터페이스(710)와 저장 장치 인터페이스(730) 사이의 데이터 경로를 형성하는 데이터 경로 형성부(760)를 포함할 수 있다.
제어부(770)는 프로세서로부터 제공된 커맨드에 응답하여 호스트 컨트롤러(700)의 동작을 제어할 수 있다. 한편, 상기 커맨드에 포함된 파일 암호화 정보 및 디스크 암호화 정보가 암호화 동작이 수행되지 않아야 함을 나타낼 때, 제어부(770)는 암호화 엔진(750)을 바이패스하는 데이터 경로를 형성하도록 데이터 경로 형성부(760)를 제어할 수 있다. 또한, 상기 커맨드에 포함된 파일 암호화 정보 및 디스크 암호화 정보가 파일 암호화 동작 및 디스크 암호화 동작 중 하나의 암호화 동작이 수행되어야 함을 나타낼 때, 제어부(770)는 상기 하나의 암호화 동작을 수행하도록 암호화 엔진(750)을 제어하고, (데이터 기입의 경우, 시스템 메모리 인터페이스(710)로부터) 암호화 엔진(750)을 경유하는 데이터 경로를 형성하는 데이터 경로 형성부(760)를 제어할 수 있다. 또한, 상기 커맨드에 포함된 파일 암호화 정보 및 디스크 암호화 정보가 파일 암호화 동작 및 디스크 암호화 동작이 모두 수행되어야 함을 나타낼 때, 제어부(770)는, 제1 시간 구간 동안, 상기 파일 암호화 동작을 수행하도록 암호화 엔진(755)을 제어하고, 데이터가 암호화 엔진(755)을 경유하여 버퍼부(757)에 저장되도록 데이터 경로 형성부(760)를 제어할 수 있다. 또한, 제어부(770)는, 상기 제1 시간 구간 이후 제2 시간 구간 동안, 상기 디스크 암호화 동작을 수행하도록 암호화 엔진(755)을 제어하고, 버퍼부(757)에 저장된 상기 데이터가 암호화 엔진(755)을 경유하는 (데이터 기입의 경우, 저장 장치 인터페이스(730)로의) 데이터 경로를 형성하도록 데이터 경로 형성부(760)를 제어할 수 있다.
상술한 바와 같이, 본 발명의 실시예들에 따른 호스트 컨트롤러(700)는 암호화부(750)를 통하여 파일 암호화(File Encryption) 기능 및 디스크 암호화(Disk Encryption) 기능을 모두 지원할 수 있다. 이에 따라, 저장 장치에 대한 보안이 강화될 수 있다. 또한, 본 발명의 실시예들에 따른 호스트 컨트롤러(700)는 하드웨어적으로 구현된 암호화부(750)를 이용하여 파일 암호화 동작 및/또는 디스크 암호화 동작을 수행하므로, 호스트 컨트롤러(700)는 높은 처리량(through-put)을 가질 수 있다.
도 11은 본 발명의 또 다른 실시예에 따른 호스트 컨트롤러를 나타내는 블록도이다.
도 11을 참조하면, 저장 장치를 제어하는 호스트 컨트롤러(800)는 시스템 메모리 인터페이스(810), 저장 장치 인터페이스(830), 암호화부(850) 및 제어부(870)를 포함할 수 있다. 한편, 도 11의 호스트 컨트롤러(800)는, 암호화부(850)의 구성을 제외하고, 도 6의 호스트 컨트롤러(400)와 유사한 구성을 가질 수 있다.
시스템 메모리 인터페이스(810)는 시스템 메모리와 통신할 수 있고, 저장 장치 인터페이스(830)는 저장 장치와 통신할 수 있다. 암호화부(850)는 시스템 메모리 인터페이스(810)와 저장 장치 인터페이스(830) 사이에 연결될 수 있다. 암호화부(850)는 각각이 파일 암호화 동작 또는 디스크 암호화 동작을 수행하는 복수의 암호화 엔진들(851, 853, 855, 857), 및 시스템 메모리 인터페이스(810)와 저장 장치 인터페이스(830) 사이의 데이터 경로를 형성하는 데이터 경로 형성부(860)를 포함할 수 있다.
제어부(870)는 프로세서로부터 제공된 커맨드에 응답하여 호스트 컨트롤러(800)의 동작을 제어할 수 있다. 한편, 상기 커맨드에 포함된 파일 암호화 정보 및 디스크 암호화 정보가 암호화 동작이 수행되지 않아야 함을 나타낼 때, 제어부(870)는 암호화 엔진들(851, 853, 855, 857)을 바이패스하는 데이터 경로를 형성하도록 데이터 경로 형성부(860)를 제어할 수 있다. 또한, 상기 커맨드에 포함된 파일 암호화 정보 및 디스크 암호화 정보가 파일 암호화 동작 및 디스크 암호화 동작 중 하나의 암호화 동작이 수행되어야 함을 나타낼 때, 제어부(870)는 상기 하나의 암호화 동작을 수행하도록 암호화 엔진들(851, 853, 855, 857)을 제어하고, 암호화 엔진들(851, 853, 855, 857)을 병렬로 연결하도록 데이터 경로 형성부(860)를 제어할 수 있다. 이에 따라, 상기 암호화 동작의 처리 시간이 단축될 수 있다. 또한, 상기 커맨드에 포함된 파일 암호화 정보 및 디스크 암호화 정보가 파일 암호화 동작 및 디스크 암호화 동작이 모두 수행되어야 함을 나타낼 때, 제어부(870)는 상기 파일 암호화 동작을 수행하도록 제1 및 제3 암호화 엔진들(851, 855)을 제어하고, 상기 디스크 암호화 동작을 수행하도록 제2 및 제4 암호화 엔진들(853, 857)을 제어할 수 있다. 또한, 제어부(870)는 제1 및 제2 암호화 엔진들(851, 853)이 서로 직렬로 연결된 제1 데이터 경로, 및 제3 및 제4 암호화 엔진들(855, 857)이 서로 직렬로 연결된 제2 데이터 경로를 형성되도록 데이터 경로 형성부(860)를 제어할 수 있다. 이에 따라, 상기 파일 암호화 동작 및 상기 디스크 암호화 동작이 복수의 데이터 경로들에서 동시에 수행될 수 있다. 이에 따라, 상기 파일 암호화 동작 및 상기 디스크 암호화 동작의 처리 시간이 단축될 수 있다.
상술한 바와 같이, 본 발명의 실시예들에 따른 호스트 컨트롤러(800)는 암호화부(850)를 통하여 파일 암호화(File Encryption) 기능 및 디스크 암호화(Disk Encryption) 기능을 모두 지원할 수 있다. 이에 따라, 저장 장치에 대한 보안이 강화될 수 있다. 또한, 본 발명의 실시예들에 따른 호스트 컨트롤러(800)는 하드웨어적으로 구현된 암호화부(850)를 이용하여 파일 암호화 동작 및/또는 디스크 암호화 동작을 수행하므로, 호스트 컨트롤러(800)는 높은 처리량(through-put)을 가질 수 있다. 게다가, 본 발명의 실시예들에 따른 호스트 컨트롤러(800)는 복수의 암호화 엔진들(851, 853, 855, 857)을 이용하여 파일 암호화 동작 및/또는 디스크 암호화 동작을 보다 신속하게 수행할 수 있다.
도 12는 본 발명의 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 12를 참조하면, 컴퓨팅 시스템(900)은 프로세서(910), 시스템 메모리(930), 호스트 컨트롤러(950) 및 저장 장치(970)를 포함할 수 있다. 한편, 도 12의 컴퓨팅 시스템(900)은, 호스트 컨트롤러(950)가 프로세서(910)가 형성된 칩과 다른 칩에 형성된 것을 제외하고, 도 1의 컴퓨팅 시스템(100)과 유사한 구성을 가지고, 유사한 동작을 수행할 수 있다.
호스트 컨트롤러(950)는 프로세서(910)가 형성된 칩과 다른 칩에 형성될 수 있다. 일 실시예에서, 호스트 컨트롤러(950)가 형성된 칩은 마더 보드(Motherboard) 또는 메인 보드(Main board) 상에 배치될 수 있다. 호스트 컨트롤러(950)는, 저장 장치(970)에 데이터를 기입할 때, 파일 암호화 동작을 수행하거나, 디스크 암호화 동작을 수행하거나, 파일 암호화 동작 및 디스크 암호화 동작을 모두 수행할 수 있다. 이와 같이, 호스트 컨트롤러(950)는 파일 암호화(File Encryption) 기능 및 디스크 암호화(Disk Encryption) 기능을 모두 지원할 수 있고, 이에 따라 저장 장치(970)에 대한 보안이 강화될 수 있다.
도 13a 내지 도 13c는 본 발명의 실시예들에 따른 호스트 컨트롤러에 의해 제어되는 저장 장치의 예들을 나타내는 도면들이다.
본 발명의 실시예들에 따른 호스트 컨트롤러는 범용 플래시 저장 장치(Universal Flash Storage; UFS), 메모리 카드(Memory Card), 솔리드 스테이트 드라이브(Solid State Drive; SSD) 또는 하드 디스크 드라이브(Hard Disk Drive; HDD) 등과 같은 임의의 저장 장치를 제어하는 컨트롤러일 수 있다.
예를 들어, 도 13a에 도시된 바와 같이, 호스트 컨트롤러(1000a)는 메모리 카드(1100a)를 제어할 수 있다. 메모리 카드(1100a)는 클록 핀, 커맨드 핀, 데이터 핀 및/또는 리셋 핀을 포함하는 복수의 접속 핀들(1110a), 호스트 컨트롤러(1000a)와 통신하는 메모리 컨트롤러(1120a), 및 데이터를 저장하는 비휘발성 메모리 장치(1130a)를 포함할 수 있다. 예를 들어 메모리 카드(1100a)는 멀티미디어 카드(MultiMedia Card; MMC), 임베디드 멀티미디어 카드(embedded MultiMedia Card; eMMC), 하이브리드 임베디드 멀티미디어 카드(hybrid embedded MultiMedia Card; hybrid eMMC), SD(Secure Digital) 카드, 마이크로 SD 카드, 메모리 스틱(Memory Stick), ID 카드, PCMCIA(Personal Computer Memory Card International Association) 카드, 칩 카드(Chip Card), USB 카드, 스마트 카드(Smart Card), CF 카드(Compact Flash Card)등과 같은 임의의 메모리 카드일 수 있다.
다른 예에서, 도 13b에 도시된 바와 같이, 호스트 컨트롤러(1000b)는 솔리드 스테이트 드라이브(Solid State Drive; SSD)(1100b)를 제어할 수 있다. 솔리드 스테이트 드라이브(1100b)는 호스트 컨트롤러(1000b)와 통신하는 메모리 컨트롤러(1120b), 및 복수의 비휘발성 메모리 장치들(1030b)을 포함할 수 있다.
또 다른 예에서, 도 13c에 도시된 바와 같이, 호스트 컨트롤러(1000c)는 하드 디스크 드라이브(Hard Disk Drive; HDD)(1100c)를 제어할 수 있다.
한편, 본 발명의 실시예들에 따른 호스트 컨트롤러는, 도 13a 내지 도 13c에 예시된 저장 장치들(1100a, 1100b, 1100c)을 제어하는 것으로 한정되지 않고, 컴퓨팅 시스템에서 사용될 수 있는 임의의 저장 장치를 제어할 수 있다.
본 발명은 범용 플래시 저장 장치(Universal Flash Storage; UFS), 메모리 카드(Memory Card), 솔리드 스테이트 드라이브(Solid State Drive; SSD), 하드 디스크 드라이브(Hard Disk Drive; HDD) 등과 같은 임의의 저장 장치를 제어하는 호스트 컨트롤러, 및 이를 포함하는 다양한 장치 및 시스템에 적용될 수 있다. 따라서, 본 발명은 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인용 컴퓨터(Personal Computer; PC), 서버 컴퓨터(Server Computer), 워크스테이션(Workstation), 노트북 컴퓨터(Laptop Computer), 개인 정보 단말기(Personal Digital Assistant; PDA), 휴대형 멀티미디어 플레이어(Portable Multimedia Player; PMP), 디지털 카메라(Digital Camera), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 내비게이션(Navigation) 시스템 등과 같은 임의의 컴퓨팅 시스템에 적용될 수 있다.
상기에서는 본 발명의 실시예들을 참조하여 설명하였지만, 해당 기술분야에서 통상의 지식을 가진 자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
200, 400, 700, 800: 호스트 컨트롤러
210, 410, 710, 810: 시스템 메모리 인터페이스
230, 430, 730, 830: 저장 장치 인터페이스
250, 450, 750, 850: 암호화부
270, 470, 770, 870: 제어부

Claims (20)

  1. 저장 장치를 제어하는 호스트 컨트롤러에 있어서,
    시스템 메모리와 통신하는 시스템 메모리 인터페이스;
    상기 저장 장치와 통신하는 저장 장치 인터페이스;
    상기 시스템 메모리로부터 상기 저장 장치에 기입되는 데이터를 암호화하는 암호화부; 및
    프로세서에 의해 제공된 커맨드를 분석하여 상기 커맨드로부터 파일 암호화 정보 및 디스크 암호화 정보를 추출하고, 상기 파일 암호화 정보에 기초하여 파일 암호화 동작을 선택적으로 수행하도록 상기 암호화부를 제어하고, 상기 디스크 암호화 정보에 기초하여 디스크 암호화 동작을 선택적으로 수행하도록 상기 암호화부를 제어하는 제어부를 포함하고,
    상기 제어부는, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 데이터에 대한 상기 파일 암호화 동작 및 상기 디스크 암호화 동작을 순차적으로 수행하도록 상기 암호화부를 제어하는 호스트 컨트롤러.
  2. 제1 항에 있어서, 상기 제어부는,
    상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 상기 시스템 메모리 인터페이스에서 상기 저장 장치 인터페이스로 상기 데이터가 바이패스되도록 상기 암호화부를 제어하고,
    상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 상기 데이터에 대한 상기 파일 암호화 동작을 수행하도록 상기 암호화부를 제어하며,
    상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 데이터에 대한 상기 디스크 암호화 동작을 수행하도록 상기 암호화부를 제어하는 호스트 컨트롤러.
  3. 제1 항에 있어서, 상기 커맨드는 상기 시스템 메모리에 저장된 상기 데이터에 관련된 정보를 나타내는 물리 영역 설명 테이블(Physical Region Description Table; PRDT)를 포함하는 호스트 컨트롤러.
  4. 제3 항에 있어서, 상기 물리 영역 설명 테이블은,
    상기 시스템 메모리에서의 상기 데이터의 어드레스를 나타내는 데이터 베이스 어드레스(Data Base Address) 필드;
    상기 데이터의 바이트 수를 나타내는 데이터 바이트 카운트(Data Byte Count) 필드;
    상기 디스크 암호화 정보로서 상기 디스크 암호화 동작이 수행되어야 하는지 여부를 나타내는 디스크 알고리즘 셀렉터(Disk Algorithm Selector) 필드; 및
    상기 파일 암호화 정보로서 상기 파일 암호화 동작이 수행되어야 하는지 여부를 나타내는 파일 알고리즘 셀렉터(File Algorithm Selector) 필드를 포함하는 호스트 컨트롤러.
  5. 제4 항에 있어서, 상기 디스크 알고리즘 셀렉터 필드는 상기 디스크 암호화 동작에서 사용되는 암호화 알고리즘의 종류를 더욱 나타내고,
    상기 파일 알고리즘 셀렉터 필드는 상기 파일 암호화 동작에서 사용되는 암호화 알고리즘의 종류를 더욱 나타내는 호스트 컨트롤러.
  6. 제4 항에 있어서, 상기 물리 영역 설명 테이블은, 상기 디스크 암호화 정보로서,
    상기 디스크 암호화 동작에 사용되는 암호화 키의 길이를 나타내는 디스크 키 길이(Disk Key Length; DKL) 필드; 및 상기 디스크 암호화 동작에 사용되는 초기화 벡터를 나타내는 디스크 초기화 벡터(Disk Initialization Vector; Disk IV) 필드를 더 포함하는 호스트 컨트롤러.
  7. 제4 항에 있어서, 상기 물리 영역 설명 테이블은, 상기 파일 암호화 정보로서,
    상기 파일 암호화 동작에 사용되는 암호화 키의 길이를 나타내는 파일 키 길이(File Key Length; FKL) 필드;
    상기 파일 암호화 동작에 사용되는 초기화 벡터를 나타내는 파일 초기화 벡터(File Initialization Vector; File IV) 필드;
    상기 파일 암호화 동작에 사용되는 암호화 키를 나타내는 파일 암호화 키(File Encryption Key) 필드; 및
    상기 파일 암호화 동작에 사용되는 트윅 키(Tweak Key)를 나타내는 파일 트윅 키(File Tweak Key) 필드를 더 포함하는 호스트 컨트롤러.
  8. 제1 항에 있어서, 상기 암호화부는,
    상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제1 암호화 엔진;
    상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제2 암호화 엔진; 및
    상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이의 데이터 경로를 형성하는 데이터 경로 형성부를 포함하는 호스트 컨트롤러.
  9. 제8 항에 있어서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 제어부는,
    상기 파일 암호화 동작을 수행하도록 상기 제1 암호화 엔진을 제어하고,
    상기 디스크 암호화 동작을 수행하도록 상기 제2 암호화 엔진을 제어하며,
    상기 시스템 메모리로부터 상기 시스템 메모리 인터페이스를 통하여 제공된 상기 데이터가 상기 제1 암호화 엔진 및 상기 제2 암호화 엔진을 순차적으로 경유하여 상기 저장 장치 인터페이스에 제공되도록 상기 데이터 경로 형성부를 제어하는 호스트 컨트롤러.
  10. 제9 항에 있어서, 상기 제1 암호화 엔진 및 상기 제2 암호화 엔진을 순차적으로 경유하여 상기 저장 장치 인터페이스에 제공된 상기 데이터는 상기 저장 장치 인터페이스를 통하여 상기 저장 장치에 저장되고,
    상기 저장 장치로부터 상기 데이터가 독출될 때, 상기 제어부는, 상기 저장 장치로부터 상기 저장 장치 인터페이스를 통하여 제공된 상기 데이터가 상기 제2 암호화 엔진 및 상기 제1 암호화 엔진을 순차적으로 경유하여 상기 시스템 메모리 인터페이스에 제공되도록 상기 데이터 경로 형성부를 제어하는 호스트 컨트롤러.
  11. 제8 항에 있어서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 상기 제어부는,
    상기 파일 암호화 동작을 수행하도록 상기 제1 암호화 엔진을 제어하고,
    상기 파일 암호화 동작을 수행하도록 상기 제2 암호화 엔진을 제어하며,
    상기 제1 암호화 엔진 및 상기 제2 암호화 엔진이 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이에서 병렬로 연결되도록 상기 데이터 경로 형성부를 제어하는 호스트 컨트롤러.
  12. 제8 항에 있어서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 제어부는,
    상기 디스크 암호화 동작을 수행하도록 상기 제1 암호화 엔진을 제어하고,
    상기 디스크 암호화 동작을 수행하도록 상기 제2 암호화 엔진을 제어하며,
    상기 제1 암호화 엔진 및 상기 제2 암호화 엔진이 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이에서 병렬로 연결되도록 상기 데이터 경로 형성부를 제어하는 호스트 컨트롤러.
  13. 제8 항에 있어서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되지 않아야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 상기 제어부는,
    상기 시스템 메모리 인터페이스 및 상기 저장 장치 인터페이스가 상기 제1 및 제2 암호화 엔진들을 바이패스하여 서로 연결되도록 상기 데이터 경로 형성부를 제어하는 호스트 컨트롤러.
  14. 제1 항에 있어서, 상기 암호화부는,
    상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 암호화 엔진;
    상기 암호화 엔진에 의해 암호화된 상기 데이터를 일시적으로 저장하는 버퍼부; 및
    상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이의 데이터 경로를 형성하는 데이터 경로 형성부를 포함하는 호스트 컨트롤러.
  15. 제14 항에 있어서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 제어부는,
    제1 시간 구간 동안, 상기 파일 암호화 동작을 수행하도록 상기 암호화 엔진을 제어하고, 상기 시스템 메모리로부터 상기 시스템 메모리 인터페이스를 통하여 제공된 상기 데이터가 상기 암호화 엔진을 경유하여 상기 버퍼부에 저장되도록 상기 데이터 경로 형성부를 제어하고,
    상기 제1 시간 구간 이후 제2 시간 구간 동안, 상기 디스크 암호화 동작을 수행하도록 상기 암호화 엔진을 제어하고, 상기 버퍼부에 저장된 상기 데이터가 상기 암호화 엔진을 경유하여 상기 저장 장치 인터페이스에 제공되도록 상기 데이터 경로 형성부를 제어하는 호스트 컨트롤러.
  16. 제1 항에 있어서, 상기 암호화부는,
    상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제1 암호화 엔진;
    상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제2 암호화 엔진;
    상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제3 암호화 엔진;
    상기 파일 암호화 동작 또는 상기 디스크 암호화 동작을 수행하는 제4 암호화 엔진; 및
    상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이의 데이터 경로를 형성하는 데이터 경로 형성부를 포함하는 호스트 컨트롤러.
  17. 제16 항에 있어서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 제어부는,
    상기 파일 암호화 동작을 수행하도록 상기 제1 및 제3 암호화 엔진들을 제어하고,
    상기 디스크 암호화 동작을 수행하도록 상기 제2 및 제4 암호화 엔진들을 제어하며,
    상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이에서 상기 제1 암호화 엔진 및 상기 제2 암호화 엔진이 서로 직렬로 연결된 제1 데이터 경로, 및 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이에서 상기 제3 암호화 엔진 및 상기 제4 암호화 엔진이 서로 직렬로 연결된 제2 데이터 경로가 형성되도록 상기 데이터 경로 형성부를 제어하는 호스트 컨트롤러.
  18. 제16 항에 있어서, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되지 않아야 함을 나타낼 때, 상기 제어부는,
    상기 파일 암호화 동작을 수행하도록 상기 제1 내지 제4 암호화 엔진들을 제어하고,
    상기 제1 내지 제4 암호화 엔진들이 상기 시스템 메모리 인터페이스와 상기 저장 장치 인터페이스 사이에서 병렬로 연결되도록 상기 데이터 경로 형성부를 제어하는 호스트 컨트롤러.
  19. 적어도 하나의 프로세서, 및 저장 장치를 제어하는 호스트 컨트롤러를 포함하는 시스템-온-칩에 있어서, 상기 호스트 컨트롤러는,
    시스템 메모리와 통신하는 시스템 메모리 인터페이스;
    상기 저장 장치와 통신하는 저장 장치 인터페이스;
    상기 시스템 메모리로부터 상기 저장 장치에 기입되는 데이터를 암호화하는 암호화부; 및
    상기 프로세서에 의해 제공된 커맨드를 분석하여 상기 커맨드로부터 파일 암호화 정보 및 디스크 암호화 정보를 추출하고, 상기 파일 암호화 정보에 기초하여 파일 암호화 동작을 선택적으로 수행하도록 상기 암호화부를 제어하고, 상기 디스크 암호화 정보에 기초하여 디스크 암호화 동작을 선택적으로 수행하도록 상기 암호화부를 제어하는 제어부를 포함하고,
    상기 제어부는, 상기 파일 암호화 정보가 상기 파일 암호화 동작이 수행되어야 함을 나타내고, 상기 디스크 암호화 정보가 상기 디스크 암호화 동작이 수행되어야 함을 나타낼 때, 상기 데이터에 대한 상기 파일 암호화 동작 및 상기 디스크 암호화 동작을 순차적으로 수행하도록 상기 암호화부를 제어하는 시스템-온-칩.
  20. 제19 항에 있어서, 상기 호스트 컨트롤러에 의해 제어되는 상기 저장 장치는, 범용 플래시 저장 장치(Universal Flash Storage; UFS), 메모리 카드(Memory Card), 솔리드 스테이트 드라이브(Solid State Drive; SSD) 또는 하드 디스크 드라이브(Hard Disk Drive; HDD)인 시스템-온-칩.
KR1020140075099A 2014-06-19 2014-06-19 호스트 컨트롤러 및 시스템-온-칩 KR102263880B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140075099A KR102263880B1 (ko) 2014-06-19 2014-06-19 호스트 컨트롤러 및 시스템-온-칩
US14/657,006 US9721113B2 (en) 2014-06-19 2015-03-13 Host controller and system-on-chip

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140075099A KR102263880B1 (ko) 2014-06-19 2014-06-19 호스트 컨트롤러 및 시스템-온-칩

Publications (2)

Publication Number Publication Date
KR20150145854A KR20150145854A (ko) 2015-12-31
KR102263880B1 true KR102263880B1 (ko) 2021-06-11

Family

ID=54869932

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140075099A KR102263880B1 (ko) 2014-06-19 2014-06-19 호스트 컨트롤러 및 시스템-온-칩

Country Status (2)

Country Link
US (1) US9721113B2 (ko)
KR (1) KR102263880B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10726162B2 (en) * 2014-12-19 2020-07-28 Intel Corporation Security plugin for a system-on-a-chip platform
US9838201B2 (en) * 2015-10-13 2017-12-05 Sony Interactive Entertainment America Llc Secure key store derivation and management from a single secure root key
US10476846B2 (en) 2016-08-05 2019-11-12 The Boeing Company Data-at-rest (DAR) encryption for integrated storage media
US10389693B2 (en) * 2016-08-23 2019-08-20 Hewlett Packard Enterprise Development Lp Keys for encrypted disk partitions
US10346318B2 (en) * 2016-09-13 2019-07-09 Intel Corporation Multi-stage memory integrity method and apparatus
US10896267B2 (en) * 2017-01-31 2021-01-19 Hewlett Packard Enterprise Development Lp Input/output data encryption
US11057194B2 (en) * 2017-07-03 2021-07-06 Stmicroelectronics S.R.L. Processing system, related integrated circuit, device and method
KR20210016764A (ko) * 2019-08-05 2021-02-17 삼성전자주식회사 시스템 온 칩
CN112199712A (zh) * 2020-11-03 2021-01-08 湖南国科微电子股份有限公司 一种数据加解密方法、系统、设备及存储介质
US20210319121A1 (en) * 2021-06-25 2021-10-14 Intel Corporation Concurrent volume and file based inline encryption on commodity operating systems
KR20230063170A (ko) * 2021-11-01 2023-05-09 삼성전자주식회사 스토리지 컨트롤러를 포함하는 스토리지 장치 및 이의 동작 방법
KR102509646B1 (ko) * 2021-11-15 2023-03-15 삼성전자주식회사 스토리지 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1826694A2 (en) 2006-02-27 2007-08-29 Broadcom Corporation Method and system for secure system-on-a-chip architecture for multimedia data processing
WO2013130632A1 (en) * 2012-02-29 2013-09-06 Apple Inc. Using storage controller bus interfaces to secure data transfer between storage devices and hosts

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7600131B1 (en) * 1999-07-08 2009-10-06 Broadcom Corporation Distributed processing in a cryptography acceleration chip
JP2002132585A (ja) 2000-10-20 2002-05-10 Sony Corp 情報記録装置、情報再生装置、情報記録媒体、および情報記録方法、情報再生方法、並びにプログラム提供媒体
KR20050002103A (ko) 2003-06-30 2005-01-07 (주)파인칩스 암호 프로세서를 내장한 휴대용 저장장치
JP4505717B2 (ja) 2003-12-08 2010-07-21 ソニー株式会社 情報処理装置、制御方法、プログラム、並びに記録媒体
US7496753B2 (en) * 2004-09-02 2009-02-24 International Business Machines Corporation Data encryption interface for reducing encrypt latency impact on standard traffic
JP4669708B2 (ja) 2005-02-16 2011-04-13 株式会社日立製作所 ストレージシステム、データ移動方法及び管理計算機
US8363837B2 (en) * 2005-02-28 2013-01-29 HGST Netherlands B.V. Data storage device with data transformation capability
JP4213704B2 (ja) 2005-11-16 2009-01-21 株式会社バッファロー 仮想ファイル管理装置、仮想ファイル管理方法、および仮想ファイル管理プログラム
US20080288782A1 (en) 2007-05-18 2008-11-20 Technology Properties Limited Method and Apparatus of Providing Security to an External Attachment Device
JP4347350B2 (ja) 2007-02-15 2009-10-21 富士通株式会社 データ暗号転送装置、データ復号転送装置、データ暗号転送方法およびデータ復号転送方法
KR100874872B1 (ko) 2007-06-20 2008-12-19 한양대학교 산학협력단 안전한 갱신을 지원하는 플래시 메모리 기반 보안 2차 저장장치
KR20090131696A (ko) * 2008-06-19 2009-12-30 삼성전자주식회사 암/복호화 장치 및 이를 포함하는 보안 저장 장치
US8341430B2 (en) 2008-10-03 2012-12-25 Microsoft Corporation External encryption and recovery management with hardware encrypted storage devices
US8355499B2 (en) * 2008-12-12 2013-01-15 Micron Technology, Inc. Parallel encryption/decryption
JP4463320B1 (ja) 2009-06-12 2010-05-19 株式会社ハギワラシスコム 暗号化記憶装置、情報機器、暗号化記憶装置のセキュリティ方法
KR101150415B1 (ko) 2009-08-22 2012-06-01 (주)엠더블유스토리 보안 유에스비 저장매체 관리방법 및 보안 유에스비 저장매체 관리를 위한 프로그램이 기록된 매체
KR101601790B1 (ko) * 2009-09-22 2016-03-21 삼성전자주식회사 암호키 선택장치를 구비하는 스토리지 시스템 및 암호 키 선택방법
US8621214B2 (en) * 2010-02-10 2013-12-31 SecurenCrypt, LLC Document encryption and decryption
JP2012084043A (ja) 2010-10-14 2012-04-26 Hagiwara Solutions Co Ltd 暗号化記憶装置、情報機器、暗号化記憶装置のセキュリティ方法
KR20130064521A (ko) * 2011-12-08 2013-06-18 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 관리 방법
US20140281516A1 (en) * 2013-03-12 2014-09-18 Commvault Systems, Inc. Automatic file decryption
US20140310536A1 (en) * 2013-04-16 2014-10-16 Qualcomm Incorporated Storage device assisted inline encryption and decryption
US9141811B2 (en) * 2013-08-01 2015-09-22 Dropbox, Inc. Coerced encryption on connected devices
US9177160B1 (en) * 2013-09-27 2015-11-03 Emc Corporation Key management in full disk and file-level encryption
RU2559728C2 (ru) * 2013-10-24 2015-08-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ копирования файлов с зашифрованного диска
RU2587422C2 (ru) * 2013-12-27 2016-06-20 Закрытое акционерное общество "Лаборатория Касперского" Способ и система автоматического управления лицензиями

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1826694A2 (en) 2006-02-27 2007-08-29 Broadcom Corporation Method and system for secure system-on-a-chip architecture for multimedia data processing
WO2013130632A1 (en) * 2012-02-29 2013-09-06 Apple Inc. Using storage controller bus interfaces to secure data transfer between storage devices and hosts

Also Published As

Publication number Publication date
KR20150145854A (ko) 2015-12-31
US9721113B2 (en) 2017-08-01
US20150371055A1 (en) 2015-12-24

Similar Documents

Publication Publication Date Title
KR102263880B1 (ko) 호스트 컨트롤러 및 시스템-온-칩
KR101601790B1 (ko) 암호키 선택장치를 구비하는 스토리지 시스템 및 암호 키 선택방법
JP2017153117A (ja) 暗号化トランスポート・ソリッドステート・ディスク・コントローラ
KR101975027B1 (ko) 시스템 온 칩, 이의 동작 방법, 이를 포함하는 장치들
US9043549B2 (en) Memory storage apparatus, memory controller, and method for transmitting and identifying data stream
US8161222B1 (en) Method and system and apparatus for use in data storage
US6158004A (en) Information storage medium and security method thereof
ES2938771T3 (es) Verificación de integridad de hardware
US20080320209A1 (en) High Performance and Endurance Non-volatile Memory Based Storage Systems
KR20090080032A (ko) 저장 장치들에 대한 보안을 제공하는 방법 및 시스템
TWI397821B (zh) 資料串傳送方法、系統及其控制器
KR20150034640A (ko) 영구 메모리에서의 데이터 저장
US20180143922A1 (en) Data inversion circuit
KR20080073502A (ko) 시스템 클록의 노출을 차단하는 메모리 컨트롤러와 그 방법
WO2015089488A1 (en) Channel optimized storage modules
TWI722496B (zh) 使用者資料的加解密方法及裝置
JP5017136B2 (ja) ハードディスクドライブ用の暗号化復号化装置、及びハードディスクドライブ装置
US7389376B2 (en) HDD controller and system equipped with the same
CN110826099A (zh) 适用于嵌入式实时操作系统的安全存储方法及系统
US11288374B2 (en) Information processing device, method for controlling information processing device, and program
CN107861892B (zh) 一种实现数据处理的方法及终端
US9058295B2 (en) Encrypt data of storage device
JP2006053916A (ja) 外部メモリに貯蔵されたデータの変更の有無をチェックする装置及び方法
CN105159847A (zh) 基于可信芯片的磁盘变更记录方法
RU57929U1 (ru) Устройство для защищенного хранения информации

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