KR20230082807A - 스토리지 장치 및 전자 시스템의 동작 방법 - Google Patents

스토리지 장치 및 전자 시스템의 동작 방법 Download PDF

Info

Publication number
KR20230082807A
KR20230082807A KR1020210170629A KR20210170629A KR20230082807A KR 20230082807 A KR20230082807 A KR 20230082807A KR 1020210170629 A KR1020210170629 A KR 1020210170629A KR 20210170629 A KR20210170629 A KR 20210170629A KR 20230082807 A KR20230082807 A KR 20230082807A
Authority
KR
South Korea
Prior art keywords
token
storage device
host
command
user
Prior art date
Application number
KR1020210170629A
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 삼성전자주식회사
Priority to KR1020210170629A priority Critical patent/KR20230082807A/ko
Priority to US17/898,045 priority patent/US20230179418A1/en
Priority to CN202211484391.XA priority patent/CN116226945A/zh
Publication of KR20230082807A publication Critical patent/KR20230082807A/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/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/79Protecting 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 semiconductor storage media, e.g. directly-addressable memories
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • 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/321Cryptographic 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 a third party or a trusted authority
    • H04L9/3213Cryptographic 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 a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • 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/3226Cryptographic 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 using a predetermined code, e.g. password, passphrase or PIN
    • 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/3226Cryptographic 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 using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • 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/3226Cryptographic 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 using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3231Biological data, e.g. fingerprint, voice or retina
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3242Cryptographic 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 using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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/3247Cryptographic 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 digital signatures
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3268Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
    • 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/3271Cryptographic 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 using challenge-response

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Bioethics (AREA)
  • Human Computer Interaction (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Biomedical Technology (AREA)
  • Storage Device Security (AREA)

Abstract

스토리지 장치는, 데이터를 저장하는 메모리 장치; 및 상기 메모리 장치를 제어하는 컨트롤러에 있어서, 상기 컨트롤러는 호스트로부터 관리자의 공개 키(public key)를 포함하는 인증서를 획득하여 저장하고, 상기 호스트로부터의 요청에 응하여 상기 호스트로 논스(nonce)를 제공하고, 상기 호스트로부터 상기 논스, 사용자 ID(identifier), 허용 커맨드 리스트 및 라이프타임을 포함하는 토큰 요청용 서명을 수신하고, 상기 토큰 요청용 서명을 상기 공개 키로 복호화함으로써 상기 토큰 요청용 서명이 정당한 관리자로부터 생성된 것을 검증하면 상기 사용자 ID에 해당하는 사용자에게 상기 허용 커맨드 리스트에 포함된 커맨드의 실행을 상기 라이프타임 동안 허용하기 위한 토큰 및 상기 토큰에 대응하는 토큰 시크릿 키를 생성하여 상기 호스트로 제공한다.

Description

스토리지 장치 및 전자 시스템의 동작 방법 {STORAGE CONTROLLER AND OPERATION METHOD OF ELECTRONIC SYSTEM}
본 발명은 스토리지 장치, 및 상기 스토리지 시스템을 포함하는 전자 시스템의 동작 방법에 관한 것이다.
메모리 장치를 이용한 스토리지 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 스토리지 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
스토리지 장치는 사용자 데이터를 리드 및 라이트할 수 있는 커맨드뿐만 아니라 다양한 벤더 스페시픽(vendor specific) 커맨드를 지원할 수 있다. 벤더 스페시픽 커맨드를 누구나 사용할 수 있다면 스토리지 장치 내부의 중요 정보들이 노출될 수 있으며, 이는 스토리지 장치와 호스트 시스템의 보안 문제를 야기할 수 있다.
본 발명은 다양한 커맨드 동작을 지원하는 스토리지 장치와 관련되는 구성들 및 동작들을 제공하고자 한다.
본 발명은 스토리지 장치의 보안성 향상을 위해 정당한 권한을 가진 사용자에게만 특정 커맨드의 실행을 허용할 수 있는 스토리지 장치를 제공하고자 한다.
본 발명의 실시 예에 따른 스토리지 장치는, 데이터를 저장하는 메모리 장치; 및 상기 메모리 장치를 제어하는 컨트롤러에 있어서, 상기 컨트롤러는 호스트로부터 관리자의 공개 키(public key)를 포함하는 인증서를 획득하여 저장하고, 상기 호스트로부터의 요청에 응하여 상기 호스트로 논스(nonce)를 제공하고, 상기 호스트로부터 상기 논스, 사용자 ID(identifier), 허용 커맨드 리스트 및 라이프타임을 포함하는 토큰 요청용 서명을 수신하고, 상기 토큰 요청용 서명을 상기 공개 키로 복호화함으로써 상기 토큰 요청용 서명이 정당한 관리자로부터 생성된 것을 검증하면 상기 사용자 ID에 해당하는 사용자에게 상기 허용 커맨드 리스트에 포함된 커맨드의 실행을 상기 라이프타임 동안 허용하기 위한 토큰 및 상기 토큰에 대응하는 토큰 시크릿 키를 생성하여 상기 호스트로 제공한다.
본 발명의 실시 예에 따른 스토리지 장치는, 데이터를 저장하는 메모리 장치; 및 상기 메모리 장치를 제어하는 컨트롤러에 있어서, 상기 컨트롤러는 호스트의 사용자로부터 토큰 및 커맨드를 포함하는 커맨드 메시지 및 외부 인증 코드를 수신하고, 상기 토큰에 대응하는 토큰 시크릿 키를 이용하여 상기 커맨드 메시지를 암호화함으로써 내부 인증 코드를 생성하고, 상기 외부 인증 코드와 내부 인증 코드를 비교함으로써 상기 토큰이 유효한 토큰인지 여부를 확인하고, 상기 토큰이 유효한 토큰인 경우 상기 토큰이 상기 사용자에게 부여된 토큰인지 여부 및 상기 토큰이 상기 커맨드의 실행을 허용하기 위한 토큰인지 여부를 확인한 결과에 따라 상기 커맨드를 실행한다.
본 발명의 실시 예에 따르면, 호스트 및 스토리지 장치를 포함하는 전자 시스템의 동작 방법은, 상기 호스트가 관리자의 개인 키(private key)를 이용하여, 특정 사용자에게 특정 커맨드의 실행을 허용하기 위한 토큰 요청용 서명을 생성하고, 상기 토큰 요청용 서명을 상기 스토리지 장치로 제공하는 단계; 상기 스토리지 장치가 상기 개인 키와 쌍을 이루는 공개 키(public key)를 이용하여 상기 토큰 요청용 서명을 검증하는 단계; 상기 스토리지 장치가 토큰 및 토큰 시크릿 키를 생성하여 상기 스토리지 장치에 저장하고, 상기 토큰 및 토큰 시크릿 키를 상기 호스트로 제공하는 단계; 상기 호스트가 사용자에 의해 요청되는 커맨드와 토큰을 포함하는 커맨드 메시지, 및 상기 커맨드 메시지를 상기 호스트로 제공된 토큰 시크릿 키를 이용하여 암호화한 외부 인증 코드를 상기 스토리지 장치로 제공하는 단계; 상기 스토리지 장치가 내부에 저장된 토큰 시크릿 키를 이용하여 상기 커맨드 메시지를 암호화한 내부 인증 코드를 생성하고, 상기 내부 인증 코드와 외부 인증 코드를 비교함으로써 상기 토큰이 유효한 토큰인지 여부를 확인하는 단계; 및 상기 토큰이 유효한 토큰인 경우, 상기 스토리지 장치가 상기 토큰이 상기 사용자에게 부여된 토큰인지 여부 및 상기 커맨드의 실행을 허용하기 위한 토큰인지 여부를 확인한 결과에 따라 상기 커맨드를 실행하는 단계를 포함한다.
본 발명은 다양한 커맨드 동작을 지원하는 스토리지 장치와 관련되는 구성들 및 동작들을 제공하고자 한다.
본 발명의 실시 예에 따르면, 스토리지 장치는 토큰 기반의 인증을 통해 정당한 권한을 가진 사용자에게만 특정 커맨드의 실행을 허용할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치는 유효하게 발급된 토큰과 함께 커맨드 실행이 요청되더라도, 상기 토큰의 라이프타임이 만료되거나 호스트의 관리자에 의해 상기 토큰이 회수된 경우에는 해당 토큰에 의한 커맨드의 실행을 금지할 수 있다. 따라서, 스토리지 장치의 보안성이 향상될 수 있다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시 예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시 예에 따른 스토리지 장치(200)의 구성을 나타내는 블록도이다.
도 3은 본 발명의 실시 예에 따른 호스트-스토리지 시스템의 동작을 개략적으로 나타내는 흐름도이다.
도 4 내지 도 5는 단계 S10의 인증서 등록을 위한 호스트-스토리지 시스템의 동작을 더욱 자세히 설명하기 위한 도면이다.
도 6 내지 도 8c는 단계 S20의 토큰 획득을 위한 호스트-스토리지 시스템의 동작을 더욱 자세히 설명하기 위한 도면이다.
도 9 내지 도 11은 단계 S30의 커맨드 발행에 관련된 호스트-스토리지 시스템의 동작을 더욱 자세히 설명하기 위한 도면이다.
도 12 내지 도 13은 단계 S40의 업데이트된 토큰 획득을 위한 호스트-스토리지 시스템의 동작을 더욱 자세히 설명하기 위한 도면이다.
도 14 내지 도 15는 단계 S50의 액세스 권한 회수를 위한 호스트-스토리지 시스템의 동작을 더욱 자세히 설명하기 위한 도면이다.
도 16은 본 발명의 예시적인 실시 예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
도 17 및 도 18은 본 발명의 실시 예에 따른 호스트-스토리지 장치의 동작을 나타내는 흐름도들이다.
도 19 내지 도 20을 참조하여 본 발명이 적용될 수 있는 시스템의 예가 설명된다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 설명하기로 한다.
도 1은 본 발명의 예시적인 실시 예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
호스트-스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리(NVM)(220)를 포함할 수 있다.
호스트(100)는 전자 장치, 예를 들어 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들, 및 서버 컴퓨터 등을 포함할 수 있다. 호스트(100)는 적어도 하나의 운영 체제(OS: operating system)를 포함할 수 있다. 운영 체제는 호스트(100)의 기능 및 동작을 전반적으로 관리 및 제어할 수 있다.
호스트(100)는 다양한 사용자들(121, 122, ?? 12n)에 의해 사용될 수 있으며, 관리자(110)에 의해 관리될 수 있다.
스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
비휘발성 메모리(220)는 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 비휘발성 메모리(220)는 프로그램 동작을 통해 호스트(100)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 비휘발성 메모리(220)에 저장된 데이터를 출력할 수 있다.
비휘발성 메모리(220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)에는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
스토리지 컨트롤러(210)는 호스트(100)로부터의 요청에 응답하여 비휘발성 메모리(220)를 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 비휘발성 메모리(220)로부터 리드된 데이터를 호스트(100)로 제공하고, 호스트(100)로부터 제공된 데이터를 비휘발성 메모리(220)에 저장할 수 있다. 이러한 동작을 위해, 스토리지 컨트롤러(210)는 비휘발성 메모리(220)의 리드(read), 프로그램(program), 이레이즈(erase) 등의 동작을 지원할 수 있다.
스토리지 컨트롤러(210)는 리드 커맨드, 라이트 커맨드뿐만 아니라 다양한 벤더 스페시픽(vendor specific) 커맨드들을 지원할 수 있다. 스토리지 컨트롤러(210)가 지원하는 다양한 커맨드들 중 어떤 커맨드들은 스토리지 장치(200)의 보안 유지를 위해 제한된 사용자에게만 실행이 허용되어야 한다.
만약 스토리지 컨트롤러(210)가 어떤 커맨드에 패스워드를 부여하고 호스트(100)가 상기 패스워드와 함께 상기 커맨드를 제공하는 경우에만 상기 커맨드의 실행을 허용한다면, 스토리지 장치(200)에 충분한 보안성을 제공하기 어려울 수 있다. 예를 들어, 패스워드가 유출되는 경우 허용되지 않은 사용자에 의해서 상기 커맨드가 실행될 수도 있으며, 어떤 사용자가 일단 패스워드를 가지고 있다면 해당 사용자의 액세스 권한을 철회하기도 어렵다.
본 발명의 실시 예에 따르면, 스토리지 장치(200)가 토큰 기반의 인증을 통해 정당한 권한을 가진 사용자에게만 특정 커맨드의 실행을 허용할 수 있다. 예를 들어, 스토리지 장치(200)는 호스트(100)의 관리자로부터의 요청에 응하여 특정 사용자가 특정 커맨드를 실행하도록 허용하는 토큰을 발급함으로써, 토큰이 유출되더라도 다른 사용자는 상기 커맨드를 실행하지 못하도록 할 수 있다. 그리고, 스토리지 장치(200)는 상기 토큰의 사용 횟수에 따라 상기 토큰을 만료시키거나, 상기 관리자로부터의 요청에 응하여 상기 토큰에 따른 특정 사용자의 특정 커맨드에 대한 액세스 권한을 철회할 수 있다. 따라서, 스토리지 장치(200)는 향상된 보안을 제공할 수 있다.
이하에서, 도 2 내지 도 18을 참조하여 본 발명의 실시 예가 더욱 자세히 설명된다.
도 2는 본 발명의 실시 예에 따른 스토리지 장치(200)의 구성을 나타내는 블록도이다.
도 2는 스토리지 장치(200), 관리자(110) 및 사용자(120)를 도시한다. 스토리지 장치(200) 및 관리자(110)는 도 1을 참조하여 설명된 것들에 대응할 수 있다. 그리고, 사용자(120)는 도 1을 참조하여 설명된 사용자들(121, 122, ?? 12n) 중 어느 것에도 대응할 수 있다.
스토리지 장치(200)는 토큰 매니저(211), 관리자 매니저(212), 인증 매니저(213), 서브젝트 매니저(214), 오브젝트 매니저(215) 및 커맨드 처리부(216)를 포함할 수 있다. 토큰 매니저(211), 관리자 매니저(212), 인증 매니저(213), 서브젝트 매니저(214), 오브젝트 매니저(215) 및 커맨드 처리부(216)는 도 1을 참조하여 설명된 스토리지 컨트롤러(210)에 포함될 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 프로세서 및 메모리를 포함할 수 있으며, 토큰 매니저(211), 관리자 매니저(212), 인증 매니저(213), 서브젝트 매니저(214), 오브젝트 매니저(215) 및 커맨드 처리부(216)는 펌웨어로 구현되어 스토리지 컨트롤러(210)의 메모리에 로드되어 프로세서에서 구동될 수 있다.
토큰 매니저(211)는 관리자(110)의 요청에 응하여 토큰 및 토큰 시크릿 키를 생성할 수 있다. 토큰은 특정 사용자가 특정 커맨드를 수행할 수 있도록 허용하기 위한 일련의 문자열일 수 있다. 토큰을 발급받은 정당한 사용자가 특정 커맨드와 함께 상기 토큰을 제시하는 경우, 스토리지 장치(200)는 상기 특정 커맨드의 실행을 허용할 수 있다. 토큰 시크릿 키는 쌍방향 암호화 키로서, 사용자가 토큰 및 커맨드를 포함하는 메시지를 암호화하는 데 사용될 수 있고, 스토리지 장치(200)가 사용자로부터 수신한 암호화된 메시지를 복호화하는 데 사용될 수 있다. 하나의 토큰과 토큰 시크릿 키는 쌍을 이룰 수 있으며, 토큰과 토큰 시크릿 키는 각각 랜덤한 알파벳과 숫자들을 포함하는 문자열로 구성될 수 있다.
한편, 토큰 매니저(211)는 토큰의 라이프타임을 관리할 수 있으며, 만료된 토큰을 업데이트할 수 있다. 토큰 매니저(211)는 만료된 토큰을 가진 사용자(120)로부터 업데이트된 토큰에 대한 요청을 수신하면, 만료된 토큰을 인증한 결과에 따라 사용자(120)에게 업데이트된 토큰을 제공할 수도 있다.
관리자 매니저(212)는 토큰 매니저(211)가 토큰을 생성하는 등의 동작이 정당한 관리자에 의해 수행되도록 제어할 수 있다. 관리자 매니저(212)는 관리자(110)로부터 인증서(certification)를 수신하여 스토리지 장치(200) 내부에 저장할 수 있다. 인증서는 관리자(110)의 개인 키(private key)와 쌍을 이루는 공개 키(public key)를 포함할 수 있다. 관리자(110)는 스토리지 장치(200)로 토큰 요청 메시지 등을 제공할 때 상기 메시지를 상기 개인 키로 서명하여 제공할 수 있다. 관리자 매니저(212)는 상기 공개 키를 이용하여 상기 서명을 검증하고, 상기 메시지가 정당한 관리자에 의해 수신된 메시지인 경우에만 토큰 요청 등을 처리할 수 있다.
인증 매니저(213)는 사용자(120)로부터 토큰과 메시지를 수신한 경우에 상기 토큰이 유효한 토큰인지 여부를 인증할 수 있다. 상기 토큰 및 메시지는, 인증 코드와 함께 수신될 수 있다. 인증 코드는 상기 토큰 및 메시지를 토큰 시크릿 키로 암호화함으로써 생성된 코드일 수 있다. 인증 매니저(213)는 사용자(120)로부터 수신한 토큰에 대응하는 토큰 시크릿 키를 토큰 매니저(211)로부터 획득하고, 상기 토큰 시크릿 키를 이용하여 사용자(120)로부터 수신한 토큰 및 메시지를 암호화하여 내부 인증 코드를 생성할 수 있다. 인증 매니저(213)는 수신된 인증 코드와 생성된 내부 인증 코드가 동일한지 여부를 확인함으로써 토큰을 인증할 수 있다.
서브젝트 매니저(214)는 토큰이 정해진 사용자에 의해서만 사용될 수 있도록 관리할 수 있다. 관리자(110)는 토큰 요청 메시지를 제공할 때 메시지에 토큰의 사용자 정보를 특정할 수 있다. 서브젝트 매니저(214)는 토큰 매니저(211)에 의해 생성된 토큰과 상기 토큰을 사용할 수 있는 사용자를 나타내는 정보를 저장할 수 있다. 서브젝트 매니저(214)는 사용자(120)로부터 커맨드와 함께 수신된 토큰이 유효한 토큰이더라도 해당 사용자를 위해 발급된 토큰이 아닌 경우, 상기 커맨드 실행을 거부할 수 있다.
오브젝트 매니저(215)는 토큰이 정해진 커맨드만을 실행할 수 있도록 관리할 수 있다. 관리자(110)는 토큰 요청 메시지를 제공할 때 메시지에 토큰을 이용하여 실행을 허용하고자 하는 허용 커맨드 리스트를 포함시킬 수 있다. 오브젝트 매니저(215)는 토큰 매니저(211)에 의해 생성된 토큰과 상기 허용 커맨드 리스트에 포함된 커맨드들의 관계를 나타내는 정보를 저장할 수 있다. 오브젝트 매니저(215)는 사용자(120)로부터 커맨드와 함께 수신된 토큰이 유효한 토큰이더라도, 상기 커맨드를 실행하기 위해 발급된 토큰이 아닌 경우, 상기 커맨드 실행을 거부할 수 있다.
커맨드 처리부(216)는 인증을 필요로 하는 커맨드들을 인증 매니저(213)의 인증 결과에 따라 실행할 수 있다. 예를 들어, 커맨드 처리부(216)는 인증 매니저(213)로부터 인증을 필요로 하는 커맨드가 정당한 사용자로부터 유효한 토큰과 함께 수신된 것이 확인되면, 상기 커맨드를 실행할 수 있다.
인증을 필요로 하는 커맨드는 스토리지 장치(200)에서 지원하는 커맨드들 중 전부 또는 일부의 커맨드들이 될 수 있다. 예를 들어, 스토리지 장치(200)는 리드 커맨드, 라이트 커맨드 등의 범용 커맨드는 인증을 수행하지 않고 실행할 수 있다. 반면에, 스토리지 장치(200)는 특정한 사용자를 위해 지원되는 벤더 스페시픽 커맨드는 인증이 완료된 후에 실행할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(200)는 벤더 스페시픽 커맨드와 같이 사용자를 제한할 필요가 있는 커맨드를 실행하기 위해 토큰 기반의 인증 절차를 수행함으로써 향상된 보안을 제공할 수 있다.
도 3은 본 발명의 실시 예에 따른 호스트-스토리지 시스템의 동작을 개략적으로 나타내는 흐름도이다.
단계 S10에서, 관리자는 인증서 등록을 수행할 수 있다. 구체적으로, 호스트는 스토리지 장치에 관리자의 인증서를 저장함으로써 인증서 등록을 수행할 수 있다. 인증서 등록이 완료되면, 스토리지 장치는 인증서에 포함된 공개 키를 이용하여 관리자의 서명을 검증할 수 있게 된다. 단계 S10의 동작은 도 4 내지 도 5를 참조하여 보다 자세히 설명된다.
단계 S20에서, 관리자는 스토리지 장치로부터 토큰을 획득할 수 있다. 구체적으로, 호스트는 토큰 요청 메시지를 관리자의 개인 키로 서명한 토큰 요청용 서명을 스토리지 장치로 제공할 수 있다. 토큰 메시지는 특정 사용자에게 특정 커맨드에 대한 액세스를 요청하기 위한 메시지일 수 있다. 스토리지 장치는 상기 서명이 정당한 관리자에 의한 서명이라는 것이 검증되면, 토큰 및 토큰 시크릿 키를 발급하여 관리자에게 제공할 수 있다. 호스트에서, 관리자는 상기 특정 사용자에게 상기 토큰 및 토큰 시크릿 키를 전달할 수 있다. 단계 S20의 동작은 도 6 내지 도 8c를 참조하여 보다 자세히 설명된다.
단계 S30에서, 사용자는 관리자로부터 전달받은 토큰과 함께 특정 커맨드를 스토리지 장치로 발행할 수 있다. 구체적으로, 호스트는 사용자의 토큰 및 특정 커맨드를 포함하는 메시지를 관리자로부터 전달받은 토큰 시크릿 키로 암호화하여 스토리지 장치로 제공할 수 있다. 스토리지 장치는 호스트로부터의 메시지를 토큰 시크릿 키로 복호화하여 토큰의 유효성을 검증할 수 있다. 토큰의 유효성이 검증된 경우, 스토리지 장치는 상기 토큰이 정당한 사용자로부터 수신되었고 상기 커맨드의 실행을 허용할 수 있는 토큰인지 여부를 판단하고, 판단 결과에 따라 상기 커맨드를 실행할 수 있다. 단계 S30의 동작은 도 9 내지 도 11을 참조하여 보다 자세히 설명된다.
한편, 토큰에는 라이프타임이 설정될 수 있다. 예를 들어, 토큰이 정해진 횟수 이상 사용되면 기존 토큰은 만료될 수 있으며, 스토리지 장치는 새로운 토큰을 생성할 수 있다. 단계 S40에서, 사용자는 스토리지 장치로 업데이트된 토큰을 요청하여 스토리지 장치로부터 업데이트된 토큰을 획득할 수 있다. 단계 S40의 동작은 도 12 내지 도 13을 참조하여 보다 자세히 설명된다.
필요한 경우, 단계 S50에서 관리자는 사용자의 액세스 권한을 회수할 수 있다. 구체적으로, 호스트 특정 사용자에게 특정 커맨드에 대해 부여된 액세스 권한을 회수하기 위해, 액세스 권한 회수 메시지를 관리자의 개인 키로 서명한 액세스 권한 회수용 서명을 스토리지 장치로 제공할 수 있다. 스토리지 장치는 상기 서명이 정당한 관리자에 의한 서명이라는 것이 검증되면, 상기 사용자에게 발급된 토큰을 제거하거나, 상기 토큰으로 실행할 수 있는 커맨드의 범위를 제한할 수 있다. 단계 S50의 동작은 도 14 내지 도 15를 참조하여 자세히 설명된다.
도 4 내지 도 5는 단계 S10의 인증서 등록을 위한 호스트-스토리지 시스템의 동작을 더욱 자세히 설명하기 위한 도면이다.
도 4는 인증서 등록을 위한 호스트(100) 및 스토리지 장치(200)의 상호작용을 나타내는 흐름도이다.
단계 S101 및 단계 S102는 스토리지 장치(200)에 인증서를 처음 등록하는 경우의 동작을 나타낸다. 구체적으로, 호스트(100)는 단계 S101에서 관리자의 인증서를 스토리지 장치(200)로 제공할 수 있다. 그리고, 스토리지 장치(200)는 단계 S102에서 호스트(100)로부터의 인증서를 저장함으로써 인증서 등록을 완료할 수 있다.
단계 S103 내지 단계 S108은 스토리지 장치(200)에 인증서가 등록된 후 인증서를 교체하는 경우의 동작을 나타낸다. 정당한 권한이 없는 관리자가 무단으로 인증서를 교체하는 문제를 방지하기 위해, 스토리지 장치(200)는 호스트(100)로부터의 인증서 교체 요청에 정당한 관리자의 서명이 있는 경우에만 인증서를 교체할 수 있다.
구체적으로, 호스트(100)는 단계 S103에서 스토리지 장치(200)로 논스(Nonce)를 요청할 수 있다. 논스는 관리자의 서명을 검증하기 위해 이용되는 일회용 데이터일 수 있다. 스토리지 장치(200)는 단계 S104에서, 호스트(100)의 요청에 응하여 알파벳과 숫자들로 이루어진 랜덤한 값을 생성하고, 생성된 값을 논스로서 호스트(100)로 전달할 수 있다.
호스트(100)는 단계 S105에서, 기존 인증서에 포함된 개인 키, 즉 이전 개인 키(old private key)를 이용하여 인증서 교체용 서명을 생성할 수 있다. 구체적으로, 호스트(100)는 스토리지 장치(200)로부터 획득한 논스와 새로운 인증서를 이어붙인 메시지를 이전 개인 키를 이용하여 암호화함으로써 서명을 생성할 수 있다.
단계 S106에서, 호스트(100)는 생성된 서명을 스토리지 장치(200)로 제공할 수 있다.
단계 S107에서, 스토리지 장치(200)는 기존 인증서에 포함된 이전 공개 키(old public key)를 이용하여 상기 서명을 검증할 수 있다. 구체적으로, 스토리지 장치(200)가 이전 공개 키를 이용하여 상기 서명을 복호화함으로써 논스 및 새로운 인증서를 정상적으로 복구했다면, 기존에 인증서를 제공했던 정당한 관리자가 상기 서명을 제공했다는 것을 검증할 수 있다.
단계 S108에서, 스토리지 장치(200)는 복호화된 서명에 포함된 새로운 인증서를 저장함으로써 인증서를 교체할 수 있다.
도 5는 인증서 등록을 위한 스토리지 장치(200)의 내부 동작을 설명하기 위한 도면이다.
도 4에서 설명된 인증서 등록을 위한 스토리지 장치(200)의 동작은 관리자 매니저(212)에 의해 수행될 수 있다. 예를 들어, 단계 S121은 관리자(110)의 인증서가 관리자 매니저(212)로 전달되는 것을 나타낸다. 관리자 매니저(212)는 관리자(110)의 인증서를 스토리지 장치(200) 내부에 저장할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(200)는 일단 관리자(110)의 인증서가 등록된 후에는 정당한 관리자만이 인증서를 재등록할 수 있도록 허용할 수 있다. 따라서, 스토리지 장치(200)의 보안성이 향상될 수 있다.
도 6 내지 도 8c는 단계 S20의 토큰 획득을 위한 호스트-스토리지 시스템의 동작을 더욱 자세히 설명하기 위한 도면이다.
도 6은 토큰 획득을 위한 호스트(100) 및 스토리지 장치(200)의 상호작용을 나타내는 흐름도이다.
단계 S201에서, 호스트(100)는 스토리지 장치(200)로 논스를 요청할 수 있다. 단계 S202에서, 스토리지 장치(200)는 호스트(100)의 요청에 응하여 논스를 제공할 수 있다.
단계 S203에서, 호스트(100)는 관리자의 개인 키를 이용하여 토큰 요청용 서명을 생성할 수 있다. 구체적으로, 호스트(100)는 특정 사용자에게 하나 이상의 커맨드를 허용하는 토큰을 요청하기 위해 서명을 생성할 수 있다. 호스트(100)는 논스, 사용자 ID(Identifier), 허용 커맨드 리스트 및 라이프타임 정보를 이어붙인 메시지를 개인 키를 이용하여 서명함으로써 토큰 요청용 서명을 생성할 수 있다.
사용자 ID는 특정 사용자를 식별하기 위한 ID일 수 있으며, 허용 커맨드 리스트는 특정 사용자에게 실행을 허용하고자 하는 하나 이상의 커맨드 정보를 포함할 수 있다. 그리고, 라이프타임 정보는 상기 토큰의 유효기간을 나타낼 수 있다. 예를 들어, 라이프타임 정보는 상기 토큰의 사용 가능 횟수를 나타낼 수 있다.
단계 S204에서, 호스트(100)는 생성된 토큰 요청용 서명을 스토리지 장치(200)로 제공할 수 있다.
단계 S205에서, 스토리지 장치(200)는 인증서에 포함된 공개 키를 이용하여 상기 서명을 검증할 수 있다. 구체적으로, 스토리지 장치(200)는 공개 키를 이용하여 상기 서명을 복호화할 수 있다. 스토리지 장치(200)가 정당한 관리자로부터 서명을 획득한 경우, 복호화된 서명에 포함된 논스는 단계 S202에서 스토리지 장치(200)가 제공한 논스와 동일할 수 있다. 논스들이 서로 동일한 것이 검증되면, 스토리지 장치(200)는 사용자 ID, 허용 커맨드 리스트 및 라이프타임 정보를 성공적으로 획득할 수 있다.
단계 S206에서, 스토리지 장치(200)는 토큰 및 토큰 시크릿 키를 생성할 수 있다. 상기 토큰은 상기 사용자 ID를 갖는 특정 사용자가 상기 허용 커맨드 리스트에 포함된 커맨드를 수행하는 것을 허용할 수 있다. 그리고, 토큰 시크릿 키는 상기 토큰을 포함하는 메시지를 복호화하기 위해 이용될 수 있다.
단계 S207에서, 스토리지 장치(200)는 토큰 및 토큰 시크릿 키를 호스트(100)로 제공할 수 있다. 구현에 따라, 토큰 및 토큰 시크릿 키는 공개 키 등을 이용하여 암호화되어 호스트(100)로 제공될 수 있다.
스토리지 장치(200)는 인증서를 등록한 정당한 관리자에게만 사용자들을 위한 토큰을 발급할 수 있다. 따라서, 스토리지 장치(200)의 보안이 향상될 수 있다.
도 7은 토큰 획득을 위한 스토리지 장치(200)의 내부 동작을 설명하기 위한 도면이다. 그리고, 도 8a 내지 도 8c는 스토리지 장치(200)의 내부 동작에 의해 스토리지 장치(200)에 저장될 수 있는 데이터를 예시하는 도면들이다.
관리자 매니저(212)는 단계 S221에서 관리자(110)에 의한 토큰 획득용 서명을 검증할 수 있다. 단계 S221은 도 6의 단계 S204에 대응할 수 있다.
관리자 매니저(212)는 서명이 검증되면 토큰 매니저(211)로 토큰 및 토큰 시크릿 생성 요청을 제공할 수 있다. 토큰 매니저(211)는 토큰 및 토큰 시크릿 생성 요청에 응하여 토큰 및 상기 토큰과 쌍을 이루는 토큰 시크릿을 생성하여 관리자 매니저(212)로 제공할 수 있다. 단계 S222는 관리자 매니저(212) 및 토큰 매니저(211)가 요청 및 응답을 주고받는 동작을 나타낸다.
한편, 토큰 매니저(211)는 관리자(110)의 토큰 획득용 서명에 응하여 하나 이상의 토큰을 생성하고, 생성된 토큰을 관리할 수 있다. 토큰 매니저(211)는 생성된 토큰을 관리하기 위해, 토큰과 관련된 정보를 스토리지 장치(200)에 저장할 수 있다.
도 8a는 토큰 매니저(211)가 저장할 수 있는 토큰 리스트(Token list)를 예시한다. 토큰 리스트는 토큰, 상기 토큰에 대응하는 토큰 시크릿 키, 및 상기 토큰의 라이프타임 정보를 포함할 수 있다. 예를 들어, 토큰 'A'는 대응하는 토큰 시크릿 키 'a'를 가질 수 있다. 그리고, 토큰 'A'는 라이프타임 '1'을 갖는 1회용 토큰일 수 있다.
다시 도 7을 참조하면, 관리자 매니저(212)는 단계 S223에서 서브젝트 매니저(214)로 토큰 및 사용자 ID를 제공할 수 있다. 서브젝트 매니저(214)는 상기 토큰이 특정 사용자에 의해서만 유효하게 사용될 수 있도록, 토큰별 사용자 ID 정보를 관리할 수 있다. 서브젝트 매니저(214)는 토큰별 사용자 ID 정보를 나타내는 사용자 리스트를 생성하여 스토리지 장치(200)에 저장할 수 있다.
도 8b는 사용자 리스트(User list)를 예시한다. 사용자 리스트는 토큰 및 상기 토큰에 대응하는 사용자 ID를 포함할 수 있다. 예를 들어, 토큰 'A'는 제1 사용자(User1)에 의해서 유효하게 사용될 수 있다. 만약 제2 사용자(User2)가 토큰 'A'를 제1 사용자(User1)로부터 탈취하고, 탈취한 토큰 'A'와 함께 커맨드를 제공하는 경우 서브젝트 매니저(214)는 제2 사용자(User2)에 의한 커맨드의 실행을 거부할 수 있다.
다시 도 7을 참조하면, 관리자 매니저(212)는 단계 S224에서 오브젝트 매니저(215)로 토큰 및 허용 커맨드 리스트를 제공할 수 있다. 오브젝트 매니저(215)는 상기 토큰이 허용 커맨드 리스트에 포함된 커맨드의 실행을 허용할 수 있도록, 토큰별로 허용되는 커맨드 정보를 관리할 수 있다. 오브젝트 매니저(215)는 토큰별 허용 커맨드 정보를 나타내는 허용 커맨드 리스트를 생성하여 스토리지 장치(200)에 저장할 수 있다.
도 8c는 허용 커맨드 리스트(Permissible CMD list)를 예시한다. 허용 커맨드 리스트는 토큰 및 상기 토큰에 의해 허용되는 하나 이상의 커맨드를 포함할 수 있다. 예를 들어, 토큰 'A'는 제1, 제2 및 제5 커맨드(CMD1, CMD2, CMD5)의 실행을 허용할 수 있다. 만약 토큰 'A'와 함께 제3 커맨드(CMD3)가 제공되는 경우, 오브젝트 매니저(215)는 제3 커맨드(CMD3)의 실행을 거부할 수 있다.
다시 도 7을 참조하면, 관리자 매니저(212)는 단계 S225에서 관리자(110)로 토큰 및 토큰 시크릿 키를 제공할 수 있다. 단계 S226에서, 관리자(110)는 특정 사용자(120)에게 상기 토큰 및 토큰 시크릿 키를 전달할 수 있다. 사용자(120)는 상기 토큰 및 토큰 시크릿 키를 이용하여 스토리지 장치(200)에 허용 커맨드의 실행을 요청할 수 있다.
도 9 내지 도 11은 단계 S30의 커맨드 발행에 관련된 호스트-스토리지 시스템의 동작을 더욱 자세히 설명하기 위한 도면이다.
도 9는 커맨드 발행에 관련된 호스트(100) 및 스토리지 장치(200)의 상호작용을 나타내는 흐름도이다.
단계 S301에서, 호스트(100)는 특정 사용자의 커맨드 메시지(CMD Message) 및 인증 코드(HMAC)를 스토리지 장치(200)로 제공함으로써 커맨드를 발행할 수 있다. 구체적으로, 커맨드 메시지는 토큰, 커맨드 및 동작 파라미터를 이어붙임으로써 생성될 수 있다. 그리고, 인증 코드는 상기 커맨드 메시지를 토큰 시크릿 키로 암호화함으로써 생성될 수 있다.
단계 S302에서, 스토리지 장치(200)는 호스트(100)로부터의 커맨드 메시지에 포함된 토큰의 유효성을 인증할 수 있다. 구체적으로, 스토리지 장치(200)는 상기 커맨드 메시지에 포함된 토큰에 대응하는 토큰 시크릿 키를 이용하여 상기 커맨드 메시지를 암호화하여 인증 코드를 생성하고, 호스트(100)로부터 수신된 인증 코드와 상기 생성된 인증 코드의 일치 여부를 판단함으로써 토큰의 유효성을 인증할 수 있다.
단계 S302의 판단 결과 토큰이 유효한 토큰으로 인증된 경우(Valid token), 스토리지 장치(200)는 단계 S303에서 사용자가 상기 토큰을 사용할 권한이 있는지, 그리고 상기 토큰이 상기 커맨드 메시지에 포함된 커맨드를 실행할 권한을 갖는지 여부를 더 검증할 수 있다.
스토리지 장치(200)는 상기 사용자가 상기 토큰을 이용하여 상기 커맨드를 실행할 정당한 권한을 갖는 경우, 단계 S304에서 상기 커맨드를 실행할 수 있다. 단계 S305에서, 스토리지 장치(200)는 커맨드 메시지에 대한 응답을 호스트(100)로 제공할 수 있다.
한편, 도 8a를 참조하여 설명된 것과 같이 토큰은 라이프타임을 가질 수 있다. 즉, 토큰이 정해진 횟수만큼 사용되면 상기 토큰이 만료될 수 있다. 단계 S306에서, 스토리지 장치(200)는 상기 커맨드를 실행한 결과 토큰이 만료된 것으로 판단되면, 토큰 및 토큰 시크릿 키를 업데이트할 수 있다.
예를 들어, 스토리지 장치(200)는 토큰을 업데이트하기 위해 기존 토큰에 솔트 값을 이어붙인 문자열을 생성하고, 상기 문자열에 해시 연산을 수행함으로써 업데이트된 토큰을 생성할 수 있다. 솔트 값은 스토리지 장치(200)별로 유일하게(uniquely) 결정되는 값일 수 있다. 스토리지 장치(200)는 랜덤한 문자열을 생성함으로써 업데이트된 토큰 시크릿 키를 생성할 수 있다. 상기 업데이트된 토큰과 업데이트된 토큰 시크릿 키는 일대일 대응할 수 있다.
도 10은 커맨드 발행에 관련된 스토리지 장치(200)의 내부 동작을 설명하기 위한 도면이다. 도 11은 커맨드 발행에 따라 토큰을 인증하는 동작을 상세히 설명하기 위한 도면이다.
단계 S321에서, 사용자(120)의 커맨드 메시지 및 인증 코드는 인증 매니저(213)로 제공될 수 있다. 인증 매니저(213)는 단계 S322에서 토큰 매니저(211)로부터 상기 커맨드 메시지에 포함된 토큰에 대응하는 토큰 시크릿 키를 획득하고, 토큰 시크릿 키를 이용하여 상기 토큰의 유효성을 인증할 수 있다.
도 11을 참조하면, 호스트(100)가 사용자의 커맨드 및 인증 코드를 생성하는 방법과 스토리지 장치(200)가 상기 커맨드 및 인증 코드에 기초하여 토큰을 인증하는 방법이 자세히 설명된다.
구체적으로, 호스트(100)는 특정 사용자의 토큰, 커맨드 및 동작 파라미터를 포함하는 커맨드 메시지(Message)를 생성할 수 있다.
호스트(100)는 단계 S341에서, 해시 기반 인증 코드(HMAC: Hash-based Message Authentication Code)를 생성하기 위한 HMAC 연산을 수행하여 인증 코드를 생성할 수 있다. HMAC 연산은 토큰 시크릿 키를 이용하여 커맨드 메시지에 대해 수행되는 해시 연산을 지칭할 수 있다. 토큰 시크릿 키는 상기 커맨드 메시지에 포함된 토큰에 대응할 수 있다. 호스트(100)에 의해 사용되는 토큰 시크릿 키는, 스토리지 장치(200) 내부에 저장된 토큰 시크릿 키와 구별하기 위해 외부 토큰 시크릿 키로 지칭될 수 있다. 그리고, 호스트(100)에 의해 생성된 인증 코드는 외부 인증 코드(Ex.HMAC)로 지칭될 수 있다.
호스트(100)는 단계 S342에서, 커맨드 메시지 및 외부 인증 코드를 스토리지 장치(200)로 제공할 수 있다.
스토리지 장치(200)는 외부 인증 코드를 이용하여 상기 커맨드 메시지에 포함된 토큰의 유효성을 인증할 수 있다. 구체적으로, 스토리지 장치(200)는 토큰 리스트로부터 상기 사용자의 토큰에 대응하는 내부 토큰 시크릿 키를 찾을 수 있다. 스토리지 장치(200)는 단계 S343에서, 내부 토큰 시크릿 키를 이용하여 상기 메시지에 대한 HMAC 연산을 수행함으로써 인증 코드를 생성할 수 있다. 스토리지 장치(200)에서 생성된 인증 코드는 외부 인증 코드와의 구별을 위해 내부 인증 코드(Int.HMAC)로 지칭될 수 있다.
스토리지 장치(200)는 단계 S344에서 외부 인증 코드와 내부 인증 코드를 비교할 수 있다. 비교 결과, 외부 인증 코드와 내부 인증 코드가 동일한 경우 스토리지 장치(200)는 호스트(100)로부터의 커맨드 메시지에 포함된 토큰이 유효한 토큰인 것으로 판단할 수 있다.
다시 도 10을 참조하면, 단계 S323에서 인증 매니저(213)는 서브젝트 매니저(214)로 상기 토큰 및 사용자(120)의 사용자 ID를 제공할 수 있다. 서브젝트 매니저(214)는 사용자 리스트를 참조하여 사용자(120)가 상기 토큰의 정당한 사용자인지 여부를 검증할 수 있다.
단계 S324에서, 인증 매니저(213)는 오브젝트 매니저(215)로 상기 토큰 및 상기 커맨드 메시지에 포함된 커맨드 정보를 제공할 수 있다. 오브젝트 매니저(215)는 커맨드 리스트를 참조하여 상기 토큰이 상기 커맨드를 실행하기 위한 권한을 갖는지 여부를 검증할 수 있다.
사용자(120)가 상기 토큰의 정당한 사용자이고, 상기 토큰이 상기 커맨드를 실행하기 위한 정당한 권한을 갖는 경우, 인증 매니저(213)는 단계 S325에서 커맨드 처리부(216)로 커맨드를 제공할 수 있다. 커맨드 처리부(216)는 상기 커맨드를 실행할 수 있다.
단계 S326에서, 인증 매니저(213)는 상기 실행된 커맨드에 대한 응답을 사용자(120)로 제공할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(200)는 토큰 기반의 인증을 통해서 사용자가 특정 커맨드를 사용하기 위한 정당한 권한을 갖는지 여부를 검증한 후에 커맨드의 실행을 허용할 수 있다. 허가되지 않은 사용자는 토큰을 탈취하더라도 상기 특정 커맨드를 실행할 수 없으므로, 스토리지 장치(200)의 보안이 향상될 수 있다.
도 12 내지 도 13은 단계 S40의 업데이트된 토큰 획득을 위한 호스트-스토리지 시스템의 동작을 더욱 자세히 설명하기 위한 도면이다.
도 12는 업데이트된 토큰 획득을 위한 호스트(100) 및 스토리지 장치(200)의 상호작용을 나타내는 흐름도이다.
단계 S401 및 단계 S402는 도 9의 단계 S301 및 단계 S302를 참조하여 설명된 것과 동일할 수 있다. 만약 정당한 사용자가 단계 S401에서 커맨드 메시지 및 인증 코드를 스토리지 장치(200)로 제공하였는데, 단계 S402에서 토큰의 유효성 인증에 실패하여 단계 S403에서 스토리지 장치(200)로부터 페일 응답을 수신한다면, 정당한 사용자는 토큰이 만료된 것으로 판단하고, 스토리지 장치(200)로부터 업데이트된 토큰 및 토큰 시크릿 키를 요청할 수 있다.
단계 S404에서, 호스트(100)는 업데이트된 토큰 및 토큰 시크릿 키를 요청하기 위해, 이전 토큰(Old token) 및 토큰 업데이트용 서명을 스토리지 장치(200)로 제공할 수 있다. 토큰 업데이트용 서명은 사용자가 정당한 사용자라는 것을 증명하기 위한 서명으로, 이전 토큰을 이전 토큰 시크릿 키(Old token secret key)를 이용하여 암호화함으로써 생성될 수 있다.
단계 S405에서, 스토리지 장치(200)는 이전 토큰 시크릿 키를 이용하여 상기 서명을 검증할 수 있다. 예를 들어, 스토리지 장치(200)는 호스트(100)로부터 수신된 이전 토큰을 스토리지 장치(200) 내부의 이전 토큰 시크릿 키를 이용하여 암호화함으로써 내부 서명을 생성하고, 상기 내부 서명과 호스트(100)로부터 수신된 서명을 비교함으로써 상기 서명을 검증할 수 있다.
상기 서명이 정당한 사용자로부터의 서명이라는 것이 검증되면, 스토리지 장치(200)는 단계 S406에서 새로운 토큰 및 새로운 토큰 시크릿 키를 호스트(100)로 제공할 수 있다. 구현에 따라, 스토리지 장치(200)는 보안 유지를 위해, 새로운 토큰 및 새로운 토큰 시크릿 키를 이전 토큰 시크릿 키를 이용하여 암호화한 이후에 사용자(120)에게 제공할 수 있다. 도 12는 암호화를 위해 AES-256 알고리즘을 이용하는 것을 예로 들고 있으나, 본 발명은 이에 제한되지 않으며, 암호화를 위해서 다양한 알고리즘이 이용될 수 있다.
단계 S407에서, 스토리지 장치(200)는 이전 토큰 및 이전 토큰 시크릿 키를 스토리지 장치(200) 내부에서 제거할 수 있다.
도 13은 업데이트된 토큰 획득을 위한 스토리지 장치(200)의 내부 동작을 설명하기 위한 도면이다.
단계 S421에서, 사용자(120)의 커맨드 메시지 및 인증 코드는 인증 매니저(213)로 제공될 수 있다. 인증 매니저(213)는 단계 S422에서 토큰 매니저(211)로부터 상기 커맨드 메시지에 포함된 토큰 시크릿 키를 획득하고, 토큰 시크릿 키를 이용하여 상기 토큰의 유효성을 인증할 수 있다.
사용자(120)의 만료된 토큰을 이용하여 커맨드 메시지가 생성된 경우, 인증 매니저(213)는 토큰이 무효한 것으로 판단하고, 사용자(120)에게 실패 응답을 제공할 수 있다.
단계 S424에서, 사용자(120)의 이전 토큰 및 토큰 업데이트용 서명은 토큰 매니저(211)로 전달될 수 있다. 토큰 매니저(211)는 상기 이전 토큰 및 토큰 업데이트용 서명을 검증하고, 새로운 토큰 및 새로운 토큰 시크릿 키를 사용자(120)에게 제공할 수 있다.
본 발명의 실시 예에 따르면, 사용자(120)가 정당한 사용자라면, 토큰 만료 후에 관리자(110)에 의존하지 않고 업데이트된 토큰을 직접 획득할 수 있다. 스토리지 장치(200)는 사용자(120)에게 업데이트된 토큰을 제공한 후에는 이전 토큰을 내부에서 제거함으로써 허가되지 않은 사용자가 이전 토큰을 이용하여 새로운 토큰을 탈취하는 문제를 방지할 수 있다. 따라서, 스토리지 장치(200)의 보안성이 유지되면서도 사용자(120)의 편의성이 증대될 수 있다.
도 14 내지 도 15는 단계 S50의 액세스 권한 회수를 위한 호스트-스토리지 시스템의 동작을 더욱 자세히 설명하기 위한 도면이다.
도 14는 액세스 권한 회수를 위한 호스트(100) 및 스토리지 장치(120)의 상호작용을 나타내는 흐름도이다.
단계 S501에서, 호스트(100)는 스토리지 장치(200)로 논스를 요청할 수 있다. 단계 S502에서, 스토리지 장치(200)는 호스트(100)의 요청에 응하여 논스를 제공할 수 있다.
단계 S503에서, 호스트(100)는 관리자(110)의 개인 키를 이용하여 액세스 권한 회수용 서명을 생성할 수 있다. 구체적으로, 호스트(100)는 특정 사용자에게 부여된 어떤 커맨드에 대한 액세스 권한을 회수하기 위해, 논스, 사용자 ID 및 회수 커맨드 리스트를 이어붙인 메시지를 개인 키를 이용하여 암호화함으로써 서명을 생성할 수 있다.
단계 S504에서, 호스트(100)는 생성된 서명을 스토리지 장치(200)로 제공할 수 있다.
단계 S505에서, 스토리지 장치(200)는 인증서에 포함된 공개 키를 이용하여 상기 서명을 검증할 수 있다. 서명을 검증하는 방법은 단계 S205 등을 참조하여 설명된 것과 동일하다.
단계 S506에서, 스토리지 장치(200)는 회수 커맨드 리스트에 포함된 커맨드에 대한 특정 사용자의 액세스 권한을 회수할 수 있다.
도 15는 토큰 획득을 위한 스토리지 장치(200)의 내부 동작을 설명하기 위한 도면이다.
관리자 매니저(212)는 단계 S521에서 관리자(110)의 개인 키로 서명된, 액세스 권한 회수용 서명을 검증할 수 있다. 서명이 검증되면, 관리자 매니저(212)는 커맨드의 액세스 권한을 회수할 수 있다.
한편, 관리자(110)는 특정 사용자의 허용 커맨드 리스트에 포함된 커맨드의 전부 또는 일부의 액세스 권한을 회수할 수 있다. 만약 허용 커맨드 리스트에 포함된 커맨드 전부의 액세스 권한을 회수하는 경우, 관리자 매니저(212)는 단계 S522에서, 토큰 매니저(211)에게 토큰 리스트에서 상기 커맨드에 대응하는 토큰 및 토큰 시크릿 키를 제거하도록 요청할 수 있다. 그리고, 관리자 매니저(212)는 단계 S523에서 서브젝트 매니저(214)에게 사용자 리스트에서 상기 토큰에 대응하는 사용자 ID를 제거하도록 요청하고, 단계 S524에서 오브젝트 매니저(215)에게 커맨드 리스트에서 상기 토큰에 대응하는 허용 커맨드들 전부를 제거하도록 요청할 수 있다.
반면에, 허용 커맨드 리스트에 포함된 커맨드 중 일부의 액세스 권한을 회수하는 경우, 관리자 매니저(212)는 단계 S524에서 오브젝트 매니저(215)에게 커맨드 리스트에서 일부 커맨드만을 제거하도록 요청할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(200)는 토큰이 유출되는 등의 보안상의 문제가 발생하였을 때 관리자(110)의 요청에 따라 상기 토큰과 관련된 액세스 권한의 전부 또는 일부를 회수할 수 있다. 따라서, 스토리지 장치(200)의 보안이 향상될 수 있다.
한편, 도 1 내지 도 15의 예에서 스토리지 장치가 토큰 기반의 인증을 통해 커맨드 실행을 제한적으로 허용하는 실시 예가 자세히 설명되었다. 그러나, 본 발명은 이에 제한되지 않는다. 예를 들어, 스토리지 장치는 토큰 기반의 인증을 통해 커맨드 실행을 제한할 수 있을 뿐만 아니라, 해당 커맨드를 통해 액세스될 수 있는 논리 주소 범위를 더 제한할 수 있다. 도 16 내지 도 18을 참조하여, 본 발명의 실시 예에 따른 호스트-스토리지 시스템의 동작이 자세히 설명된다.
도 16은 본 발명의 예시적인 실시 예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
호스트-스토리지 시스템(30)은 호스트(300) 및 스토리지 장치(400)를 포함할 수 있다. 호스트(300)는 다양한 사용자들(321, 322,??, 32n)에 의해 사용될 수 있으며, 관리자(310)에 의해 관리될 수 있다. 그리고, 스토리지 장치(400)는 스토리지 컨트롤러(410) 및 비휘발성 메모리(420)를 포함할 수 있다.
호스트(300) 및 스토리지 장치(400)는 도 1을 참조하여 설명된 호스트(100) 및 스토리지 장치(200)와 유사할 수 있다. 이하에서, 호스트(100)와 스토리지 장치(200) 및 호스트(300) 및 스토리지 장치(400)의 차이점을 중심으로 본 발명의 실시 예가 설명된다.
비휘발성 메모리(420)는 복수의 네임스페이스들(NS1, NS2, ?? NS_k)를 포함할 수 있다. 네임스페이스는 비휘발성 메모리(420)가 제공하는 저장 공간을 논리적으로 구분한 저장공간을 지칭할 수 있다. 각각의 네임스페이스는 호스트(300)에서 별개의 저장 공간으로 인식될 수 있으며, 논리 주소들은 네임스페이스별로 독립적으로 할당될 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(400)는 호스트(300)로부터의 요청에 따라 특정 사용자에게 특정 논리 주소 영역에 액세스할 수 있는 권한을 제공할 수 있다.
도 17 및 도 18은 본 발명의 실시 예에 따른 호스트-스토리지 장치의 동작을 나타내는 흐름도들이다.
도 17은 토큰 획득을 위한 호스트(300) 및 스토리지 장치(400)의 동작을 나타내는 흐름도이다.
단계 S601에서, 호스트(300)는 스토리지 장치(400)로 논스를 요청할 수 있다. 단계 S602에서, 스토리지 장치(400)는 호스트(300)로부터의 요청에 응하여 논스를 생성하여 관리자(310)로 제공할 수 있다.
단계 S603에서, 호스트(300)는 관리자의 개인 키를 이용하여 토큰 요청용 서명을 생성할 수 있다. 구체적으로, 호스트(300)는 특정 사용자에게 특정 논리 주소 영역에 대한 액세스를 허용하는 토큰을 요청하기 위해 서명을 생성할 수 있다. 호스트(300)는 논스, 사용자 ID, 허용 논리 영역 범위 및 라이프타임 정보를 이어붙인 메시지를 개인 키를 이용하여 서명함으로써 토큰 요청용 서명을 생성할 수 있다.
허용 논리 영역 범위는 액세스를 허용하고자 하는 논리 영역의 범위를 지칭할 수 있다. 예를 들어, 허용 논리 영역 범위는 하나 이상의 네임스페이스로 지정되거나, 호스트(300)의 파일 시스템에서 사용되는 논리 블록 주소(LBA: Logical Block Address)의 범위로 지정될 수 있다.
단계 S605에서, 스토리지 장치(400)는 인증서에 포함된 공개 키를 이용하여 상기 서명을 검증할 수 있다. 서명이 정당한 관리자의 서명이라는 것이 검증되면, 스토리지 장치(400)는 사용자 ID, 허용 논리 주소 범위 및 라이프타임 정보를 성공적으로 획득할 수 있다.
단계 S606에서, 스토리지 장치(400)는 토큰 및 토큰 시크릿 키를 생성할 수 있다. 상기 토큰은 상기 사용자 ID를 갖는 특정 사용자가 상기 허용 논리 주소 영역에 액세스하는 것을 허용할 수 있다. 그리고, 토큰 시크릿 키는 상기 토큰을 포함하는 메시지를 복호화하기 위해 이용될 수 있다.
단계 S607에서, 스토리지 장치(400)는 토큰 및 토큰 시크릿 키를 호스트(300)로 제공할 수 있다.
도 18은 커맨드 발행과 관련된 호스트(300) 및 스토리지 장치(400)의 동작을 나타내는 흐름도이다.
단계 S701에서, 호스트(300)는 스토리지 장치(400)로 특정 사용자의 커맨드 메시지 및 인증 코드를 제공함으로써 커맨드를 발행할 수 있다. 구체적으로, 커맨드 메시지는 상기 사용자의 토큰, 커맨드, 및 상기 커맨드를 이용하여 액세스될 논리 주소(LA: Logical Address)를 이어붙임으로써 생성될 수 있다. 그리고, 인증 코드는 상기 커맨드 메시지를 토큰 시크릿 키로 암호화함으로써 생성될 수 있다.
단계 S702에서, 스토리지 장치(400)는 호스트(300)로부터의 커맨드 메시지에 포함된 토큰의 유효성을 인증할 수 있다. 스토리지 장치(400)는 도 11을 참조하여 설명된 것과 유사한 방식으로 토큰의 유효성을 인증할 수 있다. 즉, 스토리지 장치(400)는 토큰 리스트에서 커맨드 메시지에 포함된 토큰에 대응하는 내부 토큰 시크릿 키를 이용하여 내부 인증 코드를 생성하고, 상기 생성된 내부 인증 코드를 사용자(320)로부터의 인증 코드와 비교함으로써 토큰의 유효 여부를 판단할 수 있다.
단계 S702의 판단 결과 토큰이 유효한 토큰으로 인증된 경우(Valid token), 스토리지 장치(400)는 단계 S703에서 사용자가 상기 토큰을 사용할 권한이 있는지, 그리고 상기 토큰이 상기 논리 주소에 액세스할 권한을 갖는지 여부를 더 검증할 수 있다.
스토리지 장치(400)는 사용자가 상기 토큰을 이용하여 상기 논리 주소에 액세스할 정당한 권한을 갖는 경우, 단계 S704에서 상기 커맨드를 실행할 수 있다.
단계 S705에서, 스토리지 장치(400)는 호스트(300)로 커맨드 메시지에 대한 응답을 제공할 수 있다.
한편, 도 8a를 참조하여 설명된 것과 유사하게, 토큰은 라이프타임을 가질 수 있다. 즉, 토큰이 정해진 횟수만큼 사용되면 상기 토큰이 만료될 수 있다. 단계 S706에서, 스토리지 장치(400)는 상기 커맨드를 실행한 결과 토큰이 만료된 것으로 판단되면, 토큰 및 토큰 시크릿 키를 업데이트할 수 있다.
한편, 도 1 내지 도 15를 참조하여 설명된 실시 예와 도 16 내지 도 18을 참조하여 설명된 실시 예는 서로 결합될 수도 있다. 예를 들어, 스토리지 장치는 관리자의 요청에 응하여 특정 사용자가 특정 커맨드를 사용하여 정해진 범위의 논리 주소 영역에 액세스하는 것을 허용하는 토큰을 발급할 수도 있다. 상기 토큰은 특정 사용자에게 복수의 커맨드들의 실행을 허용할 수 있으며, 커맨드별로 서로 다른 논리 주소 범위에 액세스할 수 있도록 허용할 수도 있다.
도 1 내지 도 18을 참조하여 설명된 본 발명의 실시 예들에 따르면, 스토리지 장치는 토큰 기반의 인증을 수행하여 커맨드의 실행이나 논리 주소 영역에 대한 액세스를 정당한 사용자에게만 제한적으로 허용할 수 있다. 따라서, 스토리지 장치의 보안이 향상될 수 있다.
이하에서, 도 19 내지 도 20을 참조하여 본 발명이 적용될 수 있는 시스템의 예가 설명된다.
도 19는 본 발명의 예시적인 실시예에 따른 호스트-스토리지 시스템(50)을 나타내는 블록도이다.
호스트-스토리지 시스템(50)은 호스트(500) 및 스토리지 장치(600)를 포함할 수 있다. 또한, 스토리지 장치(600)는 스토리지 컨트롤러(610) 및 비휘발성 메모리 (NVM)(620)를 포함할 수 있다.
스토리지 장치(600)는 호스트(500)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(600)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(600)가 SSD인 경우, 스토리지 장치(600)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(600)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(600)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(500)와 스토리지 장치(600)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(600)의 비휘발성 메모리(620)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
일 실시예에 따라, 호스트(50)는 컨트롤러 및 메모리를 포함할 수 있다. 상기 컨트롤러 및 메모리는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 상기 컨트롤러 및 메모리는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 상기 컨트롤러는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 상기 메모리는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러는 호스트 메모리의 버퍼 영역의 데이터(예컨대, 기록 데이터)를 비휘발성 메모리(620)에 저장하거나, 비휘발성 메모리(620)의 데이터(예컨대, 독출 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(610)는 호스트 인터페이스(611), 메모리 인터페이스(612) 및 CPU(central processing unit)(613)를 포함할 수 있다. 또한, 스토리지 컨트롤러(610)는 플래시 변환 레이어(Flash Translation Layer; FTL)(614), 패킷 매니저(615), 버퍼 메모리(616), ECC(error correction code)(617) 엔진 및 AES(advanced encryption standard) 엔진(618)을 더 포함할 수 있다. 스토리지 컨트롤러(610)는 플래시 변환 레이어(FTL)(614)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(613)가 플래시 변환 레이어를 실행하는 것에 의해 비휘발성 메모리(620)에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
호스트 인터페이스(611)는 호스트(500)와 패킷(packet)을 송수신할 수 있다. 호스트(500)로부터 호스트 인터페이스(611)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(620)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(611)로부터 호스트(500)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(620)로부터 독출된 데이터 등을 포함할 수 있다. 메모리 인터페이스(612)는 비휘발성 메모리(620)에 기록될 데이터를 비휘발성 메모리(620)로 송신하거나, 비휘발성 메모리(620)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(612)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 계층(614)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트(500)로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리(620) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(620) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(620) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
패킷 매니저(615)는 호스트(500)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(500)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(616)는 비휘발성 메모리(620)에 기록될 데이터 혹은 비휘발성 메모리(620)로부터 독출될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(616)는 스토리지 컨트롤러(610) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(610)의 외부에 배치되어도 무방하다.
ECC 엔진(617)은 비휘발성 메모리(620)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(617)은 비휘발성 메모리(620)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리(620) 내에 저장될 수 있다. 비휘발성 메모리(620)로부터의 데이터 독출 시, ECC 엔진(617)은 독출 데이터와 함께 비휘발성 메모리(620)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
AES 엔진(618)은, 스토리지 컨트롤러(610)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(600)는 토큰 기반의 인증을 통해 호스트(500)로부터 수신되는 특정 커맨드의 실행을 특정 사용자에게만 제한적으로 허용할 수 있다. 스토리지 장치(600)는 토큰을 발급하고, 토큰 기반의 인증을 수행하기 위한 하나 이상의 펌웨어를 구동할 수 있다. 예를 들어, 상기 펌웨어는 동작 메모리(미도시)에 로드되어 CPU(613)에서 구동될 수 있다. 그리고, 스토리지 장치(600)는 토큰 및 상기 토큰에 연관된 토큰 시크릿 키, 사용자 ID, 커맨드 리스트 등을 버퍼 메모리(616)에 저장할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(600)는 호스트(500)에게 특정 사용자에게만 유효하고, 정해진 라이프타임을 갖는 토큰을 발행할 수 있다. 토큰이 유출되더라도 다른 사용자는 상기 토큰을 사용하여 커맨드를 실행할 수 없으며, 유출된 토큰은 정해진 라이프타임에 따라 뛰어난 보안을 제공할 수 있다.
도 20은 본 발명의 실시 예에 따른 스토리지(storage) 장치가 적용된 시스템(1000)을 도시한 도면이다. 도 20의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 20의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 20을 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시 예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
본 발명의 실시 예에 따르면, 스토리지 장치(1300a, 1300b)는 토큰 기반의 인증을 통해 정당한 사용자로부터 수신된 커맨드만을 실행할 수 있다. 따라서, 스토리지 장치(1300a, 1300b)의 보안이 향상될 수 있다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000)과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.
10, 30, 50: 호스트-스토리지 시스템
100, 300, 500: 호스트
200, 400, 600: 스토리지 장치
210, 410, 610: 스토리지 컨트롤러
220, 420, 620: 비휘발성 메모리

Claims (10)

  1. 데이터를 저장하는 메모리 장치; 및
    상기 메모리 장치를 제어하는 컨트롤러에 있어서,
    상기 컨트롤러는
    호스트로부터 관리자의 공개 키(public key)를 포함하는 인증서를 획득하여 저장하고, 상기 호스트로부터의 요청에 응하여 상기 호스트로 논스(nonce)를 제공하고, 상기 호스트로부터 상기 논스, 사용자 ID(identifier), 허용 커맨드 리스트 및 라이프타임을 포함하는 토큰 요청용 서명을 수신하고, 상기 토큰 요청용 서명을 상기 공개 키로 복호화함으로써 상기 토큰 요청용 서명이 정당한 관리자로부터 생성된 것을 검증하면 상기 사용자 ID에 해당하는 사용자에게 상기 허용 커맨드 리스트에 포함된 커맨드의 실행을 상기 라이프타임 동안 허용하기 위한 토큰 및 상기 토큰에 대응하는 토큰 시크릿 키를 생성하여 상기 호스트로 제공하는
    스토리지 장치.
  2. 제1항에 있어서,
    상기 컨트롤러는
    상기 호스트로부터의 요청에 응하여 상기 호스트로 논스를 제공하고, 상기 호스트로부터 상기 논스 및 새로운 인증서를 포함하는 인증서 교체용 서명을 수신하고, 상기 서명을 공개 키로 복호화하여 상기 인증서 교체용 서명이 정당한 관리자로부터 수신된 것을 검증하면 상기 저장된 인증서를 상기 새로운 인증서로 교체하는
    스토리지 장치.
  3. 제1항에 있어서,
    상기 컨트롤러는
    상기 토큰에 대응하는 토큰 시크릿 키 및 라이프타임을 포함하는 토큰 리스트, 상기 토큰에 대응하는 사용자 ID를 포함하는 사용자 리스트, 및 상기 토큰을 사용하여 실행될 수 있는 커맨드들을 포함하는 허용 커맨드 리스트를 저장하는
    스토리지 장치.
  4. 제3항에 있어서,
    상기 호스트로부터의 요청에 응하여 상기 호스트로 논스를 제공하고, 상기 호스트로부터 논스, 사용자 ID 및 회수 커맨드 리스트를 포함하는 액세스 권한 회수용 서명을 수신하고, 상기 액세스 권한 회수용 서명을 상기 공개 키로 복호화하여 상기 액세스 권한 회수용 서명이 정당한 관리자로부터 생성된 것을 검증하면 상기 사용자 ID에 대응하는 토큰을 사용하여 실행될 수 있는 커맨드들 중 상기 회수 커맨드 리스트에 포함된 커맨드를 상기 허용 커맨드 리스트에서 제거하는
    스토리지 장치.
  5. 제1항에 있어서,
    상기 토큰 요청용 서명은 허용 논리 주소 범위를 더 포함하고,
    상기 컨트롤러는
    상기 허용 커맨드 리스트에 포함된 커맨드의 실행을 상기 허용 논리 주소 범위 내에서 허용하기 위한 토큰을 생성하는
    스토리지 장치.
  6. 데이터를 저장하는 메모리 장치; 및
    상기 메모리 장치를 제어하는 컨트롤러에 있어서,
    상기 컨트롤러는
    호스트의 사용자로부터 토큰 및 커맨드를 포함하는 커맨드 메시지 및 외부 인증 코드를 수신하고, 상기 토큰에 대응하는 토큰 시크릿 키를 이용하여 상기 커맨드 메시지를 암호화함으로써 내부 인증 코드를 생성하고, 상기 외부 인증 코드와 내부 인증 코드를 비교함으로써 상기 토큰이 유효한 토큰인지 여부를 확인하고, 상기 토큰이 유효한 토큰인 경우 상기 토큰이 상기 사용자에게 부여된 토큰인지 여부 및 상기 토큰이 상기 커맨드의 실행을 허용하기 위한 토큰인지 여부를 확인한 결과에 따라 상기 커맨드를 실행하는
    스토리지 장치.
  7. 제6항에 있어서,
    상기 컨트롤러는
    상기 토큰의 라이프타임에 기초하여 상기 토큰이 만료되었는지 여부를 결정하고, 상기 토큰이 만료된 경우 상기 토큰 및 상기 토큰 시크릿 키를 업데이트하는
    스토리지 장치.
  8. 제7항에 있어서,
    상기 컨트롤러는
    상기 사용자로부터 만료된 토큰 및 외부 인증 코드를 수신하고, 상기 만료된 토큰에 대응하는 토큰 시크릿 키를 이용하여 상기 만료된 토큰을 암호화함으로써 내부 인증 코드를 생성하고, 상기 외부 인증 코드와 내부 인증 코드를 비교함으로써 상기 만료된 토큰이 정당한 사용자로부터 수신된 토큰인지 여부를 확인하고, 확인 결과에 따라 업데이트된 토큰 및 업데이트된 토큰 시크릿 키를 상기 만료된 토큰의 토큰 시크릿 키를 이용하여 암호화하고, 상기 암호화된 데이터를 상기 사용자에게 제공하는
    스토리지 장치.
  9. 제8항에 있어서,
    상기 컨트롤러는
    상기 암호화된 데이터를 상기 사용자에게 제공한 후 상기 만료된 토큰의 토큰 시크릿 키를 제거하는
    스토리지 장치.
  10. 호스트 및 스토리지 장치를 포함하는 전자 시스템의 동작 방법에 있어서,
    상기 호스트가 관리자의 개인 키(private key)를 이용하여, 특정 사용자에게 특정 커맨드의 실행을 허용하기 위한 토큰 요청용 서명을 생성하고, 상기 토큰 요청용 서명을 상기 스토리지 장치로 제공하는 단계;
    상기 스토리지 장치가 상기 개인 키와 쌍을 이루는 공개 키(public key)를 이용하여 상기 토큰 요청용 서명을 검증하는 단계;
    상기 스토리지 장치가 토큰 및 토큰 시크릿 키를 생성하여 상기 스토리지 장치에 저장하고, 상기 토큰 및 토큰 시크릿 키를 상기 호스트로 제공하는 단계;
    상기 호스트가 사용자에 의해 요청되는 커맨드와 토큰을 포함하는 커맨드 메시지, 및 상기 커맨드 메시지를 상기 호스트로 제공된 토큰 시크릿 키를 이용하여 암호화한 외부 인증 코드를 상기 스토리지 장치로 제공하는 단계;
    상기 스토리지 장치가 내부에 저장된 토큰 시크릿 키를 이용하여 상기 커맨드 메시지를 암호화한 내부 인증 코드를 생성하고, 상기 내부 인증 코드와 외부 인증 코드를 비교함으로써 상기 토큰이 유효한 토큰인지 여부를 확인하는 단계; 및
    상기 토큰이 유효한 토큰인 경우, 상기 스토리지 장치가 상기 토큰이 상기 사용자에게 부여된 토큰인지 여부 및 상기 커맨드의 실행을 허용하기 위한 토큰인지 여부를 확인한 결과에 따라 상기 커맨드를 실행하는 단계
    를 포함하는 동작 방법.

KR1020210170629A 2021-12-02 2021-12-02 스토리지 장치 및 전자 시스템의 동작 방법 KR20230082807A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210170629A KR20230082807A (ko) 2021-12-02 2021-12-02 스토리지 장치 및 전자 시스템의 동작 방법
US17/898,045 US20230179418A1 (en) 2021-12-02 2022-08-29 Storage controller and method of operating electronic system
CN202211484391.XA CN116226945A (zh) 2021-12-02 2022-11-24 存储设备和操作电子系统的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210170629A KR20230082807A (ko) 2021-12-02 2021-12-02 스토리지 장치 및 전자 시스템의 동작 방법

Publications (1)

Publication Number Publication Date
KR20230082807A true KR20230082807A (ko) 2023-06-09

Family

ID=86571895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210170629A KR20230082807A (ko) 2021-12-02 2021-12-02 스토리지 장치 및 전자 시스템의 동작 방법

Country Status (3)

Country Link
US (1) US20230179418A1 (ko)
KR (1) KR20230082807A (ko)
CN (1) CN116226945A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11941262B1 (en) * 2023-10-31 2024-03-26 Massood Kamalpour Systems and methods for digital data management including creation of storage location with storage access ID

Also Published As

Publication number Publication date
CN116226945A (zh) 2023-06-06
US20230179418A1 (en) 2023-06-08

Similar Documents

Publication Publication Date Title
US11362830B2 (en) Memory system
US20210216616A1 (en) Memory controller and storage device including the same
US11681637B2 (en) Memory controller, storage device including the same, and operating method of the memory controller
TW201203092A (en) Recording apparatus, writing apparatus, reading apparatus, and method of controlling recording apparatus
KR20220091578A (ko) 메모리 서브시스템에 대한 암호화 키의 위임
US11423182B2 (en) Storage device providing function of securely discarding data and operating method thereof
US20230179418A1 (en) Storage controller and method of operating electronic system
US11644983B2 (en) Storage device having encryption
TWI775284B (zh) 記憶系統、其控制方法及資訊處理系統
CN115391844A (zh) 安全密钥存储装置
CN115705438A (zh) 对安装于安全存储器装置中的文件系统中的文件的会话存取
US11468159B2 (en) Memory system
TWI731407B (zh) 具有旁通通道的金鑰管理裝置及處理器晶片
TW201830284A (zh) 資料儲存系統、資料儲存方法及資料讀取方法
CN114747177A (zh) 数据存储设备加密
KR20220052016A (ko) 스토리지 장치에서의 보안 동작을 위한 키 교환 방법 및 이를 이용한 접근 권한 이관 방법
US11677560B2 (en) Utilization of a memory device as security token
KR102510506B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR102484065B1 (ko) 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
US20230125636A1 (en) Use of a physically unclonable function to generate a memory identifier
CN116415230A (zh) 存储控制器、存储系统和操作存储设备的方法
KR20230067436A (ko) 트러스티드 컴퓨팅 장치 및 이의 동작 방법
CN117150496A (zh) 装置标识符组合引擎3层架构