KR101502718B1 - 웨어 레벨링을 사용한 메모리 디바이스의 암호화 - Google Patents

웨어 레벨링을 사용한 메모리 디바이스의 암호화 Download PDF

Info

Publication number
KR101502718B1
KR101502718B1 KR1020137028885A KR20137028885A KR101502718B1 KR 101502718 B1 KR101502718 B1 KR 101502718B1 KR 1020137028885 A KR1020137028885 A KR 1020137028885A KR 20137028885 A KR20137028885 A KR 20137028885A KR 101502718 B1 KR101502718 B1 KR 101502718B1
Authority
KR
South Korea
Prior art keywords
memory locations
memory
encrypted
memory device
locations
Prior art date
Application number
KR1020137028885A
Other languages
English (en)
Other versions
KR20140033362A (ko
Inventor
시몬 헌트
Original Assignee
맥아피 인코퍼레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 맥아피 인코퍼레이티드 filed Critical 맥아피 인코퍼레이티드
Publication of KR20140033362A publication Critical patent/KR20140033362A/ko
Application granted granted Critical
Publication of KR101502718B1 publication Critical patent/KR101502718B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

웨어 레벨링을 사용한 메모리 디바이스의 암호화를 위한, 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램들을 포함하는 방법들, 시스템들, 및 장치들. 일 양태에 있어서, 방법은 메모리 디바이스의 어드레스 맵에 액세스하는 것 - 어드레스 맵은 메모리 디바이스의 제1 메모리 위치들 및 제2 메모리 위치들을 참조하고 제1 메모리 위치들은 메모리 디바이스에 대한 풀 디스크 암호화 동작에 의해 암호화될 데이터를 저장함 -; 제2 메모리 위치들에 대한 암호화 동작을 수행함이 없이 제2 메모리 위치들을 암호화된 것으로서 지정하는 것; 및 제1 메모리 위치들 및 제2 메모리 위치들의 데이터가 디스크 암호화된 것으로서 지정되도록 메모리 디바이스의 제1 메모리 위치들에 저장된 데이터만을 암호화하는 것을 포함한다.

Description

웨어 레벨링을 사용한 메모리 디바이스의 암호화{ENCRYPTION OF MEMORY DEVICE WITH WEAR LEVELING}
관련 출원들에 대한 참조
본 출원은 2011년 4월 5일자로 출원된 미국 특허출원 제13/079,889호에 대한 우선권의 이익을 주장하며, 그 전체 내용들은 본 명세서에 통합된다.
본 명세서는 암호화에 관한 것이다.
풀(full) 디스크 암호화는 하드 디스크 드라이브 상의 데이터 모두를 암호화하는 기술이다. 대부분의 파일 시스템들에 있어서, 하드 디스크 드라이브로부터 데이터를 삭제하는 것은 하드 디스크 드라이브로부터 데이터를 실제로 제거하지는 않는다. 대신, 데이터에 의해 점유된 메모리 위치들이 미사용으로서 표시되지만 실제 데이터는 잔류한다. 따라서, 풀 디스크 암호화 기술들은 하드 디스크 드라이브들의 사용된 및 미사용된 부분들 양자를 암호화하여, 어떠한 데이터도 미암호화된 상태로 남겨지지 않음을 보장한다.
데이터를 하드 드라이브에 기입하는 것은 물리 저장 매체에 대해 비교적 비-파괴적인 프로세스이며, 즉, 데이터는 저장 매체의 열화 없이 하드 드라이브의 메모리 위치들에 매우 많은 횟수 기입될 수 있다. 하지만, 컴퓨터 저장 디바이스들의 일부 타입들은 하드 디스크 드라이브들에 대한 판독 및 기입 동작들의 관점에서 상대적으로 제한된 수명 기간을 갖는다. 솔리드-스테이트 드라이브들 및 USB 플래시 드라이브들은, 메모리 셀들이 반복된 프로그래밍 및 소거로 인해 결국 마모되는 소거가능한 컴퓨터 저장 디바이스들의 예들이다. 그러한 메모리 디바이스의 전체 수명을 연장하기 위해, 블록들 또는 페이지들과 같이 메모리 디바이스의 어드레싱가능한 섹션들이 웨어 레벨링에 의해 유사한 비율로 프로그래밍 및/또는 소거될 수 있다. 웨어 레벨링은, 메모리 디바이스의 메모리 셀들이 균등하게 마모함을 보장하며, 예를 들어, 메모리 셀들을 프로그래밍 및/또는 소거하는 것이 메모리 디바이스의 수명에 걸쳐 모든 메모리 셀들에 대해 유사한 비율로 발생함을 보장한다.
풀 디스크 암호화는 메모리 디바이스의 사용된 및 미사용된 부분들 양자를 암호화하여 어떠한 데이터도 미암호화되지 않음을 보장하기 때문에, 풀 디스크 암호화는 솔리드-스테이트 드라이브를 너무 이르게 낡게 하고, 웨어 레벨링 동작들에 사용되는 웨어 레벨링 테이블을 너무 이르게 확장시킨다. 이는 저장 디바이스의 수명을 불필요하게 단축하고 판독 및 기입 액세스 횟수들을 저하시킬 수 있다.
일반적으로, 본 명세서에서 설명되는 주제의 하나의 혁신적인 양태는, 컴퓨터에 의해, 메모리 디바이스의 어드레스 맵에 액세스하는 액션 - 어드레스 맵은 메모리 디바이스의 제1 메모리 위치들 및 제2 메모리 위치들을 참조하고 제1 메모리 위치들은 메모리 디바이스에 대한 풀 디스크 암호화 동작에 의해 암호화될 데이터를 저장함 -; 컴퓨터에 의해, 제2 메모리 위치들에 대한 암호화 동작을 수행함이 없이 제2 메모리 위치들을 암호화된 것으로서 지정하는 액션; 및 컴퓨터에 의해, 제1 메모리 위치들 및 제2 메모리 위치들의 데이터가 디스크 암호화된 것으로서 지정되도록 메모리 디바이스의 제1 메모리 위치들에 저장된 데이터만을 암호화하는 액션을 포함하는 방법들에서 구현될 수 있다. 이 양태의 다른 실시예들은, 컴퓨터 저장 디바이스들 상에 인코딩된 그 방법들의 액션들을 수행하도록 구성된 대응하는 시스템들, 장치들, 및 컴퓨터 프로그램들을 포함한다.
본 명세서에서 설명되는 주제의 특정 실시예들은 다음의 이점들 중 하나 이상의 이점들을 실현하도록 구현될 수 있다. 비어 있는 메모리 위치들을 암호화하지 않음으로써, 그 위치들의 프로그래밍이 회피되고, 이에 의해, 그 위치들에 대한 판독 및 기입 사이클들의 수를 감소시키고, 웨어 테이블들의 불필요한 확장을 추가로 회피시킨다. 이는 또한, 웨어 테이블들이 복잡도에 있어서 불필요하게 확장되지 않기 때문에, 모든 위치가 풀 디스크 암호화에 의해 프로그래밍되었던 솔리드-스테이트 메모리 디바이스들에 관하여 판독 및 기입 횟수에 대한 증가된 성능을 유도할 수 있다.
본 명세서에서 설명되는 주제의 하나 이상의 실시예들의 상세들이 첨부 도면들 및 하기의 설명에 기재된다. 본 주제의 다른 특징들, 양태들, 및 이점들이 그 설명, 도면들, 및 청구항들로부터 명백하게 될 것이다.
도 1은 솔리드-스테이트 드라이브에 있어서 논리 메모리 어드레스들의 물리 메모리 어드레스들로의 예시적인 매핑의 블록 다이어그램이다.
도 2는 웨어 레벨링을 구현하는 메모리 디바이스를 암호화하는 일 예의 블록 다이어그램이다.
도 3은 웨어 레벨링을 사용하여 메모리 디바이스 상의 데이터를 암호화하기 위한 예시적인 프로세스의 플로우 다이어그램이다.
도 4는 웨어 레벨링을 사용하여 메모리 디바이스 상의 데이터를 암호화하기 위한 다른 예시적인 프로세스의 플로우 다이어그램이다.
도 5는 웨어 레벨링을 사용하여 메모리 디바이스 상의 데이터를 암호해독하기 위한 예시적인 프로세스의 플로우 다이어그램이다.
도 6은 상기 도 1 내지 도 5에 대하여 설명된 프로세스들 및 시스템들을 구현하는데 사용될 수 있는 예시적인 컴퓨터 시스템의 블록 다이어그램이다.
다양한 도면들에 있어서 유사한 참조 번호들 및 명칭들은 유사한 엘리먼트들을 나타낸다.
도 1은 솔리드-스테이트 드라이브 메모리 디바이스(130)에 있어서 논리 메모리 어드레스들의 물리 메모리 어드레스들로의 예시적인 매핑의 블록 다이어그램이다. 메모리 디바이스(130)는 솔리드-스테이트 메모리 디바이스, 예를 들어, 플래시 드라이브로 구성된다. 논리 어레이와 같은 논리-물리 매핑(102)은 메모리 디바이스(130)에 있어서 논리 메모리 위치들을 물리 위치들로 매핑한다. 예를 들어, 운영 체제는 하드 드라이브의 논리 메모리 위치들에 액세스하도록 구성될 수 있으며, 예를 들어, 논리 위치들은, 사용된 어드레싱 방식에 의존하여, 512 바이트들 또는 4,096 바이트들의 데이터의 블록들과 같은 논리 블록들의 연속 세트로서 어드레싱된다. 하지만, 예를 들어 NOR 또는 NAND 플래시 메모리일 수 있는 메모리 디바이스(130)는 메모리 디바이스(130)의 물리 트랜지스터 어레이 아키텍처로 인한 상이한 어드레싱 방식을 구현한다. 이에 따라, 논리-물리 매핑(102)은 하드 디스크 파사드(110)의 논리 어드레스들을 메모리 디바이스(130)의 물리 어드레스들로 매핑한다.
다수의 하드 디스크 드라이브 아키텍처들에 있어서, 데이터는, 저장될 경우, 동일한 위치에 재기입될 수 있다. 하드 디스크 드라이브의 자성 매체는 메모리 디바이스(130)의 트랜지스터들에 비해 손상 없이 다수의 판독 및 기입 사이클들을 견딜 수 있기 때문에, 논리-물리 매핑(102)과 함께 웨어 레벨링이, 메모리 디바이스(130)에서의 위치들 전반에 걸쳐 프로그래밍 및 소거 동작들을 균등하게 분포시키기 위해 사용된다. 일반적으로, 웨어 레벨링은 메모리 디바이스 내 물리 메모리 위치들 중에 기입 동작들을 균등하게 분포시킴으로써 솔리드-스테이트 메모리 디바이스의 수명을 연장하기 위한 임의의 기술이다.
단순한 웨어 레벨링 동작이 논리-물리 매핑(102)에서 반영된다. 예를 들어, 메모리 디바이스는 각각의 데이터(105, 110 및 115)에 의해 표현된 3개의 파일들을 저장한다고 가정한다. 예시의 용이함을 위해, 데이터는 논리 어드레스들 및 물리 어드레스들 양자에 의해 정의된 연속 위치들에 저장된다. 제1 파일에 대한 데이터(105)는, 메모리 디바이스(130)에서의 연속 물리 메모리 위치들의 제1 세트에 대응하는 연속 논리 메모리 위치들의 제1 세트에 저장된다. 제2 및 제3 파일들에 대한 데이터(110 및 115)는 연속 논리 메모리 위치들에 저장된다. 하지만, 제1 파일에 대한 데이터(110)는, 메모리 디바이스(130)에서의 연속 물리 메모리 위치들의 제1 세트에 저장되고, 제2 파일에 대한 데이터(115)는, 메모리 디바이스(130)에서의 연속 물리 메모리 위치들의 제2 세트에 저장된다.
포인터(120)는, 기입 동작 동안 데이터를 저장하는데 사용될 메모리 디바이스(130) 내 다음 위치(예를 들어, 메모리 위치, 메모리 블록)를 포인팅하는데 사용된다. 포인터(120) 및 매핑(102)은 메모리 디바이스(130)와 연관된 메모리 제어 로직(112)에 의해 제어된다. 양자는 부분적으로 웨어 레벨링 동작들을 달성하기 위해 사용된다.
제2 파일에 대한 데이터가 사용자에 의해 업데이트되고 제2 파일의 데이터(115)에 대한 논리 메모리 위치들이 변경되지 않는다고 가정한다. 하지만, 데이터(115)를 저장하는데 사용되는 물리 메모리 위치들은 변경된다. 예를 들어, 파일은 사이즈가 대략 20 메가바이트라고 가정한다. 업데이트된 데이터(115)는, 메모리 디바이스(130)의 상위 도면에서의 포인터(120)의 위치에서 시작하여 메모리 디바이스(130)에 기입된다. 기입 동작의 말미에, 포인터(120)는 포인터의 이전 위치에 대해 20MB의 데이터(115)를 저장하는데 필요한 양만큼 전진하였고, 환영(phantom) 블록(116)에 의해 나타낸 메모리 위치들에 이전에 저장된 변형 데이터(115)가 이제는, 환영 블록(116)의 말미와 포인터(120) 사이의 범위의 위치들에 저장된다.
또 다른 통상적으로 사용되는 프로세스 및 컴퓨터 디바이스들은 풀 디스크 암호화이다. 풀 디스크 암호화는 하드 디스크 드라이브의 모든 메모리 위치들을 암호화한다. 일부 풀 디스크 암호화 기술들에서는, 마스터 부트 레코드가 미암호화 상태로 남겨지지만, 일부 다른 풀 디스크 암호화 기술들은 마스터 부트 레코드도 암호화할 수 있다. 실제 하드 디스크 드라이브에 있어서, 파일이 삭제될 경우에도, 실제 근원적인 데이터는 여전히 하드 디스크 드라이브 상의 메모리 위치들에 저장되어 있다. 이에 따라, 풀 디스크 암호화는 소거되지 않았던 파일들에 저장된 데이터와, 삭제된 파일들에 대한 데이터 및 하드 디스크 드라이브 상에 저장된 다른 데이터의 부분들 양자로의 액세스를 금지하는데 사용된다.
풀 디스크 암호화가 전체 하드 디스크를 암호화하기 때문에, 풀 디스크 암호화를 사용하는 것은 논리 어드레스에 의해 정의된 각각의 위치에 암호화된 데이터가 기입되는 결과를 초래한다. 따라서, 논리 하드 드라이브(140)의 이러한 전체 암호화는 메모리 디바이스(130)의 메모리 위치들의 거의 전부로 매핑되고 그 거의 전부가 사용되는 결과를 초래한다. 이는 메모리 디바이스(130)에서의 각각의 메모리 위치가 겪는 프로그래밍 사이클들의 수를 대폭 증가시킬 수 있고, 따라서, 메모리 디바이스(130)를 너무 이르게 낡게 하고, 및/또는 논리-물리 매핑(102)을, 판독 및 기입 동작 횟수에 관한 성능을 저하시킬 수 있는 전진된 상태로 전진시킬 수 있다.
일부 구현들에 있어서, 메모리 디바이스(130)는, 데이터가 메모리 디바이스에서의 다른 위치들에 저장되는 경우 원래 위치들에서의 잔여 데이터를 소거하는 "플러싱" 동작을 구현할 수 있다. 예를 들어, 환영 블록(116)에 의해 나타낸 바와 같이 데이터(115)를 원래 저장한 메모리 위치들은 데이터(115)가 새로운 위치들에 저장된 이후 소거된다. 이에 따라, 환영 블록(116)에 의해 나타낸 메모리 위치들은 데이터(115)가 저장된 이후에 비게 된다(예를 들어, 모든 값들이 로직 0이거나 모든 값들이 로직 1임). 이에 따라, 데이터가 저장되어 있지 않은 디바이스(130)의 실제 물리 메모리 위치들의 데이터를 암호화할 어떠한 실질적인 필요성도 없다. 따라서, 디바이스 로직(112)은, 풀 디스크 암호화 프로세스 동안 메모리 디바이스(130)에 대한 프로그래밍 동작들의 양을 감소시키는 웨어 레벨링 기술을 구현할 수 있다.
다른 구현들에 있어서, 메모리 디바이스(130)는 플러싱 동작을 구현하지 않을 수 있다. 이에 따라, 잔여 데이터가 메모리 위치들의 일부에 유지될 수 있다. 하지만, 이들 물리 메모리 위치들이 데이터가 저장된 논리 위치들로서 더 이상 논리적으로 매핑되지 않기 때문에, 손상의 위험은 상대적으로 작다. 따라서, 잔여 데이터를 저장하는 디바이스(130)의 실제 물리 메모리 위치들의 데이터를 암호화하는 것도 생략될 수 있다. 다시 한 번, 디바이스 로직(112)은 풀 디스크 암호화 프로세스 동안 메모리 디바이스(130)에 대한 프로그래밍 동작들의 양을 감소시키는 웨어 레벨링 기술을 구현할 수 있다.
도 2는 웨어 레벨링을 구현하는 메모리 디바이스를 암호화하는 일 예의 블록 다이어그램이다. 전술된 바와 같이, 풀 디스크 암호화는 하드 디스크 상의 데이터 모두를 보호하기 위해 전체 하드 디스크를 암호화한다. 하지만, 하드 디스크와는 달리, 메모리 디바이스는 데이터(105, 110 및 115)를 저장하는데 사용된 위치들 이외의 위치들에 데이터를 저장하지 않는다(또는 대안적으로, 이들 다른 위치들에 저장된 데이터는, 데이터를 저장하는 논리 위치들로 논리적으로 매핑되지 않음). 따라서, 메모리 디바이스(130)는 풀 디스크 암호화의 목적을 실질적으로 달성하기 위해 암호화된 데이터(105, 110 및 115)를 가지기만 하면 된다.
메모리 디바이스(130) 상의 데이터(105, 110 및 115)를 암호화하는 하나의 예시적인 프로세스에 대해, 웨어 레벨링을 사용하여 메모리 디바이스 상의 데이터를 암호화하기 위한 예시적인 프로세스(300)의 플로우 다이어그램인 도 3을 참조하여 설명된다. 그 프로세스는 컴퓨터 디바이스 상에 저장된 소프트웨어에 의해 구현될 수 있다. 도 3의 한정의 일 예인 프로세스는 부팅 전(pre-boot) 및 부팅 후(post-boot) 환경에서 발생한다. 본 명세서에서 사용되는 바와 같이, 부팅 전 환경은 메인 운영 체제를 부팅하기 이전 컴퓨터 디바이스 상의 환경이다.
프로세스(300)는 부팅 전 환경을 인스턴스화한다(302). 예를 들어, 컴퓨터 상에서 구동하는 프로그램은 운영 체제로 하여금 재부팅하게 하고, 부팅 전 환경에 있어서의 다음 단계들 중 몇몇을 컴퓨터가 실행하게 하는 플래그를 설정하게 할 수 있다.
프로세스(300)는 초기의 암호해독된 상태를 갖는 볼륨의 암호화를 나타내는 맵을 생성한다(304). 예를 들어, 프로세스(300)는 디바이스(130)에 대한 논리-물리 매핑(102)에 액세스하고, 모든 논리 위치들 및 따라서 모든 물리 위치들을 미암호화된 것으로서 지정할 수 있다.
프로세스(300)는 비어 있는 메모리 위치들을 식별한다(306). 비어 있는 메모리 위치는 데이터를 저장하는데 이용가능한 위치이다. 예를 들어, 프로세스(300)는, 비어 있는 메모리 위치들로서 미할당된 메모리 위치들인 것으로 표시되어 있는 디스크 파사드(110) 표현의 논리 위치들을 식별할 수 있다. 이들 논리 위치들은, 데이터를 저장하는데 이용가능한 것으로서 표시되어 있는 메모리 디바이스(130) 내 물리 위치들(즉, 데이터가 다른 위치에 기입된 이후에도 데이터가 여전히 저장되어 있는 위치들, 또는 비어 있는 위치들)에 대응한다.
프로세스(300)는 비어 있는 메모리 위치들을 암호화된 것으로서 지정한다(310). 예를 들어, 비어 있는 것으로서 지정된 논리 위치들은 또한, 도 2의 디스크 파사드(110) 표현에 있어서 "UE -> E" 동작에 의해 표시된 바와 같이 암호화된 것으로서 지정된다. 그 할당은 각각의 미사용 섹터에 의해 상술될 수 있거나, 또는 일부 구현들에 있어서, 미사용 블록들을 커버하는 범위들에 의해 미사용 공간의 연속 블록들을 상술할 수 있다. 그 위치들은 실제 암호화 동작의 실행 없이도 암호화된 것으로서 지정된다.
미사용 범위들은 대응하는 메모리 위치들에 저장된 어떠한 데이터도 갖지 않기 때문에, 호스트 운영 체제가 미사용 범위들을 판독하지 않을 것이거나 또는 미사용 범위들에 저장된 데이터가 어떠한 값도 갖지 않을(예를 들어, 저장용으로 이용가능한 위치들 또는 비어 있는 위치들일) 가능성이 있다. 그 범위들이 암호화되어 있다고만 표시함으로써, 호스트 운영 체제 암호화 프로세스는 이들 위치들을 암호화하지 않는다. 이는, 차례로, 웨어 레벨링 테이블들에서의 증가를 방지하고, 메모리 디바이스(130)에서의 실제 물리 메모리 위치들의 불필요한 프로그래밍을 방지한다.
프로세스(300)는 부팅 전 환경으로부터 호스트 운영 체제 환경으로 부팅한다(312). 예를 들어, 프로세스가 비어 있는 메모리 위치들을 암호화된 것으로서 지정함에 있어서 그 비어 있는 메모리 위치들을 식별하는 것을 종료한 이후, 프로세스(300)는 컴퓨터 디바이스로 하여금 호스트 운영 체제로 부팅하게 한다.
프로세스(300)는 암호화된 것으로서 지정되지 않은 메모리 위치들을 암호화한다(314). 예를 들어, 호스트 운영 체제 상에서 구동하는 암호화 프로세스는 비어 있는 메모리 위치들의 암호화를 나타내는 맵에 액세스한다. 이에 따라, 이들 위치들은 암호화되지 않는다. 대신, 암호화되는 유일한 위치들은 실제 데이터를 저장하는 것으로서 표시된 위치들이다. 도 2의 예에 있어서, 실제 데이터를 저장하는 위치들은 데이터(105, 110, 및 115)의 저장에 대응하는 논리 메모리 위치들이다. 암호화 프로세스 동안, 데이터(105, 110, 및 115)는 암호화되어 암호화된 데이터(105', 110' 및 115')를 생성한다.
암호화된 데이터는 포인터(120)의 위치로부터 기입된다. 예를 들어, 메모리 디바이스(130)는 100 GB 솔리드-스테이트 드라이브이고, 포인터는 대략적으로 50 GB 위치에서 물리 메모리 위치를 참조하고 있었던 것으로 가정한다. 또한, 데이터(105, 110 및 115)는 총 25 GB인 것으로 가정한다. 풀 디스크 암호화의 결과로서, 포인터는 약 75 GB의 위치로 전진(즉, 암호화된 데이터(105', 110' 및 115')의 사이즈에 대응하는 25 GB만큼 전진)할 것이다.
상기 예는 3개 연속의 데이터 블록들로 설명되었다. 실제로, 포인터(120)는 메모리 디바이스(130)의 메모리 위치들 모두에 걸쳐 1회 이상 순환하였을 수 있고, 그 결과 메모리 디바이스(130)의 물리 위치들 내에 부분적으로 단편화된 파일들이 있을 수 있다. 여하튼, 비어 있는 메모리 위치들을 암호화된 것으로서 지정하는 맵을 생성하는 동일 프로세스는, 메모리 디바이스(130) 내에서 파일들이 단편화되어 있는 경우에 적용된다. 그러한 상황에 있어서, 암호화된 데이터는 도 2에 도시된 바와 같이 연속 블록을 형성하지 않을 수 있지만, 그럼에도 웨어 레벨링 테이블의 확장과 메모리 디바이스(130) 내 물리 메모리 위치들에 대한 불필요한 판독 및 기입 동작들이 감소될 것이다.
도 4는 웨어 레벨링을 사용하여 메모리 디바이스 상의 데이터를 암호화하기 위한 다른 예시적인 프로세스(400)의 플로우 다이어그램이다. 프로세스(400)가 부팅 전 환경과 부팅 후 환경 사이에 파티션될 수 있지만 반드시 그럴 필요는 없다는 점에 있어서 프로세스(400)는 프로세스(300)와는 상이하다. 예를 들어, 프로세스(400)를 구현하는 컴퓨터 디바이스에는 솔리드-스테이트 드라이브가 갖추어져 있다고 가정한다. 운영 체제 및 프로그램들이 디스크 파사드(110) 및 논리-물리 매핑(102)에 의존하는 어드레싱 프로세스들을 구현할 수 있지만, 풀 디스크 암호화 동작 동안, 비어 있는 메모리 위치들이 암호화된 것으로서 자동으로 지정될 수 있음을 나타내는 컴퓨터에 데이터가 저장될 수 있다.
프로세스(400)는 메모리 디바이스의 제1 및 제2 위치들을 참조하는 메모리 맵에 액세스한다(402). 제1 메모리 위치들은 메모리 디바이스에 대한 풀 디스크 암호화 동작에 의해 암호화될 데이터를 저장하고, 예를 들어, 제1 메모리 위치들은 데이터(105, 110, 및 115)를 저장하는데 사용되는 논리 메모리 위치들, 및 따라서, 물리 메모리 위치들에 대응할 수 있다. 제2 메모리 위치들은 기입 동작용으로 이용가능한 메모리 위치들, 예를 들어, 메모리 디바이스(130) 내 비어 있는 메모리 위치들, 또는 잔여 데이터를 저장하는 메모리 디바이스(130) 내 위치들에 대응한다.
프로세스(400)는 제2 메모리 위치들을 암호화된 것으로서 지정한다(404). 예를 들어, 비어 있는 것으로서 지정된 논리 위치들은 또한, 디스크 파사드(110) 표현에 있어서 "UE -> E" 동작에 의해 표시된 바와 같이 암호화된 것으로서 지정된다. 그 지정은 실제 암호화 동작의 사용을 수반하지는 않는다.
프로세스(400)는 메모리 디바이스의 제1 메모리 위치들에 저장된 데이터만을 암호화한다(406). 그렇게 함으로써, 제1 메모리 위치들 및 제2 메모리 위치들의 데이터는 디스크 암호화된 것으로서 지정된다.
프로세스(400)는 전체 메모리 디바이스를 암호화된 것으로서 지정한다(408). 예를 들어, 프로세스(400)는 전체 메모리 디바이스(130)가 암호화되고 있다고 지정하고, 이에 의해, 풀 디스크 암호화 동작을 완료한다.
그 후, 데이터가 메모리 디바이스(130)로부터 판독될 수 있고, 통상 동작의 일부로서 랜덤 액세스 메모리에서 암호해독될 수 있다. 유사하게, 데이터는 메모리 디바이스(130)에 기입하기 전에 랜덤 액세스 메모리에서 암호화될 수 있다.
도 5는 웨어 레벨링을 사용하여 메모리 디바이스 상의 데이터를 암호해독하기 위한 예시적인 프로세스(500)의 플로우 다이어그램이다. 프로세스(500)는 프로세스들(300 및 400)과 동일한 목적을 가지며, 즉, 웨어 레벨링 테이블들의 확장을 감소시키고, 메모리 디바이스(130)의 물리 위치들의 불필요한 프로그래밍 동작들의 수를 감소시키는 목적을 갖는다.
프로세스(500)는 메모리 디바이스의 제1 및 제2 위치들을 참조하는 메모리 맵에 액세스한다(502). 제1 메모리 위치들은 메모리 디바이스에 대한 풀 디스크 암호해독 동작에 의해 암호해독될 데이터를 저장하고, 예를 들어, 제1 메모리 위치들은 도 2의 암호화된 데이터(105', 110', 및 115')를 저장하는데 사용되는 논리 메모리 위치들, 및 따라서, 물리 메모리 위치들에 대응할 수 있다. 제2 메모리 위치들은 기입 동작용으로 이용가능한 메모리 위치들, 예를 들어, 메모리 디바이스(130) 내 비어 있는 메모리 위치들에 대응한다.
프로세스(500)는 제2 메모리 위치들을 미암호화된 것으로서 지정한다(504). 예를 들어, 비어 있는 것으로서 지정된 논리 위치들은 또한, 암호화된 것으로서 지정된다.
프로세스(500)는 제1 메모리 위치들 내의 데이터만을 암호해독하고(506), 그 후, 전체 메모리 디바이스들을 암호해독된 것으로 지정한다(508).
본 명세서에서 설명된 주제 및 동작들의 실시예들은, 본 명세서에서 개시된 구조들 및 그 구조적 등가물들을 포함하여, 디지털 전자 회로에서, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어에서, 또는 이들 중 하나 이상의 조합들에서 구현될 수 있다. 본 명세서에서 설명된 주제의 실시예들은 하나 이상의 컴퓨터 프로그램들, 즉, 데이터 프로세싱 장치에 의한 실행을 위해 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 컴퓨터 저장 매체 상에서 인코딩된 컴퓨터 프로그램 명령들의 하나 이상의 모듈들로서 구현될 수 있다.
컴퓨터 저장 매체는 컴퓨터-판독가능 저장 디바이스, 컴퓨터-판독가능 저장 기판, 랜덤 또는 시리얼 액세스 메모리 어레이 또는 디바이스, 또는 이들 중 하나 이상의 조합이거나 이에 포함될 수 있다. 컴퓨터 저장 매체는 또한, 하나 이상의 개별 물리 컴포넌트들 또는 매체(예를 들어, 다중의 CD들, 디스크들, 또는 다른 저장 디바이스들)이거나 이에 포함될 수 있다.
본 명세서에서 설명된 동작들은, 하나 이상의 컴퓨터-판독가능 저장 디바이스들 상에 저장되고 다른 소스들로부터 수신된 데이터에 대해 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다.
용어 "데이터 프로세싱 장치"는, 예로서, 프로그램가능 프로세서, 컴퓨터, 시스템 온 칩, 또는 상기의 복합적인 것들 또는 그 조합들을 포함하여, 데이터를 프로세싱하기 위한 모든 종류들의 장치, 디바이스들, 및 머신들을 포괄한다. 그 장치는 특수 목적 로직 회로, 예를 들어, FPGA(필드 프로그램가능 게이트 어레이) 또는 ASIC(주문형 집적회로)을 포함할 수 있다. 그 장치는 또한, 하드웨어에 부가하여, 당해 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임 환경, 가상 머신, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 그 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라구조들과 같은 다양한 상이한 컴퓨팅 모델 인프라구조들을 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트, 또는 코드라고도 알려짐)은, 컴파일형 또는 해석형 언어들, 선언형 또는 절차형 언어들을 포함하여, 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 그것은 임의의 형태로, 예를 들어, 독립형 프로그램으로서 또는 컴퓨팅 환경에서의 사용에 적합한 모듈, 컴포넌트, 서브루틴, 오브젝트, 또는 다른 유닛으로서 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템 내 파일에 대응할 수 있지만 반드시 그럴 필요는 없다. 프로그램은 다른 프로그램들 또는 데이터를 유지하는 파일의 일부에 저장되거나(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들), 당해 프로그램에 전용되는 단일 파일에 저장되거나, 또는 다중의 코디네이트된 파일들(예를 들어, 하나 이상의 모듈들, 서브-프로그램들, 또는 코드의 일부들을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 실행되거나 또는 하나의 사이트에 위치되거나 다중의 사이트들에 걸쳐 분산되고 통신 네트워크에 의해 상호접속되어 있는 다중의 컴퓨터들 상에서 실행되도록 전개될 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 플로우들은, 입력 데이터에 작용하여 출력을 생성함으로써 액션들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그램가능 프로세서들에 의해 수행될 수 있다. 프로세서들 및 로직 플로우들은 또한, 특수 목적 로직 회로, 예를 들어, FPGA(필드 프로그램가능 게이트 어레이) 또는 ASIC(주문형 집적회로)에 의해 수행될 수 있고, 장치는 또한, 그러한 특수 목적 로직 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서, 범용 및 특수 목적 양자의 마이크로프로세서들, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리, 또는 이들 양자로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수적인 엘리먼트들은, 명령들에 따라 액션을 수행하기 위한 프로세서, 그리고 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예를 들어, 자기, 광자기 디스크들 또는 광학 디스크들을 포함하거나 이러한 디바이스들로부터 데이터를 수신하거나 이러한 디바이스들로 데이터를 전송하거나 양자를 실행하도록 동작가능하게 연결될 것이다. 하지만, 컴퓨터는 그러한 디바이스들을 갖지 않아도 된다. 더욱이, 컴퓨터는 다른 디바이스, 예를 들어, 몇몇만 나열하자면, 모바일 전화기, 개인 휴대 정보 단말(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS) 수신기, 또는 휴대용 저장 디바이스(예를 들어, 유니버설 시리얼 버스(USB) 플래시 드라이브)에 내장될 수 있다. 컴퓨터 프로그램 명령들 및 데이터를 저장하는데 적합한 디바이스들은, 예로서, 반도체 메모리 디바이스들, 예를 들어, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들; 광자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하여, 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 특수 목적 로직 회로에 통합될 수 있다.
하나의 예시적인 컴퓨터 시스템이, 상기 도 1 내지 도 5에 대하여 설명된 프로세스들 및 시스템들을 구현하는데 사용될 수 있는 예시적인 컴퓨터 시스템(600)의 블록 다이어그램인 도 6에 도시되어 있다. 시스템(600)은 프로세서(610), 메모리(620), 저장 디바이스(630), 및 입력/출력 디바이스(640)를 포함한다. 컴포넌트들(610, 620, 630, 및 640) 각각은, 예를 들어, 시스템 버스(650)를 이용하여 상호접속될 수 있다. 프로세서(610)는 시스템(600) 내에서 실행을 위한 명령들을 프로세싱할 수 있다. 프로세서(610)는 메모리(620) 내 또는 저장 디바이스(630) 상에 저장된 명령들을 프로세싱할 수 있다.
메모리(620)는 시스템(600) 내의 정보를 저장한다. 일 구현에 있어서, 메모리(620)는 컴퓨터-판독가능 매체이다. 일 구현에 있어서, 메모리(620)는 휘발성 메모리 유닛이다. 다른 구현에 있어서, 메모리(620)는 비휘발성 메모리 유닛이다.
저장 디바이스(630)는 시스템(600)에 대한 대용량 저장을 제공할 수 있다. 일 구현에 있어서, 저장 디바이스(630)는 컴퓨터-판독가능 매체이다. 다양한 상이한 구현들에 있어서, 저장 디바이스(630)는, 예를 들어, 하드 디스크 디바이스, 광 디스크 디바이스, 솔리드-스테이트 드라이브, 및/또는 다른 대용량 저장 디바이스들을 포함할 수 있다.
입력/출력 디바이스(640)는 시스템(600)에 대한 입력/출력 동작들을 제공한다. 일 구현에 있어서, 입력/출력 디바이스(640)는 네트워크 인터페이스 디바이스, 예를 들어, 이더넷 카드, 시리얼 통신 디바이스, 예를 들어, RS-232 포트, 및/또는 무선 인터페이스 디바이스, 예를 들어, 802.11 카드 중 하나 이상을 포함할 수 있다. 다른 구현에 있어서, 입력/출력 디바이스는, 입력 데이터를 수신하고 출력 데이터를 다른 입력/출력 디바이스들, 예를 들어, 키보드, 프린터 및 디스플레이 디바이스들(660)로 전송하도록 구성된 드라이버 디바이스들을 포함할 수 있다.
본 명세서가 다수의 특정 구현 상세들을 포함하지만, 이들은 임의의 발명들 또는 청구될 수 있는 것의 범위에 대한 한정이 아니라, 대신, 특정 발명들의 특정 실시예들에 특정한 특징들의 설명들로서 해석되어야 한다. 개별 실시예들의 맥락에서 본 명세서에서 설명된 특정 특징들은 또한 단일 실시예에서 조합으로 구현될 수 있다. 반면, 단일 실시예의 맥락에서 설명된 다양한 특징들은 다중의 실시예들에서 개별적으로 또는 임의의 적절한 하위조합으로 구현될 수도 있다. 더욱이, 비록 특징들이 특정 조합들로 작용하는 것으로서 상기 설명되고 심지어 처음에는 그와 같이 청구될 수도 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 삭제될 수 있으며, 청구된 조합은 하위조합 또는 하위조합의 변형으로 유도될 수 있다.
유사하게, 동작들이 도면들에 있어서 특정 순서로 도시되지만, 이는, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정 순서로 또는 순차적인 순서로 수행되어야 하거나 또는 도시된 모든 동작들이 수행되어야 할 것을 요구하는 것으로 이해되지 않아야 한다. 특정 환경들에서는, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 더욱이, 상기에서 설명된 실시예들에 있어서의 다양한 시스템 컴포넌트들의 분리는 그러한 분리를 모든 실시예들에서 요구하는 것으로서 이해되지 않아야 하며, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다중의 소프트웨어 제품들로 패키징될 수 있음이 이해되어야 한다.
이와 같이, 본 주제의 특정 실시예들이 설명되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 있다. 일부 경우들에 있어서, 청구항들에 기재된 액션들은 상이한 순서로 수행될 수 있고 그럼에도 바람직한 결과들을 달성할 수 있다. 부가적으로, 첨부 도면들에 도시된 프로세스들은, 원하는 결과들을 달성하기 위해, 도시된 특정 순서 또는 순차적인 순서를 반드시 요구하는 것은 아니다. 특정 구현들에서는, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.

Claims (19)

  1. 컴퓨터에 의해, 메모리 디바이스의 어드레스 맵에 액세스하는 단계 - 상기 어드레스 맵은 상기 메모리 디바이스의 제1 메모리 위치들 및 제2 메모리 위치들을 참조하고, 상기 제1 메모리 위치들은 상기 메모리 디바이스에 대한 풀 디스크 암호화 동작에 의해 암호화될 데이터를 저장함 -;
    상기 컴퓨터에 의해, 상기 제2 메모리 위치들에 대한 암호화 동작을 수행함이 없이 상기 제2 메모리 위치들을 암호화된 것으로서 지정하는 단계; 및
    상기 컴퓨터에 의해, 상기 제1 메모리 위치들 및 상기 제2 메모리 위치들의 데이터가 디스크 암호화된 것으로서 지정되도록 상기 메모리 디바이스의 상기 제1 메모리 위치들에 저장된 데이터만을 암호화하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제2 메모리 위치들을 암호화된 것으로서 지정하는 단계는,
    연속적인 제2 메모리 위치들의 하나 이상의 세트를 결정하는 단계;
    연속적인 제2 메모리 위치들의 각각의 세트에 대해:
    대응하는 위치 범위를 결정하는 단계 - 상기 대응하는 위치 범위는 시작하는 논리 어드레스 및 종료하는 논리 어드레스를 명시함 -; 및
    상기 대응하는 위치 범위를 암호화된 것으로서 지정하는 단계
    를 포함하는 방법.
  3. 제1항에 있어서,
    상기 메모리 디바이스의 논리 어드레스 맵은 디스크 드라이브의 논리 어드레스들을 나타내는 방법.
  4. 제1항에 있어서,
    상기 메모리 디바이스는 물리 어드레스 맵을 포함하며, 상기 물리 어드레스 맵은 논리 어드레스들을 물리 어드레스들로 매핑하는 방법.
  5. 제4항에 있어서,
    암호화 프로세스는 비-확장형(non-expansive) 암호화 프로세스인 방법.
  6. 제1항에 있어서,
    암호화된 것으로서 미리 지정되지 않은 상기 메모리 디바이스의 메모리 위치들에 저장된 데이터는 비-확장형 암호화 프로세스를 사용하여 암호화되는 방법.
  7. 제1항에 있어서,
    상기 컴퓨터에 의해, 상기 데이터를 암호화한 이후 메모리 디바이스의 논리 어드레스 맵에 액세스하는 단계;
    상기 컴퓨터에 의해, 상기 제2 메모리 위치들을 암호해독된 것으로서 지정하는 단계; 및
    상기 컴퓨터에 의해, 상기 제1 메모리 위치들 및 상기 제2 메모리 위치들의 데이터가 암호해독된 것으로서 지정되도록 상기 메모리 디바이스의 상기 제1 메모리 위치들에 저장된 데이터만을 암호해독하는 단계
    를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 제2 메모리 위치들을 암호화된 것으로서 지정하는 단계는 부팅 전( pre-boot) 환경으로부터 상기 제2 메모리 위치들을 암호화된 것으로서 지정하는 단계를 포함하고;
    상기 메모리 디바이스의 상기 제1 메모리 위치들에 저장된 데이터만을 암호화하는 단계는 호스트 운영 체제 환경으로부터 상기 메모리 디바이스의 상기 제1 메모리 위치들에 저장된 데이터만을 암호화하는 단계를 포함하는 방법.
  9. 제1항에 있어서,
    상기 어드레스 맵에 액세스하는 단계는 상기 메모리 디바이스의 논리 어드레스 맵에 액세스하는 단계를 포함하고, 상기 논리 어드레스 맵은 상기 메모리 디바이스의 제1 메모리 위치들 및 제2 메모리 위치들을 논리 어드레스들에 의해 참조하고, 상기 제1 및 제2 메모리 위치들은 매핑 테이블에서의 상기 논리 어드레스들에 매핑되는 물리 어드레스들에 의해 어드레싱되는 물리 메모리 위치들에 대응하며;
    상기 제2 메모리 위치들을 암호화된 것으로서 지정하는 단계는 제2 논리 메모리 위치들을 암호화된 것으로서 지정하는 단계를 포함하는 방법.
  10. 제1항에 있어서,
    상기 제2 메모리 위치들은 비어 있는 메모리 위치들을 포함하는 방법.
  11. 명령어들을 저장한 적어도 하나의 머신 액세스 가능한 저장 매체로서,
    상기 명령어들은 머신에서 실행될 때, 상기 머신으로 하여금,
    메모리 디바이스의 어드레스 맵에 액세스하고 - 상기 어드레스 맵은 상기 메모리 디바이스의 제1 메모리 위치들 및 제2 메모리 위치들을 참조하고 상기 제1 메모리 위치들은 상기 메모리 디바이스에 대한 풀 디스크 암호화 동작에 의해 암호화될 데이터를 저장함 -;
    상기 제2 메모리 위치들에 대한 암호화 동작을 수행함이 없이 상기 제2 메모리 위치들을 암호화된 것으로서 지정하고;
    상기 제1 메모리 위치들 및 상기 제2 메모리 위치들의 데이터가 디스크 암호화된 것으로서 지정되도록 상기 메모리 디바이스의 상기 제1 메모리 위치들에 저장된 데이터만을 암호화하게 하는 저장 매체.
  12. 제11항에 있어서,
    상기 제2 메모리 위치들을 암호화된 것으로서 지정하는 것은,
    연속적인 제2 메모리 위치들의 하나 이상의 세트를 결정하는 것;
    연속적인 제2 메모리 위치들의 각각의 세트에 대해:
    대응하는 위치 범위를 결정하는 것 - 상기 대응하는 위치 범위는 시작하는 논리 어드레스 및 종료하는 논리 어드레스를 명시함 -; 및
    상기 대응하는 위치 범위를 암호화된 것으로서 지정하는 것
    을 포함하는 저장 매체.
  13. 제11항에 있어서,
    상기 메모리 디바이스의 논리 어드레스 맵은 디스크 드라이브의 논리 어드레스들을 나타내는 저장 매체.
  14. 제11항에 있어서,
    상기 메모리 디바이스는 물리 어드레스 맵을 포함하며, 상기 물리 어드레스 맵은 논리 어드레스들을 물리 어드레스들로 매핑하는 저장 매체.
  15. 제11항에 있어서,
    암호화 프로세스는 비-확장형 암호화 프로세스인 저장 매체.
  16. 제11항에 있어서,
    상기 명령어들은, 실행될 때, 상기 머신으로 하여금,
    상기 데이터를 암호화한 이후 메모리 디바이스의 논리 어드레스 맵에 액세스하고;
    상기 제2 메모리 위치들을 암호해독된 것으로서 지정하고;
    상기 제1 메모리 위치들 및 상기 제2 메모리 위치들의 데이터가 암호해독된 것으로서 지정되도록 상기 메모리 디바이스의 상기 제1 메모리 위치들에 저장된 데이터만을 암호해독하게 하는 저장 매체.
  17. 제11항에 있어서,
    상기 제2 메모리 위치들을 암호화된 것으로서 지정하는 것은 부팅 전 환경으로부터 상기 제2 메모리 위치들을 암호화된 것으로서 지정하는 것을 포함하고;
    상기 메모리 디바이스의 상기 제1 메모리 위치들에 저장된 데이터만을 암호화하는 것은 호스트 운영 체제 환경으로부터 상기 메모리 디바이스의 상기 제1 메모리 위치들에 저장된 데이터만을 암호화하는 것을 포함하는 저장 매체.
  18. 제11항에 있어서,
    상기 어드레스 맵에 액세스하는 것은 상기 메모리 디바이스의 논리 어드레스 맵에 액세스하는 것을 포함하고, 상기 논리 어드레스 맵은 상기 메모리 디바이스의 제1 메모리 위치들 및 제2 메모리 위치들을 논리 어드레스들에 의해 참조하고, 상기 제1 및 제2 메모리 위치들은 매핑 테이블에서의 상기 논리 어드레스들에 매핑되는 물리 어드레스들에 의해 어드레싱되는 물리 메모리 위치들에 대응하며;
    상기 제2 메모리 위치들을 암호화된 것으로서 지정하는 것은 제2 논리 메모리 위치들을 암호화된 것으로서 지정하는 것을 포함하는 저장 매체.
  19. 메모리 디바이스의 어드레스 맵에 액세스하기 위한 수단 - 상기 어드레스 맵은 상기 메모리 디바이스의 제1 메모리 위치들 및 제2 메모리 위치들을 참조하고, 상기 제1 메모리 위치들은 상기 메모리 디바이스에 대한 풀 디스크 암호화 동작에 의해 암호화될 데이터를 저장함 -;
    상기 제2 메모리 위치들에 대한 암호화 동작을 수행함이 없이 상기 제2 메모리 위치들을 암호화된 것으로서 지정하기 위한 수단; 및
    상기 제1 메모리 위치들 및 상기 제2 메모리 위치들의 데이터가 디스크 암호화된 것으로서 지정되도록 상기 메모리 디바이스의 상기 제1 메모리 위치들에 저장된 데이터만을 암호화하기 위한 수단
    을 포함하는 시스템.
KR1020137028885A 2011-04-05 2012-04-05 웨어 레벨링을 사용한 메모리 디바이스의 암호화 KR101502718B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/079,889 US8495386B2 (en) 2011-04-05 2011-04-05 Encryption of memory device with wear leveling
US13/079,889 2011-04-05
PCT/US2012/032330 WO2012138865A1 (en) 2011-04-05 2012-04-05 Encryption of memory device with wear leveling

Publications (2)

Publication Number Publication Date
KR20140033362A KR20140033362A (ko) 2014-03-18
KR101502718B1 true KR101502718B1 (ko) 2015-03-13

Family

ID=46025916

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137028885A KR101502718B1 (ko) 2011-04-05 2012-04-05 웨어 레벨링을 사용한 메모리 디바이스의 암호화

Country Status (6)

Country Link
US (1) US8495386B2 (ko)
EP (1) EP2695067B1 (ko)
JP (1) JP5721901B2 (ko)
KR (1) KR101502718B1 (ko)
CN (1) CN103502960B (ko)
WO (1) WO2012138865A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8862902B2 (en) * 2011-04-29 2014-10-14 Seagate Technology Llc Cascaded data encryption dependent on attributes of physical memory
CN103870770A (zh) * 2014-02-20 2014-06-18 北京深思数盾科技有限公司 一种对磁盘进行保护的方法及系统
US8990589B1 (en) 2014-09-18 2015-03-24 Kaspersky Lab Zao System and method for robust full-drive encryption
US10296354B1 (en) * 2015-01-21 2019-05-21 Pure Storage, Inc. Optimized boot operations within a flash storage array
US10162537B2 (en) * 2015-09-10 2018-12-25 Samsung Electronics Co., Ltd. Methods and systems to detect silent corruption of data
US11036651B2 (en) * 2018-06-29 2021-06-15 Micron Technology, Inc. Host side caching security for flash memory
CN112597071B (zh) * 2020-12-09 2024-03-26 北京地平线机器人技术研发有限公司 数据存储方法、获取方法、装置、电子设备以及介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090089590A1 (en) * 2007-09-30 2009-04-02 Lenovo (Singapore) Pte.Ltd Merging external nvram with full disk encryption

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073142A (en) 1997-06-23 2000-06-06 Park City Group Automated post office based rule analysis of e-mail messages and other data objects for controlled distribution in network environments
US5987610A (en) 1998-02-12 1999-11-16 Ameritech Corporation Computer virus screening methods and systems
JP3389186B2 (ja) * 1999-04-27 2003-03-24 松下電器産業株式会社 半導体メモリカード及び読み出し装置
KR100769437B1 (ko) * 1999-09-01 2007-10-22 마츠시타 덴끼 산교 가부시키가이샤 분배 시스템, 반도체 메모리 카드, 수신장치, 컴퓨터가판독할 수 있는 기록매체 및 수신방법
US6460050B1 (en) 1999-12-22 2002-10-01 Mark Raymond Pace Distributed content identification system
US6901519B1 (en) 2000-06-22 2005-05-31 Infobahn, Inc. E-mail virus protection system and method
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
JP4074057B2 (ja) * 2000-12-28 2008-04-09 株式会社東芝 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法
US7036020B2 (en) * 2001-07-25 2006-04-25 Antique Books, Inc Methods and systems for promoting security in a computer system employing attached storage devices
GB2385951A (en) * 2001-09-21 2003-09-03 Sun Microsystems Inc Data encryption and decryption
ATE372578T1 (de) * 2002-10-28 2007-09-15 Sandisk Corp Automatischer abnutzungsausgleich in einem nicht- flüchtigen speichersystem
US7752676B2 (en) * 2006-04-18 2010-07-06 International Business Machines Corporation Encryption of data in storage systems
US7660959B2 (en) * 2006-09-28 2010-02-09 International Business Machines Corporation Managing encryption for volumes in storage pools
CN101632087B (zh) * 2007-01-24 2013-02-13 哈明头株式会社 存储媒体中的数据变换方法、装置以及程序
KR101047213B1 (ko) * 2007-06-08 2011-07-06 후지쯔 가부시끼가이샤 암호화 장치, 암호화 방법 및 컴퓨터 판독가능한 기록 매체
JP2009015357A (ja) * 2007-06-29 2009-01-22 Toshiba Corp ディスク制御プログラム、ディスク制御装置、及びディスク制御方法
JP2009151401A (ja) * 2007-12-19 2009-07-09 Hitachi Ltd 暗号機能を有するストレージ装置におけるボリューム管理方法
US8266449B2 (en) * 2009-03-31 2012-09-11 Lenovo (Singapore) Pte. Ltd. Security for storage devices
US8176295B2 (en) * 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
US8281154B2 (en) * 2009-07-23 2012-10-02 International Business Machines Corporation Encrypting data in volatile memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090089590A1 (en) * 2007-09-30 2009-04-02 Lenovo (Singapore) Pte.Ltd Merging external nvram with full disk encryption

Also Published As

Publication number Publication date
JP5721901B2 (ja) 2015-05-20
CN103502960B (zh) 2017-02-15
EP2695067A1 (en) 2014-02-12
EP2695067B1 (en) 2017-09-27
WO2012138865A1 (en) 2012-10-11
JP2014516438A (ja) 2014-07-10
US20120260101A1 (en) 2012-10-11
CN103502960A (zh) 2014-01-08
KR20140033362A (ko) 2014-03-18
US8495386B2 (en) 2013-07-23

Similar Documents

Publication Publication Date Title
KR101502718B1 (ko) 웨어 레벨링을 사용한 메모리 디바이스의 암호화
US9842030B2 (en) Data storage device and flash memory control method
US20230195654A1 (en) Namespace encryption in non-volatile memory devices
US10191688B2 (en) Memory system and information processing system
US20180239697A1 (en) Method and apparatus for providing multi-namespace using mapping memory
US8489855B2 (en) NAND flash-based solid state drive and method of operation
EP2761471B1 (en) Statistical wear leveling for non-volatile system memory
CN109144886B (zh) 数据储存装置
CN104423894B (zh) 数据储存装置以及快闪存储器控制方法
US20120079289A1 (en) Secure erase system for a solid state non-volatile memory device
US20110099323A1 (en) Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US9058296B2 (en) Data processing method, memory storage device and memory control circuit unit
US9141302B2 (en) Snapshots in a flash memory storage system
US8886963B2 (en) Secure relocation of encrypted files
JP2005182793A (ja) 頻繁にアクセスされたセクタの動作による不揮発性メモリに対するより速い書込み動作
CN103984910A (zh) 一种系统分区隐藏方法
JP2015507798A (ja) メモリ・モジュールにおいてデータ・エンティティを消去するための方法
KR20170108334A (ko) 메모리 시스템 및 그 동작 방법
CN109521944A (zh) 数据储存装置以及数据储存方法
KR20230062556A (ko) 플래시 메모리 로컬 퍼지
JP2008204460A (ja) ディスク・パーティションのほぼ瞬時のバックアップおよび復元
US9671964B2 (en) Method of securely erasing a non-volatile semiconductor mass memory, computer system, and computer program product
US10846019B2 (en) Semiconductor device
KR20170095822A (ko) 고체 상태 드라이브들에서 입력 및 출력 동작들의 혼재의 감소
JP2008112455A (ja) メモリカード

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190227

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 6