KR20210097016A - 암호화를 오프로드하기 위한 장치 및 방법 - Google Patents

암호화를 오프로드하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20210097016A
KR20210097016A KR1020200173188A KR20200173188A KR20210097016A KR 20210097016 A KR20210097016 A KR 20210097016A KR 1020200173188 A KR1020200173188 A KR 1020200173188A KR 20200173188 A KR20200173188 A KR 20200173188A KR 20210097016 A KR20210097016 A KR 20210097016A
Authority
KR
South Korea
Prior art keywords
host
data
offload engine
peer
encryption
Prior art date
Application number
KR1020200173188A
Other languages
English (en)
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 KR20210097016A publication Critical patent/KR20210097016A/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
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

방법은 데이터를 호스트에서 암호화 오프로드 엔진으로 상호 연결 패브릭을 통해 전송하는 단계; 상기 호스트로부터의 데이터를 상기 암호화 오프로드 엔진에서 암호화하는 단계; 및 상기 암호화된 데이터를 상기 암호화 오프로드 엔진에서 스토리지 장치로 상기 상호 연결 패브릭의 피어-투-피어(peer-to-peer) 연결을 통해 전송하는 단계를 포함할 수 있다. 방법은 상기 암호화된 데이터를 상기 스토리지 장치로부터 상기 암호화 오프로드 엔진으로 상기 상호 연결 패브릭의 피어-투-피어 연결을 통해 전송하는 단계; 상기 스토리지 장치로부터의 상기 암호화된 데이터를 상기 암호화 오프로드 엔진에서 복호화하는 단계; 및 상기 복호화된 데이터를 상기 호스트로 상기 상호 연결 패브릭을 통해 전송하는 단계를 더 포함할 수 있다. 방법은 상기 암호화된 데이터를 상기 스토리지 장치에서 상기 호스트로 전송하는 단계; 및 상기 암호화된 데이터의 상기 암호화를 상기 호스트에서 검증하는 단계를 더 포함할 수 있다.

Description

암호화를 오프로드하기 위한 장치 및 방법{METHODS AND APPARATUS FOR OFFLOADING ENCRYPTION}
본 개시는 일반적으로 암호화에 관련되며, 좀 더 상세하게는 상호 연결 패브릭을 거쳐(통해) 암호화를 오프로드하는 것에 관련된다.
자체 암호화 드라이브(self-encrypting drive; SED)는 하드 디스크 드라이브(hard disk drive; HDD) 또는 솔리드 스테이트 드라이브(solid state drive; SSD) 등과 같은 스토리지 장치의 일 유형으로, 장치에 저장된 데이터의 승인되지 않은(또는 무단) 액세스를 막기 위해 내부 암호화를 사용할 수 있다. SED는 암호화 및 복호화 프로세스를 가속화하여 드라이브의 액세스 속도를 낮추지 않는 전용 하드웨어를 포함할 수 있다. SED는 자동적으로 그리고 연속적으로, 사용자 또는 운영 체제의 어떤 개입도 없이, 데이터가 드라이브로 기입될 때 암호화되고, 그리고 데이터가 드라이브로부터 판독될 때 복호화되도록 구성될 수 있다. 가속화 하드웨어는 드라이브 내에 내부적으로 유지될 수 있는 하나 이상의 암호화 키들을 사용하여 데이터를 암호화 및 복호화할 수 있다. SED는 드라이브가 호스트 시스템에서 제거된 경우 데이터에 대한 승인되지 않은 액세스를 방지하기 위해 드라이브를 다시 시작할 때마다 추가 인증 키의 입력를 요구할 수 있다. 구현에 따라서, 인증 키는 SED로 유저에 의해 수동으로 입력될 수도 있고, 또는 BIOS(basic input/output system) 또는 운영 체제에 의해, 부팅 프로세스 동안 자동적으로 입력될 수 있다.
본 발명의 목적은 상호 연결 패브릭을 거쳐 암호화를 오프로드하는 방법, 시스템, 및 장치를 제공하는 데 있다.
본 개시의 일 실시 예에 따른 방법은 데이터를 호스트에서 암호화 오프로드 엔진으로 상호 연결 패브릭을 통해 전송하는 단계; 상기 호스트로부터의 데이터를 상기 암호화 오프로드 엔진에서 암호화하는 단계; 및 상기 암호화된 데이터를 상기 암호화 오프로드 엔진에서 스토리지 장치로 상기 상호 연결 패브릭의 피어-투-피어(peer-to-peer) 연결을 통해 전송하는 단계를 포함할 수 있다. 방법은 상기 암호화된 데이터를 상기 스토리지 장치로부터 상기 암호화 오프로드 엔진으로 상기 상호 연결 패브릭의 피어-투-피어 연결을 통해 전송하는 단계; 상기 스토리지 장치로부터의 상기 암호화된 데이터를 상기 암호화 오프로드 엔진에서 복호화하는 단계; 및 상기 복호화된 데이터를 상기 호스트로 상기 상호 연결 패브릭을 통해 전송하는 단계를 더 포함할 수 있다. 방법은 상기 암호화된 데이터를 상기 스토리지 장치에서 상기 호스트로 전송하는 단계; 및 상기 암호화된 데이터의 상기 암호화를 상기 호스트에서 검증하는 단계를 더 포함할 수 있다. 상기 호스트로부터의 상기 데이터는 소스 어드레스를 포함하고; 그리고 방법은 상기 소스 어드레스를 상기 암호화 오프로드 엔진에 매핑하는 단계를 더 포함할 수 있다. 상기 스토리지 장치는 상기 호스트로부터의 쓰기 커맨드에 응답하여, 상기 암호화 오프로드 엔진에서 상기 저장 장치로의 피어-투-피어 전송을 시작하고, 그리고 상기 암호화 오프로드 엔진은 상기 데이터를 상기 호스트로부터 매핑 테이블을 사용하여 페치할 수 있다. 상기 호스트로 전송될 상기 데이터는 목적지 어드레스를 포함하고; 그리고 방법은 상기 목적지 어드레스를 상기 암호화 오프로드 엔진으로 맵핑하는 단계를 더 포함할 수 있다. 상기 스토리지 장치는 상기 호스트로부터의 읽기 커맨드에 응답하여, 상기 암호화 오프로드 엔진에서 상기 저장 장치로의 피어-투-피어 전송을 시작하고, 그리고 상기 암호화 오프로드 엔진은 복호화된 데이터를 상기 호스트로 매핑 테이블을 사용하여 전송할 수 있다.
본 개시의 일 실시 예에 따른 시스템은 호스트; 암호화 오프로드 엔진; 및 상기 호스트, 상기 암호화 오프로드 엔진 및 하나 이상의 스토리지 장치들을 상호 연결하도록 배열된 상호 연결 패브릭을 포함하되, 상기 암호화 오프로드 엔진은: 데이터를 상기 호스트로부터 수신하고; 상기 호스트로부터 수신된 데이터를 암호화하고; 그리고 상기 암호화된 데이터를 상기 스토리지 장치들 중 적어도 하나로 상기 상호 연결 패브릭의 피어-투-피어 연결을 통해 전송할 수 있다. 상기 호스트는: 상기 암호화된 데이터를 상기 적어도 하나의 스토리지 장치로부터 읽고; 그리고 상기 암호화된 데이터의 암호화를 검증할 수 있다. 상기 호스트는 상기 암호화된 데이터를 상기 적어도 하나의 스토리지 장치로부터 상기 암호화 오프로드 엔진 내 매핑 테이블을 우회함으로써 읽을 수 있다. 시스템은 상기 호스트로부터의 쓰기 커맨드를 유지하는 서브미션 큐를 더 포함하고; 그리고 상기 쓰기 커맨드는 데이터가 상기 적어도 하나의 스토리지 장치에 쓰이기 위한 소스 어드레스를 포함할 수 있다. 상기 호스트는 상기 소스 어드레스를 상기 암호화 오프로드 엔진에 맵핑할 수 있다. 상기 암호화 오프로드 엔진은 상기 적어도 하나의 저장 장치와의 피어-투-피어 전송을 위한 데이터를 상기 호스트 내 어드레스로 매핑하기 위해 매핑 테이블을 유지할 수 있다. 상기 피어-투-피어 전송은 상기 호스트로부터의 상기 쓰기 커맨드와 연관될 수 있다. 상기 적어도 하나의 저장 스토리지는 호스트로부터의 쓰기 명령에 응답하여, 상기 암호화 오프로드 엔진으로부터 피어-투-피어 전송을 시작하도록 구성되고; 그리고 상기 암호화 오프로드 엔진은 상기 호스트로부터 상기 데이터를 수신하고, 상기 호스트로부터 수신된 상기 데이터를 암호화하고, 그리고 상기 암호화된 데이터를 상기 피어-투-피어 전송을 시작한 상기 적어도 하나의 저장 장치로 전송할 수 있다. 상기 암호화 오프로드 엔진은: 암호화된 데이터를 상기 스토리지 장치들 중 적어도 하나로부터 상기 상호연결 패브릭 내 상기 피어-투-피어 연결을 통해 수신하고; 상기 적어도 하나의 스토리지 장치로부터 수신된 상기 암호화된 데이터를 복호화하고; 그리고 상기 복호화된 데이터를 상기 호스트로 전송할 수 있다. 시스템은 상기 호스트로부터의 읽기 커맨드를 유지하는 서브미션 큐를 더 포함하고; 그리고 상기 읽기 커맨드는 상기 적어도 하나의 스토리지 장치로부터의 상기 복호화된 데이터에 대한 목적지 어드레스를 포함할 수 있다. 상기 호스트는 상기 목적지 어드레스를 상기 암호화 오프로드 엔진으로 맵핑할 수 있다.
본 개시의 일 실시 예에 따른 암호화 장치는 상기 암호화 장치를 피어-투-피어 전송 기능들(capabilities)을 갖는 상호 연결 시스템으로 결합하는 인터페이스; 및 상기 인터페이스로 결합된 컨트롤러를 포함하되, 상기 컨트롤러는: 데이터를 호스트로부터 상기 인터페이스를 통해 수신하고; 상기 호스트로부터 수신된 상기 데이터를 암호화하고; 그리고 상기 암호화된 데이터를 스토리지 장치로 상기 인터페이스를 통해 전송할 수 있다. 상기 컨트롤러는: 암호화된 데이터를 상기 스토리지 장치로부터 상기 인터페이스를 통해 수신하고; 상기 스토리지 장치로부터 수신된 데이터를 복호화하고; 그리고 상기 복호화된 데이터를 상기 호스트로 상기 인터페이스를 통해 전송할 수 있다.
본 개시의 일 실시 예에 따르면, 스토리지 장치 및 호스트와 독립적인 암호화 오프로드 엔진을 포함하는 시스템이 제공될 수 있다. 암호화 오프로드 엔진은 암호화 및 복호화를 수행할 수 있다. 암호화 오프로드 엔진은 일반 텍스트 사용자 데이터의 암호화된 섀도우(encrypted shadow)를 유지하기 위해 어드레스 변환을 관리할 수 있다. 이에 따라, 신뢰성 및 보안이 개선될 수 있다.
도면은 반드시 축척(scale)에 따라 그려진 것은 아니며, 유사한 구조들 또는 기능들은 일반적으로 도면 전체에 걸쳐 예시를 위해 유사한 참조 번호들로 표시된다. 도면들은 오직 이하에서 설명되는 다양한 실시 예들의 설명을 용이하게 하기 위해 의도되었다. 도면들은 이하에서 개시되는 교시의 모든 양상을 설명하지는 않으며, 청구항들의 범위를 제한하지 않는다. 도면이 불명확해지는 것을 방지하기 위해, 모든 구성 요소들, 연결들 등이 도시되지는 않을 수 있으며, 모든 구성 요소들이 참조 번호들을 갖지는 않을 수 있다. 그러나, 구성 요소 구성의 패턴은 도면에서 쉽게 알 수 있다. 명세서와 함께 첨부된 도면들은 본 개시의 예시적인 실시 예들을 도시하고, 설명과 함께 본 개시의 원리들을 설명하는 역할을 한다.
도 1은 데이터를 자체-암호화 드라이브들(self-encrypting drives; SEDs)에 저장하기 위한 시스템의 구조를 도시한다.
도 2는 본 개시에 따라 암호화된 데이터 스토리지를 제공하기 위한 시스템의 실시 예를 도시한다.
도 3은 본 개시에 따라 암호화 오프로드 엔진의 예시적인 실시 예를 도시한다.
도 4는 본 개시에 따라 암호화된 데이터 스토리지를 제공하기 위한 시스템의 예시적인 실시 예를 도시한다.
도 5는 본 개시에 따라 호스트 시스템의 예시적인 실시 예를 도시한다.
도 6은 본 개시에 따라 암호화된 데이터를 스토리지 장치에 저장하기 위한 방법의 일 실시 예를 도시한다.
도 7은 본 개시에 따라 암호화된 데이터를 스토리지 장치로부터 읽기 위한 방법의 일 실시 예를 도시한다.
도 8은 본 개시에 따라 스토리지 장치에 저장된 데이터의 암호화를 검증하기 위한 방법의 일 실시 예를 도시한다.
도 9는 본 개시에 따라 암호화 오프로드 엔진을 위한 컨트롤러를 구현하는 데 사용될 수 있는 장치의 일 실시 예를 도시한다.
본 개시에 따른 몇몇 실시 예들에서, 데이터는 상호 연결 패브릭(interconnect fabric)을 통해 호스트로부터 암호화 오프로드 엔진으로 전송될 수 있다. 암호화 오프로드 엔진은 데이터를 암호화하고 그리고 암호화된 데이터를 스토리지 장치로 P2P (peer-to-peer) 연결을 통해 상호 연결 패브릭에서 전송할 수 있다. 구현 세부 사항들에 따라, 이는 호스트가 자체 암호화 드라이브(self-encrypting drive; SED)를 신뢰하지 않고도 암호화 계산들을 오프로드 할 수 있도록 함으로써, 성능과 보안을 개선할 수 있다. 검증 동작 동안, 호스트는 암호화 오프로드 엔진을 우회하고 그리고 암호화된 데이터를 직접 스토리지 장치로부터 올바르게 암호화되었는지 확인하기 위해 읽을 수 있다.
도 1은 SED들에 데이터를 저장하기 위한 시스템의 구조를 도시한다. 도 1에 도시 된 시스템은 PCIe(Peripheral Component Interconnect Express) 루트 컴플렉스 (104)에 결합(연결)되거나, 또는 통합될 수 있는 CPU(central processing unit; 102)를 갖는 호스트(100)를 포함할 수 있다. 시스템 메모리(106)는, 예를 들어, 루트 컴플렉스 (104)를 통해 CPU(102)로 결합될 수 있다. PCIe 스위치(108)는 루트 컴플렉스(104)에 결합되거나, 또는 통합될 수 있다. PCIe 스위치(108)는 임의의 수의 솔리드 스테이트 드라이브들(solid state drives; SSDs; 110)을 루트 컴플렉스 (104)로 결합하도록 배열될 수 있다. 각각의 SSD들(110)은 드라이브가 SED로서 동작할 수 있도록, 내부 암호화(encryption; ENC)/복호화(decryption; DEC) 하드웨어(112)를 가질 수 있다. PCIe 스위치(108), 및 그에 대한 임의의 PCIe 상호 연결들(interconnects)은 PCIe 패브릭으로 총괄하여 지칭될 수 있다. 도 1에 도시된 시스템은 NVMe(Non-Volatile Memory Express) 프로토콜을 구현하여, PCIe 패브릭을 통해 SSD들(110) 및 호스트(100) 사이의 고속 데이터 전송을 가능하게 할 수 있다.
자체 암호화 저장 동작은 사용자, 애플리케이션, 드라이버, 커널 등이 호스트(100)에서 암호화되지 않은 (즉, 깨끗한(clean) 텍스트 또는 일반(plain) 텍스트) 데이터를 SSD(110) 중 어느 하나로 PCIe 패브릭을 통해 전송할 때 시작될 수 있다. SSD(110)에 도착하면, 암호화/복호화 하드웨어(112)는 호스트로부터의 데이터를 SSD(110)에 상주할 수 있는 하나 이상의 암호화 키들을 이용함으로써 암호화할 수 있다. 암호화된 데이터는 그러면, 하나 이상의 플래시 메모리 장치들과 같은 솔리드 스테이트 저장 매체에 저장될 수 있다.
호스트(100)로부터 읽기 명령을 수신하면, SSD들(110) 중 임의의 어느 것은 요청된 데이터의 암호화된 버전을 저장 매체로부터 회수(retrieve)할 수 있다. 암호화된 데이터는 그 다음 암호화/복호화 하드웨어(112)에 의해 SSD(110)에 상주할 수 있는 하나 이상의 암호화 키들을 사용하여 복호화될 수 있다. 복호화된 데이터는 그 다음 호스트(100)로 PCIe 패브릭을 통해 전송될 수 있다.
도 1과 관련하여 상술된 구조 및 동작은 암호화 및 복호화로 하여금 SSD들(110)로 데이터를 읽거나 및/또는 쓰는 것을 늦추지 않고 실시간으로 PCIe 버스 속도에서 수행되도록 할 수 있다. 그러나, 이 구조 및/또는 동작은 하나 이상의 잠재적인 보안 문제를 가질 수 있다. 예를 들어, 몇몇 시스템들에서, 암호화되지 않은 데이터가 SSD들(110)에서 호스트(100)로 전송될 수 있고, 따라서, 호스트(100)는 SSD들(110)의 저장 매체에 저장된 암호화된 (암호문) 데이터가 올바르게 암호화되었는지를 검증할 수 없을 수 있다.
몇몇 SED들은 암호문 데이터가 저장 매체에 저장됨에 따라(있으므로) 호스트가 암호문 데이터에 액세스 할 수 있도록 하는 검증 매커니즘을 제공할 수 있다. 그러나, 이러한 검증 매커니즘들은 각 SED 제조업체가 암호화된 데이터에 액세스하기 위한 서로 다른 독점 솔루션을 구현할 수 있기 때문에 활용하기 어려울 수 있다. 또한, 저장된 암호문에 대한 액세스 권한을 얻은 후라 하더라도, 암호화가 올바르게 수행되었는지 검증하기 위해, 호스트는 암호화 프로세스 중에 사용된 암호화 키 또는 키들을 SED로부터 획득해야 할 수도 있다. 그러나, 암호화 키 또는 키들을 획득하는 것은, 예를 들어, SED를 위한 컨트롤러에서 ASIC(application specific integrated circuit)과 함께 하드웨어 신뢰 루트(기반)(RoT, Root of Trust)를 사용하여 SED가 암호화 키 또는 키들을 랩핑(wrap) 할 수 있기 때문에, 어려울 수 있다.
도 1에 도시된 것과 같은 시스템의 다른 잠재적인 문제는, 각 SED가 하나 이상의 암호화 키들의 관리를 지원해야 할 필요가 있을 수 있기 때문에, 예를 들어, SED를 위한 컨트롤러의 SOC(System on Chip) 내 하나 이상의 SED들에서 키 에스크로(escrow) 동작들에 대한 잠재적인 가능성이 있다는 것이다. 이는 암호화 키들이 손상(훼손)될 추가 기회를 제공할 수 있다.
도 1에 도시된 것과 같은 시스템의 또 다른 잠재적인 문제는, 몇몇 구현들에서, SSD들(110)이 섀시, 랙, 데이터 센터 및/또는 이와 유사한 것 내의 호스트(100)로부터 상대적으로 먼 거리에 위치할 수 있다는 것이다. 암호화되지 않은 데이터는 이러한 먼 거리를 통과해야 할 수 있으므로, 인증되지 않은(unauthorized) 개체(entity)가 데이터를 가로챌 수 있는 추가 기회를 제공할 수 있다.
몇몇 시스템들에서, 데이터는 호스트(100)에서 암호화되고 그리고 PCIe 패브릭를 거쳐 SSD들(110)로 전송될 수 있다. 따라서, 호스트(100)는 SSD들(110) 중 어느 것도 신뢰할 필요가 없을 수 있다. 게다가, 데이터 중 어느 것이 PCIe 패브릭 내의 인증되지 않은 개체에 의해 가로채지는 경우, 데이터는 이미 암호화되었을 수 있다. 그러나 암호화 및 복호화 계산들을 수행하는 것은 호스트 CPU에 과부하가 걸리거나 및/또는 시스템 성능을 저하시킬 수 있다.
도 2는 본 개시에 따라 암호화된 데이터 스토리지를 제공하기 위한 시스템의 실시 예를 도시한다. 도 2에 도시된 시스템은 호스트(120), 암호화 오프로드 엔진(122) 및 호스트(120), 암호화 오프로드 엔진(122), 및 하나 이상의 스토리지 장치 (126)를 상호 연결하도록 배열된 상호 연결 패브릭(124)을 포함할 수 있다. 상호 연결 패브릭(124)은 다양한 장치들 사이에서 패브릭(124)을 통해 하나 이상의 피어-투-피어(peer-to-peer) 연결을 가능하게 하는 피어-투-피어(P2P) 기능들을 가질 수 있다.
몇몇 실시 예들에서, 스토리지 쓰기 동작 동안, 암호화 오프로드 엔진(122)은 암호화되지 않은 데이터를 호스트(120)로부터 수신하고, 호스트(120)로부터 수신된 데이터를 암호화하고, 그리고 암호화된 데이터를 스토리지 장치들(126) 중 하나로, 예를 들어, 상호 연결 패브릭(124) 내 피어-투-피어 연결(128)을 통해 전송하도록 구성될 수 있다. 스토리지 장치(126)는 장치 내 저장 매체에 암호화된 데이터를 저장할 수 있다.
몇몇 실시 예들에서, 스토리지 읽기 동작 동안, 저장 장치(126)는 암호화된 데이터를 장치 내의 저장 매체로부터 회수하고, 그리고 암호화된 데이터를 암호화 오프로드 엔진(122)으로, 예를 들어, 상호 연결 패브릭(124) 내 동일하거나 다른 피어-투-피어 연결(128)을 통해 전송할 수 있다. 암호화 오프로드 엔진(122)은 그 다음, 스토리지 장치(126)로부터 수신된 암호화된 데이터를 복호화하고, 그리고 다시 호스트(120)로 상호 연결 패브릭(124)을 통해 전송할 수 있다.
몇몇 실시 예들에서, 검증 동작 동안, 스토리지 장치(126)는 암호화된 데이터를 장치 내의 저장 매체로부터 회수하고 그리고 암호화된 데이터를 호스트(120)로 전송할 수 있으며, 따라서 암호화 오프로드 엔진(122)을 우회 할 수 있다. 호스트(120)는 그 다음 스토리지 장치(126)에 저장된 암호화된 데이터가 올바르게 암호화되었는지 검증할 수 있다.
따라서, 구현 세부 사항들에 따라, 도 2에 도시된 시스템은 위에서 논의된 보안 및/또는 성능 문제의 일부 또는 전부를 해결(address)할 수 있다. 예를 들어, 쓰기 및 읽기 동작들을 위한 암호화 및 복호화가, 각각, 호스트(120)로부터 분리될 수 있기 때문에, 호스트(120)의 암호화/복호화 부담이 감소 또는 제거될 수 있고, 그리고 또는 시스템 성능이 개선될 수 있다.
또 다른 예로서, 암호화 및/또는 복호화 및/또는 검증은 스토리지 장치들(126)과 독립적으로 수행될 수 있기 때문에, 스토리지 장치들(126)은 이미 암호화된 데이터를 읽거나 및/또는 쓸 수 있다. 이는 저장 매체에 저장된 대로의 암호화된 (암호문) 데이터에 대한 액세스를 얻기 위해 스토리지 장치들(126)에 존재할 수 있는 임의의 내장된(built-in) 검증 매커니즘들을 사용할 필요를 감소시키거나 또는 제거할 수 있다. 이는 시스템의 설계 프로세스 및/또는 시스템의 동작을 간소화하고 그리고/또는 다른 저장 장치 제조업체에 의해 구현될 수 있는 다른 독점적 검증 매커니즘을 수용(accommodate)할 필요성을 줄이거나 또는 제거할 수 있다. 또한, 암호화 및/또는 복호화 및/또는 검증을 스토리지 장치(126)와 독립적으로 수행하는 것은 스토리지 장치(126)에 의한 암호화 프로세스 동안 사용되는 암호화 키 또는 키들을 획득할 필요를 줄이거나 또는 제거할 수 있다.
추가적인 예로서, 스토리지 장치(126)와 독립적으로 암호화 및/또는 복호화 및/또는 검증을 수행하는 것은 하나 이상의 스토리지 장치들(126)에서 키 에스크로 동작의 가능성에 대한 우려를 줄이거나 또는 제거할 수 있다.
또 다른 예로서, 몇몇 실시 예들에서, 암호화 오프로드 엔진(122)은 상대적으로 호스트(120)에 가깝게 위치할 수 있다. 따라서, 암호화되지 않은 데이터는 호스트(120) 및 암호화 오프로드 엔진(1220) 사이의 상호 연결 패브릭(124)을 통해 상대적으로 짧은 거리만 통과할 필요가 있을 수 있다. 대조적으로, 스토리지 장치들(126) 중 임의의 것이 호스트(120) 및/또는 암호화 오프로드 엔진(122)으로부터 상대적으로 먼 거리에 위치하는 경우, 이러한 장거리를 통과해야 하는 데이터는 이미 암호화 오프로드 엔진(122)에 의해 암호화되어 있을 수 있으며, 이에 따라 데이터가 인증되지 않은(권한이 없는) 개체에 의해 가로채질 경우 데이터가 손상될 위험을 감소시킨다.
다시 도 2를 참조하면, 상호 연결 패브릭(124)은 임의의 적절한 상호 연결 매체들, 장치들, 프로토콜들, 이들의 조합 등으로 구현될 수 있다. 예를 들어, 일부 실시 예에서, 상호 연결 패브릭(124)은 PCIe(Peripheral Component Interconnect Express) 링크들을 통해 NVMe(Non-Volatile Memory Express) 프로토콜을 사용하여 구현될 수 있다. 그러한 PCIe/NVMe 실시 예들에서, 상호 연결 패브릭(124)은 PCIe 스위치들, 브리지들, 리타이머(retimer)들, 링크들, 레인들 및 이와 유사한 것의 임의의 수 및/또는 그들의 조합을 포함할 수 있으며, 이는 임의의 토폴로지로 배열될 수 있고 그리고 데이터를 상호 연결 패브릭(124)을 통한 계층적 (트리) 및/또는 피어-투-피어-연결들의 임의의 배열 및/또는 조합을 통해 전송하도록 구성될 수 있다. 이러한 PCIe/NVMe 실시 예들에서, 데이터 전송들은 시스템 전체에 걸쳐 하나 이상의 위치들에서 유지될 수 있는 서브미션 큐(submission queue; SQ)들을 사용하여 시작될 수 있다. 예를 들어, 몇몇 실시 예들에서, 하나 이상의 서브미션 큐들은 호스트(120) 및/또는 하나 이상의 스토리지 장치들(126)에 의해 제공되는 메모리에 유지될 수 있다.
그러나, 다른 실시 예들에서, 상호 연결 패브릭(124)은 임의의 다른 적절한 상호 연결 매체들, 장치들, 프로토콜들, 이들의 조합 및/또는 이와 유사 한 것으로 구현될 수 있다. 예시들은 PCI(Peripheral Component Interconnect), ATA(AT Attachment), SATA(Serial ATA), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), 이더넷, 파이버 채널, InfiniBand, OCuLink, NVMe over Fabric(NVMe-oF) 및 기타 등등을 포함할 수 있다. 상호 연결 패브릭(124)은 컴포넌트들 간의 피어-투-피어 연결들 및/또는 통신을 제공하는 것이 가능할 수 있다. 상호 연결 패브릭(124)은 상이한 상호 연결 매체들, 장치들, 프로토콜들, 이들의 조합 및/또는 이와 유사한 것을 갖는 세그먼트들로 구현될 수 있고, 다양한 세그먼트들은 임의의 토폴로지로 배열되고 세그먼트들 사이 및/또는 내부에 연결되는 브리지들, 변환기들, 스위치들, 허브들, 케이블들, 트레이스들, 커넥터들 및/또는 이와 유사한 것의 임의의 조합을 포함할 수 있다.
암호화 오프로드 엔진(122)은 하드웨어, 소프트웨어, 펌웨어 및/또는 이들의 임의의 조합으로 구현될 수 있다. 몇몇 실시 예들에서, 암호화 오프로드 엔진(122)은 별도의 구성 요소로서, 예를 들어, PCI 슬롯, PCIe 슬롯, M.2 슬롯, U.2 커넥터, SATA 커넥터, SAS 커넥터, OCuLink 커넥터 또는 마더 보드, 백플레인, 미드플레인, 모듈, 이들의 조합 및/또는 유사한 것 상의 다른 슬롯 또는 커넥터에 연결함으로써 상호 연결 패브릭(124)에 인터페이스될 수 있는 애드-인(add-in) 카드 또는 모듈로서 구현될 수 있다. 몇몇 다른 실시 예들에서, 이는 상호 연결 패브릭(124)에 케이블 및/또는 커넥터를 통해 인터페이스될 수 있는 모듈로서 구현될 수 있다. 몇몇 실시들 예에서, 암호화 오프로드 엔진(122)은 PCIe 스위치, 루트 컴플렉스, 마더 보드, 애드-인 또는 어댑터 카드 또는 모듈, 백플레인, 미드플레인, 이들의 조합 및/또는 이와 유사한 것과 같은 다른 구성 요소에 통합될 수 있다. 암호화 오프로드 엔진(122)은 대칭 및/또는 비대칭 암호화 및/또는 인증 키들 또는 이들의 임의의 조합을 사용하는 128 비트 또는 256 비트 AES(Advanced Encryption Standard) 알고리즘 등과 같은 임의의 적절한 암호화/복호화 기술들 및/또는 알고리즘들을 활용할 수 있다.
호스트(120)는 암호화된 포맷으로 데이터를 저장해야 할 필요가 있을 수 있는 임의의 장치(들) 및/또는 시스템(들)으로 구현될 수 있다. 예시들은 서버, 서버 랙, 데스크탑 또는 랩톱 컴퓨터, 모바일 장치, 사물 인터넷(Internet-of-Things; IOT) 장치, 이들의 조합 및/또는 이와 유사한 것에 있는 하나 이상의 마더 보드들 상의 하나 이상의 CPU들을 포함할 수 있다.
스토리지 장치(126)는 자기 매체, 플래시 메모리 장치들, 영구 메모리 장치들, 이들의 조합 및/또는 등과 같은 것을 포함하는 임의의 저장 매체를 기반으로 하는, 3.5 인치, 2.5 인치, M.2, U.2, NGSFF(Next Generation Small Form Factor), 이들의 조합 및/또는 이와 유사한 것을 포함하는 임의의 폼 팩터의, 그리고 임의의 인터페이스 매체, 장치, 프로토콜들, 이들의 조합 및/또는 이와 유사한 것을 사용하는 하드 디스크 드라이브(hard disk drive; HDD)들, 솔리드 스테이트 드라이브(SSD)들, 하이브리드 드라이브들, 이들의 조합 및/또는 이와 유사한 것으로 구현될 수 있다.
도 3은 본 개시에 따라 암호화 오프로드 엔진의 예시적인 실시 예를 도시한다. 도 3에 도시된 실시 예에서, 암호화 오프로드 엔진(130)은 암호화 오프로드 엔진(130)을 호스트 및/또는 스토리지 장치 등과 같은 다른 구성 요소들로 상호 연결 패브릭을 통해 결합하도록 구성된 인터페이스(132)를 포함할 수 있다. 인터페이스 (132)는 암호화 오프로드 엔진(130) 및 하나 이상의 다른 구성 요소들 사이의 피어-투-피어 연결들 및/또는 통신을 상호 연결 패브릭을 통해 구현하는 것이 가능할 수 있다. 암호화 오프로드 엔진(130)은 또한 인터페이스(132)로 결합될 수 있고 그리고 암호화 프로세서(136)를 포함할 수 있는 컨트롤러(134)를 포함할 수 있다. 컨트롤러(134)는 데이터를 호스트로부터 인터페이스(132)를 통해 수신하고, 호스트로부터 수신된 데이터를 암호화 프로세서(136)를 사용하여 암호화하고, 그리고 암호화된 데이터를 인터페이스(132)를 통해 스토리지 장치로 전송하도록 구성될 수 있다. 컨트롤러(134)는 또한 암호화된 데이터를 스토리지 장치로부터 인터페이스(132)를 통해 수신하고, 스토리지 장치로부터 수신된 데이터를 암호화 프로세서(136)를 사용하여 복호화하고, 그리고 복호화된 데이터를 호스트로 인터페이스(132)를 통해 전송하도록 구성될 수 있다.
몇몇 실시들 예에서, 컨트롤러(134)는 또한, 예를 들어, 호스트 내에서 암호화되지 않은 (일반 텍스트) 데이터에 대한 소스(source) 및/또는 목적지 위치를 결정하기 위해 사용될 수 있는 맵핑 테이블(138)을 포함할 수 있다.
암호화 오프로드 엔진(130)에서의 암호화 동작은 본 개시의 원리들에 따라 다양한 방식들로 시작될 수 있다. 예를 들어, 몇몇 실시 예들에서, 암호화 동작은 스토리지 장치가 암호화 오프로드 엔진(130)으로부터 저장 장치로의 피어-투-피어-데이터 전송을 암호화 오프로드 엔진(130)으로 피어-투-피어 요청을 전송함으로써 시작할 때 시작될 수 있다. (스토리지 장치로부터의 피어-투-피어 요청은, 예를 들어, 호스트로부터 수신된 명령에 의해 프롬프트(prompt)되었을 수 있다.) 스토리지 장치로부터 데이터 전송 요청을 수신하면, 암호화 오프로드 엔진(130) 내 컨트롤러(134)는 스토리지 장치로부터 수신되었을 수 있는 소스 정보 및/또는 맵핑 테이블(138)의 정보를 암호화되지 않은 데이터를 호스트의 데이터 소스 주소로부터 요청하기 위해 사용할 수 있다. 호스트로부터 암호화되지 않은 데이터를 수신하면, 컨트롤러(134)는 암호화 프로세서(136)를 사용하여 호스트로부터 수신된 데이터를 암호화하고, 암호화된 데이터를 스토리지 장치로 인터페이스(132)를 통해 전송하며, 이에 따라 스토리지 장치에 의해 요청된 피어 투 피어 전송을 완료할 수 있다.
몇몇 다른 실시 예들에서, 암호화 오프로드 엔진(130)에서의 암호화 동작은 암호화 오프로드 엔진(130)에 명령을 전송하여 암호화 오프로드 엔진(130)으로 하여금 호스트로부터의 데이터를 암호화하고 그리고 암호화된 데이터를 스토리지 장치로 전송하도록 지시하는 호스트에 의해 직접적으로 시작될 수 있다. 이러한 실시 예에서, 암호화 오프로드 엔진(130)으로부터 스토리지 장치로의 암호화된 데이터의 피어-투-피어 전송은 암호화 오프로드 엔진(130)에 의해 시작될 수 있다.
유사하게, 암호화 오프로드 엔진(130)에서의 복호화 동작은 본 개시의 원리들에 따라 다양한 방식들로 시작될 수 있다. 예를 들어, 몇몇 실시 예들에서, 복호화 동작은 스토리지 장치가 암호화된 데이터를 암호화 오프로드 엔진(130)으로 전송함으로써 피어-투-피어 데이터 전송을 시작할 때 시작될 수 있다. (스토리지 장치로부터의 피어-투-피어 전송은, 예를 들어, 호스트로부터 수신된 명령에 의해 프롬프트될 수 있다.) 스토리지 장치로부터 암호화된 데이터를 수신하면, 암호화 오프로드 엔진(130) 내 컨트롤러(134)는 데이터를 복호화하기 위해 암호화 프로세서(136)를 사용할 수 있다. 컨트롤러(134)는 그 다음 복호화된 데이터를 호스트의 목적지 위치로 전송하기 위해 스토리지 장치로부터 수신되었을 수 있는 목적지 정보 및/또는 맵핑 테이블(138)에 포함된 정보를 사용하여 복호화된 데이터를 호스트로 전송할 수 있다.
몇몇 다른 실시 예들에서, 암호화 오프로드 엔진(130)에서의 복호화 동작은 특정한 스토리지 장치로 암호화된 데이터를 요청하고, 암호화된 데이터를 복호화하고, 그리고 복호화된 데이터를 호스트로 전송하도록 암호화 오프로드 엔진(130을 지시하는 명령을 암호화 오프로드 엔진(130)으로 전송할 수 있는 호스트에 의해 직접 시작될 수 있다. 이러한 실시 예에서, 스토리지 장치에서 암호화 오프로드 엔진(130)으로 암호화된 데이터의 피어-투-피어 전송은 암호화 오프로드 엔진(130)에 의해 시작될 수 있다.
몇몇 실시 예들에서, 암호화/복호화 동작의 정확성 및/또는 무결성을 확인하는 것이 목적일 수 있기 때문에, 암호화 오프로드 엔진(130)은 검증 동작에 참여하지 않을 수 있다. 그러나, 검증 동작을 용이하게 하기 위해, 호스트는 암호화 오프로드 엔진(130)으로부터 암호화 키 또는 키들의 사본을 요청할 수 있다.
컨트롤러(134)는 또한 하나 이상의 인증 프로세스들을 구현할 수 있다. 예를 들어, 컨트롤러(134)는 호스트 또는 호스트들에 의한 인증 키의 입력을 암호화 오프로드 엔진(130)이 재시작되거나, 초기화되거나, 재구성 및/또는 이와 유사한 것이 될 때마다 요구할 수 있다. 구현 세부 사항들에 따라, 인증 키는 호스트를 통해 사용자에 의해 수동으로 암호화 오프로드 엔진(130)에 입력될 수 있고, 또는 호스트 상 BIOS(basic input/output system) 또는 운영 체제에 의해, 예를 들어 부팅 프로세스 동안, 자동으로 입력될 수 있다.
도 2에 도시된 암호화 오프로드 엔진(122)의 실시 예에서와 같이, 도 3에 도시된 실시 예는 하드웨어, 소프트웨어, 펌웨어 및/또는 이들의 임의의 조합으로 구현될 수 있다. 이는 임의의 상호 연결 매체들, 장치들, 프로토콜들, 이들의 조합 및/또는 등에 대해 하나 이상의 인터페이스들을 사용할 수 있다. 이는 별도의 구성 요소로서 또는 하나 이상의 다른 구성 요소들로 통합되는 임의의 폼 팩터로 실현될 수 있다. 이는 임의의 암호화/복호화 기술들 및/또는 알고리즘들, 이들의 조합들 및/또는 이와 유사한 것을 이용할 수 있다. 인터페이스(132)는 동일하거나 상이한 상호 연결 패브릭을 위한 임의의 수의 포트들을 포함할 수 있다.
도 4는 본 개시에 따라 암호화된 데이터 스토리지를 제공하기 위한 시스템의 예시적인 실시 예를 도시한다. 설명의 목적으로, 도 4에 도시된 실시 예는 PCIe 상호 접속 패브릭 위에(에 더해) NVMe 프로토콜을 구현할 수 있는 시스템의 맥락에서 설명될 수 있다. 그러나, 본 개시의 발명 원리는 이러한 구현 세부 사항들에 제한되지 않는다.
도 4에 도시된 시스템은 PCIe 루트 컴플렉스(164)에 결합되거나 통합될 수있는 CPU(162)를 갖는 호스트(160)를 포함할 수 있다. 시스템 메모리(166)는 CPU(162)에, 예를 들어, 루트 컴플렉스(164)를 통해 결합될 수 있다. PCIe 스위치(168)는 루트 컴플렉스(164)와 통합되거나, 또는 PCIe 링크(165)를 통해 루트 컴플렉스(164)에 결합될 수 있다. PCIe 스위치(168)는 임의의 수의 SSD들(170)을 PCIe 링크 (167)를 통해 루트 컴플렉스 (164)로 결합하도록 배열될 수 있다. PCIe 스위치(168) 및 이에 대한 임의의 PCIe 상호 연결들 또는 링크들은 PCIe 패브릭(169)으로 묶어 지칭될 수 있다. PCIe 루트 컴플렉스(164)는, 예를 들어, 하나 이상의 호스트 구성 요소들을 PCIe 스위치 패브릭(169)으로 인터페이스할 수 있는 장치로서 구현될 수 있다. PCIe 루트 컴플렉스(164)는 예를 들어, P2P 트랜잭션들(transactions)을 통해, PCIe 스위치 패브릭(169)에 부착된 다른 구성 요소들 사이뿐만 아니라 호스트 및 PCIe 스위치 패브릭(169)에 부착된 다른 구성 요소들 사이의 트랜잭션들을 생성 및/또는 감독할 수 있다. 시스템은 또한 PCIe 링크(173)를 통해 PCIe 스위치 (168)에 결합된 암호화 오프로드 엔진(172)을 포함할 수 있다. 암호화 오프로드 엔진(172)은 예를 들어, 도 1 및 도 2 등에 도시된 것을 포함하여 본 개시에서 설명된 임의의 실시 예들을 사용하여 구현될 수 있다. 도 4에 도시된 시스템의 구성 요소들은 호스트(160), 암호화 오프로드 엔진(172), 및/또는 SSD들(170) 사이의 고속 데이터 전송을 PCIe 패브릭(참고: 일반적인 용어로 PCIe fabric을 사용한 것 같습니다)을 통해 가능하게 하는 NVMe 프로토콜을 구현할 수 있다. PCIe 링크들(173) 중 임의의 것은 다양한 구성 요소들 사이의 서로 다른 양의 데이터 트래픽을 수용하고, 그리고 다양한 구성 요소들의 요구 사항들에 기반하여 확장성(scalability)을 제공하기 위해, 임의의 수의 레인들로 구현될 수 있다. 시스템은 또한 시스템에 더 많은 스토리지 용량이 추가될 수 있으므로, 추가 데이터 트래픽 및/또는 암호화/복호화 워크로드를 수용하기 위해, 하나 이상의 추가적인 암호화 오프로드 엔진을 포함할 수 있다.
도 5는 본 개시에 따라 호스트 시스템의 예시적인 실시 예를 도시한다. 도 5에 도시된 실시 예는, 예를 들어, 도 4에 도시된 호스트(160)를 구현하기 위해 사용될 수 있다.
도 5를 참조하면, 호스트(180)는 CPU(182) 및 PCIe 루트 컴플렉스(184)를 포함할 수 있다. 호스트(180)는 또한 하나 이상의 스토리지 장치들에 쓰여질 데이터를 보유하기 위해 쓰기 버퍼들에 할당 된 영역(188) 및 스토리지 장치들로부터 읽힌 데이터를 보유하기 위해 읽기 버퍼들에 할당된 영역 (190)을 포함할 수 있는 시스템 메모리를 포함할 수 있다. 시스템 메모리는 또한, 예를 들어, 스토리지 장치들 및/또는 암호화 오프로드 엔진들과의 NVMe 트랜잭션들을 용이하게 하기 위해 사용될 수 있는 SQ(서브미션 큐; 194) 및 컴플리션(완료, completion) 큐(196) 등과 같은 큐들에 할당된 다른 영역(192)을 포함할 수 있다. 루트 콤플렉스(184)는 호스트(180)를 임의의 PCIe 장치들에 인터페이스하도록 구성될 수 있는 임의의 개수의 PCIe 링크들(198)을 포함할 수 있다. 만약 호스트(180)가 도 4에 도시된 호스트(160)를 구현하는 데 사용되는 경우, PCIe 링크(165)는 루트 컴플렉스(184)를 PCIe 스위치(168)에 연결하기 위해 포함될 수 있다. 몇몇 다른 실시 예들에서, PCIe 스위치(168)는 루트 콤플렉스(184)에 통합될 수 있고, 그리고 암호화 오프로드 엔진 및 하나 이상의 스토리지 장치들 등과 같은 다른 구성 요소들은 PCIe 링크(198)를 통해 루트 콤플렉스(184)에 직접 연결될 수 있다.
도 6은 본 개시에 따라 암호화된 데이터를 스토리지 장치에 저장하기 위한 방법의 일 실시 예를 도시한다. 도 6의 실시 예는, 예를 들어, 도 4에 도시l된 시스템의 맥락에서 설명될 수 있으며, 여기서 호스트(160)는 도 5에 도시된 호스트(180)로 구현될 수 있고, 그리고 암호화 오프로드 엔진 (172) 도 3에 도시된 암호화 오프로드 엔진(130)으로 구현될 수 있다. 그러나, 도 6에 도시된 실시 예의 발명 원리는 이들 또는 임의의 다른 구현 세부 사항들에 제한되지 않는다.
도 6을 참조하면, 방법은 호스트(180)가 쓰기 커맨드(193)를 서브미션 큐(194)에 위치시킬 수 있는 요소(200)에서 시작할 수 있다. 쓰기 커맨드(193)는 SSD(170)에 쓰일 데이터에 대한 소스 어드레스(195)를 포함할 수 있다. 소스 어드레스는(195), 예를 들어, PRP(Physical Region Page), SGL(Scatter Gather List) 또는 다른 유형의 형태일 수 있다. 요소(202)에서, SSD(170)는 서브미션 큐(194)로부터 소스 어드레스(195)를 포함하는 쓰기 커맨드(193)를 읽을 수 있다. 그러나, 소스 어드레스(195)를 쓰기 버퍼(188)의 위치에 맵핑하기 보다는, 호스트(180)는 소스 어드레스(195)를 암호화 오프로드 엔진(130)으로 맵핑할 수 있다. 따라서, 요소(204)에서, SSD(170)는 암호화 오프로드 엔진(130)으로부터 SSD(170)로의 피어-투-피어 전송을 PCIe 패브릭(169)을 통해 시작할 수 있다. 요소(206)에서, 암호화 오프로드 엔진(130)은 호스트(180)의 쓰기 버퍼(188) 내 맵핑된 위치로부터 데이터를 페치(fetch)하기 위해 매핑 테이블(138)을 사용할 수 있다. 요소(208)에서, 암호화 오프로드 엔진(130)은 호스트(180)로부터의 데이터를 암호화하기 위해 암호화 프로세서(136)를 사용할 수 있다. 요소(210)에서, 암호화 오프로드 엔진(130)은 암호화된 데이터를 SSD(170)로 전송하여, 피어-투-피어 트랜잭션을 완료할 수 있다. 요소(212)에서, SSD(170)는 암호화된 데이터를 그것의 저장 매체에 기록할 수 있다. 요소(214)에서, SSD (170)는 컴플리션 큐(196)에 컴플리션(완료) 메시지를 위치시켜, 쓰기 동작의 완료를 시그널링(signaling)할 수 있다.
도 7은 본 개시에 따라 암호화된 데이터를 스토리지 장치로부터 읽기 위한 방법의 일 실시 예를 도시한다. 도 7의 실시예는, 예를 들어, 도 4에 도시된 시스템의 맥락에서 설명될 수 있으며, 여기서 호스트(160)는 도 5에 도시된 호스트(180)로 구현될 수 있고, 그리고 암호화 오프로드 엔진(172)은 도 3에 도시된 암호화 오프로드 엔진(130)으로 구현될 수 있다. 그러나, 도 7에 도시된 실시 예의 발명 원리는 이들 또는 임의의 다른 구현 세부 사항들에 제한되지 않는다.
도 7을 참조하면, 방법은 호스트(180)가 읽기 커맨드(197)를 서브미션 큐(194)에 위치시킬 수 있는 요소(220)에서 시작할 수 있다. 읽기 커맨드(197)는 SSD(170)로부터 읽힐 데이터에 대한 목적지 어드레스(199)를 포함할 수 있다. 목적지 어드레스는, 예를 들어, PRP, SGL, 또는 임의의 다른 형태의 유형일 수 있다. 요소(222)에서, SSD(170)는 목적지 어드레스(199)를 포함하는 읽기 커맨드(197)를 서브미션 큐(194)로부터 읽을 수 있다. 요소(224)에서, SSD(170)는 그것의 저장 매체로부터 암호화된 데이터를 읽을 수 있다. 그러나, 목적지 어드레스(199)를 읽기 버퍼(190) 내의 위치에 맵핑하는 대신, 호스트(180)는 목적지 어드레스(199)를 암호화 오프로드 엔진(130)에 맵핑할 수 있다. 따라서, 요소(226)에서, SSD(170)는 암호화된 데이터를 PCIe 패브릭(169)을 통해 암호화 오프로드 엔진(130)으로 전송하는 피어-투-피어 전송을 시작할 수 있다. 요소(228)에서, 암호화 오프로드 엔진(130)은 암호화 프로세서(136)를 사용하여 SSD(170)로부터의 암호화된 데이터를 복호화하여, 피어-투-피어 트랜잭션을 완료할 수 있다. 요소(230)에서, 암호화 오프로드 엔진(130)은 복호화된 데이터를 호스트(180)의 읽기 버퍼(190)의 매핑된 위치로 전송하기 위해 맵핑 테이블(138)을 사용할 수 있다. 요소(232)에서, 암호화 오프로드 엔진(130)은 컴플리션 메시지를 컴플리션 큐(196)에 위치시켜서, 읽기 동작의 완료를 시그널링할 수 있다.
도 8은 본 개시에 따라 스토리지 장치에 저장된 데이터의 암호화를 검증하기 위한 방법의 일 실시 예를 도시한다. 도 8의 실시 예는, 예를 들어, 도 4에 도시된 시스템의 맥락에서 설명될 수 있으며, 여기서 호스트(160)는 도 5에 도시된 호스트(180)로 구현 될 수 있고, 그리고 암호화 오프로드 엔진(172)은 도 3에 도시된 암호화 오프로드 엔진(130)으로 구현될 수 있다. 그러나, 도 8에 도시된 실시 예의 발명 원리는 이들 또는 임의의 다른 구현 세부 사항들로 제한되지 않는다.
도 8을 참조하면, 방법은 호스트(180)가 읽기 커맨드(197)를 서브미션 큐(194)에 위치시킬 수 있는 요소(234)에서 시작될 수 있다. 읽기 커맨드(197)는 SSD(170)로 읽힐 데이터에 대한 목적지 어드레스(199)를 포함할 수 있다. 목적지 어드레스(199)는, 예를 들어 PRP, SGL, 또는 임의의 다른 유형의 형태일 수 있다. 요소(236)에서, SSD(170)는 목적지 어드레스(199)를 포함하는 읽기 커맨드(197)를 서브미션 큐(194)로부터 읽을 수 있다. 요소(238)에서, SSD(170)는 암호화된 데이터를 그것의 저장 매체로부터 읽을 수 있다.
그러나, 검증 동작 동안, 호스트(180)는 목적지 어드레스(199)를 호스트(180)의 읽기 버퍼(190) 내의 위치에 직접 맵핑할 수 있고, 이에 따라 암호화 오프로드 엔진(130)의 맵핑 테이블(138)을 우회할 수 있다. 따라서, 요소(240)에서, SSD(170)는 암호화된 (암호문) 데이터를 PCIe 패브릭(169)을 통해 호스트(180)로 직접 전송할 수 있다. 요소(242)에서, 호스트(180)는 SSD(170)에 암호화된 형태로 저장된 데이터가 올바르게 암호화되었는지 검증하기 위해, 그것만(자기 자체)의 복호화 연산들을 수행할 수 있다.
몇몇 실시 예들에서, 호스트(180)는 그것만의 복호화 계산들을 호스트(180)에서 유지되는 암호화 키 또는 키들의 사본을 사용하여 검증 목적으로 수행할 수 있다. 몇몇 다른 실시 예들에서, 호스트(180)는 암호화 키 또는 키들의 사본을 암호화 오프로드 엔진(130)으로부터 요청할 수 있다. 몇몇 실시 예들에서, 암호화 키들은 암호화 오프로드 엔진(130), 호스트(180), 다른 구성 요소들, 또는 그들의 조합에서, 임의의 기존 또는 커스텀된(customized) 키 관리 기술들을 사용하여 관리될 수 있다.
몇몇 실시 예들에서, 매핑 테이블(138)은 호스트(180)에 의해 제공된 매핑 정보에 기초하여 암호화 오프로드 엔진(130)에 의해 유지될 수 있다. 예를 들어, 재시작 동작 동안, 호스트(180)에 의해 제공되는 업데이트된 매핑 정보에 기초하여 주기적으로 업데이트 될 수 있는 초기 매핑 테이블 (138)을 구축하기 위해, 호스트(180)는 암호화 오프로드 엔진(130)을 인에이블(활성화)하게 하기 위해 매핑 정보를 제공할 수 있다.
몇몇 실시 예들에서, 데이터는 블록 및/또는 섹터 레벨에서 암호화 및/또는 복호화, 저장 장치로(및 로부터) 전송 및/또는 검증될 수 있다. 이러한 동작들은, 예를 들어, 암호화를 인식하지 못할 수 있는 사용자, 애플리케이션, 파일 시스템, 이와 유사한 것 및/또는 이들의 조합에 투명하게 동작할 수 있는 디바이스 드라이버에 의해 수행 및/또는 감독될 수 있다. 몇몇 다른 실시 예에서, 데이터는 파일 수준, 객체 수준(예를 들어, 키/값 저장소를 사용하여), 이들의 조합 및/또는 등에서, 암호화 및/또는 복호화되고, 저장 장치로(및 로부터) 전송되고, 및/또는 검증될 수 있다.
몇몇 실시 예들에서, 암호화 오프로드 엔진은 호스트 및/또는 스토리지 장치와 독립적으로 동작할 수 있고 그리고 일반 텍스트 사용자 데이터의 암호화된 섀도우(shadow)를 유지하기 위해 어드레스 변환을 관리할 수 있다.
상술된 바와 같이, 그리고 구현 세부 사항들에 따라, 본 개시에 따른 다양한 실시 예들은 하나 이상의 스토리지 장치들에 암호화된 형태로 데이터를 저장하기 위한 신뢰할 수 있고, 유연하고, 확장 가능하고, 및/또는 신용할 수 있는 솔루션을 제공할 수 있다.
도 9는 본 개시에 따라 암호화 오프로드 엔진을 위한 컨트롤러를 구현하는 데 사용될 수 있는 장치의 일 실시 예를 도시한다. 예를 들어, 도 9에 도시된 장치 (300)는 도 3에 도시된 컨트롤러(134)를 구현하는 데 사용될 수 있다. 장치(300)는 CPU(302), 메모리(304), 스토리지(306), 암호화 프로세서(307), 관리 인터페이스(308), 및 상호 연결 인터페이스(310)를 포함할 수 있다. 예로서, 몇몇 실시 예들에서, 암호화 오프로드 엔진의 모든 기능들은 스토리지(306)에 저장된 소프트웨어를 사용하여 전적으로 CPU(302)에 의해, 암호화 프로세서(307)에 의해 제공될 수 있는 하드웨어 가속을 사용하지 않고 구현될 수 있다. 몇몇 다른 실시 예들에서, 암호화 및/또는 복호화는 암호화 프로세서(307)에 의해 주로 또는 전적으로 수행될 수 있다. 매핑 테이블은 동작 중 단기 사용을 위해 메모리(304)에 저장되고 그리고 전원 주기에 걸쳐 매핑 테이블의 손실을 방지하기 위해 스토리지(306)에 저장될 수 있다. 다른 실시 예들에서, 이들 구성 요소 중 임의의 것은 생략될 수 있거나, 또는 임의의 다른 유형의 구성 요소뿐만 아니라 임의의 구성 요소들로, 임의의 추가 개수로 또는 중복으로 포함될 수 있다.
CPU(302)는 임의의 수의 코어, 캐시, 버스 및/또는 상호 연결 인터페이스들 및/또는 컨트롤러를 포함할 수 있다. 메모리(304)는 동적 및/또는 정적 RAM, 불휘발성 메모리(예를 들어, 플래시 메모리)의 조합들 등과 같은 임의의 배열을 포함할 수있다. 스토리지(306)는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브 (SSD), 및/또는 임의의 다른 유형의 데이터 스토리지 장치들 및/또는 이들의 임의의 조합들을 포함할 수 있다. 관리 인터페이스(308)는 스위치, 키패드, 디스플레이, 커넥터, 이들의 조합들 등과 같은 임의의 유형의 장치를 포함할 수 있으며, 이는 사용자로 하여금 인증 코드를 입력 또는 변경하고, 펌웨어를 업데이트하고, 이벤트 로그를 검토하고, 및/또는 암호화 오프로드 엔진의 작동을 모니터링하고 및/또는 무결성과 신뢰성을 검증하는 데 도움이 될 수 있는 임의의 또 다른 기능들을 수행할 수 있다. 시스템(300)의 구성 요소들 중 일부 또는 전부는, 구성 요소들이 한 위치에서 로컬로 작동하거나 및/또는 다른 위치에 분산되어 함께 작동할 수 있도록 하는 SATA(Serial AT Attachment), PCI(Peripheral Component Interconnect), PCIe(Peripheral Component Interconnect Express), SMB(System Management Bus) 또는 다른 임의의 유형들의 인터페이스들 등과 같이 전원 버스들, 어드레스 및 데이터 버스들, 고속 상호 연결을 포함한 다양한 인터페이스들을 총칭할 수 있는 시스템 버스(301)를 통해 상호 연결될 수 있다. 시스템(300)은 또한 시스템(300)의 다양한 구성 요소들이 함께 작동하여 본 개시에 따른 암호화 오프로드 엔진의 특징 및/또는 기능 중 일부 또는 전부를 구현할 수 있도록 하는 다양한 칩셋들, 인터페이스들, 어댑터들, 글루(glue) 로직들, 프로그램 가능 또는 비-프로그램 가능 논리 장치들 또는 어레이들, 주문형 집적 회로들(application specific integrated circuits; ASIC), 시스템 온 칩들(SOC) 등과 같은 임베디드 컨트롤러를 포함할 수 있다.
본 명세서에 개시된 실시 예들은 다양한 구현 세부 사항들의 맥락에서 설명될 수 있지만, 본 개시의 원리는 이들 또는 임의의 다른 특정 세부 사항들로 제한되지 않는다. 예를 들어, 일부 기능은 특정 구성 요소들에 의해 구현되는 것으로 설명되었으나, 다른 실시 예들에서, 기능은 서로 다른 위치에 있고 다양한 사용자 인터페이스들을 갖는 서로 다른 시스템들 및 구성 요소들 사이에 분산될 수 있다. 특정 실시 예들은 특정 프로세스들, 단계들, 이들의 조합들 등을 갖는 것으로 설명되었으나, 이러한 용어는 특정 프로세스, 단계, 이들의 조합 등이 다수의 프로세스들, 단계들, 그들의 조합 등으로 구현되거나, 또는 다수의 프로세스들, 단계들, 그들의 조합 등이 단일 프로세스, 단계, 이들의 조합 등으로 통합될 수 있는 실시 예들을 포함할 수도 있다. 구성 요소 또는 요소에 대한 참조는 구성 요소 또는 요소의 일부만 참조할 수 있다. 본 개시 및 청구 범위에서 '제 1' 및 '제 2' 등과 같은 용어들의 사용은 그들이 수식하는 것을 구별하기 위한 목적일 뿐이며, 문맥으로부터 달리 명백하지 않는 한 어떤 공간적 또는 시간적 순서를 나타내지 않을 수 있다. 첫 번째 것에 대한 언급은 두 번째 것의 존재를 의미하지 않을 수 있다.
상술된 다양한 세부 사항들 및 실시 예들은 본 특허 개시의 원리에 따라 추가 실시 예들을 생성하기 위해 결합될 수 있다. 본 특허 개시의 발명 원리들은 본 발명의 개념을 벗어나지 않고 배열에서 및 세부적으로 수정될 수 있으므로, 이러한 변경 및 수정은 다음의 청구항들의 범위 내에 있는 것으로 간주된다.
130: 암호화 오프로드 엔진 170: SSD
180: 호스트 300: 시스템

Claims (20)

  1. 데이터를 호스트로부터 암호화 오프로드 엔진으로 상호 연결 패브릭을 통해 전송하는 단계;
    상기 호스트로부터의 데이터를 상기 암호화 오프로드 엔진에서 암호화하는 단계; 및
    상기 암호화된 데이터를 상기 암호화 오프로드 엔진으로부터 스토리지 장치로 상기 상호 연결 패브릭의 피어-투-피어(peer-to-peer) 연결을 통해 전송하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 암호화된 데이터를 상기 스토리지 장치로부터 상기 암호화 오프로드 엔진으로 상기 상호 연결 패브릭의 피어-투-피어 연결을 통해 전송하는 단계;
    상기 스토리지 장치로부터의 상기 암호화된 데이터를 상기 암호화 오프로드 엔진에서 복호화하는 단계; 및
    상기 복호화된 데이터를 상기 호스트로 상기 상호 연결 패브릭을 통해 전송하는 단계를 더 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 암호화된 데이터를 상기 스토리지 장치로부터 상기 호스트로 전송하는 단계; 및
    상기 암호화된 데이터의 상기 암호화를 상기 호스트에서 검증하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 호스트로부터의 상기 데이터는 소스 어드레스를 포함하고; 그리고
    상기 소스 어드레스를 상기 암호화 오프로드 엔진에 매핑하는 단계를 더 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 스토리지 장치는 상기 호스트로부터의 쓰기 커맨드에 응답하여, 상기 암호화 오프로드 엔진에서 상기 저장 장치로의 피어-투-피어 전송을 시작하고, 그리고
    상기 암호화 오프로드 엔진은 상기 데이터를 상기 호스트로부터 매핑 테이블을 사용하여 페치하는 방법.
  6. 제 2 항에 있어서,
    상기 호스트로 전송될 상기 데이터는 목적지 어드레스를 포함하고; 그리고
    상기 목적지 어드레스를 상기 암호화 오프로드 엔진으로 맵핑하는 단계를 더 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 스토리지 장치는 상기 호스트로부터의 읽기 커맨드에 응답하여, 상기 암호화 오프로드 엔진에서 상기 저장 장치로의 피어-투-피어 전송을 시작하고, 그리고
    상기 암호화 오프로드 엔진은 복호화된 데이터를 상기 호스트로 매핑 테이블을 사용하여 전송하는 방법.
  8. 호스트;
    암호화 오프로드 엔진; 및
    상기 호스트, 상기 암호화 오프로드 엔진 및 하나 이상의 스토리지 장치들을 상호 연결하도록 배열된 상호 연결 패브릭을 포함하되,
    상기 암호화 오프로드 엔진은:
    데이터를 상기 호스트로부터 수신하고;
    상기 호스트로부터 수신된 상기 데이터를 암호화하고; 그리고
    상기 암호화된 데이터를 상기 스토리지 장치들 중 적어도 하나로 상기 상호 연결 패브릭의 피어-투-피어 연결을 통해 전송하는 시스템.
  9. 제 8 항에 있어서, 상기 호스트는:
    상기 암호화된 데이터를 상기 적어도 하나의 스토리지 장치로부터 읽고; 그리고
    상기 암호화된 데이터의 암호화를 검증하는 시스템.
  10. 제 9 항에 있어서, 상기 호스트는 상기 암호화된 데이터를 상기 적어도 하나의 스토리지 장치로부터 상기 암호화 오프로드 엔진 내 매핑 테이블을 우회함으로써 읽는 시스템.
  11. 제 8 항에 있어서,
    상기 호스트로부터의 쓰기 커맨드를 유지하는 서브미션 큐를 더 포함하고; 그리고
    상기 쓰기 커맨드는 데이터가 상기 적어도 하나의 스토리지 장치에 쓰이기 위한 소스 어드레스를 포함하는 시스템.
  12. 제 11 항에 있어서, 상기 호스트는 상기 소스 어드레스를 상기 암호화 오프로드 엔진에 매핑하는 시스템.
  13. 제 8 항에 있어서, 상기 암호화 오프로드 엔진은 상기 적어도 하나의 저장 장치와의 피어-투-피어 전송을 위한 데이터를 상기 호스트 내 어드레스로 매핑하기 위해 매핑 테이블을 유지하는 시스템.
  14. 제 13 항에 있어서, 상기 피어-투-피어 전송은 상기 호스트로부터의 상기 쓰기 커맨드와 연관되는 시스템.
  15. 제 14 항에 있어서,
    상기 적어도 하나의 저장 스토리지는 호스트로부터의 쓰기 명령에 응답하여, 상기 암호화 오프로드 엔진으로부터 피어-투-피어 전송을 시작하도록 구성되고; 그리고
    상기 암호화 오프로드 엔진은 상기 호스트로부터 상기 데이터를 수신하고, 상기 호스트로부터 수신된 상기 데이터를 암호화하고, 그리고 상기 암호화된 데이터를 상기 피어-투-피어 전송을 시작한 상기 적어도 하나의 저장 장치로 전송하는 시스템.
  16. 제 8 항에 있어서, 상기 암호화 오프로드 엔진은:
    암호화된 데이터를 상기 스토리지 장치들 중 적어도 하나로부터 상기 상호연결 패브릭 내 상기 피어-투-피어 연결을 통해 수신하고;
    상기 적어도 하나의 스토리지 장치로부터 수신된 상기 암호화된 데이터를 복호화하고; 그리고
    상기 복호화된 데이터를 상기 호스트로 전송하는 시스템.
  17. 제 16 항에 있어서,
    상기 호스트로부터의 읽기 커맨드를 유지하는 서브미션 큐를 더 포함하고; 그리고
    상기 읽기 커맨드는 상기 적어도 하나의 스토리지 장치로부터의 상기 복호화된 데이터에 대한 목적지 어드레스를 포함하는 시스템.
  18. 제 17 항에 있어서, 상기 호스트는 상기 목적지 어드레스를 상기 암호화 오프로드 엔진으로 맵핑하는 시스템.
  19. 암호화 장치에 있어서:
    상기 암호화 장치를 피어-투-피어 기능들(capabilities)을 갖는 상호 연결 시스템으로 결합하는 인터페이스; 및
    상기 인터페이스로 결합된 컨트롤러를 포함하되,
    상기 컨트롤러는:
    데이터를 호스트로부터 상기 인터페이스를 통해 수신하고;
    상기 호스트로부터 수신된 상기 데이터를 암호화하고; 그리고
    상기 암호화된 데이터를 스토리지 장치로 상기 인터페이스를 통해 전송하는 암호화 장치.
  20. 제 19 항에 있어서, 상기 컨트롤러는:
    암호화된 데이터를 상기 스토리지 장치로부터 상기 인터페이스를 통해 수신하고;
    상기 스토리지 장치로부터 수신된 데이터를 복호화하고; 그리고
    상기 복호화된 데이터를 상기 호스트로 상기 인터페이스를 통해 전송하는 암호화 장치.
KR1020200173188A 2020-01-29 2020-12-11 암호화를 오프로드하기 위한 장치 및 방법 KR20210097016A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062967571P 2020-01-29 2020-01-29
US62/967,571 2020-01-29
US16/856,003 2020-04-22
US16/856,003 US11526618B2 (en) 2020-01-29 2020-04-22 Methods and apparatus for offloading encryption

Publications (1)

Publication Number Publication Date
KR20210097016A true KR20210097016A (ko) 2021-08-06

Family

ID=76970198

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200173188A KR20210097016A (ko) 2020-01-29 2020-12-11 암호화를 오프로드하기 위한 장치 및 방법

Country Status (4)

Country Link
US (2) US11526618B2 (ko)
KR (1) KR20210097016A (ko)
CN (1) CN113190490A (ko)
TW (1) TW202147136A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022132184A1 (en) * 2020-12-20 2022-06-23 Intel Corporation System, method and apparatus for total storage encryption

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7194627B2 (en) 2003-03-14 2007-03-20 Broadcom Corporation Method and system for data encryption and decryption
US7496695B2 (en) 2005-09-29 2009-02-24 P.A. Semi, Inc. Unified DMA
US8175271B2 (en) * 2007-03-30 2012-05-08 Oracle America, Inc. Method and system for security protocol partitioning and virtualization
KR20090131696A (ko) 2008-06-19 2009-12-30 삼성전자주식회사 암/복호화 장치 및 이를 포함하는 보안 저장 장치
US9195858B2 (en) 2009-08-04 2015-11-24 Seagate Technology Llc Encrypted data storage device
KR101451369B1 (ko) 2011-04-29 2014-10-16 엘에스아이 코포레이션 암호화된 전송 고체 상태 디스크 제어기
US8972733B1 (en) * 2013-03-07 2015-03-03 Facebook, Inc. Techniques to prime a stateful request-and-response communication channel
JP2017512350A (ja) 2014-03-08 2017-05-18 ディアマンティ インコーポレイテッド 集中型ネットワーキング及びストレージのための方法及びシステム
US9304690B2 (en) 2014-05-07 2016-04-05 HGST Netherlands B.V. System and method for peer-to-peer PCIe storage transfers
US9489542B2 (en) 2014-11-12 2016-11-08 Seagate Technology Llc Split-key arrangement in a multi-device storage enclosure
US9298940B1 (en) 2015-01-13 2016-03-29 Centri Technology, Inc. Secure storage for shared documents
US9998978B2 (en) * 2015-04-16 2018-06-12 Visa International Service Association Systems and methods for processing dormant virtual access devices
US20190317802A1 (en) * 2019-06-21 2019-10-17 Intel Corporation Architecture for offload of linked work assignments
US11956348B2 (en) * 2020-10-09 2024-04-09 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for security key management for I/O devices

Also Published As

Publication number Publication date
US11934542B2 (en) 2024-03-19
TW202147136A (zh) 2021-12-16
US20230110633A1 (en) 2023-04-13
US11526618B2 (en) 2022-12-13
CN113190490A (zh) 2021-07-30
US20210232694A1 (en) 2021-07-29

Similar Documents

Publication Publication Date Title
JP4698982B2 (ja) 暗号処理を行うストレージシステム
US11507681B2 (en) Encryption for a distributed filesystem
US10560262B2 (en) Information-processing system, information-processing apparatus, management apparatus, and processing method
KR101379172B1 (ko) 데이터 암호화 방법, 컴퓨터 판독 가능한 매체 및 저장 시스템
TWI620093B (zh) 用於保全電腦大容量儲存資料的方法和裝置
US9032218B2 (en) Key rotation for encrypted storage media using a mirrored volume revive operation
US8285747B1 (en) Incorporation of client storage into a storage system
US9652182B2 (en) Shareable virtual non-volatile storage device for a server
US11151063B2 (en) Host system directly connected to internal switching fabric of storage system
KR20170103627A (ko) 개인 디바이스 및 클라우드 데이터의 분산된 보안 백업
US8719923B1 (en) Method and system for managing security operations of a storage server using an authenticated storage module
US11500549B2 (en) Secure host access to storage system resources via storage system interface and internal switching fabric
US10698613B1 (en) Host processing of I/O operations
US10698844B1 (en) Intelligent external storage system interface
US11636223B2 (en) Data encryption for directly connected host
US11288196B2 (en) Efficient data read operation
US10740259B1 (en) Host mapping logical storage devices to physical storage devices
US11520709B2 (en) Memory based encryption using an encryption key based on a physical address
US11934542B2 (en) Methods and apparatus for offloading encryption
CN113449349A (zh) 平台安全机制
KR100676674B1 (ko) 데이터 고속 입출력을 위한 데이터 입출력 가속 장치 및 그운용 방법
US11599279B2 (en) Information processing system and data transfer method
KR102484065B1 (ko) 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
US20240129122A1 (en) Efficient encryption in storage providing data-at-rest encryption and data mirroring
US7984306B1 (en) System and method for reducing processing latency in a security appliance

Legal Events

Date Code Title Description
E902 Notification of reason for refusal