KR101742364B1 - 저장 디바이스와 호스트 사이에서의 데이터 전달의 보호를 위한 저장 제어기 버스 인터페이스의 사용 - Google Patents

저장 디바이스와 호스트 사이에서의 데이터 전달의 보호를 위한 저장 제어기 버스 인터페이스의 사용 Download PDF

Info

Publication number
KR101742364B1
KR101742364B1 KR1020147023864A KR20147023864A KR101742364B1 KR 101742364 B1 KR101742364 B1 KR 101742364B1 KR 1020147023864 A KR1020147023864 A KR 1020147023864A KR 20147023864 A KR20147023864 A KR 20147023864A KR 101742364 B1 KR101742364 B1 KR 101742364B1
Authority
KR
South Korea
Prior art keywords
command
data
host
encryption context
storage device
Prior art date
Application number
KR1020147023864A
Other languages
English (en)
Other versions
KR20140117635A (ko
Inventor
크리스토퍼 제이. 사르코네
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20140117635A publication Critical patent/KR20140117635A/ko
Application granted granted Critical
Publication of KR101742364B1 publication Critical patent/KR101742364B1/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/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

Abstract

개시된 실시예들은 저장 디바이스와 호스트 사이에서의 데이터 전달을 보호하는 시스템을 제공한다. 동작 동안, 이 시스템은 입력/출력(I/O) 명령 및 I/O 명령과 연관된 암호화 컨텍스트를 호스트 상에서 실행 중인 디바이스 드라이버로부터 획득한다. 그 다음에, 이 시스템은, I/O 명령과 연관된 데이터에 암호화 컨텍스트를 적용하기 위해, 호스트와 저장 디바이스 사이의 저장 제어기 버스 인터페이스를 사용하고, 여기서 암호화 컨텍스트는 저장 디바이스와 호스트 사이에서 데이터의 암호화된 형태를 전송하는 것을 가능하게 한다. 마지막으로, 이 시스템은 저장 디바이스에 대해 I/O 명령을 발행하기 위해 저장 제어기 버스 인터페이스를 사용하고, 여기서 I/O 명령은 저장 디바이스에 의해 처리된다.

Description

저장 디바이스와 호스트 사이에서의 데이터 전달의 보호를 위한 저장 제어기 버스 인터페이스의 사용{USING STORAGE CONTROLLER BUS INTERFACES TO SECURE DATA TRANSFER BETWEEN STORAGE DEVICES AND HOSTS}
본 실시예들은 컴퓨터 시스템들에 대한 저장 디바이스들에 관한 것이다. 보다 구체적으로는, 본 실시예들은 저장 디바이스들과 저장 디바이스들에 연결되는 호스트들 사이에서 전달되는 데이터를 암호화 및 복호화하기 위해 저장 제어기 버스 인터페이스들을 사용하는 기법들에 관한 것이다.
최근의 컴퓨터 시스템은 전형적으로, 각종의 인터페이스들을 통해 마더보드에 연결되는 한 세트의 주변 컴포넌트들(peripheral components)과 함께, 프로세서 및 메모리를 포함하는 마더보드를 포함한다. 예를 들어, SATA(Serial Advanced Technology Attachment) 인터페이스는 저장 디바이스(예컨대, HDD(hard disk drive), 광 드라이브, SSD(solid-state drive), HHD(hybrid hard drive) 등)와 마더보드 사이에서의 데이터 전달을 용이하게 할 수 있는 반면, PCIe(Peripheral Component Interconnect Express) 버스는 마더보드와 다수의 통합된 및/또는 애드온(add-on) 주변 컴포넌트들 사이의 통신을 가능하게 할 수 있다.
컴퓨터 시스템 내에서의 이러한 데이터 전달은 다수의 보안 문제들 및/또는 단점들과 연관되어 있을 수 있다. 상세하게는, 데이터를 암호화되지 않은 평문 형태로 저장 및/또는 전송하는 저장 디바이스는 도청자 및/또는 공격자에 의한 불법 액세스에 취약할 수 있다. 예를 들어, HDD 상의 암호화되지 않은 데이터의 기밀성이, 데이터가 저장 디바이스에 그대로 있고 그리고/또는 HDD와 컴퓨터 시스템의 마더보드 사이에서 인터페이스(예컨대, SATA 인터페이스)를 통해 통과하는 동안, 손상될 수 있다. 다른 한편으로, 저장 이전에 HDD에 의해 암호화되는 데이터는 그대로 있는 동안 보호될 수 있지만, 또한 HDD와 마더보드 사이에서의 전송 이전에 암호화되지 않을 수 있고 따라서 HDD 외부에서 불법 액세스에 취약할 수 있다.
데이터를 추가적으로 보호하기 위해, 마더보드 상의 CPU(Central-Processing Unit)는, 데이터를 저장 디바이스와의 인터페이스를 통해 전송하기 전에, 데이터를 암호화할 수 있다. 그 결과, 데이터가 그대로 있는 동안 및 인터페이스를 통한 데이터의 전송 동안 둘 다에서 데이터의 기밀성이 유지될 수 있다. 그렇지만, 저장된 데이터의 CPU 기반 암호화는 CPU가 데이터를 순차적으로 검색하고, 데이터를 복사하며, 복사된 데이터를 암호화하고, 이어서 데이터를 저장 디바이스로 전송하는 것을 필요로 할 수 있고, 따라서 컴퓨터 시스템의 계산 오버헤드 및/또는 전력 소모를 증가시킬 수 있다.
따라서, 컴퓨터 시스템들에서의 데이터 저장 및 전달을 보호하는 것과 연관된 전력 소모 및/또는 계산 오버헤드를 감소시키는 메커니즘이 필요하다.
개시된 실시예들은 저장 디바이스와 호스트 사이에서의 데이터 전달을 보호하는 시스템을 제공한다. 동작 동안, 이 시스템은 입력/출력(I/O) 명령 및 I/O 명령과 연관된 암호화 컨텍스트를 호스트 상에서 실행 중인 디바이스 드라이버로부터 획득한다. 그 다음에, 이 시스템은, I/O 명령과 연관된 데이터에 암호화 컨텍스트를 적용하기 위해, 호스트와 저장 디바이스 사이의 저장 제어기 버스 인터페이스(storage controller bus interface)를 사용하고, 여기서 암호화 컨텍스트는 저장 디바이스와 호스트 사이에서 데이터의 암호화된 형태를 전송하는 것을 가능하게 한다. 마지막으로, 이 시스템은 저장 디바이스에 대해 I/O 명령을 발행하기 위해 저장 제어기 버스 인터페이스를 사용하고, 여기서 I/O 명령은 저장 디바이스에 의해 처리된다.
어떤 실시예들에서, I/O 명령이 저장 디바이스에 의해 완료된 후에, 이 시스템은 또한 I/O 명령의 완료(completed I/O command)를 디바이스 드라이버에 통지한다.
어떤 실시예들에서, I/O 명령 및 암호화 컨텍스트를 호스트로부터 획득하는 것은,
(i) I/O 명령 및 암호화 컨텍스트와 연관된 메모리 주소들의 세트를 디바이스 드라이버로부터 획득하는 것; 및
(ii) I/O 명령 및 암호화 컨텍스트를 호스트 상의 메모리 주소들로부터 저장 제어기 버스 인터페이스 상의 버퍼로 전달하기 위해 DMA(direct memory access)를 사용하는 동작을 포함한다.
어떤 실시예들에서, 이 시스템은 I/O 명령의 유형에 기초하여 I/O 명령을 처리한다. I/O 명령이 쓰기 명령에 대응하는 경우, 이 시스템은 저장 디바이스에 대해 I/O 명령을 발행하는 동작 이전에 데이터를 암호화하기 위해 암호화 컨텍스트를 사용한다. I/O 명령이 읽기 명령에 대응하는 경우, 이 시스템은 I/O 명령이 저장 디바이스에 의해 처리된 후에 데이터를 복호화하기 위해 암호화 컨텍스트를 사용한다.
어떤 실시예들에서, I/O 명령이 읽기 명령에 대응하는 경우, 이 시스템은 또한, I/O 명령의 완료를 디바이스 드라이버에 통지하기 전에, 복호화된 데이터를 (에컨대, DMA를 사용하여) 호스트 상의 메모리 주소들의 세트로 전달한다.
어떤 실시예들에서, 암호화 컨텍스트는 응용 프로그램, 파일, 및 사용자 중 적어도 하나와 연관되어 있다. 환언하면, 암호화 컨텍스트는 상이한 암호화 입도들(encryption granularities)로 호스트에서 데이터를 암호화하는 것을 가능하게 할 수 있고, 따라서 저장 디바이스들 상에서의 종래의 블록 기반 암호화 및 복호화보다 데이터를 보호하는 데 더 많은 유연성을 제공할 수 있다.
어떤 실시예들에서, 암호화 컨텍스트는 하나 이상의 키들 및 초기 벡터를 포함한다. 예를 들어, 키들 및/또는 초기 벡터는 데이터의 AES-XTS 암호화를 수행하는 데 사용될 수 있다.
<도 1>
도 1은 개시된 실시예들에 따른 시스템을 나타낸 개략도.
<도 2>
도 2는 개시된 실시예들에 따른 저장 제어기 버스 인터페이스를 나타낸 도면.
<도 3>
도 3은 개시된 실시예들에 따른 예시적인 암호화 컨텍스트를 나타낸 도면.
<도 4>
도 4는 개시된 실시예들에 따른, 저장 디바이스와 호스트 사이에서의 데이터 전달을 보호하는 프로세스를 나타낸 플로우차트.
<도 5>
도 5는 개시된 실시예들에 따른 컴퓨터 시스템을 나타낸 도면.
도면들에서, 동일한 도면 부호들은 동일한 도면 요소들을 나타낸다.
이하의 설명은 당업자가 실시예들을 제조 및 사용할 수 있게 하기 위해 제시되어 있고, 특정한 응용 및 그 요건들과 관련하여 제공되어 있다. 개시된 실시예들에 대한 다양한 수정들이 당업자에게 즉각 명백할 것이고, 본 명세서에 정의된 일반적인 원리들은 본 개시 내용의 사상과 범주를 벗어나지 않으면서 다른 실시예들 및 응용들에 적용될 수 있다. 따라서, 본 발명은 개시된 실시예들로 제한되지 않으며, 본 명세서에 개시된 원리들 및 특징들에 따라 가장 넓은 범주를 부여받아야 한다.
발명을 실시하기 위한 구체적인 내용에서 설명된 데이터 구조들 및 코드는 통상적으로 컴퓨터 시스템에서 사용하기 위해 코드 및/또는 데이터를 저장할 수 있는 임의의 디바이스 또는 매체일 수 있는 컴퓨터 판독가능 저장 매체 상에 저장된다. 컴퓨터 판독가능 저장 매체는 휘발성 메모리, 비휘발성 메모리, 디스크 드라이브, 자기 테이프, CD(compact disc), DVD(digital versatile disc 또는 digital video disc)와 같은 자기 및 광 저장 디바이스, 또는 현재 알려져 있거나 향후에 개발될 코드 및/또는 데이터를 저장할 수 있는 다른 매체를 포함하지만, 이에 한정되지 않는다.
발명을 실시하기 위한 구체적인 내용 섹션에 설명되는 방법들 및 프로세스들은 상술한 바와 같은 컴퓨터 판독가능 저장 매체에 저장될 수 있는 코드 및/또는 데이터로서 구현될 수 있다. 컴퓨터 시스템이 컴퓨터 판독가능 저장 매체 상에 저장된 코드 및/또는 데이터를 판독하고 실행할 때, 컴퓨터 시스템은 데이터 구조들 및 코드로서 구현되어 컴퓨터 판독가능 저장 매체 내에 저장된 방법들 및 프로세스들을 수행한다.
또한, 본 명세서에 설명된 방법들 및 프로세스들은 하드웨어 모듈들 또는 장치들 내에 포함될 수 있다. 이들 모듈 또는 장치는, ASIC(Application Specific Integrated Circuit) 칩, FPGA(Field Programmable Gate Array), 특정의 시간에 특정의 소프트웨어 모듈 또는 코드 단편을 실행하는 전용 또는 공유 프로세서, 및/또는 현재 알려져 있거나 향후에 개발될 다른 프로그램 논리 디바이스들을 포함할 수 있지만 이에 한정되지 않는다. 하드웨어 모듈들 또는 장치들은, 활성화될 때, 그들 내에 포함되어 있는 방법들 및 프로세스들을 수행한다.
개시된 실시예들은 컴퓨터 시스템 내에서 데이터를 전달하는 방법 및 시스템을 제공한다. 도 1에 도시된 바와 같이, 컴퓨터 시스템은 SATA(Serial ATA) 인터페이스와 같은 저장 제어기 버스 인터페이스(108)를 통해 컴퓨터 시스템 내의 프로세서(예컨대, CPU(Central-Processing Unit)) 및 메모리에 연결된 HDD(hard disk drive), SSD(solid-state drive), 및/또는 HHD(hybrid hard drive)와 같은 저장 디바이스(110)를 포함할 수 있다.
저장 디바이스(110)는 프로세서 상에서 실행 중인 응용 프로그램(102) 및/또는 파일 시스템(104)에 대한 데이터를 저장할 수 있다. 데이터에 액세스하고 그리고/또는 그를 수정하기 위해, 응용 프로그램(102)은 파일 시스템(104)에 대해 하나 이상의 파일들에 대한 시스템 호출을 행할 수 있고, 파일 시스템(104)은 저장 디바이스(110)에 대한 디바이스 드라이버(106)에 대해 시스템 호출에 대응하는 입력/출력(I/O) 요청을 발행할 수 있다. 그 다음에, 디바이스 드라이버(106)는 요청된 파일(들)에 관계된 LBA(logical block address), 블록들의 수, 및/또는 다른 정보를 포함하는 I/O 명령(114)을 작성(build)하고, I/O 명령(114)을 저장 제어기 버스 인터페이스(108)를 통해 저장 디바이스(110)로 전송할 수 있다. 저장 디바이스(110)는 이어서, I/O 명령(114)에 명시된 블록들로부터의 읽기 그리고/또는 그 블록들에의 쓰기를 행하는 것에 의해, I/O 명령(114)을 처리할 수 있다.
당업자라면 컴퓨터 시스템 상의 암호화되지 않은 데이터가, 데이터가 저장 디바이스(110) 상에 그대로 있고 그리고/또는 저장 제어기 버스 인터페이스(108)를 통해 전송되고 있는 동안, 불법 액세스에 취약할 수 있다는 것을 잘 알 것이다. 이러한 취약성을 완화시키기 위해, 데이터가 저장 디바이스(110) 및/또는 컴퓨터 시스템의 CPU 상에서 실행 중인 프로세스에 의해 암호화될 수 있다. 예를 들어, 저장 디바이스(110)에 대한 제어기는, 128-비트 AES(Advanced Encryption Standard)를 사용하여 데이터를 암호화함으로써, 저장 디바이스(110) 상의 데이터를 보호할 수 있다.
그렇지만, CPU 및/또는 저장 디바이스(110)에 의한 데이터의 암호화는 다수의 단점들과 연관되어 있을 수 있다. 첫째, 저장 디바이스(110)에 의해 암호화되는 데이터는 저장 제어기 버스 인터페이스(108)를 통한 전송을 위해 암호화되지 않을 수 있고, 따라서 공격자에 의한 스누핑(snooping)에 취약할 수 있다. 다른 한편으로, 저장 제어기 버스 인터페이스(108)에 의한 저장 디바이스(110)로의 전송 이전에 CPU에 의한 데이터 암호화는 데이터의 저장 및 전송 둘 다 동안 데이터에 대한 불법 액세스를 방지할 수 있지만, 또한 컴퓨터 시스템의 계산 오버헤드 및/또는 전력 소모를 증가시킬 수 있다. 예를 들어, CPU는 저장 디바이스(110)에의 쓰기 동안, 데이터를 제1 버퍼로부터 제2 버퍼로 복사하는 것, 제2 버퍼 내의 데이터를 암호화는 것, 그리고 이어서 데이터를 저장 디바이스(110)로 전달하는 것에 의해, 데이터를 보호할 수 있다. 데이터를 복사하는 것 및 암호화하는 것과 연관된 부가의 CPU 사이클들로 인해, 쓰기의 대기 시간은 물론 쓰기를 수행하는 데 CPU에 의해 소비되는 전력의 양의 대응하는 증가가 발생할 수 있다.
하나 이상의 실시예들에서, 도 1의 시스템은, 저장 제어기 버스 인터페이스(108) 상에서 암호화를 수행함으로써, 저장 디바이스(110) 상의 데이터의 CPU 기반 암호화와 연관된 전력 소모 및/또는 대기 시간을 감소시킨다. 앞서 기술된 바와 같이, 컴퓨터 시스템의 응용 프로그램(102) 및/또는 다른 컴포넌트는, 파일 시스템(104)에 대해 시스템 호출을 행하는 것에 의해, 저장 디바이스(110) 상의 데이터를 읽고 그리고/또는 그에 데이터를 쓸 수 있다.
그 다음에, 파일 시스템(104)은 시스템 호출에 대한 암호화 컨텍스트(112)를 디바이스 드라이버(106)에 제공할 수 있다. 하나 이상의 실시예들에서, 암호화 컨텍스트(112)는 저장 디바이스(110)와 컴퓨터 시스템 사이에서 데이터의 암호화된 형태를 전송하는 것을 가능하게 한다. 예를 들어, 암호화 컨텍스트(112)는 데이터의 AES-XTS 암호화에서 사용하기 위한 하나 이상의 키들 및 초기 벡터를 포함할 수 있다. 암호화 컨텍스트(112)는 이어서 데이터를 저장 디바이스(110)로 전송하기 전에 컴퓨터 시스템 상에서 데이터를 암호화하고 데이터가 저장 디바이스(110)로부터 수신된 후에 컴퓨터 시스템 상에서 데이터를 복호화하는 데 사용될 수 있다. 암호화 컨텍스트들에 대해서는 도 3과 관련하여 이하에서 더 상세히 논의된다.
하나 이상의 실시예들에서, 파일 시스템(104)은 상이한 암호화 입도들로 데이터의 암호화 및 복호화를 관리하는 기능을 포함한다. 예를 들어, 파일 시스템(104)은 저장 디바이스(110) 상에서 데이터를 암호화하고 복호화하는 데 사용하기 위한 암호화 컨텍스트(112)를 비롯한 암호화 컨텍스트들의 세트를 유지할 수 있다. 파일 시스템(104)은 또한 각각의 암호화로부터의 키들 및/또는 초기 벡터를 응용 프로그램, 파일, 및/또는 사용자에 할당할 수 있다. 응용 프로그램, 파일, 및/또는 사용자와 연관된 데이터는 이어서 대응하는 암호화 컨텍스트를 사용하여 암호화되고 복호화될 수 있다. 환언하면, 파일 시스템(104)은 데이터의 블록 기반 암호화 및 복호화를 수행하는 저장 디바이스(예컨대, 저장 디바이스(110)) 및/또는 제어기보다 컴퓨터 시스템 상의 데이터를 보호하는 데 더 많은 유연성을 제공할 수 있다.
암호화 컨텍스트(112)가 이용가능하면, 디바이스 드라이버(106)는 암호화 컨텍스트(112)를 컴퓨터 시스템 상에 메모리 내에 위치시킬 수 있고, 암호화 컨텍스트(112)에 대한 메모리 주소를 저장 제어기 버스 인터페이스(108)에 제공할 수 있다. 디바이스 드라이버(106)는 또한 시스템 호출에 기초하여 메모리에서 I/O 명령(114)을 작성할 수 있고, I/O 명령(114)에 대한 메모리 주소를 저장 제어기 버스 인터페이스(108)에 제공할 수 있다. 저장 제어기 버스 인터페이스(108)는 이어서, I/O 명령(114) 및 암호화 컨텍스트(112)를 컴퓨터 시스템 상의 메모리 주소들로부터 버퍼(116)로 전달하기 위해, DMA(direct memory access)를 사용할 수 있다. I/O 명령(114) 및 암호화 컨텍스트(112)가 버퍼(116)에 있으면, 저장 제어기 버스 인터페이스(108)는 암호화 컨텍스트(112)를 I/O 명령(114)과 연관된 데이터에 적용할 수 있고, 저장 디바이스(110)에 의한 처리를 위해 저장 디바이스(110)에 대해 I/O 명령(114)을 발행할 수 있으며, 이에 대해서는 도 2와 관련하여 이하에서 더 상세히 논의된다.
도 2는 개시된 실시예들에 따른 저장 제어기 버스 인터페이스(108)를 나타낸 것이다. 앞서 기술된 바와 같이, 저장 제어기 버스 인터페이스(108)는 저장 디바이스(예컨대, 도 1의 저장 디바이스(110))와 호스트(예컨대, 컴퓨터 시스템) 사이에서 데이터를 전송하는 데 사용될 수 있다. 예를 들어, 저장 제어기 버스 인터페이스(108)는 SATA HDD를 호스트 상의 CPU 및 메모리를 포함하는 마더보드에 연결시키는 AHCI(Advanced Host Controller Interface) 제어기(예컨대, 호스트 버스트 어댑터(host bust adapter))에 대응할 수 있다. 대안적으로, 저장 제어기 버스 인터페이스(108)는 SSD 상의 한 세트의 NAND 칩들을 마더보드에 연결시키는 SSD에 대한 통합된 NAND 제어기에 의해 구현될 수 있다.
더욱이, 저장 제어기 버스 인터페이스(108)는, 저장 디바이스와 호스트 사이에서 데이터의 암호화된 형태의 저장 및 전송 둘 다를 가능하게 함으로써, 데이터에 대한 불법 액세스를 방지할 수 있다. 첫째, 저장 제어기 버스 인터페이스(108)는, 호스트 상에서 실행 중인 디바이스 드라이버(예컨대, 도 1의 디바이스 드라이버(106))로부터 I/O 명령(예컨대, 도 1의 I/O 명령(114)) 및 I/O 명령과 연관된 암호화 컨텍스트(예컨대, 도 1의 암호화 컨텍스트(112))를 획득하기 위해, PCIe(Peripheral Component Interconnect Express) 인터페이스와 같은 메모리 인터페이스(202) 및 DMA 엔진(204)을 사용할 수 있다. 예를 들어, 디바이스 드라이버는 I/O 명령 및 암호화 컨텍스트와 연관된 메모리 주소들의 세트를 저장 제어기 버스 인터페이스(108)에 제공할 수 있고, DMA 엔진(204)은, 호스트의 CPU에 직접 액세스하는 일 없이 I/O 명령, 연관된 데이터, 및/또는 암호화 컨텍스트를 호스트 상의 메모리 주소들로부터 버퍼(116)로 전달하기 위해, 메모리 인터페이스(202)를 사용할 수 있다.
데이터를 보호하기 위해, 저장 제어기 버스 인터페이스(108) 내의 암호화 장치(206)는 데이터에 암호화 컨텍스트를 적용할 수 있고, 따라서 저장 디바이스와 호스트 사이에서 데이터의 암호화된 형태를 전송하는 것을 가능하게 할 수 있다. 예를 들어, 암호화 장치(206)는 병렬로 동작하는 한 세트의 암호화 엔진들을 포함할 수 있고, 각각의 암호화 엔진은 암호화 컨텍스트로부터의 한 세트의 키들 및 초기 벡터를 사용하여 데이터의 일부분에 대해 AES-XTS 암호화를 수행한다.
저장 제어기 버스 인터페이스(108) 내의 명령 처리 장치(208)는 또한, 저장 디바이스에 의한 처리를 위해, I/O 명령을 처리하고 저장 디바이스와의 저장 디바이스 인터페이스(210)(예컨대, SATA 인터페이스)를 통해 I/O 명령을 발행할 수 있다. 예를 들어, I/O 명령이 쓰기 명령에 대응하는 경우, 암호화 장치(206)는, 명령 처리 장치(208)가 저장 디바이스에 대해 I/O 명령을 발행하기 전에, 데이터를 암호화하기 위해 암호화 컨텍스트를 사용할 수 있다. I/O 명령이 읽기 명령에 대응하는 경우, 암호화 장치(206)는, I/O 명령이 저장 디바이스에 의해 처리되고 데이터가 저장 디바이스 인터페이스(210)에 의해 수신된 후에, 데이터를 복호화하기 위해 암호화 컨텍스트를 사용할 수 있다. 저장 제어기 버스 인터페이스(108)는 이어서, 데이터를 요청하는 응용 프로그램 및/또는 컴포넌트에 의한 사용을 위해, 복호화된 데이터를 (예컨대, 메모리 인터페이스(202) 및 DMA 엔진(204)을 사용하여) 호스트 상의 메모리 주소들의 세트로 전달할 수 있다.
저장 제어기 버스 인터페이스(108)의 동작은 또한 (예컨대, 메모리 인터페이스(202)를 통한) 메모리에 대한 읽기 및 쓰기를 위한 최소 블록 크기를 저장 디바이스 인터페이스(210)를 통해 전송되는 데이터를 암호화 및 복호화하는 데 사용되는 블록 크기로 설정하는 것에 의해 용이하게 될 수 있다. 예를 들어, 저장 디바이스는 4 KB의 페이지 크기를 갖는 SSD에 대응할 수 있다. 각각의 페이지는 따라서 저장 디바이스와 저장 제어기 버스 인터페이스(108) 사이에서 전달되는 데이터의 가장 작은 단위에 대응할 수 있다. 차례로, 메모리 인터페이스(202)를 통한 I/O들의 최소 블록 크기는 또한, (예컨대, 암호화 장치(206)가 전체 페이지들(full pages)만을 암호화 및 복호화할 수 있게 함으로써) 데이터의 암호화 및 복호화를 간단화하기 위해, 4 KB로 설정될 수 있다.
I/O 명령이 저장 디바이스에 의해 완료된 후에, 저장 제어기 버스 인터페이스(108)는 I/O 명령의 완료를 디바이스 드라이버에 통지할 수 있다. 예를 들어, 저장 제어기 버스 인터페이스(108)는 I/O 명령의 완료의 통지를 메모리 인터페이스(202)를 통해 디바이스 드라이버로 전송할 수 있다. 저장 제어기 버스 인터페이스(108)는 이어서, 저장 디바이스에 대한 모든 보류 중인 I/O 명령들이 완료될 때까지, 디바이스 드라이버로부터 새로운 I/O 명령 및 암호화 컨텍스트를 획득하고 새로운 I/O 명령을 앞서 기술한 방식으로 처리할 수 있다.
저장 디바이스 상에서의 데이터의 암호화 및 복호화가 저장 제어기 버스 인터페이스(108)에 의해 제공되기 때문에, 데이터가 저장 디바이스 상에 그대로 있는 동안 및 (예컨대, 저장 제어기 버스 인터페이스(108)를 통한) 저장 디바이스와 호스트 사이에서의 데이터의 전송 동안 둘 다에서 데이터가 불법 액세스로부터 보호될 수 있다. 그에 부가하여, 저장 제어기 버스 인터페이스(108)는 데이터의 CPU 기반 암호화와 연관된 성능 오버헤드 및/또는 전력 소모를 감소시킬 수 있다. 예를 들어, CPU는, 순차적으로 쓰기 명령을 생성하는 것, 쓰기 명령과 연관된 데이터를 복사하는 것, 사본에 대해 암호화를 수행하는 것, 그리고 이어서 쓰기 명령 및 암호화된 데이터를 저장 디바이스로 전송하는 것에 의해, 저장 디바이스에 대한 쓰기를 수행할 수 있다. 다른 한편으로, 저장 제어기 버스 인터페이스(108)는, 데이터를 복사하는 일 없이 및/또는 다른 I/O 명령들이 CPU 및/또는 저장 디바이스에 의해 생성되고, 전송되며, 그리고/또는 처리되는 동안, 쓰기 명령과 연관된 데이터를 암호화할 수 있다. 이와 유사하게, CPU로부터 저장 제어기 버스 인터페이스(108)로 데이터 암호화를 오프로딩(offloading)시키는 것은 암호화와 연관된 전력 소모를 10W 초과로부터 3W 미만으로 감소시킬 수 있다.
도 3은 개시된 실시예들에 따른 예시적인 암호화 컨텍스트를 나타낸 것이다. 암호화 컨텍스트가 다른 암호화 컨텍스트들과 함께 암호화 컨텍스트 테이블에 저장될 수 있고, 암호화 컨텍스트 테이블 내의 항목들은 도 1의 저장 제어기 버스 인터페이스(108)와 같은 저장 제어기 버스 인터페이스에 대한 명령 목록(Command List)(예컨대, AHCI 명령 목록) 내의 I/O 명령들에 정합될 수 있다. 예를 들어, 암호화 컨텍스트 테이블 내의 암호화 컨텍스트는 명령 목록 내의 대응하는 I/O 명령과 인덱스를 공유할 수 있다. 암호화 컨텍스트 및 I/O 명령이 이어서 암호화 컨텍스트 테이블 및 명령 목록 둘 다에 대한 인덱스를 제공하는 것에 의해 검색될 수 있다.
도 3에 도시된 바와 같이, 암호화 컨텍스트는 16개의 32-비트 데이터 워드들로 이루어져 있을 수 있다. 제1 데이터 워드(예컨대, "DW0")는 블록 크기(302), 예비된 비트들의 세트(304), 및 인에이블 비트(306)를 포함할 수 있다. 블록 크기(302)는 암호화될 각각의 블록의 길이를 명시할 수 있고, 4096 바이트의 2x 승수(multiplier)로서 표현될 수 있다. 예를 들어, 블록 크기(302)에 대한 0의 값은 각각의 블록이 4096 바이트 길이라는 것을 나타낼 수 있고, 1의 값은 각각의 블록이 8192 바이트 길이라는 것을 나타낼 수 있으며, 2의 값은 각각의 블록이 16384 바이트 길이라는 것을 나타낼 수 있다. 제1 데이터 워드의 후반부에서, 예비된 비트들(304)은 0으로 클리어될 수 있고, 인에이블 비트(306)는 암호화 컨텍스트와 연관된 데이터의 암호화 및/또는 복호화를 인에이블 또는 디스에이블시키기 위해 사용될 수 있다. 예를 들어, 인에이블 비트(306)는 블록들의 암호화를 인에이블시키기 위해 세트될 수 있고 블록들의 암호화를 디스에이블시키기 위해 클리어될 수 있다.
제2 데이터 워드(예컨대, "DW1")는 암호화 컨텍스트를 사용하여 암호화될 블록들의 수를 나타내는 블록 카운트(block count)(308)를 포함할 수 있다. 블록 카운트(308)는, 초기 벡터 테이블로부터 얼마만큼의 데이터가 페치(fetch)될 필요가 있는지를 결정하기 위해, DMA 엔진(예컨대, 도 2의 DMA 엔진(204))에 의해 사용될 수 있다. 그에 부가하여, 제3 및 제4 데이터 워드들(예컨대, "DW2" 및 "DW3")에 있는 초기 벡터 테이블 주소(310) 및 초기 벡터 테이블 주소 상위 부분(initial vector table address upper)(312)은 초기 벡터 테이블에 대한 64-비트 주소를 명시할 수 있다.
마지막으로, 나머지 암호화 컨텍스트(예컨대, "DW4" 내지 "DW15")는 데이터의 AES-XTS 암호화에서 사용하기 위한 2개의 128-비트 키들(314, 316) 및 1개의 128-비트 초기 벡터(318)를 포함할 수 있다. 그 결과, 암호화 컨텍스트는, 4 KB의 크기를 갖는 I/O에 대해, 암호화 컨텍스트 테이블로부터의 암호화 컨텍스트의 페치만이 필요하고, 초기 벡터 테이블 주소(310) 및 초기 벡터 테이블 주소 상위 부분(312)를 사용하는 초기 벡터 테이블의 별도의 페치가 필요하지 않도록 구성될 수 있다.
도 4는 개시된 실시예들에 따른, 저장 디바이스와 호스트 사이에서의 데이터 전달을 보호하는 프로세스를 설명하는 플로우차트를 나타낸 것이다. 하나 이상의 실시예들에서, 단계들 중 하나 이상이 생략되고, 반복되며, 그리고/또는 상이한 순서로 수행될 수 있다. 그에 따라, 도 4에 도시된 단계들의 특정의 배열이 실시예들의 범주를 제한하는 것으로 해석되어서는 안된다.
먼저, I/O 명령 및 I/O 명령과 연관된 암호화 컨텍스트가 호스트 상에서 실행 중인 디바이스 드라이버로부터 획득된다(동작(402)). I/O 명령 및 암호화 컨텍스트를 획득하기 위해, I/O 명령 및 암호화 컨텍스트와 연관된 메모리 주소들의 세트가 디바이스 드라이버로부터 획득될 수 있다. I/O 명령 및 암호화 컨텍스트를 호스트 상의 메모리 주소들로부터 호스트와 저장 디바이스 사이의 저장 제어기 버스 인터페이스 상의 버퍼로 전달하기 위해 DMA가 이어서 사용될 수 있다.
저장 제어기 버스 인터페이스는 저장 디바이스에 의한 처리를 위해, I/O 명령과 연관된 데이터에 암호화 컨텍스트를 적용하는 것 및 저장 디바이스에 대해 I/O 명령을 발행하는 것에 의해, I/O 명령을 처리할 수 있다. 암호화 컨텍스트는 저장 디바이스와 호스트 사이에서 데이터의 암호화된 형태를 전송하는 것을 가능하게 할 수 있고, 따라서 데이터의 기밀성을 보호할 수 있다. 그에 부가하여, 저장 제어기 버스 인터페이스는 응용 프로그램, 파일, 및/또는 사용자와 연관된 데이터에 암호화 컨텍스트를 적용할 수 있다. 환언하면, 암호화 컨텍스트는 호스트에서의 데이터가 상이한 암호화 입도들로 암호화될 수 있게 할 수 있고, 따라서 저장 디바이스들 상에서의 종래의 블록 기반 암호화 및 복호화보다 데이터를 보호하는 데 더 많은 유연성을 제공할 수 있다.
게다가, 저장 제어기 버스 인터페이스는 I/O 명령의 유형에 기초하여 I/O 명령을 처리할 수 있다(동작(404)). I/O 명령이 읽기 명령에 대응하는 경우, 저장 제어기 버스 인터페이스는 저장 디바이스에 대해 I/O 명령을 발행할 수 있고(동작(406)), 이어서 데이터가 저장 디바이스로부터 검색된 후에 데이터를 복호화하기 위해 암호화 컨텍스트를 사용할 수 있다(동작(408)). 데이터가 복호화되면, 저장 제어기 버스 인터페이스는, 호스트에 의한 사용을 위해, 복호화된 데이터를 호스트 상의 메모리 주소들의 세트로 전달할 수 있다(동작(410)). I/O 명령이 쓰기 명령에 대응하는 경우, 저장 제어기 버스 인터페이스는, 저장 디바이스에 대해 I/O 명령을 발행하기 전에(동작(414)), 쓰여질 데이터를 암호화할 수 있다(동작(412)). 마지막으로, I/O 명령이 저장 디바이스 및/또는 저장 제어기 버스 인터페이스에 의해 완료된 후에, 디바이스 드라이버는 I/O 명령의 완료를 통지받는다(동작(416)).
도 5는 개시된 실시예들에 따른 컴퓨터 시스템(500)을 나타낸 것이다. 컴퓨터 시스템(500)은 프로세서(502), 메모리(504), 저장 장치(506), 및/또는 전자 컴퓨팅 디바이스들에서 발견되는 다른 컴포넌트들을 포함하는 장치에 대응할 수 있다. 프로세서(502)는 컴퓨터 시스템(500) 내의 다른 프로세서들과의 병렬 처리 및/또는 멀티-스레드(multi-threaded) 동작을 지원할 수 있다. 컴퓨터 시스템(500)은 또한 키보드(508), 마우스(510), 및 디스플레이(512)와 같은 입력/출력(I/O) 디바이스들을 포함할 수 있다.
컴퓨터 시스템(500)은 본 실시예들의 다양한 컴포넌트들을 실행시키는 기능을 포함할 수 있다. 상세하게는, 컴퓨터 시스템(500)은 컴퓨터 시스템(500) 상의 하드웨어 및 소프트웨어 자원들의 사용을 조정하는 운영 체제(도시 생략)는 물론, 사용자를 위한 특수 작업들을 수행하는 하나 이상의 응용 프로그램들을 포함할 수 있다. 사용자를 위한 작업들을 수행하기 위해, 응용 프로그램들은 운영 체제로부터 컴퓨터 시스템(500) 상의 하드웨어 자원들의 사용을 획득할 수 있음은 물론, 운영 체제에 의해 제공되는 하드웨어 및/또는 소프트웨어 프레임워크를 통해 사용자와 상호작용할 수 있다.
하나 이상의 실시예들에서, 컴퓨터 시스템(500)은 저장 디바이스(예컨대, 저장 장치(506))와 호스트 사이에서의 데이터 전달을 보호하는 시스템을 제공한다. 이 시스템은 디바이스 드라이버 및 호스트와 저장 디바이스 사이의 저장 제어기 버스 인터페이스를 포함할 수 있다. 디바이스 드라이버는 호스트 상에서 실행될 수 있고 입력/출력(I/O) 명령 및 I/O 명령과 연관된 암호화 컨텍스트를 저장 제어기 버스 인터페이스에 제공할 수 있다. 저장 제어기 버스 인터페이스는, 저장 디바이스와 호스트 사이에서 데이터의 암호화된 형태를 전송하는 것을 가능하게 하기 위해, I/O 명령과 연관된 데이터에 암호화 컨텍스트를 적용할 수 있다. 저장 제어기 버스 인터페이스는 또한, 저장 디바이스에 의한 I/O 명령의 처리를 위해, 저장 디바이스에 대해 I/O 명령을 발행할 수 있다. 마지막으로, 이 시스템은 또한 호스트에 의한 저장 디바이스의 사용 동안 암호화 컨텍스트를 생성하고 관리하는 파일 시스템을 포함할 수 있다.
그에 부가하여, 컴퓨터 시스템(500)의 하나 이상의 컴포넌트들은 원격지에 위치되어 있고 네트워크를 통해 다른 컴포넌트들에 연결될 수 있다. 본 실시예들의 일부분들(예컨대, 디바이스 드라이버, 저장 제어기 버스 인터페이스, 파일 시스템, 저장 디바이스 등)은 또한 실시예들을 구현하는 분산 시스템의 상이한 노드들에 위치해 있을 수 있다. 예를 들어, 본 실시예들은 원격 저장 디바이스와 호스트 사이에서 데이터를 전달하는 클라우드 컴퓨팅 시스템을 사용하여 구현될 수 있다.
다양한 실시예들에 대한 이상의 설명은 단지 예시 및 설명을 위해 제시되었다. 이 설명은 전수적이거나 본 발명을 개시된 형태들로 제한하기 위한 것으로 보아서는 안된다. 그에 따라, 많은 수정들 및 변형들이 당업자에게 명백할 것이다. 그에 부가하여, 전술한 개시 내용은 본 발명을 제한하기 위한 것이 아니다.

Claims (23)

  1. 저장 디바이스와 호스트 사이에서의 데이터 전달을 보호하는 방법으로서,
    입력/출력(I/O) 명령 및 상기 I/O 명령과 연관된 암호화 컨텍스트를 상기 호스트 상에서 실행 중인 디바이스 드라이버로부터 획득하는 단계 - 상기 I/O 명령 및 상기 암호화 컨텍스트를 상기 호스트로부터 획득하는 단계는 상기 I/O 명령 및 상기 암호화 컨텍스트를 상기 호스트 상의 메모리 주소들의 세트로부터 저장 제어기 버스 인터페이스(storage controller bus interface) 상의 버퍼로 전달하는 단계를 포함함 -;
    저장 제어기 버스 인터페이스를 이용하여, 상기 I/O 명령과 연관된 데이터에 상기 암호화 컨텍스트를 적용하는 단계 - 상기 암호화 컨텍스트는 상기 저장 디바이스와 상기 호스트 사이에서 상기 데이터의 암호화된 형태의 전송을 가능하게 함 -;
    상기 I/O 명령이 쓰기 명령에 해당하는 경우, 상기 저장 디바이스에 대해 상기 I/O 명령을 발행하기 이전에 상기 저장 제어기 버스 인터페이스를 사용하여 상기 데이터를 암호화하는 단계; 및
    상기 I/O 명령이 읽기 명령에 해당하는 경우, 상기 I/O 명령이 상기 저장 디바이스에 의해 처리된 후 상기 저장 제어기 버스 인터페이스를 사용하여 상기 데이터를 복호화하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 I/O 명령이 상기 저장 디바이스에 의해 완료된 후에, 상기 I/O 명령의 완료(completed I/O command)를 상기 디바이스 드라이버에 통지하는 단계를 추가로 포함하고, 상기 I/O 명령 및 상기 암호화 컨텍스트를 상기 호스트로부터 획득하는 단계는,
    상기 I/O 명령 및 상기 암호화 컨텍스트와 연관된 상기 메모리 주소들의 세트를 상기 디바이스 드라이버로부터 획득하는 단계; 및
    상기 I/O 명령 및 상기 암호화 컨텍스트를 상기 호스트 상의 상기 메모리 주소들로부터 상기 저장 제어기 버스 인터페이스 상의 버퍼로 전달하기 위해 DMA(direct memory access)를 사용하는 단계를 포함하는, 방법.
  3. 제1항에 있어서, 상기 I/O 명령과 연관된 상기 데이터에 상기 암호화 컨텍스트를 적용하는 단계는,
    상기 I/O 명령이 쓰기 명령에 대응하는 경우, 상기 저장 디바이스에 대해 상기 I/O 명령을 발행하는 단계 이전에 상기 데이터를 암호화하기 위해 상기 암호화 컨텍스트를 사용하는 단계; 및
    상기 I/O 명령이 읽기 명령에 대응하는 경우, 상기 I/O 명령이 상기 저장 디바이스에 의해 처리된 후에 상기 데이터를 복호화하기 위해 상기 암호화 컨텍스트를 사용하는 단계를 포함하는, 방법.
  4. 제3항에 있어서, 상기 I/O 명령이 상기 읽기 명령에 대응하는 경우, 상기 방법은,
    상기 복호화된 데이터를 상기 호스트 상의 메모리 주소들의 세트로 전달하는 단계를 추가로 포함하는, 방법.
  5. 제1항에 있어서, 상기 암호화 컨텍스트는 응용 프로그램, 파일, 및 사용자 중 적어도 하나와 연관되어 있고,
    상기 암호화 컨텍스트는,
    하나 이상의 키들; 및
    초기 벡터를 포함하는, 방법.
  6. 저장 디바이스와 호스트 사이에서의 데이터 전달을 보호하는 시스템으로서,
    입력/출력(I/O) 명령과 연관된 데이터에 암호화 컨텍스트를 적용하고, 처리를 위해 상기 저장 디바이스에 대해 상기 I/O 명령을 발행하기 위한 저장 제어기 버스 인터페이스 - 상기 암호화 컨텍스트는 상기 저장 디바이스와 상기 호스트 사이에서 상기 데이터의 암호화된 형태의 전송을 가능하게 함 -; 및
    상기 호스트 상에서 실행되며, 상기 호스트 상의 메모리 주소들의 세트를 상기 저장 제어기 버스 인터페이스에 제공하고 - 상기 메모리 주소들은 상기 I/O 명령 및 상기 암호화 컨텍스트와 연관됨 -, 상기 I/O 명령 및 상기 암호화 컨텍스트에 대해, 상기 메모리 주소들의 세트로부터 상기 저장 제어기 버스 인터페이스로의 DMA(direct memory access) 전달을 구성하기 위한 디바이스 드라이버
    를 포함하는, 시스템.
  7. 제6항에 있어서,
    상기 호스트에 의한 상기 저장 디바이스의 사용 동안 상기 암호화 컨텍스트를 생성 및 관리하도록 구성된 파일 시스템을 추가로 포함하고, 상기 I/O 명령이 상기 저장 디바이스에 의해 완료된 후에, 상기 저장 제어기 버스 인터페이스는 또한,
    상기 I/O 명령의 완료를 상기 디바이스 드라이버에 통지하도록 구성되는, 시스템.
  8. 제6항에 있어서,
    상기 저장 제어기 버스 인터페이스는 상기 호스트의 중앙 프로세서에 직접 액세스하지 않고 상기 호스트로의 전달 또는 상기 호스트로부터의 전달을 수행하기 위해 DMA 엔진와 연결되는, 시스템.
  9. 제6항에 있어서, 상기 I/O 명령과 연관된 상기 데이터에 상기 암호화 컨텍스트를 적용하는 것은,
    상기 I/O 명령이 쓰기 명령에 대응하는 경우, 상기 저장 디바이스에 대해 상기 I/O 명령을 발행하는 것 이전에 상기 데이터를 암호화하기 위해 상기 암호화 컨텍스트를 사용하는 것; 및
    상기 I/O 명령이 읽기 명령에 대응하는 경우, 상기 I/O 명령이 상기 저장 디바이스에 의해 처리된 후에 상기 데이터를 복호화하기 위해 상기 암호화 컨텍스트를 사용하는 것을 포함하는, 시스템.
  10. 제9항에 있어서, 상기 I/O 명령이 상기 읽기 명령에 대응하는 경우, 상기 저장 제어기 버스 인터페이스는 또한,
    상기 복호화된 데이터를 상기 호스트 상의 메모리 주소들의 세트로 전달하도록 구성되는, 시스템.
  11. 제10항에 있어서, 상기 복호화된 데이터는 DMA를 사용하여 상기 메모리 주소들의 세트로 전달되는, 시스템.
  12. 제6항에 있어서, 상기 암호화 컨텍스트는 응용 프로그램, 파일, 및 사용자 중 적어도 하나와 연관되어 있는, 시스템.
  13. 제6항에 있어서, 상기 암호화 컨텍스트는,
    하나 이상의 키들; 및
    초기 벡터를 포함하는, 시스템.
  14. 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금 저장 디바이스와 호스트 사이에서의 데이터 전달을 보호하는 동작들을 수행하게 하는 명령어들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 동작들은,
    입력/출력(I/O) 명령 및 상기 I/O 명령과 연관된 암호화 컨텍스트를 상기 호스트 상에서 실행 중인 디바이스 드라이버로부터 획득하는 동작 - 상기 I/O 명령 및 상기 암호화 컨텍스트를 상기 호스트로부터 획득하는 동작은 상기 I/O 명령 및 상기 암호화 컨텍스트를 상기 호스트 상의 메모리 주소들의 세트로부터 저장 제어기 버스 인터페이스 상의 버퍼로 전달하는 동작을 포함함 -;
    상기 저장 제어기 버스 인터페이스를 사용하여 상기 I/O 명령과 연관된 데이터에 상기 암호화 컨텍스트를 적용하는 동작 - 상기 암호화 컨텍스트는 상기 저장 디바이스와 상기 호스트 사이에서 상기 데이터의 암호화된 형태의 전송을 가능하게 함 -;
    상기 I/O 명령이 쓰기 명령에 대응하는 경우, 상기 저장 디바이스에 대해 상기 I/O 명령을 발행하기 이전에 상기 저장 제어기 버스 인터페이스를 사용하여 상기 데이터를 암호화하는 동작; 및
    상기 I/O 명령이 읽기 명령에 대응하는 경우, 상기 I/O 명령이 상기 저장 디바이스에 의해 처리된 후 상기 저장 제어기 버스 인터페이스를 사용하여 상기 데이터를 복호화하는 동작
    을 포함하는, 컴퓨터 판독가능 저장 매체.
  15. 제14항에 있어서,
    상기 I/O 명령이 상기 저장 디바이스에 의해 완료된 후에, 상기 I/O 명령의 완료를 상기 디바이스 드라이버에 통지하는 동작을 포함하는 추가 동작들을 수행하기 위한 명령어들을 추가로 포함하는, 컴퓨터 판독가능 저장 매체.
  16. 제14항에 있어서, 상기 I/O 명령 및 상기 암호화 컨텍스트를 상기 호스트로부터 획득하는 동작은,
    상기 I/O 명령 및 상기 암호화 컨텍스트를 상기 호스트 상의 상기 메모리 주소들로부터 상기 저장 제어기 버스 인터페이스 상의 버퍼로 전달하기 위해 DMA(direct memory access)를 사용하는 동작을 포함하는, 컴퓨터 판독가능 저장 매체.
  17. 제16항에 있어서,
    상기 DMA를 사용하는 동작은, 상기 호스트의 중앙 프로세서에 직접 액세스하지 않고 상기 호스트 상의 상기 메모리 주소들로의 전달 또는 상기 호스트 상의 상기 메모리 주소들로부터의 전달을 위해 DMA 엔진을 사용하는 동작을 포함하는, 컴퓨터 판독가능 저장 매체.
  18. 제14항에 있어서, 상기 I/O 명령이 상기 읽기 명령에 대응하는 경우, 상기 복호화된 데이터를 상기 호스트 상의 메모리 주소들의 세트로 전달하는 동작을 포함하는 추가 동작들을 수행하기 위한 명령어들을 추가로 포함하는, 컴퓨터 판독가능 저장 매체.
  19. 제14항에 있어서, 상기 암호화 컨텍스트는 응용 프로그램, 파일, 및 사용자 중 적어도 하나와 연관되어 있는, 컴퓨터 판독가능 저장 매체.
  20. 제14항에 있어서, 상기 암호화 컨텍스트는,
    하나 이상의 키들; 및
    초기 벡터를 포함하는, 컴퓨터 판독가능 저장 매체.
  21. 삭제
  22. 삭제
  23. 삭제
KR1020147023864A 2012-02-29 2013-02-27 저장 디바이스와 호스트 사이에서의 데이터 전달의 보호를 위한 저장 제어기 버스 인터페이스의 사용 KR101742364B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/408,725 2012-02-29
US13/408,725 US9152825B2 (en) 2012-02-29 2012-02-29 Using storage controller bus interfaces to secure data transfer between storage devices and hosts
PCT/US2013/028053 WO2013130632A1 (en) 2012-02-29 2013-02-27 Using storage controller bus interfaces to secure data transfer between storage devices and hosts

Publications (2)

Publication Number Publication Date
KR20140117635A KR20140117635A (ko) 2014-10-07
KR101742364B1 true KR101742364B1 (ko) 2017-05-31

Family

ID=47892000

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147023864A KR101742364B1 (ko) 2012-02-29 2013-02-27 저장 디바이스와 호스트 사이에서의 데이터 전달의 보호를 위한 저장 제어기 버스 인터페이스의 사용

Country Status (7)

Country Link
US (1) US9152825B2 (ko)
EP (1) EP2803012B1 (ko)
JP (1) JP6067757B2 (ko)
KR (1) KR101742364B1 (ko)
CN (1) CN104160407B (ko)
AU (1) AU2013226133B2 (ko)
WO (1) WO2013130632A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665501B1 (en) * 2013-06-18 2017-05-30 Western Digital Technologies, Inc. Self-encrypting data storage device supporting object-level encryption
US9461815B2 (en) * 2013-10-18 2016-10-04 Advanced Micro Devices, Inc. Virtualized AES computational engine
KR102263880B1 (ko) * 2014-06-19 2021-06-11 삼성전자주식회사 호스트 컨트롤러 및 시스템-온-칩
US9661007B2 (en) * 2015-03-18 2017-05-23 Intel Corporation Network interface devices with remote storage control
US10140457B2 (en) * 2015-07-31 2018-11-27 Intel Corporation Secure input/output device management
CN105243344B (zh) * 2015-11-02 2020-09-01 上海兆芯集成电路有限公司 具有硬盘加密功能的芯片组以及主机控制器
US10225247B2 (en) 2015-12-14 2019-03-05 Intel Corporation Bidirectional cryptographic IO for data streams
US10157153B2 (en) 2016-02-03 2018-12-18 Qualcomm Incorporated Inline cryptographic engine (ICE) for peripheral component interconnect express (PCIe) systems
US10310990B2 (en) 2016-06-24 2019-06-04 Hewlett Packard Enterprise Development Lp Direct memory access encryption with application provided keys
US10476846B2 (en) * 2016-08-05 2019-11-12 The Boeing Company Data-at-rest (DAR) encryption for integrated storage media
US10896267B2 (en) 2017-01-31 2021-01-19 Hewlett Packard Enterprise Development Lp Input/output data encryption
US10417458B2 (en) * 2017-02-24 2019-09-17 Microsoft Technology Licensing, Llc Securing an unprotected hardware bus
US11080409B2 (en) * 2018-11-07 2021-08-03 Ngd Systems, Inc. SSD content encryption and authentication
CN110245526B (zh) * 2019-05-07 2021-04-23 杭州电子科技大学 一种基于PCIe接口的加密方法
US11249924B2 (en) * 2019-11-25 2022-02-15 Micron Technology, Inc. Secure data communication with memory sub-system
CN114691049B (zh) * 2022-04-29 2023-03-17 无锡众星微系统技术有限公司 一种存储设备的i/o控制方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060242429A1 (en) * 2004-12-21 2006-10-26 Michael Holtzman In stream data encryption / decryption method
JP2007328619A (ja) * 2006-06-08 2007-12-20 Toshiba Corp メモリシステム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1466250A2 (en) * 2001-10-12 2004-10-13 Koninklijke Philips Electronics N.V. Apparatus and method for reading or writing user data
JP2004070499A (ja) * 2002-08-02 2004-03-04 Fujitsu Ltd メモリデバイスおよび暗号化/復号方法
WO2006071725A2 (en) * 2004-12-21 2006-07-06 Sandisk Corporation Memory system with in-stream data encryption/decryption
US7849330B2 (en) * 2006-03-20 2010-12-07 Hitachi, Ltd. Apparatus and method for secure data disposal
IL177756A (en) * 2006-08-29 2014-11-30 Lior Frenkel Encryption-based protection against attacks
US8464073B2 (en) * 2006-09-13 2013-06-11 Stec, Inc. Method and system for secure data storage
KR101206542B1 (ko) * 2006-12-18 2012-11-30 주식회사 엘지씨엔에스 하드웨어 기반의 동적공격 탐지 및 차단을 지원하는네트워크 보안 장치 및 방법
US20080181406A1 (en) 2007-01-30 2008-07-31 Technology Properties Limited System and Method of Storage Device Data Encryption and Data Access Via a Hardware Key
JP4347350B2 (ja) 2007-02-15 2009-10-21 富士通株式会社 データ暗号転送装置、データ復号転送装置、データ暗号転送方法およびデータ復号転送方法
US8539245B2 (en) * 2010-08-06 2013-09-17 Intel Corporation Apparatus and method for accessing a secure partition in non-volatile storage by a host system enabled after the system exits a first instance of a secure mode
US8190784B1 (en) * 2011-03-30 2012-05-29 Emc Corporation In-band transport mechanism for carrying communications among functional components of a storage I/O interface stack

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060242429A1 (en) * 2004-12-21 2006-10-26 Michael Holtzman In stream data encryption / decryption method
JP2007328619A (ja) * 2006-06-08 2007-12-20 Toshiba Corp メモリシステム

Also Published As

Publication number Publication date
JP2015513743A (ja) 2015-05-14
CN104160407A (zh) 2014-11-19
EP2803012A1 (en) 2014-11-19
KR20140117635A (ko) 2014-10-07
AU2013226133A1 (en) 2014-08-28
US20130227301A1 (en) 2013-08-29
US9152825B2 (en) 2015-10-06
AU2013226133B2 (en) 2016-01-21
EP2803012B1 (en) 2020-08-05
WO2013130632A1 (en) 2013-09-06
JP6067757B2 (ja) 2017-01-25
CN104160407B (zh) 2017-04-05

Similar Documents

Publication Publication Date Title
KR101742364B1 (ko) 저장 디바이스와 호스트 사이에서의 데이터 전달의 보호를 위한 저장 제어기 버스 인터페이스의 사용
US20230110230A1 (en) Technologies for secure i/o with memory encryption engines
KR101880075B1 (ko) 중복 제거 기반 데이터 보안
CN109844751B (zh) 用于提供信息隔离的方法和处理器
US11088846B2 (en) Key rotating trees with split counters for efficient hardware replay protection
US10810138B2 (en) Enhanced storage encryption with total memory encryption (TME) and multi-key total memory encryption (MKTME)
US10503934B2 (en) Secure subsystem
KR102013841B1 (ko) 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치
JP6298268B2 (ja) セキュリティ管理ユニットとそれを含むホストコントローラインターフェース及びその動作方法、並びにホストコントローラインターフェースを含むコンピュータシステム
EP3355232B1 (en) Input/output data encryption
US10726165B2 (en) Technologies for secure enumeration of USB devices
KR20150143708A (ko) 스토리지 디바이스 보조 인라인 암호화 및 암호해독
JP2014530371A (ja) ファイル暗号化方法及び装置、ファイル復号方法及び装置
CN116260606A (zh) 与遗留外围设备的密态计算
US11080409B2 (en) SSD content encryption and authentication
CN113536331B (zh) 存储器和计算系统的数据安全
KR20090059602A (ko) 세션 메모리 버스를 구비한 암호화 장치
EP4202740A1 (en) Process object re-keying during process creation in cryptographic computing
US10664416B2 (en) Technologies for trusted I/O support for I/O devices using external peripheral device link controller
KR102090374B1 (ko) Gpu를 이용한 파일 시스템 레벨 암호화 장치 및 방법
TW202036349A (zh) 電腦系統及其虛擬硬碟的加解密方法

Legal Events

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