KR20130101147A - 인플레이스 암호화 시스템 및 방법 - Google Patents

인플레이스 암호화 시스템 및 방법 Download PDF

Info

Publication number
KR20130101147A
KR20130101147A KR1020137020578A KR20137020578A KR20130101147A KR 20130101147 A KR20130101147 A KR 20130101147A KR 1020137020578 A KR1020137020578 A KR 1020137020578A KR 20137020578 A KR20137020578 A KR 20137020578A KR 20130101147 A KR20130101147 A KR 20130101147A
Authority
KR
South Korea
Prior art keywords
volume
unencrypted
encryption
computing device
encrypted
Prior art date
Application number
KR1020137020578A
Other languages
English (en)
Other versions
KR101565223B1 (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 KR20130101147A publication Critical patent/KR20130101147A/ko
Application granted granted Critical
Publication of KR101565223B1 publication Critical patent/KR101565223B1/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

Abstract

인플레이스 암호화를 수행하는 시스템, 방법, 및 비일시적 컴퓨터 판독가능 저장 매체가 본 명세서에 개시되어 있다. 이 방법을 실시하도록 구성되어 있는 시스템은 컴퓨팅 장치의 암호화되지 않은 볼륨을 암호화하라는 요청을 사용자로부터 수신하고, 볼륨 키를 식별, 발생 및/또는 랜덤하게 선택한다. 이어서, 이 시스템은 암호화되지 않은 볼륨을 부분들로 나누어져 있는 암호화가능 포맷으로 변환한다. 이어서, 이 시스템은 사용자가 암호화 동안 컴퓨팅 장치를 사용할 수 있게 해주기 위해, 볼륨 키에 기초하여, 암호화가능 볼륨을 부분별로 암호화한다. 이 시스템은 암호화 진행 상태를 유지하고, 암호화 진행 상태를 디스플레이할 수 있다. 이 시스템은 암호화가능 볼륨에 대한 디스크 액세스를 모니터링할 수 있고, 디스크 액세스가 제1 임계값을 초과할 때, 디스크 액세스가 제2 임계값 미만으로 떨어질 때까지 암호화를 중단하기 위해 백오프 알고리즘을 적용할 수 있다. 이와 같이, 암호화가 백그라운드에서 행해지는 동안 컴퓨팅 장치가 사용될 수 있다.

Description

인플레이스 암호화 시스템 및 방법{SYSTEM AND METHOD FOR IN-PLACE ENCRYPTION}
관련 출원의 상호 참조
본 출원은 2011년 1월 5일자로 출원된, 발명의 명칭이 "인플레이스 암호화 시스템 및 방법(SYSTEM AND METHOD FOR IN-PLACE ENCRYPTION)"인 미국 특허 출원 제12/985,190호(참조 문헌으로서 그 전체 내용이 본 명세서에 포함됨)를 기초로 우선권을 주장한다.
본 개시 내용은 저장 장치를 암호화하는 것에 관한 것이며, 보다 구체적으로는, 사용자가 컴퓨터를 계속 사용하는 동안 컴퓨터 내의 저장 장치의 인플레이스 암호화(in-place encryption)에 관한 것이다.
저장 장치가 점점 더 용량이 증가하고 어디에나 있게 됨에 따라, 많은 사용자 및 조직은 자연스럽게 저장된 데이터를 보호하는 것에 중점을 두고 있다. 사용자는 ID 도용(identity theft), 산업 스파이 행위, 프라이버시 침해, 해킹 등을 비롯한 어떤 위협으로부터 데이터를 보호하고자 할 수 있다. 저장 장치에 저장된 데이터는 물리 저장 장치의 도난은 물론 네트워크 기반 공격을 통한 불법 액세스에 취약하다. 회사는 통상적으로 기밀 사항인 사용자 데이터 또는 영업 비밀을 보호하는 데 관심을 가지고 있는 반면, 개인 사용자는 통상적으로 은행 계좌 정보, 인적 사항 등과 같은 개인 정보의 의도하지 않은 유출에 관심을 가지고 있다.
데이터를 보호하는 한가지 접근 방법은 암호화이다. 암호화는 물리 저장 장치의 도난을 방지하지 않지만, 암호화 패스워드가 없는 경우 물리 저장 장치에 저장된 데이터를 무용지물로 만든다. TrueCrypt, FreeOTFE, 및 CrossCrypt 등의 많은 상용의 통합된 오픈 소스 암호화 옵션이 현재 시장에 나와 있다. 이러한 암호화의 채택에 대한, 특히 보다 안전한 전체 디스크 암호화에 대한 가장 큰 장벽은 암호화되지 않은 드라이브를 암호화하는 데 필요한 시간 및 그와 연관된 불편함이다. 저장 장치의 크기, 프로세서 속도 및 암호화 알고리즘에 따라, 개인용 컴퓨터는 드라이브를 암호화하는 데 최대 8시간 이상 걸린다. 이 시간 동안, 사용자는 다른 컴퓨팅 작업을 위해 컴퓨터를 사용할 수 없다. 예를 들어, TrueCrypt에 대한 한 온라인 사용 설명서(http://www.randyjensenonline.com/blog/using-truecrypt-to-encrypt-your-entire-hard-drive에 있음)는 다음과 같이 말함으로써 저장 장치를 암호화하는 것의 현황을 요약하고 있다: "단순히 '암호화' 버튼을 클릭하고, 와이프 모드(wipe mode) 및 암호화 알고리즘에 따라, 가서 커피를 한잔 마시거나 밤새도록 실행되도록 잠자러 가세요." 그에 따라, 많은 사용자는 그의 저장 장치를 암호화할 필요를 느끼지만, 저장 장치를 암호화하는 것과 연관된 시간 및 번거로움으로 인해 그렇게 하지 못한다.
본 개시 내용의 부가의 특징 및 이점이 이하의 설명에서 기술될 것이며, 부분적으로 이 설명으로부터 명백하게 되거나 본 명세서에 개시된 원리의 실시에 의해 알게 될 수 있다. 본 개시 내용의 특징 및 이점이 첨부된 특허청구범위에 특정되어 있는 수단 및 조합에 의해 실현되고 달성될 수 있다. 본 개시 내용의 이들 및 기타 특징이 이하의 설명 및 첨부된 특허청구범위로부터 더욱 명백하게 되거나, 이후에 본 명세서에 기재된 원리의 실시에 의해 알게 될 수 있다.
저장 볼륨(storage volume)을 암호화하는 시스템, 방법 및 비일시적 컴퓨터 판독가능 저장 매체가 개시되어 있다. 이 방법을 실시하도록 구성된 시스템은 먼저 컴퓨팅 장치의 암호화되지 않은 볼륨을 암호화하라는 요청을 사용자로부터 수신한다. 이 시스템은 볼륨 키(volume key)를 식별, 발생 및/또는 랜덤하게 선택하고, 암호화되지 않은 볼륨을 암호화가능 포맷(encryptable format)으로 변환하여 부분들(portions)로 나누어져 있는 암호화가능 볼륨(encryptable volume)을 생성한다. 이어서, 이 시스템은 사용자가 암호화 동안 컴퓨팅 장치를 사용할 수 있게 해주기 위해, 볼륨 키에 기초하여, 암호화가능 볼륨을 부분별로(portion by portion) 암호화한다. 이 시스템은 선형 방식, 랜덤 방식, 미사용 부분 방식, 및/또는 중요도 순서 방식을 사용하여 암호화가능 볼륨을 부분별로 암호화할 수 있다. 이 시스템은 암호화가능 볼륨 상에 작업 공간을 예비해두고, 각자의 부분 각각이 암호화될 때 각자의 부분 각각에 대한 사본을 작업 공간에 저장할 수 있다. 작업 공간은 또한 파일 시스템 메타데이터를 저장할 수 있다. 어떤 경우에, 이 시스템은 작업 공간을 위한 자리를 만들기 위해 암호화되지 않은 볼륨을 축소(shrink)시킨다. 이와 같이, 저장 장치가 암호화되고 있는 동안에 사용자가 정상적으로 컴퓨터를 사용할 수 있다는 새로운 결실이 얻어지며, 그로써 암호화가 널리 채택되는 것을 방해하는 가장 큰 걸림돌 중의 하나가 제거된다. 다른 새로운 결실은 이 시스템이 예상된 또는 예기치 않은 전원 꺼짐 또는 재시작 이벤트 이후 데이터 손실 없이 일관된 상태로 장치를 암호화하는 것을 재개할 수 있다는 것이다.
이 시스템은, 심지어 시스템 재부팅에 걸쳐서도, 암호화 진행 상태를 유지하고, 암호화 진행 상태를 사용자에게 디스플레이할 수 있다. 암호화 동안 정상적인 사용을 용이하게 해주고 저장 장치를 혹사시키는 것을 피하기 위해, 이 시스템은 암호화가능 볼륨에 대한 사용자 디스크 액세스를 모니터링하고, 사용자 디스크 액세스가 제1 임계값을 초과할 때, 사용자 디스크 액세스가 제2 임계값 미만으로 떨어질 때까지 또는 어떤 다른 미리 정해진 또는 랜덤한 기간 동안 암호화를 일시적으로 중단하기 위해 백오프 알고리즘을 적용할 수 있다. 이 시스템은, 각자의 부분이 암호화되고 있는 동안 컴퓨팅 장치가 각자의 부분과의 정보 트랜잭션(information transaction)을 요청할 때, 정보 트랜잭션을 각자의 부분의 임시 사본으로 리디렉션할 수 있다. 선택적으로, 이 시스템은 각자의 부분이 성공적으로 암호화(또는 복호화의 경우에, 복호화)될 때까지 정보 트랜잭션을 지연시킬 수 있다. 이 방식에 의해 유입된 지연은, 사용자가 지연을 알아챈다하더라도, 사용자에게 단지 극히 작게 보일 것이다.
이 시스템은, 각자의 부분을 판독하고, 각자의 부분의 사본을 메모리에 저장하며, 메모리에서 각자의 부분의 사본을 암호화하여 암호화된 각자의 부분을 생성하고, 각자의 부분의 임시 사본을 생성하며, 각자의 부분에 대한 액세스 요청을 각자의 부분의 임시 사본으로 일시적으로 리디렉션하는 것에 의해, 암호화가능 볼륨을 부분별로 암호화할 수 있다. 암호화된 부분은 임시 장소에 저장되고, 이 임시 장소는 암호화된 각자의 부분의 영구적 장소가 되며, 이전의 암호화되지 않은 부분은 다른 부분의 암호화된 버전을 보유하기 위한 임시 장소가 된다. 이 부분들은 세그먼트, 섹터, 트랙, 실린더, 헤드 등의 균일한 크기를 가질 수 있거나, 적응적 크기를 가질 수 있다. 이 부분들은 암호화되지 않은 볼륨의 물리적 특성, 암호화되지 않은 볼륨에서 실행 중인 운영 체제의 속성, 사용자 행위, 성능 고려사항, 전력 소모 고려사항, 잡음 고려사항, 열 임계값 고려사항, 및 컴퓨팅 장치의 슬립 상태 중 적어도 하나에 기초하여 적응적으로 크기 조정될 수 있다. 한 측면에서, 이 시스템은 보다 낮은 전력 상태로 언제 이동해야 하는지를 결정하기 위해 이 시스템이 얼마 동안 "유휴" 상태에 있었는지를 고려할 때 인플레이스 암호화 또는 복호화를 위해 행해진 디스크 액세스를 무시한다.
이 시스템은 프로세서, 적어도 하나의 파티션을 가지는 저장 장치, 및 프로세서를 제어하고 저장 장치의 적어도 하나의 파티션의 적어도 일부에 존재하는 운영 체제를 포함할 수 있다. 이 시스템은 프로세서를 제어하여, 사용자로부터 암호화 요청을 수신하고, 암호화 볼륨 키를 식별하며, 암호화되지 않은 파티션을 암호화가능 포맷으로 변환하여 영역들(regions)로 나누어진 암호화가능 파티션을 생성하고, 사용자가 암호화 동안 컴퓨팅 장치를 사용할 수 있게 해주기 위해, 암호화 볼륨 키에 기초하여, 암호화가능 파티션을 영역별로(region by region) 암호화하는 것에 의해 적어도 하나의 파티션의 암호화되지 않은 파티션을 암호화하도록 구성되어 있는 암호화 모듈을 포함할 수 있다. 이 시스템은 프로세서를 제어하여, 복호화 요청을 수신하고, 암호화된 파티션과 연관되어 있는 복호화 볼륨 키를 검색하며, 암호화된 파티션이 이미 복호화되어 있는 것처럼 사용자가 복호화 동안 컴퓨팅 장치를 사용할 수 있게 해주기 위해, 복호화 볼륨 키에 기초하여, 암호화된 파티션을 블록별로(block by block) 복호화하는 것에 의해 적어도 하나의 파티션의 암호화된 파티션을 복호화하도록 구성되어 있는 복호화 모듈을 포함할 수 있다.
본 명세서에 기재된 방식들은 사용자가 암호화 프로세스 동안 데이터 일관성 있고 데이터 손실 없이 운영 체제를 정상적인 방식으로 사용할 수 있으면서 운영 체제를 저장하고 있는 저장 장치를 암호화하기 시작할 수 있게 해준다.
본 개시 내용의 상기한 이점 및 특징과 기타 이점 및 특징이 달성될 수 있는 방식을 설명하기 위해, 이상에서 간략히 설명한 원리의 보다 상세한 설명이 첨부 도면에 도시되어 있는 본 개시 내용의 구체적인 실시예를 참조하여 행해질 것이다. 이들 도면이 본 개시 내용의 예시적인 실시예만을 도시하고 있고 따라서 본 개시 내용의 범위를 제한하는 것으로 간주되어서는 안된다는 것을 염두에 두고서, 본 개시 내용의 원리가 첨부 도면을 사용하여 보다 구체적이고 상세하게 기술되고 설명된다.
도 1은 예시적인 시스템 실시예를 나타낸 도면.
도 2는 암호화되지 않은 저장 볼륨 및 암호화된 저장 볼륨을 나타낸 도면.
도 3은 인플레이스 암호화 동안 파일 시스템에 대한 운영 체제 요청을 가로채는 계층을 나타낸 도면.
도 4는 인플레이스 암호화 동안 볼륨의 예시적인 변환을 나타낸 도면.
도 5는 인플레이스 암호화를 수행하는 예시적인 방법 실시예를 나타낸 도면.
본 개시 내용의 다양한 실시예가 이하에서 상세히 기술된다. 특정의 구현들에 대해 기술되어 있지만, 이것이 단지 예시를 위한 것이라는 것을 잘 알 것이다. 관련 기술 분야의 당업자라면 본 개시 내용의 사상 및 범위를 벗어나지 않고 다른 구성요소 및 구성이 사용될 수 있다는 것을 잘 알 것이다.
본 개시 내용은 암호화를 인에이블 및 디스에이블시키는 사용자 경험을 간소화 및 단순화할 기술 분야의 필요성을 해결한다. 이 개념을 실시하기 위해 이용될 수 있는 도 1의 기본적인 범용 시스템 또는 컴퓨팅 장치의 간략한 서론적 설명이 본 명세서에 개시되어 있다. 이어서, 인플레이스 암호화에 대한 방법 및 방식의 보다 상세한 설명이 이어질 것이다. 다수의 실시예가 기재되어 있는 것처럼, 다수의 변형례에 대해 본 명세서에서 논의될 것이다. 이제부터, 본 개시 내용은 도 1을 참조한다.
도 1을 참조하면, 예시적인 시스템(100)은 처리 장치(CPU 또는 프로세서)(120)와, 판독 전용 메모리(ROM)(140) 및 랜덤 액세스 메모리(RAM)(150)와 같은 시스템 메모리(130)를 비롯한 다양한 시스템 구성요소를 프로세서(120)에 연결시키는 시스템 버스(110)를 포함하는 범용 컴퓨팅 장치(100)를 포함한다. 시스템(100)은 프로세서(120)와 직접 연결되어 있거나, 그에 아주 근접해 있거나, 그의 일부로서 통합되어 있는 고속 메모리의 캐시(122)를 포함할 수 있다. 시스템(100)은 프로세서(120)에 의한 빠른 액세스를 위해 데이터를 메모리(130) 및/또는 저장 장치(160)로부터 캐시로 복사한다. 이러한 방식으로, 캐시는 데이터를 기다리는 동안의 프로세서(120) 지연을 피하는 성능 향상을 제공한다. 이들 및 기타 모듈은 다양한 동작을 수행하기 위해 프로세서(120)를 제어하거나 프로세서(120)를 제어하도록 구성되어 있을 수 있다. 기타 시스템 메모리(130)도 역시 사용될 수 있다. 메모리(130)는 상이한 성능 특성을 갖는 다수의 상이한 유형의 메모리를 포함할 수 있다. 본 개시 내용이 2개 이상의 프로세서(120)를 갖는 컴퓨팅 장치(100) 상에서 또는 더 높은 처리 능력을 제공하기 위해 서로 네트워크로 연결된 컴퓨팅 장치들의 그룹 또는 클러스터 상에서 동작할 수 있다는 것을 잘 알 수 있다. 프로세서(120)는 임의의 범용 프로세서 및 하드웨어 모듈 또는 소프트웨어 모듈 - 저장 장치(160)에 저장되어 프로세서(120)를 제어하도록 구성되어 있는 모듈 1(162), 모듈 2(164) 및 모듈 3(166) - 은 물론, 소프트웨어 명령어가 실제의 프로세서 설계에 포함되어 있는 특수 목적 프로세서를 포함할 수 있다. 프로세서(120)는 기본적으로 다수의 코어 또는 프로세서, 버스, 메모리 제어기, 캐시 등을 포함하는 완전히 자체-완비된 컴퓨팅 시스템일 수 있다. 멀티-코어 프로세서는 대칭적이거나 비대칭적일 수 있다.
시스템 버스(110)는 메모리 버스 또는 메모리 제어기, 주변 장치 버스, 및 각종의 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 비롯한 몇가지 유형의 버스 구조 중 임의의 것일 수 있다. ROM(140) 등에 저장된 기본 입/출력 시스템(BIOS)은 시동 중과 같은 때에 컴퓨팅 장치(100) 내의 구성요소들 사이에서 정보를 전송하는 데 도움을 주는 기본 루틴을 제공할 수 있다. 컴퓨팅 장치(100)는 또한 하드 디스크 드라이브, 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브 등과 같은 저장 장치(160)를 포함한다. 저장 장치(160)는 프로세서(120)를 제어하는 소프트웨어 모듈(162, 164, 166)을 포함할 수 있다. 다른 하드웨어 또는 소프트웨어 모듈이 생각되고 있다. 저장 장치(160)는 드라이브 인터페이스에 의해 시스템 버스(110)에 연결된다. 이들 드라이브 및 연관된 컴퓨터 판독가능 저장 매체는 컴퓨팅 장치(100)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다. 한 측면에서, 특정의 기능을 수행하는 하드웨어 모듈은 기능을 수행하는 데 필요한 하드웨어 구성요소 - 프로세서(120), 버스(110), 디스플레이(170), 기타 등등 - 와 관련하여 비일시적 컴퓨터 판독가능 매체에 저장되는 소프트웨어 구성요소를 포함한다. 기본적인 구성요소가 당업자에게 공지되어 있고, 장치의 유형 - 장치(100)가 소형의 핸드헬드 컴퓨팅 장치인지, 데스크톱 컴퓨터인지 또는 컴퓨터 서버인지 - 에 따라 적절한 변형이 생각되고 있다.
본 명세서에 기술된 예시적인 실시예가 하드 디스크(160)를 이용하고 있지만, 당업자라면 자기 카세트, 플래시 메모리 카드, DVD(digital versatile disk), 카트리지, RAM(random access memory)(150), ROM(read only memory)(140), 비트 스트림을 포함하는 케이블 또는 무선 신호, 기타 등등과 같은 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 다른 종류의 컴퓨터 판독가능 매체도 예시적인 운영 환경에서 사용될 수 있다는 것을 잘 알 것이다. 비일시적 컴퓨터 판독가능 저장 매체는 명백히 에너지, 반송파 신호, 전자기파, 및 신호 그 자체와 같은 매체를 배제한다.
컴퓨팅 장치(100)와의 사용자 상호작용을 가능하게 해주기 위해, 입력 장치(190)는 음성에 대한 마이크, 제스처 또는 그래픽 입력에 대한 터치-감응 스크린, 키보드, 마우스, 움직임 입력, 음성, 등과 같은 임의의 수의 입력 메커니즘을 나타낸다. 출력 장치(170)는 또한 당업자에 공지된 다수의 출력 메커니즘 중 하나 이상일 수 있다. 어떤 경우에, 다중 모드 시스템은 사용자가 컴퓨팅 장치(100)와 통신하기 위해 여러 종류의 입력을 제공할 수 있게 해준다. 통신 인터페이스(180)는 일반적으로 사용자 입력 및 시스템 출력을 통제하고 관리한다. 임의의 특정의 하드웨어 구성에서 동작하는 것에 어떤 제한도 없으며, 따라서 여기서의 기본적인 특징이, 개발될 때, 개선된 하드웨어 또는 펌웨어 구성으로 용이하게 치환될 수 있다.
설명의 명확함을 위해, 예시적인 시스템 실시예는 "프로세서" 또는 프로세서(120)로 표시된 기능 블록을 포함하는 개별 기능 블록을 포함하는 것으로 제시된다. 이들 블록이 나타낼 수 있는 기능은 공유 또는 전용 하드웨어 - 소프트웨어를 실행할 수 있는 하드웨어 및 범용 프로세서 상에서 실행되는 소프트웨어와 동등한 것으로서 동작하도록 제작된 프로세서(120)와 같은 하드웨어를 포함하지만, 이들로 제한되지 않음 - 를 사용하여 제공될 수 있다. 예를 들어, 도 1에 제시된 하나 이상의 프로세서의 기능은 하나의 공유 프로세서 또는 다수의 프로세서에 의해 제공될 수 있다. ("프로세서"라는 용어의 사용이 소프트웨어를 실행할 수 있는 하드웨어만을 말하는 것으로 해석되어서는 안된다.) 예시적인 실시예는 마이크로프로세서 및/또는 디지털 신호 처리기(DSP) 하드웨어, 이하에서 기술하는 동작을 수행하는 소프트웨어를 저장하는 판독 전용 메모리(ROM)(140), 및 결과를 저장하는 랜덤 액세스 메모리(RAM)(150)를 포함할 수 있다. VLSI(very large scale integration) 하드웨어 실시예는 물론, 범용 DSP 회로와 결합된 커스텀 VLSI 회로도 역시 제공될 수 있다.
다양한 실시예의 논리적 동작이 (1) 범용 컴퓨터 내의 프로그램가능 회로 상에서 실행되는 일련의 컴퓨터 구현 단계, 동작 또는 절차, (2) 특수 용도의 프로그램가능 회로 상에서 실행되는 일련의 컴퓨터 구현 단계, 동작 또는 절차, 및/또는 (3) 프로그램가능 회로 내의 상호연결된 기계 모듈 또는 프로그램 엔진으로서 구현된다. 도 1에 도시된 시스템(100)은 기술된 방법의 전부 또는 일부를 실시할 수 있고, 기술된 시스템의 일부일 수 있으며, 및/또는 기술된 비일시적 컴퓨터 판독가능 저장 매체 내의 명령어에 따라 동작할 수 있다. 이러한 논리적 동작은 프로세서(120)를 제어하여, 모듈의 프로그래밍에 따라 특정의 기능을 수행하도록 구성된 모듈로서 구현될 수 있다. 예를 들어, 도 1은 프로세서(120)를 제어하도록 구성된 모듈인, 3개의 모듈 - 모듈 1(162), 모듈 2(164) 및 모듈 3(166) - 을 나타내고 있다. 이들 모듈은 저장 장치(160)에 저장되고 런타임 시에 RAM(150) 또는 메모리(130)에 로드될 수 있거나, 기술 분야에 공지된 바와 같이 다른 컴퓨터 판독가능 메모리 장소에 저장될 수 있다.
몇몇 기본적인 시스템 구성요소를 개시하였으며, 이제부터 본 개시 내용은 인플레이스 암호화에 대한 논의로 돌아간다. 상위 레벨에서, 인플레이스 암호화 및 복호화는, 사용자, 운영 체제 및 기타 프로그램이 겉보기에 정상적인 방식으로 컴퓨팅 장치를 계속 사용하면서, 컴퓨팅 장치에서 "백그라운드에서" 수행된다. 하드 드라이브에 대한 전체 암호화 또는 복호화 프로세스가 몇시간 동안 계속될 수 있는 반면, 본 명세서에 기재된 인플레이스 방식은, 데이터 무결성을 유지하면서, 안전하고 일관성있는 원자적 방식으로 암호화 또는 복호화를 수행하고, 암호화 또는 복호화를 수행하는 동안 사용자를 방해하거나 그다지 간섭하지 않는다.
도 2는 암호화되지 않은 저장 볼륨(202) 및 암호화된 저장 볼륨(204)을 나타낸 것이다. 각각의 경우에, 저장 볼륨은 사용자가 사용자 데이터를 저장하는 제1 부분과, 운영 체제 및/또는 저장 볼륨이 메타데이터를 저장하는 제2 부분을 포함하고 있다. 이 시스템은 실시간으로 암호화되지 않은 저장 볼륨(202)을 암호화된 저장 볼륨(204)으로 변환할 수 있지만, 이 방식은, 임시 오프셋 공간의 생성에 대처하기 위해, 암호화된 저장 볼륨의 이용가능한 크기가 암호화되지 않은 저장 볼륨보다 약간 더 작을 것을 필요로 한다. 임시 오프셋 공간은, 데이터가 손실되지 않도록 그리고 볼륨이 암호화되고 있는 동안 사용자가 볼륨 상의 임의의 데이터에 계속 액세스할 수 있도록, 원자적 암호화 동작을 용이하게 해준다.
도 3은 인플레이스 암호화(300) 동안 파일 시스템(310)에 대한 운영 체제(302) 요청을 가로채는 계층(306)을 나타낸 것이다. 파일 시스템이 암호화되고 있는 동안, 운영 체제(302)는 파일 시스템 I/O 요청(304)을 파일 시스템 계층(306) 및 인플레이스 암호화 계층(310) 또는 유사한 API(application programming interface)를 통해 송신한다. 파일 시스템(306)은 특정의 파일의 주어진 위치를 판독/기입하라는 파일 I/O 요청(304)을 디스크 상의 특정의 블록/섹터를 판독/기입하라는 블록 I/O 요청(308)으로 변환하고, 이어서 암호화 계층(310)은, 선택적으로, 임의의 필요한 암호화 또는 복호화를 수행하여, 그 요청(308)을 디스크/파티션 상의 상이한 블록으로 변환한다. 암호화 계층은 변환된 요청(312)을 저장 장치 파티션(314)으로 만든다. 암호화 계층(310)은 파일 시스템(306)에 관해 아무것도 모를 수 있다. 이어서, 데이터는 파일 시스템(306) 및 인플레이스 암호화 계층(310)을 통해 다시 운영 체제(302)로 전달된다. 인플레이스 암호화 계층(310)은 모든 저장 장치 동작 또는 저장 장치에 액세스하기 위한 요청을 가로채기할 수 있다. 암호화 계층(310)은 I/O 호출을 가로채기하여 임의의 원하는 배열로 변환할 수 있다. 예를 들어, 이 시스템은 인플레이스 암호화 프로세스의 일부로서 데이터를 시프트(shift), 셔플(shuffle) 또는 다른 방식으로 재정렬(reorder)할 수 있다.
도 4는 인플레이스 암호화 동안 볼륨의 예시적인 변환(400)을 나타낸 것이다. 상부 드라이브(402)는 암호화된 부분, 암호화되지 않은 부분, 및 예비된 메타데이터 부분을 가지는, 암호화되고 있는 도중의 드라이브의 개념적 레이아웃이다. 하부 드라이브(404)는 동일한 드라이브의 개념적 레이아웃의 실제 표현이다. 화살표는 오프셋(406)이 암호화된 부분과 암호화되지 않은 부분 사이의 공간을 차지하고 있다는 것을 나타낸다. 오프셋(406)은 인플레이스 암호화에서 사용되는 파일 시스템 메타데이터 및 "스크래치" 데이터(scratch data)를 저장할 수 있다. 운영 체제는 드라이브가 개념적 레이아웃(402)인 것처럼 드라이브에 대한 호출을 하고, 변환 계층은 그 호출을 실제 표현(404)으로 변환한다. 이 시스템이 특정의 섹션을 암호화하는 동작을 하고 있는 동안, 오프셋(406)은 드라이브(404)를 통해 섹션별로 시프트된다. 선형 방식에서, 오프셋(406)은 전체 드라이브 상의 모든 단일 블록이 암호화되거나 덮어쓰기될 때까지 좌에서 우로 시프트된다. 이 시스템은 그 다음의 암호화되지 않은 블록을 판독하고, 메모리에서 그 블록을 암호화하며, 새로 암호화된 블록을 다시 드라이브 상의 새 장소에 기입한다. 이어서, 이 시스템은 캐시를 플러시(flush)하고 대응하는 메타데이터를 플러시한다.
도 4에 도시된 레이아웃에 대한 한 변형례에서, 암호화된 데이터는 우측에 있을 수 있고, 암호화되지 않은 데이터는 좌측에 있을 수 있으며, 스크래치 오프셋 부분은 인플레이스 암호화가 진행됨에 따라 우에서 좌로 시프트된다. 인플레이스 암호화 방식은 저장 장치를 임의의 방향으로 처리할 수 있고, 장치의 시작, 장치의 끝, 및 그 사이에 있는 임의의 지점을 비롯한 임의의 지점에서 시작할 수 있다.
한 측면에서, 이 시스템은, HFS+ 드라이브를 CoreStorage 드라이브로 변환하는 것과 같이, 암호화를 가능하게 해주기 위해 드라이브 파티션 유형을 변경해야만 한다. 이 시스템은 또한 파일 액세스 또는 파일 복사 등의 사용자 동작(또는 "정상적인" I/O)에 우선순위를 부여하기 위해 암호화 동작을 보류할 수 있다. 사용자는 이 시스템이 암호화 동작을 어떻게, 언제, 및 얼마 동안 보류하는지를 통제할 수 있는 암호화에 대한 원하는 우선순위 또는 스케줄을 설정할 수 있다. 암호화 동작이 다른 "백그라운드" I/O 동작과 경쟁하고 있는 경우, 이 시스템은 둘 다가 실행될 수 있게 해주거나, 원하는 결과에 따라, 암호화 동작이 백오프되고 다른 "백그라운드" I/O 동작을 기다릴 수 있다. 모든 다른 I/O 동작이 암호화 동작보다 우선권을 가질 수 있게 해주면 그 결과 드라이브를 암호화하는 데 필요한 전체 시간이 훨씬 더 길어지게 되는 반면, 보다 공격적인 암호화 방식은 보다 짧은 시간을 필요로 할 것이지만, 암호화가 진행 중인 동안 컴퓨팅 장치 상에서 수행되는 다른 동작을 느려지게 할 것이다.
게다가, 암호화된 드라이브를 복호화하기 위해 동일한 원리가 적용될 수 있다. 사용자는 드라이브 복호화 요청을 전송하고 암호화된 드라이브와 연관되어 있는 패스워드를 입력한다. 이어서, 이 시스템은, 사용자가 패스워드를 다시 입력할 필요가 없으면서, 백그라운드에서 한번에 조금씩 인플레이스 복호화를 수행하지만, 인플레이스 복호화가 완료될 때까지 드라이브의 일부가 여전히 암호화된다. 복호화할 때, 이 시스템은, 심지어 시스템이 재부팅할 때에도, 드라이브를 복호화하기 위해 사용자의 패스워드에 대한 액세스를 여전히 필요로 한다. 사용자에게 그 패스워드를 여러번 또는 시스템 재부팅 시마다 프롬프트하는 것을 피하기 위해, 이 시스템은, 패스워드를 획득한 후에, 선택적으로 패스워드를 특정의 형식으로 인코딩하고 부터(booter)를 위해 패스워드를 특정의 장소에 저장할 수 있다. 그렇지만, 이 시스템은 패스워드를 저장하지 않을 수 있다. 이 변형례에서, 디스크를 복호화하기 위해 암호화 키가 필요하다. 그 암호화 키는 통상적으로 사용자의 패스워드를 사용하여 암호화된다. 사용자가 복호화하기 시작할 때, 이 시스템은, 볼륨에 액세스하는 데 사용자의 패스워드가 더 이상 필요하지 않도록, 이 암호화 키를 암호화되어 있지 않은 형식으로 디스크 상에 저장하지만 암호화될 수 있다. 이것은 사용자의 패스워드를 디스크 상에 저장하지 않는 이점이 있으며, 저장하는 경우 악의적 소프트웨어 또는 다른 사용자가 패스워드에 액세스할 수 있을지도 모른다. 이 방식은 유리할 수 있는데, 그 이유는 많은 사용자가 다른 목적을 위해 동일한 패스워드를 사용하고 그 패스워드를 비밀로 유지하기를 원하기 때문이다.
부터는 그 특별한 장소를 조사하고, 패스워드를 알아보며, 이 시스템은, 재부팅, 갑작스런 정전, 운영 시스템 파괴, 하드웨어로 인한 시스템 오류, 및/또는 컴퓨팅 장치에서의 다른 치명적인 시스템 오류 후에도, 일관된 상태로 백그라운드에서 데이터 손실 없이 계속하여 자동으로 복호화할 수 있다. Microsoft Windows 기계에서, 치명적인 시스템 오류의 한 예는 죽음의 파란 화면(Blue Screen of Death, BSoD)이라고 통상 알려져 있는 중지 오류 화면(Stop error screen)이다. Mac OS X 기계 및 다른 BSD Unix 기반 기계에서, 치명적인 시스템 오류의 한 예는 커널 패닉(kernel panic)이다. Linux 기계에서, 치명적인 시스템 오류의 한 예는 커널 웁스(kernel oops)이다. 이 시스템은 암호화 패스워드를 운영 체제 또는 다른 패스워드와 동기화시키기 위해 로그인 전달(login forwarding)을 사용할 수 있다.
이 시스템은, 시스템이 드라이브를 인플레이스(in-place) 방식으로 암호화 또는 복호화하고 있는 동안, 사용자가 암호화를 시작, 중단 및 재시작할 수 있게 해줄 수 있다. 이 시스템은, 볼륨에 대한 사용자의 액세스가 취소될 때, 사용자가 액세스한 동안 사용자가 언래핑된 볼륨 키를 획득했다(또는 적어도 그에 액세스했다)는 가정에 기초하여, 드라이브를 새로운 암호 키로 "키변경(rekey)"할 수 있다. 키변경은 유출될 가능성이 있는 키로 인해 데이터를 손상시킬 위험을 완화시킨다. 이 시스템은 키 암호화 키(key encrypting key)로 볼륨 키를 래핑하고, 키 암호화 키를 0으로 래핑할 수 있다.
어떤 기본적인 시스템 구성요소 및 암호화 원리를 개시하였으며, 본 개시 내용은 이제부터 인플레이스 암호화를 수행하는 도 5에 도시된 예시적인 방법 실시예로 넘어간다. 명확함을 위해, 이 방법이 방법을 실시하도록 구성되어 있는, 도 1에 도시된 것과 같은 예시적인 시스템과 관련하여 논의되어 있다. 시스템(100)은 컴퓨팅 장치의 암호화되지 않은 볼륨을 암호화하라는 요청을 사용자로부터 수신한다(502). 이 요청은 직접적으로 볼륨을 암호화하는 것을 목표로 할 수 있거나, 사용자 계정을 설정하는 것 또는 패스워드를 변경하는 것 등의 다른 요청의 명시적 또는 암시적 일부일 수 있다. 시스템(100)은 볼륨 키를 식별하고(504A), 요청에 기초하여 볼륨 키를 발생시키며(504B), 암호화와 연관되어 있는 암호키를 랜덤하게 선택하거나 다른 방식으로 획득한다.
시스템(100)은 암호화되지 않은 볼륨을 암호화가능 포맷으로 변환하여 부분들로 나누어진 암호화가능 볼륨을 생성한다(506). 이 부분들은 균일한 크기를 갖거나 적응적으로 크기 조정될 수 있다. 적응적으로 크기 조정된 부분들은 암호화되지 않은 볼륨의 물리적 특성, 암호화되지 않은 볼륨에서 실행 중인 운영 체제의 속성, 사용자 행위, 성능 고려사항, 전력 소모 고려사항, 잡음 고려사항, 열 임계값 고려사항, 및/또는 컴퓨팅 장치의 슬립 상태에 기초할 수 있다.
시스템(100)은 사용자가 암호화 동안 컴퓨팅 장치를 사용할 수 있게 해주기 위해, 볼륨 키에 기초하여, 암호화가능 볼륨을 부분별로 암호화한다(508). 이 시스템은, 컴퓨팅 장치가, 각자의 부분이 암호화되고 있는 동안, 각자의 부분과의 정보 트랜잭션을 요청할 때, 임의의 정보 트랜잭션 요청을 각자의 부분의 임시 사본으로 리디렉션하는 것에 의해 사용자가 컴퓨팅 장치를 정상적인 방식으로 사용할 수 있게 해줄 수 있다. 이 시스템은 선형 방식, 랜덤 방식, 미사용 부분 방식, 및/또는 중요도 순서 방식에 의해 암호화가능 볼륨을 암호화할 수 있다. 이 시스템은 암호화가능 볼륨 상에 작업 공간을 예비해두고, 각자의 부분 각각이 암호화되고 있을 때 각자의 부분 각각에 대한 사본을 작업 공간에 저장하는 것에 의해, 암호화가능 볼륨을 부분별로 암호화할 수 있다. 작업 공간은 또한 파일 시스템 메타데이터를 저장할 수 있다. 암호화되지 않은 볼륨을 암호화가능 포맷으로 변환하는 것은 작업 공간을 위한 자리를 만들기 위해 암호화되지 않은 볼륨을 축소시키는 것을 포함할 수 있다. 이 시스템은, 각자의 부분을 판독하고, 각자의 부분의 사본을 메모리에 저장하며, 메모리에서 각자의 부분의 사본을 암호화하여 암호화된 각자의 부분을 생성하고, 각자의 부분의 임시 사본을 생성하는 것에 의해, 암호화가능 볼륨을 부분별로 암호화할 수 있다. 이 시스템은 암호화된 부분을 임시 장소에 저장하고, 이 임시 장소는 암호화된 각자의 부분의 영구적 장소가 되며, 이전의 암호화되지 않은 부분은 다른 부분의 암호화된 버전을 보유하기 위한 임시 장소가 된다.
이 시스템은 암호화 진행 상태를 유지하고, 진행 막대, 퍼센트, 드라이브 상의 암호화된 부분 대 암호화되지 않은 부분, 남아 있는 블록, 암호화된 바이트 등의 대표적인 물리적 레이아웃의 그래픽 차트 등의 암호화 진행 상태를 사용자에게 디스플레이한다. 암호화 진행 상태는 또한 추정 완료 시각, 암호화에 소비된 CPU 시간, 및/또는 기타 통계를 포함할 수 있다.
사용자가 컴퓨팅 장치를 정상적인 방식으로 계속 사용할 수 있게 해주기 위해, 이 시스템은 암호화가능 볼륨에 대한 사용자 디스크 액세스를 모니터링할 수 있고, 사용자 디스크 액세스가 제1 임계값을 초과할 때, 사용자 디스크 액세스가 제2 임계값 미만으로 떨어질 때까지 암호화를 일시적으로 중단하기 위해 백오프 알고리즘을 적용할 수 있다. 이것이 도움이 될 수 있는데, 그 이유는 암호화 동작이 디스크 I/O를 많이 사용할 수 있기 때문이며, 이는 사용자가 개시한 동작들을 느리게 할 것이다.
다른 실시예에서, 이 시스템은 프로세서, 적어도 하나의 파티션을 갖는 저장 장치, 및 프로세서를 제어하고 저장 장치의 적어도 하나의 파티션의 적어도 일부에 존재하는 운영 체제를 가지는 컴퓨팅 장치이다. 컴퓨팅 장치는 프로세서를 제어하여, 사용자로부터 암호화 요청을 수신하고, 암호화 볼륨 키를 식별하며, 암호화되지 않은 파티션을 암호화가능 포맷으로 변환하여 영역들로 나누어진 암호화가능 파티션을 생성하고, 사용자가 암호화 동안 컴퓨팅 장치를 사용할 수 있게 해주기 위해, 암호화 볼륨 키에 기초하여, 암호화가능 파티션을 영역별로 암호화하는 것에 의해 적어도 하나의 파티션의 암호화되지 않은 파티션을 암호화하도록 구성되어 있는 암호화 모듈을 포함한다. 컴퓨팅 장치는 프로세서를 제어하여, 복호화 요청을 수신하고, 암호화된 파티션과 연관되어 있는 복호화 볼륨 키를 검색하며, 암호화된 파티션이 이미 복호화되어 있는 것처럼 사용자가 복호화 동안 컴퓨팅 장치를 사용할 수 있게 해주기 위해, 복호화 볼륨 키에 기초하여, 암호화된 파티션을 블록별로 복호화하는 것에 의해 적어도 하나의 파티션의 암호화된 파티션을 복호화하도록 구성되어 있는 복호화 모듈을 포함할 수 있다.
적어도 부분적으로 암호화되어 있고 부분들로 나누어져 있는 저장 볼륨을 가지는, 인플레이스 복호화를 수행하는 시스템이 개시되어 있다. 이 시스템은 프로세서를 제어하여 저장 볼륨과 연관되어 있는 볼륨 키를 수신하도록 구성되어 있는 제1 모듈, 및 사용자가 복호화 동안 저장 볼륨이 이미 복호화되어 있는 것처럼 저장 볼륨을 사용할 수 있게 해주기 위해, 프로세서를 제어하여, 볼륨 키에 기초하여, 저장 볼륨을 부분별로 복호화하도록 구성되어 있는 제2 모듈을 포함하고 있다. 이 시스템은 프로세서를 제어하여 볼륨 키를 부트 로더(boot loader)에 의해 판독되는 저장소에 저장하도록 구성되어 있는 제3 모듈을 포함할 수 있고, 따라서 시스템 부트 시에 부트 로더가 처음으로 실행될 때, 부트 로더는 볼륨 키를 판독하고, 볼륨 키에 기초하여 저장 볼륨 내의 나머지 암호화된 부분들에의 액세스를 제공하며, 시스템으로 하여금 시스템이, 셧다운 이전에 복호화를 중단했던 동일한 위치에서, 저장 볼륨의 나머지 암호화된 부분을 볼륨 키에 기초하여 부분별로 복호화하는 것을 재개하게 한다.
본 명세서에 개시된 방식들은 사용자가 저장 장치의 암호화를 개시하고, 시스템이 저장 장치를 암호화하는 중인 동안 저장 장치에 저장되어 있는 운영 체제 또는 기타 응용 프로그램 등의 소프트웨어를 여전히 계속하여 사용할 수 있게 해준다. 이 방식은 암호화된 드라이브를 설정하는 것에 대한 초기 장벽을 감소시키고, 사용자가 전체 디스크 암호화의 보안 및 프라이버시 이득을 보다 용이하게 이용할 수 있게 해준다.
본 개시 내용의 범위 내의 실시예는 또한 컴퓨터 실행가능 명령어 또는 데이터 구조를 전달 또는 저장하는 유형의(tangible) 및/또는 비일시적 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 이러한 비일시적 컴퓨터 판독가능 저장 매체는 범용 또는 특수 목적 컴퓨터 - 전술한 바와 같은 임의의 특수 목적 프로세서의 기능 설계를 포함함 - 에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한이 아닌 일례로서, 이러한 비일시적 컴퓨터 판독가능 매체는, 컴퓨터 실행가능 명령어, 데이터 구조, 또는 프로세서 칩 설계 형태의 원하는 프로그램 코드 수단을 전달 또는 저장하는 데 사용될 수 있는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광 디스크 저장 장치, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 임의의 다른 매체를 포함할 수 있다. 정보가 네트워크 또는 다른 통신 연결(유선, 무선, 또는 이들의 조합)을 통해 컴퓨터로 전송 또는 제공될 때, 컴퓨터는 적절하게도 이 연결을 컴퓨터 판독가능 매체로 본다. 따라서, 임의의 이러한 연결을 적절하게는 컴퓨터 판독가능 매체라고 한다. 상기한 것들의 조합도 역시 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
컴퓨터 실행가능 명령어는, 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 처리 장치로 하여금 어떤 기능 또는 일군의 기능을 수행하게 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는 또한 독립형 또는 네트워크 환경에서 컴퓨터에 의해 실행되는 프로그램 모듈을 포함한다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 구성요소, 데이터 구조, 객체, 및 특수 목적 프로세서의 설계에 본질적인 기능 등을 포함한다. 컴퓨터 실행가능 명령어, 연관된 데이터 구조, 및 프로그램 모듈은 본 명세서에 개시된 방법의 단계를 실행하는 프로그램 코드 수단의 일례를 나타낸다. 이러한 실행가능 명령어 또는 연관된 데이터 구조의 특정의 시퀀스는 이러한 단계에 기술된 기능을 구현하는 대응하는 동작의 일례를 나타낸다.
기술 분야의 당업자라면 본 개시 내용의 다른 실시예가 개인용 컴퓨터, 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 비롯한 많은 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실시될 수 있다는 것을 잘 알 것이다. 실시예는 또한 작업이 통신 네트워크를 통해 (유선 링크, 무선 링크 또는 이들의 조합에 의해) 연결되어 있는 로컬 및 원격 처리 장치에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서는, 프로그램 모듈이 로컬 메모리 저장 장치 및 원격 메모리 저장 장치 둘다에 위치할 수 있다.
전술한 다양한 실시예는 단지 예시로서 제공된 것이며 본 개시 내용의 범위를 제한하는 것으로 해석되어서는 안된다. 기술 분야의 당업자라면, 본 명세서에 예시되고 기술된 예시적인 실시예 및 응용을 따르지 않고 또한 본 개시 내용의 사상 및 범위를 벗어나지 않고, 본 명세서에 기술된 원리들에 행해질 수 있는 다양한 수정 및 변경을 잘 알 것이다.

Claims (20)

  1. 컴퓨팅 장치의 암호화되지 않은 볼륨을 암호화하라는 요청을 사용자로부터 수신하는 단계;
    볼륨 키를 식별하는 단계;
    상기 사용자가 암호화 동안 상기 컴퓨팅 장치를 사용할 수 있게 해주기 위해, 상기 볼륨 키에 기초하여, 상기 암호화되지 않은 볼륨을 부분별로(portion by portion) 암호화하는 단계
    를 포함하고,
    상기 암호화하는 단계는,
    상기 암호화되지 않은 볼륨을 복수의 부분으로 나누는 단계 - 상기 복수의 부분 중 적어도 하나의 부분은 작업 공간(working space)으로서 지정됨 -;
    암호화되지 않은 부분을 반복적으로 선택하고, 상기 선택된 암호화되지 않은 부분을 상기 작업 공간으로 암호화하며, 상기 암호화되지 않은 부분을 암호화한 후에, 이전에 선택된 암호화되지 않은 부분을 상기 작업 공간으로서 지정하는 단계;
    사용자 동작들을 모니터링하는 단계; 및
    상기 사용자 동작들이 제1 임계값을 초과할 때, 상기 사용자 동작들이 제2 임계값 미만으로 떨어질 때까지 암호화를 일시적으로 중단하기 위해 백오프 알고리즘을 적용하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 암호화 진행 상태를 유지하는 단계; 및
    상기 암호화 진행 상태를 상기 사용자에게 디스플레이하는 단계
    를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 사용자 동작들은 상기 암호화되지 않은 볼륨에 대한 사용자 디스크 액세스들인 방법.
  4. 제1항에 있어서, 각각의 부분이 암호화되고 있는 동안에 상기 컴퓨팅 장치가 상기 각각의 부분과의 정보 트랜잭션을 요청할 때, 상기 정보 트랜잭션을 상기 각각의 부분의 임시 사본으로 리디렉션(redirect)하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서, 상기 암호화되지 않은 볼륨을 부분별로 암호화하는 단계는, 선형 방식(linear approach), 랜덤 방식(random approach), 미사용 부분 방식(unused portion approach), 또는 중요도 순서 방식(order of importance approach) 중 하나의 방식에 의해 수행되는 방법.
  6. 제1항에 있어서, 상기 암호화되지 않은 볼륨 상에 작업 공간을 예비(reserving)하는 단계를 더 포함하고,
    상기 암호화되지 않은 볼륨을 부분별로 암호화하는 단계는, 각각의 부분이 암호화되고 있을 때에 각각의 부분의 사본을 상기 작업 공간에 저장하는 단계를 더 포함하는 방법.
  7. 제6항에 있어서, 상기 작업 공간은 파일 시스템 메타데이터를 더 저장하는 방법.
  8. 제6항에 있어서, 상기 암호화되지 않은 볼륨을 암호화가능 포맷으로 변환하는 단계를 더 포함하고, 상기 변환하는 단계는 상기 작업 공간을 위한 자리(room)를 만들기 위해 상기 암호화되지 않은 볼륨을 축소시키는 단계를 더 포함하는 방법.
  9. 제1항에 있어서, 상기 암호화되지 않은 볼륨을 부분별로 암호화하는 단계는,
    각각의 부분을 판독하는 단계;
    상기 각각의 부분의 사본을 메모리에 저장하는 단계;
    프로세서를 통해, 메모리에서의 상기 각각의 부분의 사본을 암호화하여 암호화된 각각의 부분을 생성하는 단계;
    상기 각각의 부분의 임시 사본을 생성하는 단계; 및
    상기 암호화된 각각의 부분을 임시 장소에 저장하는 단계
    를 더 포함하고,
    상기 임시 장소는 상기 암호화된 각각의 부분의 영구 장소가 되고, 이전의 암호화되지 않은 부분은 다음 부분의 암호화된 버전을 유지하는 새로운 임시 장소가 되는 방법.
  10. 제1항에 있어서, 상기 부분들은 균일한 크기로 이루어지는 방법.
  11. 제1항에 있어서, 상기 암호화되지 않은 볼륨을 부분별로 암호화하는 단계는, 상기 컴퓨팅 장치의 재부팅, 상기 컴퓨팅 장치에 대한 전력의 손실, 또는 상기 컴퓨팅 장치에서의 치명적인 시스템 오류 중 적어도 하나 이후에, 데이터 손실 없이 일관된 상태(consistent state)로 계속될 수 있는 방법.
  12. 제11항에 있어서, 상기 부분들은, 상기 암호화되지 않은 볼륨의 물리적 특성, 상기 암호화되지 않은 볼륨에서 실행 중인 운영 체제의 속성, 사용자 액션, 성능 고려사항(performance consideration), 전력 소모 고려사항, 잡음 고려사항, 열 임계값 고려사항, 또는 상기 컴퓨팅 장치의 슬립 상태 중 적어도 하나에 기초하여 적응적으로 크기 조정되는 방법.
  13. 컴퓨팅 장치로서,
    프로세서;
    적어도 하나의 파티션을 갖는 저장 장치;
    상기 프로세서를 제어하고, 상기 저장 장치의 적어도 하나의 파티션의 적어도 일부에 존재하는 운영 체제;
    암호화 모듈; 및
    복호화 모듈
    을 포함하고,
    상기 암호화 모듈은, 상기 프로세서를 제어하여,
    사용자로부터 암호화 요청을 수신하는 단계;
    암호화 볼륨 키를 식별하는 단계; 및
    상기 사용자가 암호화 동안 상기 컴퓨팅 장치를 사용할 수 있게 해주기 위해, 상기 암호화 볼륨 키에 기초하여, 암호화되지 않은 파티션을 영역별로(region by region) 암호화하는 단계 - 상기 암호화하는 단계는, 상기 암호화되지 않은 파티션을 복수의 영역으로 나누는 단계 - 상기 복수의 영역 중 적어도 하나의 영역은 작업 공간으로서 지정됨 -; 암호화되지 않은 영역을 반복적으로 선택하고, 상기 선택된 암호화되지 않은 영역을 상기 작업 공간으로 암호화하며, 상기 암호화되지 않은 영역을 암호화한 후에, 이전에 선택된 암호화되지 않은 영역을 상기 작업 공간으로서 지정하는 단계; 사용자 동작들을 모니터링하는 단계; 및 상기 사용자 동작들이 제1 임계값을 초과할 때, 상기 사용자 동작들이 제2 임계값 미만으로 떨어질 때까지 암호화를 일시적으로 중단하기 위해 백오프 알고리즘을 적용하는 단계를 포함함 -
    를 포함하는 단계들을 수행함으로써, 상기 적어도 하나의 파티션의 상기 암호화되지 않은 파티션을 암호화하도록 구성되며,
    상기 복호화 모듈은, 상기 프로세서를 제어하여,
    복호화 요청을 수신하는 단계;
    암호화된 파티션과 연관되는 복호화 볼륨 키를 검색하는 단계; 및
    상기 암호화된 파티션이 이미 복호화된 것처럼 상기 사용자가 복호화 동안 상기 컴퓨팅 장치를 사용할 수 있게 해주기 위해, 상기 복호화 볼륨 키에 기초하여, 상기 암호화된 파티션을 블록별로(block by block) 복호화하는 단계
    를 포함하는 단계들을 수행함으로써, 상기 적어도 하나의 파티션의 상기 암호화된 파티션을 복호화하도록 구성되는 컴퓨팅 장치.
  14. 제13항에 있어서, 상기 암호화 모듈은 상기 프로세서를 제어하여 상기 암호화되지 않은 파티션의 암호화의 진행의 표시를 디스플레이하도록 또한 구성되는 컴퓨팅 장치.
  15. 제13항에 있어서, 상기 컴퓨팅 장치의 운영 체제와 상기 암호화되지 않은 볼륨 사이에 존재하는 중간 계층이 상기 암호화되지 않은 볼륨을 암호화하는 컴퓨팅 장치.
  16. 복호화를 수행하기 위한 시스템으로서,
    프로세서;
    적어도 부분적으로 암호화되며, 부분들로 나누어지는 저장 볼륨;
    상기 프로세서를 제어하여 상기 저장 볼륨과 연관되는 볼륨 키를 수신하도록 구성된 제1 모듈; 및
    상기 저장 볼륨이 이미 복호화된 것처럼 사용자가 복호화 동안 상기 저장 볼륨을 사용할 수 있게 해주기 위해, 상기 프로세서를 제어하여, 상기 볼륨 키에 기초하여, 상기 저장 볼륨을 부분별로 복호화하도록 구성된 제2 모듈
    을 포함하고,
    상기 복호화하는 것은,
    암호화된 부분을 반복적으로 선택하고, 상기 선택된 암호화된 부분을 작업 공간으로 복호화하며, 상기 암호화된 부분을 복호화한 후에, 이전에 선택된 암호화된 부분을 상기 작업 공간으로서 지정하는 것;
    사용자 동작들을 모니터링하는 것; 및
    상기 사용자 동작들이 제1 임계값을 초과할 때, 상기 사용자 동작들이 제2 임계값 미만으로 떨어질 때까지 복호화를 일시적으로 중단하기 위해 백오프 알고리즘을 적용하는 것
    을 더 포함하는 시스템.
  17. 제16항에 있어서, 상기 프로세서를 제어하여 상기 볼륨 키를 부트 로더(boot loader)에 의해 판독되는 저장소에 저장하도록 구성된 제3 모듈을 더 포함하여, 상기 부트 로더가 시스템 부팅 시에 처음으로 실행될 때, 상기 부트 로더가,
    상기 볼륨 키를 판독하는 단계;
    상기 볼륨 키에 기초하여 상기 저장 볼륨의 나머지 암호화된 부분들에 대한 액세스를 제공하는 단계; 및
    상기 시스템으로 하여금, 상기 시스템이 셧다운 이전에 복호화를 중단했던 동일한 위치에서, 상기 볼륨 키에 기초하여 상기 저장 볼륨의 상기 나머지 암호화된 부분들을 부분별로 복호화하는 것을 재개하게 하는 단계
    를 포함하는 단계들을 수행하게 하는 시스템.
  18. 제17항에 있어서, 상기 볼륨 키는 상기 저장소에서 키 암호화 키에 래핑되는(wrapped) 시스템.
  19. 제16항에 있어서, 상기 제2 모듈은 상기 프로세서를 제어하여 백그라운드 프로세스로서 상기 저장 볼륨을 복호화하도록 또한 구성되는 시스템.
  20. 컴퓨팅 장치에 의해 실행될 때, 상기 컴퓨팅 장치로 하여금 방법을 수행하게 하는 명령어들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 방법은,
    컴퓨팅 장치의 볼륨 상의 암호화되지 않은 파티션을 암호화하라는 요청을 사용자로부터 수신하는 단계;
    상기 요청에 기초하여 볼륨 키를 발생시키는 단계; 및
    상기 사용자가 암호화 동안 상기 컴퓨팅 장치를 사용할 수 있게 해주기 위해, 상기 볼륨 키에 기초하여, 암호화가능 파티션을 한번에 하나의 청크(chunk)씩 암호화하는 단계
    를 포함하고,
    상기 암호화하는 단계는,
    암호화되지 않은 볼륨을 복수의 청크로 나누는 단계 - 상기 복수의 청크 중 적어도 하나의 청크는 작업 공간으로서 지정됨 -;
    암호화되지 않은 청크를 반복적으로 선택하고, 상기 선택된 암호화되지 않은 청크를 상기 작업 공간으로 암호화하며, 상기 암호화되지 않은 청크를 암호화한 후에, 이전에 선택된 암호화되지 않은 청크를 상기 작업 공간으로서 지정하는 단계;
    사용자 동작들을 모니터링하는 단계; 및
    상기 사용자 동작들이 제1 임계값을 초과할 때, 상기 사용자 동작들이 제2 임계값 미만으로 떨어질 때까지 암호화를 일시적으로 중단하기 위해 백오프 알고리즘을 적용하는 단계
    를 포함하는 비일시적 컴퓨터 판독가능 저장 매체.
KR1020137020578A 2011-01-05 2012-01-04 인플레이스 암호화 시스템 및 방법 KR101565223B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/985,190 2011-01-05
US12/985,190 US8924739B2 (en) 2011-01-05 2011-01-05 System and method for in-place encryption
PCT/US2012/020141 WO2012094367A1 (en) 2011-01-05 2012-01-04 System and method for in-place encryption

Publications (2)

Publication Number Publication Date
KR20130101147A true KR20130101147A (ko) 2013-09-12
KR101565223B1 KR101565223B1 (ko) 2015-11-02

Family

ID=45498160

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137020578A KR101565223B1 (ko) 2011-01-05 2012-01-04 인플레이스 암호화 시스템 및 방법

Country Status (7)

Country Link
US (1) US8924739B2 (ko)
EP (1) EP2661714A1 (ko)
JP (1) JP5875601B2 (ko)
KR (1) KR101565223B1 (ko)
CN (1) CN103299315B (ko)
AU (1) AU2012204448B2 (ko)
WO (1) WO2012094367A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8689279B2 (en) 2011-08-30 2014-04-01 Microsoft Corporation Encrypted chunk-based rapid data encryption policy compliance
US8874935B2 (en) * 2011-08-30 2014-10-28 Microsoft Corporation Sector map-based rapid data encryption policy compliance
US8856553B2 (en) * 2011-09-12 2014-10-07 Microsoft Corporation Managing self-encrypting drives in decentralized environments
US9052824B2 (en) * 2012-01-26 2015-06-09 Upthere, Inc. Content addressable stores based on sibling groups
CN102929806B (zh) 2012-10-24 2015-09-09 威盛电子股份有限公司 适用于存储装置的编码操作的进度记录方法和恢复方法
KR101369114B1 (ko) 2013-05-13 2014-03-06 주식회사 엘지유플러스 적응적 음성 암호화를 위한 장치, 방법, 및 기록 매체
US20140344570A1 (en) 2013-05-20 2014-11-20 Microsoft Corporation Data Protection For Organizations On Computing Devices
WO2015047367A1 (en) * 2013-09-30 2015-04-02 Hewlett-Packard Development Company, L.P. One-time power-on password
US9203619B2 (en) * 2014-01-21 2015-12-01 Vormetric, Inc. Online data transformation
US10615967B2 (en) 2014-03-20 2020-04-07 Microsoft Technology Licensing, Llc Rapid data protection for storage devices
US10491568B1 (en) * 2014-05-21 2019-11-26 Amazon Technologies, Inc. Management of encrypted data storage
US9825945B2 (en) 2014-09-09 2017-11-21 Microsoft Technology Licensing, Llc Preserving data protection with policy
US9853812B2 (en) 2014-09-17 2017-12-26 Microsoft Technology Licensing, Llc Secure key management for roaming protected content
US8990589B1 (en) 2014-09-18 2015-03-24 Kaspersky Lab Zao System and method for robust full-drive encryption
US9900295B2 (en) 2014-11-05 2018-02-20 Microsoft Technology Licensing, Llc Roaming content wipe actions across devices
US9853820B2 (en) 2015-06-30 2017-12-26 Microsoft Technology Licensing, Llc Intelligent deletion of revoked data
US9900325B2 (en) * 2015-10-09 2018-02-20 Microsoft Technology Licensing, Llc Passive encryption of organization data
US10601781B2 (en) * 2015-10-12 2020-03-24 Servicenow, Inc. Selective encryption delineation
US11575524B2 (en) 2015-10-12 2023-02-07 Servicenow, Inc. Selective encryption delineation
CN106612247A (zh) * 2015-10-21 2017-05-03 中兴通讯股份有限公司 一种数据处理方法及存储网关
US10546138B1 (en) * 2016-04-01 2020-01-28 Wells Fargo Bank, N.A. Distributed data security
US10564903B2 (en) 2016-05-13 2020-02-18 Seagate Technology Llc Method and apparatus for rapid volume reformatting
US10496830B2 (en) * 2017-10-12 2019-12-03 Salesforce.Com, Inc. Mass encryption management
US10402587B2 (en) * 2017-12-04 2019-09-03 Sap Se Application-level in-place encryption
JP7106964B2 (ja) * 2018-04-24 2022-07-27 京セラドキュメントソリューションズ株式会社 パスワード認証装置、パスワード認証プログラム及びパスワード認証方法
US10419408B1 (en) * 2018-09-24 2019-09-17 Karamba Security In-place authentication scheme for securing intra-vehicle communication
KR20220140639A (ko) * 2019-05-22 2022-10-18 묘타, 인크. 보안, 복원, 및 제어가 강화된 분산된 데이터 스토리지를 위한 방법 및 시스템
US11611540B2 (en) * 2020-07-01 2023-03-21 Vmware, Inc. Protection of authentication data of a server cluster

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991753A (en) * 1993-06-16 1999-11-23 Lachman Technology, Inc. Method and system for computer file management, including file migration, special handling, and associating extended attributes with files
US5584023A (en) 1993-12-27 1996-12-10 Hsu; Mike S. C. Computer system including a transparent and secure file transform mechanism
EP1273996B1 (en) 2001-07-06 2008-08-06 Texas Instruments Incorporated Secure bootloader for securing digital devices
US20030200459A1 (en) * 2002-04-18 2003-10-23 Seeman El-Azar Method and system for protecting documents while maintaining their editability
US8386797B1 (en) * 2002-08-07 2013-02-26 Nvidia Corporation System and method for transparent disk encryption
US7293059B2 (en) 2003-04-04 2007-11-06 Sun Microsystems, Inc. Distributed computing system using computing engines concurrently run with host web pages and applications
US7784054B2 (en) 2004-04-14 2010-08-24 Wm Software Inc. Systems and methods for CPU throttling utilizing processes
US7694154B2 (en) 2006-05-12 2010-04-06 Oracle International Corporation Method and apparatus for securely executing a background process
US8037320B2 (en) 2007-03-31 2011-10-11 Lenovo (Singapore) Pte. Ltd Magnetic recording medium encryption
JP4396737B2 (ja) * 2007-07-17 2010-01-13 ソニー株式会社 情報処理装置、コンテンツ提供システム、および情報処理方法、並びにコンピュータ・プログラム
US8549326B2 (en) * 2007-10-20 2013-10-01 Blackout, Inc. Method and system for extending encrypting file system
US7890459B1 (en) * 2008-03-25 2011-02-15 Emc Corporation Non-disruptive modification of data in-place
US9215066B2 (en) * 2008-06-25 2015-12-15 Oracle America, Inc. Method and system for making information in a data set of a copy-on-write file system inaccessible
US8341430B2 (en) 2008-10-03 2012-12-25 Microsoft Corporation External encryption and recovery management with hardware encrypted storage devices
JP2010205376A (ja) * 2009-03-06 2010-09-16 Sony Corp 情報処理装置、データ記録システム、および情報処理方法、並びにプログラム
US8924743B2 (en) 2009-05-06 2014-12-30 Empire Technology Development Llc Securing data caches through encryption
CN101847184A (zh) * 2009-12-16 2010-09-29 深圳市虹安信息技术有限公司 采用加密沙箱的文件加密方法
US8977865B2 (en) * 2010-05-25 2015-03-10 Microsoft Technology Licensing, Llc Data encryption conversion for independent agents
US8924733B2 (en) * 2010-06-14 2014-12-30 International Business Machines Corporation Enabling access to removable hard disk drives

Also Published As

Publication number Publication date
US20120173882A1 (en) 2012-07-05
EP2661714A1 (en) 2013-11-13
JP5875601B2 (ja) 2016-03-02
CN103299315A (zh) 2013-09-11
JP2014509418A (ja) 2014-04-17
KR101565223B1 (ko) 2015-11-02
AU2012204448B2 (en) 2015-11-26
US8924739B2 (en) 2014-12-30
CN103299315B (zh) 2016-08-03
WO2012094367A1 (en) 2012-07-12

Similar Documents

Publication Publication Date Title
KR101565223B1 (ko) 인플레이스 암호화 시스템 및 방법
AU2012204448A1 (en) System and method for in-place encryption
TWI697805B (zh) 載入和虛擬化密碼金鑰
Ren et al. Design space exploration and optimization of path oblivious ram in secure processors
US8756434B2 (en) System and method for executing an encrypted binary from a memory pool
KR102176612B1 (ko) 보안 서브시스템
US20150294123A1 (en) System and method for sharing data securely
KR101054981B1 (ko) 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
US20100058066A1 (en) Method and system for protecting data
CN103038746A (zh) 用于基础设施即服务云环境中的可信执行的方法和装置
JP2012150803A (ja) 効率的なボリューム暗号化
GB2367164A (en) Securely storing and executing a program
JP2014530371A (ja) ファイル暗号化方法及び装置、ファイル復号方法及び装置
KR20140117635A (ko) 저장 디바이스와 호스트 사이에서의 데이터 전달의 보호를 위한 저장 제어기 버스 인터페이스의 사용
EP3044900A1 (en) Security processing unit with configurable access control
CN104883256A (zh) 一种抵抗物理攻击和系统攻击的密钥保护方法
US9881142B2 (en) Method and apparatus for preventing and investigating software piracy
JP6095330B2 (ja) 情報処理装置及びその制御方法、プログラム
CN103488919A (zh) 一种可执行程序的保护方法及装置
CN105844165A (zh) 一种四层计算虚拟化的方法与设备
Benadjila et al. Secure storage—Confidentiality and authentication
CN103605934A (zh) 一种可执行文件的保护方法及装置
US20190278891A1 (en) Method and apparatus for preventing and investigating software piracy
Onarlioglu et al. Eraser: Your data won't be back
JP2009253490A (ja) メモリシステムの暗号化方式

Legal Events

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