KR20230166408A - 스토리지 장치 및 데이터 처리 방법 - Google Patents

스토리지 장치 및 데이터 처리 방법 Download PDF

Info

Publication number
KR20230166408A
KR20230166408A KR1020220066362A KR20220066362A KR20230166408A KR 20230166408 A KR20230166408 A KR 20230166408A KR 1020220066362 A KR1020220066362 A KR 1020220066362A KR 20220066362 A KR20220066362 A KR 20220066362A KR 20230166408 A KR20230166408 A KR 20230166408A
Authority
KR
South Korea
Prior art keywords
data
hash value
memory
storage device
hash
Prior art date
Application number
KR1020220066362A
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 KR1020220066362A priority Critical patent/KR20230166408A/ko
Priority to US18/062,268 priority patent/US20230384954A1/en
Priority to CN202310146457.2A priority patent/CN117150582A/zh
Publication of KR20230166408A publication Critical patent/KR20230166408A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • 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/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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • 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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

일 실시예에 따른 스토리지 장치는 메모리, 그리고 해시 값을 생성하고, 해시 값으로 입력 데이터를 스크램블링하여 스크램블드 데이터를 생성하고, 스크램블드 데이터와 해시 값을 메모리 내에 연관시켜 저장하는 스토리지 컨트롤러를 포함한다.

Description

스토리지 장치 및 데이터 처리 방법{STORAGE DEVICE AND DATA PROCESSING MEHTOD}
개시 내용은 스토리지 장치 및 데이터 처리 방법에 관한 것이다.
스토리지 장치(storage device)는 다양한 전자 장치들의 데이터 저장 매체로서 사용되고 있다. 스토리지 장치에는 다양한 전자 장치들에서 생성되거나 편집된 정지 이미지, 비디오 이미지, 오디오 콘텐츠 등과 같은 콘텐츠 데이터가 저장될 수 있다.
최근에는 인물 피사체(human subject)로부터 캡처된 것처럼 보이지만 실제로는 피사체 없이 컴퓨터에 의해 조작된 콘텐츠가 생성되고 있다. 이렇게 조작된 콘텐츠는 시청자를 속이거나 당황시키려는 목적으로 생성되거나 편집될 수 있다. 조작된 콘텐츠는 스토리지 장치에 저장되거나, 스토리지 장치에 저장된 콘텐츠 데이터가 조작된 컨텐츠로 대체되어 저장될 수 있으므로, 조작된 콘텐츠가 악의적으로 유포될 위험이 있다. 이에 따라, 스토리지 장치에 저장된 콘텐츠 데이터를 보안하기 위한 요구가 있다.
일 실시예는 저장된 데이터의 변조를 방지하기 위한 스토리지 장치 및 데이터 처리 방법을 제공하고자 한다.
일 실시예는 변조된 데이터를 용이하게 검출하기 위한 스토리지 장치 및 데이터 처리 방법을 제공하고자 한다.
이러한 기술적 과제를 해결하기 위한 일 실시예에 따른 스토리지 장치는 메모리, 그리고 해시 값을 생성하고, 해시 값으로 입력 데이터를 스크램블링하여 스크램블드 데이터를 생성하고, 스크램블드 데이터와 해시 값을 메모리 내에 연관시켜 저장하는 스토리지 컨트롤러를 포함한다.
스토리지 컨트롤러는 난수 발생기의 출력 값 또는 입력 데이터에 해시 알고리즘을 적용하여 해시 값을 생성할 수 있다.
스토리지 컨트롤러는 입력 데이터와 해시 값을 XOR 연산하여 스크램블드 데이터를 생성할 수 있다.
스토리지 컨트롤러는 해시 값에 해시 알고리즘을 적어도 한 번 적용하여 적어도 하나의 추가 해시 값을 생성하고, 스토리지 컨트롤러는 입력 데이터, 해시 값, 및 적어도 하나의 추가 해시 값을 XOR 연산하여 스크램블드 데이터를 생성할 수 있다.
메모리는 복수의 불휘발성 메모리를 포함하고, 스토리지 컨트롤러는 스크램블드 데이터와 해시 값을 복수의 인코딩 데이터로 인코딩하고, 복수의 인코딩 데이터를 복수의 불휘발성 메모리에 분배하여 저장하며, 복수의 인코딩 데이터 각각은 스크램블드 데이터의 일부와 해시 값의 일부를 모두 포함할 수 있다.
복수의 불휘발성 메모리 각각은 메인 영역과 스페어 영역을 포함하는 복수의 페이지를 포함하고, 스토리지 컨트롤러는 스크램블드 데이터의 일부를 메인 영역에 저장하고, 해시 값의 일부를 스페어 영역에 저장할 수 있다.
스토리지 컨트롤러는 복수의 불휘발성 메모리에서 복수의 인코딩 데이터를 읽고, 복수의 인코딩 데이터를 스크램블드 데이터와 해시 값으로 디코딩하며, 디코딩한 스크램블드 데이터와 디코딩한 해시 값을 디스크램블링하여 디스크램블드 데이터를 생성할 수 있다.
스토리지 컨트롤러는 복수의 불휘발성 메모리에서 복수의 인코딩 데이터를 읽고, 복수의 인코딩 데이터를 스크램블드 데이터와 해시 값으로 디코딩하며, 디코딩한 해시 값을 스토리지 장치를 포함하는 서버의 개인키로 암호화하여 암호키를 생성하고, 외부 클라이언트에 디코딩한 스크램블드 데이터와 암호키를 전송할 수 있다.
메모리는 복수의 불휘발성 메모리를 포함하고, 스토리지 컨트롤러는 스크램블드 데이터를 복수의 인코딩 데이터로 인코딩하고, 복수의 인코딩 데이터와 해시 값을 복수의 불휘발성 메모리에 분배하여 저장할 수 있다.
스토리지 컨트롤러는 복수의 불휘발성 메모리에서 복수의 인코딩 데이터와 해시 값을 읽고, 복수의 인코딩 데이터를 스크램블드 데이터로 디코딩하며, 디코딩한 스크램블드 데이터와 복수의 불휘발성 메모리에서 읽은 해시 값을 디스크램블링하여 디스크램블드 데이터를 생성할 수 있다.
메모리는 보안 영역을 포함하고, 스토리지 컨트롤러는 해시 값을 보안 영역에 저장할 수 있다.
스토리지 컨트롤러는, 스크램블드 데이터와 해시 값을 디스크램블링하여 디스크램블드 데이터를 생성하고, 디스크램블드 데이터의 변조 여부를 판단할 수 있다.
스토리지 컨트롤러는 외부 클라이언트로부터 입력 데이터와 클라이언트의 공개키를 수신하고, 난수 발생기의 출력 값을 사용하여 해시 값을 생성하고, 해시 값을 클라이언트의 공개키로 암호화하여 암호키를 생성하며, 스크램블드 데이터와 암호키를 메모리 내에 연관시켜 저장할 수 있다.
스토리지 컨트롤러는 난수 발생기의 출력 값을 사용하여 해시 값을 생성하고, 난수 발생기의 출력 값을 스토리지 장치를 포함하는 서버의 개인키로 암호화하여 암호키를 생성하며, 스크램블드 데이터와 암호키를 메모리 내에 연관시켜 저장할 수 있다.
스토리지 컨트롤러는 외부 클라이언트로부터 입력 데이터, 제1 암호키, 및 클라이언트의 공개키를 수신하고, 클라이언트의 공개키로써 암호화키를 복호화한 값을 사용하여 해시 값을 생성할 수 있다.
일 실시예에 따른 데이터 처리 방법은 입력 데이터를 수신하는 단계, 해시 값을 생성하는 단계, 해시 값으로 입력 데이터를 스크램블링하여 스크램블드 데이터를 생성하는 단계, 그리고 스크램블드 데이터와 해시 값을 메모리 내에 연관시켜 저장하는 단계를 포함한다.
메모리에서 스크램블드 데이터와 해시 값을 읽는 단계, 메모리에서 읽은 스크램블드 데이터와 메모리에서 읽은 해시 값을 디스크램블링하여 디스크램블드 데이터를 생성하는 단계, 그리고 디스크램블드 데이터의 변조 여부를 판단하는 단계를 더 포함할 수 있다.
일 실시예에 따른 스토리지 시스템은 적어도 하나의 클라이언트, 그리고 적어도 하나의 클라이언트 중 제1 클라이언트로부터 콘텐츠 데이터를 수신하고, 해시 값을 생성하고, 해시 값으로 콘텐츠 데이터를 스크램블링하여 스크램블드 데이터를 생성하며, 해시 값을 암호화한 암호키와 스크램블드 데이터를 메모리 내에 연관시켜 저장하는 서버를 포함한다.
서버는 제1 클라이언트로부터 제1 클라이언트의 공개키를 더 수신하고, 해시 값을 제1 클라이언트의 공개키로써 암호화하여 암호키를 생성하고, 메모리로부터 읽은 스크램블드 데이터 및 암호키를 제1 클라이언트에 전송할 수 있다.
서버는 해시 값을 서버의 개인키로써 암호화하여 암호키를 생성하고, 메모리로부터 읽은 스크램블드 데이터, 암호키, 및 서버의 공개키를 제1 클라이언트에 전송할 수 있다.
도 1은 일 실시예에 따른 스토리지 시스템을 나타낸 블록도이다.
도 2는 일 실시예에 따른 스토리지 장치를 나타낸 블록도이다.
도 3 및 도 4는 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸 순서도들이다.
도 5는 일 실시예에 따른 스토리지 장치의 보호 모듈을 나타낸 블록도이다.
도 6은 일 실시예에 따른 스토리지 장치의 데이터 스크램블링을 설명하기 위한 예시도이다.
도 7은 일 실시예에 따른 스토리지 장치의 불휘발성 메모리를 나타낸 블록도이다.
도 8 및 도 9는 일 실시예에 따른 스토리지 장치의 데이터 디스크램블링을 설명하기 위한 예시도들이다.
도 10은 일 실시예에 따른 스토리지 장치의 보호 모듈을 나타낸 블록도이다.
도 11은 일 실시예에 따른 스토리지 장치의 불휘발성 메모리를 나타낸 블록도이다.
도 12는 일 실시예에 따른 스토리지 장치의 보호 모듈을 나타낸 블록도이다.
도 13은 일 실시예에 따른 스토리지 장치의 불휘발성 메모리를 나타낸 블록도이다.
도 14는 일 실시예에 따른 서버의 보호 모듈을 나타낸 블록도이다.
도 15는 일 실시예에 따른 클라이언트의 보호 모듈을 나타낸 블록도이다.
도 16은 일 실시예에 따른 서버의 보호 모듈을 나타낸 블록도이다.
도 17은 일 실시예에 따른 클라이언트의 보호 모듈을 나타낸 블록도이다.
도 18은 일 실시예에 따른 서버의 보호 모듈을 나타낸 블록도이다.
도 19는 일 실시예에 따른 스토리지 장치를 SSD(solid-state drive) 시스템에 적용한 예를 나타내는 블록도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.
그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. 도면을 참고하여 설명한 흐름도에서, 동작 순서는 변경될 수 있고, 여러 동작들이 병합되거나, 어느 동작이 분할될 수 있고, 특정 동작은 수행되지 않을 수 있다.
또한, 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다. 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소를 설명하는데 사용될 수 있지만, 구성요소는 이러한 용어에 의해 한정되지는 않는다. 이들 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다.
도 1은 일 실시예에 따른 스토리지 시스템을 나타낸 블록도이다.
도 1을 참조하면, 스토리지 시스템(100)은 적어도 하나의 클라이언트(client)(110a, 110b, …, 110h)와 서버(120)를 포함할 수 있다. 적어도 하나의 클라이언트(110a, 110b, …, 110h)와 서버(120)는 네트워크 페브릭(105)을 통해 서로 연결될 수 있다. 클라이언트(110)는 서버(120)로 데이터를 요청하거나 또는 전송할 수 있고, 서버(120) 또한 클라이언트(110)에 대하여 데이터를 요청하거나 또는 전송할 수 있다.
적어도 하나의 클라이언트(예를 들어, 110a)는 호스트(111) 및 스토리지 장치(112)를 포함할 수 있다. 호스트(111)는 스토리지 장치(112)를 제어할 수 있다.
일 실시예에서, 클라이언트(110)는 콘텐츠 데이터를 네트워크 페브릭(105)을 통해 서버(120)에 전송할 수 있다. 클라이언트(110)는 정지 이미지, 비디오 이미지, 오디오 콘텐츠 등과 같은 콘텐츠를 생성하거나 편집할 수 있다. 어떤 실시예에서, 클라이언트(110)는 스토리지 장치(112)에 저장되어 있는 콘텐츠 데이터를 서버(120)에 전송할 수 있다.
일 실시예에서, 클라이언트(110)는 서버(120)로부터 콘텐츠 데이터를 수신할 수 있다. 어떤 실시예에서, 클라이언트(110)는 수신한 콘텐츠 데이터를 클라이언트(110a)의 개인키 또는 공개키를 사용하여 디스크램블링(descrambling)할 수 있다. 클라이언트(110)는 클라이언트(110a)의 개인키 또는 서버(120)의 공개키를 사용하여 서버(120)로부터 수신한 암호키에서 해시 값을 복호화(decryption)할 수 있다. 클라이언트(110)는 복호화된 해시 값을 사용하여, 콘텐츠 데이터를 디스크램블링할 수 있다.
일 실시예에서, 클라이언트(110)는 난수 발생기의 출력 값을 클라이언트(110)의 개인키로 암호화하여 암호키를 생성할 수 있다. 클라이언트(110)는 암호키를 생성하여 콘텐츠 데이터와 함께 서버(120)에 전송할 수 있다. 또한, 클라이언트(110)는 서버(120)로부터 서버(120)의 공개키, 암호키, 및 콘텐츠 데이터를 수신하고, 수신한 암호키를 서버(120)의 공개키로 복호화하고, 복호화된 값을 사용하여 콘텐츠 데이터를 디코딩(decoding)할 수 있다.
서버(120)는 호스트(121) 및 스토리지 장치(122)를 포함할 수 있다. 호스트(121)는 스토리지 장치(122)를 제어할 수 있다.
호스트(121)는 클라이언트(110)와 네트워크 페브릭(105)을 통해 통신할 수 있다. 호스트(121)는 클라이언트(110)로부터 전송된 데이터를 스토리지 장치(122)에 전달할 수 있다. 호스트(121)는 스토리지 장치(122)의 데이터를 클라이언트(110)에 전송할 수 있다.
호스트(121)는 스토리지 장치(122)에 저장된 데이터가 변조되었는지 여부를 판단할 수 있다. 일 실시예에서, 호스트(121)는 스토리지 장치(122)에 저장된 콘텐츠 데이터의 변조 여부를 판단할 수 있다. 예를 들어, 호스트(121)는 콘텐츠 데이터의 랜덤 노이즈 검출, 에지 검출, 프레임 간 데이터 차이 계산 등을 사용하여 저장된 콘텐츠 데이터의 변조 여부를 판단할 수 있다.
상기에서 설명된 호스트(121)의 동작은 스토리지 컨트롤러(123)에 의해서도 수행될 수 있다.
호스트(121)는 다양한 인터페이스를 통하여 스토리지 장치(122)와 통신할 수 있다. 한 예로서, 호스트(121)는 USB(Universal Serial Bus), MMC(MultiMediaCard), PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), NVMe(Non-Volatile Memory Express) 등과 같은 다양한 인터페이스를 통해 스토리지 장치(122)와 통신할 수 있다.
스토리지 장치(122)는 스토리지 컨트롤러(123) 및 메모리(124)를 포함할 수 있다.
일 실시예에서, 스토리지 컨트롤러(123)는 클라이언트(110)에 의해 서버(120)에 전송된 콘텐츠 데이터를 수신할 수 있다. 어떤 실시예에서, 스토리지 컨트롤러(123)는 수신한 콘텐츠 데이터를 스크램블링(scrambling)할 수 있다. 스토리지 컨트롤러(123)는 수신한 콘텐츠 데이터의 일부로부터 해시 값을 생성하고, 해시 값을 사용하여 콘텐츠 데이터를 스크램블링할 수 있다. 스토리지 컨트롤러(123)는 난수 발생기의 출력 값으로부터 해시 값을 생성하고, 해시 값을 사용하여 콘텐츠 데이터를 스크램블링할 수 있다.
다른 실시예에서, 스토리지 컨트롤러(123)는 클라이언트(110)의 공개키, 암호키, 및 콘텐츠 데이터를 수신할 수 있다. 스토리지 컨트롤러(123)는 암호키를 클라이언트(110)의 공개키로써 복호화하고, 복호화한 값을 사용하여 해시 값을 생성할 수 있다. 스토리지 컨트롤러(123)는 해시 값을 사용하여 콘텐츠 데이터를 스크램블링할 수 있다.
일 실시예에서, 스토리지 컨트롤러(123)는 스크램블링한 콘텐츠 데이터를 메모리(124)에 저장할 수 있다. 어떤 실시예에서, 스토리지 컨트롤러(123)는 스크램블링한 콘텐츠 데이터를 해시 값과 함께 인코딩(encoding)하여 메모리(124)에 저장할 수 있다. 다른 실시예에서, 스토리지 컨트롤러(123)는 스크램블링한 콘텐츠 데이터와 해시 값을 메모리(124) 내에서 구분된 영역에 각각 저장할 수 있다. 이때, 스토리지 컨트롤러(123)는 스크램블링한 콘텐츠 데이터만을 인코딩하여 메모리(124)에 저장할 수도 있다.
일 실시예에서, 스토리지 컨트롤러(123)는 메모리(124)에 저장된 데이터를 디코딩할 수 있다. 어떤 실시예에서, 스토리지 컨트롤러(123)는 메모리(124)에 저장된 콘텐츠 데이터를 디코딩하여 해시 값을 추출하고, 추출한 해시 값과 콘텐츠 데이터를 디스크램블링할 수 있다. 다른 실시예에서, 스토리지 컨트롤러(123)는 메모리(124)의 소정 영역에 저장된 해시 값을 사용하여, 메모리(124)에 저장된 콘텐츠 데이터를 디스크램블링할 수 있다.
일 실시예에서, 스토리지 컨트롤러(123)는 메모리(124)에 저장된 콘텐츠 데이터의 변조 여부를 판단할 수 있다. 예를 들어, 스토리지 컨트롤러(123)는 디코딩한 콘텐츠 데이터의 랜덤 노이즈 검출, 에지 검출, 프레임 간 데이터 차이 계산 등을 사용하여 저장된 콘텐츠 데이터의 변조 여부를 판단할 수 있다.
일 실시예에서, 스토리지 컨트롤러(123)는 메모리(124)에 저장된 콘텐츠 데이터를 클라이언트(110)에 전송할 수 있다. 어떤 실시예에서, 스토리지 컨트롤러(123)는 메모리(124)에 저장된 콘텐츠 데이터와 암호키를 클라이언트(110)에 전송할 수 있다. 예를 들어, 스토리지 컨트롤러(123)는 스토리지 컨트롤러(123)의 개인키 또는 클라이언트(110)의 공개키를 사용하여 난수 발생기의 출력 값을 암호화(encryption)함으로써 암호키를 생성할 수 있다. 다른 실시예에서, 스토리지 컨트롤러(123)는 메모리(124)에 저장된 클라이언트(110)의 콘텐츠 데이터로부터 해시 값을 추출하고, 해시 값을 스토리지 컨트롤러(123)의 개인키로 암호화하여 암호키를 생성하며, 콘텐츠 데이터와 암호키를 클라이언트(110)에 전송할 수 있다.
상기에서 설명된 스토리지 컨트롤러(123)의 동작은 호스트(121)에 의해서도 수행될 수 있다.
스토리지 장치(122)는 호스트(121)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일례로, 스토리지 장치(122)는 하나 이상의 솔리드 스테이트 드라이브(SSD: Solid State Drive)를 포함할 수 있다. 스토리지 장치(122)가 SSD를 포함하는 경우, 메모리(124)는 데이터를 불휘발성하게 저장하는 다수 개의 플래시 메모리 칩들(예를 들어, NAND 메모리 칩들)을 포함할 수 있다. 한편, 메모리(124)는 하나의 플래시 메모리 장치에 해당할 수도 있으며, 또는 메모리(124)는 하나 이상의 플래시 메모리 칩들을 포함하는 메모리 카드를 포함할 수도 있다.
스토리지 장치(122)가 플래시 메모리를 포함할 때, 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 3D 메모리 어레이는 실리콘 기판 위에 배치되는 활성 영역을 가지는 메모리 셀들의 어레이들, 또는 메모리 셀들의 동작과 관련된 회로로서 기판상에 또는 기판 내에 형성된 회로의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 용어 "모놀리식"은 어레이를 구성하는 각 레벨의 층들이 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다. 3D 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 Vertical NAND 스트링들을 포함한다. 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다.
다른 예로, 스토리지 장치(122)는 다른 다양한 종류의 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(122)는 불휘발성 메모리를 포함할 수 있으며, 불휘발성 메모리는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM), 나노튜브 RAM(Nanotube RAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory) 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory) 등 다양한 종류의 메모리가 적용될 수 있다.
메모리(124)는 eMMC(embedded Multi-Media Card) 또는 임베디드 UFS(Universal Flash Storage) 메모리 장치일 수 있다. 일례로, 메모리(124)는 스토리지 장치(122)에 탈착 가능한 외장(external) 메모리일 수 있다. 구체적으로, 메모리(124)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있으나, 이에 제한되지 않는다.
도 2는 일 실시예에 따른 스토리지 장치를 나타낸 블록도이다.
도 2를 참조하면, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 불휘발성 메모리 장치(220)를 포함할 수 있다.
스토리지 컨트롤러(210)는 불휘발성 메모리 장치(220) 및 버퍼 메모리(216)를 액세스할 수 있다. 스토리지 컨트롤러(210)는 외부의 호스트 장치의 요청에 따라 쓰기, 읽기 및 소거를 수행할 수 있다. 스토리지 컨트롤러(210)는 쓰기 요청된 데이터를 불휘발성 메모리 장치(220)에 기입하고, 읽기 요청된 데이터를 불휘발성 메모리 장치(220)로부터 읽어 출력할 수 있다.
스토리지 컨트롤러(210)는 버퍼 메모리(216)를 이용하여 불휘발성 메모리 장치(220)를 관리할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 불휘발성 메모리 장치(220)에 기입될 데이터 또는 불휘발성 메모리 장치(220)로부터 읽은 데이터를 버퍼 메모리(216)에 임시로 저장할 수 있다.
스토리지 컨트롤러(210)는 CPU(211), 랜덤 액세스 메모리(이하, RAM)(213), 호스트 인터페이스(214), 버퍼 매니저(215), 그리고 플래시 인터페이스(217)를 포함할 수 있다.
CPU(211)는 스토리지 컨트롤러(210)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. CPU(211)는 호스트 인터페이스(214)를 통해 호스트(도 1의 121)와 통신하고, 플래시 인터페이스(217)를 통해 불휘발성 메모리 장치(220)와 통신하고, 그리고 버퍼 매니저(215)를 통해 버퍼 메모리(216)와 통신할 수 있다. CPU(211)는 RAM(213)을 동작 메모리, 캐시 메모리 또는 버퍼 메모리로 사용하여 불휘발성 메모리 장치(220)를 제어할 수 있다.
CPU(211)는 보호 모듈(PROTECT MODULE)(212)을 포함할 수 있다. 보호 모듈(212)은 콘텐츠 데이터의 인코딩/디코딩과 스크램블링/디스크램블링, 및 암호키 생성 및 암호키 복호화 등의 동작을 수행할 수 있다.
RAM(213)은 CPU(211)의 동작 메모리, 캐시 메모리 또는 버퍼 메모리로 사용될 수 있다. RAM(213)은 CPU(211)가 실행하는 코드들 및 명령들을 저장할 수 있다. RAM(213)은 CPU(211)에 의해 처리되는 데이터를 저장할 수 있다. RAM(213)은 예시적으로 SRAM(Static RAM)으로 구현될 수 있다. 특히, RAM(213)에는 읽기 레벨 컨트롤 모듈(RL Control Module)이 저장될 수 있다. 이뿐 아니라, RAM(213)에는 플래시 변환 계층(FTL)이나 다양한 메모리 관리 모듈이 저장될 수 있다. 플래시 변환 계층(FTL)은 불휘발성 메모리 장치(220)와 호스트(도 1의 121) 사이에서 인터페이싱을 위해 수행되는 어드레스 맵핑, 가비지 컬렉션, 웨어 레벨링 등의 기능을 수행한다.
호스트 인터페이스(214)는 CPU(211)의 제어에 따라, 외부의 호스트 장치와 통신하도록 구성된다. 호스트 인터페이스(214)는 USB(Universal Serial Bus), SATA(Serial AT Attachment), SAS(Serial Attached SCSI), HSIC(High Speed Interchip), SCSI(Small Computer System Interface), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NonVolatile Memory express), UFS(Universal Flash Storage), SD(Secure Digital), MMC(MultiMedia Card), eMMC(embedded MMC), DIMM(Dual In-line Memory Module), RDIMM(Registered DIMM), LRDIMM(Load Reduced DIMM) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 통신하도록 구성될 수 있다.
버퍼 매니저(215)는 CPU(211)의 제어에 따라, 버퍼 메모리(216)를 제어하도록 구성된다. 버퍼 매니저(215)는 불휘발성 메모리 장치(220)와 호스트(도 1의 121)가 교환하는 데이터를 일시 저장하도록 버퍼 메모리(216)를 제어한다.
플래시 인터페이스(217)는 CPU(211)의 제어에 따라, 불휘발성 메모리 장치(220)와 통신하도록 구성된다. 플래시 인터페이스(217)는 복수의 채널(CH1, CH2, …, CHn)을 통해 불휘발성 메모리 장치(220)와 통신할 수 있다. 구체적으로, 플래시 인터페이스(217)는 복수의 채널(CH1, CH2, …, CHn)을 통해 커맨드, 어드레스 및 데이터를 불휘발성 메모리 장치(220)와 송수신할 수 있다.
불휘발성 메모리 장치(220)는 스토리지 컨트롤러(210)의 제어에 따라 쓰기 동작, 읽기 동작 및 소거 동작을 수행할 수 있다. 불휘발성 메모리 장치(220)는 스토리지 컨트롤러(210)로부터 쓰기 커맨드, 어드레스 및 데이터를 수신하고, 어드레스에 의해 식별되는 저장 공간에 데이터를 기입할 수 있다. 불휘발성 메모리 장치(220)는 스토리지 컨트롤러(210)로부터 읽기 커맨드 및 어드레스를 수신하고, 어드레스에 의해 식별되는 저장 공간으로부터 데이터를 읽고, 읽은 데이터를 스토리지 컨트롤러(210)로 출력할 수 있다. 불휘발성 메모리 장치(220)는 스토리지 컨트롤러(210)로부터 소거 커맨드 및 어드레스를 수신하고, 어드레스에 의해 식별되는 저장 공간의 데이터를 소거할 수 있다.
불휘발성 메모리 장치(220)는 복수의 메모리(221a, 221b, …, 221h)를 포함할 수 있다. 예시적으로, 불휘발성 메모리들(221a, 221b, …, 221h) 각각은 NAND(Not AND) 플래시 메모리일 수 있다. 불휘발성 메모리들(221a, 221b, …, 221h) 각각은 복수의 메모리 블록을 포함할 수 있다. 복수의 메모리 블록 각각은 복수의 메모리 셀을 포함할 수 있다. 복수의 메모리 셀은 불휘발성 메모리 장치(220)의 저장 공간을 형성할 수 있다. 복수의 메모리 셀은 메인 데이터를 저장하기 위한 메인 영역(main area)과 패러티 비트와 같은 부가 데이터 등을 저장하기 위한 스페어 영역(spare area)으로 구분될 수 있다. 어떤 실시예에서, 동시에 프로그램되는 복수의 메모리 셀을 포함하는 하나의 페이지(page)가 메인 영역과 스페어 영역으로 구분될 수 있다. 복수의 메모리 블록 각각은 복수의 메모리 셀을 개별적으로 선택하는 것을 지원하는 선택 트랜지스터들을 더 포함할 수 있다.
불휘발성 메모리 장치(220)는 플래시 메모리, 상 변화 랜덤 액세스 메모리(PRAM, Phase-change Random Access Memory), 강유전체 랜덤 액세스 메모리(FeRAM, Ferroelectric RAM), 자기 랜덤 액세스 메모리(MRAM, Magnetic RAM), 저항성 랜덤 액세스 메모리(RRAM, Resistive RAM) 등을 포함할 수 있다. 불휘발성 메모리 장치(220)는 예를 들면, 솔리드 스테이트 드라이브(SSD), 메모리 카드, 임베디드 메모리 카드 중 어느 하나의 형태로 구성될 수 있으나, 본 발명이 여기에 국한되지 않음은 잘 이해될 것이다.
다음으로, 도 3 및 도 4를 함께 참조하여, 스토리지 장치의 동작 방법에 대해 설명한다.
도 3 및 도 4는 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸 순서도들이다.
도 2 및 도 3을 함께 참조하면, 스토리지 컨트롤러(210)는 호스트로부터 데이터를 수신(S300)한다. 스토리지 컨트롤러(210)는 호스트 인터페이스(214)를 통해 호스트로부터 콘텐츠 데이터를 수신할 수 있다. 어떤 실시예에서, 스토리지 컨트롤러(210)는 호스트로부터 콘텐츠 데이터를 인코딩하기 위한 해시 값을 생성하기 위한 암호키를 수신할 수 있다. 스토리지 컨트롤러(210)는 호스트로부터 암호키를 복호화하기 위한 클라이언트의 공개키를 수신할 수 있다.
스토리지 컨트롤러(210)는 해시 값을 생성(S310)한다. 일 실시예에서, CPU(211)(또는 보호 모듈(212))는 수신한 콘텐츠 데이터의 일부로부터 해시 값을 생성할 수 있다. 다른 실시예에서, CPU(211)(또는 보호 모듈(212))는 난수 발생기의 출력 값으로부터 해시 값을 생성할 수 있다. 또 다른 실시예에서, CPU(211)(또는 보호 모듈(212))는 호스트로부터 암호키를 수신하고, 호스트의 공개키를 사용하여 암호키를 복호화하고, 복호화한 값을 사용하여 해시 값을 생성할 수 있다. CPU(211)(또는 보호 모듈(212))는 SHA256, SHA512, CRC와 같은 해시 알고리즘을 사용하여 해시 값을 생성할 수 있다.
스토리지 컨트롤러(210)는 해시 값으로 데이터를 스크램블링(S320)한다. 일 실시예에서, CPU(211)(또는 보호 모듈(212))는 해시 값을 사용하여 콘텐츠 데이터를 스크램블링할 수 있다. 예를 들어, CPU(211)(또는 보호 모듈(212))는 해시 값과 콘텐츠 데이터를 XOR 연산하여 스크램블링을 수행할 수 있다.
스토리지 컨트롤러(210)는 스크램블링된 데이터 및 해시 값을 저장(S330)한다. CPU(211)(또는 보호 모듈(212))는 스크램블링된 콘텐츠 데이터를 적어도 하나의 인코딩 데이터로 인코딩할 수 있다. 일 실시예에서, CPU(211)(또는 보호 모듈(212))는 스크램블링된 콘텐츠 데이터를 해시 값과 함께 인코딩할 수 있다. 다른 실시예에서, CPU(211)(또는 보호 모듈(212))는 스크램블링한 콘텐츠 데이터만을 인코딩할 수 있다.
CPU(211)(또는 보호 모듈(212))는 인코딩된 데이터를 불휘발성 메모리 장치(220)에 저장할 수 있다. CPU(211)(또는 보호 모듈(212))는 플래시 인터페이스(217)를 통해 불휘발성 메모리 장치(220)에 인코딩된 데이터를 저장할 수 있다. 어떤 실시예에서, CPU(211)(또는 보호 모듈(212))는 적어도 하나의 인코딩된 데이터를 복수의 메모리(221a, 221b, …, 221h) 중 대응하는 메모리에 저장할 수 있다. 예를 들어, CPU(211)(또는 보호 모듈(212))는 스크램블링된 콘텐츠 데이터를 i개(i는 양수)의 인코딩 데이터로 인코딩하고, 복수의 메모리(221a, 221b, …, 221h) 중 i개의 메모리에 각각 분배하여 저장할 수 있다.
일 실시예에서, 인코딩 데이터 각각은 스크램블링된 콘텐츠 데이터 일부와 해시 값의 일부를 포함할 수 있다. CPU(211)(또는 보호 모듈(212))는 스크램블링된 콘텐츠 데이터 일부와 해시 값의 일부를 연관시켜 저장할 수 있다. 어떤 실시예에서, CPU(211)(또는 보호 모듈(212))는 스크램블링된 콘텐츠 데이터 일부와 해시 값의 일부를 메모리(221a, 221b, …, 221h) 중 대응하는 메모리의 서로 연관된 영역에 저장할 수 있다. 예를 들어, CPU(211)(또는 보호 모듈(212))는 스크램블링된 콘텐츠 데이터 일부를 복수의 메모리(221a, 221b, …, 221h) 중 대응하는 메모리 중 선택된 페이지의 메인 영역에 저장하고, 해시 값의 일부를 선택된 페이지의 스페어 영역에 저장할 수 있다. 어떤 실시예에서, 인코딩 데이터 각각은 해시 값 중 대응하는 j비트 값(j는 양수)을 포함할 수 있다. 예를 들어, 해시 값이 512 비트로 구성되고, i가 512 이하의 정수인 경우, i개의 인코딩 데이터 각각은 해시 값의 512 비트 중 대응하는 적어도 하나의 비트 값을 포함할 수 있다. 해시 값이 512 비트로 구성되고, i가 512를 초과하는 정수인 경우, i개의 인코딩 데이터 중 적어도 두 개의 인코딩 데이터는 해시 값의 512 비트 중 동일한 비트 값을 포함할 수 있다.
다른 실시예에서, 인코딩 데이터 각각은 스크램블링된 콘텐츠 데이터 일부만을 포함할 수 있다. CPU(211)(또는 보호 모듈(212))는 인코딩 데이터를 복수의 메모리(221a, 221b, …, 221h) 중 대응하는 메모리에 저장하고, 해시 값을 불휘발성 메모리 장치(220)의 보안 영역에 저장할 수 있다.
도 2 및 도 4를 함께 참조하면, 스토리지 컨트롤러(210)는 불휘발성 메모리 장치(220)로부터 데이터를 읽는다(S400). 스토리지 컨트롤러(210)는 플래시 인터페이스(217)를 통해 불휘발성 메모리 장치(220)에 저장된 인코딩 데이터를 읽을 수 있다.
일 실시예에서, 스토리지 컨트롤러(210)는 불휘발성 메모리 장치(220)의 보안 영역으로부터 해시 값을 함께 읽을 수 있다. 다른 실시예에서, 스토리지 컨트롤러(210)는 불휘발성 메모리 장치(220)의 보안 영역으로부터 암호키를 읽을 수 있다. 스토리지 컨트롤러(210)는 클라이언트의 공개키로써 암호키를 복호화하고, 복호화한 값을 사용하여 해시 값을 생성할 수 있다.
CPU(211)(또는 보호 모듈(212))는 인코딩 데이터를 디코딩(S410)한다. CPU(211)(또는 보호 모듈(212))는 인코딩 데이터를 디코딩하여 스크램블링된 데이터를 생성할 수 있다. 어떤 실시예에서, CPU(211)(또는 보호 모듈(212))는 인코딩 데이터를 디코딩하여 해시 값을 추출할 수 있다.
CPU(211)(또는 보호 모듈(212))는 스크램블링된 데이터를 해시 값을 사용하여 디스크램블링(S420)한다. 예를 들어, CPU(211)(또는 보호 모듈(212))는 해시 값과 스크램블링된 데이터를 XOR 연산하여 디스크램블링을 수행할 수 있다.
CPU(211)(또는 보호 모듈(212))는 디스크램블링된 데이터가 변조되었는지 여부를 결정(S430)한다. CPU(211)(또는 보호 모듈(212))는 디코딩한 콘텐츠 데이터의 랜덤 노이즈 검출, 에지 검출, 프레임 간 데이터 차이 계산 등을 사용하여 저장된 콘텐츠 데이터의 변조 여부를 결정할 수 있다.
일 실시예에 따른 스토리지 장치(200)는 해시 값과 데이터를 스크램블링하여 저장하므로, 저장된 데이터 및/또는 저장된 해시 값이 변조되는 경우, 디스크램블링된 데이터를 사용하여 변조 여부를 쉽게 파악할 수 있다.
일 실시예에 따른 스토리지 장치(200)는 해시 값을 스페어 영역 또는 보안 영역에 저장하므로, 해시 값에 대한 악의적인 변조를 방지할 수 있다.
다음으로, 도 5를 참조하여, 일 실시예에 따른 보호 모듈에 대해 설명한다.
도 5는 일 실시예에 따른 스토리지 장치의 보호 모듈을 나타낸 블록도이다.
도 5를 참조하면, 보호 모듈(500)은 난수 발생기(RANDOM NUMBER GENERATOR)(501), 해시 생성기(HASH GENERATOR)(502), XOR(exclusive OR) 게이트(503, 505), 및 인코딩-디코딩 회로(504)를 포함할 수 있다.
난수 발생기(501)는 난수(RN)를 생성할 수 있다. 난수 발생기(501)는 하드웨어 난수 발생기(HRNG: Hardware random number generator) 또는 의사 난수 발생기(PRNG: Pseudo random number generator)로 구현될 수 있다.
해시 생성기(502)는 해시 알고리즘을 사용하여 해시 값(HV)을 출력할 수 있다. 해시 생성기(502)의 해시 알고리즘은 임의의 길이를 가지는 입력값을 고정된 길이의 출력 값으로 바꾸어 주는 함수이다. 이 때 출력 값을 해시 값(HV)이라 한다. 일 실시예에서, 해시 생성기(502)는 난수(RN)를 사용하여 해시 값(HV)을 생성할 수 있다. 다른 실시예에서, 해시 생성기(502)는 입력 데이터(WDATA)를 사용하여 해시 값(HV)을 생성할 수 있다.
어떤 실시예에서, 해시 생성기(502)는 복수의 해시 값(HV)을 생성할 수 있다. 예를 들어, 해시 생성기(502)는 난수(RN)에 해시 알고리즘을 적용하여 생성한 제1 해시 값에, 해시 알고리즘을 다시 적용하여 제2 해시 값을 출력할 수 있다. 마찬가지로, 해시 생성기(502)는 제2 해시 값에 해시 알고리즘을 다시 적용하여 제3 해시 값을 생성할 수 있다.
XOR 게이트(503)는 입력 데이터(WDATA)와 해시 값(HV)을 사용하여 스크램블드 데이터(SDATA)를 생성할 수 있다. 스크램블드 데이터(SDATA)를 생성하기 위해, XOR 게이트(503)는 입력 데이터(WDATA)와 해시 값(HV)의 배타적 논리합 연산을 수행할 수 있다. 해시 값(HV)이 복수 개인 경우, XOR 게이트(503)는 입력 데이터(WDATA)와 복수의 해시 값(HV)의 배타적 논리합 연산을 수행할 수 있다.
XOR 게이트(503)의 입력단 중 하나는 입력 데이터(WDATA) 수신단에 연결될 수 있다. XOR 게이트(503)의 입력단 중 나머지는 해시 생성기(502)의 출력단에 연결될 수 있다.
인코딩-디코딩 회로(504)는 스크램블드 데이터(SDATA)와 해시 값(HV)을 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)로 인코딩할 수 있다. 인코딩-디코딩 회로(504)는 해시 값(HV)의 비트 값이 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)에 분배되도록 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 생성할 수 있다. 따라서, 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj) 각각은 해시 값 중 대응하는 적어도 하나의 비트 값을 포함할 수 있으므로, 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)가 디코딩된 후에, 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)에 분배되어 있는 해시 값(HV)이 복원될 수 있다. 관련하여 도 6을 함께 참조하여, 스크램블드 데이터(SDATA)와 해시 값(HV)을 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)로 인코딩하는 방법에 대해 설명한다.
도 6은 일 실시예에 따른 스토리지 장치의 데이터 스크램블링을 설명하기 위한 예시도이다.
도 6을 참조하면, 인코딩-디코딩 회로(504)는 스크램블드 데이터(SDATA)를 복수의 데이터(DATA1, DATA2, DATA3, …, DATAj)로 구분할 수 있다. 인코딩-디코딩 회로(504)는 해시 값(HV)을 복수의 비트 값(H1, H2, H3, …, Hj)으로 구분할 수 있다. 인코딩-디코딩 회로(504)는 복수의 데이터(DATA1, DATA2, DATA3, …, DATAj)와 복수의 비트 값(H1, H2, H3, …, Hj)을 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)로 인코딩할 수 있다. 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj) 각각은 복수의 데이터(DATA1, DATA2, DATA3, …, DATAj) 중 대응하는 적어도 하나의 데이터와 복수의 비트 값(H1, H2, H3, …, Hj) 중 대응하는 적어도 하나의 비트 값을 포함할 수 있다.
복수의 데이터(DATA1, DATA2, DATA3, …, DATAj) 각각은 메인 영역에 저장되고, 복수의 비트 값(H1, H2, H3, …, Hj) 각각은 복수의 데이터(DATA1, DATA2, DATA3, …, DATAj) 중 대응하는 데이터가 저장된 메인 영역과 연관된 스페어 영역에 저장될 수 있다. 예를 들어, 선택된 페이지의 메인 영역에 데이터(DATA1)가 저장되고, 선택된 페이지에 비트 값(H1)이 저장될 수 있다.
여기서 복수의 비트 값(H1, H2, H3, …, Hj) 각각의 비트 수는 적어도 하나의 비트일 수 있다. 복수의 비트 값(H1, H2, H3, …, Hj)의 비트 수는 해시 값(HV)의 비트수와 복수의 데이터(DATA1, DATA2, DATA3, …, DATAj)에 의해 결정될 수 있다. 예를 들어, 해시 값(HV)이 512비트이고, 스크램블드 데이터(SDATA)가 256개의 데이터로 구분되는 경우, 복수의 비트 값(H1, H2, H3, …, Hj) 각각은 2비트일 수 있다. 해시 값(HV)이 512비트이고, 스크램블드 데이터(SDATA)가 512개의 데이터로 구분되는 경우, 복수의 비트 값(H1, H2, H3, …, Hj) 각각은 1비트일 수 있다. 해시 값(HV)이 512비트이고, 스크램블드 데이터(SDATA)가 1024개의 데이터로 구분되는 경우, 복수의 비트 값(H1, H2, H3, …, Hj) 각각은 1비트일 수 있다. 이 경우, 스크램블드 데이터(SDATA)가 구분된 데이터들 중 적어도 두 개의 데이터는 복수의 비트 값(H1, H2, H3, …, Hj) 중 동일한 하나의 비트 값을 가질 수 있다.
상기에서 스크램블드 데이터(SDATA)와 하나의 해시 값(HV)을 인코딩하는 것으로 설명하였으나, 인코딩-디코딩 회로(504)는 스크램블드 데이터(SDATA)와 복수의 해시 값을 인코딩할 수 있다. 이 경우, 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj) 각각은 복수의 해시 값 중 적어도 하나의 해시 값의 적어도 하나의 비트 값을 포함할 수 있다.
다시 도 5를 참조하면, 인코딩-디코딩 회로(504)는 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 플래시 인터페이스에 출력할 수 있다. 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj) 각각은 복수의 메모리 중 대응하는 메모리에 저장될 수 있다. 도 7을 참조하여, 메모리에 저장된 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)에 대해 설명한다.
도 7은 일 실시예에 따른 스토리지 장치의 불휘발성 메모리를 나타낸 블록도이다.
도 7을 참조하면, 불휘발성 메모리 장치(700)는 복수의 메모리(NVM1, NVM2, …, NVMj, …, NVMn)(701a, 701b, …, 701j, …, 701n)를 포함할 수 있다. 플래시 인터페이스는 복수의 메모리(701a, 701b, …, 701j, …, 701n)에 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 분배하여 저장할 수 있다. 예를 들어, 복수의 메모리(701a, 701b, …, 701j) 각각은 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj) 중 대응하는 하나의 인코딩 데이터를 저장할 수 있다. 일 실시예에 따른 스토리지 장치는 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)가 각기 다른 메모리(NVM1, NVM2, …, NVMj)에 저장되므로, 원본 데이터 전체가 변조될 위험을 낮출 수 있다.
다시 도 5를 참조하면, 인코딩-디코딩 회로(504)는 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 디코딩하여 디코딩 데이터(DDATA)와 디코딩 해시 값(DHV)을 생성할 수 있다.
XOR 게이트(505)는 디코딩 데이터(DDATA)와 디코딩 해시 값(DHV)을 사용하여 디스크램블드 데이터(RDATA)를 생성할 수 있다. 디스크램블드 데이터(RDATA)를 생성하기 위해, XOR 게이트(505)는 디코딩 데이터(DDATA)와 디코딩 해시 값(DHV)의 배타적 논리합 연산을 수행할 수 있다.
스크램블드 데이터(SDATA)를 생성하기 위해 복수의 해시 값(HV)이 사용된 경우, 해시 생성기(502)는 복수의 해시 값(HV)을 생성할 때와 마찬가지로, 디코딩 해시 값(DHV)에 해시 알고리즘을 적용하여 복수의 디코딩 해시 값을 생성할 수 있다. 그러면, XOR 게이트(505)는 디코딩 데이터(DDATA)와 복수의 디코딩 해시 값(DHV)의 배타적 논리합 연산을 수행할 수 있다.
XOR 게이트(505)의 입력단 중 하나는 인코딩-디코딩 회로(504)로부터 디코딩 데이터(DDATA)를 수신할 수 있다. XOR 게이트(503)의 입력단 중 나머지는 디코딩 해시 값(DHV)을 수신하도록 인코딩-디코딩 회로(504) 및/또는 해시 생성기(502)의 출력단에 연결될 수 있다. 관련하여, 도 8 및 도 9을 함께 참조하여 디스크램블드 데이터(RDATA)를 생성하는 방법에 대해 설명한다.
도 8 및 도 9는 일 실시예에 따른 스토리지 장치의 데이터 디스크램블링을 설명하기 위한 예시도들이다.
도 8을 참조하면, 인코딩-디코딩 회로(801)는 복수의 메모리로부터 읽은 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 디코딩 해시 값(DHV)과 디코딩 데이터(DDATA)로 디코딩할 수 있다.
XOR 게이트(802)는 디코딩 해시 값(DHV)과 디코딩 데이터(DDATA)를 배타적 논리합 연산을 통해 디스크램블드 데이터(RDATA)를 생성할 수 있다.
디스크램블드 데이터(RDATA)는 CPU(도 2의 211)(또는 보호 모듈(도 2의 212))에 의해, 랜덤 노이즈 검출, 에지 검출, 프레임 간 데이터 차이 계산 등을 사용하여 변조 여부가 결정될 수 있다. 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)가 모두 정상인 경우, 이로부터 생성된 디스크램블드 데이터(RDATA)가 정상으로 결정될 수 있다.
도 9를 참조하면, 인코딩-디코딩 회로(901)는 복수의 메모리로부터 읽은 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 디코딩 해시 값(DHV)과 디코딩 데이터(DDATA)로 디코딩할 수 있다.
XOR 게이트(902)는 디코딩 해시 값(DHV)과 디코딩 데이터(DDATA)를 배타적 논리합 연산을 통해 디스크램블드 데이터(RDATA)를 생성할 수 있다.
디스크램블드 데이터(RDATA)는 CPU(도 2의 211)(또는 보호 모듈(도 2의 212))에 의해, 랜덤 노이즈 검출, 에지 검출, 프레임 간 데이터 차이 계산 등을 사용하여 변조 여부가 결정될 수 있다. 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj) 중 인코딩 데이터(SDATA3)의 데이터(DATA3)가 변조된 경우, 이로부터 생성된 디스크램블드 데이터(RDATA)는 디스크램블링에 의해 랜덤 노이즈를 가질 수 있다. 디스크램블드 데이터(RDATA)가 이미지 데이터인 경우, 한 프레임 이미지에서의 에지 검출이 비정상적이거나, 또는 연속된 프레임 이미지 사이에서의 RGB 데이터 값의 차이가 비정상적일 수 있다.
해시 값(DHV)과 디코딩 데이터(DDATA)가 디스크램블링되어 디스크램블드 데이터(RDATA)가 생성되므로, 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj) 중 일부의 데이터가 악의적으로 변조된 경우, 변조된 데이터가 디스크램블드 데이터(RDATA) 전체에 영향을 미칠 수 있다. 따라서, 일 실시예에 따른 스토리지 장치는 데이터의 변조 여부를 쉽게 판단할 수 있다.
또한, 해시 값(HV)의 복수의 비트 값(H1, H2, H3, …, Hj) 각각이 스페어 영역에 분배되어 저장되므로, 사용자에 의해 임의로 변경될 수 없고, 복수의 비트 값(H1, H2, H3, …, Hj) 중 일부의 값이 악의적으로 변조된 경우에도, 변조된 값이 디스크램블드 데이터(RDATA) 전체에 영향을 미칠 수 있다. 따라서, 일 실시예에 따른 스토리지 장치는 데이터의 변조 여부를 쉽게 판단할 수 있다.
도 10은 일 실시예에 따른 스토리지 장치의 보호 모듈을 나타낸 블록도이다.
도 10을 참조하면, 보호 모듈(1000)은 난수 발생기(1001), 해시 생성기(1002), 및 XOR 게이트(1003, 1004)를 포함할 수 있다. 도 5의 난수 발생기(501), 해시 생성기(502), 및 XOR 게이트(503, 505)와 동일 내지 유사한 동작에 대해서는 설명을 생략한다.
해시 생성기(1002)는 해시 알고리즘을 사용하여 해시 값(HV)을 출력할 수 있다. 해시 생성기(1002)는 메모리에 해시 값(HV)이 저장될 수 있도록, 해시 값(HV)을 플래시 인터페이스에 출력할 수 있다. 해시 값(HV)은 플래시 인터페이스를 통해 메모리에 저장될 수 있다.
XOR 게이트(1003)는 입력 데이터(WDATA)와 해시 값(HV)을 사용하여 스크램블드 데이터(SDATA)를 생성할 수 있다. XOR 게이트(1003)는 메모리에 스크램블드 데이터(SDATA)를 저장하도록, 스크램블드 데이터(SDATA)를 플래시 인터페이스에 출력할 수 있다. 스크램블드 데이터(SDATA)는 플래시 인터페이스를 통해 메모리에 저장될 수 있다.
스크램블드 데이터(SDATA)는 복수의 메모리 중 대응하는 하나의 메모리에 저장될 수 있다. 해시 값(HV)은 복수의 메모리 중 대응하는 하나의 메모리의 보안 영역에 저장될 수 있다.
XOR 게이트(1004)는 메모리에서 읽은 스크램블드 데이터(SDATA)와 해시 값(HV)을 사용하여 디스크램블드 데이터(RDATA)를 생성할 수 있다.
도 11을 함께 참조하여, 메모리에 저장된 스크램블드 데이터(SDATA)와 해시 값(HV)에 대해 설명한다.
도 11은 일 실시예에 따른 스토리지 장치의 불휘발성 메모리를 나타낸 블록도이다.
도 11을 참조하면, 불휘발성 메모리 장치(1100)는 복수의 메모리(NVM1, NVM2, …, NVMn)(1101a, 1101b, …, 1101n)를 포함할 수 있다.
일 실시예에서, 플래시 인터페이스는 복수의 메모리(1101a, 1101b, …, 1101n) 중 하나의 메모리(1101a)에 스크램블드 데이터(SDATA)와 해시 값(HV)을 저장할 수 있다. 플래시 인터페이스는 메모리(1101a)의 보안 영역(1102)에 해시 값(HV)을 저장할 수 있다.
다른 실시예에서, 플래시 인터페이스는 복수의 메모리(1101a, 1101b, …, 1101n) 중 하나의 메모리(1101a)에 스크램블드 데이터(SDATA)를 저장하고, 스크램블드 데이터(SDATA)가 저장된 메모리(1101a)와 다른 메모리(1101b, …, 1101n) 중 어느 하나의 메모리의 보안 영역에 해시 값(HV)을 저장할 수 있다.
메모리(1101a)의 보안 영역(1102)에 저장된 해시 값(HV)은 보안된 상태로 유지될 수 있다. 이와 같이, 자가 암호화 기능을 지원하는 스토리지 장치(1100)는 SED(Self-Encrypting Device 또는 Self-Encrypting Drive)라고 지칭될 수 있다.
어떤 실시예에서, 보안 영역(1102)은 예비(reserved) 영역 및/또는 오버 프로비져닝(over provisioning) 영역을 포함할 수 있다. 오버 프로비져닝 영역은 스토리지 장치를 유지하고 관리하는 데 사용되는 영역으로서, 유지 및 관리의 예로는, 트림(Trim), 가비지 컬렉션(Garbage Collection), 및 배드 블록(Bad Block)의 대체 등이 있다.
일 실시예에 따른 스토리지 장치는 해시 값(HV)이 보안 영역(1102)에 저장되므로, 스크램블드 데이터(SDATA)가 변조되더라도 변조된 스크램블드 데이터(SDATA)가 해시 값(HV)과 디스크램블링되므로, 디스크램블드 데이터(RDATA)를 사용하여 데이터 변조 여부를 쉽게 확인할 수 있다.
도 12는 일 실시예에 따른 스토리지 장치의 보호 모듈을 나타낸 블록도이다.
도 12를 참조하면, 보호 모듈(1200)은 난수 발생기(1201), 해시 생성기(1202), XOR 게이트(1203, 1205), 및 인코딩-디코딩 회로(1204)를 포함할 수 있다. 도 5의 난수 발생기(501), 해시 생성기(502), XOR 게이트(503, 505), 및 인코딩-디코딩 회로(504)와 동일 내지 유사한 동작에 대해서는 설명을 생략한다.
해시 생성기(1202)는 해시 알고리즘을 사용하여 해시 값(HV)을 출력할 수 있다. 해시 생성기(1202)는 메모리에 해시 값(HV)이 저장될 수 있도록, 해시 값(HV)을 플래시 인터페이스에 출력할 수 있다. 해시 값(HV)은 플래시 인터페이스를 통해 메모리에 저장될 수 있다.
XOR 게이트(1203)는 입력 데이터(WDATA)와 해시 값(HV)을 사용하여 스크램블드 데이터(SDATA)를 생성할 수 있다.
인코딩-디코딩 회로(1204)는 스크램블드 데이터(SDATA)를 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)로 인코딩할 수 있다. 인코딩-디코딩 회로(1204)는 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 플래시 인터페이스에 출력할 수 있다. 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj) 각각은 복수의 메모리 중 대응하는 메모리에 저장될 수 있다.
인코딩-디코딩 회로(1204)는 메모리에서 읽은 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 디코딩하여 디코딩 데이터(DDATA)를 생성할 수 있다.
XOR 게이트(1205)는 디코딩 데이터(DDATA)와 메모리에서 읽은 해시 값(HV)을 사용하여 디스크램블드 데이터(RDATA)를 생성할 수 있다. 디스크램블드 데이터(RDATA)를 생성하기 위해, XOR 게이트(1205)는 디코딩 데이터(DDATA)와 해시 값(HV)의 배타적 논리합 연산을 수행할 수 있다.
도 13을 참조하여, 메모리에 저장된 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)와 해시 값(HV)에 대해 설명한다.
도 13은 일 실시예에 따른 스토리지 장치의 불휘발성 메모리를 나타낸 블록도이다.
도 13을 참조하면, 불휘발성 메모리 장치(1300)는 복수의 메모리(1301a, 1301b, …, 1301j, …, 1301n)를 포함할 수 있다. 플래시 인터페이스는 복수의 메모리(1301a, 1301b, …, 1301j, …, 1301n)에 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 분배하여 저장할 수 있다. 예를 들어, 복수의 메모리(1301a, 1301b, …, 1301j) 각각은 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj) 중 대응하는 하나의 인코딩 데이터를 저장할 수 있다.
플래시 인터페이스는 복수의 메모리(1301a, 1301b, …, 1301n) 중 하나의 메모리(1301n)에 해시 값(HV)을 저장할 수 있다. 어떤 실시예에서, 플래시 인터페이스는 메모리(1301n)의 보안 영역에 해시 값(HV)을 저장할 수 있다.
일 실시예에 따른 스토리지 장치는 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)와, 해시 값(HV)이 각기 다른 메모리(NVM1, NVM2, …, NVMj, NVMn)에 저장되므로, 원본 데이터 전체가 변조될 위험을 낮출 수 있다.
일 실시예에 따른 스토리지 장치는 해시 값(HV)이 보안 영역에 저장되므로, 스크램블드 데이터(SDATA)가 변조되더라도 변조된 스크램블드 데이터(SDATA)가 해시 값(HV)과 디스크램블링되므로, 디스크램블드 데이터(RDATA)를 사용하여 데이터 변조 여부를 쉽게 확인할 수 있다.
다음으로, 도 14 및 도 15를 참조하여, 클라이언트와 서버의 스토리지 장치의 보호 모듈에 대해 설명한다.
도 14는 일 실시예에 따른 서버의 보호 모듈을 나타낸 블록도이고, 도 15는 일 실시예에 따른 클라이언트의 보호 모듈을 나타낸 블록도이다.
도 14를 참조하면, 서버의 보호 모듈(1400)은 클라이언트로부터 입력 데이터(WDATA)를 수신할 수 있다. 서버의 보호 모듈(1400)은 입력 데이터(WDATA)를 스크램블링하여 메모리에 저장할 수 있다. 서버의 보호 모듈(1400)은 메모리에서 읽은 스크램블드 데이터(SDATA)를 입력 데이터(WDATA)를 전송한 클라이언트에게 전송할 수 있다.
서버의 보호 모듈(1400)은 난수 발생기(1401), 해시 생성기(1402), XOR 게이트(1403), 및 암호화기(ENCRYPTOR)(1404)를 포함할 수 있다. 도 5의 난수 발생기(501), 해시 생성기(502), 및 XOR 게이트(503)와 동일 내지 유사한 동작에 대해서는 설명을 생략한다.
난수 발생기(1401)는 난수(RN)를 생성할 수 있다.
해시 생성기(1402)는 해시 알고리즘을 사용하여 해시 값(HV)을 출력할 수 있다. 해시 생성기(1402)는 난수(RN)를 사용하여 해시 값(HV)을 생성할 수 있다.
XOR 게이트(1403)는 입력 데이터(WDATA)와 해시 값(HV)을 사용하여 스크램블드 데이터(SDATA)를 생성할 수 있다. XOR 게이트(1403)는 메모리에 스크램블드 데이터(SDATA)를 저장하도록, 스크램블드 데이터(SDATA)를 플래시 인터페이스에 출력할 수 있다. 스크램블드 데이터(SDATA)는 플래시 인터페이스를 통해 메모리에 저장될 수 있다.
암호화기(1404)는 난수(RN)를 암호화하여 암호키(ENK)를 생성할 수 있다. 암호화기(1404)는 클라이언트의 공개키(PUBLIC KEY)(1405)를 사용하여, 난수(RN)를 암호화할 수 있다. 암호화기(1404)는 메모리에 암호키(ENK)를 저장하도록, 암호키(ENK)를 플래시 인터페이스에 출력할 수 있다. 이때, 암호키(ENK)와 스크램블드 데이터(SDATA)는 메모리에 서로 연관되어 저장될 수 있다.
도 15를 참조하면, 클라이언트의 보호 모듈(1500)은 서버로부터 스크램블드 데이터(SDATA)를 수신할 수 있다. 클라이언트의 보호 모듈(1500)은 클라이언트의 스토리지 장치에 위치할 수 있다. 클라이언트의 보호 모듈(1500)은 스크램블드 데이터(SDATA)를 디스크램블링하여 메모리에 저장할 수 있다.
클라이언트의 보호 모듈(1500)은 복호화기(DECRYPTOR)(1501), 해시 생성기(1503), 및 XOR 게이트(1504)를 포함할 수 있다. 도 5의 해시 생성기(502), 및 XOR 게이트(505)와 동일 내지 유사한 동작에 대해서는 설명을 생략한다.
복호화기(1501)는 암호키(ENK)를 복호화하여 난수(RN)를 출력할 수 있다. 복호화기(1501)는 클라이언트의 개인키(PRIVATE KEY)(1502)를 사용하여, 암호키(ENK)를 복호화할 수 있다. 복호화기(1501)는 해시 생성기(1503)에 난수(RN)를 출력할 수 있다.
해시 생성기(1503)는 해시 알고리즘을 사용하여 해시 값(HV)을 출력할 수 있다. 해시 생성기(1503)는 난수(RN)를 사용하여 해시 값(HV)을 생성할 수 있다.
XOR 게이트(1504)는 서버로부터 수신한 스크램블드 데이터(SDATA)와 해시 값(HV)을 사용하여 디스크램블드 데이터(RDATA)를 생성할 수 있다.
일 실시예에 따른 스토리지 시스템은 해시 값(HV)을 클라이언트의 공개키로 암호화하고, 클라이언트의 개인키로 복호화하므로, 클라이언트의 데이터 유출을 방지할 수 있고, 스크램블드 데이터(SDATA)가 변조되더라도 변조된 스크램블드 데이터(SDATA)가 해시 값(HV)과 디스크램블링되므로, 디스크램블드 데이터(RDATA)를 사용하여 데이터 변조 여부를 쉽게 확인할 수 있다.
도 16은 일 실시예에 따른 서버의 보호 모듈을 나타낸 블록도이고, 도 17은 일 실시예에 따른 클라이언트의 보호 모듈을 나타낸 블록도이다.
도 16을 참조하면, 서버의 보호 모듈(1600)은 난수 발생기(1601), 해시 생성기(1602), XOR 게이트(1603), 및 암호화기(1604)를 포함할 수 있다. 도 14의 난수 발생기(1401), 해시 생성기(1402), XOR 게이트(1403), 및 암호화기(1404)와 동일 내지 유사한 동작에 대해서는 설명을 생략한다.
난수 발생기(1601)는 난수(RN)를 생성할 수 있다.
해시 생성기(1602)는 해시 알고리즘을 사용하여 해시 값(HV)을 출력할 수 있다. 해시 생성기(1602)는 난수(RN)를 사용하여 해시 값(HV)을 생성할 수 있다.
XOR 게이트(1603)는 입력 데이터(WDATA)와 해시 값(HV)을 사용하여 스크램블드 데이터(SDATA)를 생성할 수 있다. XOR 게이트(1603)는 메모리에 스크램블드 데이터(SDATA)를 저장하도록, 스크램블드 데이터(SDATA)를 플래시 인터페이스에 출력할 수 있다. 스크램블드 데이터(SDATA)는 플래시 인터페이스를 통해 메모리에 저장될 수 있다.
암호화기(1604)는 난수(RN)를 암호화하여 암호키(ENK)를 생성할 수 있다. 암호화기(1604)는 서버의 개인키(1605)를 사용하여, 난수(RN)를 암호화할 수 있다. 암호화기(1604)는 메모리에 암호키(ENK)를 저장하도록, 암호키(ENK)를 플래시 인터페이스에 출력할 수 있다. 이때, 암호키(ENK)와 스크램블드 데이터(SDATA)는 메모리에 서로 연관되어 저장될 수 있다.
도 17을 참조하면, 클라이언트의 보호 모듈(1700)은 복호화기(1701), 해시 생성기(1703), 및 XOR 게이트(1704)를 포함할 수 있다. 도 15의 복호화기(1501), 해시 생성기(1503), 및 XOR 게이트(1504)와 동일 내지 유사한 동작에 대해서는 설명을 생략한다.
복호화기(1701)는 암호키(ENK)를 복호화하여 난수(RN)를 출력할 수 있다. 복호화기(1701)는 서버의 공개키(1702)를 사용하여, 암호키(ENK)를 복호화할 수 있다. 복호화기(1701)는 해시 생성기(1703)에 난수(RN)를 출력할 수 있다.
해시 생성기(1703)는 해시 알고리즘을 사용하여 해시 값(HV)을 출력할 수 있다. 해시 생성기(1703)는 난수(RN)를 사용하여 해시 값(HV)을 생성할 수 있다.
XOR 게이트(1704)는 서버로부터 수신한 스크램블드 데이터(SDATA)와 해시 값(HV)을 사용하여 디스크램블드 데이터(RDATA)를 생성할 수 있다.
일 실시예에 따른 스토리지 시스템은 해시 값(HV)을 서버의 개인키로 암호화하고, 서버의 공개키로 복호화하므로, 특정 클라이언트에 서버의 공개키를 제공함으로써 데이터 유출을 방지할 수 있고, 스크램블드 데이터(SDATA)가 변조되더라도 변조된 스크램블드 데이터(SDATA)가 해시 값(HV)과 디스크램블링되므로, 디스크램블드 데이터(RDATA)를 사용하여 데이터 변조 여부를 쉽게 확인할 수 있다.
도 18은 일 실시예에 따른 서버의 보호 모듈을 나타낸 블록도이다.
도 18을 참조하면, 서버의 보호 모듈(1800)은 클라이언트로부터 입력 데이터(WDATA)와 암호키(ENK1)를 수신할 수 있다. 서버의 보호 모듈(1800)은 입력 데이터(WDATA)를 스크램블링하고 인코딩하여 메모리에 저장할 수 있다. 서버의 보호 모듈(1800)은 메모리에서 읽은 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 디코딩하여 입력 데이터(WDATA)를 전송한 클라이언트에게 전송할 수 있다.
서버의 보호 모듈(1800)은 복호화기(1801), 해시 생성기(1803), XOR 게이트(1804), 인코딩-디코딩 회로(1805), 및 암호화기(1806)를 포함할 수 있다.
복호화기(1801)는 클라이언트로부터 수신한 암호키(ENK1)를 복호화하여 난수(RN)를 출력할 수 있다. 일 실시예에서, 복호화기(1801)는 클라이언트의 공개키(1802)를 사용하여, 암호키(ENK1)를 복호화할 수 있다. 복호화기(1801)는 해시 생성기(1803)에 난수(RN)를 출력할 수 있다. 다른 실시예에서, 복호화기(1801)는 서버의 개인키를 사용하여, 암호키(ENK1)를 복호화할 수 있다. 복호화기(1801)는 해시 생성기(1803)에 난수(RN)를 출력할 수 있다.
해시 생성기(1803)는 해시 알고리즘을 사용하여 해시 값(HV)을 출력할 수 있다. 해시 생성기(1803)는 난수(RN)를 사용하여 해시 값(HV)을 생성할 수 있다.
XOR 게이트(1804)는 입력 데이터(WDATA)와 해시 값(HV)을 사용하여 스크램블드 데이터(SDATA)를 생성할 수 있다.
인코딩-디코딩 회로(1805)는 스크램블드 데이터(SDATA)와 해시 값(HV)을 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)로 인코딩할 수 있다. 인코딩-디코딩 회로(1805)는 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 플래시 인터페이스에 출력할 수 있다.
인코딩-디코딩 회로(1805)는 복수의 인코딩 데이터(SDATA1, SDATA2, …, SDATAj)를 디코딩하여 디코딩 데이터(DDATA)와 디코딩 해시 값(DHV)을 생성할 수 있다.
암호화기(1806)는 디코딩 해시 값(DHV)을 암호화하여 암호키(ENK2)를 생성할 수 있다. 일 실시예에서, 암호화기(1806)는 서버의 개인키(1807)를 사용하여, 디코딩 해시 값(DHV)을 암호화할 수 있다. 다른 실시예에서, 암호화기(1806)는 클라이언트의 공개키(1802)를 사용하여, 디코딩 해시 값(DHV)을 암호화할 수 있다.
서버는 디코딩 데이터(DDATA) 및 암호키(ENK2)를 클라이언트에 전송할 수 있다. 서버는 해시 값을 암호화한 암호키(ENK1)와 입력 데이터(WDATA)를 서버에 전송한 클라이언트에 디코딩 데이터(DDATA) 및 암호키(ENK2)를 전송할 수 있다.
일 실시예에 따른 스토리지 시스템은 클라이언트의 공개키로 복호화한 난수(RN)를 사용하여, 입력 데이터(WDATA)를 스크램블링하므로, 입력 데이터(WDATA)가 해당 클라이언트로부터 전송된 것임을 쉽게 확인할 수 있다. 또한, 디코딩 해시값(DHV)을 클라이언트의 공개키로 암호화하므로, 해당 클라이언트 외의 다른 클라이언트로의 유출을 방지할 수 있다.
다른 실시예에 따른 스토리지 시스템은 특정 클라이언트에 서버의 공개키를 제공함으로써 서버의 공개키로 암호화된 암호키(ENK1)가 서버의 개인키로 복호화되어 난수(RN)가 출력되고, 출력된 난수(RN)가 해시 값(HV)을 생성하는 데 사용된다. 따라서, 서버가 인증한 클라이언트에게서만 데이터를 수신할 수 있다. 또한, 디코딩 해시값(DHV)을 서버의 개인키로 암호화하고, 특정 클라이언트에 서버의 공개키를 제공함으로써 데이터 유출을 방지할 수 있다.
도 19는 일 실시예에 따른 스토리지 장치를 SSD(solid-state drive) 시스템에 적용한 예를 나타내는 블록도이다.
도 19를 참조하면, SSD 시스템(1900)은 호스트(1910) 및 SSD(1920)를 포함할 수 있다.
SSD(1920)는 도 1 내지 도 18을 참조하여 설명된 실시예들을 이용하여 구현될 수 있다. SSD(1920)는 신호 커넥터(SGL: signal connector)를 통해 호스트(1910)와 신호를 주고 받을 수 있고, 전원 커넥터(PWR: power connector)를 통해 전원을 입력받을 수 있다.
SSD(1920)는 신호 커넥터(SGL)를 통해 펌웨어 이미지 다운로드 커맨드 및 다운로드 대상이 되는 펌웨어 이미지를 수신할 수 있다.
SSD(1920)는 컨트롤러(1921), 보조 전원 장치(1922) 및 복수의 메모리 시스템(1923, 1924, 1925)을 포함할 수 있다. 복수의 메모리 시스템(1923, 1924, 1925) 각각은 스토리지 장치로서 하나 이상의 플래시 메모리 장치를 포함할 수 있다. 또한, 각각의 플래시 메모리 장치는 하나 이상의 다이(DIE)들을 포함할 수 있으며, 각각의 다이(DIE)에는 하나 이상의 블록들이 배치될 수 있다.
컨트롤러(1921)는 복수의 메모리 시스템(1923, 1924, 1925)과 다수의 채널들(Ch1, …, Chn)을 통해 통신할 수 있다. 컨트롤러(1921)는 해시 값을 생성하고, 해시 값을 사용하여 데이터를 스크램블링하여 복수의 메모리 시스템(1923, 1924, 1925)에 저장할 수 있다. 컨트롤러(1921)는 복수의 메모리 시스템(1923, 1924, 1925)에 저장된 데이터를 읽어서 디코딩하고, 디코딩된 해시 값과 디코딩된 데이터를 디스크램블링할 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (10)

  1. 메모리, 그리고
    해시 값을 생성하고, 상기 해시 값으로 입력 데이터를 스크램블링하여 스크램블드 데이터를 생성하고, 상기 스크램블드 데이터와 상기 해시 값을 상기 메모리 내에 연관시켜 저장하는 스토리지 컨트롤러
    를 포함하는 스토리지 장치.
  2. 제1항에 있어서,
    상기 스토리지 컨트롤러는 난수 발생기의 출력 값 또는 상기 입력 데이터에 해시 알고리즘을 적용하여 상기 해시 값을 생성하는,
    스토리지 장치.
  3. 제1항에 있어서,
    상기 스토리지 컨트롤러는 상기 해시 값에 해시 알고리즘을 적어도 한 번 적용하여 적어도 하나의 추가 해시 값을 생성하고,
    상기 스토리지 컨트롤러는 상기 입력 데이터, 상기 해시 값, 및 상기 적어도 하나의 추가 해시 값을 XOR 연산하여 상기 스크램블드 데이터를 생성하는,
    스토리지 장치.
  4. 제1항에 있어서,
    상기 메모리는 복수의 불휘발성 메모리를 포함하고,
    상기 스토리지 컨트롤러는 상기 스크램블드 데이터와 상기 해시 값을 복수의 인코딩 데이터로 인코딩하고, 상기 복수의 인코딩 데이터를 상기 복수의 불휘발성 메모리에 분배하여 저장하며,
    상기 복수의 인코딩 데이터 각각은 상기 스크램블드 데이터의 일부와 상기 해시 값의 일부를 모두 포함하는,
    스토리지 장치.
  5. 제4항에 있어서,
    상기 복수의 불휘발성 메모리 각각은 메인 영역과 스페어 영역을 포함하는 복수의 페이지를 포함하고,
    상기 스토리지 컨트롤러는 상기 스크램블드 데이터의 일부를 상기 메인 영역에 저장하고, 상기 해시 값의 일부를 상기 스페어 영역에 저장하는,
    스토리지 장치.
  6. 제4항에 있어서,
    상기 스토리지 컨트롤러는 상기 복수의 불휘발성 메모리에서 상기 복수의 인코딩 데이터를 읽고, 상기 복수의 인코딩 데이터를 상기 스크램블드 데이터와 상기 해시 값으로 디코딩하며, 상기 디코딩한 스크램블드 데이터와 상기 디코딩한 해시 값을 디스크램블링하여 디스크램블드 데이터를 생성하는,
    스토리지 장치.
  7. 제4항에 있어서,
    상기 스토리지 컨트롤러는 상기 복수의 불휘발성 메모리에서 상기 복수의 인코딩 데이터를 읽고, 상기 복수의 인코딩 데이터를 상기 스크램블드 데이터와 상기 해시 값으로 디코딩하며, 상기 디코딩한 해시 값을 상기 스토리지 장치를 포함하는 서버의 개인키로 암호화하여 암호키를 생성하고, 외부 클라이언트에 상기 디코딩한 스크램블드 데이터와 상기 암호키를 전송하는,
    스토리지 장치.
  8. 제1항에 있어서,
    상기 메모리는 복수의 불휘발성 메모리를 포함하고,
    상기 스토리지 컨트롤러는 상기 스크램블드 데이터를 복수의 인코딩 데이터로 인코딩하고, 상기 복수의 인코딩 데이터와 상기 해시 값을 상기 복수의 불휘발성 메모리에 분배하여 저장하는,
    스토리지 장치.
  9. 제1항에 있어서,
    상기 메모리는 보안 영역을 포함하고,
    상기 스토리지 컨트롤러는 상기 해시 값을 상기 보안 영역에 저장하는,
    스토리지 장치.
  10. 제1항에 있어서,
    상기 스토리지 컨트롤러는, 상기 스크램블드 데이터와 상기 해시 값을 디스크램블링하여 디스크램블드 데이터를 생성하고, 상기 디스크램블드 데이터의 변조 여부를 판단하는,
    스토리지 장치.

KR1020220066362A 2022-05-30 2022-05-30 스토리지 장치 및 데이터 처리 방법 KR20230166408A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220066362A KR20230166408A (ko) 2022-05-30 2022-05-30 스토리지 장치 및 데이터 처리 방법
US18/062,268 US20230384954A1 (en) 2022-05-30 2022-12-06 Storage device and data processing method
CN202310146457.2A CN117150582A (zh) 2022-05-30 2023-02-15 存储设备和数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220066362A KR20230166408A (ko) 2022-05-30 2022-05-30 스토리지 장치 및 데이터 처리 방법

Publications (1)

Publication Number Publication Date
KR20230166408A true KR20230166408A (ko) 2023-12-07

Family

ID=88877185

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220066362A KR20230166408A (ko) 2022-05-30 2022-05-30 스토리지 장치 및 데이터 처리 방법

Country Status (3)

Country Link
US (1) US20230384954A1 (ko)
KR (1) KR20230166408A (ko)
CN (1) CN117150582A (ko)

Also Published As

Publication number Publication date
US20230384954A1 (en) 2023-11-30
CN117150582A (zh) 2023-12-01

Similar Documents

Publication Publication Date Title
KR101451369B1 (ko) 암호화된 전송 고체 상태 디스크 제어기
JP5662037B2 (ja) 不揮発性メモリに対してデータの読み出しおよび書き込みを行うためのデータホワイトニング
KR20170085638A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR102176612B1 (ko) 보안 서브시스템
TWI679554B (zh) 資料儲存裝置以及其操作方法
US20140032935A1 (en) Memory system and encryption method in memory system
CN101484905A (zh) 为存储装置提供安全实现的方法和系统
US11748273B2 (en) Secure data communication with memory sub-system
US9069978B2 (en) Data storage device and data protection method
US9323943B2 (en) Decrypt and encrypt data of storage device
US10255200B2 (en) Data storage device and method of operation using multiple security protocols
CN110661612B (zh) 断电序列期间不相关熵的收集
KR101496975B1 (ko) 고체 상태 디스크 및 이에 대한 입출력방법
US9176896B2 (en) Method of managing aligned and unaligned data bands in a self encrypting solid state drive
CN113228021A (zh) 存储器子系统中日志报告的安全传送
TWI736000B (zh) 資料儲存裝置以及其操作方法
US11644983B2 (en) Storage device having encryption
KR20230166408A (ko) 스토리지 장치 및 데이터 처리 방법
JP2022030661A (ja) メモリシステム、制御方法、および情報処理システム
US20160026582A1 (en) Encrypt data of storage device
US20240103726A1 (en) NVMe Copy Command Acceleration
US11550929B2 (en) Memory system
US20240097885A1 (en) Memory controller and storage device including same
US20210326273A1 (en) Data security for memory and computing systems
JP5978260B2 (ja) 自己暗号化ドライブ用の仮想バンド集信